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

Linux/VPS环境下Nginx安然建设小记

时间:2013-06-06 09:59来源:TuZhiJiaMi企业信息安全专家 点击:
关于Nginx介绍我就不多说了,下面首要记实一下我所汇集的一些有效的建设,大都是和办事器安然相干的。以下部门参考了nixCraft上的《Top 20 Nginx WebServer Best Security Practices》,这篇文章很有借鉴
Tags系统安全(735)Nginx(6)安全配置(38)Linux/VPS(1)  

  关于Nginx介绍我就不多说了,下面首要记实一下我所汇集的一些有效的建设,大都是和办事器安然相干的。以下部门参考了nixCraft上的《Top 20 Nginx WebServer Best Security Practices》,这篇文章很有借鉴意义,具体讲授了Linux+Nginx办事器安然的各个方面,这篇文章的中译版叫《20个Nginx Web办事器最好安然实践》。

  1. 删除不需要的Nginx模块

  我们可能按照我们的需要建设Nginx,当然在编译时可以选择某些不需要的模块不编译进往,好比精简掉落autoindex和SSI模块,号令以下:

  ./configure --without-http_autoindex_module --without-http_ssi_module

  make

  make install

  当然在编译前可以经由过程下面的号令查看那些模块是可以开启或封锁的:

  ./configure --help | less

  2. 点窜Nginx办事器名称和版本号

  闻名的NETCRAFT网站可以很轻松的查到你办事器的把持系统和办事法度版本,或HTTP Response Header也能向我们流露这些信息,良多环境下,这些信息将为黑客进行报复打击供给根据,是以我们需要对其进行假装。

  编译Nginx源文件src/http/ngx_http_header_filter_module.c,输进以下号令:

  vi +48 src/http/ngx_http_header_filter_module.c

  找到下面两行:

  static char ngx_http_server_string[] = "Server: nginx" CRLF;

  static char ngx_http_server_full_string[] = "Server: "NGINX_VER CRLF;

  改成以下,当然具体显示甚么你可以本身定义:

  static char ngx_http_server_string[] = "Server: NOYB" CRLF;

  static char ngx_http_server_full_string[] = "Server: NOYB" CRLF;

  3. 点窜Nginx建设文件

  3.1 避免缓冲区溢出报复打击

  点窜nginx.conf并且为所有客户端设置缓冲区大年夜小限制:

  vi /usr/local/nginx/conf/nginx.conf

  编纂并且设置以下:

  ## Start: Size Limits &Buffer Overflows ##

  client_body_buffer_size 1K;

  client_header_buffer_size 1k;

  client_max_body_size 1k;

  large_client_header_buffers 2 1k;

  ## END: Size Limits &Buffer Overflows ##

  当然或许你还需要建设下面的内容以便于改良办事器机能:

  ## Start: Timeouts ##

  client_body_timeout 10;

  client_header_timeout 10;

  keepalive_timeout 5 5;

  send_timeout 10;

  ## End: Timeouts ##

  3.2 限制一些拜候

  仅承诺拜候我们指定的域名,避免有人扫描绑定当前IP的所有域名,或避免直接的IP拜候和歹意的域名绑定:

  ## Only requests to our Host are allowed

  ## i.e. nixcraft.in, images.nixcraft.in and www.nixcraft.in

  if ($host !~ ^(nixcraft.in|www.nixcraft.in|images.nixcraft.in)$ ) {

  return 444;

  }

  ##

  当然,网上还传播这么个写法:

  server {

  listen 80 default;

  server_name _;

  return 500;

  }

  限制一些编制,一般GET和POST已够我们用了,其实HTTP还定义有近似于DELETE、SEARCH等编制,用不到的话就拒尽这些编制拜候办事器:

  ## Only allow these request methods ##

  if ($request_method !~ ^(GET|HEAD|POST)$ ) {

  return 444;

  }

  ## Do not accept DELETE, SEARCH and other methods ##

  下面这段参考了WordPress的官方Nginx建设。

  3.3 全局的限制文件restrictions.conf

  # Global restrictions configuration file.

  # Designed to be included in any server {} block.

  location = /favicon.ico {

  log_not_found off;

  access_log off;

  }

  location = /robots.txt {

  allow all;

  log_not_found off;

  access_log off;

  }

  # Deny all attempts to access hidden files

  # such as .htaccess, .htpasswd, .DS_Store (Mac).

  location ~ /\. {

  deny all;

  access_log off;

  log_not_found off;

  }

  成立包含上述内容的文件,然后点窜站点建设文件,好比说这里有个示例:

  # Redirect everything to the main site.

  server {

  server_name *.example.com;

  root /var/www/example.com;

  include restrictions.conf;

  // Additional rules go here.

  }

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

推荐内容