Apache安全配置

wyzsk發表於2020-08-19
作者: zhangsan · 2014/08/04 12:44

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. 記錄日誌

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

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章