温馨提示×

Linux Apache2安全设置有哪些

小樊
69
2025-09-19 09:24:13
栏目: 智能运维

1. 定期更新系统与Apache2软件包
保持系统和Apache2及其依赖库的最新状态,及时修补已知安全漏洞。对于Ubuntu/Debian系统,使用sudo apt update && sudo apt upgrade;对于CentOS/RHEL系统,使用sudo yum update。还可安装unattended-upgrades包自动安装安全更新。

2. 配置防火墙限制访问
使用UFW(Ubuntu)或firewalld(CentOS)限制对Apache服务的访问,仅允许必要的端口(HTTP 80、HTTPS 443)。例如,Ubuntu下启用UFW并允许Apache:sudo ufw allow 'Apache Full' && sudo ufw enable;CentOS下使用firewalld:sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --permanent --add-service=https && sudo firewall-cmd --reload

3. 禁用不必要的Apache模块
禁用不使用的模块以减少攻击面,如autoindex(目录列表)、mod_php(若使用PHP-FPM替代)、mod_rewrite(若无需URL重写)。使用命令sudo a2dismod 模块名(如sudo a2dismod autoindex),然后重启Apache:sudo systemctl restart apache2

4. 隐藏Apache版本信息与敏感细节
修改Apache配置文件(如/etc/apache2/apache2.conf/etc/httpd/conf/httpd.conf),设置ServerTokens Prod(仅显示“Apache”而非版本号)和ServerSignature Off(禁用错误页面中的服务器版本信息),防止攻击者利用版本信息针对性攻击。

5. 配置SSL/TLS加密传输
启用HTTPS加密数据传输,避免明文泄露。安装mod_ssl模块:sudo a2enmod ssl(Ubuntu)或sudo yum install mod_ssl(CentOS);生成自签名证书(或购买CA证书),编辑虚拟主机配置(如/etc/apache2/sites-available/default-ssl.conf),添加:

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>

重启Apache生效:sudo systemctl restart apache2

6. 强化目录与文件权限
限制网站目录的访问权限,避免未授权访问。设置目录权限为755(所有者可读/写/执行,其他用户仅可读/执行),文件权限为644(所有者可读/写,其他用户仅可读)。例如:

sudo chown -R www-data:www-data /var/www/html  # 假设Apache用户为www-data
sudo chmod -R 755 /var/www/html

同时在配置文件中禁用目录列表(Options -Indexes)。

7. 启用安全模块增强防护

  • mod_security:实时检测并阻止SQL注入、XSS等攻击。安装:sudo apt install libapache2-mod-security2(Ubuntu),编辑/etc/apache2/mods-available/security2.conf启用规则,然后重启Apache。
  • mod_evasive:防止暴力破解(如DDoS、暴力猜密码)。安装后配置/etc/apache2/mods-available/evasive.conf,设置请求频率限制。

8. 限制访问来源与认证

  • IP限制:通过Require指令仅允许特定IP访问敏感目录。例如:
    <Directory /var/www/html/admin>
        Require ip 192.168.1.0/24
    </Directory>
    
  • 认证保护:使用.htaccess或配置文件添加基本认证(Basic Authentication),设置强密码。例如:
    AuthType Basic
    AuthName "Restricted Area"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
    
    使用htpasswd命令创建密码文件:sudo htpasswd -c /etc/apache2/.htpasswd 用户名

9. 防止常见Web攻击

  • XSS防护:通过响应头X-XSS-Protection启用浏览器XSS过滤器:Header set X-XSS-Protection "1; mode=block"
  • MIME类型嗅探防护:禁用浏览器 MIME 类型猜测:Header set X-Content-Type-Options "nosniff"
  • SQL注入防护:使用mod_security模块的规则集(如OWASP Core Rule Set)检测并阻止SQL注入语句。

10. 日志监控与审计
启用并定期检查Apache的访问日志(/var/log/apache2/access.log)和错误日志(/var/log/apache2/error.log),使用工具(如fail2ban)自动封禁频繁失败的IP地址。安装fail2ban:sudo apt install fail2ban,配置/etc/fail2ban/jail.local针对Apache的access.log设置过滤规则。

0