Memcached安全性
1.Memcached -l参数
最近整理了组内使用的Memcached。发现很多问题,其中一个问题就是开发机器测试机器可以直连线上的Memcached。这也是memcached公认的问题:memcached 是一种很简单、有效的协议,但也有其缺点,就是 memcached 自身没有 ACL 控制(或者相当弱)。
Memcache服务器端都是直接通过客户端连接后直接操作,没有任何的验证过程,这样如果服务器是直接暴露在互联网上的话是比较危险,轻则数据泄露被其他无关人员查看,重则服务器被入侵。
乌云也爆料过很多网站的memcached的安全性问题: http://www.wooyun.org/bugs/wooyun-2010-0790 http://www.wooyun.org/bugs/wooyun-2013-023891 http://www.wooyun.org/bugs/wooyun-2013-037301
通过-l参数可以再已定成都上做到安全的限制:
- 如果限定只要自己能够使用本机的Memcached,可以直接将-l参数绑定到回路地址127.0.0.1.
- 如果是后台系统且有自己的私有IP,最好将-l参数绑定到私有IP上(比如192.168.0.200).
如果Memcached非要挂在公网IP上,就需要做防火量限制,如下面说道的iptables。
2.使用iptable
ACL 最简单的设置方法就是在网络层,直接拒绝掉你的访问,通过iptable可以实现这个功能。
假如我们的一台 memcached 的机器,想拒绝除了自身之外的访问,假如机器自己IP是:XX.XX.XX.184,那么我们可以以root身份用下面几条命令来达到我们的目的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
这里使用的是iptables的filter功能,其filter是一种链式结构且有从前往后依次执行。满足某一条filter规则就不往下走了。因此基于这个原则,我们需要将最严格的规则放在最前面。
删除某一条规则,其中的1就是iptables -L -n –line-number中的num号。如下会删除Chain INPUT中的编号为1的规则:
1 | |
可以使用iptables -F 清空所有规则.
3.不需要Root权限
启动Memcached不需要Root权限,这样能避免Memcached被入侵而造成更大的危害。
参考: http://blog.couchbase.com/memcached-security http://serverfault.com/questions/424324/how-to-secure-memcached
相关 [memcached 安全] 推荐:
memcached+magent实现memcached集群
- - 编程语言 - ITeye博客MemCached详解
- - CSDN博客推荐文章Memcached调优
- - 四火的唠叨memcached协议
- - 开源软件 - ITeye博客Java使用memcached
- - 互联网 - ITeye博客c:>memcached.exe -l 127.0.0.1 -m 32 -d start.