Linux服务器安全加固怎么做?——一份实用、可落地的操作指南
在当今数字化环境中,Linux服务器作为企业核心基础设施的承载平台,承担着网站托管、数据库服务、API网关、容器编排等关键任务。然而,开放性与灵活性也意味着更高的暴露面——未及时更新的内核、弱密码策略、冗余服务端口、权限配置不当等问题,都可能成为黑客入侵的突破口。据CVE统计,2023年披露的高危漏洞中,约41%涉及Linux发行版相关组件;而Verizon《2024数据泄露调查报告》指出,配置错误(Misconfiguration)仍是服务器被攻陷的首要原因,占比达27.3%。
一、加固前的必要准备:风险评估与基线扫描
安全加固不是盲目执行命令,而是以风险为导向的系统工程。建议在操作前完成三项基础工作:
- 资产清点:使用
hostnamectl、lsb_release -a确认OS版本与内核;通过systemctl list-unit-files --type=service --state=enabled梳理所有开机自启服务;运行ss -tuln或netstat -tuln识别监听端口及对应进程。 - 漏洞扫描:部署开源工具如Trivy(支持OS包与容器镜像扫描)或OpenSCAP,结合CIS Linux Benchmarks(如CIS Ubuntu 22.04 Level 1)生成合规差距报告。
- 备份与快照:对/etc、/boot、/var/log等关键目录执行
tar -czf backup-$(date +%Y%m%d).tar.gz /etc /boot /var/log;若为云主机,务必创建系统盘快照——博士云建议将快照保留周期设为7天,便于回滚验证。
二、账户与认证层加固
90%以上的暴力破解攻击始于SSH登录环节。必须从身份认证源头堵住漏洞:
1. 禁用root远程登录
编辑/etc/ssh/sshd_config,设置:PermitRootLogin noAllowUsers deploy admin(显式授权可信用户)
重启服务:sudo systemctl restart sshd
2. 强制密钥认证 + 密码失效
生成ED25519密钥对:ssh-keygen -t ed25519 -C "admin@company.com";将公钥追加至~/.ssh/authorized_keys;配置PasswordAuthentication no并禁用PAM密码模块(注释@include common-auth行)。
3. 登录失败锁定机制
安装faillock(RHEL/CentOS)或libpam-faillock(Debian/Ubuntu),在/etc/pam.d/common-auth中添加:auth [default=ignore] pam_faillock.so preauth silent audit deny=5 unlock_time=900auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900
三、网络与服务层最小化原则
遵循“默认拒绝”原则,关闭一切非必要服务:
- 停用IPv6若无需支持:
sysctl -w net.ipv6.conf.all.disable_ipv6=1,并在/etc/sysctl.conf中持久化。 - 限制SSH访问源IP:
iptables -A INPUT -p tcp --dport 22 -s 192.168.10.0/24 -j ACCEPT(替换为运维网段),再追加iptables -A INPUT -p tcp --dport 22 -j DROP。 - 禁用废弃服务:
sudo systemctl disable avahi-daemon cups bluetooth rpcbind(根据实际环境裁剪)。
四、文件系统与权限精细化管控
利用Linux原生机制实现纵深防御:
• 使用ACL细化权限
例如为Web日志目录授予审计组读写权:setfacl -m g:audit:rwx /var/log/nginx,避免全局chmod 777。
• 启用Immutable属性防篡改
对关键配置文件(如/etc/passwd、/etc/shadow)执行:chattr +i /etc/passwd(需先卸载SELinux或调整策略)。
• 配置审计规则监控敏感操作
在/etc/audit/rules.d/custom.rules中添加:-w /etc/shadow -p wa -k identity-w /usr/bin/sudo -p x -k sudo_exec
加载规则:sudo augenrules --load。
五、持续监控与应急响应
加固不是一次性动作。推荐部署:
- 日志集中化:使用rsyslog或Fluent Bit将/var/log/auth.log、/var/log/secure推送至ELK或Loki集群,设置SSH失败告警阈值(如5分钟内10次失败)。
- 进程行为白名单:部署OSSEC HIDS,定义合法进程路径与启动参数,自动阻断异常子进程。
- 定期红蓝对抗:每季度执行一次模拟渗透测试(如使用Metasploit验证SSH密钥强度、Nmap扫描开放端口是否合规),更新加固策略。
六、进阶建议:容器化与云环境适配
若服务器运行Docker/Kubernetes,需叠加以下措施:
- 禁用
--privileged模式;为容器指定非root用户(USER 1001);挂载/proc为只读。 - 云平台启用VPC流日志、安全组动态策略(如博士云控制台支持基于标签的自动策略更新)。
- 使用USEGVP0202A等硬件级可信执行环境(TEE)模块,保护密钥与敏感计算逻辑。
最后强调:安全加固需平衡可用性与防护强度。切忌为追求“满分评分”而禁用必要服务,应以业务连续性为底线,建立版本化加固脚本(Ansible Playbook)、定期复盘变更影响。真正的安全,始于每一次严谨的sudo确认,成于每一处细节的敬畏之心。