原文來自: 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你可以達到以下效果: 簡單的過濾 Regex過濾 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
|