dedecms(織夢(mèng)CMS)安全設(shè)置之文件夾目錄權(quán)限詳細(xì)解說
[重要通告]如您遇疑難雜癥,本站支持知識(shí)付費(fèi)業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時(shí)間哦!
前幾天我香港的服務(wù)器,用幾個(gè)dedecms的站,好像被入侵了,包括帝國(guó)也受害了,一氣之下把dedecms的站全部刪除了,畢竟也沒多大用處了,現(xiàn)在想要處理的事兒還得重新記憶,那就是還得為以后做點(diǎn)準(zhǔn)備,寫一篇關(guān)于dedecms目錄安全的文章;
織夢(mèng)CMS--DedeCMS 目錄權(quán)限安全設(shè)置詳解
權(quán)限設(shè)置
1、a?文件夾是靜態(tài)生成文件的存放目錄,所以拒絕腳本執(zhí)行 允許寫入
2、data?是緩存文件、數(shù)據(jù)等,所以充許寫入,但是因?yàn)檫@里面的文件引入到其它地方進(jìn)行使用,所以要拒絕腳本執(zhí)行。
3、dede?是后臺(tái)管理目錄,并且這個(gè)一般情況下不需要修改,所以允許腳本執(zhí)行,拒絕寫入。(建議修改后臺(tái)dede的目錄名,減少一個(gè)風(fēng)險(xiǎn))
4、images?僅是存系統(tǒng)圖片, 所以拒絕腳本執(zhí)行,拒絕寫入。
5、include?這個(gè)目錄是系統(tǒng)庫(kù),一般情況下也是引入到其它地方使用,但是也有一些文件需要執(zhí)行,比如驗(yàn)證碼,但是一般不需要修改。所以允許腳本執(zhí)行,拒絕寫入。
6、install?這個(gè)目錄在系統(tǒng)安全完之后,直接刪除, 系統(tǒng)部署之后,這個(gè)文件夾就沒有用了。
7、member?如果不使用會(huì)員系統(tǒng),這個(gè)目錄夾也可以直接刪除。
8、plus?這個(gè)插件目錄,不需要修改的,允許腳本執(zhí)行,拒絕寫入。
9、special?這個(gè)專題文件夾,一般我們會(huì)改名。與a目錄一樣,拒絕腳本執(zhí)行,允許寫入
10、templets?這相模板目錄,拒絕執(zhí)行,拒絕寫入。拒絕寫入之后,比較麻煩,如果修改模板,要先允許寫入,再修改再去拒絕寫入,但是不要嫌麻煩,畢竟為了安全嘛。
11、uploads?是上傳目錄,不用說必須拒絕腳本,允許寫入,一個(gè)不小心,黑客就給你上傳個(gè)木馬上來了。
12、將data目錄移到根目錄之外,這也是官方要求做的,但是不得不說,這會(huì)帶來很多問題,比如訪問根目錄下面的index.php會(huì)了錯(cuò),三級(jí)聯(lián)動(dòng)也會(huì)出錯(cuò)。
index.php 可以通過修改代碼解決,如果你不需要三級(jí)聯(lián)動(dòng)功能,可以移出data。
操作方法:
(1)修改/include/common.inc.php
將 define('DEDEDATA', DEDEROOT.'/data');
改成: define('DEDEDATA', DEDEROOT.'/../data');
(2)到后臺(tái)系統(tǒng)基本設(shè)置->性能選項(xiàng) 里面設(shè)置 模板緩存目錄為 /../data/tplcache。
刪除以下文件夾和文件
member 會(huì)員文件夾整個(gè)刪除
special 專題文件夾整個(gè)刪除
install 安裝文件夾整個(gè)刪除
/templets/default 官方默認(rèn)模板這個(gè)文件夾刪除
plus 文件夾除了以下 1個(gè)文件夾 和 5個(gè)php文件,其他的文件統(tǒng)統(tǒng)刪除
/plus/img (這個(gè)文件夾)
/plus/count.php
/plus/diy.php
/plus/list.php
/plus/search.php
/plus/view.php
把 dede 后臺(tái)文件夾改名,改復(fù)雜一點(diǎn),改成我都不認(rèn)識(shí),每次進(jìn)入ftp查看。
打開 /include/dialog/select_soft_post.php 找到
$fullfilename?=?$cfg_basedir.$activepath."/".$filename;
在它上面加入
if?(preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i',?trim($filename)))?{
ShowMsg("你指定的文件名被系統(tǒng)禁止!",'javascript:;');
exit();
}
打開 /dede/media_add.php 找到
$fullfilename?=?$cfg_basedir.$filename;
在它上面加入
if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))){
ShowMsg("你指定的文件名被系統(tǒng)禁止!",'java script:;');
exit();
}
在買的模板里面檢查整站備份文件夾里 模板 和 文檔圖片文件夾 是否有掛馬和
每一個(gè)跟模板有關(guān)的js文件都要一一打開來細(xì)心檢查,因?yàn)閽祚R很多在js文件中,不然你前面和后面的工作都白做了。
1、每一個(gè)跟模板有關(guān)的css 和 images 文件夾下都要細(xì)心檢查是否有后門文件,除了圖片文件、css文件、字體文件,其他的一律刪除,刪錯(cuò)了也不用擔(dān)心,有整站打包的備份在。
2、每一個(gè)模板htm文件都要細(xì)心檢查是否有掛馬代碼存在,檢查你的模板文件夾里是否有后門文件,比如php文件,asp文件,其他可疑的格式文件一律刪除,刪錯(cuò)了也不用擔(dān)心,有整站打包的備份在。
3、你備份文件中的文檔圖片文件夾 uploads 文件夾,每一個(gè)文件夾都要打開,都要細(xì)心檢查是否有后門文件,除了圖片文件和你的附件,其他的一律刪除,刪錯(cuò)了也不用擔(dān)心,有整站打包的備份在。
4、/data/common.inc.php 和? /data/config.cache.inc.php 一會(huì)配合打包要用到,所以也要檢查。
5、/include/extend.func.php 可能有二次開發(fā)的自定義方法在里面,所以也要檢查。
6、其他你曾經(jīng)二次開發(fā)修改過的文件。
利用偽靜態(tài)功能禁止以下目錄運(yùn)行php腳本
linux主機(jī)的用戶一般都是apache環(huán)境,使用 .htaccess 文件來設(shè)置,如果你網(wǎng)站根目錄已經(jīng)存在這個(gè)文件,那就復(fù)制一下代碼添加進(jìn)去,沒有這個(gè)文件的小伙伴可以下載下來放進(jìn)去
RewriteEngine?on
#安全設(shè)置 禁止以下目錄運(yùn)行指定php腳本
RewriteCond?%?!^$
RewriteRule?a/(.*).(php)$?–?[F]
RewriteRule?data/(.*).(php)$?–?[F]
RewriteRule?templets/(.*).(php|htm)$?–?[F]
RewriteRule?uploads/(.*).(php)$?–?[F]
windows主機(jī)的用戶一般都是iis7、iis8環(huán)境,使用 web.config 文件來設(shè)置,請(qǐng)確認(rèn)你的主機(jī)已經(jīng)開啟了偽靜態(tài)而且網(wǎng)站根目錄有 web.config 文件,有這個(gè)文件的可以復(fù)制以下代碼添加到對(duì)應(yīng)的rules內(nèi),沒有這個(gè)文件的小伙伴可以下載下來放進(jìn)去;
<rule name="Block data" stopProcessing="true">
<match url="^data/(.*).php$" />
<conditions logicalGrouping="MatchAny">
<add input="{USER_AGENT}" pattern="data" />
<add input="{REMOTE_ADDR}" pattern="" />
</conditions>
<action type="AbortRequest" />
</rule>
<rule name="Block templets" stopProcessing="true">
<match url="^templets/(.*).php$" />
<conditions logicalGrouping="MatchAny">
<add input="{USER_AGENT}" pattern="templets" />
<add input="{REMOTE_ADDR}" pattern="" />
</conditions>
<action type="AbortRequest" />
</rule>
<rule name="Block SomeRobot" stopProcessing="true">
<match url="^uploads/(.*).php$" />
<conditions logicalGrouping="MatchAny">
<add input="{USER_AGENT}" pattern="SomeRobot" />
<add input="{REMOTE_ADDR}" pattern="" />
</conditions>
<action type="AbortRequest" />
</rule>
Nginx下禁止指定目錄運(yùn)行PHP腳本
注意:這段配置文件一定要放在 location ~ .php(.*)$ 的前面才可以生效,配置完后記得重啟Nginx生效。
location ~* /(a|data|templets|uploads)/(.*).(php)$ {
return 403;
}
如何驗(yàn)證第八步是否生效呢
使用Sublime Text 或者 Dreamweaver 新建一個(gè)php文件,名為a.php
里面隨便寫個(gè)文字,上傳到根目錄 然后訪問路徑,如果是能正常顯示你寫的數(shù)字,那表示沒生效,提示403頁(yè)面說明設(shè)置成功了
教程到此介紹。
問題未解決?付費(fèi)解決問題加Q或微信 2589053300 (即Q號(hào)又微信號(hào))右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當(dāng)無敷衍,落筆求簡(jiǎn)潔。 以所舍,求所獲;有所依,方所成!