Skip to main content

Command Palette

Search for a command to run...

5 Beginner Cybersecurity Projects You Can Build in Your Home Lab

A Zero Trust Threads Foundations Guide to Practical Linux Skills

Updated
4 min readView as Markdown
5 Beginner Cybersecurity Projects You Can Build in Your Home Lab
Z
Zero Trust Threads is a cybersecurity media and lifestyle brand focused on making cybersecurity, Linux, networking, GRC, and tech culture approachable through practical projects, real-world learning, and a little humor. Trust nothing. Learn everything.

You have your Ubuntu Server running, and you are connected via SSH. The workbench is built. Now it is time to use it.

To bridge the gap between "knowing what Linux is" and "knowing how to defend it," you need hands-on experience configuring services, automating tasks, and analyzing system behavior. These five mini-projects are designed to introduce the core concepts of system administration and security using the single virtual machine you built in Article 17.

1. Lock Down the Network with UFW (Firewalls)

A firewall controls what network traffic is allowed in and out of your machine. Ubuntu comes with a tool called UFW (Uncomplicated Firewall) disabled by default. Enabling and configuring it is a fundamental security skill.

Warning: You are connected to your server via SSH. If you enable the firewall without explicitly allowing SSH traffic first, you will immediately lock yourself out of your own server and will have to reboot from the hypervisor console.

Run these commands to allow SSH and turn the firewall on:

sudo ufw allow ssh
sudo ufw enable
sudo ufw status

You have just established your first network boundary. The server will now reject any incoming traffic that isn't attempting to connect to the SSH port (Port 22).

2. Deploy an Nginx Web Server (Services & Ports)

Understanding how web servers operate is critical because they are the most common attack surface on the internet. Let's install Nginx, a lightweight and incredibly popular web server.

sudo apt install nginx -y

Because we just enabled the firewall in Project 1, Nginx is currently blocked from the outside world. We need to open Port 80 (HTTP) to allow web traffic:

sudo ufw allow 'Nginx HTTP'

Now, open a web browser on your physical Host computer and type your VM's IP address into the URL bar (e.g., http://192.168.x.x). You should see the default "Welcome to nginx!" page. You are now hosting a live web service.

3. Hunt for Intruders (Log Parsing)

Security analysts spend a massive portion of their time parsing logs to figure out what happened on a system. Your server logs authentication attempts in a file located at /var/log/auth.log.

Let's use a command-line tool called grep to search that file for a specific pattern. We want to see every time someone failed to log in:

sudo grep "Failed password" /var/log/auth.log

If you deliberately typed the wrong password while testing in the previous article, those attempts will show up here. In a production environment, seeing thousands of these lines in rapid succession is the primary indicator of a brute-force attack.

4. Automate the Boring Stuff (Write a Bash Script)

System administrators don't type the same commands every day; they write scripts to do it for them. Let's write a simple Bash script to automate the system update process we learned in Article 17.

First, create a new file using the nano text editor:

nano update\_server.sh

Type the following lines into the editor:

#!/bin/bash echo "Starting system update..." sudo apt update && sudo apt upgrade -y echo "Update complete!"

Press Ctrl+O to save, Enter to confirm, and Ctrl+X to exit. Finally, make the script executable and run it:

chmod +x update\_server.sh ./update\_server.sh

You just wrote your first automation tool.

5. Spin Up an Isolated Environment (Docker)

Modern infrastructure relies heavily on containers. Unlike a Virtual Machine, which emulates an entire operating system, a container isolates an application and its dependencies while sharing the host's operating system.

Let's install Docker and run a simple test container:

sudo apt install docker.io -y sudo docker run hello-world

Docker will automatically pull the hello-world image from the internet, spin up a secure, isolated container, print a success message, and then shut the container down. Understanding container isolation is essential, as managing compromised Docker containers is a distinct and highly sought-after incident response skill.

Next Steps

By completing these five projects, you have transformed a blank operating system into a configured, firewalled, and monitored environment.

So far, we have only looked at a single machine. But cybersecurity is rarely about isolated computers; it is about how computers talk to each other. In [Article 20: Build a Small Security Lab Network (Link Placeholder)], we are going to introduce a second machine to your hypervisor and learn how to observe the network traffic moving between them.

References & Primary Documentation:

Home Lab Series

Part 4 of 5

A growing, beginner-friendly guide to building and expanding your cybersecurity home lab. This series starts with the absolute basics, setting up virtual machines and configuring secure Linux servers and continuously scales into network analysis, automation, and practical security projects. Designed for hands-on learning, these guides help you build real-world system administration and defense skills using the hardware you already own.

Up next

Build a Small Security Lab Network and Learn How Traffic Actually Moves

A Zero Trust Threads Foundations Guide to Networking and Traffic Analysis