20種讓你的Apache更安全的設置(翻譯)

原文來自: http://www.petefreitag.com/item/505.cfm
一. 確定你安裝了最新的安全補丁.先把本文del.icio.us了,然後再回來看其他的。
二. 隱藏Apache的版本號,以及其他一些信息apache的默認設置公開了apache的版本號,操作系統,甚至還有已經安裝了的apache組件。黑客們會利用這些信息更方便的去攻擊你。並且,這些信息告訴了所有人:你的apache並沒有經過配置
你可以在httpd.conf文件中,加上或者修改兩條代碼,隱藏信息。
ServerSignature Off
ServerTokens Prod
ServerSignature apache生成的一些頁面底部,比如404頁面,文件列表頁面等等。
ServerTokens指向被用來設置Server的http頭回響。設置爲Prod可以讓HTTP頭回響顯示成這樣….
Server: Apache
如果是個超級偏執狂,你可以修改源代碼或者使用mod_security,來顯示比Apache更多的東西.
確定apache是運行在它之下的用戶和組之下。很多apache安裝之後他們是運行在nobody之下的。所以,每個運行在nobody之下的apache,將會被同組的郵件服務其攻擊。chown apache.apache /var/…
User apache
Group apache
確認根目錄的東西是關閉的我們不惜王apache有修改根目錄的全縣。 所以,建議你所有的網站都放在一個目錄下面(我們稱爲/web,你可以象這樣設置:

Order Deny,Allow
Deny from all
Options None
AllowOverride None
Order Allow,Deny
Allow from all


QUOTE:
由於我們設置了Options None 和AllowOverride None,這將關閉options權限和覆蓋權限,你現在必須爲每個文件夾加上explicitly,爲他們恢復Option和Override權限。

關閉文件夾瀏覽你可以在httpd.conf的Directory標籤中間加上一個Options指令
。 設置Options爲None或者-Indexes
Options -Indexes
關閉服務器的side includes也要添加一條Optoions指令到Directory 標籤中, 使Options 爲 None或者-Includes
Options -Includes
關掉CGI如果你不用CGI,那就在Directory標籤中加上一條Options指令關掉他。 使Options爲None或者-ExecCGI
Options -ExecCGI
不要讓apache進入象徵性links中(我理解的是#)也是在directory中修改Options 爲 -FollowSymLinks
Options -FollowSymLinks
關閉多選項關閉所有選項
Options none
關閉幾個選項
Options -ExecCGI -FollowSymLinks -Indexes
關閉對 .htaccess 文件的支持。也在Directory標籤中,但是AllowOverride指令
AllowOverride none
如果你需要Overrides,需要確認他們不能被下載。改變他們的文件名,而不是原來的.htaccess, 比如可以改爲.httpdoveride, 或者屏蔽所有的.ht開頭的文件。
AccessFileName .httpdoverride
Order allow,deny
Deny from all
Satisfy All

運行 mod_securitymod_security 是一個非常好用的Apache組件.
通過mod_security你可以達到以下效果:

簡單的過濾
正則表達式過濾
URL 編碼驗證
Unicode編碼驗證
覈查
Null值攻擊預防
上傳大小限制
服務器身份掩藏
內置Chroot支持
更多…
關掉一些不需要的組件去module documentation 看一下你到底需要哪些組件. 好多時候你會發現,你並不需要….
一行一行去查找你的httpd.conf裏是否包含LoadModule, 可以用#放在行首去關閉組件。 如果象搜索組件,可以運行:
grep LoadModule httpd.conf
這裏有些組件常常打開的,但是不需要。
mod_imap,mod_include,mod_info,mod_userdir,mod_status,mod0cgi,mod-autoindex.
去人只有root有閱讀apache配置文件和bin文件的權限。chown -R root:root /usr/local/apache
chmod -R o-rwx /usr/local/apache
減少Timeout值默認設置timeout指令是300秒。 你可以減小他,以預防一些潛在攻擊。
Timeout 45
減小最大請求apache有很多指令來減小請求數,一個很好的指令是LimitRequestBody指令。 這條指令默認設置是無線的。 如果你想設置上傳文件不能超過1MB, 你可以這樣寫:
LimitRequestBody 1048567
如果不允許問文件上傳。你可以設得更小。
其他得指令,可以看看LimitRequestFields,LimitrequestFieldSize , LimitRequestLine. 這些指令都是默認設置。但是你必須去優化他們,成爲你需要的。 可以看看這個文檔
限制XML body區的大小如果你運行了mod_dav,你會希望限制XML 請求的body大小。 LimitXMLRequestBody指令只有在Apache2中有。 並且他的默認值是1個millon字節大小,大約1M, 很多教材上說這裏設置爲0比較好,這就意味着多大的文件都可以上傳,如果你需要上傳大文件的話。 但是如果你簡單的改變一下控制。 你可以大概的設置成10MB
LimitXMLRequestBody 10485760
限制併發apache有些設置可以限制併發請求。MaxClients就是服務器能承受的最大用戶值。
其他的指令比如MaxSpareServers,MaxRequestsPerChild, Apache2上的 ThreadsPerChild,ServerLimit,和MaxSpareThreads 和你的系統硬件配置的配合都是很重要的。
IP限制地址段如果你有一些資源只能給特定的網段使用…176。16.0.0–176.16.0.16
Order Deny,Allow
deny from all
Allow from 176.16.0.0/16
或者也可以限定單一IP
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
調整KeepAlive 設置MaxKeepAliveRequests –> 100 — (你需要的數)
KeepAliveTimeout –> 15 –(你需要的數)
在Chroot環境運行apache(沒翻譯. )chroot allows you to run a program in its own isolated jail. This prevents a break in on one service from being able to effect anything else on the server.
It can be fairly tricky to set this up using chroot due to library dependencies. I mentioned above that the mod_security module has built in chroot support. It makes the process as simple as adding a mod_security directive to your configuration:
SecChrootDir /chroot/apache
There are however some caveats however, so check out the docs for more info



 
發佈了230 篇原創文章 · 獲贊 21 · 訪問量 60萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章