Ubuntu下Apache2安全设置
小樊
34
2025-12-03 05:05:02
Ubuntu下Apache2安全设置清单
一 基础加固
保持系统与软件为最新:执行sudo apt update && sudo apt upgrade ,及时修补漏洞。
隐藏版本与系统信息:在**/etc/apache2/conf-enabled/security.conf中设置 ServerTokens Prod与 ServerSignature Off**,减少信息泄露。
禁用目录列表:在站点或全局配置中将目录选项设为Options -Indexes ,防止无索引时暴露目录结构。
以最小权限运行:确认进程以www-data 用户/组运行(查看进程或配置),避免使用root启动。
文件与目录权限:网站根目录建议chown -R www-data:www-data /var/www/html ,chmod -R 755 /var/www/html ,仅对上传等特定目录按需放宽。
禁用不必要的模块:列出模块apache2ctl -M ,禁用不需要的模块(如a2dismod autoindex 等)以缩小攻击面。
二 传输加密与端口管理
启用并强制使用HTTPS:安装证书工具sudo apt install certbot python3-certbot-apache ,获取并自动配置证书sudo certbot --apache -d yourdomain.com -d www.yourdomain.com ;或手动启用mod_ssl 并配置证书路径。
防火墙放行:使用ufw 仅开放必要端口,推荐sudo ufw allow ‘Apache Full’ (同时放行80/443),并启用sudo ufw enable 。
端口变更(可选):如需变更监听端口,编辑**/etc/apache2/ports.conf**(如将80/443 改为5000/4443 ),并同步更新虚拟主机与防火墙放行规则。
三 访问控制与请求防护
访问控制:对管理后台或敏感目录使用Require ip 192.168.1.0/24 或Deny from x.x.x.x 进行白/黑名单控制;基于目录配置示例:
<Directory “/var/www/html/admin”>
Options -Indexes
AllowOverride None
Require ip 192.168.1.0/24
基础认证:对特定路径启用HTTP Basic Auth ,先生成口令文件sudo htpasswd -c /etc/apache2/.htpasswd user ,再在配置中加入:
<Directory “/var/www/html/secret”>
AuthType Basic
AuthName “Restricted”
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
安全响应头:启用mod_headers 并添加:
Header always set X-Content-Type-Options “nosniff”
Header always set X-Frame-Options “SAMEORIGIN”
Header always set X-XSS-Protection “1; mode=block”
Header always set Referrer-Policy “no-referrer-when-downgrade”
Header always set Content-Security-Policy “default-src ‘self’; script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’; object-src ‘none’;”
请求限流与抗DoS:安装并配置libapache2-mod-evasive 缓解暴力与DDoS;按需部署libapache2-mod-qos 对抗Slowloris等低速攻击。
四 日志监控与入侵防护
日志与告警:确保ErrorLog 与CustomLog 已启用,结合fail2ban 监控异常登录/扫描并自动封禁:
sudo apt install fail2ban ,启用服务sudo systemctl start fail2ban && sudo systemctl enable fail2ban 。
WAF能力:部署libapache2-mod-security2 并加载规则集,增强对SQL注入/XSS 等常见攻击的拦截能力。
运行时防护:启用并正确配置AppArmor 对**/usr/sbin/apache2进行域限制(如 sudo aa-enforce /etc/apparmor.d/usr.sbin.apache2**),切勿直接移除AppArmor。
审计与巡检:定期查看**/var/log/apache2/access.log与 error.log**,可使用logwatch 做日报分析。
五 快速检查与生效
配置语法检查:sudo apache2ctl configtest
重启服务:sudo systemctl restart apache2
验证要点:
访问不存在资源返回自定义错误页且不泄露版本;目录无索引时不列文件;
访问http://自动跳转 https:// ;
敏感路径返回401 需认证;可疑来源被fail2ban 封禁;
模块按需启用/禁用(如ssl、headers、evasive、security2 )。