We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Apache账号不能用作常规系统登录帐户,应该分配nologin shell确保帐号不能登录主机,该账号对应系统程序/服务/进程不受影响
nologin shell
加固方法: 修改apache账号使用/sbin/nologin或/dev/null等无效shell,界面提示信息:This account is currently not available # chsh -s /sbin/nologin apache
/sbin/nologin
/dev/null
This account is currently not available
# chsh -s /sbin/nologin apache
Apache用户帐号不应该有修改密码权限,应通过ROOT权限账户对Apache用户帐号进行锁定
加固方法: 使用ROOT权限账户passwd命令锁定apache账号 # passwd -l apache
passwd
# passwd -l apache
设置Apache子进程用户 加固方法: Unix系统: 如果没有设置用户和组,则新建用户,并在Apache配置文件中指定
groupadd Apache
useradd Apache –g Apache
Windows系统:
service.msc
LogLevel配置用于设置错误日志的级别。ErrorLog配置用于设置错误日志文件的名称/位置。日志级别值为debug、info、notice、warn、error、crit、alert、emerg
LogLevel
ErrorLog
debug
info
notice
warn
error
crit
alert
emerg
加固方法: a.在Apache配置中添加或修改LogLevel的值,建议核心(core)模块设置为info或debug,其他模块设置为notice或更低 b.通过ErrorLog配置设置错误日志文件的名称/位置
ApacheSSLProtocol配置指定允许的SSL和TLS协议。由于SSLv2和SSLv3协议存在涉及缺陷且易受信息泄露的攻击,故因全部禁用,只启用TLS协议
SSLProtocol
POODLE信息泄露漏洞/弱SSL加密算法/重协商漏洞
加固方法: 在Apache配置文件中添加或修改SSLProtocol。建议禁用SSLv2、SSLv3、TLSv1.0协议,配置为SSLProtocol All -SSLv2 -SSLv3或配置为允许TLSv1.1、TLSv1.2协议,SSLProtocol TLSv1.1 TLSv1.2
SSLv2
SSLv3
TLSv1.0
SSLProtocol All -SSLv2 -SSLv3
TLSv1.1
TLSv1.2
SSLProtocol TLSv1.1 TLSv1.2
启用SSLInsecureRenegotiation指令会使服务器容易遭受中间人重新协商攻击(CVE-2009-3555)
SSLInsecureRenegotiation
加固方法: 在Apache配置文件中查找SSLInsecureRenegotiation指令。如果存在,将该值修改为off SSLInsecureRenegotiation off
SSLInsecureRenegotiation off
KeepAlive指令决定当处理完用户发起的 HTTP 请求后是否立即关闭 TCP 连接。若 KeepAlive 设置为 On,则用户完成一次访问后,不会立即断开连接,如果还有请求,那么会继续在这次 TCP 连接中完成,而不需要重复建立新的 TCP 连接和关闭TCP 连接。这样可以提高用户访问速度,避免每次请求都要新建一个连接而加重服务器的负担。
KeepAlive
On
加固方法: Apache配置文件httpd.conf中查找conf/extra/httpd-default.conf
httpd.conf
conf/extra/httpd-default.conf
配置文件conf/extra/httpd-default.conf中,将KeepAlive设置为On,以启用KeepAlive连接
当KeepAlive启用On,MaxKeepAliveRequests指令限制每个连接允许的请求数量。如果设置为0,则不限制请求的数量。
MaxKeepAliveRequests
0
加固方法:
KeepAliveTimeout指令指定在关闭持久连接(KeepAlive)前等待下一个请求的秒数。KeepAliveTimeout的值应视网站流量及服务器配置而定
KeepAliveTimeout
TimeOut指令控制Apache HTTP服务器等待输入/输出调用完成的最长时间
加固方法: 配置文件conf/extra/httpd-default.conf中调整TimeOut的值
TimeOut
攻击者可利用Apache版本号及其他敏感信息进行信息搜集进而实施有针对性的下一步攻击
加固方法: Apache配置文件httpd.conf中添加:
ServerSignature Off ServerTokens Prod
在Apache配置文件httpd.conf中注释:
# Fancy directory listings #Include conf/extra/httpd-autoindex.conf
/web为网站根目录,将 Options Indexes FollowSymLinks 中的 Indexes 去掉,可禁止 Apache 显示目录结构。Indexes 的作用就是当该目录下没有 index.html 文件时,显示目录结构。
/web
Options Indexes FollowSymLinks
Indexes
Order定义了allow和deny的生效顺序,deny排在后面代表先处理allow from定义的允许访问的地址,其余地址均deny。Allow from 可限制接入IP地址(白名单):Allow from 192.168.0.0/24
Order
allow
deny
allow from
<Directory "/web"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
设置 Apache 的默认页面,编辑httpd.conf 配置文件, 其中index.html、index.php、index.htm、l.php 即为默认页面,可根据情况改为其它文件。
index.html
index.php
index.htm
l.php
<IfModule dir_module> DirectoryIndex index.html index.php index.htm l.php </IfModule>
1.TRACE方法可回显服务器收到的请求,主要用于测试或诊断,攻击者可通过该机制进行信息搜集 2.攻击者可通过TRACE方法进行跨站脚本攻击 3.在站点启用了HttpOnly头标记和禁止脚本读取Cookie信息的情况下,攻击者仍可通过TRACE方法绕过该限制并读取到Cookie信息
TRACE
HttpOnly
Cookie
加固方法: 1.在Apache配置文件httpd.conf中添加或修改:TraceEnable设置为off
TraceEnable
off
TraceEnable off
2.在Apache配置文件vhosts-conf中设置
vhosts-conf
RewriteEngine On RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F]
RewriteEngine On RewriteCond %{REQUEST_METHOD} ^(OPTIONS) RewriteRule .* - [F]
RewriteEngine On RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS) RewriteRule .* - [F]
<VirtualHost *:80> DocumentRoot "C:\www" ServerName www.example.com ServerAlias example.com <Directory "C:\www"> Options FollowSymLinks ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS) RewriteRule .* - [F] </Directory> </VirtualHost>
Apache AllowOverride为ALL则网站根目录下所有项目即可读取到.htaccess文件(分布式配置文件),该文件提供了针对目录改变配置的方法, 即在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。AllowOverride为None则.htaccess文件无法被读取,其配置无法生效。
AllowOverride
ALL
.htaccess
None
1.AllowOverride即允许覆盖,当AllowOverride ALL,则.htaccess配置指令生效并覆盖掉原有Apache配置指令 2.AllowOverride ALL弊端:Apache在每个目录中查找.htaccess文件会导致性能的下降。通过.htaccess文件修改apache的配置,若由于配置不当会导致不必要的安全问题
加固方法: Apache配置文件中的中应设置:AllowOverride None
AllowOverride None
Web服务器常包含不需要或不适合线上生产环境所使用的默认CGI内容。示例程序/CGI内容的主要作用是展示Web服务器的功能。Apache安装中常见的默认CGI内容是脚本test-cgi。该脚本将打印请求者的CGI环境变量,其中包括服务器配置细节。
test-cgi
加固方法: a.通过Script、ScriptAlias、ScriptAliasMatch或ScriptInterpreterSource 指令找到在Apache配置中启用的cgi-bin文件和目录
Script
ScriptAlias
ScriptAliasMatch
ScriptInterpreterSource
cgi-bin
b.删除cgi-bin目录中的printenv默认CGI
printenv
c.删除默认安装的Apache手册文件
如果服务器上不需要运行CGI/SSI程序,建议禁用CGI/SSI(Server Side Includes) 加固方法: 禁用CGI 修改Apache配置文件httpd.conf,把相关配置和模块都注释掉
#LoadModule cgi_module modules/mod_cgi.so #ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" #<Directory "/var/www/cgi-bin"> # AllowOverride None # Options None # Order allow,deny # Allow from all #</Directory>
禁用SSI 修改Apache配置文件httpd.conf,把相关模块注释掉,在“Include”前面添加减号
#LoadModule include_module modules/mod_include.so <Directory "/var/www/html"> Options Indexes FollowSymLinks -Includes AllowOverride None Order allow,deny allow from all </Directory>
配置特定的错误页面可防止不必要的信息泄露
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Apache用户账号使用无效Shell
Apache账号不能用作常规系统登录帐户,应该分配
nologin shell
确保帐号不能登录主机,该账号对应系统程序/服务/进程不受影响加固方法:
修改apache账号使用
/sbin/nologin
或/dev/null
等无效shell,界面提示信息:This account is currently not available
# chsh -s /sbin/nologin apache
锁定Apache用户账号
Apache用户帐号不应该有修改密码权限,应通过ROOT权限账户对Apache用户帐号进行锁定
加固方法:
使用ROOT权限账户
passwd
命令锁定apache账号# passwd -l apache
子进程用户设置
设置Apache子进程用户
加固方法:
Unix系统:
如果没有设置用户和组,则新建用户,并在Apache配置文件中指定
groupadd Apache
useradd Apache –g Apache
User Apache
Group Apache
Windows系统:
service.msc
中找到Apache服务,右键选择属性,设置登录身份为Apache用户配置错误日志
LogLevel
配置用于设置错误日志的级别。ErrorLog
配置用于设置错误日志文件的名称/位置。日志级别值为debug
、info
、notice
、warn
、error
、crit
、alert
、emerg
加固方法:
a.在Apache配置中添加或修改
LogLevel
的值,建议核心(core)模块设置为info
或debug
,其他模块设置为notice
或更低b.通过
ErrorLog
配置设置错误日志文件的名称/位置禁用存在设计缺陷的TLS/SSL协议
Apache
SSLProtocol
配置指定允许的SSL和TLS协议。由于SSLv2和SSLv3协议存在涉及缺陷且易受信息泄露的攻击,故因全部禁用,只启用TLS协议加固方法:
在Apache配置文件中添加或修改
SSLProtocol
。建议禁用SSLv2
、SSLv3
、TLSv1.0
协议,配置为SSLProtocol All -SSLv2 -SSLv3
或配置为允许TLSv1.1
、TLSv1.2
协议,SSLProtocol TLSv1.1 TLSv1.2
限制不安全的SSL Renegotiation
启用
SSLInsecureRenegotiation
指令会使服务器容易遭受中间人重新协商攻击(CVE-2009-3555)加固方法:
在Apache配置文件中查找SSLInsecureRenegotiation指令。如果存在,将该值修改为off
SSLInsecureRenegotiation off
KeepAlive应设置为On
KeepAlive指令决定当处理完用户发起的 HTTP 请求后是否立即关闭 TCP 连接。若
KeepAlive
设置为On
,则用户完成一次访问后,不会立即断开连接,如果还有请求,那么会继续在这次 TCP 连接中完成,而不需要重复建立新的 TCP 连接和关闭TCP 连接。这样可以提高用户访问速度,避免每次请求都要新建一个连接而加重服务器的负担。加固方法:
Apache配置文件
httpd.conf
中查找conf/extra/httpd-default.conf
配置文件
conf/extra/httpd-default.conf
中,将KeepAlive设置为On,以启用KeepAlive连接合理设置MaxKeepAliveRequests的值
当
KeepAlive
启用On
,MaxKeepAliveRequests
指令限制每个连接允许的请求数量。如果设置为0
,则不限制请求的数量。加固方法:
合理设置KeepAliveTimeout的值
KeepAliveTimeout指令指定在关闭持久连接(KeepAlive)前等待下一个请求的秒数。
KeepAliveTimeout
的值应视网站流量及服务器配置而定加固方法:
合理设置TimeOut的值
TimeOut指令控制Apache HTTP服务器等待输入/输出调用完成的最长时间
加固方法:
配置文件
conf/extra/httpd-default.conf
中调整TimeOut
的值隐藏Apache版本号及其他敏感信息
攻击者可利用Apache版本号及其他敏感信息进行信息搜集进而实施有针对性的下一步攻击
加固方法:
Apache配置文件
httpd.conf
中添加:防止敏感/默认/缺省内容信息泄露:图标/索引/目录结构
加固方法:
图标
在Apache配置文件
httpd.conf
中注释:目录
禁用HTTP TRACE/OPTIONS方法
1.
TRACE
方法可回显服务器收到的请求,主要用于测试或诊断,攻击者可通过该机制进行信息搜集2.攻击者可通过
TRACE
方法进行跨站脚本攻击3.在站点启用了
HttpOnly
头标记和禁止脚本读取Cookie
信息的情况下,攻击者仍可通过TRACE
方法绕过该限制并读取到Cookie信息加固方法:
1.在Apache配置文件
httpd.conf
中添加或修改:TraceEnable
设置为off
TraceEnable off
2.在Apache配置文件
vhosts-conf
中设置单独禁用Trace方法
单独禁用Options方法
同时禁用Trace方法和Options方法
配置文件
vhosts-conf
如下限制所有目录覆盖
Apache
AllowOverride
为ALL
则网站根目录下所有项目即可读取到.htaccess
文件(分布式配置文件),该文件提供了针对目录改变配置的方法, 即在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。AllowOverride
为None
则.htaccess
文件无法被读取,其配置无法生效。加固方法:
Apache配置文件中的中应设置:
AllowOverride None
删除默认/缺省CGI内容/manual手册文件
Web服务器常包含不需要或不适合线上生产环境所使用的默认CGI内容。示例程序/CGI内容的主要作用是展示Web服务器的功能。Apache安装中常见的默认CGI内容是脚本
test-cgi
。该脚本将打印请求者的CGI环境变量,其中包括服务器配置细节。加固方法:
a.通过
Script
、ScriptAlias
、ScriptAliasMatch
或ScriptInterpreterSource
指令找到在Apache配置中启用的cgi-bin
文件和目录b.删除
cgi-bin
目录中的printenv
默认CGIc.删除默认安装的Apache手册文件
禁用CGI/禁用SSI
如果服务器上不需要运行CGI/SSI程序,建议禁用CGI/SSI(Server Side Includes)
加固方法:
禁用CGI
修改Apache配置文件httpd.conf,把相关配置和模块都注释掉
禁用SSI
修改Apache配置文件
httpd.conf
,把相关模块注释掉,在“Include”前面添加减号自定义Apache返回的错误页面
配置特定的错误页面可防止不必要的信息泄露
加固方法:
The text was updated successfully, but these errors were encountered: