memcached是什么

memcached是一套被广泛使用的开源高性能的、分布式内存对象缓存系统。授权协议为BSD license,主要开发语言为C语言,数据以Key/Value方式存储在内存中。

为什么要认证

memcached基于C/S架构,OpenStack的Nova等组件使用memcached作为缓存系统,由于memcached默认不开启认证机制,导致客户端无需认证即可读取、修改缓存内容。

本文介绍如何给memcached增加认证机制。

memcached认证机制

memcached目前支持的认证方式为SASL,由于memcached在1.4.3版本才加入对SASL的支持,所以要使用认证的话需要将memcached升级到>=1.4.3的版本。

目前华为公有云使用的memcached版本高于1.4.3,已实现SASL认证。

SASL是什么

SASL全称Simple Authentication and Security Layer(简单认证与安全层),是一种用来扩充C/S模式验证能力的机制,SASL只是认证过程,将应用层与系统认证机制整合起来,SASL本身不能进行认证。

SASL支持的认证方法为:getpwent kerberos5 pam rimap shadow ldap httpform。

下面以shadow为例讲解,即使用系统/etc/shadow文件中的用户名密码认证方式。

前提条件

1.版本

要使用认证的话需要将memcached升级到>=1.4.3的版本。

2.编译

增加编译选项:--enable-sasl进行编译。

3.客户端支持

如果要使用客户端,则客户端需要支持SASL,比如python-memcached目前不支持SASL,python-binary-memcached则支持SASL。

实现过程

1.配置SASL认证方式

在配置文件/etc/sysconfig/saslauthd中配置认证方式:

MECH=shadow

2.启动saslauthd进程

/usr/sbin/saslauthd -m /run/saslauthd -a shadow

3.测试saslauthd的认证功能

/usr/sbin/testsaslauthd -u os_user -p passwd_of_os_user

其中,os_user为系统用户,passwd_of_os_user为系统用户对应密码,如果用户名密码正确会返回:

0: OK "Success."

4.为memcached添加认证用户

/usr/sbin/saslpasswd2 -a memcached -c os_user

输入用户对应密码:

Password:

Again (for verification):

5.启动memcached服务,开启SASL认证

memcached –S -d -m 1024 -l 172.1.1.2 -p 11211 -u run_user

-S:开启SASL认证

至此,memcached就可以通过shadow方式(系统用户名密码)进行认证。

6.客户端示例:使用python-binary-memcached访问memcached

>>>import bmemcached

>>>client = bmemcached.Client((‘172.28.8.6:11211’, ), ‘os_user', 'passwd_of_os_user')

如果用户名密码错误会导致认证失败:

>>>client.set('key', 'value')

Traceback (most recent call last):

File "", line 1, in

File "build/bdist.linux-x86_64/egg/bmemcached/client.py", line 172, in set

File "build/bdist.linux-x86_64/egg/bmemcached/protocol.py", line 543, in set

File "build/bdist.linux-x86_64/egg/bmemcached/protocol.py", line 510, in _set_add_repla

File "build/bdist.linux-x86_64/egg/bmemcached/protocol.py", line 218, in _send

File "build/bdist.linux-x86_64/egg/bmemcached/protocol.py", line 130, in _open_connecti

File "build/bdist.linux-x86_64/egg/bmemcached/protocol.py", line 293, in _send_authenti

bmemcached.exceptions.memcachedException: Code: 32 Message:Auth failure.

总结

为memcached打开SASL认证可以提高memcached的安全性,但是,memcached为高性能缓存系统,增加认证无疑会带来一定的性能损耗,所以在使用的时候要权衡利弊。一般情况下,memcached需要部署在信任的网络中,如果无法启用SASL,建议把memcached部署在防火墙后。

参考链接

linux+sasl认证失败,memcached+SASL:更安全地访问memcached相关推荐

  1. linux+sasl认证失败,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    一.为postfix开启基于cyrus-sasl的认证功能. 修改/etc/sysconfig/saslauthd文件中的 MECH=pam 改为 MECH=shadow 启动saslauthd se ...

  2. go kafka 配置SASL认证及实现SASL PLAIN认证功能

    用户认证功能,是一个成熟组件不可或缺的功能.在0.9版本以前kafka是没有用户认证模块的(或者说只有SSL),好在kafka0.9版本以后逐渐发布了多种用户认证功能,弥补了这一缺陷(这里仅介绍SAS ...

  3. linux:su认证失败

  4. linux ubuntu 切换到超级用户失败的解决办法(su 认证失败)

    如图错误: yg@ubuntu:~$ su 密码: su:认证失败 yg@ubuntu:~$ su passwd root 没有用户"passwd"的密码项 yg@ubuntu:~ ...

  5. mysql sasl_SASL认证失败的原因(authentication failed)

    SASL认证失败的原因(authentication failed) (2012-06-15 00:45:43) 标签: 杂谈 authentication failed) SASL认证失败的原因可分 ...

  6. nacos登录 提示权限认证失败 没有命名空间的访问权限

    前言 环境:centos7.9 nacos-2.2.2 问题描述 最近在部署nacos-2.2.2版本的时候,这是目前2023年4月份最新版本,发现按照start.out日志给出的登录地址,http: ...

  7. saslauthd mysql_启用MemCached的SASL认证

    #首先安装pam-mysql}H-Gm8h~0 wget "http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar ...

  8. php7 memcached sasl,启用MemCached的SASL认证

    #首先安装pam-mysql wget "http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz" ...

  9. linux(CentOS)之postfix服务器sasl认证和基于cyrus-sasl访问控制

    一.为postfix开启基于cyrus-sasl的认证功能. 修改/etc/sysconfig/saslauthd文件中的 MECH=pam 改为 MECH=shadow 启动saslauthd se ...

  10. 【 Linux 】Vim的基本配置以及出现问题解决(su认证失败)

    [ Linux ]安装.配置并用 Vim 编写第一个 C 程序 上篇博文我们记录了如何在Vim下编写第一个C程序,总算成功了,可是使用Vim的体验并没有那么好,那是因为没有配置Vim,对于新手来说,如 ...

最新文章

  1. 使用Win32汇编开发一个dll并在C#中调用
  2. Serverless Kubernetes 容器服务介绍
  3. 重新探讨一下《APEX英雄》系统设计的亮点
  4. 【从入门到放弃-Java】并发编程-锁-synchronized
  5. 用python + openpyxl处理excel(07+)文档 + 一些中文处理的技巧
  6. 树莓派 zero cpu:elpida b4432bbpa-1d
  7. 海洋CMS插件-内置接口的海洋CMS插件
  8. three.js示例之旋转立方体
  9. 数学和编程-王垠博客
  10. 小白学编程(CSS):跳动的文字
  11. java根据身份证号计算持有者年龄--超容易
  12. 两个用于谷歌输入法的颜文字拓展
  13. 华为有国产芯片的服务器吗,华为、飞腾扛旗,国产服务器芯片有望突破!ARM要替代x86?...
  14. Java-UDP通信(实现多发多收、广播、组播)
  15. 在Word中设置页面B5的问题
  16. i.i.d 独立同分布
  17. 数据结构28——高精度计算PI值
  18. 如何查看NVIDIA显卡显存使用率
  19. Linux apache服务器(上)
  20. 我花了十八年时间才能和你坐在一起喝咖啡

热门文章

  1. ios 获取是否静音模式_iOS 判断设备是否静音
  2. 《关键对话,如何高效能沟通》读书笔记(上)
  3. 显示隐藏文件 for Mac
  4. Pr 入门教程:如何调整音频轨道音量?
  5. Python四舍五入问题详解
  6. Java中通过某一年的两个时间计算天数
  7. 二重积分的计算 —— 交换积分顺序(exchange the order of integration)
  8. nginx.conf配置外部 .conf文件
  9. 聚币网API[Python3版]
  10. html link canonical