温馨提示×

Apache2在CentOS上如何进行安全配置

小樊
51
2025-10-07 01:07:28
栏目: 智能运维

1. 更新系统与安装Apache
首先,确保CentOS系统和所有软件包为最新版本,修复已知漏洞:

sudo yum update -y

安装Apache2(CentOS中默认包名为httpd)及基础安全模块:

sudo yum install httpd mod_security mod_evasive -y

2. 配置防火墙限制访问
使用firewalld仅开放HTTP(80端口)和HTTPS(443端口),阻断非法流量:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

3. 调整SELinux策略
若SELinux处于Enforcing模式(默认),需配置其允许Apache访问必要资源:

  • 临时设置为Permissive模式测试(不推荐生产环境长期使用):
    sudo setenforce 0
    
  • 永久允许Apache网络连接(如数据库访问)和发送邮件:
    sudo setsebool -P httpd_can_network_connect 1
    sudo setsebool -P httpd_can_sendmail 1
    
  • 设置Web目录的SELinux上下文(确保Apache可读取):
    sudo chcon -Rt httpd_sys_content_t /var/www/html
    

4. 优化Apache基础配置
编辑主配置文件/etc/httpd/conf/httpd.conf,实施以下关键设置:

  • 隐藏版本信息:避免攻击者利用已知版本漏洞,添加:
    ServerTokens Prod
    ServerSignature Off
    
  • 禁用目录列表:防止未配置索引文件时暴露目录结构,在<Directory "/var/www/html">段中添加:
    Options -Indexes
    
  • 限制资源使用:通过LimitRequestFieldSizeLimitRequestBody限制请求头和 body 大小,防止DoS攻击(示例值需根据实际调整):
    LimitRequestFieldSize 8190
    LimitRequestBody 1048576  # 1MB
    

5. 启用安全模块强化防护

  • mod_security:Web应用防火墙(WAF),拦截SQL注入、XSS等攻击。编辑/etc/httpd/conf.d/security2.conf,开启引擎并指定日志路径:
    SecRuleEngine On
    SecRequestBodyAccess On
    SecResponseBodyAccess On
    SecAuditLog /var/log/httpd/modsec_audit.log
    
  • mod_evasive:防御暴力破解和DDoS攻击。编辑/etc/httpd/conf.d/evasive.conf,设置阈值:
    <IfModule mod_evasive20.c>
        DOSHashTableSize    3097
        DOSPageCount        2    # 1秒内同一IP访问同一页面超过2次触发
        DOSSiteCount        50   # 1秒内同一IP访问整个站点超过50次触发
        DOSPageInterval     1
        DOSSiteInterval     1
        DOSBlockingPeriod   10   # 触发后封锁10</IfModule>
    

6. 配置SSL/TLS加密通信

  • 安装SSL模块:
    sudo yum install mod_ssl -y
    
  • 使用Let’s Encrypt获取免费证书(替换yourdomain.com为实际域名):
    sudo yum install certbot python2-certbot-apache -y
    sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
    
  • 强制HTTPS重定向(可选):在虚拟主机配置或.htaccess中添加:
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
    

7. 管理文件与目录权限

  • 将Web目录所有者设为apache用户(默认),并设置合理权限:
    sudo chown -R apache:apache /var/www/html
    sudo chmod -R 755 /var/www/html
    
  • 敏感文件(如配置文件、数据库凭证)需进一步限制权限:
    sudo chmod 600 /etc/httpd/conf.d/secret.conf
    

8. 定期维护与监控

  • 重启Apache应用配置:
    sudo systemctl restart httpd
    
  • 定期更新系统和Apache:
    sudo yum update httpd mod_security mod_evasive -y
    
  • 监控日志文件(/var/log/httpd/access_log/var/log/httpd/error_log),使用工具(如fail2ban)自动封禁恶意IP。
  • 备份配置文件:
    sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
    sudo cp -r /etc/httpd/conf.d /etc/httpd/conf.d.bak
    

0