CentOS 上 Apache HTTP Server 的安全设置要点
一 基础加固
- 保持系统与软件为最新:执行 yum update -y,及时修补漏洞;安装后启动并设置开机自启 systemctl start httpd && systemctl enable httpd。
- 精简攻击面:禁用不需要的模块(如 mod_cgi、mod_status 等),仅启用业务必需模块。
- 隐藏版本信息:在主配置设置 ServerTokens Prod 与 ServerSignature Off,减少攻击者利用已知版本漏洞的机会。
- 禁止目录列表:在 <Directory “/var/www/html”> 中使用 Options -Indexes,避免暴露目录结构。
- 运行身份最小化:确认以 apache 用户/组运行(主配置中的 User/Group 指令),避免使用 root。
二 传输加密与证书
- 启用 mod_ssl 并配置 HTTPS:安装模块 yum install httpd mod_ssl -y,在 /etc/httpd/conf.d/ssl.conf 或虚拟主机中启用 SSLEngine on 并配置证书路径。
- 证书获取与自动续期:使用 Let’s Encrypt 与 certbot 自动申请与部署证书(如 certbot --apache -d yourdomain.com),确保证书自动续期。
- 自签名证书(测试/内网):可用 openssl req 生成自签名证书,并正确配置 SSLCertificateFile/SSLCertificateKeyFile。
三 访问控制与请求限制
- 基于 IP 的访问控制(Apache 2.4+ 推荐):在 中使用 Require ip 1.2.3.4 或 Require all denied/granted 精确放行/拒绝。
- 基于用户的 Basic 认证:配置 AuthType Basic、AuthName、AuthUserFile,用 htpasswd 创建密码文件,保护管理后台或敏感目录。
- 使用 mod_rewrite 做细粒度规则:例如对特定路径或来源 IP 返回 403 Forbidden。
- 边界层限制:结合 firewalld 仅开放 80/443,必要时用富规则限制来源 IP 的访问端口。
四 SELinux 与文件系统
- 保持 SELinux 启用(不建议直接关闭),为网站目录设置正确上下文:如 semanage fcontext -a -t httpd_sys_content_t /var/www/html 并 restorecon -Rv /var/www/html;仅在需要时调整布尔值(如 httpd_can_network_connect_db),避免过度放宽。
- 目录与文件权限:确保 /var/www 及其子目录属主为 root:apache,权限最小化(如目录 0755、文件 0644),避免使用 777。
五 运行监控与维护
- 日志与告警:关注 /var/log/httpd/error_log 与 access.log,对异常状态码、扫描特征与暴力访问进行告警与处置。
- 变更与备份:变更前备份配置(如 cp -p /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak),变更后使用 httpd -t 语法检查并 systemctl restart httpd 平滑生效。
- 持续更新与巡检:定期 yum update 与安全基线巡检,清理无用虚拟主机与默认页面,减少暴露面。