安装并配置支持sasl的Memcached服务器

网上有很多Memcached配置教程,但是也是比较混乱或者比较老的版本了。这里也整理一下。

1.先安装依赖包libevent
wget https://soft.huayizhiyun.com/manage/directadmin/memcached/memcached/libevent-2.1.8-stable.tar.gz
tar -zxvf libevent-2.1.8-stable.tar.gz
cd libevent-2.1.8-stable
./configure --prefix=/usr
make
make install
cd ..
ll /usr/lib | grep libevent
2.安装memcached
#最新版1.5.11开启sasl用户验证功能会报错"Error initializing sasl"不知道什么原因1.5.0又没问题
wget https://soft.huayizhiyun.com/manage/directadmin/memcached/memcached/memcached-1.5.0.tar.gz
tar -zxvf memcached-1.5.0.tar.gz
cd memcached-1.5.0
./configure --with-libevent=/usr --enable-sasl --prefix=/usr/local/memcached
make
make install
cd ..
ln -s /usr/local/memcached/bin/memcached /usr/bin/memcached
3.测试Memcached
#直接启动memcached
memcached -d -m 512 -u root -l 127.0.0.1 -p 11211 -c 1024 -P /var/run/memcached.pid
写一个php测试文件,执行后显示100就是成功了.
<?php
$m = new Memcached();
$m->addServer( '127.0.0.1', 11211 );
$m->set( 'test', 100 );
echo $m->get( 'test' ) . "\n";
?>
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会根据相应的认证机制来完成验证功能。

yum -y install cyrus-sasl-devel cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain
/etc/init.d/saslauthd start
chkconfig saslauthd on
#添加用户 anxinyun对应的是用户名,然后按提示设置密码
saslpasswd2 -a memcached -c anxinyun
#列出用户
sasldblistusers2
#删除用户
saslpasswd2 –d anxinyun
#杀掉原来的进程
cat /var/run/memcached.pid | xargs kill
#开启支持SASL认证的memcached进程
memcached -d -m 512 -u root -l 127.0.0.1 -p 11211 -c 1024 -S -P /var/run/memcached.pid
5.测试SASL认证的Memcached
写一个php测试文件,执行后显示100就是成功了.
<?php
$m = new Memcached();
$m->addServer( '127.0.0.1', 11211 );
$m->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
$m->setSaslAuthData("anxinyun","密码");//这里填上面添加的账号和密码
$m->set( 'test', 100 );
echo $m->get( 'test' ) . "\n";
?>
6.init.d脚本
wget https://soft.huayizhiyun.com/manage/directadmin/memcached/memcached/init.d.memcached -O /etc/init.d/memcached
chmod +x /etc/init.d/memcached
chkconfig --add memcached

给我留言

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