
核心要点(TL;DR)
作为运维或站长,你是否担心 Linux 服务器被入侵?面对层出不穷的暴力破解、漏洞利用和提权攻击,一套系统化的安全加固流程至关重要。本文提供 10 条核心命令与配置清单,手把手教你提升 Linux 主机安全基线,抵御常见威胁。
1. 系统更新与补丁管理
保持系统最新是安全加固的第一步。攻击者常利用已知漏洞入侵,因此必须定期更新。
# Debian/Ubuntu
apt update && apt upgrade -y
# CentOS/RHEL
yum update -y建议配置自动更新,例如 Ubuntu 使用 unattended-upgrades,CentOS 使用 yum-cron。同时,移除不再使用的软件包以减少攻击面。
2. SSH 服务安全加固
SSH 是远程管理的主要入口,也是攻击重点。修改 /etc/ssh/sshd_config:
- 更改默认端口:
Port 2222 - 禁用 root 登录:
PermitRootLogin no - 禁用密码认证:
PasswordAuthentication no - 限制用户:
AllowUsers deploy
重启服务:systemctl restart sshd。务必先测试新配置,避免锁死。
3. 防火墙配置
使用防火墙限制入站流量,只开放必要端口。以 firewalld 为例:
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --remove-service=dhcpv6-client
firewall-cmd --reload若使用 iptables,设置默认拒绝策略:
iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT4. 用户与权限管理
遵循最小权限原则。检查具有 UID 0 的用户:awk -F: '==0 {print }' /etc/passwd,确保只有 root。锁定无用账户:usermod -L username。设置强密码策略:编辑 /etc/login.defs 和 /etc/security/pwquality.conf。使用 sudo 代替直接 root 操作,并限制 sudo 权限。
5. 日志与审计
集中管理日志便于入侵检测。使用 rsyslog 或 journald 将日志发送到远程服务器。安装 auditd 监控关键文件:
auditctl -w /etc/passwd -p wa -k passwd_changes定期检查 /var/log/auth.log 或 /var/log/secure 中的异常登录。
6. 安装 fail2ban 防暴力破解
fail2ban 可自动封禁多次登录失败的 IP。安装并配置:
apt install fail2ban -y
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local编辑 jail.local,启用 [sshd] 并设置 maxretry = 3,bantime = 3600。启动服务:systemctl enable --now fail2ban。
7. 文件系统安全
设置关键目录权限:chmod 700 /root,chmod 644 /etc/passwd。使用 chattr +i 锁定重要文件如 /etc/passwd、/etc/shadow 防止篡改。定期检查 SUID/SGID 文件:find / -perm -4000 -type f 2>/dev/null,移除不必要的 SUID 位。
8. 服务最小化
关闭不必要的服务:systemctl list-unit-files --type=service | grep enabled,禁用如 telnet、rsh 等不安全服务。使用 ss -tunlp 查看监听端口,确保只开放必要端口。
9. 内核参数加固
编辑 /etc/sysctl.conf,添加:
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.tcp_syncookies = 1
kernel.randomize_va_space = 2执行 sysctl -p 生效。这些参数可防御 IP 欺骗、SYN Flood 等攻击。
10. 定期安全扫描与审计
使用工具如 lynis 进行安全审计:lynis audit system。安装 rkhunter 和 chkrootkit 检测 rootkit。定期运行 nmap 扫描本机端口,确保没有意外开放的服务。
行动建议:立即按照上述清单逐项检查并加固你的 Linux 主机。对于企业环境,可考虑使用 AegisX 的主机安全加固功能,自动化基线检查与合规审计,持续监控安全状态。安全是一个持续过程,定期复查和更新策略才能有效抵御威胁。
常见问题(FAQ)
如何快速检查 Linux 主机是否已被入侵?
首先检查异常进程和网络连接:运行 `ps aux` 和 `netstat -tunlp` 查看可疑进程和监听端口。其次检查登录日志 `/var/log/auth.log` 或 `/var/log/secure` 中的异常登录记录。还可以使用 `last` 和 `lastb` 查看成功和失败的登录尝试。若发现未知进程或连接,立即隔离主机并深入分析。
SSH 加固有哪些必做的步骤?
必做步骤包括:1. 修改默认端口(如 2222);2. 禁用 root 直接登录(PermitRootLogin no);3. 使用密钥认证并禁用密码登录(PasswordAuthentication no);4. 限制可登录用户(AllowUsers);5. 安装 fail2ban 防暴力破解。完成后重启 sshd 服务并测试新连接,避免锁死自己。
iptables 和 firewalld 哪个更适合 Linux 安全加固?
两者均可,选择取决于发行版和熟悉程度。iptables 更底层、灵活,适合需要精细控制的场景;firewalld 提供动态管理和区域概念,更易用,适合 CentOS/RHEL 7+。建议统一使用一种,并配置默认拒绝策略,只放行必要端口。对于新手,firewalld 更友好;对于高级用户,iptables 更直接。
如何设置自动安全更新?
在 Debian/Ubuntu 上安装 unattended-upgrades:`apt install unattended-upgrades` 并启用 `dpkg-reconfigure --priority=low unattended-upgrades`。在 CentOS/RHEL 上使用 yum-cron:`yum install yum-cron` 并配置 `/etc/yum/yum-cron.conf` 中 `apply_updates = yes`。自动更新可及时修补漏洞,但建议在测试环境验证后再应用于生产。
Linux 主机安全加固后如何验证效果?
验证方法包括:1. 使用 `nmap` 扫描本机,确认只开放了必要端口;2. 尝试使用错误密码 SSH 登录,确认 fail2ban 是否封禁 IP;3. 检查 `sudo -l` 确认用户权限最小化;4. 运行 `lynis` 等审计工具进行安全评分。定期复查并更新加固策略,确保长期有效。