Memcached 鉴权方案

1. 背景介绍

Memcached 和 Redis 类似,默认情况下没有配置任何认证鉴权措施,对所有网络可达的客户端可访问。
因此一般该类缓存服务多部署在可信的网络环境里,但是如果需要暴露给不可信的网络,同时也是为了安全合规的考虑,需要进行一些加固。

2. 加固方案

2.1 【方案一】配置监听地址仅限本地回环地址

在 memcached 的配置文件,或者启动参数中,使用 ** -l 127.0.0.1 ** 指定监听的 ip 地址
示例配置: (假设均通过发行版软件仓库安装)
* ** Red Hat 系: /etc/sysconfig/memcached **

  • ** Debian 系: /etc/memcached.conf **

2.2 【方案二】配置防火墙 ACL 策略

使用 iptables 等手段控制 memcached 的端口ACL策略,示例如下:

  • 仅限来自指定 IP 段的访问

  • 屏蔽任何其他 IP 对 Memcached 端口的访问

2.3 【方案三】配置认证鉴权策略

Memcached 1.4.3 及之后的版本,如果编译时开启了 --enable-sasl,则可以使用 sasl 配置认证。

2.3.1 安装 SASL 管理工具

  • Red Hat 系:(CentOS 7)

  • Debian 系:

2.3.2 设置用于 Memcached 的 SASL 用户名密码

  • 运行以下命令,指定需要的用户名,然后输入两次密码即可

    • 由于 SASL 账户密码默认保存在 /etc/sasldb2 文件里,但是该文件权限为 0640 或者 0660,对于运行 Memcached 的 user/group 不可读,因此需要做一些权限上面的修改。

** 注意: 修改 sasldb2 的属组是一个简单讨巧的方法,但请确认是否有其他服务依赖该文件的权限配置**

  • 配置该文件的属组为 Memcached 运行所用的 group。

    • Red Hat 系:

      sudo chown :memcached /etc/sasldb2

    • Debian 系:

      sudo chown :memcache /etc/sasldb2

2.3.3 配置 Memcached 启用 SASL 认证

在 memcached 的配置文件,或者启动参数中,使用 ** -S ** 即可开启 SASL 认证
示例配置: (假设均通过发行版软件仓库安装)
* ** Red Hat 系: /etc/sysconfig/memcached **

  • ** Debian 系: /etc/memcached.conf **

2.3.4 测试验证

使用支持 SASL 认证的 Memcached 客户端程序进行测试,下面我们使用 python 的 bmemcached 模块进行验证:

  • 安装 bmemcached

  • 运行以下 python 代码

  • 如果密码错误,会报错

3. 参考资料

  1. SASLHowto
  2. Introduction to bmemcached

发表评论

电子邮件地址不会被公开。 必填项已用*标注