移动安全 安全管理 应用案例 网络威胁系统安全 应用安全 数据安全 云安全
当前位置: 主页 > 信息安全 > 系统安全 >

系统安然:Nginx安然建设研究

时间:2014-03-31 11:41来源:TuZhiJiaMi企业信息安全专家 点击:
0x00 测试环境 把持系统:CentOS6.5 Web办事器:Nginx1.4.6 Php版本:Php5.4.26 0x01 Nginx介绍 nginx本身不克不及措置PHP,它只是个web办事器,当领遭到要求后,假定是php要求,则发给php诠释器措置,并把成
Tags系统安全(735)Nginx安全(1)配置方案(1)  

  0x00 测试环境

Nginx安然建设研究

  把持系统:CentOS6.5

  Web办事器:Nginx1.4.6

  Php版本:Php5.4.26

  0x01 Nginx介绍

  nginx本身不克不及措置PHP,它只是个web办事器,当领遭到要求后,假定是php要求,则发给php诠释器措置,并把成果返回给客户端。nginx通常为把要求发fastcgi治理过程措置,fastcgi治理过程选择cgi子过程措置成果并返回被nginx。

  nginx触及到两个账户,一个是nginx的运行账户,一个是php-fpm的运行账户。假定拜候的是一个静态文件,则只需要nginx的运行账户对文件具有读取权限;而假定拜候的是一个php文件,则起首需要nginx的运行账户对文件有读取权限,读取到文件后发现是一个php文件,则转发给php-fpm,此时则需要php-fpm账户对文件具有读取权限。

  0x02 研究发现的结论

  1. linux下,要读取一个文件,起首需要具有对文件地点文件夹的履行权限,然后需要对文件的读取权限。

  2. php文件的履行不需要文件的履行权限,只需要nginx和php-fpm运行账户的读取权限。

  3. 上传木马后,能不克不及列出一个文件夹的内容,跟php-fpm的运行账户对文件夹的读取权限有关。

  4. 木马履行号令的权限跟php-fpm的账户权限有关。

  5. 假定木马要履行号令,需要php-fpm的账户对响应的sh有履行权限。

  6. 要读取一个文件夹内的文件,是不需要对文件夹有读取权限的,只需要对文件夹有履行权限。

  0x03 Nginx办事器触及到的安然建设

  1. Nginx.conf的建设

  2. php-fpm.conf的建设

  3. nginx和php-fpm的运行账户对磁盘的权限建设

  4. Php.ini的建设

  0x04 常见需要建设的把持编制

  1. 避免一个目次的拜候

  示例:避免拜候path目次

  location ^~ /path {

  deny all;

  }

  可以把path换成实际需要的目次,目次path后是不是带有"/",带"/"只避免拜候目次,不带"/"避免拜候目次中的文件;寄望要放在fastcgi建设之前。

  2. 避免php文件的拜候及履行

  示例:往掉落单个目次的PHP履行权限

  location ~ /attachments/.*\.(php|php5)?$ {

  deny all;

  }

  示例:往掉落多个目次的PHP履行权限

  location ~

  /(attachments|upload)/.*\.(php|php5)?$ {

  deny all;

  }

  3. 避免IP的拜候

  示例:避免IP段的写法:

  deny 10.0.0.0/24;

  示例:只承诺某个IP或某个IP段用户拜候,其它的用户全都避免

  allow

  x.x.x.x;

  allow 10.0.0.0/24;

  deny all;

  0x05 需要解决的常见标题问题

  1. 让木顿时传后不克不及履行

  针对上传目次,在nginx建设文件中加进建设,使此目次没法解析php。

  2. 让木马履行后看不到非网站目次文件

  打消php-fpm运行账户对其他目次的读取权限。

  3. 木马履行后号令不克不及履行

  打消php-fpm账户对sh的履行权限。

  4. 号令履行后权限不克不及太高

  Php-fpm账户不要用root或加进root组。

  nginx本身不克不及措置PHP,它只是个web办事器,当领遭到要求后,假定是php要求,则发给php诠释器措置,并把成果返回给客户端。nginx通常为把要求发fastcgi治理过程措置,fastcgi治理过程选择cgi子过程措置成果并返回被nginx。

  0x06 Nginx安然建设方案

  1. 点窜网站目次所有者为非php-fpm运行账户,此处点窜所有者为root。

  号令:

  chown -R root:root html/

  2. 点窜nginx及php-fpm的运行账户及组为nobody

  nginx.conf

  Php-fpm.conf

  3. 打消nobody对所有目次的的读取权限,然后添加对网站目次的读取权限

  号令:

  chmod o-r –R /

  chmod o+r –R html/

  4. 打消nobody对/bin/sh 的履行权限

  chmod 776 /bin/sh

  5. 确认网站目次对nobody的权限为可读可履行,对网站文件的权限为可读

  6. 对上传目次或写进写文件的目次添加nobody的写进权限

  7. 建设nginx.conf 对上传目次无php的履行权限

  8. 建设nginx.conf避免拜候的文件夹,如后台,或限制拜候ip

  9. 建设nginx.conf避免拜候的文件类型,如一些txt日记文件

------分隔线----------------------------

推荐内容