Memcached安全配置
1、Memcached简介
Memcached是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
Memcached是danga的一个项目,由LiveJournal的Brad Fitzpatrick开发,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。
Memcached是以守护程序方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。
2、Memcached服务器架设
安装memcached服务端
yum install memcached
安装php扩展操作memcached
yum -y install php-pecl-memcache
查看php扩展是否安装成功
php -m | grep memcache
启动memcached服务
memcached -d -m 100 -u root -l x.x.x.x -p 11211 -c 512 -P /tmp/memcached.pid
参数说明:
-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;
结束memcached进程
kill `cat /tmp/memcached.pid`
设置memcached开机启动
chkconfig memcached on
3、错误配置及利用
Memcached服务器端都是直接通过客户端连接后直接操作,没有任何的验证过程,且Mecached默认以root权限运行。因而如果Mecached服务器直接暴露在互联网上的话是比较危险,轻则造成敏感数据泄露,重则可导致服务器被入侵。
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
4、实际案例
5、修复方案
限定访问的IP
使用iptables限制访问IP,只允许IP为X.X.X.X的主机访问memcached:
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
6、漏洞扫描与发现
半手动扫描
memcache默认是11211端口,可使用nmap扫描服务器的11211端口:
nmap -n --open -p 11211 X.X.X.X/24 telnet X.X.X.X 11211 stats items