1. 定期更新系统与Apache2
保持系统和Apache2及相关模块为最新版本,及时修补已知安全漏洞。对于Ubuntu/Debian系统,使用sudo apt update && sudo apt upgrade;对于CentOS系统,使用sudo yum update命令完成更新。
2. 配置防火墙限制访问
使用UFW(Ubuntu)或firewalld(CentOS)限制仅允许必要的端口(80/HTTP、443/HTTPS)对外开放,阻断非法IP的访问尝试。例如,Ubuntu下执行sudo ufw allow 'Apache Full'并启用防火墙sudo ufw enable;CentOS下执行sudo firewall-cmd --permanent --add-service=http --add-service=https并重载防火墙sudo firewall-cmd --reload。
3. 禁用不必要的模块与服务
禁用未使用的Apache模块(如autoindex、rewrite等),减少攻击面。使用sudo a2dismod <module_name>命令(如sudo a2dismod autoindex),禁用后重启Apache生效sudo systemctl restart apache2。
4. 隐藏Apache版本信息
修改Apache配置文件(如Ubuntu的/etc/apache2/apache2.conf或CentOS的/etc/httpd/conf/httpd.conf),设置ServerTokens Prod(仅显示“Apache”而非版本号)和ServerSignature Off(禁用页面底部的版本信息),防止攻击者通过版本信息针对性攻击。
5. 启用SSL/TLS加密通信
为网站配置SSL/TLS证书(可使用Let’s Encrypt免费获取),强制使用HTTPS加密传输数据,防止中间人攻击和数据泄露。例如,使用Certbot工具一键安装证书:sudo apt install certbot python3-certbot-apache,然后执行sudo certbot --apache -d yourdomain.com;CentOS下类似,使用sudo yum install certbot python2-certbot-apache。
6. 配置安全模块增强防护
sudo apt install libapache2-mod-security2),编辑/etc/apache2/conf-available/security2.conf,设置SecRuleEngine On(开启规则引擎),并引入OWASP CRS规则集(Include /etc/apache2/conf-available/crs-setup.conf)。/etc/apache2/mods-enabled/evasive.conf中设置DOSPageCount 2、DOSSiteCount 50、DOSBlockingPeriod 10(封禁10秒),启用模块sudo a2enmod evasive。7. 强化访问控制与认证
<Directory>指令限制目录访问,禁止目录浏览(Options -Indexes),仅允许必要操作(如Require all granted)。例如:<Directory /var/www/html> Options -Indexes +FollowSymLinks AllowOverride None Require all granted </Directory>。AuthType Basic、AuthName "Restricted Area"、AuthUserFile /etc/apache2/.htpasswd、Require valid-user(需提前创建密码文件sudo htpasswd -c /etc/apache2/.htpasswd username)。8. 优化日志记录与监控
启用详细的日志记录(错误日志和访问日志),定期检查日志文件(如/var/log/apache2/error.log、/var/log/apache2/access.log),及时发现异常行为(如大量404错误、频繁登录失败)。调整日志级别为warn或更高:LogLevel warn rewrite:trace3。
9. 限制资源使用防止滥用
通过LimitRequestBody指令限制上传文件大小(如50MB),防止攻击者上传超大文件耗尽服务器资源。配置示例:LimitRequestBody 52428800(单位:字节)。
10. 使用SELinux或AppArmor强化权限
若系统支持SELinux(CentOS)或AppArmor(Ubuntu),启用并配置其策略,限制Apache进程的访问权限。例如,SELinux下设置httpd_can_network_connect为1(允许Apache连接网络):sudo setsebool -P httpd_can_network_connect 1;AppArmor下编辑Apache的配置文件(如/etc/apparmor.d/usr.sbin.apache2),限制其对敏感目录的访问。