32. Linux and Network Hardening
32.4 Patching, Users, Permissions and Services
Patching fixes known vulnerabilities – the ones Nessus/OpenVAS found in Chapter 20.
sudo yum check-update # what needs updating
sudo yum update -y # apply all updates
sudo yum update --security -y # only security updates (where supported)
sudo yum install -y dnf-automatic 2>/dev/null || true # automatic updates on newer releases; review before enabling
Users and sudo:
sudo awk -F: '$3==0 {print $1}' /etc/passwd # only root should have UID 0
sudo awk -F: '($2==""){print $1}' /etc/shadow # accounts with empty passwords
sudo lastlog | grep -v "Never" # who has logged in
sudo userdel -r olduser # remove unused accounts
sudo visudo # edit sudo rules safely
sudo chage -M 90 -W 7 deploy # password expiry for password users
File permissions:
sudo chmod 600 /etc/ssh/sshd_config
sudo chmod 640 /var/www/html/config.php && sudo chown root:apache /var/www/html/config.php
sudo find / -xdev -perm -4000 -type f 2>/dev/null # SUID files (privilege escalation, Chapter 26)
sudo find / -xdev -type f -perm -0002 2>/dev/null # world-writable files
Services: stop and disable what you do not need.
sudo systemctl list-unit-files --type=service --state=enabled
sudo service vsftpd stop && sudo systemctl disable vsftpd
sudo yum remove -y telnet-server rsh-server
Also keep SELinux in enforcing mode on RHEL-family servers (getenforce should print Enforcing) instead of turning it off to "fix" permission errors.
Ravindra Bagale's Tip
Apache la file vachta yet nahi mhanun students chmod 777 kartat kiwa SELinux disable kartat. Donhi dhokadayak! Yogya owner (chown) ani yogya permission (640/750) dya, ani SELinux sathi restorecon -Rv /var/www/html vapra. 777 mhanje sagalyansathi darwaja ughada.
Lab
On Metasploitable or your lab server: list all UID 0 accounts, all SUID files and all enabled services. Remove one unneeded service, fix the permissions of your app's config.php to 640, and run sudo yum update -y. Re-run Lynis and compare the hardening index with 32.1.