scvmm 发表于 2018-11-16 10:37:00

NGINX优化之路(二)WEB安全篇

  
## Block download agents ##
  
   if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
  
            return 403;
  
   }
  
说明:如果用户匹配了if后面的客户端(例如wget)就返回403
  

  
范例:添加内容防止N多爬虫代理访问网站
  

  
if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot") {
  
   return 403;
  
}
  
测试禁止不同的浏览器软件访问
  

  
if ($http_user_agent ~* "Firefox|MSIE")
  
{
  
rewrite ^(.*) http://blog.etiantian.org/$1 permanent;
  
}
  
如果浏览器为Firefox或者IE就会跳转到http:blog.etiantian.org
  
提示:
  
这里主要用了$remote_addr这个函数在记录。
  
查看更多函数
  

  
# cat fastcgi_params
  
fastcgi_paramQUERY_STRING       $query_string;
  
fastcgi_paramREQUEST_METHOD   $request_method;
  
fastcgi_paramCONTENT_TYPE       $content_type;
  
fastcgi_paramCONTENT_LENGTH   $content_length;
  
fastcgi_paramSCRIPT_NAME      $fastcgi_script_name;
  
fastcgi_paramREQUEST_URI      $request_uri;
  
fastcgi_paramDOCUMENT_URI       $document_uri;
  
fastcgi_paramDOCUMENT_ROOT      $document_root;
  
fastcgi_paramSERVER_PROTOCOL    $server_protocol;
  
fastcgi_paramHTTPS            $https if_not_empty;
  
fastcgi_paramGATEWAY_INTERFACECGI/1.1;
  
fastcgi_paramSERVER_SOFTWARE    nginx/$nginx_version;
  
fastcgi_paramREMOTE_ADDR      $remote_addr;
  
fastcgi_paramREMOTE_PORT      $remote_port;
  
fastcgi_paramSERVER_ADDR      $server_addr;
  
fastcgi_paramSERVER_PORT      $server_port;
  
fastcgi_paramSERVER_NAME      $server_name;
  
# PHP only, required if PHP was built with --enable-force-cgi-redirect
  
fastcgi_paramREDIRECT_STATUS    200;
  
利用Nginx限制HTTP的请求方法
  
  HTTP最常用的方法为GET/POST,我们可以通过Nginx限制http请求的方法来达到提升服务器安全的目的,
  
 例如,让HTTP只能使用GET、HEAD和POST方法配置如下:
  

  
#Only allow these request methods
  
   if ($request_method !~ ^(GET|HEAD|POST)$ ) {
  
         return 501;
  
   }
  
#Do not accept DELETE, SEARCH and other methods
  
  设置对应的用户相关权限,这样一旦程序有漏洞,***就有可能被上传到服务器挂载的对应存储服务器的目录里,虽然我们也做了禁止PHP、SH、PL、PY等扩展名的解析限制,但是还是会遗漏一些我们想不到的可执行文件。对于这种情况,该怎么办捏?事实上,还可以通过限制上传服务器的web服务(可以具体到文件)使用GET方法,来达到防治用户通过上传服务器访问存储内容,让访问存储渠道只能从静态或图片服务器入口进入。例如,在上传服务器上限制HTTP的GET方法的配置如下:
  

  
## Only allow GET request methods ##
  
   if ($request_method ~* ^(GET)$ ) {
  
         return 501;
  
   }


页: [1]
查看完整版本: NGINX优化之路(二)WEB安全篇