CentOS下Apache安全配置指南
导读:CentOS 下 Apache 安全配置指南 一 基础加固 保持系统与应用为最新:执行 sudo yum update -y,及时修补漏洞。 精简与禁用不必要的模块:如非必需,禁用 mod_cgi、mod_status、mod_userd...
CentOS 下 Apache 安全配置指南
一 基础加固
- 保持系统与应用为最新:执行 sudo yum update -y,及时修补漏洞。
- 精简与禁用不必要的模块:如非必需,禁用 mod_cgi、mod_status、mod_userdir、mod_autoindex、mod_info、mod_version 等,减少攻击面。
- 隐藏版本与系统信息:在全局或主配置中加入
- ServerTokens Prod
- ServerSignature Off
- 禁止目录浏览:在站点或全局目录段设置 Options -Indexes。
- 限制 HTTP 方法与请求大小:在需要的虚拟主机或目录段加入
- Require all denied
- LimitRequestBody 10485760(示例为 10MB,按业务调整)。
- 禁用危险或易被滥用的功能:
- TraceEnable Off(禁用 TRACE)
- 如不使用 CGI/SSI,注释或禁用 mod_cgi、mod_include。
- 运行身份最小化:确认 User apache 与 Group apache,避免使用高权限账户运行。
- 访问控制:对管理后台、配置文件目录等敏感路径,仅允许可信来源访问,例如:
- < Directory “/var/www/admin”> Require ip 203.0.113.0/24
- 文件与目录权限:网站根目录建议 chown -R apache:apache /var/www/html,chmod -R 755 /var/www/html;禁止 Web 可写敏感目录。
- 备份与变更管理:变更前备份配置 cp -p /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak,变更后校验并重载服务。
二 传输加密与证书
- 启用 mod_ssl 并打开 SSLEngine on;准备证书与(可选)证书链文件。示例虚拟主机片段:
- SSLCertificateFile /etc/pki/tls/certs/your_domain.crt
- SSLCertificateKeyFile /etc/pki/tls/private/your_domain.key
- SSLCertificateChainFile /path/to/chainfile.crt(如 CA 提供)
- 自签名证书(测试环境可用):
- 生成命令:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/apache-selfsigned.key -out /etc/pki/tls/certs/apache-selfsigned.crt
- 防火墙放行:
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-service=https
- sudo firewall-cmd --reload
- 生产环境建议使用 Let’s Encrypt/Certbot 自动签发与续期:
- 安装:sudo yum install certbot python2-certbot-apache -y
- 申请并自动配置:sudo certbot --apache -d yourdomain.com
- 证书与私钥文件权限:私钥建议 600,证书 644,属主 root:root。
三 访问控制与请求限制
- 目录与文件粒度的访问控制:
- 对外公开目录:AllowOverride None(减少 .htaccess 风险),Require all granted
- 管理或敏感目录:仅内网或白名单网段可访问,示例:
- < Directory “/var/www/admin”> Require ip 203.0.113.0/24
- 禁用 Web 根目录之外的访问:对敏感系统路径(如 /etc、/var/log、/root)返回 403。
- 限制 HTTP 方法:仅允许业务所需方法(如 GET/POST),对 PUT/DELETE/TRACE 等禁用。
- 限制请求体大小:对上传或接口场景设置 LimitRequestBody,防止滥用导致资源耗尽。
- 启用 mod_rewrite 做跳转与强制 HTTPS:
- 例:将所有 HTTP 跳转至 HTTPS
- RewriteEngine On
- RewriteCond %{ HTTPS} off
- RewriteRule ^(.*)$ https://%{ HTTP_HOST} $1 [L,R=301]
- 例:将所有 HTTP 跳转至 HTTPS
四 运行环境与 SELinux
- 以最小权限运行:确认 User apache / Group apache;Web 内容属主 apache:apache,权限 755/644 分级设置。
- 目录类型与上下文:对自定义目录设置正确的 SELinux 上下文,例如
- sudo chcon -Rt httpd_sys_content_t /var/www/html
- 按需开启布尔值(示例):
- 若后端在 127.0.0.1:3306,可临时测试:sudo setsebool -P httpd_can_network_connect_db 1
- 如需访问用户主目录内容:sudo setsebool -P httpd_enable_homedirs 1
- 不建议直接禁用 SELinux(enforcing → disabled);应通过审计日志与策略调整解决权限问题。
- 变更后使用 sudo systemctl restart httpd 重载服务,并观察 journalctl -xeu httpd 与 /var/log/httpd/error_log。
五 监控 日志与持续维护
- 日志配置与轮转:确保启用访问与错误日志,使用 combined 格式便于分析;配置 logrotate 防止磁盘被占满。
- 实时监控与告警:定期审计 /var/log/httpd/access_log 与 error_log,对异常状态码(如 4xx/5xx 突增)、可疑 UA/来源 IP、暴力访问等进行告警。
- 防护扩展:
- 部署 mod_evasive 缓解 DoS/DDoS;
- 部署 ModSecurity + OWASP Core Rule Set 作为 WAF 缓解 SQLi/XSS/文件上传 等常见漏洞。
- 变更与备份:每次调整配置先备份,变更后用 httpd -t 做语法校验,再 systemctl reload httpd;保留多份历史配置与证书。
- 持续更新:定期 yum update 与证书续期(如 certbot renew --dry-run 预演)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS下Apache安全配置指南
本文地址: https://pptw.com/jishu/770009.html
