863
織夢DedeCMS
DedeCMS站點高級安全策略(Linux篇)_織夢CMS幫助中心
更改紀錄:
2012-06-06:增加Nginx服務器的配置
在Linux環境下搭建安裝DedeCMS本篇不再具體說明,大家可以點擊文檔《Linux下安裝DedeCMS及安全設置》來查看安裝和基本安全配置部分的內容。
本篇將在之前的基礎上進一步來對Linux下的DedeCMS進行安全配置,以保證我們的站點能夠更加安全的運行在服務器上。
1.安裝Apache文件訪問權限模塊
為了保證每個虛擬站點都能夠擁有自己獨立的文件訪問權限,我們需要安裝Apache安全權限分離模塊,在終端中輸入:
sudo apt-get install apache2-mpm-itk
2.添加管理後台站點控製帳號
接下來我們需要再添加一個後台站點的Apache運行帳號,在終端中輸入:
sudo useradd -g www-data -d /dev/null -s /usr/sbin/nologin www-admin
這樣我們就添加了一個www-admin帳號,專門用於控製後台站點的文件訪問權限。
3.將後台管理目錄移出,並且創建獨立站點
默認安裝後,後台的管理目錄是在站點更目錄下的/dede,為了安全起見我們需要將這個目錄移出,但為了能夠正常管理站點,我們需要將這個後台目錄創建獨立站點。
3.1.移動後台管理目錄
我們先創建一個目錄,這個目錄專門用於存放後台站點文件,在終端中輸入:
sudo mkdir /var/dedecms-admin
然後將織夢後台移動到這個文件夾中,輸入:
sudo mv /var/dedecms/dede/* /var/dedecms-admin/
3.2.創建虛擬站點
我們需要創建一個新的站點用於顯示後台,我們可以在/etc/apache2/site-enabled/目錄中創建一個文件名為:default-admin的文件,內容如下:
<VirtualHost *:80>
ServerName admin.dede.com
ServerAdmin webmaster@localhost
DocumentRoot /var/dedecms-admin
AssignUserId www-admin www-data
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/dedecms-admin/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
創建完成後我們重新啟動服務器,在終端輸入:
sudo service apache2 restart
這裏我們給後台站點域名設置為admin.dedecms.com用戶可以根據自己情況設定更為複雜的域名形式,例如:dedesiteadmin2008.dede.com
然後在係統host紀錄中添加一條指向站點域名對應ip的紀錄,保證其能夠正常訪問。
3.3.給管理站點目錄設定權限控製帳戶
為了保證後台文件訪問的安全,我們也需要給它設定文件訪問權限,在終端中輸入:
sudo chown www-admin.www-data /var/dedecms-admin/
這樣就給這個目錄指定了www-admin的訪問帳號。
3.4.調整後台文件配置,保證後台正常訪問
由於我們直接移動了管理後台文件目錄,所以我們訪問admin.dede.com會出現報錯,這時候我們需要對係統中的目錄配置進行調整。
(1)找到/var/dedecms-admin/config.php,將第12行
require_once(DEDEADMIN.'/../include/common.inc.php');
改為
require_once(DEDEADMIN.'/../dedecms/include/common.inc.php');
然後在這段代碼下麵加上:
$cfg_plus_dir = $cfg_phpurl = $cfg_basehost."/".$cfg_plus_dir;
(2)找到/var/dedecms-admin/login.php,將11行
require_once(dirname(__FILE__).'/../include/common.inc.php');
改為
require_once(dirname(__FILE__).'/../dedecms/include/common.inc.php');
(3)找到/var/dedecms/data/safe/inc_safe_config.php,第2行,改為
$safe_gdopen = '1,2,3,4,5,7';
(4)找到/var/dedecms-admin/exit.php,第11行
require_once(dirname(__FILE__).'/../include/common.inc.php');
改為
require_once(dirname(__FILE__).'/../dedecms/include/common.inc.php');
(5)複製include中的相關文件
我們需要將include文件夾下的一些文件拷貝到管理後台站點中以保證後台正常使用:
mkdir /var/dedecms-admin/include/dialog
sudo cp -R /var/dedecms/include/dialog/* /var/dedecms-admin/include/dialog
mkdir /var/dedecms-admin/include/js
sudo cp -R /var/dedecms/include/js/* /var/dedecms-admin/include/js
sudo mkdir /var/dedecms-admin/include/ckeditor
sudo cp -R /var/dedecms/include/ckeditor/* /var/dedecms-admin/include/ckeditor
4.重新分配前台Apache用戶權限
設定完成後我們需要給前台站點重新指派權限,在終端輸入:
sudo chown -R www-admin.www-data /var/dedecms/
這樣就把前台用戶設定為了www-admin,然後再執行:
sudo chmod -R 755 /var/dedecms/
這樣設置後後台管理就具有了站點操作權限,但前台瀏覽用戶沒有修改文件的權限了。
但這裏前台uploads需要有可上傳的權限,所以還需要執行:
sudo chmod -R 777 uploads/
5.完成安全配置
這樣一來我們就完成了係統的安全設置,做到了前後台的權限分離,當然您也需要配置下php.ini禁用掉某些函數,配合係統做好各個方麵的安全設置。

如果您需要了解Windows Server 2012下如何搭建配置DedeCMS環境,可以查看:《Windows Server 2012 搭建PHP+MySQL環境安裝DedeCMS係統》
6.Nginx設置
由於Nginx輕便容易維護,很多站長也會選擇Nginx作為站點服務器,設置思路同上文類似,但有稍許的不同,下麵我們就來單獨對其進行介紹。
6.1.安裝Nginx以及php5-fpm
終端中輸入:sudo apt-get install nginx
以及:sudo apt-get install php5-fpm
(如果已經安裝了Apache的用戶需要停止Apache,以免同Nginx衝突,可以使用命令行:sudo service apache2 stop)
6.2.添加站點
同樣我們需要添加兩個站點,一個前台“www.dede.com”一個後台“admin.dede.com”,基本配置如下:
www.dede.com站點:
server {
root /var/dedecms;
index index.html index.htm index.php;
server_name www.dede.com;
...
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param script_FILENAME /var/dedecms$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
}
admin.dede.com站點配置:
server {
root /var/dedecms-admin;
index index.html index.htm index.php;
server_name admin.dede.com;
...
location ~ .php$ {
fastcgi_pass 127.0.0.1:9001;
fastcgi_param script_FILENAME /var/dedecms-admin$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
}
這裏主要是admin的站點采用的9001端口,以及站點目錄重新做了調整。
6.3.指派站點文件訪問控製權限
同apache的apache2-mpm-itk不同,php5-fpm默認就可以進行權限控製。
在文件/etc/php5/fpm/pool.d/www.conf中則是默認采用了“www-data”作為站點的控製用戶,所以為了後台具有對應的操作權限,我們需要添加一個專門的控製權限。
cd /etc/php5/fpm
cp www.conf admin.conf
修改admin.conf文件
其中我們隻要將:
user = www-admin
group = www-data
listen = 127.0.0.1:9001
這幾個地方做一個更改即可。
完成後重啟下服務
sudo service php5-fpm restart
sudo service nginx restart
6.4.nginx下取消目錄執行的權限
在《Linux下安裝DedeCMS及安全設置》 中介紹了apache下如何取消目錄執行權限,nginx也是類似,但配置方法稍有不同:
server {
...
location ~* ^/uploads/.*.(php|php5)$
{
deny all;
}
}
按照這個方法,將其他目錄也同樣設置即可。
最後更新:2016-12-29 14:26:11