Linux权限审计与防火墙加固是纵深防御在身份层和网络层的协同落地,前者管“谁可以做什么”,后者管“谁可以从哪儿进来”,两者结合才能阻断攻击链。

Linux 权限审计与防火墙加固不是两个孤立动作,而是同一套纵深防御逻辑在身份层和网络层的落地。权限管“谁可以做什么”,防火墙管“谁可以从哪儿进来”,两者缺一不可。一次被攻破的 SSH 登录,往往源于权限配置松散 + 防火墙放行了不该开的端口;一个被提权的普通用户,常因 sudo 规则过宽 + 没有日志记录而无法追溯。
权限审计:从账户、sudo 到文件属性
权限问题大多藏在“默认配置”和“历史遗留”里。审计不是翻一遍 /etc/passwd 就完事,而是分三层动手:
-
账户层面:运行
awk -F: '$3 >= 1000 && $3 <= 60000 {print $1,$3,$7}' /etc/passwd筛出普通用户,逐个确认是否仍在职、shell 是否为 /bin/bash(避免 /bin/false 或 /usr/sbin/nologin 账户被误启);用lastlog -b 90查看 90 天内未登录账户,锁定或删除 -
sudo 层面:执行
sudo -l -U username检查每个授权用户的实际权限,重点识别含ALL=(ALL) NOPASSWD: ALL的规则——这类配置等于交出 root 密钥;建议改用/etc/sudoers.d/下按角色拆分的文件,例如只允许 ops 用户重启 nginx,不允许执行 shell 命令 -
文件层面:对关键配置文件加不可变属性,如
chattr +i /etc/shadow /etc/passwd /etc/sudoers;检查敏感目录权限,ls -ld /etc /var/log /root应显示为drwxr-x---或更严格,若出现drwxrwxrwx必须立即修正
防火墙加固:默认拒绝 + 精准放行
防火墙不是“开了就行”,而是要让它真正挡住东西。2026 年主流环境已转向 nftables,但 ufw 在中小场景仍高效可靠。核心思路始终是“先关死,再开缝”:
- 确认默认策略为 drop:ufw 执行
sudo ufw default deny incoming;nftables 检查 base chain 中是否存在drop语句,且位于所有 accept 规则之后 - 只放行业务必需端口:SSH(非 22)、HTTP/HTTPS、数据库监听端口(如 3306),且数据库服务必须绑定
127.0.0.1,而非0.0.0.0;用ss -tlnp核对每个监听端口的实际绑定地址 - 加入连接速率限制:ufw 可启用
ufw limit 22222(针对 SSH 端口);nftables 直接写 rate-limit 规则,例如每分钟最多 5 个新连接,超限丢弃并记录
SSH 配置:入口控制不能只靠改端口
改端口能过滤掉大量脚本扫描,但对定向攻击无效。真正的入口加固在 sshd_config 里,且必须配合验证机制:
- 强制使用密钥认证:
PasswordAuthentication no、PubkeyAuthentication yes、PermitRootLogin no这三项必须同时生效;密钥类型优先选ed25519,生成命令为ssh-keygen -t ed25519 -C "admin@prod" - 限制登录来源:
AllowUsers admin@203.0.113.42比单纯用防火墙更精准;若需多 IP,可用AllowUsers admin@192.0.2.0/24或配合Match块做条件匹配 - 会话安全收紧:
MaxAuthTries 3防暴力试探;ClientAliveInterval 300+ClientAliveCountMax 3实现 15 分钟无操作自动断连;修改后务必先运行sshd -t校验语法,再systemctl reload sshd
日志与自动化:让加固持续生效
配置做完只是开始,没有审计和监控,加固会随时间失效:
- 日志必须异地留存:本地日志可被删,应配置 rsyslog 或 journald 转发至远程日志服务器;至少保留
/var/log/auth.log和/var/log/secure的 90 天归档 - 启用 fail2ban:专治 SSH 暴力破解,安装后启用
sshdjail,调整maxretry和bantime参数,封禁 IP 自动写入 iptables 或 nftables - 定期基线比对:用
rpm -Va(RHEL/CentOS)或dpkg --verify(Debian/Ubuntu)检查系统文件完整性;搭配aide工具做自定义文件校验,每周运行一次并邮件告警异常


















