返回》

在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 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_IPReload 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 认证机制。
THE END