memcache是国外社区网站Live Journal的开发团队开发的高性能的分布式内存缓存服务器。
一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高扩展性。
memcache的默认端口是11211,不需要密码即可访问,黑客直接访问即可获取数据库中所有信息,造成严重的信息泄露。
利用telnet 探测目标11211端口
telnet xx.xx.xx.xx 11211
无需用户名密码,可以直接链接memcache服务的11211端口。
stats //查看memcache 服务状态
stats items //查看所有items
stats cachedump 32 0 //获得缓存key
get :state:264861539228401373:261588 //通过key读取相应value ,获得实际缓存内容,造成敏感信息泄露
使用treesoft数据库管理系统连接memcache数据库。
memcache无权限控制功能,所以需要对访问来源进行限制。
1.配置访问控制
建立iptables规则,只允许某一ip对memcache的端口进行访问。
iptables -A INPUT -p tcp -s 192.168.0.2 —dport 11211 -j ACCEPT
2.绑定监听ip
memcache如果没有开在外网的必要,可以在memcache启动时绑定ip地址为127.0.0.1.
memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid
3.最小化权限运行
使用普通账号运行,指定memcache用户运行
memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid
4.修改默认端口
修改默认11211监听端口为其他端口
memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11222 -c 1024 -P /tmp/memcached.pid
5.备份数据
为避免数据丢失,升级前做好备份,或ECS建立硬盘快照。
参数说明:
-d选项是启动一个守护进程;
-m是分配给Memcached使用的内存数量,单位是MB;
-u是运行Memcached的用户,推荐单独普通权限用户:memcached,不要使用root权限账户;
-l是监听的服务器IP地址;
-p是设置Memcached监听的端口,最好是1024以上的端口;
-c选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定;
-P是设置保存Memcached的pid文件,这里是保存在 /tmp/memcached.pid;