CIT-225-002 Take Home Final Exam
Details:
1) This is an optional exam. If one takes it will represent 40% of your aggregated final exam
grade, the other 60% coming from the in-class multiple choice Canvas final exam results.
Example:
Score 90 on take home exam & 80 on in-class Canvas exam: Final exam score is 84
2) If you do not take it, one’s score on the in-class multiple choice Canvas final exam
represents the final exam grade.
3) In either case, the final exam contribution to a students overall grade in the course is 30%
as stated in the course syllabus
4) You are required to answer 5 of the 6 questions that are in this exam. Use only the space
provided for your response.
5) Each question is worth 20 points. On a 1 to 5 point scale, points will be awarded on the
following basis:
a. As appropriate, responses should consist of content that represents ones
“opinions” that are based on an aggregation of personal thoughts on the topic, as
well as on those of others that have been expressed in open literature sources. Cite
the relevant sources.
b. As appropriate, responses should consist of content that represents factual data
that exist that appears in open literature sources. Cite the relevant sources.
c. As appropriate, responses should consist of content that represent “Use Cases” or
“Scenarios” that have occurred that support ones position. Cite the relevant details
of these events.
d. Overall, responses should be in paragraph form, 12 font, 2.0 spaced. The use of
charts, tables, and illustrations is strongly encouraged.
6) The final needs to be emailed back to me (horrigant@uncw.edu) no later than Sunday
Nov 24 @ 11:59 PM.
7) The format should be a PDF. The name of the file should be analogous to your last
name, first initial, underscore “FinalExam,” (i.e., horrigant_FinalExam)
Question 1: There have been writeups in the press concerning the idea that Elon Musk’s Starlink
network manipulated the vote count somehow in the recently held Presidential election. Most
experts suggest that this was not doable due to security measures that were in place. Assume that
data from the individual vote tabulation machines are sent to Linux servers to support conducting
finalizing the overall vote count. What measures could have been put in place to protect the
integrity of the process? Use your knowledge of how best Linux systems are protected in order to
prevent breaches to formulate your response.
When handling the integrity of a Linux system in critical applications like vote tabulation
specifically in the sector of data moving across the system, a lot of security measures need to be
in place. With confidential data surrounding the election and voting ballots, this is a time when
cybersecurity needs to be priority for these systems. The first step and most important function of
the Linux system is encrypting the voting data at rest using full-disk encryption solutions like
cryptsetup. Encrption algoritms like sha256 and Xor Cyrptography combined ensure that keys
are kept unknown and secure.
System security is the second step and by having default security access control in combination
with a firewall contributes to a hardened shell over your Linux system. To control attackers,
monitoring and patch management goes a long way to not only fix holes in a system but protects
against confidential data leakage. Functions like apt full-upgrade, dnf upgrade, and pacman -Syu
ensure that the latest security updates are applied quickly and securely. This reduces the
probability of exploits targeting outdated software.
The second step of securing a Linux system is protecting data in transit via an encrypted tunnel.
Security professionals use methods like vpn and openssl ensure that data is not intercepted from
a potential man in the middle attack.
Utilizing this framework, a Linux-based vote tabulation system can effectively protect
confidential data against breaches and ensure the confidentiality, integrity and availability of
sensitive election data.
https://www.geekpedia.com/linux-security-best-practices/
https://linuxsecurity.com/features/linux-data-security-primer
Question 2: Any Automated Information System or AIS needs to possess the following traits:
Acceptability, Accessibility, and Accuracy which respectively will be defined to relate to overall
system Performance, Security, and Integrity. How as a Linux Administrator would you go about
ensuring that these traits are in place for a system under your control?
Ensuring the acceptability, accessibility, and accuracy of an Automated Information System
(AIS) as a Linux administrator includes implementing security measures across performance,
security and integrity.
Acceptability, an expansive overview of system performance, is gained through resource
monitoring and performance tuning to ensure that the system operates smoothly. Under the load
of pressure, buffer overflows are invevitable for large scale systems, functions such as htop,
vmstat, and -fstack-protector enables stack protection and randomizes memory addresses making
exploitation more difficult.
Accessibility is tied to system performance. This is achieved through authentication controls and
role-based access. A least privilege role-based access control system can use Linux functions like
chmod, chown and setfacl all extends standard permissions with finer-grained control to establish
strict privilege controls.
Accuracy, important to system integrity, is kept through data validation. Encryption and
protection of sensitive information. Regular auditing and monitoring verify system reliability and
detects potential anomalies. Linux functions such as md5sum, mysqlcheck, and syslog all
provide analyzed logs and validated files to contribute to the consistent integrity of the system.
https://linuxsecurity.expert/security-tools/data-integrity-tools
https://opensource.com/article/20/5/linux-security-lynis
Question 3: You manage a Linux system that has multiple network services running on your
system. Hypothetically, identify a list of common ones that may exist, i.e. Apache Web Server
(httpd). Tell me what they do well, what they do not do well (and why), generally how you get
them installed, i.e., up and running, and what are the relevant commands that support its
execution.
Linux systems can host an array of different network services, each designed for specific
workload and use cases.
Apache HTTP Server dominates in serving static and dynamic content with broad module
support for languages like Python and PHP. This network service benefits from extensive active
community documentation. Its drawbacks include resource-intensive stemming from high traffic
and may require configuration optimization for modern scalability. This service can be installed
using package managers such as sudo apt install apache2.
Nginx is lightweight, open-source web server firewall, best suited for high-concurrency
environments, excelling in tasks like static file serving and acting as a reverse proxy service.
However, the module support is limited compared to Apache’s serve ice and its configurations
are extremely limited. This service is also very complicated to use and is not recommended for
beginners. This service can be downloaded on the nginx.org website based on the version of your
machine.
SQL servers are databases, such as MySQL and PostgreSQL, reign in managing relational
databases, offering support for complex queries, transactions, and multi-intensive under large
scale operations and improper indexing or poorly written queries my impact performance.
MySQL can be installed using commands such as sudo apt install mysql-server and managed
with tools like mysql_secure_installation for configuration and systemctl for services control.
PostgreSQL has a similar setup with commands sudo apt install postgresql. Both services are
strong suited for data validation, backups and user management ensure data security and
integrity.
https://httpd.apache.org/docs/2.4/new_features_2_4.html
https://cwiki.apache.org/confluence/display/HTTPD/FAQ
Question 4: One of my Linux references makes the following statement “Linux
commands usually begin with a program to run and may be followed by arguments that
tell the program what to operate on and how to do so”. For example; cat /etc/passwd.
Explain to me what this statement means in simple terms, i.e., why Linux commands are
viewed as being programs. Suggest where (and how) I could look on the system for
evidence to verify that indeed commands are actually programs.
Linux commands are viewed as programs because they are either executable binary files or
scripts that perform specific tasks when called upon. Most linux commands are executable
programs or scripts. When you enter the command cat /etc/passwd, you are running the program
cat. This is telling the program to display file contents, and the /etc/passwd is an argument,
telling cat what file to operate on. This program-argument structure gives Linux its flexibility,
allowing simple tools to do specialized functions efficiently and securely. Many commands such
as cat, reside in directories like /bin or /usr/bin and are compiled binaries.
You can check that commands are programs by using tools like which, that identifies whether a
command is a binary, built-in, alias, or shell function (type cat). To verify the nature of the
executable, the file command provides detailed information about the file type. The lookup file
/bin/cat might return ELF 64-bit LSB executable. This system design demonstrates the Unix idea
of creating small programs that stack and can be chained together to perform complex functions.
Question 5: Assuming that your company uses Class A network 100.0.0.0/8, with what
subnet mask would you need to configure all computers on the network to divide this
network 11 times to match the company’s 11 departments? How many hosts can you
have per network? What are the first five ranges of addresses that you can assign to
different departments?
.
To divide the Class A network 100.0.0.0/8 into 11 subnets to match the company’s 11
departments, you must calculate the subnet mask that accommodates that many subnets. Class A
networks start with a default subnet mask of /8. To create at least 11 subnets, you calculate how
many additional bits are needed in the subnet mask to create 11 or more subnets. Using the
formula 2^n greater or equal to the number of subnets (11). N is represented by the number of
bits to borrow, 2^4 = 16 (the next power of 2 is greater than 11) meaning that borrowing 4 bits
will have to do. This makes the new subnet mask of /12 (8 original bits + 4 new bits).
A /12 subnet mask divides the network into 16 subnets, each with the power to host 2^20 – 2 =
1,048,574 usable IP addresses (subtract 2 for the network and broadcast addresses). The first 5
subnets would have the following ranges:
1. 100.0.0.0 – 100.15.255.255
2. 100.16.0.0 – 100.31.255.255
3. 100.32.0.0 – 100.47.255.255
4. 100.48.0.0 – 100.63.255.255
5. 100.64.0.0 – 100.79.255.255
This distribution ensures that each of the 11 departments receives a huge array of IP addresses
while still maintaining efficiency within the Class A network.
Question 6: You are the administrator of a Linux system that provides file and print
services to clients in your company. The system configuration consists of several fast
SSD hard drives and has a processor with 128 GB of RAM. After recently installing
database software, users have been complaining that the performance of the server is very
poor. What commands could you use to trouble-shoot the problem? Are there any other
troubleshooting methods at your disposal to aid in solving this problem? Assume that
previously, i.e., before installing the database software, the system performance was
rarely monitored and thus legacy documented performance information on this system
does not exist.
Monitor system resource usage
-top/htop