今天中午有同事反应某系统打开很慢,觉得是电脑问题(手动偷笑)。打开网站一看,慢的连静态文件都是几KB/S的速度。这明显不合理啊。上服务器一查,CPU正常、内存正常、Web程序也正常。html
因而想到了网络带宽问题。用vnstat -i eth1 -l
一看,惊呆了😮,出网带宽达到了 162.44Mbit/s,这不是被攻击了么?缓存
继续用iftop
查看是哪一个程序占用了网络。安全
发现居然是 Memcache,这说明 Memcache 存在问题。而咱们的应用程序对 Memcache 操做的地方并很少且无异常,故猜想是 Memcache 收到了攻击,并且是前段时间很火的 UDP 反射攻击漏洞引发的。
因而在咱们对 Memcache 启动参数加了 -U 0
并重启后,流量就正常了。如下内容是关于该漏洞的详细信息和具体解决办法。服务器
Memcached 是一套经常使用的 key/value 缓存系统,因为它自己没有权限控制模块,因此对公网开放的 Memcached 服务很容易被攻击者扫描发现。该类攻击主要使用 Memcached 协议的 UDP 端口开展攻击,攻击者经过向开启了 UDP 协议支持的 Memcached 服务器上发送伪造的 IP 欺骗请求,Memcached 服务器会将大量的响应报文发往目标攻击主机,从而占用目标攻击机器的大量带宽资源,致使拒绝服务。网络
测试端口:nc -vuz IP地址 11211
测试是否对外开放 memcached 服务:telnet IP地址 11211
,若是开放了 11211 端口,则可能受影响
检查进程状态:ps -aux | grep memcached
tcp
echo -en "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" | nc -u IP地址 11211
命令查看返回内容,若返回内容非空,则代表服务器可能受到了影响。-U 0
参数并重启 memcached 服务彻底禁用 UDP;不要将服务发布到互联网上而被黑客利用,能够经过iptables
配置访问控制规则。例如,在Linux
环境中运行命令iptables -A INPUT -p tcp -s 192.168.0.2 -dport 11211 -j ACCEPT
,在iptables
中添加此规则只容许192.168.0.2
这个 IP 对 11211 端口进行访问。memcached
绑定监听 IP工具
若是 Memcached 没有在公网开放的必要,可在 Memcached 启动时指定绑定的 IP 地址为 127.0.0.1。例如,在 Linux 环境中运行如下命令:post
memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid
使用最小化权限帐号运行 Memcached 服务测试
使用普通权限帐号运行,指定 Memcached 用户。例如,在 Linux 环境中运行如下命令来运行 Memcached:
memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid
Memcached 自己没有作验证访问模块,Memcached 从 1.4.3 版本开始,能支持 SASL 认证。
修改默认端口
修改默认 11211 监听端口为 11222 端口。在 Linux 环境中运行如下命令:
memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11222 -c 1024 -P /tmp/memcached.pid
原文地址: https://shockerli.net/post/me...
更多文章请访问个人我的博客: https://shockerli.net