中间件安全之Nginx安全加固

/ 实用技巧 / 0 条评论 / 2850 浏览

本站的所有程序和文章,仅限用于学习和研究目的;不得用于商业或者非法用途,否则,一切后果请用户自负!!

nginx介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强。

中间件安全之Nginx安全加固

nginx加固

1、禁止目录浏览

  备份nginx.conf配置文件。

  编辑配置文件,HTTP模块添加如下一行内容:

autoindex off;

  保存,然后后重启nginx服务。

2、错误页面

备份nginx.conf配置文件。

  修改配置,在http{}段加入如下内容,可以防止信息泄露

http {  
...  
fastcgi_intercept_errors on;  
error_page 401 /401.html;  
error_page 402 /402.html;  
error_page 403 /403.html;  
error_page 404 /404.html;  
error_page 405 /405.html;  
error_page 500 /500.html;  
...  
}  
修改内容:  
ErrorDocument 400 /custom400.html  
ErrorDocument 401 /custom401.html  
ErrorDocument 403 /custom403.html  
ErrorDocument 404 /custom404.html  
ErrorDocument 405 /custom405.html  
ErrorDocument 500 /custom500.html

其中401.html、402.html、403.html、404.html、405.html、500.html 为要指定的错误提示页面。

3、限制不必要的HTTP方法

备份nginx.conf配置文件。

  编辑配置文件,添加如下内容:

if ($request_method !~ ^(GET|POST)$ ) {  
return 444;  
}

  保存,然后后重启nginx服务。

  备注:只允许常用的GET和POST方法(如果是rest风格api可以不用设置)

4、Nginx降权

  备份nginx.conf配置文件。

创建一个普通用户useradd www-data -s /sbin/nologin -M

  编辑配置文件,添加如下一行内容:

 user www-data;

  保存,然后后重启nginx服务。

5、隐藏版本信息(不要用低版本nginx)

  备份nginx.conf配置文件。

  编辑配置文件,添加http模块中如下一行内容:

server_tokens off;

  保存,然后后重启nginx服务。

6、日志配置

  1、备份nginx.conf 配置文件。

  修改配置,按如下设置日志记录文件、记录内容、记录格式,添加标签为main的log_format格式

(http标签内,在所有的server标签内可以调用):  
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
   '$status $body_bytes_sent "$http_referer" '  
   '"$http_user_agent" "$http_x_forwarded_for"';

  2、在server标签内,定义日志路径

access_log logs/host.access.log main

  3、保存,然后后重启nginx服务。

7、控制缓冲区溢出攻击

编辑nginx.conf,为所有客户端设置缓冲区的大小限制。

client_body_buffer_size 1K;  
client_header_buffer_size 1k;  
client_max_body_size 1k;  
large_client_header_buffers 2 1k;

8、封杀各种爬虫扫描器user-agent

user-agent 也即浏览器标识,每个正常的web请求都包含用户的浏览器信息,除非经过伪装,恶意扫描工具一般都会在user-agent里留下某些特征字眼,比如scan,nmap等。我们可以用正则匹配这些字眼,从而达到过滤的目的,请根据需要调整。

if($http\_user\_agent ~* "java|python|perl|ruby|curl|bash|echo|uname|base64|decode|md5sum|select|concat|httprequest|httpclient|nmap|scan") {

return403;

}

if($http\_user\_agent ~* "") {

return403;

}

本文最后编辑时间为: 2020-04-11

如本文对你有帮助,点击广告支持一下吧,创造不易。

safe6