Ubuntu Apache2安全配置指南
1. 系统与Apache基础更新
确保系统和Apache2处于最新状态,及时修补已知安全漏洞:
sudo apt update && sudo apt upgrade -y
sudo apt install apache2
2. 配置防火墙(UFW)
使用UFW限制访问,仅允许HTTP(80)和HTTPS(443)流量:
sudo ufw allow 'Apache Full' # 允许HTTP和HTTPS
sudo ufw enable # 启用防火墙
3. 禁用不必要的Apache模块
减少攻击面,禁用不需要的模块(如mod_php、autoindex):
sudo a2dismod php7.x # 根据实际PHP版本调整(如php8.1)
sudo a2dismod autoindex # 禁用目录自动列表
sudo systemctl restart apache2
4. 隐藏Apache版本信息与禁用目录列表
修改配置文件,防止攻击者通过版本信息针对性攻击:
# 编辑安全配置文件
sudo nano /etc/apache2/conf-enabled/security.conf
添加/修改以下内容:
ServerTokens Prod # 仅显示"Apache",隐藏版本号
ServerSignature Off # 禁用错误页面中的服务器签名
禁用目录列表(针对/var/www/html):
Options -Indexes # 禁止目录自动列表
AllowOverride None
Require all granted
5. 启用SSL/TLS加密(Let’s Encrypt免费证书)
使用Certbot安装免费SSL证书,强制HTTPS访问:
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com # 替换为你的域名
证书自动续期(Certbot会自动配置cron任务)。
6. 配置HTTP安全头
通过mod_headers模块添加安全头,防范XSS、点击劫持等攻击:
# 启用headers模块
sudo a2enmod headers
编辑安全配置文件:
sudo nano /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信息
7. 安装与配置ModSecurity(WAF)
ModSecurity是一个Web应用防火墙(WAF),可防范SQL注入、XSS等攻击:
sudo apt install libapache2-mod-security2 -y
sudo a2enmod security2
配置ModSecurity(使用OWASP CRS规则集):
# 启用规则集
sudo a2enconf crs-setup
编辑ModSecurity主配置文件:
sudo nano /etc/apache2/conf-available/security2.conf
修改以下参数:
SecRuleEngine On # 开启规则引擎(DetectionOnly为检测模式,不影响业务)
SecRequestBodyAccess On # 允许检查请求体
SecResponseBodyAccess On # 允许检查响应体
SecAuditLog /var/log/modsec_audit.log # 审计日志路径
SecAuditLogParts ABIJDEFHZ # 记录请求/响应的关键部分
SecDataDir /var/lib/modsecurity # 临时数据目录
8. 防范DDoS攻击(mod_evasive)
mod_evasive可检测并限制DDoS攻击(如高频请求):
sudo apt install libapache2-mod-evasive -y
配置防DDoS参数:
sudo nano /etc/apache2/mods-enabled/evasive.conf
修改以下内容(根据服务器性能调整):
DOSHashTableSize 3097 # 哈希表大小(建议3097-4097)
DOSPageCount 2 # 单IP单页面1秒内超过2次请求则触发
DOSSiteCount 50 # 单IP全站1秒内超过50次请求则触发
DOSPageInterval 1 # 页面请求检测间隔(秒)
DOSSiteInterval 1 # 全站请求检测间隔(秒)
DOSBlockingPeriod 10 # 触发后封锁IP时间(秒)
9. 设置访问控制
限制敏感目录的访问权限(如/admin):
# 编辑虚拟主机配置文件(如000-default.conf)
sudo nano /etc/apache2/sites-available/000-default.conf
添加以下内容(针对/var/www/html/admin目录):
AuthType Basic # 基本认证
AuthName "Restricted Area" # 认证提示信息
AuthUserFile /etc/apache2/.htpasswd # 密码文件路径
Require valid-user # 允许认证用户访问
创建密码文件并添加用户:
sudo htpasswd -c /etc/apache2/.htpasswd admin # 创建用户admin(首次使用-c,后续添加无需-c)
10. 日志与监控
确保日志记录完整,便于排查安全事件:
# 编辑Apache主配置文件
sudo nano /etc/apache2/apache2.conf
确认以下配置(默认已开启):
LogLevel warn # 日志级别(warn及以上记录错误、警告)
ErrorLog ${APACHE_LOG_DIR}/error.log # 错误日志路径
CustomLog ${APACHE_LOG_DIR}/access.log combined # 访问日志(combined格式包含IP、URL、状态码)
11. 定期备份配置
备份Apache配置文件和网站数据,防止数据丢失:
# 备份配置文件
sudo tar -czvf /backup/apache2_config_$(date +%F).tar.gz /etc/apache2
# 备份网站数据(假设网站根目录为/var/www/html)
sudo tar -czvf /backup/html_$(date +%F).tar.gz /var/www/html
完成以上配置后,重启Apache使更改生效:
sudo systemctl restart apache2
以上就是关于“Ubuntu Apache2安全配置指南”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm