Apache2在CentOS上如何实现安全配置
导读:CentOS 上 Apache HTTP Server 的安全配置清单 一 基础加固 保持系统与应用为最新:执行 sudo yum update -y,及时修补漏洞。 精简攻击面:仅启用必需模块,禁用不需要的模块(如 autoindex、...
CentOS 上 Apache HTTP Server 的安全配置清单
一 基础加固
- 保持系统与应用为最新:执行 sudo yum update -y,及时修补漏洞。
- 精简攻击面:仅启用必需模块,禁用不需要的模块(如 autoindex、status、userdir 等,除非明确需要)。
- 运行身份与权限:确认以低权限用户/组运行(常见为 apache:apache),网站目录最小权限(如 /var/www/html 为 755,文件 644,禁止全局写)。
- 隐藏版本信息:在 /etc/httpd/conf/httpd.conf 或 /etc/httpd/conf.d/security.conf 中设置:
- ServerTokens Prod
- ServerSignature Off
- 禁用目录列表:在 < Directory “/var/www/html”> 中设置 Options -Indexes。
- 启用常用安全模块:mod_rewrite(用于强制 HTTPS、规范化 URL)、mod_ssl(启用 TLS)。
- 访问控制:对管理后台、敏感目录使用基于 IP 或 Basic Auth 的访问控制;示例(Basic Auth):
- 生成口令文件:sudo htpasswd -cm /etc/httpd/conf/htpasswd admin
- 目录配置:
- AuthName “Restricted”
- AuthType Basic
- AuthUserFile /etc/httpd/conf/htpasswd
- Require valid-user
- 重启生效:sudo systemctl restart httpd。
二 传输加密与端口管理
- 安装 SSL 模块:sudo yum install httpd mod_ssl -y。
- 配置 TLS:
- 方案 A(自签名,测试环境):
- 生成证书:
- 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
- 在 /etc/httpd/conf.d/ssl.conf 的 *<
VirtualHost :443>
中设置:
- SSLEngine on
- SSLCertificateFile /etc/pki/tls/certs/apache-selfsigned.crt
- SSLCertificateKeyFile /etc/pki/tls/private/apache-selfsigned.key
- 生成证书:
- 方案 B(生产环境,Let’s Encrypt):
- 安装客户端:sudo yum install certbot python2-certbot-apache -y
- 获取并自动配置证书:sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
- 方案 A(自签名,测试环境):
- 强制 HTTPS:在 80 虚拟主机中使用 mod_rewrite 将 HTTP → HTTPS。
- 防火墙放行:仅开放 80/443:
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-service=https
- sudo firewall-cmd --reload
- 监听与端口:仅监听必要端口(默认 80/443),确认 Listen 80 与 Listen 443 配置合理。
三 访问控制与请求限制
- 基于 IP 的访问控制:对敏感路径限制来源网段,例如:
-
- Require all granted
- Require not ip 203.0.113.0/24
-
- 目录与文件保护:对 .ht、.git、config.*、backup/* 等敏感资源设置 Deny from all 或移出文档根。
- 防暴力与 DoS:部署 mod_evasive 缓解暴力请求与慢速攻击(按需启用)。
- 协议与引擎:确保 SSLEngine on 仅出现在 443 虚拟主机;关闭不必要的 SSI、CGI 执行能力。
- 重启生效:sudo systemctl restart httpd。
四 SELinux 与文件系统安全
- 保持 SELinux 为 enforcing,避免直接 setenforce 0 或改为 disabled(生产环境不推荐)。
- 设置正确的文件上下文:
- 网站内容:sudo semanage fcontext -a -t httpd_sys_content_t “/var/www/html(/.*)?”
- 日志目录:sudo semanage fcontext -a -t httpd_log_t “/var/log/httpd(/.*)?”
- 执行修复:sudo restorecon -Rv /var/www /var/log/httpd
- 按需开启布尔值(示例):
- 允许后端数据库连接:sudo setsebool -P httpd_can_network_connect_db 1
- 允许访问用户主目录内容:sudo setsebool -P httpd_enable_homedirs 1
- 变更后验证:getenforce、semanage fcontext -l | grep httpd、ls -Z 检查上下文。
五 日志监控与维护
- 日志路径与轮换:访问与错误日志位于 /var/log/httpd/(如 access_log、error_log),使用 logrotate 定期切割与压缩,避免磁盘被占满。
- 实时监控:
- 实时查看错误日志:sudo tail -f /var/log/httpd/error_log
- 结合 journald 或 rsyslog 集中采集与告警。
- 合规审计:定期审计配置、模块与开放端口,保留变更记录;对异常 4xx/5xx、可疑 UA、暴力路径访问设置监控与告警。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Apache2在CentOS上如何实现安全配置
本文地址: https://pptw.com/jishu/759247.html
