欢迎光临
我们一直在努力

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

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

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

一、前期准备工作

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

准备工作:

1 台VPS服务器

操作系统:Linux CentOS 7.4

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

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

https://www.banzhuti.com/lsphp-session-memcached.html

二、安装 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 1025520131 systemd[1]: Started Memcached.
1230 22:10:35 1025520131 systemd[1]: Starting Memcached…
1230 22:36:36 1025520131 systemd[1]: Stopping Memcached…
1230 22:36:36 1025520131 systemd[1]: Started Memcached.
1230 22:36:36 1025520131 systemd[1]: Starting Memcached…
1230 22:36:36 1025520131 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)

这些信息可能会帮助到你: 下载帮助 | 报毒说明 | 进站必看 | 关于我们


版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《在VPS上对Memcached服务器进行安全配置全教程》
文章链接:http://www.077u.cn/web/jianzhan/484.html
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途,网站会员捐赠是您喜欢本站而产生的赞助支持行为,仅为维持服务器的开支与维护,全凭自愿无任何强求。
分享到

评论 抢沙发

登录

找回密码

注册