Apache 是众多 CentOS 管理员首选的 Web 服务软件,但若缺乏防护、配置不当,极易成为攻击者的突破口。以下这套加固清单,源自多个生产环境长期实践的底线操作,每一条都值得认真执行。
系统与软件更新
无论安装了多少安全模块,底层系统存在漏洞时,一切防护都形同虚设。定期执行sudo yum update,将 Apache 及其依赖模块一并升级,这是最基础但也最容易被忽视的一步。该命令会同步处理内核、库文件以及 Apache 自身的安全补丁。sudo yum update关闭不必要的模块和服务
默认安装的 Apache 有时会启用许多用不上的模块,而每个模块都可能成为攻击面。编辑/etc/httpd/conf/httpd.conf,将mod_cgi、mod_status等非必要模块注释掉或直接删除加载指令。例如:# 示例:禁用mod_cgiLoadModule cgi_module modules/mod_cgi.so 核心原则:仅开启真正需要的模块,其余一律禁用。
SSL/TLS 加密必须到位
如今仍使用纯 HTTP 传输敏感内容的站点已十分少见。安装mod_ssl并配置 HTTPS,可使用自签名证书或商业证书(生产环境建议使用 Let's Encrypt 或正规 CA)。生成密钥和证书的命令如下:sudo yum install mod_ssl sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/pki/tls/private/server.key \ -out /etc/pki/tls/certs/server.crt然后在虚拟主机配置中启用 SSL:
SSLEngine on SSLCertificateFile /etc/pki/tls/certs/server.crt SSLCertificateKeyFile /etc/pki/tls/private/server.key这一措施不仅能加密传输,还能有效防范中间人攻击。
防火墙仅放行所需端口
使用 firewalld 只允许 HTTP(80)和 HTTPS(443)进入服务器,其他端口全部拒绝。执行:sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload如果使用了其他端口(如 8080),记得单独放行。
隐藏服务器版本号
攻击者常根据 Apache 版本号寻找已知漏洞。在/etc/httpd/conf/httpd.conf或/etc/httpd/conf.d/security.conf中加入:ServerTokens Prod ServerSignature Off这样即使请求一个不存在的页面,响应头也不会泄露 Apache 的具体版本。
目录访问权限与索引控制
默认的/var/www/html目录需要严格限制。在配置文件中添加或修改:Options -Indexes +FollowSymLinks AllowOverride None Require all granted -Indexes表示禁用目录列表显示,防止攻击者浏览站点目录结构。同时建议检查每个开放目录的.htaccess权限设置,该关闭的关闭,该限制的严格限制。启用安全模块:mod_security 和 mod_evasive
这两个模块是 Apache 安全防护的“左右护法”。mod_security 作为 Web 应用防火墙,能拦截 SQL 注入、XSS 等常见攻击;mod_evasive 则专门应对 DDoS 和暴力破解。安装配置并不复杂,网上有许多现成的规则集可直接使用。用户与认证安全
这一点与 Apache 本身关系不大,但却是系统级防护的关键。必须设置强密码并定期更换;同时禁用 root 远程登录,日常操作通过普通用户配合sudo完成。即使 Apache 被攻破,攻击者也无法直接获取 root 权限。日志记录与审计
没有日志就难以事后追溯。确保 Apache 开启了详细的错误日志和访问日志:ErrorLog /var/log/httpd/error_log CustomLog /var/log/httpd/access_log combined建议定期(例如每天)查看日志,发现异常 IP 或请求模式立即处理。可使用 logwatch 或类似工具实现自动化分析。
高级防护手段
除上述常规操作外,还可进一步强化:- Fail2ban:配合日志监控,当某个 IP 在短时间内多次触发错误(如 404、401、SSH 爆破),自动将其加入防火墙黑名单。
- 安全 HTTP 头:在配置中添加
X-XSS-Protection、Content-Security-Policy、Strict-Transport-Security等头部,提升浏览器端的安全级别。
这十项措施谈不上多么高深,但能覆盖绝大多数常见攻击场景。最后需要强调:安全配置并非一劳永逸。定期审查配置、关注 Apache 和 CentOS 的安全公告、及时应用补丁,这才是长期维护中真正的节奏。
