1. 定期更新系统与Apache2软件包
保持系统和Apache2及其依赖库的最新状态,及时修补已知安全漏洞。对于Ubuntu/Debian系统,使用sudo apt update && sudo apt upgrade;对于CentOS/RHEL系统,使用sudo yum update。还可安装unattended-upgrades包自动安装安全更新。
2. 配置防火墙限制访问
使用UFW(Ubuntu)或firewalld(CentOS)限制对Apache服务的访问,仅允许必要的端口(HTTP 80、HTTPS 443)。例如,Ubuntu下启用UFW并允许Apache:sudo ufw allow 'Apache Full' && sudo ufw enable;CentOS下使用firewalld:sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --permanent --add-service=https && sudo firewall-cmd --reload。
3. 禁用不必要的Apache模块
禁用不使用的模块以减少攻击面,如autoindex(目录列表)、mod_php(若使用PHP-FPM替代)、mod_rewrite(若无需URL重写)。使用命令sudo a2dismod 模块名(如sudo a2dismod autoindex),然后重启Apache:sudo systemctl restart apache2。
4. 隐藏Apache版本信息与敏感细节
修改Apache配置文件(如/etc/apache2/apache2.conf或/etc/httpd/conf/httpd.conf),设置ServerTokens Prod(仅显示“Apache”而非版本号)和ServerSignature Off(禁用错误页面中的服务器版本信息),防止攻击者利用版本信息针对性攻击。
5. 配置SSL/TLS加密传输
启用HTTPS加密数据传输,避免明文泄露。安装mod_ssl模块:sudo a2enmod ssl(Ubuntu)或sudo yum install mod_ssl(CentOS);生成自签名证书(或购买CA证书),编辑虚拟主机配置(如/etc/apache2/sites-available/default-ssl.conf),添加:
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>
重启Apache生效:sudo systemctl restart apache2。
6. 强化目录与文件权限
限制网站目录的访问权限,避免未授权访问。设置目录权限为755(所有者可读/写/执行,其他用户仅可读/执行),文件权限为644(所有者可读/写,其他用户仅可读)。例如:
sudo chown -R www-data:www-data /var/www/html # 假设Apache用户为www-data
sudo chmod -R 755 /var/www/html
同时在配置文件中禁用目录列表(Options -Indexes)。
7. 启用安全模块增强防护
sudo apt install libapache2-mod-security2(Ubuntu),编辑/etc/apache2/mods-available/security2.conf启用规则,然后重启Apache。/etc/apache2/mods-available/evasive.conf,设置请求频率限制。8. 限制访问来源与认证
Require指令仅允许特定IP访问敏感目录。例如:<Directory /var/www/html/admin>
Require ip 192.168.1.0/24
</Directory>
.htaccess或配置文件添加基本认证(Basic Authentication),设置强密码。例如:AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
使用htpasswd命令创建密码文件:sudo htpasswd -c /etc/apache2/.htpasswd 用户名。9. 防止常见Web攻击
X-XSS-Protection启用浏览器XSS过滤器:Header set X-XSS-Protection "1; mode=block"。Header set X-Content-Type-Options "nosniff"。10. 日志监控与审计
启用并定期检查Apache的访问日志(/var/log/apache2/access.log)和错误日志(/var/log/apache2/error.log),使用工具(如fail2ban)自动封禁频繁失败的IP地址。安装fail2ban:sudo apt install fail2ban,配置/etc/fail2ban/jail.local针对Apache的access.log设置过滤规则。