温馨提示×

怎样提升Ubuntu Apache2安全性

小樊
37
2025-11-09 09:57:17
栏目: 智能运维

1. 系统与软件更新
定期更新Ubuntu系统和Apache2及相关软件包,及时修补已知安全漏洞。执行以下命令:

sudo apt update && sudo apt upgrade -y

2. 配置防火墙(UFW)
使用UFW限制访问,仅允许HTTP(80/tcp)、HTTPS(443/tcp)及SSH(默认22/tcp,建议修改为非标准端口)流量:

sudo ufw allow 'Apache Full'  # 允许HTTP/HTTPS
sudo ufw allow ssh            # 允许SSH(若修改端口需替换为实际端口)
sudo ufw enable               # 启用防火墙
sudo ufw status               # 验证规则

3. 禁用不必要的Apache模块
通过apache2ctl -M查看已启用模块,禁用无用模块(如autoindex防止目录列表、php7.x若无需PHP),减少攻击面:

sudo a2dismod autoindex  # 禁用目录自动列表
sudo a2dismod php7.4     # 示例:禁用PHP7.4模块(根据实际安装版本调整)
sudo systemctl restart apache2

4. 启用SSL/TLS加密
使用Let’s Encrypt获取免费证书,配置HTTPS加密通信。安装Certbot并自动配置:

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com  # 替换为实际域名

证书自动续期(Certbot默认配置),无需手动操作。

5. 配置HTTP安全头
通过mod_headers模块添加安全头,防范XSS、点击劫持等攻击。编辑/etc/apache2/conf-available/security.conf,添加以下内容:

<IfModule mod_headers.c>
    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信息
</IfModule>
sudo a2enconf security  # 启用配置
sudo systemctl restart apache2

6. 隐藏Apache版本与敏感信息
修改Apache配置文件,隐藏版本号和操作系统信息,降低针对性攻击风险:

sudo sed -i 's/ServerTokens OS/ServerTokens Prod/g' /etc/apache2/apache2.conf
sudo sed -i 's/ServerSignature On/ServerSignature Off/g' /etc/apache2/apache2.conf
sudo systemctl restart apache2

7. 限制目录访问权限
禁用目录自动列表,设置严格的访问控制,仅允许授权用户访问敏感目录(如/admin):

<Directory /var/www/html>
    Options -Indexes FollowSymLinks  # 禁止目录列表
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/html/admin>
    AuthType Basic
    AuthName "Restricted Area"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Directory>

创建.htpasswd文件并添加用户:

sudo htpasswd -c /etc/apache2/.htpasswd admin  # 替换为实际用户名

8. 启用安全模块

  • mod_evasive:防范DDoS、Slowloris攻击,安装并配置:

    sudo apt install libapache2-mod-evasive -y
    sudo mkdir -p /var/log/apache2/evasive
    sudo chown -R www-data:root /var/log/apache2/evasive
    

    编辑/etc/apache2/mods-enabled/evasive.conf,添加以下参数:

    DOSHashTableSize 2048
    DOSPageCount 20       # 1秒内同一IP访问同一页面超过20次拦截
    DOSPageInterval 1.0
    DOSSiteCount 300      # 1秒内同一IP访问整个站点超过300次拦截
    DOSSiteInterval 1.0
    DOSBlockingPeriod 10  # 拦截10
  • mod_security:实时检测并阻止SQL注入、XSS等攻击,安装配置:

    sudo apt install libapache2-mod-security2
    sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
    sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/g' /etc/modsecurity/modsecurity.conf
    sudo systemctl restart apache2
    

9. 使用Fail2Ban防范暴力破解
安装Fail2Ban监控日志,自动封禁频繁尝试登录的IP地址:

sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.local /etc/fail2ban/jail.local.bak  # 备份默认配置
sudo systemctl start fail2ban
sudo systemctl enable fail2ban

编辑/etc/fail2ban/jail.local,启用Apache相关规则:

[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
bantime = 600

10. 定期备份与监控

  • 备份配置与数据:定期备份Apache配置文件和网站数据,使用tar命令示例:
    sudo tar -czvf /backup/apache2_backup_$(date +%Y%m%d).tar.gz /etc/apache2 /var/www/html
    
  • 监控日志:使用logwatchtail命令实时查看日志,及时发现异常:
    sudo apt install logwatch -y
    sudo logwatch --service apache2 --output mail  # 通过邮件发送日志摘要
    sudo tail -f /var/log/apache2/access.log /var/log/apache2/error.log
    

通过以上步骤,可显著提升Ubuntu上Apache2服务器的安全性,防范常见攻击(如DDoS、SQL注入、目录遍历等)。需定期检查和更新配置,适应新的安全威胁。

0