Linux系统防护体系构建_多层安全设计解析【教程】

9次阅读

Linux 安全需围绕最小权限、纵深防御、可观测性三原则手动组合机制:细化 sudo 命令级控制、防火墙默认拒绝并阻断元数据接口、启用 auditd 监控 execve 等关键调用、停用 rpcbind 等非必要服务,并通过自动化校验确保各层持续生效。

Linux 系统防护体系构建_多层安全设计解析【教程】

Linux 系统没有“开箱即用”的完整防护体系,所谓多层安全设计,本质是围绕 最小权限 纵深防御 可观测性 三个原则,手动组合基础机制——不是装几个 工具 就叫防护,而是让每个环节都形成可验证的约束。

用户与权限控制:别让 sudo 变成后门

很多系统把普通用户加进 sudo 组就认为“权限管好了”,实际等于默认授予 root 权限。真正有效的控制必须细化到命令级,并禁用密码免交互等高危配置。

  • visudo 编辑/etc/sudoers,避免直接修改文件导致语法错误锁死系统
  • 禁止使用NOPASSWD,除非明确该命令不涉及敏感操作(如systemctl status
  • 对运维账号按职责拆分:比如 backup 用户只允许 /usr/bin/rsync/bin/tar,路径必须写绝对路径
  • 启用 requiretty 防止通过 SSH 非交互式提权

iptables / nftables策略:默认拒绝比开放 端口 更重要

防火墙 不是“放开 SSH 和 HTTP 就行”,而是先 drop 所有入站,再按需accept——尤其要防内部横向扫描和云环境元数据接口暴露。

  • 云服务 器务必阻断对169.254.169.254(AWS/Azure 元数据服务)的出向请求,防止凭证泄露
  • 禁止 ICMP echo-request 响应外网,但保留内网探测(避免运维失联)
  • nftables 替代 iptables 时,注意inet family 规则需显式声明ip protocol,否则 TCP/UDP 可能被意外放行
  • 记录可疑连接:nft add rule inet filter input ct state invalid log prefix "INVALID_CT:" drop

日志与审计:靠 rsyslog 转发不够,得让 auditd 盯住关键系统调用

/var/log/messages只记录服务级日志,无法捕获 execveopenat 这类行为。没开auditd,等于没审计。

  • /etc/audit/rules.d/immutable.rules 中添加:
    -a always,exit -F arch=b64 -S execve -k exec_monitor
  • 禁用auditctl -e 2(锁定规则),防止攻击者临时关闭审计
  • audit.log 通过 rsyslog 发往远程 SIEM,本地日志设为只追加(chattr +a /var/log/audit/audit.log
  • 定期检查 aureport -m -ts today | grep -i "failed",重点关注failedchmodchown操作

服务精简与加固:停掉 rpcbind 比给 sshd 改端口更有效

攻击者不会先猜 SSH 端口,而是扫2049(NFS)、111(RPC)这种默认暴露的老协议。关掉不用的服务,比调参数更直接。

  • 查活跃监听端口:ss -tlnp | grep -v '127.0.0.1',重点看非 0.0.0.0 绑定的残留服务
  • 禁用rpcbindsystemctl disable --now rpcbind{,-socket},NFS 客户端无需此服务
  • sshd加固优先级:禁用PasswordAuthentication > 禁用RootLogin > 改端口(后者仅防脚本扫描,不防定向攻击)
  • systemd-analyze blame 发现启动慢且非必要的服务(如 avahi-daemon),直接mask

真正的防护难点不在配置本身,而在于每次系统更新、新服务上线、运维流程变更时,是否同步校验这些层是否仍生效——比如 kernel 升级后 audit 规则是否兼容,或新部署的容器是否绕过了主机 nftables 规则。自动化校验比手工配置重要得多。

text=ZqhQzanResources