linux nginx php***排查及加固整理

1、改变目录和文件属性,禁止写入
 find -type f -name \*.php -exec chmod 444 {} \;
 find -type d -exec chmod 555 {} \;
 注:当然要排除上传目录、缓存目录等;
 同时最好禁止chmod函数,***者可通过chmod来修改文件只读属性再修改文件
2、php配置
 禁用危险函数
 passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,
 ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,popen,dl,
 syslog,show_source

3、nginx配置
 限制一些目录执行php文件
  location~^/p_w_picpaths/.*\.(php|php5)$
  {
  denyall;
  }
  
  location~^/static/.*\.(php|php5)$
  {
  denyall;
  }

  location~*^/data/(p_w_upload|avatar)/.*\.(php|php5)$
  {
  denyall;
  }
  注:这些目录的限制必须写在
   location~.*\.(php|php5)$
    {
     fastcgi_pass127.0.0.1:9000;
     fastcgi_indexindex.php;
     include fcgi.conf;
    }
   的前面,否则限制不生效


 path_info漏洞修正:
  在通用fcgi.conf顶部加入
  if ($request_filename ~* (.*)\.php) {
  set $php_url $1;
  }
  if (!-e $php_url.php) {
  return 404;
  }

4、***查找

  php***一般含有<?php eval($_POST[cmd]);?>或者<?php assert($_POST[cmd]);?>

  find /data/wwwroot/* -type f -name "*.php" |xargs grep "eval(" > /root/scan.txt
  
  还有
   常见的一句话后门:
   grep -r --include=*.php  '[^a-z]eval($_POST' . > grep.txt
   grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > grep.txt
   
   把搜索结果写入文件,下载下来慢慢分析,其他特征***、后门类似。有必要的话可对全站所有文件来一次特征查找,上传图片肯定有也捆绑的,来次大清洗。
5、查找近3天被修改过的文件:
 find /data/www -mtime -3 -type f -name \*.php
  注意:***者可能会通过touch函数来修改文件时间属性来避过这种查找,所以touch必须禁止


参考文章

http://hi.baidu.com/zxm_xdl/blog/item/cbbaa9349a3df5a5d1a2d3b4.html

http://hi.baidu.com/goodtangyb/blog/item/4233142618af820d8b82a16d.html