假设服务器1位于5:5:5:5:11211,服务器2位于25.25.25.25:11211.您将它们添加到服务器池中,一切都很棒.直到某人连接到该端口并开始搞乱您的数据.
所以我们将端口更改为38295.更难找到,但并非不可能,所以它仍然不够.
我的问题是:
1)您是否可以为memcached服务器设置身份验证(用户名/密码)以验证连接?你可以将特定的主机/ IP列入白名单(可能是个坏主意)吗?
2)您是否可以保护通过互联网传输的数据?数据采用原始格式,您的ISP和任何嗅探线路的人都可以看到所有正在发送的数据.但加密数据可能会影响性能?
有哪些解决方案可用于设置memcached服务器集群,以及如何保护和验证它们?
满足我需求的解决方案是按照sumoanand的建议设置iptables条目.这就是我的工作.
使用以下内容启动memcached:
/usr/bin/memcached -p 11211 -l 0.0.0.0 -d -u www-data -m 12288
请记住,-l参数设置为0.0.0.0,它基本上允许来自任何源的连接.如果你保持标准,127.0.0.1这将无效.
接下来,我们为iptables创建条目.如果您的memcached服务器位于LAN上,则以下命令将仅允许来自特定本地服务器的连接.
例如,为了添加192.168.1.100到允许列表,我们发出命令:
iptables -A INPUT -p tcp -s 192.168.1.100 --dport 11211 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
例如,如果要将远程服务器列入白名单,25.62.25.62则发出另一个命令:
iptables -A INPUT -p tcp -s 25.62.25.62 --dport 11211 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
您可以根据需要将尽可能多的IP列入白名单,但请务必发出阻止该端口上所有其他连接的最终命令.
iptables -A INPUT -p tcp --dport 11211 -j REJECT
Run Code Online (Sandbox Code Playgroud)
IPtables按输入顺序读取,因此如果在发出任何ACCEPT规则之前发出REJECT ALL语句,则所有连接都将被拒绝(即使是列入白名单的连接).
但是,以这种方式发送的数据仍然没有以任何方式加密.拦截你的memcached服务器和远程服务器(数据包嗅探器,ISP)的任何东西都能够完全看到数据.
Memcached 现在支持 SASL。这将允许您对 memchaced 服务执行强身份验证。这是一篇关于如何使用 memcached 设置 SASL 的好文章。
http://blog.couchbase.com/sasl-memcached-now-available