服务公告

服务公告 > 新闻公告 > Apache安全配置:防常见Web攻击精简指南

Apache安全配置:防常见Web攻击精简指南

发布时间:2025-08-28 08:36

Apache默认配置存在安全隐患,本文提供可落地的精简配置方案,覆盖基础加固、攻击防御、HTTPS及维护,快速提升Web服务安全性。

一、基础加固:减少攻击面

1. 隐藏敏感信息

编辑主配置文件(/etc/apache2/apache2.conf 或 /etc/httpd/conf/httpd.conf),避免暴露版本与系统:
ServerTokens Prod  # 仅返回“Apache”
ServerSignature Off  # 错误页不显示版本
2. 禁用无用模块

1. 查看已加载模块:apache2ctl -M(Ubuntu)/ httpd -M(CentOS);

2. 注释风险模块(主配置文件中):
# 禁用信息泄露/目录浏览模块
# LoadModule info_module modules/mod_info.so
# LoadModule autoindex_module modules/mod_autoindex.so
# LoadModule cgi_module modules/mod_cgi.so
二、针对性防御常见攻击

1. 防SQL注入(辅助)

在虚拟主机配置或.htaccess中添加,核心仍需应用层参数化查询:
# 仅允许GET/POST/HEAD方法
<LimitExcept GET POST HEAD>
    Order allow,deny
    Deny from all
</LimitExcept>

# 过滤SQL关键字(临时防护)
RewriteEngine On
RewriteCond %{QUERY_STRING} (select|insert|update|delete|union) [NC]
RewriteRule ^ - [L,R=403]
2. 防XSS与点击劫持(HTTP头)

启用mod_headers模块后,添加安全头:
LoadModule headers_module modules/mod_headers.so
Header set X-XSS-Protection "1; mode=block"  # 浏览器XSS过滤
Header set Content-Security-Policy "script-src 'self'"  # 限制脚本源
Header set X-Frame-Options "DENY"  # 禁止iframe嵌入
Header set X-Content-Type-Options "nosniff"  # 禁止MIME嗅探
3. 防CSRF(辅助)

限制POST请求来源(需替换为自身域名):
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule ^ - [L,R=403]
4. 防文件上传攻击

限制上传目录(如/var/www/html/upload)执行权限:
<Directory "/var/www/html/upload">
    Options -ExecCGI
    AddHandler cgi-script .php .asp .jsp
</Directory>
三、HTTPS强制(必配)

1. 启用SSL模块
# Ubuntu: a2enmod ssl; CentOS: yum install mod_ssl
systemctl restart apache2/httpd
2. 配置HTTPS与跳转
# HTTP强制跳转HTTPS(80端口)
<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

# HTTPS配置(443端口,证书路径替换为实际路径)
<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/html
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1  # 禁用旧协议
</VirtualHost>
四、访问控制与日志

1. 限制敏感目录(如/admin)
<Directory "/var/www/html/admin">
    Order deny,allow
    Deny from all
    Allow from 192.168.1.100  # 仅允许管理员IP
    # 可选:密码认证(htpasswd -c /etc/apache2/.htpasswd admin)
    AuthType Basic; AuthName "Admin Area"; AuthUserFile /etc/apache2/.htpasswd; Require valid-user
</Directory>
2. 启用审计日志
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"" combined
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
五、配置验证与维护

1. 验证配置:apache2ctl configtest(Ubuntu)/ httpd -t(CentOS),无错后重启服务;

2. 定期维护:更新Apache(apt/yum upgrade)、扫描漏洞(Nessus/OpenVAS)、审查配置。

总结

Apache配置是辅助防御,需结合应用层安全(代码审计、输入过滤)与网络层防火墙,形成分层防护体系,才能有效抵御Web攻击。