如何加固Linux服务器以提升安全防护能力?
- 云服务器
- 2025-12-13
- 5
加固Linux服务器是确保系统安全性的关键步骤,涉及系统配置、权限管理、服务优化等多个层面,以下从系统初始化、账户与权限控制、服务安全、日志审计、网络防护、定期维护六个方面详细阐述加固方法,并提供具体操作建议。
系统初始化安全配置
系统安装阶段即需进行安全设置,避免默认配置带来的风险,在安装过程中应创建非root管理员账户,禁用root远程登录,并设置强密码策略,安装完成后,建议使用minimal最小化安装模式,仅安装必要的软件包,减少攻破面,可通过以下命令检查已安装软件包:
rpm qa | wc l # CentOS/RHEL系统 dpkg l | wc l # Debian/Ubuntu系统
对于多余软件包,使用yum remove或apt purge命令卸载,关闭SELinux(若非必需)或设置为 enforcing 模式,执行setenforce 1启用,并编辑/etc/selinux/config配置文件永久生效。
账户与权限控制
账户安全是服务器加固的基础,需定期清理闲置账户,通过lastlog命令查看用户最后登录时间,对长期未使用的账户锁定或删除,禁止直接使用root登录,编辑/etc/ssh/sshd_config文件,设置PermitRootLogin no,并通过sudo授权管理员权限,sudo配置示例:

限制sudo权限范围,避免赋予过多权限,密码策略方面,通过/etc/login.defs和/etc/security/pwquality.conf设置密码复杂度(如最小长度12位、包含大小写字母及数字)和定期更换周期(如90天)。
服务安全优化
关闭不必要的服务可显著降低风险,使用systemctl listunitfiles state=enabled查看开机启动服务,对非核心服务(如telnet、rsh、 cups)执行systemctl disable命令禁用,对于必须运行的服务(如SSH、Nginx),需进一步加固配置,以SSH为例,修改/etc/ssh/sshd_config:
- 禁用密码登录,启用密钥认证:PasswordAuthentication no,PubkeyAuthentication yes
- 修改默认端口(如从22改为2222)
- 限制登录用户:AllowUsers admin user1
- 设置空闲超时:ClientAliveInterval 300,ClientAliveCountMax 3
对于Web服务(如Nginx),应隐藏版本信息(修改server_tokens off)、限制HTTP方法(仅允许GET、POST)、配置SSL/TLS使用TLS 1.2及以上协议,并定期更新证书。

日志与监控
日志审计是发现异常行为的关键,确保系统日志服务开启,配置/etc/rsyslog.conf将日志发送至远程服务器(如ELK Stack或Syslogng),重点监控以下日志:
- 认证日志:/var/log/secure(记录SSH登录、sudo使用)
- 系统日志:/var/log/messages(记录系统错误、服务启动)
- 内核日志:/var/log/dmesg
使用logrotate工具管理日志轮转,避免日志文件过大,配置/etc/logrotate.d/sshd:
/var/log/secure { monthly rotate 6 compress missingok notifempty }
部署监控工具(如Prometheus + Grafana)实时监控CPU、内存、磁盘IO及网络流量,设置阈值告警。
网络访问控制
防火墙是网络层的第一道防线,使用firewalld(CentOS/RHEL)或ufw(Ubuntu)配置默认拒绝所有入站规则,仅开放必要端口,firewalld配置示例:
firewallcmd permanent addservice={http,https,ssh} firewallcmd permanent addport=8080/tcp firewallcmd reload
对于更复杂的规则,可使用iptables直接配置表和链,禁止ICMP广播 ping(echorequest)以防止分布攻破,启用TCP Wrappers(/etc/hosts.allow和/etc/hosts.deny)限制特定IP访问服务,如:
# /etc/hosts.allow sshd: 192.168.1.0/24, 10.0.0.1 # /etc/hosts.deny sshd: ALL
定期维护与更新
系统补丁管理是长期安全的核心,配置自动更新(CentOS使用yumcron,Ubuntu使用unattendedupgrades),或定期执行yum update/apt upgrade安装安全补丁,文件系统权限方面,使用chmod和chown最小化权限分配,如Web目录设置为755,文件设置为644,敏感文件(如/etc/shadow)设置权限000,防止未授权访问。
常见问题FAQs
如何检查Linux服务器是否存在未授权的用户账户?
答:可通过以下命令检查:
- 查看所有用户列表:cat /etc/passwd | awk F: '{print $1}'
- 检查特权账户(UID为0):awk F: '($3 == 0) {print $1}' /etc/passwd
- 查看空密码账户:awk F: '($2 == "" || $2 == "!") {print $1}' /etc/shadow
- 分析登录日志:grep "Failed password" /var/log/secure | awk '{print $(NF3)}' | sort | uniq c
如何防止SSH暴力免费攻破?
答:可采取以下措施:
- 使用密钥认证替代密码认证,禁用密码登录(PasswordAuthentication no)
- 安装fail2ban工具,监控/var/log/secure中的失败登录,自动封禁恶意IP: apt install fail2ban # Ubuntu/Debian
yum install fail2ban # CentOS/RHEL
配置/etc/fail2ban/jail.local:
[sshd] enabled = true port = 22 maxretry = 3 bantime = 3600 - 修改SSH默认端口,结合防火墙限制访问IP范围。
