Final Project¶
Analyze and harden the vulnerabilities of a computing system that you want to secure¶
The requirements for the Final Project is pretty broad, we are supposed to analyze and harden the vulnerabilities of a computing system that we want to secure. So, first thing to do is perform an analysis of a computing system, then harden that system. Like I said there is not much more that is required other than we have been asked to try to use as many of the lessons learned throughout the course.
FabFutures CyberOS¶
A reproducible Linux Mint security hardening toolkit.
Analyze¶
My idea is to analyze a clean installation of the latest stable release of Linux Mint running with the default settings inside a virtual machine. No additional software or configuration changes will be made before the analysis. The project will follow a spiral development process. A minimal hardening toolkit will be completed first. Additional security improvements will be implemented as time allows.
Pre-installed software
Pre-installed software¶
-
How many packages come pre-installed?
-
Which packages are unnecessary?
-
Are there packages that increase the attack surface?
-
Are packages installed for convenience rather than security?
Automatically running services
Automatically running services¶
-
What services start automatically?
-
Are they all needed?
-
Are they listening on the network?
-
-
Do these services pose a risk?
Open ports
Open ports¶
-
What ports are open?
- Why are they open?
- Should they be closed?
-
What is the risk of open ports?
Firewall
Firewall¶
-
Is ufw enabled?
-
What firewall rules exist?
-
What risk exists if it remains disabled?
Encryption
Encryption¶
-
Is the disk encrypted?
-
Are home folders encrypted?
-
Can users easily encrypt files?
CPU Vulnerabilities
CPU Vulnerabilities¶
-
What CPU vulnerabilities affect this system?
-
Which mitigations are enabled?
-
Are kernel mitigations active?
Human Security
Human Security¶
-
Can you make a weak password?
-
Can I accidentally disable the firewall?
-
Can I store passwords in /Documents?
-
How can I know if my system is secure?
The goal of the analysis is to establish a security baseline that can be compared against the hardened system to objectively measure the effect of each security improvement.
I would like to perform as many of these checks as I have time for so I have a baseline before moving on to hardening the system.
Harden¶
Pre-installed Software
Pre-installed software¶
-
Remove unnecessary packages.
-
Install security-related tools.
-
(Install FabFutures class recommended packages)
Automatically running services
Automatically running services¶
- Turn off all unnecessary services that start automatically.
SSH
SSH¶
- If SSH is installed, disable root login, require public-key authentication, and limit login attempts.
Encryption
Encryption¶
-
Recommend full-disk encryption during installation.
-
Add a helper script for encrypting files with GPG to make it easy for users to encrypt files.
CPU Velnerabilities
CPU Vulnerabilities¶
- Add a script that reports CPU vulnerabilities and mitigation status.
User Accounts
User Accounts¶
- Review user accounts and sudo privileges to ensure they follow the principle of least privilege.
Human Security
Human Security¶
-
Create a security health report.
-
Warn if automatic updates are disabled.
-
Warn if the firewall is disabled.
-
Warn if disk encryption is missing.
-
Warn if weak passwords are detected.
-
Make encryption easy to use.
Validation
Validation¶
After hardening, the system will be analyzed again using the same methods as the baseline analysis. The results will be compared to verify that the attack surface has been reduced and that the implemented security improvements are functioning as intended.
Possible validation methods include:
-
Number of installed packages
-
Number of enabled startup services
-
Comparing listening ports
-
Firewall status
-
Security audit results (e.g. Lynis)
-
CPU vulnerability status
Deliverables
Deliverables¶
The primary deliverable will be a collection of scripts that allow users to reproduce the analysis and hardening process on their own Linux Mint installations. The scripts will automate as much of the configuration as practical while documenting the security improvements that are applied.
If time permits, I will also create a bootable FabFutures CyberOS ISO containing the hardened system and preconfigured security settings.
-
Documentation of the analysis process
-
Hardening scripts
-
Before-and-after comparison results
-
Validation report
-
(Optional) Bootable FabFutures CyberOS ISO