温馨提示×

如何提升CentOS Apache的安全性

小樊
36
2025-10-15 06:56:06
栏目: 智能运维

1. 定期更新系统与Apache软件包
保持系统和Apache的最新状态是修复已知安全漏洞的关键。使用sudo yum update -y命令更新所有系统组件和Apache,确保运行的是最新稳定版本,减少被已知攻击利用的风险。

2. 配置防火墙限制访问
使用firewalld(CentOS默认防火墙工具)仅允许必要的HTTP(80端口)和HTTPS(443端口)流量,阻止非法IP访问。执行以下命令:

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

如需进一步限制,可添加IP白名单(如仅允许公司IP访问):

sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
sudo firewall-cmd --reload

3. 禁用不必要的Apache模块
Apache默认加载的模块可能包含未使用的功能,增加攻击面。通过编辑/etc/httpd/conf.modules.d/00-base.conf(或其他模块配置文件),注释或删除不需要的模块(如mod_cgimod_php,若未使用PHP),仅保留必需模块(如mod_ssl用于HTTPS)。修改后重启Apache:sudo systemctl restart httpd

4. 隐藏Apache版本与敏感信息
修改Apache配置文件(/etc/httpd/conf/httpd.conf),设置以下参数:

ServerTokens Prod  # 隐藏Apache版本号,仅显示“Apache”
ServerSignature Off  # 关闭错误页面中的服务器版本信息

这可防止攻击者通过版本信息查找针对性漏洞。

5. 强化SSL/TLS加密通信
启用HTTPS加密客户端与服务器之间的数据传输,避免明文泄露。首先安装mod_ssl模块:sudo yum install mod_ssl -y,然后生成自签名证书(生产环境建议使用CA签发证书):

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/apache-selfsigned.key -out /etc/pki/tls/certs/apache-selfsigned.crt

编辑/etc/httpd/conf.d/ssl.conf,配置SSL参数:

<VirtualHost *:443>
    DocumentRoot "/var/www/html"
    ServerName yourdomain.com
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/apache-selfsigned.crt
    SSLCertificateKeyFile /etc/pki/tls/private/apache-selfsigned.key
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1  # 禁用旧版不安全协议
    SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256  # 使用强加密套件
</VirtualHost>

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

6. 限制访问权限
通过配置文件或.htaccess文件限制对敏感目录(如网站根目录/var/www/html)的访问:

<Directory "/var/www/html">
    Options FollowSymLinks  # 禁用目录浏览
    AllowOverride None  # 禁用.htaccess覆盖(提升性能)
    Require ip 192.168.1.0/24  # 仅允许指定IP段访问
</Directory>

若需允许普通用户访问,可将Require ip改为Require all granted,但仍建议结合防火墙限制。

7. 启用SELinux保护
SELinux(Security-Enhanced Linux)可限制Apache进程的权限,防止越权访问。确保SELinux处于Enforcing模式(getenforce命令查看),并配置相关布尔值:

sudo setsebool -P httpd_can_network_connect 1  # 允许Apache访问网络(如数据库)
sudo setsebool -P httpd_can_sendmail 1  # 允许Apache发送邮件

若网站目录权限不足,可使用chcon命令修改SELinux上下文:

sudo chcon -Rt httpd_sys_content_t /var/www/html  # 设置目录为HTTP内容类型

8. 监控与日志审计
启用详细的日志记录,定期检查日志以发现异常行为。Apache默认日志路径为/var/log/httpd/error_log(错误日志)和/var/log/httpd/access_log(访问日志)。可通过tail -f /var/log/httpd/error_log实时监控错误日志,或使用工具(如fail2ban)自动封禁频繁攻击的IP。

9. 防止目录浏览与信息泄露
禁用目录浏览功能,避免攻击者查看网站目录结构。在Apache配置文件中设置:

<Directory "/var/www/html">
    Options -Indexes  # 禁用目录索引
</Directory>

若需允许特定目录浏览,可单独配置(如AllowOverride None确保安全)。

10. 使用安全模块增强防护
安装并配置mod_security模块(Web应用防火墙),防止SQL注入、跨站脚本(XSS)等常见攻击。执行以下命令安装:

sudo yum install mod_security -y

编辑/etc/httpd/conf.d/mod_security.conf,启用模块并配置规则(可根据需求调整规则集):

<IfModule mod_security2.c>
    SecRuleEngine On  # 开启规则引擎
    Include conf/modsecurity.d/*.conf  # 加载默认规则
</IfModule>

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

0