1 安全策略
1.1 安全目录
.htaccess做目录安全保护的,欲读取这保护的目录需要先键入正确用户帐号与密码。这样可做为专门管理网页存放的目录或做为会员区等。
AllowOverride All
LoadModule rewrite_module modules/mod_rewrite.so
在自动要认证的目录下建立. htaccess文本(windows中用记事本另存为建立)
1.1.1 .htaccess配置:
(.htaccess文件可以相当于当前目录的httpd.conf配置,设置时尤其注意.htaccess文件的访问权限,避免被有心人恶意修改,后果不堪设想)
AuthName HIHIHI指的是要求你输入用户名和密码时的提示信息
AuthType Basic表示需要的认证类型
AuthUserFile c:\ss指的是保存用户名和密码的文件位置(.htpasswd),在这个例子中指的是.htpasswd文件,位置和我们的.htaccess文件相同
Require valid-user指定只有.htpasswd文件包含的合法用户才能访问。
1.1.2 .htpasswd配置
用户名:密码
aaa:aaa
不一定在.htaccess文件下配置,也可以在httpd.conf(主配置)下进行配置,这样可以提高apache工作效率,否则客户端访问Web是Apache都会在每一个目录下寻找.htaccess文件,会降低Apache效率,而且.htaccess被有心人修改了就危险了
1.2 错误页面
ErrorDocument 500 "The server made a boo boo."
ErrorDocument 404 /missing.html
ErrorDocument 404 "/cgi-bin/missing_handler.pl"
ErrorDocument 402 http://www.js.com/subscription_info.html
2 安全隐患
2.1 目录泄露
<Directory "/usr/local/apache/htdocs">
Options -Indexes FollowSymLinks
AllowOverrride None
Order allow,deny
Allow from all
</Directory>
在Indexes前加-或去掉
2.2 符号连接追踪
<Directory "/usr/local/apache/htdocs">
Options Indexes -FollowSymLinks
AllowOverrride None
Order allow,deny
Allow from all
</Directory>
在FollowSymLinks前加-或去掉
2.3 Listen指令具体化
httpd.conf包含一个"Listen 80”指令。应将其改变为指定邦定的IP,如果在多IP的环境下尤其注意
2.4 版本泄露
在httpd.conf中添加:
ServerTokens ProductOnly
ServerSignature Off
2.5 运行权限
Apache在windows中的默认运行权限是系统权限,若黑客找到漏洞,就可以将整个服务控制,所以必须将Apache运行权限降到最低,这样可以避免发生安全事故
2.6 清除httpd.conf中默认的注释
在这400行中,只有一小部分是实际的Apache指令,其余的仅是帮助用户如何恰当地在httpd.conf中放置指令的注释。根据笔者的经验,这些注释有时起负面作用,甚至将危险的指令留存于文件中。笔者在所管理的许多 Apache服务器上将httpd.conf文件复制为其它的文件,如httpd.conf.orig等,然后完全清除多余的注释。文件变得更加容易阅读,从而更好地解决了潜在的安全问题或者错误地配置文件。
2.7 欺骗攻击者
修改版本名:
修改系统名:
2.8 apache解析漏洞:
<FilesMatch ".(php.|php3.)">
Order Allow,Deny
Deny from all
</FilesMatch>
2.9 apache设置上传目录无执行权限
关闭路径/www/home/upload的php解析:
<Directory “/www/home/upload”>
<Files ~ “.php”>
Order allow,deny
Deny from all
</Files>
</Directory>
2.10 apache限制目录
php_admin_value open_basedir /var/www
2.11 http 请求方法安全
OPTIONS 方法可以检测出当前资源可以请求的方法,关闭该方法的配置:
<Location />
<Limit OPTIONS>
Deny from all
</Limit>
</Location>
2.12 不允许访问指定扩展名
<Files ~”\..inc$”>
Order allow,deny
Deny from all
</Files>
2.13 禁止访问某些指定目录
<Directory ~“^/var/www/(.+/)*[0-9]{3}”>
Order allow,deny
Deny from all
</Directory>
2.14 通过文件匹配进行禁止
<FilesMatch \.(? i: gif| jpe? g| png)$>
Order allow,deny
Deny from all
</FilesMatch>
2.15 禁止针对URL相对路径的访问
<Location /dir/ >
Order allow,deny
Deny from all
</Location>
3 其他安全配置
3.1 Options
Options参数代表的意思
ALL用户可在此目录中做任何事
ExecCGI允许在此目录中执行CGI script
FollowSymLinksSever可利用symbolic link链接到不在此目录中的档案或目录
IndexesSever可以产生此目录中的档案列表
Includes提供SSI的功能
IncludesNOEXEC可使用SSI功能,但取消#exec与#include 的CGI 功能
MultiViews允许经由交谈而取得不同的文件,例如可由浏览器要求传送法文版的网页`
None安全不允许存取此目录
SymLinkslfOwnerMatch允许存取symbolic links链接的目录,但仅限于该目录的拥有人
3.2 AllowOverride
AllowOverride None表示不要读取.htaccess文档
AllowOverride AuthConfig允许做基本的用户名和口令验证
AllowOverride Allall表示以.htaccess的内容为准,改变原来的访问权限
3.3 Location
#<Location /server-status> ←<Location>與<Directory>类似,但是是用來限制URL
#SetHandler server-status
#order deny,allow
#deny from all
#allow from .your_domain.com
#</Location>
#<Location /server-info> ←此区块可显示出服务程序的设定,必须有加入mod_info.c模块才有作用
#SetHandler server-info
#order deny.allow
#deny from all
#allow from .your_domain.com
#</Location>
#<Location /cgi-bin/phf*> ←此区块是因为Apache以前版本的bug,有些人会用来攻击
#deny from all 系统,启用此区块可将其导向到ErrorDocument指定的网页。
#ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
#</Location>
3.4 from
allow from all ←允許所有使用者存取
# allow from flag.com.tw ←只允許來自於flag.com.tw domain存取,但要先"deny from all"才能拒絕其它地方連進來
# deny from 203.74.205 ←拒绝来自于203.74.205
3.5 减少CGI和SSI风险
减少SSI脚本风险,如果用exec等SSI命令运行外部程序,也会存在类似CGI脚本风险,除了内部调试程序时,应使用
option命令禁止其使用:
Option IncludesNOEXEC
若要使用CGI或SSI可以使用suEXEC进行配置