温馨提示×

Ubuntu Apache2安全配置指南

小樊
52
2025-09-23 17:29:27
栏目: 智能运维

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_phpautoindex):

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):

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

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

添加以下内容:

<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>

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

修改以下内容(根据服务器性能调整):

<IfModule mod_evasive20.c>
    DOSHashTableSize    3097    # 哈希表大小(建议3097-4097DOSPageCount        2       # 单IP单页面1秒内超过2次请求则触发
    DOSSiteCount        50      # 单IP全站1秒内超过50次请求则触发
    DOSPageInterval     1       # 页面请求检测间隔(秒)
    DOSSiteInterval     1       # 全站请求检测间隔(秒)
    DOSBlockingPeriod   10      # 触发后封锁IP时间(秒)
</IfModule>

9. 设置访问控制

限制敏感目录的访问权限(如/admin):

# 编辑虚拟主机配置文件(如000-default.conf)
sudo nano /etc/apache2/sites-available/000-default.conf

添加以下内容(针对/var/www/html/admin目录):

<Directory /var/www/html/admin>
    AuthType Basic            # 基本认证
    AuthName "Restricted Area" # 认证提示信息
    AuthUserFile /etc/apache2/.htpasswd  # 密码文件路径
    Require valid-user        # 允许认证用户访问
</Directory>

创建密码文件并添加用户:

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

0