帮酷LOGO
0 0 评论
文章标签:Memcached  Ubuntu  memcache  secure  

介绍

像Memcached这样的内存对象缓存系统可以通过在内存中临时存储信息,保留频繁或最近请求的记录来优化后端数据库的性能。这样,它们减少了对数据库直接请求的数量。

在本指南中,我们将介绍如何通过将安装绑定到本地或专用网络接口,并且为Memcached实例创建授权用户来保护Memcached服务器。

前提条件

本教程假定你有一个服务器设置为非根sudo用户和基本防火墙,

Ubuntu 18.04服务器,按使用Ubuntu 18 04进行初始服务器设置配置,

具备这些先决条件后,你就可以准备安装和保护你的Memcached服务器了。

步骤1-从官方存储库安装Memcached

如果你的服务器上还没有安装Memcached,你可以从官方的Ubuntu库安装它,首先,确保你的本地软件包索引被更新:


sudo apt update

接下来,按以下的方式安装正式软件包:


sudo apt install memcached

可以安装libmemcached-tools,一个提供了多个工具来处理你的Memcached服务器的库:


sudo apt install libmemcached-tools

步骤2-保护Memcached

为确保Memcached实例正在侦听本地接口127.0.0.1,我们检查位于/etc/memcached.conf的配置文件中的默认设置,Ubuntu和Debian附带的当前版本的Memcached将-l参数设置为本地接口,从而防止来自网络的拒绝服务攻击,我们可以检查这个设置,以确保它被正确设置。

你可以使用nano打开/etc/memcached.conf


sudo nano /etc/memcached.conf

要检查接口设置,请在文件中找到以下行:

/etc/memcached.conf

. . .
-l 127.0.0.1
. . .

如果看到-l 127.0.0.1的默认设置,则不需要修改此行,要禁用UDP (保留TCP不受影响时),请将以下选项添加到此文件的底部:

/etc/memcached.conf

. . .
-U 0

完成后保存并关闭文件。

重新启动Memcached服务以应用你的更改:


sudo systemctl restart memcached

验证Memcached当前绑定到本地接口,并只通过键入以下命令监听TCP连接:


sudo netstat -plunt

你将看到以下输出:


OutputActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
. . .
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 2279/memcached
. . .

这表明memcached只使用TCP绑定到127.0.0.1地址。

步骤3-添加授权用户

为了将身份验证的用户添加到Memcached服务中,可以使用简单身份验证和安全层(SASL ),在Memcached配置文件中启用SASL,然后继续添加有认证凭据的用户。

配置sasl支持

我们可以首先使用memcstat命令测试Memcached实例的连接,这将有助于我们在更改配置文件后,启用SASL和用户身份验证。

要检查Memcached是否已启动,并且正在运行,请键入以下内容:


memcstat --servers="127.0.0.1"

你应该看到如下所示的输出:


OutputServer: 127.0.0.1 (11211)
 pid: 2279
 uptime: 65
 time: 1546620611
 version: 1.5.6
 . . .

现在我们可以继续启用SASL,首先,我们-S参数添加到/etc/memcached.conf,再次打开该文件:


sudo nano /etc/memcached.conf

在文件的底部,添加以下内容:

/etc/memcached.conf

. . .
-S

接下来,查找并取消注释-vv选项,该选项将向/var/log/memcached提供详细的输出,注释的行应该如下所示:

/etc/memcached.conf
 
. ,.
-vv

 

保存并关闭文件。

重新启动Memcached服务:


sudo systemctl restart memcached

接下来,我们可以查看日志以确保已经启用了SASL支持:


sudo journalctl -u memcached

你将看到以下行,指示已经初始化了SASL支持:


Output. . .
Jan 04 16:51:12 memcached systemd-memcached-wrapper[2310]: Initialized SASL.
. . .

可以再次检查连接,但是由于SASL已初始化,因此此命令应该在没有身份验证的情况下失败:


memcstat --servers="127.0.0.1"

此命令不应产生输出,我们可以键入以下内容来检查它状态:


echo $?

$?将始终返回最后退出的最后一个命令的退出代码,通常,除0以外的内容都表示进程失败。

添加经过身份验证的用户

现在我们可以下载sasl2-bin,它是一个包含用户数据库管理程序的软件包,这将允许我们创建我们的认证用户:


sudo apt install sasl2-bin

接下来,创建Memcached将检查它SASL配置设置的目录和文件:


sudo mkdir /etc/sasl2
sudo nano /etc/sasl2/memcached.conf 

将以下内容添加到SASL配置文件中:

/etc/sasl2/memcached.conf

mech_list: plain
log_level: 5
sasldb_path: /etc/sasl2/memcached-sasldb2

除了指定日志记录级别,我们mech_list设置为plain,它告诉Memcached应该使用自己的口令文件,并且验证明文密码,我们还将指定要创建的用户数据库文件的路径,完成后保存并关闭文件。

现在,使用用户凭证创建SASL数据库,使用saslpasswd2命令在数据库中使用-c选项为用户创建一个新条目,用户名是sammy,但是你可以用你自己的用户名替换这个名字,使用-f选项指定数据库的路径,这将是我们在/etc/sasl2/memcached.conf中设置的路径:


sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 sammy

你将被要求键入并验证你所选择的密码。

最后,我们通过SASL数据库授予memcache用户所有权:


sudo chown memcache:memcache /etc/sasl2/memcached-sasldb2

重新启动Memcached服务:


sudo systemctl restart memcached

再次运行memcstat将确认验证过程是否有效,这次,使用身份验证凭据运行它:


memcstat --servers="127.0.0.1" --username=sammy --password=your_password

你应该看到如下所示的输出:


OutputServer: 127.0.0.1 (11211)
 pid: 2772
 uptime: 31
 time: 1546621072
 version: 1.5.6 Ubuntu
 . . .

Memcached服务现在通过SASL支持和用户认证成功运行。

步骤4-允许通过专用网络访问(可选)

我们已经介绍了如何配置Memcached以在本地接口上侦听,该方法可以通过保护Memcached接口不暴露给外部方来防止拒绝服务攻击,可能存在一些情况,你需要允许从其他服务器访问,但是,在这种情况下,你可以调整设置将Memcached绑定到专用网络接口。

使用防火墙限制ip访问

如果使用UFW防火墙,可以通过键入以下命令限制对Memcached实例的访问:


sudo ufw allow from client_server_private_IP/32 to any port 11211

将memcached绑定到专用网络接口

既然你的防火墙已经存在,你可以调整Memcached配置以绑定到你的服务器网络接口,而不是127.0.0.1

通过键入以下命令再次打开/etc/memcached.conf文件:


sudo nano /etc/memcached.conf

在内部,找到你先前检查或修改的-l 127.0.0.1行,然后更改地址以匹配你的服务器网络接口:

/etc/memcached.conf

. . .
-l memcached_server_private_IP
. . .

完成后保存并关闭文件。

接下来,重新启动Memcached服务:


sudo systemctl restart memcached

使用netstat检查你的新设置以确认更改:


sudo netstat -plunt


OutputActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
. . .
tcp 0 0 memcached_server_private_IP:11211 0.0.0.0:* LISTEN 2912/memcached
. . .

测试来自外部客户端的连接,以确保仍然能够访问服务。

结束语

在本教程中,我们介绍了如何通过配置它来绑定到本地或专用网络接口,并通过启用SASL认证来保护你的Memcached服务器。



文章标签:Ubuntu  secure  memcache  Memcached  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语