当然,这只针对于apache httpd server。不过其中的一些方面,同样适用于nginx、lighttpd、cherokee、hiawatha等非主流服务器系统.
1.首先确保已经打好了全部已知安全补丁....
2.隐藏掉服务器的版本等敏感信息.
ServerSignature Off
ServerTokens Prod
3.确保httpd是以它自己的用户和组在运行.
User apache
Group apache
4.确保只有网站根目录下的文件才可以通过web被访问.
<Directory />
Order Deny,Allow
Deny from all
Options None #这个可以被局部参数覆盖
AllowOverride None #这个可以被局部参数覆盖
</Directory>
5.关闭目录结构列表
Options -Indexes
6.关闭服务器端的配置文件包括
Options -Includes
7.关闭CGI执行本地脚本(真的很危险)
Options -ExecCGI
8.关闭软链
Options -FollowSymLinks
9.如果可以的话,建议关闭Options 的所有功能.
Options None
或者综上四点所述
Options -ExecCGI -FollowSymLinks -Indexes
10.关闭.htaccess 支持
AllowOverride None
如果必须启用的话可以考虑改名,并限制访问
AccessFileName .httpdoverride
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
11.确保httpd已载入mod_security模块,并运行.
LoadModule mod_security mod_security.so
下载地址:http://www.modsecurity.org/
12.去除掉不需要的模块.
可以使用 grep LoadModule httpd.conf 查看所有模块.
下面是一些通常不需要的而普遍被启用的模块:
mod_imap, mod_include, mod_info, mod_userdir, mod_status, mod_cgi, mod_autoindex.
13.确保只有root拥有对httpd配置文件和程序文件的读写权限.
chown -R root:root /path/to/apache
chmod -R o-rwx /path/to/apache
14.减少请求超时时间间隔
Timeout 45 #默认是300s
15.限制请求体大小,以防超大文件
LimitRequestBody 1048576
同样作用的配置还有:
LimitRequestFields, LimitRequestFieldSize 和 LimitRequestLine
16.限制XML请求体的大小
LimitXMLRequestBody 10485760
当然,这只适用于apache httpd 集成了SVN的服务器.
17.限制并发请求
MaxClients ??? #根据各自服务器内存适量设置
相关的配置项:
MaxSpareServers, MaxRequestsPerChild
ThreadsPerChild, ServerLimit,MaxSpareThreads 适用于apache2.x
18.限制IP访问
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
19.调节保持存活时间
MaxKeepAliveRequests ??? #根据各自服务器内存适量设置
KeepAliveTimeout ??? #根据各自服务器内存适量设置
20.确保httpd运行在chroot 环境
SecChrootDir /chroot/apache
这样,apache httpd 就运行在虚拟的系统里,就算被hack了,也不会影响到真实系统.
___END___
这篇文章是我最近一不小心看到的,虽然是发表于2005年,有点过时了.囧rz
不过觉得很有帮助.特别是网络管理员来讲.
原文地址:20 ways to Secure your Apache Configuration
1.首先确保已经打好了全部已知安全补丁....
2.隐藏掉服务器的版本等敏感信息.
ServerSignature Off
ServerTokens Prod
3.确保httpd是以它自己的用户和组在运行.
User apache
Group apache
4.确保只有网站根目录下的文件才可以通过web被访问.
<Directory />
Order Deny,Allow
Deny from all
Options None #这个可以被局部参数覆盖
AllowOverride None #这个可以被局部参数覆盖
</Directory>
5.关闭目录结构列表
Options -Indexes
6.关闭服务器端的配置文件包括
Options -Includes
7.关闭CGI执行本地脚本(真的很危险)
Options -ExecCGI
8.关闭软链
Options -FollowSymLinks
9.如果可以的话,建议关闭Options 的所有功能.
Options None
或者综上四点所述
Options -ExecCGI -FollowSymLinks -Indexes
10.关闭.htaccess 支持
AllowOverride None
如果必须启用的话可以考虑改名,并限制访问
AccessFileName .httpdoverride
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
11.确保httpd已载入mod_security模块,并运行.
LoadModule mod_security mod_security.so
下载地址:http://www.modsecurity.org/
12.去除掉不需要的模块.
可以使用 grep LoadModule httpd.conf 查看所有模块.
下面是一些通常不需要的而普遍被启用的模块:
mod_imap, mod_include, mod_info, mod_userdir, mod_status, mod_cgi, mod_autoindex.
13.确保只有root拥有对httpd配置文件和程序文件的读写权限.
chown -R root:root /path/to/apache
chmod -R o-rwx /path/to/apache
14.减少请求超时时间间隔
Timeout 45 #默认是300s
15.限制请求体大小,以防超大文件
LimitRequestBody 1048576
同样作用的配置还有:
LimitRequestFields, LimitRequestFieldSize 和 LimitRequestLine
16.限制XML请求体的大小
LimitXMLRequestBody 10485760
当然,这只适用于apache httpd 集成了SVN的服务器.
17.限制并发请求
MaxClients ??? #根据各自服务器内存适量设置
相关的配置项:
MaxSpareServers, MaxRequestsPerChild
ThreadsPerChild, ServerLimit,MaxSpareThreads 适用于apache2.x
18.限制IP访问
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
19.调节保持存活时间
MaxKeepAliveRequests ??? #根据各自服务器内存适量设置
KeepAliveTimeout ??? #根据各自服务器内存适量设置
20.确保httpd运行在chroot 环境
SecChrootDir /chroot/apache
这样,apache httpd 就运行在虚拟的系统里,就算被hack了,也不会影响到真实系统.
___END___
这篇文章是我最近一不小心看到的,虽然是发表于2005年,有点过时了.囧rz
不过觉得很有帮助.特别是网络管理员来讲.
原文地址:20 ways to Secure your Apache Configuration