centos

Apache2在CentOS上的安全设置

小樊
39
2025-10-11 03:10:21
栏目: 智能运维

1. 系统与软件更新
定期更新CentOS系统和Apache2及其模块,修补已知安全漏洞。执行sudo yum update -y命令更新所有软件包,确保Apache运行最新稳定版本。

2. 防火墙配置
使用firewalld限制对Apache的访问,仅开放必要端口(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

此操作可阻止非法IP访问Apache服务。

3. SELinux设置
若SELinux处于Enforcing模式(默认),需配置策略允许Apache访问必要资源。常见命令:

sudo setsebool -P httpd_can_network_connect 1  # 允许Apache发起网络连接(如数据库访问)
sudo setsebool -P httpd_can_sendmail 1       # 允许Apache发送邮件
sudo chcon -Rt httpd_sys_content_t /var/www/html  # 设置网站目录安全上下文

避免因SELinux策略过严导致Apache无法正常运行。

4. 禁用不必要模块
通过注释或删除/etc/httpd/conf/httpd.conf中不需要的模块加载指令,减少攻击面。常见需禁用的模块:

# LoadModule cgi_module modules/mod_cgi.so      # 禁用CGI(若无需动态脚本)
# LoadModule status_module modules/mod_status.so # 禁用状态页面(避免信息泄露)
# LoadModule info_module modules/mod_info.so    # 禁用信息模块(避免服务器详情暴露)

仅保留mod_rewrite(URL重写)、mod_ssl(HTTPS)、mod_security(安全防护)等必要模块。

5. 启用安全模块
安装并配置mod_security(Web应用防火墙)和mod_evasive(防DDoS/暴力破解):

sudo yum install mod_security mod_evasive -y

6. 配置SSL/TLS加密
使用mod_ssl模块启用HTTPS,保护数据传输安全。步骤如下:

7. 隐藏敏感信息
修改Apache主配置文件(/etc/httpd/conf/httpd.conf),隐藏版本号和服务器信息,减少被针对性攻击的风险:

ServerTokens Prod    # 仅返回"Apache",不显示版本号
ServerSignature Off  # 错误页不显示服务器版本和操作系统信息

此外,禁用目录列表(/etc/httpd/conf/httpd.conf):

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

避免攻击者通过目录列表获取敏感文件(如config.phpbackup.sql)。

8. 访问控制与权限管理

9. 日志监控与审计
配置Apache日志记录,定期分析异常行为。默认日志路径:

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined  # 使用combined格式记录IP、时间、请求方法等详细信息

使用tail -f /var/log/httpd/error_log实时监控错误日志,或通过fail2ban等工具自动封禁恶意IP。

10. 强化用户与认证安全

0
看了该问题的人还看了