nginx 安全加固心得

nginx发展多年,自身的安全漏洞比较少,发现软件漏洞,一般利用软件包管理器升级一下就好了。

在做安全加固的时候,我们一定要头脑清晰,手里拿着刀,一刀一刀的切,将我们不想要的流量干掉,除去隐患。

1、屏蔽IP

假设我们的 站只是一个国内小站,有着公司业务,不是靠广告生存的那种,那么可以用geoip模块封杀掉除中国和美国外的所有IP。这样可以过滤大部分来自国外的恶意扫描或者无用访问。不用担心封杀了 络蜘蛛。主流的 络蜘蛛(百度/谷歌/必应/搜狗)已经包含在了我们的IP范围内了。如果是公 的登录后台,更应该屏蔽彻底一点。

1 2 3 if  ( $geoip_country_code !~  ^(CN|US)$ ) {          return  403; }

(很多人担心geoip库不够准确,诚然,中国城市级别的IP段会有误差,但是国家级别的IP段一般是没有问题的,并且geoip库可以随时在线更新)

2、封杀各种user-agent

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

1 2 3 4 5 6 if ($http_user_agent ~* "java|python|perl|ruby|curl|bash|echo|uname|base64|decode|md5sum|select|concat|httprequest|httpclient|nmap|scan" ) {      return 403; } if ($http_user_agent ~* "" ) {      return 403; }

这里分析得不够细致,具体的非法user-agent还得慢慢从日志中逐个提取。

通过上面两个大招,相信你的日志里很快就会有大量的403记录。,我们接着干。

(如果 站提供公共api,注意与开发者约定好UA,防止撞墙)

3、封杀特定的url

特定的文件扩展名,比如.bak

1 2 3 location ~* .(bak|save|sh|sql|mdb|svn|git|old)$ { rewrite ^/(.*)$  $host  permanent; }

知名程序,比如phpmyadmin

1 location /(admin|phpadmin|status)  { deny all; }

4、封杀特定的http方法和行为,比如

1 2 3 4 5 6 7 if  ($request_method !~ ^(GET|POST|HEAD)$ ) {      return  405; }   if  ($http_range ~  "d{9,}" ) {      return  444; }

5、强制 站使用域名访问,可以逃过IP扫描,比如

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年10月6日
下一篇 2017年10月6日

相关推荐

1 2 3