在VPS上对Memcached服务器进行安全配置全教程

在VPS上对Memcached服务器进行安全配置全教程插图

Memcached 是一种内存 Cache 系统,通过将一些高频使用和最近经常访问的信息储存在内存中,可以明显地优化访问后端数据库的性能。但是因为Memcached经常会被盯上攻击,因此,这里搬主题就分享一下在VPS上对Memcached服务器进行安全配置全教程。

一、前期准备工作

借助于 Memcached 组件,可以大量减少访问数据库的请求数量。但是,如果不合理地配置 Memcached Server,有可能会使得系统受到大量的攻击。基于此,有必要创建安全稳定的 Memcached 服务器,加固 Memcached 配置。

准备工作:

1 台VPS服务器

操作系统:Linux CentOS 7.4

防火墙配置:配置系统开机启动 firewalld 服务

对于memcached的好处可以看如下文章

二、安装 Memcached

首先安装 Memcached 组件包,以root权限登陆VPS主机

yum install memcached

为了方便管理 Memcached Servers,我们还可以安装 Libmemcached,它提供了一系列 Memcached 管理工具:

yum install libmemcached

安装好 Memcached 基本环境以后,我们可以着手开始加固配置的工作。

二、加固 Memcached 配置

我们需要配置 Memcached 实例监听本地的 127.0.0.1 地址,修改配置文件 /etc/sysconfig/memcached 。为了保证避免大量攻击,也需要禁用 UDP Listener。

打开 /etc/sysconfig/memcached :

vi /etc/sysconfig/memcached

将该配置文件修改成如下所示:

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1 -U 0" 

接下来重启服务使配置生效:

systemctl restart memcached

为了验证配置的正确性,比如 Memcached Servers 只绑定到了本地端口,而且只监听 TCP 连接,可以通过如下命令查看:

netstat -plunt

可以看到输出结果:

Active 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      121465/memcached

三、添加用户认证

给 Memcached 服务添加认证用户,可以使用 Simple Authentication 和 Security Layer (SASL)。

SASL 是一个用于将认证过程与应用解耦的协议。通过在 Memcached 配置文件中加入 SASL 配置项,可以使用户具备认证功能。

1、配置 SASL

首先我们可以通过 memstat 命令来验证 Memcached 实例的网络连通性,此后在配置 SASL 和用户认证完成时,我们都可以通过该命令来验证配置的可用性:

memstat --servers="127.0.0.1"`
 
Server: 127.0.0.1 (11211)
pid: 121465
uptime: 1120
time: 1546180153
version: 1.4.15
libevent: 2.0.21-stable
pointer_size: 64
rusage_user: 0.035928
rusage_system: 0.051700
curr_connections: 1
total_connections: 2
connection_structures: 2
......省略部分显示

打开 /etc/sysconfig/memcached 配置文件,加入 -S 和-vv 配置项。-S 目的是打开 SASL 功能,-vv 作用是提供更详细的日志,在 Debug Memcached 时会得到较大方便。修改后配置为:

OPTIONS="-l 127.0.0.1 -U 0 -S -vv"

重启服务使配置生效:

systemctl restart memcached

通过查看 log 可以看到 SASL 是否启用:

journalctl -u memcached

可以看到:

12月 30 22:10:35 10-255-20-131 systemd[1]: Started Memcached.
12月 30 22:10:35 10-255-20-131 systemd[1]: Starting Memcached...
12月 30 22:36:36 10-255-20-131 systemd[1]: Stopping Memcached...
12月 30 22:36:36 10-255-20-131 systemd[1]: Started Memcached.
12月 30 22:36:36 10-255-20-131 systemd[1]: Starting Memcached...
12月 30 22:36:36 10-255-20-131 memcached[122283]: Initialized SASL.

2、添加一位认证用户

首先需要安装 Cyrus SASL 库,借助于 cyrus-sasl-devel 和 cyrus-sasl-plain 包我们可以实现认证机制:

yum install cyrus-sasl-devel cyrus-sasl-plain

接下来,我们来创建一个目录,编辑 SASL 的配置文件,如下所示:

mkdir -p /etc/sasl2
vi /etc/sasl2/memcached.conf
 
mech_list: plain
log_level: 5
sasldb_path: /etc/sasl2/memcached-sasldb2

将 mech_list 设置为 plain,目的是使 Memcached 使用自己的密码认证文件,并且验证一个明码文本。

接下来,我们使用用户认证的方式来创建一个 SASL 数据库。

使用 saslpasswd2 命令来生成一个用户登录准入入口。这里,我们选用 didi 作为 user,当然 user 的名称可以自由设置:

saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 didi

最后我们设置 SASL 数据库为 Memcached 用户和用户组:

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

重启服务后,使用上面提到过的 memstat 命令来验证认证机制是否生效:

memstat --servers="127.0.0.1" --username=didi --password=your_password

如果认证成功,你将看到如下的显示:

Server: 127.0.0.1 (11211)
pid: 122283
uptime: 2785
time: 1546183379
version: 1.4.15
libevent: 2.0.21-stable
pointer_size: 64
rusage_user: 0.107040
rusage_system: 0.113777
......省略部分显示

这样,我们就成功将 Memcached 服务配置为支持 SASL 协议与用户认证功能。

四、通过私有网络访问 Memcached 服务

在上面的安装配置完成后,我们将 Memcached 服务绑定到本地的接口,这样就避免了大量的外部攻击。

实际使用中,我们还需要接受一些其他 Server 的访问。所以在下面我们将配置 Memcached 服务,将其绑定到特定的私有网络,接受一些外部服务器的访问。

1、通过 Firewall 限制 IP 权限

在应用配置前,最好为连接到 Memcached 服务的 Server 设置一些 firewall 规则。我们将通过 firewall-cmd 命令来修改 firewall 的默认配置,以达到放开对特定 IP 的访问权限。

添加一个 Memcached zone 到 firewalld policy 文件中:

firewall-cmd --permanent --new-zone=memcached

放开11211端口的访问权限,同样是先定在 Memcached zone内部:

firewall-cmd --permanent --zone=memcached --add-port=11211/tcp

接下来,添加客户端私有 IP 地址,即设置哪些机器可以访问 Memcached 服务:

firewall-cmd --permanent --zone=memcached --add-source=client_server_private_IP

Reload firewall 服务使上述配置生效:

firewall-cmd --reload

通过上述配置工作,可以做到你自己客户端的 IP 地址能够访问 Memcached 服务,其他的 IP 连接将会被默认的 public zone 阻止访问。

2、将 Memcached 服务绑定到私有网络

修改/etc/sysconfig/memcached 配置文件。

将 127.0.0.1 替换为我们 Memcached Server 的私有 IP:

OPTIONS="-l memcached_servers_private_IP -U 0 -S -vv"

重启服务后验证:

netstat -plunt
 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 10.255.20.131:11211     0.0.0.0:*               LISTEN      124612/memcached

接下来,可以验证在防火墙配置的 Client IP 能否访问到 Memcached 服务,作为比对,也可以验证其他未开放权限的 IP 能否访问到 Memcached 服务。

五、总结

本文主要介绍在VPS上对Memcached服务器进行安全配置全教程,包括如何配置将本地或者私有网络绑定到 Memcached 服务,以及如何在 Memcached 服务中启用 SASL 认证机制。

 收藏 (0) 更新不易,打赏吧

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

除特别注明外,本站所有文章均基于CC-BY-NC-SA 4.0原创,转载请注明出处。
文章名称:《在VPS上对Memcached服务器进行安全配置全教程》
文章链接:https://www.banzhuti.com/vps-memcached-security-setting.html
分享到: 生成海报
版权免责声明

① 本站提供的资源(插件或主题)均为网上搜集,如有涉及或侵害到您的版权请立即通知我们。
② 本站所有下载文件,仅用作学习研究使用,请下载后24小时内删除,支持正版,勿用作商业用途。
③ 因代码可变性,不保证兼容所有浏览器、不保证兼容所有版本的WP、不保证兼容您安装的其他插件。
④ 本站保证所提供资源(插件或主题)的完整性,但不含授权许可、帮助文档、XML文件、PSD、后续升级等。
⑤ 由本站提供的资源对您的网站或计算机造成严重后果的本站概不负责。
⑥ 使用该资源(插件或主题)需要用户有一定代码基础知识!另本站提供汉化使用安装教程,仅供参考。
⑦ 有时可能会遇到部分字段无法汉化,同时请保留作者汉化宣传信息,谢谢!
⑧ 本站资源售价只是赞助和汉化辛苦费,收取费用仅维持本站的日常运营所需。
⑨ 如果喜欢本站资源,欢迎捐助本站开通会员享受优惠折扣,谢谢支持!
⑩ 如果网盘地址失效,请在相应资源页面下留言,我们会尽快修复下载地址。

热门文章

评论 抢沙发

评论前必须登录!

立即登录   注册

WordPress主题 插件 建站 汉化

定制服务联系我们
切换注册

登录

点击按钮进行验证

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活