Apache 生产环境安全加固配置方法

AI 概述
Apache默认配置偏兼容,存在安全隐患。生产加固需多维度处理:关闭版本泄露、列表,删除默认示例页面;禁用无用模块,加固代理与监控页面;更新TLS配置、开启HSTS并将HTTP重定向HTTPS;添加安全响应头,限制请求与IP,阻断敏感文件访问;规范日志。同时需持续打补丁、扫描CVE,不同系统配置文件路径不同。
目录
文章目录隐藏
  1. 一、信息泄露防护
  2. 二、模块安全
  3. 三、TLS 配置
  4. 四、访问控制
  5. 五、安全响应头
  6. 六、文件系统安全
  7. 七、日志记录

Apache 生产环境安全加固配置方法

Apache HTTP Server 自 1995 年运行至今,承载了全球约四分之一的网站,在企业基础设施中应用极为广泛。它的成熟既是优势也是隐患:服务器本身经过充分验证、文档完善,但默认配置更多考虑的是向后兼容,而非现代安全需求。

生产环境加固 Apache,核心在于系统性地关闭那些在 2005 年合理、如今却成为负担的默认设置。配置加固只是一半工作,还应定期扫描 Web 服务器版本和模块对应的已知 CVE——底层二进制未打补丁,配置文件再完美也无济于事。

注意:

Debian/Ubuntu 系在 /etc/apache2/apache2.conf 中配置,红帽/CentOS 系在 /etc/httpd/conf/httpd.conf 中配置;

PHP 配置不在 Apache 文件里,需改 php.ini(Debian/Ubuntu 通常为 /etc/php/版本/apache2/php.ini,红帽/CentOS 通常为 /etc/php.ini)

一、信息泄露防护

1.1 关闭服务器签名

Apache 默认会在 HTTP 响应头和错误页面中暴露版本号:

Server: Apache/2.4.57 (Ubuntu) OpenSSL/3.0.10

这等于直接告诉攻击者该用哪些漏洞。关闭方法:

ServerTokens Prod
ServerSignature Off

ServerTokens Prod 将 Server 头缩减为仅“Apache”,ServerSignature Off 从错误页面移除版本信息。

1.2 关闭目录列表

目录中没有索引文件时,Apache 默认会列出文件清单,暴露目录结构、文件名及敏感文件:

<Directory /var/www/html>
    Options -Indexes
</Directory>

1.3 删除默认内容

Apache 自带的欢迎页、文档和示例配置在生产服务器上应全部删除。它们没有实际价值,反而会泄露 Apache 版本和模块信息。

1.4 隐藏 PHP 及其他头部信息

若 Apache 后端运行 PHP,默认会添加 X-Powered-By 头:

X-Powered-By: PHP/8.2.1

在 php.ini 中关闭:

expose_php = Off

同时检查并关闭 Apache 后端任何应用框架的技术披露头。

二、模块安全

2.1 禁用不必要的模块

Apache 默认加载大量模块,每个模块都会增加攻击面。不用的模块应禁用:

# 查看已启用模块
apachectl -M

# 禁用模块
a2dismod autoindex
a2dismod status
a2dismod cgi
a2dismod userdir

除非确有必要,以下模块通常应禁用:

  • mod_autoindex(目录列表);
  • mod_status(服务器状态页);
  • mod_cgi(CGI 脚本执行);
  • mod_userdir(用户主目录);
  • mod_info(服务器信息页);
  • mod_include(服务端包含)。

2.2 加固 mod_status

如需用mod_status做监控,必须限制访问:

<Location /server-status>
    SetHandler server-status
    Require ip 10.0.0.0/8
    Require ip 127.0.0.1
</Location>

绝不能将 mod_status 暴露到互联网,它会泄露服务器性能、配置和已连接客户端的详细信息。

2.3 加固 mod_proxy

Apache 作为反向代理时,需谨慎配置 mod_proxy:

ProxyRequests Off

<Proxy *>
    Require all denied
</Proxy>

<Location /api>
    ProxyPass http://backend:8080/api
    ProxyPassReverse http://backend:8080/api
    Require all granted
</Location>

ProxyRequests Off关闭正向代理功能,防止被用于匿名浏览或 SSRF 攻击。

三、TLS 配置

3.1 使用现代协议

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder on

3.2 启用 HSTS

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"

3.3 启用 OCSP Stapling

SSLUseStapling on
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

3.4 HTTP 跳转 HTTPS

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

四、访问控制

4.1 IP 限制

管理接口和内部服务应做 IP 限制:

<Location /admin>
    Require ip 10.0.0.0/8
</Location>

4.2 请求限制

限制请求体大小,防止拒绝服务攻击:

LimitRequestBody 1048576
LimitRequestFields 50
LimitRequestFieldSize 8190
LimitRequestLine 4094

4.3 超时配置

合理设置超时,防范慢速攻击:

Timeout 60
KeepAliveTimeout 5
MaxKeepAliveRequests 100

五、安全响应头

Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "DENY"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Content-Security-Policy "default-src 'self'"

六、文件系统安全

6.1 拒绝访问敏感文件

<FilesMatch "(^\.ht|\.git|\.env|\.bak|\.old|\.sql)">
    Require all denied
</FilesMatch>

6.2 限制文档根目录

<Directory />
    Require all denied
    Options None
    AllowOverride None
</Directory>

<Directory /var/www/html>
    Require all granted
    Options -Indexes -FollowSymLinks
    AllowOverride None
</Directory>

原则是先拒绝所有访问,再显式放行文档根目录。禁用 FollowSymLinks 可防止符号链接攻击。

6.3 禁用 .htaccess

若不需要按目录覆盖配置,应关闭.htaccess处理:

AllowOverride None

.htaccess文件在每次请求该目录时都会被处理,禁用后可提升性能,并防止能向文档根目录写入文件的攻击者篡改 Apache 配置。

七、日志记录

启用全面日志:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %{SSL_PROTOCOL}x" combined_ssl
CustomLog /var/log/apache2/access.log combined_ssl
ErrorLog /var/log/apache2/error.log
LogLevel warn

日志中应包含 TLS 协议版本和请求耗时,便于安全分析。同时将日志转发至 SIEM 平台,用于告警和调查。

以上关于Apache 生产环境安全加固配置方法的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

24

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » Apache 生产环境安全加固配置方法

发表回复