1. Installing and Configuring UFW Firewall
Uncomplicated Firewall (UFW) is a simple tool for managing iptables in Linux systems. Proper firewall configuration is the first line of defense against unauthorized access.
Installing UFW:
sudo apt-get update
sudo apt-get install ufwConfiguring Firewall Rules:
# Limit SSH access to prevent brute-force attacks
sudo ufw limit 22/tcp
# Allow HTTP traffic
sudo ufw allow 80/tcp
# Allow HTTPS traffic
sudo ufw allow 443/tcp Enabling and Checking UFW Status:
sudo ufw enable
sudo ufw statusSetting Global Rules:
# Block all incoming traffic by default
sudo ufw default deny incoming
# Allow all outgoing traffic by default
sudo ufw default allow outgoing 2. Switching to SSH Key Authentication
SSH key authentication provides a more secure method of accessing your server compared to passwords.
Generating an SSH Key on the Client Machine:
ssh-keygen -t rsa -b 4096Transferring the Public Key to the Server:
ssh-copy-id -i ~/.ssh/id_rsa.pub [email@example.com]Disabling Password Authentication on the Server:
Edit the SSH configuration file:
sudo nano /etc/ssh/sshd_config
Modify the following lines:
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
PermitRootLogin no
Restart the SSH service to apply changes:
sudo systemctl restart sshd3. Configuring System Security Parameters
Additional security measures can be implemented by configuring system settings.
Enhancing Security Options in /etc/sysctl.conf:
Edit the file:
sudo nano /etc/sysctl.conf
Add or modify the following lines:
# Disable IP forwarding
net.ipv4.ip_forward = 0
# Prevent response to ping requests
net.ipv4.icmp_echo_ignore_all = 1
# Prevent IP source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
Apply the changes:
sudo sysctl -pPreventing IP Spoofing in /etc/host.conf:
Edit the file:
sudo nano /etc/host.conf
Ensure the following lines are included:
order bind,hosts
multi on
nospoof on4. Installing and Configuring Fail2Ban
Fail2Ban is a tool that automatically blocks IP addresses displaying malicious activity, such as repeated failed login attempts.
Installing Fail2Ban:
sudo apt-get install fail2banEnabling and Starting the Service:
sudo systemctl enable fail2ban
sudo systemctl start fail2banConfiguring Custom Rules:
Copy the default configuration file:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Edit the configuration:
sudo nano /etc/fail2ban/jail.localPay special attention to the [sshd]section for SSH protection.
5. Checking Open Ports
Regularly checking open ports helps identify unnecessary services that may pose security risks.
Checking Open Ports:
sudo netstat -tunlp
Analyze the output and ensure that only necessary ports are open for your applications.
By implementing the steps outlined above, you will significantly enhance the security of your web server. Regular system updates, log monitoring, and continuous security adjustments are essential for maintaining a high level of protection.
Note: This guide is for informational purposes. Before applying any changes to a production server, it is recommended to test them in a controlled environment.




