温馨提示×

Ubuntu下Apache2安全设置指南

小樊
41
2025-10-06 12:07:24
栏目: 智能运维

Ubuntu下Apache2安全设置指南

1. 基础系统与软件更新

定期更新系统和Apache2相关软件包,修补已知安全漏洞。执行以下命令:
sudo apt update && sudo apt upgrade
这一步能确保服务器运行最新的安全补丁,降低被已知漏洞攻击的风险。

2. 配置防火墙(UFW)

使用UFW(Uncomplicated Firewall)限制对Apache2的访问,仅允许必要的HTTP(80端口)和HTTPS(443端口)流量:

sudo apt install ufw  # 安装UFW(若未安装)
sudo ufw allow 'Apache Full'  # 允许Apache Full(包含HTTP和HTTPS)
sudo ufw enable  # 启用防火墙

通过防火墙规则,能有效阻挡未经授权的网络访问,减少攻击面。

3. 隐藏Apache敏感信息

修改Apache配置文件,隐藏服务器版本号和操作系统信息,防止攻击者利用这些信息针对性攻击:
编辑/etc/apache2/apache2.conf,添加或修改以下指令:

ServerTokens Prod  # 仅显示“Apache”而不显示版本号
ServerSignature Off  # 关闭服务器响应中的签名信息(如版本号、服务器名)

重启Apache使配置生效:sudo systemctl restart apache2

4. 禁用不必要的Apache模块

禁用不使用的模块,减少潜在的攻击入口。首先查看已启用的模块:
apache2ctl -M
然后禁用不需要的模块(如autoindexphp7.x等,根据实际需求调整):

sudo a2dismod autoindex  # 禁用目录列表模块
sudo a2dismod php7.4  # 示例:禁用PHP模块(若未使用PHP)

禁用后重启Apache:sudo systemctl restart apache2

5. 防止目录列表泄露

禁用目录自动列表功能,避免用户直接查看网站根目录下的文件列表。编辑Apache站点配置文件(如/etc/apache2/sites-available/000-default.conf),找到<Directory /var/www/html>部分,修改为:

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

重启Apache使配置生效。

6. 启用SSL/TLS加密(HTTPS)

使用Let’s Encrypt获取免费SSL证书,配置Apache2支持HTTPS,加密客户端与服务器之间的通信:

sudo apt install certbot python3-certbot-apache  # 安装Certbot和Apache插件
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com  # 替换为你的域名

Certbot会自动修改Apache配置文件,启用HTTPS并重定向HTTP到HTTPS(可选)。验证SSL配置:访问https://yourdomain.com,确认浏览器地址栏显示锁图标。

7. 配置安全HTTP头

通过设置HTTP响应头,增强浏览器端的安全防护,防止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,然后重启Apache。

8. 使用安全模块防范攻击

mod_security(Web应用防火墙,WAF)

安装并配置mod_security,实时检测和阻止SQL注入、跨站脚本(XSS)等常见Web攻击:

sudo apt install libapache2-mod-security2  # 安装mod_security
sudo a2enmod security2  # 启用模块

编辑/etc/apache2/conf-available/security2.conf,启用OWASP Core Rule Set(CRS):

SecRuleEngine On  # 开启规则引擎
Include /etc/apache2/conf-available/crs-setup.conf  # 包含CRS配置

重启Apache:sudo systemctl restart apache2

mod_evasive(防范DoS/DDoS攻击)

安装mod_evasive,限制同一IP的频繁请求,防止DoS攻击:

sudo apt install libapache2-mod-evasive  # 安装模块

编辑/etc/apache2/mods-enabled/evasive.conf,配置规则:

<IfModule mod_evasive24.c>  # 根据模块版本调整(20或24)
    DOSHashTableSize 3097
    DOSPageCount 2  # 1秒内同一IP的页面请求超过2次则触发
    DOSSiteCount 50  # 1秒内同一IP的站点请求超过50次则触发
    DOSPageInterval 1
    DOSSiteInterval 1
    DOSBlockingPeriod 10  # 触发后封锁IP 10</IfModule>

重启Apache使配置生效。

9. 访问控制与权限管理

限制敏感目录访问

对网站敏感目录(如/admin)设置基本认证,仅允许授权用户访问:

sudo htpasswd -c /etc/apache2/.htpasswd username  # 创建密码文件(首次使用-c参数)

编辑站点配置文件,添加以下内容:

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

重启Apache。

IP白名单/黑名单

使用Require ip指令限制特定IP访问网站:

<Directory /var/www/html>
    Require ip 192.168.1.1  # 仅允许192.168.1.1访问
    # Require not ip 192.168.1.100  # 示例:禁止192.168.1.100访问
</Directory>

重启Apache。

10. 日志记录与监控

确保Apache日志配置正确,便于及时发现异常行为:
编辑/etc/apache2/apache2.conf,确认以下配置:

LogLevel warn  # 日志级别(warn及以上级别记录)
ErrorLog ${APACHE_LOG_DIR}/error.log  # 错误日志路径
CustomLog ${APACHE_LOG_DIR}/access.log combined  # 访问日志格式(combined包含IP、请求等信息)

使用logwatch工具定期分析日志:

sudo apt install logwatch  # 安装logwatch
sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf  # 备份默认配置
sudo logwatch  # 查看当日日志摘要

定期检查/var/log/apache2/error.log/var/log/apache2/access.log,关注异常请求(如大量404错误、频繁POST请求)。

11. 定期备份配置与数据

定期备份Apache配置文件和网站数据,防止数据丢失或配置损坏:

sudo tar -czvf /backup/apache2_backup_$(date +%Y%m%d).tar.gz /etc/apache2  # 备份配置文件
sudo tar -czvf /backup/www_backup_$(date +%Y%m%d).tar.gz /var/www/html  # 备份网站数据

将备份文件存储到安全位置(如外部存储设备、云存储)。

12. 其他高级加固措施

禁用Apache版本信息

编辑/etc/apache2/apache2.conf,确保ServerSignature OffServerTokens Prod已设置,彻底隐藏服务器版本信息。

使用SELinux或AppArmor

若系统支持SELinux或AppArmor,可进一步限制Apache的权限:

  • AppArmor:Ubuntu默认安装,启用Apache的AppArmor profile:
    sudo aa-enforce /etc/apparmor.d/usr.sbin.apache2  # 强制生效
    
  • SELinux:若使用CentOS/RHEL,可设置SELinux上下文:
    sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
    sudo restorecon -Rv /var/www/html
    

这些措施能有效隔离Apache进程,防止越权访问。

通过以上步骤,可显著提升Ubuntu下Apache2服务器的安全性。需定期检查和更新安全配置,应对新的威胁和漏洞。

0