Nginx 防止webshell跨目錄

2021-06-03 03:29:46 字數 3475 閱讀 1438

nginx為多使用者多網域名稱提供虛擬主機一直都是個問題.在php的執行上是採用fastcgi的方式執行的.php在fastcgi模式下雖然效率有很多提公升,但是也暴露出乙個問題,就是安全性問題.php以fastcgi方式執行一般是採用tcp或者socket方式,這兩種方式本質上是一樣的. 都是以同乙個使用者許可權執行,這樣在多使用者多網域名稱多**的情況下就變得很糟糕,很容易形成跨站.被黑客利用的話,他就可以遍歷整台伺服器中php執行許可權能 訪問的地方,也就是多個**的目錄.原因就是因為fastcgi方式執行的php對每個目錄指定的open_basedir是一樣的.

下面簡單介紹一種nginx下防止多站點之間跨目錄訪問的方法:對每個站點採用不同的fastcgi埠進行處理.

1.在nginx.conf裡把每個虛擬主機站點請求埠給區別開

我的第乙個站點配置

01server

02

16}

我的另乙個站點配置

01server

02

16}

這裡需要注意的是,fastcgi_pass unix:/tmp/php-cgi.sock 和 fastcgi_pass 127.0.0.1:9001 這是兩種不同的處理方式,同時只能使用其中的一種,這裡我們需要用到的是後面一種,把前面的登出掉。

2.為每個站點建乙個conf,並進行配置

1cp/usr/local/php/etc/php-fpm.conf /usr/local/php/etc/www.conf

2cp/usr/local/php/etc/php-fpm.conf /usr/local/php/etc/soft.conf

在www.conf中找到php_defines,新增內容

/home/wwwroot/www:/tmp:/var/tmp

在www.conf中找到listen_address,修改內容為

127.0.0.1:9000

在soft.conf中找到php_defines,新增內容

/home/wwwroot/soft:/tmp:/var/tmp

在soft.conf中找到listen_address,修改內容為

127.0.0.1:9001

這裡注意一下埠號,別設定錯了,要和nginx.conf裡面對應。

3.修改 /usr/local/php/sbin/php-fpm啟動指令碼

預設的php-fpm(部分**)是下面這樣的:

1php_fpm_bin=/usr/local/php/bin/php-cgi

2php_fpm_conf=/usr/local/php/etc/php-fpm.conf

3php_fpm_pid=/usr/local/php/logs/php-fpm.pid

4php_opts="--fpm-config $php_fpm_conf"

5case$1in

6start)

7$php_fpm_bin --fpm $php_opts

我們這裡要載入兩個配置檔案,修改如下:

01php_fpm_bin=/usr/local/php/bin/php-cgi

02php_fpm_conf1=/usr/local/php/etc/www.conf

03php_fpm_conf2=/usr/local/php/etc/soft.conf

04php_fpm_pid=/usr/local/php/logs/php-fpm.pid

05php_opts1="--fpm-config $php_fpm_conf1"

06php_opts2="--fpm-config $php_fpm_conf2"

07case$1in

08start)

09$php_fpm_bin --fpm $php_opts1

10$php_fpm_bin --fpm $php_opts2

4.配置完成了,啟動服務

view source

print?

1/usr/local/php/sbin/php-fpm start

2/usr/local/nginx/sbin/nginx -s reload

開了9000 9001倆個不同的埠分開處理兩個站點請求,兩個php-cgi主程序載入不同的conf檔案。 當然,啟動之前記得conf裡面的max_children,開啟php-cgi子程序數,相應要減少一些,以免造成記憶體不足。

在寫這篇文章的時候,我試了好幾次都沒有成功,主要原因是php-fpm啟動指令碼裡面寫錯了。前面兩步一般不會出問題,主要是第三步,如果啟動不成功,多檢查檢查就會發現問題了。

配置Apache防止webshell上傳

在linux伺服器的web應用中,經常需要上傳檔案到伺服器上。不管是php的也好,jsp的也好,如果web程式對於上傳檢查不嚴格,可導致黑客上傳webshell,對伺服器安全威脅自不用說了。對於web開發對檔案上傳的限制,這裡就不說了,這裡僅僅來討論伺服器如何設定才防止上傳的webshell執行。記...

配置Apache防止webshell上傳

在linux伺服器的web應用中,經常需要上傳檔案到伺服器上。不管是php的也好,jsp的也好,如果web程式對於上傳檢查不嚴格,可導致黑客上傳webshell,對伺服器安全威脅自不用說了。對於web開發對檔案上傳的限制,這裡就不說了,這裡僅僅來討論伺服器如何設定才防止上傳的webshell執行。記...

Nginx防止盜鏈

防 止盜鏈不僅能保護版權,又節約了不少流量。最近和bsdmap交流了下,聽說他們通過防盜煉節約了近1 3的流量。nginx的防盜煉設定還是比較簡 單的,可以分為普通防盜煉和ip cookie based防盜煉。其中ip based防盜煉需要安裝nginx的module,所以相對麻煩一些。nginx最...