本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 ====== Memcached安全配置 ====== ==== 1、Memcached简介 ==== ---- Memcached是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。 Memcached是danga的一个项目,由LiveJournal的Brad Fitzpatrick开发,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。 Memcached是以守护程序方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。 ==== 2、Memcached服务器架设 ==== ---- 安装memcached服务端 <code bash>yum install memcached</code> 安装php扩展操作memcached <code bash>yum -y install php-pecl-memcache</code> 查看php扩展是否安装成功 <code bash>php -m | grep memcache</code> 启动memcached服务 <code bash>memcached -d -m 100 -u root -l x.x.x.x -p 11211 -c 512 -P /tmp/memcached.pid</code> 参数说明: <code bash> -d选项是启动一个守护进程; -m是分配给Memcache使用的内存数量,单位是MB,我这里是100MB; -u是运行Memcache的用户,我这里是root; -l是监听的服务器IP地址我这里指定了服务器的IP地址x.x.x.x; -p是设置Memcache监听的端口,我这里设置了11211,最好是1024以上的端口; -c选项是最大运行的并发连接数,默认是1024,我这里设置了512,按照你服务器的负载量来设定; -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid; </code> 结束memcached进程 <code bash>kill `cat /tmp/memcached.pid`</code> 设置memcached开机启动 <code bash>chkconfig memcached on</code> ==== 3、错误配置及利用 ==== ---- Memcached服务器端都是直接通过客户端连接后直接操作,没有任何的验证过程,且Mecached默认以root权限运行。因而如果Mecached服务器直接暴露在互联网上的话是比较危险,轻则造成敏感数据泄露,重则可导致服务器被入侵。 <code bash> stats #显示memcached的运行状态 version #显示版本号 stats items #列出item add key 0 60 5 #增加一个item名为key,存活时间60s,大小为5字节 12345 #key的值 stats cachedump <item: id> <返回结果数量,0代表返回全部> #查看item信息 get key #取得key的值 delete key #删除key </code> ==== 4、实际案例 ==== ---- [[http://www.wooyun.org/bugs/wooyun-2010-0790|WooYun: memcached未作IP限制导致缓存数据可被攻击者控制]] [[http://www.wooyun.org/bugs/wooyun-2013-037301|WooYun: 通过Memcache缓存直接获取某物流网用户密码等敏感数据]] [[http://www.wooyun.org/bugs/wooyun-2013-023891|WooYun: 56.com memcached端口可以远程使用]] ==== 5、修复方案 ==== ---- **限定访问的IP** 使用iptables限制访问IP,只允许IP为X.X.X.X的主机访问memcached: <code bash> iptables -F iptables -P INPUT DROP iptables -A INPUT -p tcp -s X.X.X.X --dport 11211 -j ACCEPT iptables -A INPUT -p udp -s X.X.X.X --dport 11211 -j ACCEPT </code> ==== 6、漏洞扫描与发现 ==== ---- **半手动扫描** memcache默认是11211端口,可使用nmap扫描服务器的11211端口: <code bash> nmap -n --open -p 11211 X.X.X.X/24 telnet X.X.X.X 11211 stats items </code> ==== 7、相关资源 ==== ---- [[http://memcached.org/|memcached官网]]