1. 系统与软件更新
定期更新系统和Apache2及相关软件包,及时修补已知安全漏洞。对于Ubuntu/Debian系统,使用sudo apt update && sudo apt upgrade;对于CentOS/RHEL系统,使用sudo yum update。建议开启自动安全更新(如Ubuntu的unattended-upgrades包),确保系统始终处于最新状态。
2. 防火墙配置
使用防火墙限制对Apache的访问,仅开放必要端口(HTTP 80、HTTPS 443)。对于Ubuntu/Debian,使用UFW(Uncomplicated Firewall):sudo ufw allow 'Apache Full'(允许HTTP和HTTPS)、sudo ufw enable(启用防火墙);对于CentOS/RHEL,使用Firewalld:sudo firewall-cmd --permanent --add-service=http --add-service=https、sudo firewall-cmd --reload。避免开放不必要的端口(如FTP、Telnet),减少攻击面。
3. 禁用不必要的模块与服务
禁用未使用的Apache模块,降低服务器暴露的风险。使用sudo a2dismod <module_name>命令(如sudo a2dismod autoindex禁用目录列表、sudo a2dismod rewrite禁用URL重写,若无需这些功能),然后重启Apache:sudo systemctl restart apache2。同时,关闭不必要的Apache服务(如status模块),避免泄露服务器信息。
4. 隐藏Apache版本与敏感信息
修改Apache配置文件,隐藏版本号和服务器签名,防止攻击者利用已知版本漏洞发起攻击。编辑/etc/apache2/apache2.conf(Ubuntu/Debian)或/etc/httpd/conf/httpd.conf(CentOS/RHEL),添加/修改以下指令:
ServerTokens Prod(仅显示“Apache”而非版本号)、ServerSignature Off(禁用错误页面中的服务器信息)。重启Apache使配置生效。
5. 配置SSL/TLS加密(启用HTTPS)
为网站配置SSL证书,强制使用HTTPS加密数据传输,防止中间人攻击。推荐使用Let’s Encrypt免费证书:
sudo apt install certbot python3-certbot-apache(Ubuntu/Debian);sudo certbot --apache -d yourdomain.com -d www.yourdomain.com(按提示完成配置);sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt),启用SSL模块(sudo a2enmod ssl),编辑虚拟主机配置文件(/etc/apache2/sites-available/default-ssl.conf),指定证书路径并重启Apache。6. 强化访问控制
/var/www/html目录权限为755,所有者为www-data(Apache用户):sudo chown -R www-data:www-data /var/www/html、sudo chmod -R 755 /var/www/html。<Directory>指令中添加Options -Indexes,防止用户查看目录内容(如/var/www/html目录)。.htpasswd文件存储用户名和密码:sudo htpasswd -c /etc/apache2/.htpasswd username(创建用户),然后在配置文件中添加AuthType Basic、AuthName "Restricted Area"、AuthUserFile /etc/apache2/.htpasswd、Require valid-user指令。7. 配置安全HTTP头
通过安全HTTP头增强浏览器端的安全防护,抵御XSS、点击劫持等攻击。在Apache配置文件(如/etc/apache2/conf-enabled/security.conf)中添加以下指令:
Header always set X-Content-Type-Options "nosniff"(防止MIME类型嗅探)、Header always set X-Frame-Options "SAMEORIGIN"(禁止点击劫持)、Header always set X-XSS-Protection "1; mode=block"(启用XSS防护)、Header always set Referrer-Policy "no-referrer-when-downgrade"(限制Referer泄露)、Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"(控制资源加载来源)。重启Apache使配置生效。
8. 安装与配置Web应用防火墙(WAF)
使用ModSecurity等WAF模块,检测并阻止SQL注入、跨站脚本(XSS)、恶意爬虫等常见Web攻击。安装ModSecurity:sudo apt install libapache2-mod-security2(Ubuntu/Debian)、sudo yum install mod_security(CentOS/RHEL);启用模块:sudo a2enmod security2;配置规则:编辑/etc/apache2/modsecurity.d/owasp-modsecurity-crs/crs-setup.conf(OWASP核心规则集),根据需求调整规则(如启用/禁用特定规则),然后重启Apache。
9. 日志监控与审计
启用详细的日志记录,定期检查日志文件以发现异常行为。确保Apache的错误日志(/var/log/apache2/error.log)和访问日志(/var/log/apache2/access.log)已启用(默认开启),使用tail -f /var/log/apache2/error.log实时监控错误日志,或通过工具(如Logwatch、Splunk)进行日志分析。设置日志轮转(logrotate),避免日志文件过大占用磁盘空间。
10. 限制资源使用与用户权限
LimitRequestBody指令,限制上传文件的最大大小(如50MB):LimitRequestBody 52428800(单位:字节),防止恶意用户上传大文件耗尽服务器资源。/etc/apache2/envvars(Ubuntu/Debian)或/etc/sysconfig/httpd(CentOS/RHEL),设置APACHE_RUN_USER=www-data、APACHE_RUN_GROUP=www-data(Ubuntu/Debian)或APACHE_RUN_USER=apache、APACHE_RUN_GROUP=apache(CentOS/RHEL),然后重启Apache。sudo apt install fail2ban(Ubuntu/Debian)、sudo yum install fail2ban(CentOS/RHEL);配置/etc/fail2ban/jail.local,添加Apache防护规则(如[apache-auth]),然后启动Fail2Ban:sudo systemctl enable fail2ban && sudo systemctl start fail2ban。