signed

QiShunwang

“诚信为本、客户至上”

NGINX修复弱口令漏洞

2021/6/3 15:19:17   来源:

前两天的工作内容小记。

这两天收到很多弱口令漏洞,因为我们的http转https很多时候都是通过深信服AD来配置的,所以很多修复工作是网络管理员在做。但是个别几个https是通过NGINX代理来做的,因此我这个系统管理员也需要在NGINX上进行漏洞封堵。

收到的弱口令漏洞列表如下:

47 TLS_RSA_WITH_AES_128_CBC_SHA TLS 1.2 
53 TLS_RSA_WITH_AES_256_CBC_SHA TLS 1.2 
60 TLS_RSA_WITH_AES_128_CBC_SHA256 TLS 1.2 
61 TLS_RSA_WITH_AES_256_CBC_SHA256 TLS 1.2 
65 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA TLS 1.2 
132 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA TLS 1.2 
156 TLS_RSA_WITH_AES_128_GCM_SHA256 TLS 1.2 
157 TLS_RSA_WITH_AES_256_GCM_SHA384 TLS 1.2 
186 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 TLS 1.2 
192 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 TLS 1.2 
49232 TLS_RSA_WITH_ARIA_128_GCM_SHA256 TLS 1.2 
49233 TLS_RSA_WITH_ARIA_256_GCM_SHA384 TLS 1.2 
49308 TLS_RSA_WITH_AES_128_CCM TLS 1.2 
49309 TLS_RSA_WITH_AES_256_CCM TLS 1.2 
49312 TLS_RSA_WITH_AES_128_CCM_8 TLS 1.2 
49313 TLS_RSA_WITH_AES_256_CCM_8 TLS 1.2 

好家伙,支持一堆弱口令加密套件。
网上所采用的方法普遍是列出允许和不允许的一堆列表,比如有这样的

ssl_ciphers"ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers on;

这样的

ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + aRSA + SHA384 EECDH + aRSA + SHA256 EECDH + aRSA + RC4 EECDH EDH + aRSA HIGH!RC4!aNULL!eNULL!LOW!3DES !MD5!EXP!PSK!SRP!DSS";
ssl_prefer_server_ciphers on;

还有这样的

ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

这种一长串的几个都失败了,再扫描仍然存在漏洞。最后甚至根据规则,我尝试在字符串后面还加了类似!TLS-RSA-WITH-AES-128-CCM-8这样的内容,仍然是不行,后来查找到了一个靠谱的方法

ssl_ciphers 'AES128+EECDH:AES128+EDH';
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:10m;

搞定,扫描无漏洞。

原因是:

  1. 这一长串里面应该也有需要封堵的弱口令加密套件,网上的资料存在滞后性,以前能通过的协议现在不能通过扫描了。
  2. TLS版本协议也需要设置。

最后做完封堵扫描完没问题,一定要在所有类型的终端(浏览器、手机浏览器)试一下没有问题才行。因为不同的终端对协议的支持是不一样的,有些终端可能存在不支持这些协议的现象,这种情况下还要考虑如何使得终端支持现有加白协议(比如IE换chrome或firefox)。