Introduction
Hardening Ubuntu 24.04 bertujuan untuk memperkuat sistem dengan menerapkan praktik terbaik keamanan (security best practices) agar node lebih tahan terhadap eksploitasi, serangan jaringan, maupun eskalasi hak akses.
Dengan penerapan langkah-langkah ini, setiap server akan memiliki tingkat keamanan yang lebih baik, mengurangi risiko kompromi, dan meningkatkan keandalan keseluruhan infrastruktur.
System Configuration
1. Update Patch
Pastikan kita menggunakan timezone yang sesuai lokasi
sudo timedatectl set-timezone Asia/JakartaPastikan semua paket sudah up-to-date
sudo apt update && sudo apt upgrade -y
sudo apt autoremove -yMengaktifkan auto security update
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades 2. User, SSH & Access Control
1.) Create user admin dan grant akses ke root menggunakan sudo
adduser user-admin
usermod -aG sudo user-admin2.) Merubah default konfigurasi pada file sshd_config
sudo sed -i 's/^#Port.*/Port 22122/' /etc/ssh/sshd_config
sudo sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/^#LogLevel.*/LogLevel VERBOSE/' /etc/ssh/sshd_config
sudo sed -i 's/^#MaxAuthTries.*/MaxAuthTries 3/' /etc/ssh/sshd_config
sudo sed -i 's/^#MaxSessions.*/MaxSessions 2/' /etc/ssh/sshd_config
sudo sed -i 's/^#AllowAgentForwarding.*/AllowAgentForwarding no/' /etc/ssh/sshd_config
sudo sed -i 's/^#AllowTcpForwarding.*/AllowTcpForwarding no/' /etc/ssh/sshd_config
sudo sed -i 's/^X11Forwarding.*/X11Forwarding no/' /etc/ssh/sshd_config
sudo sed -i 's/^#TCPKeepAlive.*/TCPKeepAlive no/' /etc/ssh/sshd_config
sudo sed -i 's/^#ClientAliveCountMax.*/ClientAliveCountMax 2/' /etc/ssh/sshd_config| Port <port> | Untuk customize port pada sshd |
| PermitRootLogin no | Untuk menonaktifkan root login |
3.) Gunakan key-based authentication, bukan password: Check pada postingan dibawah
4.) Batasi akses SSH, menambahkan network yang akan diallow dan deny all
sudo sed -i '$ a sshd: 192.168.1.0/24' /etc/hosts.allow
sudo sed -i '$ a sshd: ALL' /etc/hosts.deny3. Network & Firewall
1.) Aktifkan firewall UFW dan buka port sesuai kebutuhan
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22122/tcp
sudo ufw enable2.) Disable IPv6 jika tidak digunakan
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo sed -i 's/^IPV6.*/IPV6=no/' /etc/default/ufw4. Kernel & System Hardening
1.) Tambahkan parameter berikut ke /etc/sysctl.d/99-hardening.conf
sudo tee /etc/sysctl.d/99-hardening.conf << EOF
# Disable IP forwarding
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Disable ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
# Disable source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# Enable SYN cookies
net.ipv4.tcp_syncookies = 1
# Disable kernel magic sysrq
kernel.sysrq = 0
# Hide kernel pointers
kernel.kptr_restrict = 2
EOF2.) Kemudian aktifkan
sudo sysctl --system5. Service Management
1.) Disable service yang tidak digunakan
sudo systemctl disable --now fwupd.service
sudo systemctl disable --now ModemManager.service
sudo systemctl disable --now udisks2.service
sudo systemctl disable --now upower.service6. Useful Tools for Security
a.) Fail2ban
1.) Install Fail2ban
sudo apt install fail2ban -y2.) Konfigurasi fail2ban
sudo tee /etc/fail2ban/jail.local <<EOF
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 30m
findtime = 10m
EOF3.) Restart service fail2ban
sudo systemctl restart fail2banb.) Libpam-tmpdir
sudo apt install libpam-tmpdir -yc.) PAM Password strength tools
1.) Install libpam-pwquality
sudo apt install libpam-pwquality -y2.) Ubah pwquality
sudo sed -i 's|^password\s\+requisite\s\+pam_pwquality\.so.*|password requisite pam_pwquality.so retry=3 minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1|' /etc/pam.d/common-password
d.) Malware security (chkrootkit)
sudo apt install chkrootkit -y7. Auditing & Logging
1.) Install auditd
sudo apt install auditd audispd-plugins -y
sudo systemctl enable auditd2.) Menambahkan rules auditd dengan file /etc/audit/rules.d/hardening.rules
sudo tee /etc/audit/rules.d/hardening.rules << EOF
-w /etc/passwd -p wa -k passwd_changes
-w /etc/group -p wa -k group_changes
-w /etc/sudoers -p wa -k sudoers
-w /etc/ssh/sshd_config -p wa -k ssh_config
EOF3.) restart service
sudo systemctl restart auditd4.) Check audit rules dan cek logs berdasarkan rules
sudo auditctl -l
sudo ausearch -k ssh_config | aureport -f -i Untuk logging secara default ubuntu 24.04 sudah terinstall rsyslog. Lebih direkomendasikan jika untuk log terintegrasi dengan Centralized Log Server seperti ELK Stack, Loki, maupun SIEM.
8. Filesystem & Storage Security
Gunakan filesystem dengan journaling (ext4/xfs). Aktifkan noexec,nodev,nosuid di /tmp dengan menambahkan di /etc/fstab.
sudo tee -a /etc/fstab << EOF
tmpfs /tmp tmpfs defaults,noexec,nodev,nosuid 0 0
EOF9. Optional: Security Scanning & Benchmarking
Install lynis untuk scanning security kemudian jalankan audit system
sudo apt install lynis -y
sudo lynis audit systemNanti ada beberapa saran dari hasil scan audit. Kita bisa mengabaikan saran yang sekiranya memang tidak bisa dikerjakan.
10. Lynis sugestion
Setelah kita cek menggunakan lynis, masih ada beberapa yang harus dihardining
1.) Ubah permission pada folder
sudo chmod 700 /etc/ssh/sshd_config.d/
sudo chmod 600 /etc/ssh/sshd_config
sudo chmod 600 /etc/crontab
sudo chmod 700 /etc/cron.d
sudo chmod 700 /etc/cron.daily
sudo chmod 700 /etc/cron.hourly
sudo chmod 700 /etc/cron.weekly
sudo chmod 700 /etc/cron.monthly