在 Debian 中,我已经安装了 memcached(使用本指南) 以降低 mysql 数据库上原本难以管理的负载。数据库位于单独的服务器上,memcached 和 Varnish 位于前端服务器上。让 memcached 不受防火墙保护是否是一个潜在的安全漏洞?如果是这样,我应该如何保护它?这种情况尤其令人担忧,因为我收到了(未经证实的)服务器上 cookie 被盗的报告。谢谢
答案1
只需在防火墙中阻止 memcached 端口并仅允许从数据库服务器访问即可。这应该会给你一些保护。您还可以在 mysql 和 memcached 服务器之间建立 SSL 隧道,并使 memcached-mysql 数据仅通过它流动。
对于 SSL 隧道,您可以使用 IPSEC,要进行设置,您可以按照以下教程进行操作http://wiki.debian.org/IPsec或者http://lartc.org/howto/lartc.ipsec.tunnel.html
为了阻止除一个 IP 之外的所有 IP 的端口,您可以发出如下 iptables 命令:
iptables -A INPUT -s 2.2.2.2/32 -p tcp --destination-port 11211 -j ALLOW
iptables -A INPUT -s 0.0.0.0/0 -p tcp --destination-port 11211 -j DROP
或者:
iptables -A INPUT -s !2.2.2.2/32 -p tcp --destination-port 11211 -j DROP
另外,据我了解,您的 Web 服务器和 Memcached 服务器在同一台机器上?如果是这样,那么您的 Web 服务器将与 Memcached 而不是 mysql 服务器进行通信。它只会从缓存中获取数据,或者如果缓存中不存在数据,则会从 mysql 服务器获取数据。在这种情况下,只需将 Memcached 绑定到本地主机就足够了,这样只有您的 Web 服务器才能使用 php、ruby、python 或任何其他语言代码访问 Memcached,这应该是尽可能安全的。