11.29 限制user_agent
11.30/11.31 php相關配置
限定某個目錄禁止解析php
數據泄露可能性
①網站php程序漏洞
②sql注入漏洞:可以把查詢的sql,通過特殊提交到服務器上,服務器會把sql語句轉換成正常查詢,最終獲得一些數據(容易修復,只要在網站提交的入口增加特殊符號過濾,達到阻斷效果)
實例:
第一個大括號和第二個大括號之間的表示對/upload目錄禁止解析php,防止被黑客等人拿到權限調走數據
第二個大括號則是對files match訪問控制,讓外界對這個/upload目錄無法訪問
測試:
①加了兩層限制後的403 Forbidden
②只針對某個目錄禁止解析php:如下圖顯示的是源代碼,不解析
可寫的目錄(靜態文件),一般情況下不需要解析php,一般靜態文件所存放的目錄下不允許放php
限制user_agent
在網站受到SYS攻擊時(攻擊人通過一些手段,如軟件,肉機(被黑被控制的機器)同時訪問一個站點)
限制user_agent的過於頻繁訪問請求,減輕服務器壓力
NC表示忽略大小寫 OR或者 F:Forbidden
測試成功:
curl -A 再測試確定因爲限制了user_agent
curl -A指定usr_agent
curl -e 指定referer 必須以“http:// ”開頭
curl -x 省略hosts
curl -I 返回狀態碼,不執行
PHP相關配置
在網站根目錄下通過網頁查看php.info(找php配置文件最準確)
①根目錄下index.php編輯成php.info
②打開111.com/index.php顯示具體頁面信息(雖然配置文件是/usr/local/php7/etc,但是並沒有加載)
③把源碼包的php.ini拷貝到配置文件路徑下,並刷新配置apachectl graceful
④打開配置文件 vim /usr/local/php7/etc/php.ini
disable_functions 禁掉一些危險函數,甚至phpinfo函數,有時不小心寫了phpinfo的頁面上傳到網上,被黑客掃到可以看到系統信息,有潛在的深入挖掘滲透
禁掉後刷新發現phpinfo頁面無法訪問
定義date.timezone(如果不定義可能會有一些報警信息)
日誌相關
因爲有display_errors = On使得之前phpinfo被禁後的錯誤信息直接顯示在網站上 (暴露目錄地址),改成off比較安全,不需要把錯誤信息輸出到瀏覽器中,參數改成Off後再重新加載配置,出現百頁,無錯誤提示
用curl訪問發現沒有任何輸出,這時候需要配置一個錯誤日誌方便以後排錯
配置錯誤日誌信息
①/log_errors = On
②error_log = 定義到某目錄下
③定義error_log的級別,如果不定義只會記錄嚴重的錯誤,不會完全記錄
最不嚴謹的就是所有都生成,然而在生產環境中,Notice很多,所以只要選擇log 錯誤就行了
生成php_errors.log 屬主於daemon,ps aux |grep httpd查看,也是httpd的屬主,實際上以進程的身份生成(應用:如果定義了一個錯誤日誌,但是始終沒有生成,應該排查定義錯誤日誌所在的目錄是否有寫的權限,此處寫文件的“人”是apache所屬主,啓動用戶daemon)
爲了保險起見可以先grep查看錯誤日誌的定義路徑,先touch,再改777權限
cat這個Log發現
模擬一個錯誤:新編輯一個2.php文件(語法錯誤),然後curl後沒有任何提示,再cat發現錯誤詳情
安全相關參數
open_basedir主要用來限定並隔離站點與站點之間的目錄 (比如一臺服務器跑N個站點,其中一個漏洞多被黑被拿到權限,增加open_basedir 可以避免擴散)
找到open_basedir選項,把文件目錄限制在/tmp下
如果定義錯了,如1111.com看看實驗結果,curl結果是500錯誤, Internal Server Error
查看錯誤日誌: cat /tmp/php_errors.log
改成正確的路徑 /data/wwwroot/111.com:/tmp; curl後正常
如果一個服務器跑N個站點,如何限定?所有網站根目錄都在/data/wwwroot/下,如果限定在這一層不行,又由於php.ini配置文件是針對所有站點生效,所以需要到單個站點上配置open_basedir,即在vhost(apache虛擬主機)配置文件中個性化針對 某站點進行限制
php_admin_value參數可以定義php.ini裏的一些參數(如error_log, error_reporting等等)
限制在/tmp/目錄下的原因是:默認所有臨時文件等都會先保存在/tmp/下,如圖片上傳是先傳到/tmp/下再到相應的路徑,這樣達到隔離效果
apache開啓壓縮 http://ask.apelearn.com/question/5528
apache2.2到2.4配置文件變更 http://ask.apelearn.com/question/7292
apache options參數 http://ask.apelearn.com/question/1051
apache禁止trace或track防止xss http://ask.apelearn.com/question/1045
apache 配置https 支持ssl http://ask.apelearn.com/question/1029