Apache2安全配置要点
定期更新Apache2及相关系统组件(如内核、PHP等),及时修补已知安全漏洞。例如,在Ubuntu上使用sudo apt update && sudo apt upgrade
,在CentOS上使用sudo yum update
命令。
使用防火墙限制对Apache2的访问,仅开放必要端口(HTTP 80、HTTPS 443)。
sudo ufw allow 'Apache Full'
(允许HTTP/HTTPS)、sudo ufw enable
(启用防火墙);sudo firewall-cmd --permanent --add-service=http
、sudo firewall-cmd --permanent --add-service=https
、sudo firewall-cmd --reload
(重载规则)。禁用未使用的Apache模块(如autoindex
、cgi
、status
等),减少攻击面。例如,使用sudo a2dismod autoindex
(Ubuntu/Debian)或注释LoadModule
指令(CentOS)禁用模块,重启Apache生效。
通过配置隐藏Apache版本及服务器信息,防止攻击者利用已知版本漏洞攻击。在Apache配置文件(如/etc/apache2/apache2.conf
或/etc/httpd/conf/httpd.conf
)中添加:
ServerTokens Prod
(仅显示“Apache”而非版本号)、ServerSignature Off
(禁用页面底部的服务器信息)。
.htaccess
或主配置文件设置访问控制,要求用户输入用户名/密码。例如:<Directory "/var/www/html/restricted">
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
其中,AuthUserFile
存储加密后的用户名/密码(使用htpasswd
命令生成)。Require
指令限制特定IP或用户访问敏感目录。启用HTTPS加密数据传输,防止中间人攻击。推荐使用Let’s Encrypt免费证书(sudo apt install certbot python3-certbot-apache
、sudo certbot --apache
),或手动配置证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
;/etc/apache2/sites-available/default-ssl.conf
):<VirtualHost *:443>
ServerName yourdomain.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>
重启Apache后生效。/var/www/html
)的所有者设为Apache用户(Ubuntu/Debian为www-data
,CentOS为apache
),权限设为755
(所有者可读/写/执行,其他用户可读/执行):sudo chown -R www-data:www-data /var/www/html
、sudo chmod -R 755 /var/www/html
。/var/www/html/uploads
),允许Apache用户写入(775
权限):sudo chmod -R 775 /var/www/html/uploads
。/etc/apache2
、/var/log/apache2
等目录的访问,仅允许root用户访问。Require all denied
,禁止非法访问上级目录。Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options "nosniff"
mod_security
模块(sudo a2enmod security2
)过滤恶意请求。启用详细日志记录,定期检查异常行为。确保ErrorLog
(错误日志)和CustomLog
(访问日志)路径正确(如Ubuntu默认路径为/var/log/apache2/error.log
、/var/log/apache2/access.log
),日志级别设置为warn
或error
(LogLevel warn
)。
部署WAF(如ModSecurity
)增强防护,过滤SQL注入、XSS、DDoS等攻击。例如,安装ModSecurity
模块:sudo apt install libapache2-mod-security2
(Ubuntu),并配置规则集(如OWASP Core Rule Set)。
通过LimitRequestBody
指令限制上传文件大小(如50MB),防止资源耗尽攻击:
LimitRequestBody 52428800
(50MB=50×1024×1024字节)。
/etc/apache2/apache2.conf
、虚拟主机配置)是否有未授权修改或多余指令。/var/www/html
)和配置文件(/etc/apache2
),例如使用tar
命令:sudo tar -czvf /backup/apache2-backup.tar.gz /etc/apache2 /var/www/html
。