Назад | Перейти на главную страницу

Как защитить memcached?

В Debian я установил memcached (используя это руководство), чтобы снизить неконтролируемую в противном случае нагрузку на базу данных mysql. База данных находится на отдельном сервере, а memcached и Varnish находятся на переднем сервере. Оставление memcached незащищенным брандмауэром - потенциальная дыра в безопасности? Если да, то как мне его обезопасить? Ситуация вызывает особое беспокойство, поскольку я получил (недоказанные) сообщения о краже файлов cookie на сервере. Спасибо

Просто заблокируйте порт memcached в брандмауэре и разрешите доступ только с сервера базы данных. Это должно дать вам некоторую защиту. Также вы можете создать туннель SSL между сервером mysql и memcached и заставить данные memcached-mysql проходить только через него.

Для туннеля SSL вы можете использовать IPSEC, чтобы настроить его, вы можете следовать руководству по адресу http://wiki.debian.org/IPsec или http://lartc.org/howto/lartc.ipsec.tunnel.html

Чтобы заблокировать порт для всех 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

Кроме того, насколько я понимаю, ваш веб-сервер и сервер memcached находятся на одной машине? Если это так, то именно ваш веб-сервер будет взаимодействовать с memcached, а не с сервером mysql. Он либо получит данные из кеша, либо, если их нет в кеше, получит их с сервера mysql. В этом случае достаточно привязать memcached к localhost, чтобы только ваш веб-сервер мог получить доступ к memcached с использованием кода php, ruby, python или любого другого языка, это должно быть настолько безопасно, насколько это возможно.