Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php memcached验证远程连接_Php_Memcached - Fatal编程技术网

Php memcached验证远程连接

Php memcached验证远程连接,php,memcached,Php,Memcached,假设服务器1位于5:5:5:5:11211,服务器2位于25.25.25.25:11211。将它们添加到服务器池中,一切都很好。直到有人连接到该端口并开始干扰您的数据 所以我们把端口改为38295。很难找到,但并非不可能,所以这还不够 我的问题是: 1) 能否为memcached服务器设置身份验证(用户名/密码)以验证连接?你能把特定的主机/IP列入白名单吗(可能是个坏主意) 2) 您是否能够保护通过互联网传输的数据?数据是原始格式的,您的ISP和任何嗅探该线路的人都可以看到所有发送的数据。但加

假设服务器1位于5:5:5:5:11211,服务器2位于25.25.25.25:11211。将它们添加到服务器池中,一切都很好。直到有人连接到该端口并开始干扰您的数据

所以我们把端口改为38295。很难找到,但并非不可能,所以这还不够

我的问题是:

1) 能否为memcached服务器设置身份验证(用户名/密码)以验证连接?你能把特定的主机/IP列入白名单吗(可能是个坏主意)

2) 您是否能够保护通过互联网传输的数据?数据是原始格式的,您的ISP和任何嗅探该线路的人都可以看到所有发送的数据。但加密数据可能会影响性能


有什么解决方案可以设置memcached服务器集群,以及如何保护和验证它们?

memcached现在支持SASL。这将允许您对memchaced服务执行强身份验证。下面是一篇关于如何使用memcached设置SASL的好文章


我认为我们不需要像Mike提到的那样在这里寻找复杂的解决方案

假设您的web服务器(web1、web2、web3)需要通过位于同一内部网络中的11211端口从memcache服务器(mem1和mem2)获取数据,每个web服务器的内部ip地址从172.221开始

在这种情况下,您可以在mem1和mem2服务器的ip表中设置一个限制,以仅接受来自172.221的请求。。对于11211端口


希望这会有所帮助。

满足我需求的解决方案是按照sumoanand的建议设置iptables条目。这是我的工作

使用如下方式启动memcached:

/usr/bin/memcached-p 11211-l 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
如果要将远程服务器列入白名单,例如,
25.62.25.62
,则发出另一个命令:

iptables -A INPUT -p tcp -s 25.62.25.62 --dport 11211 -j ACCEPT
您可以根据需要将任意多个IP列入白名单,但一定要发出最后一个命令,阻止该端口上的所有其他连接

iptables -A INPUT -p tcp --dport 11211 -j REJECT
IPtables是按照输入的顺序读取的,因此如果在发出任何接受规则之前发出REJECT ALL语句,所有连接都将被拒绝(即使是白名单上的连接)


然而,以这种方式发送的数据仍然没有以任何方式进行加密。任何拦截您的memcached服务器和远程服务器(数据包嗅探器、ISP)的东西都将能够看到完全原始的数据。

php5 memcache客户机是否对其进行身份验证?我已经研究了SASL,但我仍然对客户端如何对其进行身份验证感到困惑,因为我没有看到任何这样做的函数