首页 » 应用安全 » 数据库 » Memcache » 正文

Memcached 安全加固

通常将使用率高的数据放在memcache中,用以减小查询数据库所造成的消耗。

Memcache服务器端都是直接通过客户端连接后直接操作,没有任何的验证过程,这样如果服务器是直接暴露在互联网上的话是比较危险,轻则数据泄露被其他无关人员查看,重则服务器被入侵,因为Mecache是以root权限运行的,况且里面可能存在一些我们未知的bug或者是缓冲区溢出的情况,这些都是我们未知的,所以危险性是可以预见的。

1,内网访问

最好把两台服务器之间的访问是内网形态的,一般是 Web 服务器跟 Memcache 服务器之间。普遍的服务器都是有两块网卡,一块指向互联网,一块指向内网,那么就让 Web 服务器通过内网的网卡来访问Memcache 服务器,我们 Memcache 的服务器上启动的时候就监听内网的IP地址和端口,内网间的访问能够有效阻止其他非法的访问。

# 在 IP 192.168.0.200 的 11211 端口提供服务,占用 1024MB 内存,最大允许 1024 个并发连接
memcached -d -m 1024 -u root -l 192.168.0.200 -p 11211 -c 1024 -P /tmp/memcached.pid

2,设置访问控制

防火墙是简单有效的方式,如果却是两台服务器都是挂在网的,并且需要通过外网IP来访问Memcache的话,那么可以考虑使用防火墙或者代理程序来过滤非法访问。 一般我们在Linux下可以使用iptables或者FreeBSD下的ipfw来指定一些规则防止一些非法的访问,比如我们可以设置只允许我们的Web服务器来访问我们Memcache服务器,同时阻止其他的访问。

# 清除访问控制列表
iptables -F

# 设置默认阻止
iptables -P INPUT DROP

# 仅允许主机 192.168.0.2 访问 11211 端口
iptables -A INPUT -p tcp -s 192.168.0.2 --dport 11211 -j ACCEPT
iptables -A INPUT -p udp -s 192.168.0.2 --dport 11211 -j ACCEPT

3,SASL 认证

在多用户环境下,可能需要为 Memcached 启用 SASL 认证,Memcached 在 1.4.3及后续版本开始支持。

要启用 SASL 认证,可能需要重新编译服务端,下面是重新编译前配置所需加入的参数:

./configure –prefix=%{datadir}  –enable-sasl

配置并重新编译的程序,在启动时可以追加 -S 参数,启动 SASL 认证支持。

memcached -S -d -m 1024 -u memuser -l 192.168.0.200 -p 11211 -c 1024 -P /tmp/memcached.pid

SASL认证也可以有很多种认证机制,比如shadow、pam、ldap等,下面以使用 shadow 方式认证为例介绍配置方法。

首先,修改 /etc/sysconfig/saslauthd 文件,设置认证方式:

vi /etc/sysconfig/saslauthd

MECH=shadow

然后,创建一个普通操作系统用户,执行下面的命令将用户加入 SASL 认证数据库,并绑定应用 Memcached 应用:

# 查看认证数据库中的绑定记录
sasldblistusers2
# 为用户 memuser 创建 memcached 应用的认证记录
saslpasswd2 -c -a memcached memuser

最后,重启 saslauthd 服务,使用下面的命令测试配置是否正确:

# 重启服务
/etc/init.d/saslauthd restart

# 测试用户认证
testsaslauthd -u memuser -p xxxxxx

测试成功后就可以在客户端使用了。

 

发表评论