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

memcached是什么

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

108069

为什么要认证

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部署在防火墙后。

参考链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kafka中可以使用SASL(Simple Authentication and Security Layer)来实现安全认证,保护Kafka集群的安全SASL提供了一种标准化的方法,用于在通信过程中进行身份验证和安全层的协商。 Kafka支持多种SASL机制,例如PLAIN、SCRAM、GSSAPI等。具体使用哪种SASL机制,取决于Kafka集群的配置和实际需求。在使用SASL认证时,需要在Kafka Broker和Client端都进行相应的配置。 在Broker端,需要配置以下参数: - security.inter.broker.protocol:设置Broker之间通信的安全协议,通常设置为SASL_PLAINTEXT或SASL_SSL。 - sasl.mechanism.inter.broker.protocol:设置Broker之间通信所使用的SASL机制。 - sasl.enabled.mechanisms:设置支持的SASL机制。 - listener.name.sasl_plaintext.sasl.server.callback.handler.class:设置SASL回调处理程序的类,该类用于验证客户端的身份。 - listener.name.sasl_ssl.sasl.server.callback.handler.class:设置SASL回调处理程序的类,该类用于验证客户端的身份。 在Client端,需要配置以下参数: - security.protocol:设置与Broker通信的安全协议,通常设置为SASL_PLAINTEXT或SASL_SSL。 - sasl.mechanism:设置客户端使用的SASL机制。 - sasl.jaas.config:设置用于身份验证的JAAS配置文件路径。 - sasl.client.callback.handler.class:设置SASL回调处理程序的类,该类用于提供客户端的凭据。 以上是一些基本参数的配置,具体的配置内容和方式可以参考Kafka官方文档或相关教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值