<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/%e8%bf%90%e7%bb%b4%e5%ae%89%e5%85%a8/2727

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

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

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线