Linux 系统安全防护策略详解

2次阅读

linux安全需主动配置:改ssh端口、禁root密码登录、设iptables默认拒绝、细粒度sudo权限、远程加密日志、aide校验、定期备份验证及72小时漏洞响应。

Linux 系统安全防护策略详解

Linux 系统没有“开箱即用”的安全,所有防护效果都取决于你关掉了什么、改了哪几行配置、以及是否让规则真正生效。

SSH 默认端口和密码登录是最大风险入口

绝大多数自动化攻击(如 Mirai 变种、botnet 扫描)第一件事就是暴力尝试 root 账户在 22 端口的密码。这不是小概率事件,而是每小时都在发生的常态扫描。

  • 必须修改 /etc/ssh/sshd_config 中的 Port(建议选 2202222222 这类非知名高位端口),改完后别忘了 systemctl restart sshd
  • PermitRootLogin no 必须设为 no,不是 without-password —— 后者仍允许密钥登录 root,等于留后门
  • PasswordAuthentication no 要紧随密钥部署之后再启用;否则可能把自己锁在外面。验证方式:新开一个终端用 ssh -p 22022 -o PubkeyAuthentication=yes user@host 测试成功后再禁密码
  • 别忽略 MaxAuthTries 2LoginGraceTime 30,能显著拖慢爆破节奏

iptables 规则顺序错一位,整个防火墙就形同虚设

iptables 不是“加几条允许就行”,它是按链中规则顺序逐条匹配的,一旦命中就执行动作并停止检查。默认策略是 ACCEPT,意味着没被显式 DROP 的流量全放行。

  • 务必先执行 iptables -P input DROP 设默认拒绝,再追加允许规则;反过来操作会导致中间空窗期被利用
  • 允许 SSH 要写成 iptables -A INPUT -p tcp --dport 22022 -j ACCEPT,注意端口号必须和 sshd_config 一致,否则连不上
  • iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT 这类来源限制,只对内网有效;公网服务器慎用,容易误封真实用户
  • 规则不持久:重启后消失。ubuntuiptables-persistentcentosservice iptables save 或迁移到 nftables

sudo 权限不是“加进 sudo 组”就完事

把用户加进 sudo 组只是给了 ALL=(ALL:ALL) ALL 这个宽泛权限,相当于交出整把钥匙。真实运维中,多数命令根本不需要 root 权限,过度授权等于制造提权跳板。

  • visudo 编辑时,优先写具体命令白名单,比如:%webadmin ALL=(ALL) /bin/systemctl restart nginx, /usr/bin/journalctl -u nginx
  • 避免使用 NOPASSWD,除非是自动化脚本且该账户已隔离(如专用 deploy 用户);人肉操作必须输密码,这是二次确认
  • 检查当前用户实际能执行什么:sudo -l,它会列出所有可运行命令 —— 很多管理员从没跑过这句,直到某天发现有人能直接 sudo su -
  • 定期审计 /var/log/auth.log 中的 sudo 行为,尤其关注非工作时间或异常 IP 的调用

日志和备份不是“配了就安心”,而是“不验证就等于没做”

入侵者第一件事往往是删日志、清历史、覆盖 /var/log/auth.log~/.bash_history。本地日志和单点备份,在被攻陷后毫无意义。

  • rsync 备份到另一台机器时,目标账户不能有 shell(/sbin/nologin),且仅开放 rsync 协议,禁用交互式登录
  • 系统日志发远程,别用明文 syslog:改用 rsyslog + TLS,配置 action(type="omfwd" protocol="tcp" target="log-server" port="6514" template="RSYSLOG_ForwardFormat" streamDriver="gtls")
  • AIDE 文件完整性校验必须在系统初装后立即初始化:aide --init,然后把生成的 aide.db.new 移到 /var/lib/aide/aide.db 并设为只读(chown root:root && chmod 400
  • 备份恢复流程每年至少实操一次:挑一台测试机,删掉关键配置,用备份还原,看能否真正回滚到可用状态

最常被忽略的其实是时间窗口 —— 从漏洞披露到批量利用,现在平均只有 72 小时。自动更新不能只靠 unattended-upgrades,得确认它是否覆盖内核、是否重启服务、是否跳过有冲突的包。安全不是配置清单,是持续验证的动作。

text=ZqhQzanResources