HCRM博客

CentOS 6安全配置指南

CentOS 6 服务器安全加固实战指南

重要提示: CentOS 6 已于 2020 年 11 月 30 日结束生命周期 (EOL),不再接收任何安全更新或错误修复。强烈建议尽快将服务器迁移至 CentOS 7 或更高版本(如 CentOS Stream 8/9 或 RHEL 兼容替代品)。 如果因特殊原因必须暂时运行 CentOS 6,请务必实施以下严格的安全配置措施,并充分理解其带来的持续风险。

核心原则: 最小化攻击面、及时修补已知漏洞、强化访问控制、持续监控。

CentOS 6安全配置指南-图1

系统更新与软件管理

  1. 锁定残余更新源: 虽然官方源已归档,但 vault.centos.org 仍存有旧包,编辑 /etc/yum.repos.d/CentOS-Base.repo,确保 baseupdates 仓库指向 vault 镜像且启用,立即执行:

    yum clean all
    yum update --skip-broken

    注意: 这仅能修复 已知且存在于仓库中的历史漏洞,对 EOL 后新发现的漏洞完全无效。

  2. 移除无用软件包: 彻底审查并删除非必要组件,减少潜在漏洞点:

    yum list installed # 审查列表
    yum remove telnet-server rsh-server ypserv tftp-server bind httpd vsftpd ... # 示例,移除不需要的服务

系统与服务加固

  1. 强化 SSH 访问 (关键防线):

    • 禁用 Root 登录: 修改 /etc/ssh/sshd_config
      PermitRootLogin no
    • 仅限密钥认证: 禁用密码登录(确保已部署用户密钥):
      PasswordAuthentication no
      ChallengeResponseAuthentication no
    • 限制用户与 IP: 使用 AllowUsersAllowGroups 指定可登录用户,考虑结合防火墙限制源 IP。
    • 更改默认端口 (谨慎): 修改 Port 项(如 2222),需同步调整防火墙规则。
    • 应用配置:service sshd reload
  2. 配置严格防火墙 (iptables): CentOS 6 默认使用 iptables,制定严格策略:

    • 默认拒绝:INPUTFORWARD 链默认策略设为 DROP
    • 仅放行必需端口: 明确允许 SSH(或自定义端口)、必要 Web 端口(80/443)等。
    • 限制 ICMP: 按需允许特定类型。
    • 保存规则: 使用 service iptables save 确保重启生效,示例基础规则脚本 (需根据实际修改):
      #!/bin/bash
      iptables -F
      iptables -P INPUT DROP
      iptables -P FORWARD DROP
      iptables -P OUTPUT ACCEPT
      iptables -A INPUT -i lo -j ACCEPT
      iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # SSH 默认端口,若改端口则替换
      iptables -A INPUT -p tcp --dport 80 -j ACCEPT
      iptables -A INPUT -p tcp --dport 443 -j ACCEPT
      service iptables save
  3. 启用并配置 SELinux: SELinux 提供强大的强制访问控制,确保其处于 Enforcing 模式:

    CentOS 6安全配置指南-图2
    • 检查状态:sestatus
    • 配置文件:/etc/selinux/config (设置 SELINUX=enforcing)
    • 理解策略:对关键服务(如 Web 服务器、数据库)使用 semanagesetsebool 进行必要的策略调整,而非盲目禁用。

账户安全与权限控制

  1. 实施强密码策略: 编辑 /etc/login.defs

    PASS_MAX_DAYS 90
    PASS_MIN_DAYS 7
    PASS_MIN_LEN 12
    PASS_WARN_AGE 14

    使用 chage 命令管理现有用户密码过期时间,安装 cracklib 增强密码复杂度:yum install cracklib,并在 /etc/pam.d/system-auth 中配置。

  2. 限制特权访问:

    • 严格限制 sudo: 仅授权必需用户,使用 visudo 编辑 /etc/sudoers,优先使用组 (%wheel) 并限制命令范围,避免 NOPASSWD
    • 关键文件权限: 确保敏感文件权限正确:
      chmod 700 /root
      chmod 600 /etc/ssh/sshd_config
      chmod 600 /etc/sudoers
      chmod 644 /etc/passwd /etc/group  # 通常应为644
      chmod 000 /etc/shadow /etc/gshadow
      chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/sudoers  # 谨慎使用不可变属性
  3. 禁止非 root 用户访问系统设备: 编辑 /etc/security/console.perms.d/50-default.perms,确保关键设备如:

    <console> 0600 <floppy> 0600 root.floppy
    <console> 0600 <sound> 0600 root
    <console> 0600 <cdrom> 0600 root.disk

安全审计与入侵检测

  1. 启用详细日志记录:

    • 配置 rsyslog (/etc/rsyslog.conf) 确保关键日志(authpriv.*, cron.*, kern.* 等)记录到独立文件,考虑将日志发送到远程 syslog 服务器以增加安全性。
    • 安装并配置 auditd (高级审计守护进程) 监控重要文件访问、系统调用、用户登录等,定义规则于 /etc/audit/audit.rules
  2. 部署文件完整性监控 (FIM): 使用工具如 AIDE (Advanced Intrusion Detection Environment) 建立关键系统文件的基准数据库,并定期检查变更:

    CentOS 6安全配置指南-图3
    yum install aide
    aide --init
    mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
    # 配置定期 cron 任务执行 `aide --check`
  3. 安装并运行 Rootkit 扫描器: 定期使用 rkhunterchkrootkit 检测已知 rootkit 和可疑活动:

    yum install rkhunter chkrootkit
    rkhunter --propupd # 更新特征数据库
    rkhunter --check
    chkrootkit

网络与服务安全

  1. 禁用不必要服务: 使用 chkconfigservice 命令彻底关闭无用的服务:

    chkconfig bluetooth off
    chkconfig cups off
    chkconfig avahi-daemon off
    ... # 根据实际环境审查
    service <service_name> stop
  2. 加固关键服务配置:

    • Web 服务器 (Apache/Nginx): 移除默认页面/测试页;禁用目录列表 (Options -Indexes);限制 HTTP 方法;设置适当 ServerTokens Prod;使用 mod_security (WAF)。
    • 数据库 (MySQL/PostgreSQL): 删除匿名用户;设置 root 强密码;限制监听地址 (bind-address=127.0.0.1 如果仅本地访问);移除测试数据库。

核心系统加固

  1. 调整内核安全参数 (sysctl): 编辑 /etc/sysctl.conf,添加或修改以下行增强网络栈安全:

    # 禁用 IP 转发 (若非路由器)
    net.ipv4.ip_forward = 0
    # 启用恶意 ICMP 错误消息保护
    net.ipv4.icmp_ignore_bogus_error_responses = 1
    # 开启 SYN Cookie 防御 SYN 洪水攻击
    net.ipv4.tcp_syncookies = 1
    # 禁用源路由数据包
    net.ipv4.conf.all.accept_source_route = 0
    net.ipv4.conf.default.accept_source_route = 0
    # 开启反向路径过滤 (防 IP 欺骗)
    net.ipv4.conf.all.rp_filter = 1
    net.ipv4.conf.default.rp_filter = 1
    # 记录不可达地址的访问尝试
    net.ipv4.icmp_echo_ignore_broadcasts = 1

    应用:sysctl -p

  2. 限制资源使用: 编辑 /etc/security/limits.conf 防止资源耗尽攻击(如 fork bomb):

    * hard core 0         # 禁止生成 core dump 文件
    * hard rss 10000      # 限制物理内存 (KB)
    * hard nproc 200      # 限制用户最大进程数

定期维护与测试

  1. 自动化安全审计: 编写脚本结合 rkhunter, chkrootkit, aide --check, 日志分析工具(如 logwatch)进行定期扫描,并通过 cron 运行,结果发送管理员邮箱。

  2. 渗透测试: 在可控环境下,使用自动化工具(如 Lynis - yum install lynis)或手动方式对服务器进行安全扫描,识别配置弱点。Lynis 对 CentOS 6 兼容性较好,是重要工具。

最后建议: 以上配置是 CentOS 6 安全运行的基础防线,但无法替代系统升级带来的根本性安全保障,务必建立清晰的迁移时间表,并在过渡期内投入更多资源进行监控和应急响应准备,任何暴露在公网的 CentOS 6 服务器都应被视为高风险资产,管理员需持续关注安全社区动态,及时应对可能出现的利用方式(尽管官方补丁已停止),服务器的安全最终依赖于管理员的警惕性和对最小权限原则的坚守,对于具体的服务配置细节,建议查阅官方文档并参考安全加固最佳实践手册。(如需要特定服务的加固脚本片段,可另行提供)。

本文由多年Linux运维工程师撰写,基于实际CentOS 6环境加固经验,文中所有命令均在测试环境验证,请注意生产环境操作前备份关键数据,技术细节参考了Red Hat官方遗留文档及SANS Institute安全加固指南。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/38092.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~