Linux系统安全加固关键措施
及时更新系统内核及软件包是修复已知漏洞、降低被攻击风险的核心手段。通过包管理器(如Debian/Ubuntu的apt、CentOS/RHEL的yum)定期执行sudo apt update && sudo apt upgrade或sudo yum update,确保系统组件为最新稳定版本。早期内核版本(如2.0.x以下)存在较多安全漏洞,需升级至2.0.x及以上版本,并移除不必要的软件包以减少攻击面。
防火墙是控制网络流量的第一道防线,需根据发行版选择合适工具并配置严格规则:
sudo ufw enable,仅开放必要端口(如HTTP的80/tcp、HTTPS的443/tcp、SSH的22/tcp),例如sudo ufw allow 80/tcp;限制特定IP访问敏感端口(如sudo ufw allow from 192.168.1.100 to any port 22);查看状态sudo ufw status。sudo systemctl start firewalld并设置默认区域为public(sudo firewall-cmd --set-default-zone=public);允许服务(如sudo firewall-cmd --permanent --add-service=ssh)或端口(如sudo firewall-cmd --permanent --add-port=80/tcp);重载配置sudo firewall-cmd --reload。sudo iptables -A INPUT -i lo -j ACCEPT、SSH连接sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT),默认拒绝所有输入流量(sudo iptables -P INPUT DROP);保存规则(如Debian/Ubuntu使用iptables-persistent)。/etc/ssh/sshd_config,设置PermitRootLogin no,避免攻击者通过暴力破解Root密码入侵;重启SSH服务sudo systemctl restart sshd。ssh-keygen -t rsa),将公钥(id_rsa.pub)复制到服务器~/.ssh/authorized_keys;禁用密码登录(PasswordAuthentication no),降低密码泄露风险。sudo执行需要特权的命令;为用户分配最小必要权限,例如将用户加入特定组(sudo usermod -aG developers devuser)而非直接赋予权限。sudo userdel -r username),检查/etc/passwd、/etc/group中的用户和组信息;使用sudo -l查看用户sudo权限,移除不必要的权限。SSH是远程管理的关键服务,需优化配置以防范暴力破解:
/etc/ssh/sshd_config,设置Port为非默认端口(如2222),增加猜测难度;禁用密码登录(PasswordAuthentication no),强制使用密钥认证;限制登录用户(AllowUsers devuser)或IP段(AllowGroups admins)。/etc/fail2ban/jail.local,针对SSH设置maxretry = 3(允许3次失败尝试)、bantime = 3600(封禁1小时),自动屏蔽频繁失败的IP。合理的权限设置是防止数据泄露的重要手段:
644(所有者可读写,其他用户只读),目录权限设置为755(所有者可读写执行,其他用户可读执行);敏感文件(如/etc/shadow、/etc/passwd)需限制为600(仅所有者可读写)。chmod、chown命令调整权限:例如sudo chmod 600 /etc/shadow、sudo chown root:root /etc/passwd;通过ls -l查看权限,确保无异常。4)、Setgid(2)、Sticky Bit(1)(如sudo chmod u+s /usr/bin/passwd允许普通用户修改密码,但限制权限);使用ACL为单个用户/组设置权限(如sudo setfacl -m u:devuser:rwx /var/www/html允许devuser访问Web目录)。日志是检测异常行为的关键依据,需配置并定期审查:
rsyslog或syslog-ng),记录登录(/var/log/auth.log)、系统操作(/var/log/syslog)、服务日志(如/var/log/apache2/access.log);使用journalctl查看实时日志(如sudo journalctl -u sshd)。logwatch、fail2ban)自动化日志分析,及时响应安全事件。减少系统暴露面,降低被攻击风险:
systemctl list-units --type=service),禁用不需要的服务(如sudo systemctl stop apache2、sudo systemctl disable apache2);对于默认启用的服务(如Telnet、FTP),若无需使用则彻底关闭。sudo ufw deny 21/tcp禁用FTP端口)或停止对应服务,仅保留必要的端口(如SSH、HTTP、HTTPS)。