Apache安全配置

0x00 測試環境


centos6.5+apache2.2.15+php5.3.3

0x01 php的運行模式介紹


php的運行模式分四種:

1. CGI通用網關接口 
2. fast-cgi常駐型的CGI 
3. cli命令行運行 
4. web模塊模式 

一般情況下,apache使用web模塊模式運行php

0x02 Apache運行原理介紹


Apache是基於模塊化設計的,各個模塊在系統啓動的時候按需載入。Apache對於php的解析,就是通過衆多Module中的php Module來完成的。

2014080322524877722.png

所以,php加載成爲了apache的一個模塊,可以把apache和php當成一個整體看待。

當瀏覽器請求一個php文件時,我們可以理解爲apache直接處理返回給瀏覽器結果,服務器上也只會有httpd進程,而不會有php進程。

apache的一些配置主要是通過httpd.conf來實現的,但是可以在httpd.conf中開啓對.htaccess的支持,然後在.htaccess中進行配置。不過一般情況下,不應該使用.htaccess文件,除非你對主配置文件沒有訪問權限。.htaccess文件應該被用在內容提供者需要針對特定目錄改變服務器的配置而又沒有root權限的情況下。如果服務器管理員不願意頻繁修改配置,則可以允許用戶通過.htaccess文件自己修改配置。

0x03 Apache安全配置方案


1. 選擇漏洞較少的apache版本,並打上安全補丁

查看apache版本號:httpd -v

然後在sebug上搜索該版本號有什麼漏洞,可根據提示提升版本或者打上補丁

2. 關閉一些不使用的模塊及功能

可在LoadModule前加#,來註釋掉一些不使用的模塊

3. 隱藏banner信息

ServerTokens OS  修改爲:ServerTokens Prod (在出現錯誤頁的時候不顯示服務器操作系統的名稱)

ServerSignature On 修改爲:ServerSignature Off(不回顯apache版本信息)

4. 刪除默認網站及頁面

刪除默認的頁面,防止泄露服務器信息

5. 可修改banner信息

6. 配置httpd.conf禁止目錄瀏覽

將Options Indexes FollowSymLinks改爲Options -Indexes FollowSymLinks

7. 配置httpd.conf設置默認文檔

DirectoryIndex index.html

8. 合理配置apache的運行賬戶

爲apache單獨建立一個運行賬戶及賬戶組,並在httpd.conf配置

User apache
Group apache

9. 合理控制apache運行賬戶對磁盤的寫入,執行權限

取消apache運行賬戶對網站目錄的寫入權限,上傳目錄除外,其他非網站目錄儘量不給權限

10. 合理控制apache運行賬戶對sh等的執行權限

取消掉了運行賬戶對sh等的執行權限後能夠防止webshell通過默認的sh執行命令

11. 配置httpd.conf取消對上傳目錄的php執行權限

<Directory "/var/www/html/aaa">     
    <FilesMatch ".(php|php5)$">     
        Deny from all     
    </FilesMatch> 
</Directory> 

12. 配置httpd.conf限制禁止訪問的文件夾,例如後臺目錄

<Directory "/var/www/html/aaa">     
        Deny from all     
</Directory> 

13. 配置httpd.conf限制一些特殊目錄的特定ip訪問,如內部接口等。

<Directory "/var/www/html/aaa">     
    Order Deny,Allow
    Deny from all
    Allow from 192.168.1.111    
</Directory> 

14. 配置httpd.conf限制一些文件類型的訪問,如txt的日誌

<Files ~ ".txt$"> 
    Order allow,deny 
    Deny from all 
</Files> 

15.配置httpd.conf修改修改監聽端口來防止一些內部系統被掃描

這樣可以防止一些直接掃描80端口的黑客

Listen 12345 

16. 關閉對.htaccess的支持

AllowOverride All 

改爲

AllowOverride None 

17. 配置httpd.conf記錄訪問日誌

0x04 .htaccess常見配置方法參考


首先,不建議使用.htaccess,其次,使用.htaccess需要在httpd.conf中開啓,最後,開始.htaccess支持後需要在httpd.conf中配置防止.htaccess文件被下載,下面介紹幾個基本配置方法不全,更多的可以參考其他網站專門針對.htaccess 的配置方法。

1. 定製目錄的默認文檔

DirectoryIndex index.html index.php index.htm 

2. 定製錯誤頁面

ErrorDocument 404 errors/404.html 

3. 控制訪問文件和目錄的級別

order deny,allow  
deny from all  
allow from 192.168.0.0/24 

4. 防止列目錄

Options -Indexes 

0x05 總結


其實一個web服務器的保護是分幾個層次的(暫不考慮程序的漏洞):

1. 隱藏自己

要保護一個web服務器首先得學會隱藏自己,對於一些內部系統,如後臺,內部接口等,我們可以通過改端口,限制ip等方式來不讓黑客發現。

2. 隱藏身份

對於多數web系統來說,都是提供給外面的訪問的,所以想隱藏自己其實是很難的。但是我們還是要學會隱藏身份,可以通過改banner,該返回信息來隱藏身份來加大黑客攻擊的難度。

3. 選用安全的版本及修補一些已知的漏洞

其實前面兩步都是很容易突破,然後獲知一個web系統所使用的web服務器版本的,此時我們能做的就是選擇一個少漏洞的版本,及打上安全補丁。

4. 做好安全配置

做好基礎的安全配置,禁止目錄瀏覽,設定默認文檔,上傳目錄限制php執行等等,來阻擋黑客的入侵。

5. 合理配置web服務進程賬戶的權限

當黑客已經通過程序漏洞上傳了一個webshell並且已經成功執行了,此時,就只能很好的配置服務進程的賬戶權限,包括磁盤的讀取寫入,特殊程序如sh的執行,等等,這樣可以講危害降到最低。

6. 記錄日誌

最後,當黑客已經光顧之後,我們也只能通過日誌來分析,看問題出在哪裏了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章