服务器, 运营维护

设置ACL增强网站目录安全性

Linux的安全性高是人人皆知的,可以分别设置user,group,other的r/w/x的权限。

但是,对于我这种注重数据安全的人来说,这样简单的权限设置已无法满足我的需求。

就以Nginx+PHP-FPM的环境为例。一般给Nginx和php-fpm fork出来的进程的用户身份不同的。

假如给Nginx的执行身份是用户nginx,而php-fpm的执行身份是php-fpm。

在网站所有文件owner都是php-fpm的情况下,给网站目录的文件的最低权限就是505(user:r_x,group:___,other:r_x)(不能再低了,再低就无法正常访问了)本文出自微宇宙(http://zhensheng.im),转载不标明出处者死一户口本。

WHY?其中user的r权限是给PHP-FPM读取php文件的,x是给php-fpm进入该目录。other的r是给nginx读取静态资源的,x权限是允许nginx进入该网站目录。(根目录可501)。本文出自微宇宙(http://zhensheng.im),转载不标明出处者死一户口本。

假如有一个用户获得了服务器的shell权限,他的身份不是nginx,也不是php-fpm,由于该网站根目录给了other的x权限,以及网站文件有r权限,那么他就可以轻易地把网站的东西cat出来,例如wp-config.php……本文出自微宇宙(http://zhensheng.im),转载不标明出处者死一户口本。

 

cat

前面已经说了,Linux的安全性很高,那么对权限的设置,肯定还有更高级的东西——ACL。本文出自微宇宙(http://zhensheng.im),转载不标明出处者死一户口本。

ACL是Access Control List的缩写,中文全名是“访问控制列表”。该东西的强大之处就在于:可以单独的赋予某个用户对某个文件/目录的权限。本文出自微宇宙(http://zhensheng.im),转载不标明出处者死一户口本。

其实Windows也有ACL,NTFS才支持:本文出自微宇宙(http://zhensheng.im),转载不标明出处者死一户口本。

Windows ACL

 

Linux要启用ACL,首先就要为挂载的分区增加ACL参数(OpenVZ貌似不支持)本文出自微宇宙(http://zhensheng.im),转载不标明出处者死一户口本。

取得设备文件名:

df

mount

成功执行后,执行mount,看到那个挂载的分区有了acl这三个字母就代表成功了。建议把ACL参数增加到/etc/fstab里面,不然重启后就没了。本文出自微宇宙(http://zhensheng.im),转载不标明出处者死一户口本。

FSTAB ACL

然后安装ACL,

Debian/Ubuntu的执行:

CentOS的执行:

安装后,系统就会多两个可以使用的命令:setfacl,getfacl

setfacl是设置ACL权限的,getacl是获取ACL权限。

例如:

以/var/www这个目录为例:

www

 

首先给该目录赋予正确的所有者以及群组,并且根据是否需要给予写入权限,来赋予700或者500权限:本文出自微宇宙(http://zhensheng.im),转载不标明出处者死一户口本。

需要给所有者写入权限就执行:

不需要写入权限则执行:

chmod

接下来要使用setfacl,赋予Nginx的执行用户nginx访问该目录以及文件的权限:

要使用的参数有-R(递归设置),-m(修改权限),-d(默认权限)

使用ls -l可以看到文件的权限最后都有一个+:

ls files

此时可以使用getfacl查看这些文件的真实权限:

getfacl

 

可以看到user(所有者)的权限没变,而用户nginx的权限变成了rx,群组,其他人则无任何权限。本文出自微宇宙(http://zhensheng.im),转载不标明出处者死一户口本。

请注意此时不要用chmod更改群组和other的权限,否则可能会导致ACL权限失效。本文出自微宇宙(http://zhensheng.im),转载不标明出处者死一户口本。

用other的身份再去访问和读取一下这些目录和文件:

ACL CAT

 

均提示权限不足。

然后切换为nginx再看看:

nginx cat

读取毫无阻碍。

这样的话,极大地增强了网站目录的安全性,减少被跨站的机会。。本文出自微宇宙(http://zhensheng.im),转载不标明出处者死一户口本。

如果要删除ACL权限呢?把-m参数改成-b参数就行:

执行后使用ls -l查看,+没了就代表成功删除。

至于setfacl和getfacl更详细的介绍,大家可以看man page:

 

本文出自微宇宙(http://zhensheng.im),转载不标明出处者死一户口本。

Comments are closed.