-P
参数指定密码。配置Memcached访问密码是确保系统安全的重要步骤,以下是详细步骤,包括修改Memcached的配置文件和相关操作:
Memcached密码修改与配置步骤
1. 准备工作
你需要准备三台CentOS 7版本的虚拟机,并关闭防火墙:
systemctl stop firewalld sed -i 's/enforcing/disabled/g' /etc/selinux/config systemctl stop firewalld
2. 安装Memcached
在Memcached服务器上(例如IP为192.168.75.169),执行以下命令安装Memcached:
yum install gcc gcc-c++ libevent-devel -y yum install memcached -y
3. 启动Memcached服务
你可以选择以前台或后台程序运行Memcached,以下命令将以后台方式运行:
memcached -p 11211 -m 64 -d -u root
4. 配置SASL支持
为了启用SASL身份验证,编辑/etc/sasl2/memcached.conf
文件:
mech_list: plain log_level: 5
然后创建SASL用户并设置密码:
saslpasswd2 -a memcached -c /etc/sasldb2 memcacheuser
根据提示输入密码。
5. 修改Memcached配置文件
编辑/etc/memcached.conf
文件,添加以下内容以启用SASL:
-S -vv
保存并关闭文件后,重新启动Memcached服务:
sudo systemctl restart memcached
6. 测试SASL配置
可以使用memcstat
命令测试SASL是否已启用:
memcstat --servers="127.0.0.1"
如果没有输出,表示SASL已成功启用。
7. 客户端连接配置
在Java客户端中,可以使用Spymemcached库连接到启用了SASL的Memcached服务器,确保项目中引入了Spymemcached依赖:
<dependency> <groupId>net.spy</groupId> <artifactId>spymemcached</artifactId> <version>2.12.3</version> </dependency>
使用以下代码进行连接:
import net.spy.memcached.MemcachedClient; import net.spy.memcached.ConnectionFactoryBuilder; import net.spy.memcached.auth.AuthDescriptor; import net.spy.memcached.auth.PlainCallbackHandler; import java.net.InetSocketAddress; public class MemcachedSASLExample { public static void main(String[] args) { try { // 配置SASL身份验证 AuthDescriptor ad = new AuthDescriptor(new String[]{"PLAIN"}, new PlainCallbackHandler("memcacheuser", "password")); // 使用ConnectionFactoryBuilder配置MemcachedClient MemcachedClient client = new MemcachedClient( new ConnectionFactoryBuilder() .setProtocol(ConnectionFactoryBuilder.Protocol.BINARY) .setAuthDescriptor(ad) .build(), new InetSocketAddress("localhost", 11211) ); // 进行一些缓存操作 client.set("someKey", 3600, "someValue"); System.out.println("Stored value: " + client.get("someKey")); // 关闭连接 client.shutdown(); } catch (Exception e) { e.printStackTrace(); } } }
这段代码演示了如何通过SASL认证连接到Memcached服务器并进行基本操作。
FAQs
Q1: 如何在不使用SASL的情况下保护Memcached?
A1: 如果不使用SASL,可以通过将Memcached绑定到本地接口(127.0.0.1)来限制访问,编辑/etc/memcached.conf
文件,确保包含以下行:
-l 127.0.0.1
然后重启Memcached服务:
sudo systemctl restart memcached
这样可以防止外部网络访问Memcached实例。
Q2: 如果需要从远程主机访问Memcached,应该如何配置?
A2: 如果需要从远程主机访问Memcached,可以在防火墙中开放相应的端口(默认是11211),使用iptables规则允许特定子网访问:
iptables -A INPUT -p tcp --dport 11211 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 11211 -j DROP
上述规则仅允许来自192.168.1.0/24子网的主机访问Memcached,其他所有请求都将被拒绝,建议使用SASL进行身份验证以提高安全性。
小编有话说
通过配置SASL和支持身份验证,可以显著提高Memcached的安全性,虽然这增加了一些配置复杂度,但能有效防止未经授权的访问,如果你的应用对安全性要求较高,强烈建议采用这种方式,定期检查和更新你的安全策略也是非常重要的。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1459750.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复