当前位置:首页>Linux>Linux运维实战 - Linux安全加固 checklist

Linux运维实战 - Linux安全加固 checklist

  • 2026-10-11 06:20:52
Linux运维实战 - Linux安全加固 checklist
各位运维同僚,大家好。在日常企业服务器管理中,安全加固往往是最容易被忽视,却又最致命的一环。很多团队在上线前只关注功能是否跑通,等到被挖矿、被提权、被勒索时,才后悔没做基础防护。

今天,我结合多年一线运维经验,整理了一份 Linux安全加固 checklist。全文聚焦可落地、可执行的操作,每条都附具体命令或配置,建议收藏后逐条检查。


1. 账号与权限管理(最基础也最关键)

1.1 禁用 root 远程登录

root 是黑客的第一目标。务必使用普通用户 sudo 提权。

操作命令:

# 创建普通用户(示例) useradd opsadmin passwd opsadmin usermod -aG wheel opsadmin   # CentOS/RHEL # 或 usermod -aG sudo opsadmin  # Ubuntu  # 修改 /etc/ssh/sshd_config sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config systemctl restart sshd

1.2 清理僵尸账号与空密码

检查并删除:

# 列出所有用户,检查是否有异常 uid=0 的账号 awk -F: '($3==0){print $1}' /etc/passwd  # 查找空密码用户 awk -F: '($2==""){print $1}' /etc/shadow  # 锁定长期不用的账号(非删除) usermod -L username

1.3 关键文件权限加固

重点保护以下文件:

• `/etc/passwd` → 644

• `/etc/shadow` → 600(或 000)

• `/etc/ssh/sshd_config` → 600

• `/etc/sudoers` → 440

批量修复命令:

chmod 644 /etc/passwd /etc/group chmod 600 /etc/shadow /etc/gshadow /etc/ssh/sshd_config chmod 440 /etc/sudoers

2. SSH 服务安全强化

SSH 是运维的第一道门,绝不能裸奔。

推荐配置(编辑 /etc/ssh/sshd_config):

# 禁止 root 登录 PermitRootLogin no # 仅允许指定用户登录(白名单) AllowUsers opsadmin deployer # 修改默认端口(避开 22) Port 22222 # 关闭密码认证(仅密钥登录) PasswordAuthentication no PubkeyAuthentication yes # 闲置超时断开(300秒无操作) ClientAliveInterval 300 ClientAliveCountMax 0 # 限制最大认证尝试次数 MaxAuthTries 3

**注意**:修改端口后,务必在防火墙放行新端口,并保留一个终端会话防止失联。


3. 内核参数与网络层加固

3.1 防止 IP 欺骗和 SYN 洪水

编辑 /etc/sysctl.conf,追加:

# 禁 ping(可选,生产环境建议开启) net.ipv4.icmp_echo_ignore_all = 1  # 防止 SYN 洪水攻击 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syn_retries = 2  # 忽略广播 ping net.ipv4.icmp_echo_ignore_broadcasts = 1  # 防止 IP 欺骗 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1  # 关闭源路由验证 net.ipv4.conf.all.accept_source_route = 0

生效命令:sysctl -p

3.2 防火墙最小化原则

使用 iptables 或 firewalld 设置白名单策略:

# 默认拒绝所有入站 iptables -P INPUT DROP iptables -P FORWARD DROP  # 放行回环接口 iptables -A INPUT -i lo -j ACCEPT  # 放行已建立的连接 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  # 放行 SSH(假设端口 22222) iptables -A INPUT -p tcp --dport 22222 -j ACCEPT  # 放行业务端口(如 80,443) iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT  # 保存规则 iptables-save > /etc/sysconfig/iptables

4. 日志审计与监控

没有日志,安全就是空谈。

4.1 开启 auditd 审计

# 安装 auditd yum install -y audit  # 监控关键文件改动 auditctl -w /etc/passwd -p wa -k passwd_changes auditctl -w /etc/shadow -p wa -k shadow_changes auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config  # 查看审计日志 ausearch -k passwd_changes

4.2 日志远程集中存储

防止攻击者删除本地日志。推荐配置 rsyslog 发送到远程日志服务器:

# 在 /etc/rsyslog.conf 添加 *.* @192.168.1.100:514   # UDP 传输 # 或 *.* @@192.168.1.100:514  # TCP 传输 systemctl restart rsyslog

5. 软件包与系统更新

5.1 自动安全更新

Debian/Ubuntu 使用 unattended-upgrades:

apt install unattended-upgrades dpkg-reconfigure --priority=low unattended-upgrades

CentOS/RHEL 使用 yum-cron:

yum install yum-cron sed -i 's/apply_updates = no/apply_updates = yes/' /etc/yum/yum-cron.conf systemctl enable yum-cron

5.2 移除无用软件包

高危包必须卸载:telnet、rsh、rlogin、ftp、sendmail(若不用)

yum remove telnet rsh rlogin ftp sendmail

6. 文件完整性校验(进阶)

推荐部署 AIDE(Advanced Intrusion Detection Environment):

# 安装 yum install aide  # 初始化数据库(首次运行较慢) aide --init  # 将生成的数据库改名 mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz  # 定期检查(可加入 cron) aide --check

当文件被篡改时,AIDE 会输出差异报告,是检测后门植入的利器。


7. 快速自检脚本

最后,分享一个我常用的一键检查脚本,覆盖上述大部分要点:

#!/bin/bash echo "=== 安全加固检查 ===" echo "1. 检查 root 远程登录状态:" grep "^PermitRootLogin" /etc/ssh/sshd_config  echo "2. 检查空密码用户:" awk -F: '($2==""){print $1}' /etc/shadow  echo "3. 检查关键文件权限:" ls -l /etc/passwd /etc/shadow /etc/ssh/sshd_config  echo "4. 检查防火墙默认策略:" iptables -L -n | head -5  echo "5. 检查 auditd 运行状态:" systemctl is-active auditd  echo "6. 检查 SSH 端口:" ss -tlnp | grep sshd

总结

安全加固不是一次性工作,而是一个持续迭代的过程。从账号权限、SSH 强化、内核参数到日志审计,每一条配置都可能挡住一次入侵。建议将上述 checklist 纳入服务器上线标准流程,并定期(每月/每季度)复查。

安全无小事,运维需谨慎。 希望这份清单能帮你构建起 Linux 服务器的第一道防线。

关注我,为您分享更多的IT知识!

最新文章

随机文章