1. 更新Apache及依赖组件
确保Apache主程序、模块及关联的系统库(如OpenSSL)为最新版本,及时修复已知安全漏洞。可通过包管理器(如apt
、yum
)自动更新,或手动下载官方补丁安装。
2. 以最小权限运行Apache进程
避免使用root用户启动Apache,创建专用低权限用户(如apache
、www-data
)及用户组,修改配置文件(如/etc/apache2/envvars
或/etc/sysconfig/httpd
)中的APACHE_RUN_USER
和APACHE_RUN_GROUP
参数,确保进程仅能访问必要文件。
3. 禁用不必要的模块
关闭未使用的模块以减少攻击面,如mod_autoindex
(目录浏览)、mod_status
(状态页)、mod_cgi
(CGI脚本)等。使用a2dismod
命令(Debian/Ubuntu)或手动注释httpd.conf
中的模块加载行,重启Apache生效。
4. 配置严格的访问控制
<Directory>
指令限制对敏感目录(如/var/www/html
、配置目录)的访问,使用Require
指令指定允许的IP或网段(如Require ip 192.168.1.0/24
),禁用目录浏览(Options -Indexes
)。Files
或Location
指令限制对特定文件(如.env
、wp-config.php
)的访问,例如<FilesMatch "\.(env|htaccess)$"> Require all denied </FilesMatch>
。5. 启用SSL/TLS加密
为网站配置HTTPS,使用强加密套件保护数据传输。安装mod_ssl
模块(a2enmod ssl
),获取CA签名的SSL证书(或生成自签名证书),编辑虚拟主机配置(如default-ssl.conf
),设置SSLEngine on
、SSLCertificateFile
(证书路径)、SSLCertificateKeyFile
(私钥路径),并禁用过时协议(如SSLv3、TLSv1)及弱加密套件(如RC4)。
6. 隐藏服务器敏感信息
ServerTokens Prod
(仅显示“Apache”而非版本号)和ServerSignature Off
(禁用错误页面中的服务器信息),防止攻击者利用版本信息针对性攻击。/etc/apache2
、/etc/httpd
)的访问,仅允许root用户读写(如chmod 750 /etc/apache2
)。7. 防止常见Web攻击
mod_headers
模块添加X-XSS-Protection
头(Header set X-XSS-Protection "1; mode=block"
),启用浏览器内置的XSS过滤器。mod_security
模块(Web应用防火墙)过滤恶意请求,或通过Header set X-Content-Type-Options "nosniff"
防止MIME类型嗅探。Options
指令不包含FollowSymLinks
,使用SymLinksIfOwnerMatch
替代(仅允许符号链接指向所有者拥有的文件)。8. 配置日志与监控
启用错误日志(ErrorLog
)和访问日志(CustomLog
),记录详细请求信息(如IP、URL、状态码)。定期审查日志,使用工具(如fail2ban
)自动封禁频繁发起恶意请求的IP地址(如404错误超过阈值的IP)。
9. 使用防火墙限制访问
通过系统防火墙(如ufw
、firewalld
)限制对Apache端口(80/HTTP、443/HTTPS)的访问,仅允许合法IP段或来源。例如,使用ufw allow 'Apache Full'
开启HTTP/HTTPS访问,或firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="80" protocol="tcp" accept'
限制IP段。
10. 定期备份与维护
定期备份网站数据(如/var/www/html
)、配置文件(如/etc/apache2
)及数据库,存储到离线或云存储介质。制定应急响应计划,测试恢复流程,确保在遭受攻击或故障时能快速恢复服务。