Apache Web 服务器强化和安全指南

已发表: 2015-02-14

保护和强化 Apache HTTP Server 的实用指南。

Web 服务器是基于 Web 的应用程序的关键部分。 Apache Web 服务器通常位于网络边缘,因此它成为最容易受到攻击的服务之一。

具有默认配置会提供许多敏感信息,这可能有助于黑客为攻击应用程序做准备。 大多数 Web 应用程序攻击是通过 XSS、信息泄漏、会话管理和 SQL 注入攻击,这些攻击是由于编程代码薄弱和未能清理 Web 应用程序基础设施造成的。

Positive Technologies 的一项有趣研究表明,52% 的扫描应用程序存在高漏洞。

漏洞报告

在本文中,我将讨论一些在 Linux 平台上保护 Apache HTTP 服务器的最佳实践。

以下是在 Apache 2.4.x 版本上测试的。

  • 这假设您已经在 UNIX 平台上安装了 Apache。 如果没有,您可以阅读安装指南。
  • 在本指南中,我将 Apache 安装目录 /opt/apache 称为 $Web_Server。
  • 建议您在进行任何修改之前备份现有的配置文件。

观众

这是为中间件管理员、应用程序支持、系统分析师或任何工作或渴望学习强化和安全指南的人设计的。

必须具备 Apache Web 服务器和 UNIX 命令的公平知识。

笔记

您需要一些工具来检查 HTTP 标头以进行某些实施验证。 有两种方法可以做到这一点。

  1. 使用浏览器内置的开发人员工具检查 HTTP 标头。 通常,它位于网络选项卡下
  2. 使用在线 HTTP 响应标头检查工具

删除服务器版本横幅

我想说这是首先要考虑的事情之一,因为您不想公开您正在使用的 Web 服务器版本。 暴露版本意味着您正在帮助黑客加快侦察过程。

默认配置将公开 Apache 版本和操作系统类型,如下所示。

阿帕奇服务器横幅

  • 转到 $Web_Server/conf 文件夹
  • 使用 vi 编辑器修改 httpd.conf
  • 添加以下指令并保存 httpd.conf
 ServerTokens Prod ServerSignature Off
  • 重启阿帕奇

ServerSignature将从 Apache 生成的页面中删除版本信息。

ServerTokens将 Header 更改为仅生产,即 Apache

正如您在下面看到的,版本和操作系统信息消失了。

apache-server-banner-masked

禁用目录浏览器列表

在浏览器中禁用目录列表,因此访问者看不到根目录或子目录下的所有文件和文件夹。

让我们测试一下它在默认设置下的样子。

  • 转到 $Web_Server/htdocs 目录
  • 在其中创建一个文件夹和几个文件
# mkdir test # touch hi # touch hello

现在,让我们尝试通过 http://localhost/test 访问 Apache

apache-目录列表

正如您所看到的,它揭示了您拥有的所有文件/文件夹,我相信您不想暴露它。

  • 转到 $Web_Server/conf 目录
  • 使用 vi 打开httpd.conf
  • 搜索 Directory 并将 Options 指令更改为 None 或 –Indexes
 <Directory /opt/apache/htdocs> Options -Indexes </Directory>

(或者)

 <Directory /opt/apache/htdocs> Options None </Directory>
  • 重启阿帕奇

注意:如果您的环境中有多个 Directory 指令,您应该考虑对所有指令都执行相同的操作。

现在,让我们尝试通过 http://localhost/test 访问 Apache

禁用目录列表

如您所见,它显示了一个禁止的错误,而不是显示测试文件夹列表。

埃塔格

它允许远程攻击者通过 Etag 标头获取敏感信息,例如 inode 编号、多部分 MIME 边界和子进程。

为了防止这个漏洞,让我们如下实现它。 这是修复 PCI 合规性所必需的。

  • 转到 $Web_Server/conf 目录
  • 添加以下指令并保存 httpd.conf
 FileETag None
  • 重启阿帕奇

从非特权帐户运行 Apache

默认安装作为没人或守护进程运行。 为 Apache 使用单独的非特权用户是好的。

这里的想法是保护其他运行的服务以防出现任何安全漏洞。

  • 创建一个名为 apache 的用户和组
# groupadd apache # useradd –G apache apache
  • 将 apache 安装目录所有权更改为新创建的非特权用户
# chown –R apache:apache /opt/apache
  • 转到 $Web_Server/conf
  • 使用 vi 修改 httpd.conf
  • 搜索用户和组指令并更改为非特权帐户 apache
 User apache Group apache
  • 保存 httpd.conf
  • 重启阿帕奇

grep 用于运行 http 进程并确保它与 apache 用户一起运行

# ps –ef |grep http

您应该看到一个进程正在以 root 身份运行。 那是因为 Apache 正在侦听端口 80,它必须以 root 身份启动。

保护二进制和配置目录权限

默认情况下,二进制和配置的权限是 755,这意味着服务器上的任何用户都可以查看配置。 您可以禁止其他用户进入 conf 和 bin 文件夹。

  • 转到 $Web_Server 目录
  • 更改 bin 和 conf 文件夹的权限
# chmod –R 750 bin conf

系统设置保护

在默认安装中,用户可以使用 .htaccess 覆盖 apache 配置。 如果您想阻止用户更改您的 apache 服务器设置,您可以将AllowOverride添加到None ,如下所示。

这必须在根级别完成。

  • 转到 $Web_Server/conf 目录
  • 使用 vi 打开 httpd.conf
  • 在根级别搜索目录
<Directory /> Options -Indexes AllowOverride None </Directory>
  • 保存 httpd.conf
  • 重启阿帕奇

HTTP 请求方法

HTTP 1.1 协议支持许多可能不需要的请求方法,其中一些具有潜在风险。

通常,您可能需要在 Web 应用程序中使用 GET、HEAD、POST 请求方法,这些方法可以在相应的 Directory 指令中进行配置。

默认配置支持 HTTP 1.1 协议中的 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 方法。

  • 转到 $Web_Server/conf 目录
  • 使用 vi 打开 httpd.conf
  • 搜索目录并添加以下内容
<LimitExcept GET POST HEAD> deny from all </LimitExcept>
  • 重启阿帕奇

禁用跟踪 HTTP 请求

默认情况下,Apache Web 服务器中启用了 Trace 方法。

启用此功能可能允许跨站点跟踪攻击,并可能为黑客提供窃取 cookie 信息的选项。 让我们看看它在默认配置中的样子。

  • 做一个带有监听端口的 telnet Web 服务器 IP
  • 发出 TRACE 请求,如下所示
#telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 200 OK Date: Sat, 31 Aug 2013 02:13:24 GMT Server: Apache Transfer-Encoding: chunked Content-Type: message/http 20 TRACE / HTTP/1.1 Host: test 0 Connection closed by foreign host. #

正如您在上面的 TRACE 请求中看到的,它已经响应了我的查询。 让我们禁用它并测试它。

  • 转到 $Web_Server/conf 目录
  • 添加以下指令并保存 httpd.conf
 TraceEnable off
  • 重启阿帕奇

使用监听端口执行 telnet Web 服务器 IP 并发出TRACE请求,如下所示

#telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 405 Method Not Allowed Date: Sat, 31 Aug 2013 02:18:27 GMT Server: Apache Allow:Content-Length: 223Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>405 Method Not Allowed</title> </head><body> <h1>Method Not Allowed</h1> <p>The requested method TRACE is not allowed for the URL /.</p> </body></html> Connection closed by foreign host. #

正如您在上面的 TRACE 请求中看到的那样,它使用 HTTP 405 Method Not Allowed 阻止了我的请求。

现在,此 Web 服务器不允许 TRACE 请求并有助于阻止跨站点跟踪攻击。

使用 HttpOnly 和 Secure 标志设置 cookie

您可以使用 cookie 中的 HttpOnly 和 Secure 标志来缓解大多数常见的跨站点脚本攻击。 如果没有 HttpOnly 和 Secure,就有可能窃取或操纵 Web 应用程序会话和 cookie,而且很危险。

  • 确保在您的 httpd.conf 中启用了 mod_headers.so
  • 转到 $Web_Server/conf 目录
  • 添加以下指令并保存 httpd.conf
 Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
  • 重启阿帕奇

点击劫持攻击

Clickjacking 是一个众所周知的 Web 应用程序漏洞。

  • 确保在您的 httpd.conf 中启用了 mod_headers.so
  • 转到 $Web_Server/conf 目录
  • 添加以下指令并保存 httpd.conf
 Header always append X-Frame-Options SAMEORIGIN
  • 重启阿帕奇

apache-x-frame-options

X-Frame-Options 还支持我在此处解释的另外两个选项。

服务器端包含

服务器端包含 (SSI) 有增加服务器负载的风险。 如果您已共享环境和高流量 Web 应用程序,则应考虑通过在 Options 指令中添加 Includes 来禁用 SSI。

SSI 攻击允许通过在 HTML 页面中注入脚本或远程执行代码来利用 Web 应用程序。

  • 转到 $Web_Server/conf 目录
  • 使用 vi 打开 httpd.conf
  • 搜索目录并在选项指令中添加包含
<Directory /opt/apache/htdocs> Options –Indexes -Includes Order allow,denyAllow from all </Directory>
  • 重启阿帕奇

注意:如果您的环境中有多个 Directory 指令,您应该考虑对所有指令都执行相同的操作。

X-XSS 保护

跨站点脚本 (XSS) 保护可以在许多浏览器中绕过。 如果 Web 应用程序被用户禁用,您可以应用此保护。 Facebook、Twitter、谷歌等大多数大型网络公司都在使用它。

  • 转到 $Web_Server/conf 目录
  • 使用 vi 打开 httpd.conf 并添加以下 Header 指令
Header set X-XSS-Protection "1; mode=block"
  • 重启阿帕奇

如您所见,XSS-Protection 是在响应标头中注入的。

apache-xss

禁用 HTTP 1.0 协议

当我们谈论安全时,我们应该尽可能地保护。 那么为什么我们使用旧的 HTTP 版本的协议,让我们也禁用它们呢?

HTTP 1.0 存在与会话劫持相关的安全漏洞。 我们可以通过使用 mod_rewrite 模块来禁用它。

  • 确保在 httpd.conf 文件中加载 mod_rewrite 模块
  • 启用 RewriteEngine 指令如下并添加重写条件以仅允许 HTTP 1.1
 RewriteEngine On RewriteCond %{THE_REQUEST} !HTTP/1.1$ RewriteRule .* - [F]

超时值配置

默认情况下,Apache 超时值为 300 秒,这可能是 Slow Loris 攻击和 DoS 的受害者。 为了缓解这种情况,您可以将超时值降低到大约 60 秒。

  • 转到 $Web_Server/conf 目录
  • 使用 vi 打开 httpd.conf
  • 在 httpd.conf 中添加以下内容
Timeout 60

SSL

拥有 SSL 是您添加到 Web 应用程序中的额外安全层。 但是,默认 SSL 配置会导致某些漏洞,您应该考虑调整这些配置。

SSL 密钥

破解 SSL 密钥很难,但并非不可能。 这只是计算能力和时间的问题。

您可能知道,使用 2009 年的 PC 破解大约 73 天,您可以对 512 位密钥进行逆向工程。

因此,您拥有的密钥长度越长,破解 SSL 密钥就越复杂。 大多数大型网络公司都使用 2048 位密钥,如下所示,我们为什么不呢?

  • Outlook.com
  • 微软网站
  • Live.com
  • Skype.com
  • 苹果网
  • 雅虎网
  • 必应网
  • Hotmail.com
  • 推特网

您可以使用 OpenSSL 生成 2048 位的 CSR,如下所示。

 openssl req -out geekflare.csr -newkey rsa:2048 -nodes -keyout geekflare.key

它将生成一个 CSR,您需要将其发送给证书颁发机构以对其进行签名。 收到签名证书文件后,您可以将它们添加到 httpd-ssl.conf 文件中

SSLCertificateFile #Certificate signed by authority SSLCertificateChainFile #Certificate signer given by authority SSLCertificateKeyFile #Key file which you generated above
  • 重新启动 Apache Web 服务器并尝试使用 https 访问 URL

SSL 密码

SSL Cipher 是一种加密算法,用作 Internet 上两台计算机之间的密钥。 数据加密是将纯文本转换为秘密密码的过程。

它基于您的 Web 服务器 SSL 密码配置,将进行数据加密。 所以配置 SSL Cipher 很重要,它更强大且不易受攻击。

  • 转到 $Web_Server/conf/extra 文件夹
  • 如下修改 httpd-ssl.conf 中的 SSLCipherSuite 指令以仅接受更高的加密算法
SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!RC4
  • 保存配置文件并重启apache服务器

注意:如果您的 SSL 审计报告中有许多弱密码,您可以快速拒绝它们添加! 一开始。

禁用 SSL v2 和 v3

SSL v2 和 v3 存在许多安全漏洞,如果您正在努力进行渗透测试或 PCI 合规性,那么您应该关闭安全发现以禁用 SSL v2/v3。

任何 SSL v2/v3 通信都可能容易受到允许数据篡改或泄露的中间人攻击。

让我们实现 apache Web 服务器以仅接受最新的 TLS 并拒绝 SSL v2/v3 连接请求。

  • 转到 $Web_Server/conf/extra 文件夹
  • 如下修改 httpd-ssl.conf 中的 SSLProtocol 指令以仅接受 TLS 1.2+
 SSLProtocol –ALL +TLSv1.2

完成 SSL 配置后,最好使用在线 SSL/TLS 证书工具测试您的 Web 应用程序以查找任何配置错误。

国防部安全

Mod Security 是一个开源的 Web 应用程序防火墙,您可以将其与 Apache 一起使用。

它作为一个模块出现,您必须编译和安装。 如果您买不起商业 Web 应用程序防火墙,这将是一个很好的选择。

为了提供通用 Web 应用程序保护,核心规则使用以下技术:

  • HTTP 保护 – 检测违反 HTTP 协议和本地定义的使用策略
  • 实时黑名单查找 – 利用第 3 方 IP 信誉
  • 基于 Web 的恶意软件检测 - 通过检查 Google 安全浏览 API 来识别恶意 Web 内容。
  • HTTP 拒绝服务保护——防御 HTTP 泛洪和慢速 HTTP DoS 攻击。
  • Common Web Attacks Protection – 检测常见的 Web 应用程序安全攻击
  • 自动化检测——检测机器人、爬虫、扫描仪和其他恶意表面活动
  • 与文件上传的 AV 扫描集成 - 识别通过 Web 应用程序上传的恶意文件。
  • 跟踪敏感数据——跟踪信用卡使用情况并阻止泄漏。
  • 特洛伊木马保护 - 检测对特洛伊木马的访问。
  • 应用程序缺陷的识别——应用程序错误配置的警报。
  • 错误检测和隐藏——伪装服务器发送的错误消息。

下载安装

必须在您希望将 Mod Security 与 Apache 一起使用的服务器上安装以下先决条件。 如果其中任何一个不存在,则 Mod Security 编译将失败。 您可以在 Linux 或 Centos 上使用 yum install 来安装这些软件包。

  • apache 2.x 或更高版本
  • libpcre 包
  • libxml2 包
  • liblua 包
  • libcurl 包
  • libapr 和 libapr-util 包
  • 与 Apache Web 服务器捆绑在一起的 mod_unique_id 模块

现在,让我们从这里下载 Mod Security 2.7.5 的最新稳定版本

  • 将下载的文件传输到 /opt/apache
  • 提取 modsecurity-apache_2.7.5.tar.gz
 # gunzip –c modsecurity-apache_2.7.5.tar.gz | tar xvf –
  • 转到提取的文件夹 modsecurity-apache_2.7.5
 # cd modsecurity-apache_2.7.5
  • 运行配置脚本,包括现有 Apache 的 apxs 路径
# ./configure –with-apxs=/opt/apache/bin/apxs
  • 使用 make 脚本编译安装
# make # make install
  • 安装完成后,您会在 /opt/apache 下的模块文件夹中看到 mod_security2.so

现在到此结束,您已经在现有的 Apache Web 服务器中安装了 Mod Security 模块。

配置

要在 Apache 中使用 Mod 安全功能,我们必须在 httpd.conf 中加载 mod 安全模块。 mod_unique_id 模块是 Mod Security 的先决条件。

该模块为每个请求提供一个具有唯一标识符的环境变量,由 Mod Security 跟踪和使用。

  • 在 httpd.conf 中添加以下行以加载 Mod Security 模块并保存配置文件
LoadModule unique_id_module modules/mod_unique_id.so LoadModule security2_module modules/mod_security2.so
  • 重启 apache 网络服务器

国防部安全现已安装!

接下来您要做的是安装 Mod Security 核心规则以充分利用其功能。

最新的核心规则可以从以下链接下载,该链接是免费的。 https://github.com/SpiderLabs/owasp-modsecurity-crs/zipball/master

  • 将下载的核心规则 zip 复制到 /opt/apache/conf 文件夹
  • 解压核心规则文件
  • 您可能希望将文件夹重命名为简短易记的名称。 在本例中,我将重命名为 crs。
  • 转到 crs 文件夹并将 modsecurity_crs10_setup.conf.example 重命名为 modsecurity_crs10_setup.conf

现在,让我们启用这些规则以使其与 Apache Web 服务器一起使用。

  • 在 httpd.conf 中添加以下内容
<IfModule security2_module> Include conf/crs/modsecurity_crs_10_setup.confInclude conf/crs/base_rules/*.conf </IfModule>

在上述配置中,我们加载了 Mod Security 主配置文件 modsecurity_crs_10_setup.conf 和 Mod Security Core Rules 提供的基本规则 base_rules/*.conf 来保护 Web 应用程序。

  • 重启 apache 网络服务器

您已成功使用 Apache 配置 Mod Security!

做得好。 现在,Apache Web 服务器受到 Mod Security Web 应用程序防火墙的保护。

入门

让我们从 Mod Security 中的一些关键配置开始,以强化和保护 Web 应用程序。

在本节中,我们将在 /opt/apache/conf/crs/modsecurity_crs_10_setup.conf 中进行所有配置修改。

出于示例目的,我们将在本节中将 /opt/apache/conf/crs/modsecurity_crs_10_setup.conf 称为 setup.conf。

了解免费提供的 OWASP 规则是什么很重要。 OWASP 提供了两种类型的规则。

基本规则——这些规则经过大量测试,可能误报率较低。

实验规则——这些规则是出于实验目的,您可能会有很高的误报。 在生产环境中使用它们之前,在 UAT 中进行配置、测试和实现非常重要。

可选规则——这些可选规则可能不适用于整个环境。 根据您的要求,您可以使用它们。

如果您正在寻找 CSRF、用户跟踪、会话劫持等保护,那么您可以考虑使用可选规则。 从 OWASP 下载页面提取下载的 crs zip 文件后,我们有基本规则、可选规则和实验规则。

这些规则配置文件位于 crs/base_rules、crs/optional_rules 和 crs/experimental_rules 文件夹中。 让我们熟悉一些基本规则。

  • modsecurity_crs_20_protocol_violations.conf:此规则用于防止协议漏洞,例如响应拆分、请求走私、使用不允许的协议 (HTTP 1.0)。
  • modsecurity_crs_21_protocol_anomalies.conf:这是为了防止请求头中缺少 Host、Accept、User-Agent。
  • modsecurity_crs_23_request_limits.conf:此规则依赖于特定应用程序,如请求大小、上传大小、参数长度等。
  • modsecurity_crs_30_http_policy.conf:这是配置和保护允许或不允许的方法,如 CONNECT、TRACE、PUT、DELETE 等。
  • modsecurity_crs_35_bad_robots.conf:检测恶意机器人
  • modsecurity_crs_40_generic_attacks.conf:这是为了防止操作系统命令注入、远程文件包含等。
  • modsecurity_crs_41_sql_injection_attacks.conf:该规则保护SQL和盲SQL注入请求。
  • modsecurity_crs_41_xss_attacks.conf:防止跨站点脚本请求。
  • modsecurity_crs_42_tight_security.conf:目录遍历检测和保护。
  • modsecurity_crs_45_trojans.conf:该规则检测通用文件管理输出,HTTP后门页面上传,已知签名。
  • modsecurity_crs_47_common_exceptions.conf:这被用作一种异常机制,以消除可能遇到的常见误报,如 Apache 内部虚拟连接、SSL pinger 等。

日志记录

日志记录是首先要配置的内容之一,因此您可以为 Mod Security 正在执行的操作创建日志。 有两种类型的日志记录可用; 调试和审计日志。

调试日志:这是从错误日志中复制 Apache 错误、警告和通知消息。

审计日志:这是编写由 Mod Security 规则标记的事务日志 Mod Security 使您可以灵活地配置审计、调试或两者都记录。

默认情况下,配置将写入两个日志。 但是,您可以根据自己的要求进行更改。 日志由SecDefaultAction指令控制。 让我们看看 setup.conf 中的默认日志配置

SecDefaultAction “phase:1,deny,log”

记录调试、审计日志——使用“log” 只记录审计日志——使用“nolog,auditlog” 只记录调试日志——使用“log,noauditlog” 您可以指定要存储的审计日志位置,由 SecAuditLog 控制指示。

让我们通过添加如下所示将审计日志写入/opt/apache/logs/modsec_audit.log。

  • 在 setup.conf 中添加 SecAuditLog 指令并重新启动 Apache Web Server
 SecAuditLog /opt/apache/logs/modsec_audit.log
  • 重新启动后,您应该会看到生成了 modsec_audit.log

启用规则引擎

默认情况下,引擎规则是关闭的,这意味着如果您不启用规则引擎,您就没有利用 Mod Security 的所有优势。

规则引擎的启用或禁用由SecRuleEngine指令控制。

  • 在 setup.conf 中添加 SecRuleEngine 指令并重新启动 Apache Web Server
 SecRuleEngine On

SecRuleEngine 有三个值:

  • On – 启用规则引擎
  • Off – 禁用规则引擎
  • DetectionOnly – 启用规则引擎,但从不执行任何操作,如阻止、拒绝、丢弃、允许、代理或重定向

一旦规则引擎开启 - Mod Security 就可以使用一些常见的攻击类型进行保护。

常见攻击类型保护

现在 Web 服务器已准备好使用 XSS、SQL 注入、协议违规等常见攻击类型进行保护,因为我们已经安装了核心规则并打开了规则引擎。 让我们测试其中的几个。

XSS 攻击

  • 打开 Firefox 并访问您的应用程序并将 <script> 标签放在末尾或 URL
  • 监控 apache/logs 文件夹中的 modsec_audit.log

您会注意到 Mod Security 阻止请求,因为它包含 <script> 标签,这是 XSS 攻击的根源。

目录遍历攻击:- 目录遍历攻击可以通过利用此漏洞并访问系统相关文件来造成大量破坏。 例如 - /etc/passwd、.htaccess 等。

  • 打开 Firefox 并通过目录遍历访问您的应用程序
  • 监控 apache/logs 文件夹中的 modsec_audit.log
 http://localhost/?../.../boot
  • 您会注意到 Mod Security 阻止请求,因为它包含目录遍历。

更改服务器横幅

在本指南的前面部分,您学习了如何删除 Apache 和 OS 类型、ServerTokens 指令的版本帮助。

让我们先一步,保持服务器名称随心所欲如何? 可以使用 Mod Security 中的SecServerSignature指令。 你看这很有趣。

注意:要使用 Mod Security 从标头操作服务器横幅,您必须在 Apache Web 服务器的 httpd.conf 中将 ServerTokesn 设置为 Full。

  • 在 setup.conf 中使用所需的服务器名称添加 SecServerSignature 指令并重新启动 Apache Web 服务器
SecServerSignature YourServerName

前任:

 [/opt/apache/conf/crs] #grep SecServer modsecurity_crs_10_setup.conf SecServerSignature geekflare.com [/opt/apache/conf/crs] #

常规配置

让我们看看一些常规配置作为最佳实践。

配置监听

当您在单个服务器上有多个接口和 IP 时,建议将 Listen 指令配置为绝对 IP 和端口号。

当您将 apache 配置保留为使用某个端口号侦听所有 IP 时,可能会在将 HTTP 请求转发到其他 Web 服务器时产生问题。 这在共享环境中很常见。

  • 在 httpd.conf 中使用绝对 IP 和端口配置 Listen 指令,如下所示的示例
Listen 10.10.10.1:80

访问记录

在您的 Web 服务器中正确配置访问日志非常重要。 要在日志中捕获的一些重要参数是服务请求所花费的时间,即会话 ID。

默认情况下,Apache 未配置为捕获这些数据。 您必须按如下方式手动配置它们。

  • 在访问日志中捕获处理请求和 SESSION ID 所花费的时间
  • 在 LogFormat 指令下的 httpd.conf 中添加 %T & %sessionID
 LogFormat "%h %l %u %t "%{sessionID}C" "%r" %>s %b %T" common

您可以参考 http://httpd.apache.org/docs/2.2/mod/mod_log_config.html 以获得 Apache Web 服务器中 LogFormat 指令支持的参数的完整列表。

禁用加载不需要的模块

如果您已经编译并安装了所有模块,那么您很可能会在 Apache 中加载许多模块,而这可能不是必需的。

最佳实践是在您的 Web 应用程序中使用所需的模块配置 Apache。 以下模块存在安全问题,您可能有兴趣在 Apache Web Server 的 httpd.conf 中禁用。

WebDAV(基于 Web 的分布式创作和版本控制)该模块允许远程客户端操作服务器上的文件并受到各种拒绝服务攻击。 在 httpd.conf 中禁用评论

#LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so #Include conf/extra/httpd-dav.conf

信息模块 mod_info 模块可以在加载此模块后使用 .htaccess 泄漏敏感信息。 在 httpd.conf 中禁用评论

#LoadModule info_module modules/mod_info.so

参考:如果没有以下链接的指导,这是不可能的:

  • http://httpd.apache.org/docs/2.4/
  • http://www.modsecurity.org/documentation/
  • https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project

这就是您可以用来保护您的 Apache Web 服务器的一些最佳实践。

如果您想在 Apache 中实现自定义错误页面,请检查此链接。

如果您不熟悉 Apache HTTP,那么我建议您参加 Apache HTTP 管理课程。