Apache安全配置
你知道Apache是如何配置的嗎?本文為您講述Apache的安全配置,希望對您有所幫助。
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>
#p#
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進行配置
3.6 使用ssl加固Apache
link