Centos 7.4 安装memcached 及启用 sasl 用户名与密码验证绑定安全配置(适合萌新用户)
由于Memcached本身没有做验证访问模块,一旦发布到公网,任何人都能通过ip访问。虽然可以使用iptables通过设置ip白名单限制访问ip,但仍然无法做到针对所有访问的控制的限制。如果能够做到需要使用用户名和密码来访问,这无疑会更加安全,而Cyrus-SASL就能够这样帮助我们。
SASL全称Simple
Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。简单来说SASL是一个胶合(glue)库,通过这个库把应用层与形式多样的认证系统整合在一起。SASL是一个认证过程,侧重于信任建立过程,通过使用pam、shadow等认证方式来验证什么人可以访问什么服务。在Memcached上使用SASL认证,具体的认证交给SASL,SASL会根据相应的认证机制来完成验证功能。
第一:memcached安装
如果编译安装Memcached 安装前需要安装依赖库libevent,这里是通用centos yum安装,可以直接用 yum 对 memcached进行安装命令如下 (编译安装这里忽略):
- 服务安装 yum -y install memcached
- 服务启动 systemctl start memcached
- 查看启动服务进程情况 ps –ef|grep memcached
- 默认启动端口是 11211, 服务启动完毕之后可以直接 telnet IP地址 11211 ,进行连接验证是否运行成功,在弹出窗口中输入 stats 命令回车,可获取服务信息内容
- 服务关闭 systemctl stop memcached
- 服务状态查看 systemctl status memcached
- 开机自动启动服务 systemctl enable memcached
第二:sasl安装
- centos 7.4 系统默认安装 并没有将sasl全部将包安装上,所以使用saslauthd服务前需要安装处理, 查询sasl已安装包
rpm -qa | grep sasl
我这里发现只有一个cyrus-sasl-lib包 要能够使用SASL服务应要确保有cyrus-sasl-devel和cyrus-sasl-lib两个包,如果缺少这两个包,在安装带—enable-sasl参数的Memcached时会有错误 - 先查看sasl包在 yum源上情况 yum list sasl
- 对缺少的包进行安装 yum -y install cyrus-sasl cyrus-sasl-devel cyrus-sasl-plain
- 安装好之后再一次执行rpm -qa | grep sasl 看是否已经安装成功
- 服务启动 systemctl start saslauthd
- 查看启动进程服务情况 ps aux | grep saslauthd
- 同样也可以用,停止 systemctl stop saslauthd,开机自动启动systemctl enable saslauthd等。
下面配置成使用shadow方式去认证,也就是直接用linux /etc/shadow文件中的用户账户及密码进行验证。因此,在配置文件/etc/sysconfig/saslauthd中,应修改当前系统所采用的密码验证机制为shadow
- 查看密码验证机制,输入
saslauthd -v
#修改/etc/sysconfig/saslauthd文件, vi /etc/sysconfig/saslauthd 将MECH=pam 改为 MECH=shadow - 配置文件修改完毕,记得重启服务程序
systemctl restart saslauthd - #添加用户给指定的程序,对memcached 服务程序设置SASL认证密码,由于yum 安装memcached ,已默认生成linux用户memcached ,所以下面直接绑定这个用户,注意命令完毕之后再输入跟LINUX 下memcached 账号密码一样即可(如果忘记用户密码: passwd memcached 进行重置处理)。
saslpasswd2 -a memcached -c memcached
3.可以查看当前的SASL用户
sasldblistusers2
4.测试生成绑定的用户是否成功,进行验证,要是linux系统里用户
testsaslauthd -u memcached -p 'mypasswd’
0:
OK “Success.”
终于成功了。 - 如果想修改用户密码,直接执行添加命令覆盖,如果想删除用户,如删除用户memcached ,使用下面命令:saslpasswd2 –d memcached
第三:memcached 启用 saslauthd验证
- 需修改默认的配置文件,查找配置文件 find / -name memcached
- 为安全考虑修改默认的配置文件 /etc/sysconfig/memcached , 将其中的默认端口为21211,启动带SASL验证的Memcached服务器很简单,只需要在以往的命令后面加上-S参数,所以在OPTIONS 参数中加入 –S (其作用是开启sasl验证)
PORT="21211"
USER=“memcached”
MAXCONN=“1024”
CACHESIZE=“64”
OPTIONS=" -S " - /etc/sysconfig/memcached 配置文件修改完毕保存之后,记得重启服务 systemctl restart memcached
主要细节地方:
编译安装话要支持sasl模块必须如下加上编译:
./configure –enable-sasl --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
如果memcached 版本大于1.4.3 以上, yum 安装时候是已经集成–enable-sasl模块(memcached从1.4.3版本开始,能支持SASL认证)。
启动命令参数:
./memcached -d -m 1024 -S -l 192.168.2.83 -p 21212 -u memcached
如果是通过 systemctl start memcached 方式启动,用开发程序连接登陆验证有问题
查看日志:SASL (severity 1): unable to open Berkeley db /etc/sasldb2: Permission denied, 直接命令行(
/usr/bin/memcached -u memcached -p 21211 -m 64 -c 1024 -S -d)启动没问题, 引起问题原因 是/etc/sasldb2 权限问题, 要么直接命令执行,修改权限后 chmod 755 /etc/sasldb2 再用 systemctl 启动没有,程序连接验证OK。
Memcached命令参数说明
-d是指启动一个守护进程。
-m是指分配给Memcached使用的内存数量,单位是MB,以上为1024MB。
-u是指运行Memcached的用户,推荐使用单独普通权限用户Memcached,而不要使用root权限账户。
-l是指监听的服务器IP地址,例如指定服务器的IP地址为127.0.0.1。
-p是用来设置Memcached的监听端口,默认端口为11211。建议设置1024以上的端口。
-c是指最大运行的并发连接数,默认是1024。可按照您服务器的负载量来设定。
-P是指设置保存Memcached的pid文件,例如保存在 /tmp/memcached.pid 位置。
参考网址:
http://www.lvesu.com/blog/main/cms.html?id=154
https://blog.csdn.net/qwssd/article/details/77198839
https://blog.csdn.net/blood_seeker/article/details/53367701
https://www.7kb.org/957.html