人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

通過對php一些服務器端特征的設置加強php的安全

通過對php一些服務器端特征的設置加強php的安全

更新時間:2022-08-11 文章作者:未知 信息來源:網絡 閱讀次數:


通過對php一些服務器端特性的配置加強php的安全

by san@xfocus.org

前面象Shaun Clowes和rfp等都比較詳細的介紹了php、cgi程序在編程過程中遇到的問題,以及如何通
過應用程序漏洞突破系統,這篇文章我們來通過對php的一些服務器端特性來進行配置加強php的安全。寫
cgi腳本的時候我們的確一定注意各種安全問題,對用戶輸入進行嚴格的過濾,但是常在岸邊走哪有不濕鞋
,吃燒餅哪有不掉芝麻,人有失蹄馬有失手,連著名的phpnuke、phpMyAdmin等程序都出現過很嚴重的
問題,更何況象我等小混混寫的腳本。所以現在我們假設php腳本已經出現嚴重問題,比如象前一陣子
phpnuke的可以上傳php腳本的大問題了,我們如何通過對服務器的配置使腳本出現如此問題也不能突破
系統。

1、編譯的時候注意補上已知的漏洞
 從4.0.5開始,php的mail函數加入了第五個參數,但它沒有好好過濾,使得php應用程序能突破
 safe_mode的限制而去執行命令。所以使用4.0.5和4.0.6的時候在編譯前我們需要修改php源碼包里
 ext/standard/mail.c文件,禁止mail函數的第五參數或過濾shell字符。在mail.c文件的第152
 行,也就是下面這行:
 if (extra_cmd != NULL) {
 后面加上extra_cmd=NULL;或extra_cmd = php_escape_shell_cmd(extra_cmd);然后編譯php
 那么我們就修補了這個漏洞。

2、修改php.ini配置文件
 以php發行版的php.ini-dist為藍本進行修改。
 1)Error handling and logging
 在Error handling and logging部分可以做一些設定。先找到:
 display_errors = On
 php缺省是打開錯誤信息顯示的,我們把它改為:
 display_errors = Off
 關閉錯誤顯示后,php函數執行錯誤的信息將不會再顯示給用戶,這樣能在一定程度上防止攻擊者從
 錯誤信息得知腳本的物理位置,以及一些其它有用的信息,起碼給攻擊者的黑箱檢測造成一定的障礙
 。這些錯誤信息可能對我們自己有用,可以讓它寫到指定文件中去,那么修改以下:
 log_errors = Off
 改為:
 log_errors = On
 以及指定文件,找到下面這行:
 ;error_log = filename
 去掉前面的;注釋,把filename改為指定文件,如/usr/local/apache/logs/php_error.log
 error_log = /usr/local/apache/logs/php_error.log
 這樣所有的錯誤都會寫到php_error.log文件里。
 2)Safe Mode
 php的safe_mode功能對很多函數進行了限制或禁用了,能在很大程度解決php的安全問題。在
 Safe Mode部分找到:
 safe_mode = Off
 改為:
 safe_mode = On
 這樣就打開了safe_mode功能。象一些能執行系統命令的函數shell_exec()和``被禁止,其它的一
 些執行函數如:exec(), system(), passthru(), popen()將被限制只能執行
 safe_mode_exec_dir指定目錄下的程序。如果你實在是要執行一些命令或程序,找到以下:
 safe_mode_exec_dir =
 指定要執行的程序的路徑,如:
 safe_mode_exec_dir = /usr/local/php/exec
 然后把要用的程序拷到/usr/local/php/exec目錄下,這樣,象上面的被限制的函數還能執行該目錄
 里的程序。
 關于安全模式下受限函數的詳細信息請查看php主站的說明:
 http://www.php.net/manual/en/features.safe-mode.php
 3)disable_functions
 如果你對一些函數的危害性不太清楚,而且也沒有使用,索性把這些函數禁止了。找到下面這行:
 disable_functions =
 在”=“后面加上要禁止的函數,多個函數用”,“隔開。

3、修改httpd.conf
 如果你只允許你的php腳本程序在web目錄里操作,還可以修改httpd.conf文件限制php的操作路徑。比
 如你的web目錄是/usr/local/apache/htdocs,那么在httpd.conf里加上這么幾行:
 <Directory /usr/local/apache/htdocs>
 php_admin_value open_basedir /usr/local/apache/htdocs
 </Directory>
 這樣,如果腳本要讀取/usr/local/apache/htdocs以外的文件將不會被允許,如果錯誤顯示打開的話
 會提示這樣的錯誤:
 Warning: open_basedir restriction in effect. File is in wrong directory in
 /usr/local/apache/htdocs/open.php on line 4
 等等。

4、對php代碼進行編譯
 Zend對php的貢獻很大,php4的引擎就是用Zend的,而且它還開發了ZendOptimizer和ZendEncode
 等許多php的加強組件。優化器ZendOptimizer只需在http://www.zend.com注冊就可以免費得到,
 下面幾個是用于4.0.5和4.0.6的ZendOptimizer,文件名分別對于各自的系統:
 ZendOptimizer-1.1.0-PHP_4.0.5-FreeBSD4.0-i386.tar.gz
 ZendOptimizer-1.1.0-PHP_4.0.5-Linux_glibc21-i386.tar.gz
 ZendOptimizer-1.1.0-PHP_4.0.5-Solaris-sparc.tar.gz
 ZendOptimizer-1.1.0-PHP_4.0.5-Windows-i386.zip
 優化器的安裝非常方便,包里面都有詳細的說明。以UNIX版本的為例,看清操作系統,把包里的
 ZendOptimizer.so文件解壓到一個目錄,假設是/usr/local/lib下,在php.ini里加上兩句:
 zend_optimizer.optimization_level=15
 zend_extension="/usr/local/lib/ZendOptimizer.so"
 就可以了。用phpinfo()看到Zend圖標左邊有下面文字:
 with Zend Optimizer v1.1.0, Copyright (c) 1998-2000, by Zend Technologies
 那么,優化器已經掛接成功了。
 但是編譯器ZendEncode并不是免費的,這里提供給大家一個http://www.PHPease.com的馬勇設計的
 編譯器外殼,如果用于商業目的,請與http://www.zend.com聯系取得許可協議。
 php腳本編譯后,腳本的執行速度增加不少,腳本文件只能看到一堆亂碼,這將阻止攻擊者進一步分析服
 務器上的腳本程序,而且原先在php腳本里以明文存儲的口令也得到了保密,如mysql的口令。不過在服
 務器端改腳本就比較麻煩了,還是本地改好再上傳吧。

5、文件及目錄的權限設置
 web目錄里除了上傳目錄,其它的目錄和文件的權限一定不能讓nobody用戶有寫權限。否則,攻擊者可
 以修改主頁文件,所以web目錄的權限一定要設置好。
 還有,php腳本的屬主千萬不能是root,因為safe_mode下讀文件的函數被限制成被讀文件的屬主必須
 和當前執行腳本的屬主是一樣才能被讀,否則如果錯誤顯示打開的話會顯示諸如以下的錯誤:
 Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
 allowed to access /etc/passwd owned by uid 0 in /usr/local/apache/htdocs/open.php
 on line 3
 這樣我們能防止許多系統文件被讀,比如:/etc/passwd等。
 上傳目錄和上傳腳本的屬主也要設成一樣,否則會出現錯誤的,在safe_mode下這些要注意。

6、mysql的啟動權限設置
 mysql要注意的是不要用root來啟動,最好另外建一個mysqladm用戶?梢栽/etc/rc.local等系統
 啟動腳本里加上一句:
 su mysqladm -c "/usr/local/mysql/share/mysql/mysql.server start"
 這樣系統重啟后,也會自動用mysqladmin用戶啟動mysql進程。

7、日志文件及上傳目錄的審核及
 查看日志和人的惰性有很大關系,要從那么大的日志文件里查找攻擊痕跡有些大海撈針,而且也未必有。
 web上傳的目錄里的文件,也應該經常檢查,也許程序有問題,用戶傳上了一些非法的文件,比如執行腳
 本等。

8、操作系統自身的補丁
 一樣,給系統打已知漏洞的補丁是系統管理員最基本的職責,這也是最后一道防線。
 
經過以上的配置,雖然說不上固若金湯,但是也在相當程度上給攻擊者的測試造成很多麻煩,即使php腳本程
序出現比較嚴重的漏洞,攻擊者也無法造成實際性的破壞。
如果您還有更古怪,更變態的配置方法,希望能一起分享分享;) (出處:viphot)

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 罗山县| 晴隆县| 贵定县| 新蔡县| 龙江县| 九寨沟县| 托里县| 漾濞| 武平县| 通城县| 临泉县| 壶关县| 义马市| 双鸭山市| 阿坝| 北海市| 武邑县| 高唐县| 铁力市| 巴中市| 昌平区| 京山县| 新营市| 三明市| 理塘县| 行唐县| 衡水市| 海安县| 准格尔旗| 乡城县| 炎陵县| 浪卡子县| 阿坝| 岚皋县| 台中县| 乐都县| 周至县| 衡东县| 阳原县| 噶尔县| 鹤壁市|