centos下apache2安全设置
1. 系统与Apache软件更新
定期更新CentOS系统和Apache及其依赖模块,及时修补已知安全漏洞。执行命令:sudo yum update -y。
2. 配置防火墙限制访问
使用firewalld仅开放HTTP(80端口)和HTTPS(443端口),阻断其他不必要的网络访问。操作步骤:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
3. 禁用不必要的模块与服务
关闭Apache非必需模块(如mod_cgi、mod_status),减少攻击面。编辑/etc/httpd/conf/httpd.conf,注释或删除对应LoadModule行(例如#LoadModule cgi_module modules/mod_cgi.so)。
4. 隐藏Apache版本与敏感信息
修改Apache主配置文件(/etc/httpd/conf/httpd.conf),添加以下指令隐藏版本号和服务器签名,降低针对性攻击风险:
ServerTokens Prod
ServerSignature Off
5. 强化访问控制与权限管理
- 限制目录列表:在
/etc/httpd/conf/httpd.conf中为网站根目录(如/var/www/html)禁用自动索引,防止敏感文件泄露:< Directory "/var/www/html"> Options -Indexes +FollowSymLinks AllowOverride None Require all granted < /Directory> - 设置合理权限:将网站目录所有者设为
apache用户/组,权限设为755(目录)和644(文件):sudo chown -R apache:apache /var/www/html sudo find /var/www/html -type d -exec chmod 755 { } \; sudo find /var/www/html -type f -exec chmod 644 { } \;
6. 启用安全模块防护
- mod_security:作为Web应用防火墙(WAF),拦截SQL注入、XSS等恶意请求。安装并启用:
创建配置文件sudo yum install mod_security -y/etc/httpd/conf.d/security2.conf,添加基础规则:SecRuleEngine On SecRequestBodyAccess On SecAuditLog /var/log/httpd/security_audit.log - mod_evasive:防御DDoS攻击和暴力破解,限制同一IP的请求频率。安装并配置:
编辑sudo yum install mod_evasive -y/etc/httpd/conf.d/evasive.conf,设置阈值:< IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 < /IfModule>
7. 配置SSL/TLS加密通信
使用certbot获取Let’s Encrypt免费SSL证书,启用HTTPS。操作流程:
sudo yum install certbot python2-certbot-apache -y
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
证书自动配置后,Apache会自动重定向HTTP请求至HTTPS,确保数据传输安全。
8. 日志监控与审计
启用Apache详细日志记录,定期分析异常行为。在/etc/httpd/conf/httpd.conf中确认以下配置:
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined
使用tail -f /var/log/httpd/access_log实时监控访问日志,或通过logwatch工具生成每日报告。
9. SELinux配置(若启用)
若SELinux处于Enforcing模式,需调整策略允许Apache访问必要资源。常见操作:
- 允许Apache访问日志目录:
sudo setsebool -P httpd_can_write_log 1 - 允许Apache通过网络连接数据库(如MySQL):
sudo setsebool -P httpd_can_network_connect_db 1 - 更改网站目录的安全上下文:
sudo chcon -Rt httpd_sys_content_t /var/www/html
10. 其他高级防护措施
- 使用Fail2ban:监控Apache日志(如
error_log),自动封禁多次尝试失败的IP地址。安装并配置:创建sudo yum install fail2ban -y sudo systemctl enable fail2ban sudo systemctl start fail2ban/etc/fail2ban/jail.local,添加Apache防护规则:[apache] enabled = true port = http,https filter = apache-auth logpath = /var/log/httpd/error_log maxretry = 3 bantime = 600 - 配置HTTP安全头:通过
mod_headers模块添加安全响应头,防范XSS、点击劫持等攻击。编辑/etc/httpd/conf/httpd.conf,添加:< IfModule mod_headers.c> Header set X-XSS-Protection "1; mode=block" Header always append X-Frame-Options SAMEORIGIN Header set X-Content-Type-Options nosniff < /IfModule>
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos下apache2安全设置
本文地址: https://pptw.com/jishu/744187.html
