温馨提示×

centos下apache2安全设置

小樊
47
2025-11-05 19:38:17
栏目: 智能运维

1. 系统与Apache软件更新
定期更新CentOS系统和Apache及其依赖模块,及时修补已知安全漏洞。执行命令:sudo yum update -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. 禁用不必要的模块与服务
关闭Apache非必需模块(如mod_cgimod_status),减少攻击面。编辑/etc/httpd/conf/httpd.conf,注释或删除对应LoadModule行(例如#LoadModule cgi_module modules/mod_cgi.so)。

4. 隐藏Apache版本与敏感信息
修改Apache主配置文件(/etc/httpd/conf/httpd.conf),添加以下指令隐藏版本号和服务器签名,降低针对性攻击风险:

ServerTokens Prod
ServerSignature Off

5. 强化访问控制与权限管理

  • 限制目录列表:在/etc/httpd/conf/httpd.conf中为网站根目录(如/var/www/html)禁用自动索引,防止敏感文件泄露:
    <Directory "/var/www/html">
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
  • 设置合理权限:将网站目录所有者设为apache用户/组,权限设为755(目录)和644(文件):
    sudo chown -R apache:apache /var/www/html
    sudo find /var/www/html -type d -exec chmod 755 {} \;
    sudo find /var/www/html -type f -exec chmod 644 {} \;
    

6. 启用安全模块防护

  • mod_security:作为Web应用防火墙(WAF),拦截SQL注入、XSS等恶意请求。安装并启用:
    sudo yum install mod_security -y
    
    创建配置文件/etc/httpd/conf.d/security2.conf,添加基础规则:
    SecRuleEngine On
    SecRequestBodyAccess On
    SecAuditLog /var/log/httpd/security_audit.log
    
  • mod_evasive:防御DDoS攻击和暴力破解,限制同一IP的请求频率。安装并配置:
    sudo yum install mod_evasive -y
    
    编辑/etc/httpd/conf.d/evasive.conf,设置阈值:
    <IfModule mod_evasive20.c>
        DOSHashTableSize 3097
        DOSPageCount 2
        DOSSiteCount 50
        DOSPageInterval 1
        DOSSiteInterval 1
        DOSBlockingPeriod 10
    </IfModule>
    

7. 配置SSL/TLS加密通信
使用certbot获取Let’s Encrypt免费SSL证书,启用HTTPS。操作流程:

sudo yum install certbot python2-certbot-apache -y
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com

证书自动配置后,Apache会自动重定向HTTP请求至HTTPS,确保数据传输安全。

8. 日志监控与审计
启用Apache详细日志记录,定期分析异常行为。在/etc/httpd/conf/httpd.conf中确认以下配置:

ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined

使用tail -f /var/log/httpd/access_log实时监控访问日志,或通过logwatch工具生成每日报告。

9. SELinux配置(若启用)
若SELinux处于Enforcing模式,需调整策略允许Apache访问必要资源。常见操作:

  • 允许Apache访问日志目录:
    sudo setsebool -P httpd_can_write_log 1
    
  • 允许Apache通过网络连接数据库(如MySQL):
    sudo setsebool -P httpd_can_network_connect_db 1
    
  • 更改网站目录的安全上下文:
    sudo chcon -Rt httpd_sys_content_t /var/www/html
    

10. 其他高级防护措施

  • 使用Fail2ban:监控Apache日志(如error_log),自动封禁多次尝试失败的IP地址。安装并配置:
    sudo yum install fail2ban -y
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban
    
    创建/etc/fail2ban/jail.local,添加Apache防护规则:
    [apache]
    enabled = true
    port = http,https
    filter = apache-auth
    logpath = /var/log/httpd/error_log
    maxretry = 3
    bantime = 600
    
  • 配置HTTP安全头:通过mod_headers模块添加安全响应头,防范XSS、点击劫持等攻击。编辑/etc/httpd/conf/httpd.conf,添加:
    <IfModule mod_headers.c>
        Header set X-XSS-Protection "1; mode=block"
        Header always append X-Frame-Options SAMEORIGIN
        Header set X-Content-Type-Options nosniff
    </IfModule>
    

0