Linux 系统安全加固实现

前言

Linux 服务器的安全加固涉及多个层面的措施,包括用户管理、权限控制、系统更新、防火墙与网络配置、日志监控等。

用户与权限管理

  • 禁止使用 root 直接登录,改为普通用户登录后使用 sudo 提权。
  • 强制使用强密码策略(复杂密码、定期更换)。
  • 禁止未授权用户和无用账户,如:
    • 禁用默认账户 guest 等。
    • 删除无用或过期账户。
  • 严格分配权限,采用最小权限原则(Least Privilege Principle)。
  • 使用 /etc/sudoers 文件精确管理用户 sudo 权限。
  • 锁定长期未使用账号:
    • 使用命令 faillock 或设置登录失败限制锁定账户。
    • 配置密码最长使用期限(例如 60-90 天)。

文件系统与目录权限

  • 对关键系统文件和目录施加严格权限:
    • /etc/passwd/etc/shadow/etc/ssh/sshd_config 等文件应设置为 600 或更高。
    • 应用 chattr +i 对一些重要配置文件设置不可修改属性。
  • 使用 umask 配置默认权限掩码以防止文件权限默认过宽。
  • 将敏感信息存储在受权限保护的安全目录下(如 /var/secrets/)。
  • 禁止或限制某些危险命令,如:
    • 禁用普通用户运行 compilers、编译器文件(gcc)。
    • 删除一部分危险的命令工具,如 wgetcurl,防止恶意下载。

SSH 安全加固

  • 修改默认的 SSH 端口(避免使用 22)。
    1
    Port 2222
  • 禁用 root 登录:
    1
    PermitRootLogin no
  • 使用 SSH 密钥认证(禁用密码认证):
    1
    PasswordAuthentication no
  • 限制允许登录的 IP 地址(通过 hosts.allowhosts.deny 或者防火墙规则)。
  • 配置 SSH 登录失败自动封禁机制,推荐工具:
    • Fail2ban:监控认证日志,封禁可疑 IP。
    • DenyHosts:自动锁定失败尝试的 IP 地址。

系统更新与漏洞修复

  • 定期更新系统和软件包,修补已知漏洞。
    • 使用包管理工具,如 yumdnfapt
      1
      yum update -y
  • 安装自动更新工具,如 unattended-upgrades
  • 确保内核实时修复(例如 livepatch 工具)。
  • 移除不必要的服务和软件,尤其是过时或未维护的服务(例如 FTP 等)。

网络与防火墙配置

  • 配置防火墙,默认阻止所有访问,只允许必要端口开放:
    • 使用 iptablesfirewalld 设置规则。
    • 推荐工具:UFW(简单使用)或 nftables
      1
      2
      ufw default deny incoming
      ufw allow 22
  • 检查开放的端口:
    • 查看当前端口 netstat -tulnss -tuln
    • 持续扫描异常访问,避免暴露无关的服务。
  • 启用 TCP 连接限制,比如 SYN cookie 防御 SYN 洪水攻击:
    1
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies
  • 使用 VPN 或安全代理访问服务器的重要服务。

日志与监控

  • 开启系统日志服务(如 rsyslogjournald)并定期分析日志。
  • 使用 logrotate 避免日志文件过于庞大。
  • 关注关键日志文件:
    • /var/log/auth.log/var/log/secure
    • /var/log/messages(系统日志)
  • 配置自动报警工具,如:
    • OSSEC:主动入侵监测系统。
    • Fail2ban:监控并阻止可疑的登录异常。
  • 定期检查磁盘空间和文件完整性:
    • 使用 auditd 来监控文件的读写操作。
    • 使用工具 Tripwire 检测文件改动。

应用层加固

  • 数据加密
    • 采用 SSL/TLS 保护数据传输,确保 HTTPS、SFTP、SMTPS 的使用。
    • 加固数据库访问权限,对于 MySQL 等仅允许本地授权访问。
  • 禁用不必要的服务(如 NFS、Telnet 等易受攻击服务)。
  • 设置常见服务限制:
    • 限制 Apache/Nginx 并发连接和流量。
    • 限制邮件端口可能的 SMTP 攻击。

文件系统安全

  • 配置挂载点的权限:
    • /tmp/var/tmp:设为 noexec,防止执行程序。
    • /boot:设为只读。
      1
      echo '/tmp /var/tmp defaults,noexec,nosuid 0 0' >> /etc/fstab
  • 启用 SELinuxAppArmor 增强内核安全抓控。
  • 配置 sysctl 变量增强内核网络安全,如:
    1
    2
    3
    net.ipv4.conf.all.rp_filter = 1
    net.ipv4.conf.default.accept_source_route = 0
    net.ipv4.icmp_echo_ignore_broadcasts = 1

备份与灾难恢复

  • 定期备份重要文件、配置和数据库:
    • 使用 rsync 或备份工具(如 tar + crontab)。
  • 测试备份的可用性,制定灾难恢复计划。
  • 利用 RAID、快照(Snapshot)实现更高级别的存储保护方案。

入侵检测和防御

  • 部署入侵检测系统(IDS),如:
    • Snort 监控网络入侵。
    • AIDE 检查文件系统完整性。
  • 使用 WAF(Web 应用防火墙)保护应用层,推荐:
    • ModSecurity 或 Cloudflare。