2013-04-23 3 views
5

Предположим, что сервер 1 находится в 5: 5: 5: 5: 11211, а сервер 2 находится по адресу 25.25.25.25:11211. Вы добавляете их в пул серверов, и все отлично. Пока кто-нибудь не подключится к этому порту и не начнет возиться с вашими данными.memcached аутентификация удаленных подключений

Таким образом, мы меняем порт на 38295. Сложнее найти, но не невозможно, так что этого еще недостаточно.

Мои вопросы:

1) Вы можете установить аутентификации (имя пользователя/пароль) для Memcached серверов для проверки соединения? Можете ли вы настроить белый список определенных хостов/IP-адресов (возможно, плохая идея)?

2) Можете ли вы и вы должны защитить данные, переданные через Интернет? Данные находятся в необработанном формате, и ваш интернет-провайдер и любой, кто нюхает линию, могут видеть все отправленные данные. Но шифрование данных, вероятно, повлияет на производительность?

Какие существуют решения для настройки кластера серверов memcached и как вы их защищаете и аутентифицируете?

ответ

1

Memcached теперь поддерживает SASL. Это позволит вам выполнить сильную аутентификацию для вашей memchaced-службы. Вот хорошая статья о том, как настроить SASL с memcached.

http://blog.couchbase.com/sasl-memcached-now-available

+0

клиент 'php5-memcache' аутентифицирует его? я просмотрел SASL, но я все еще запутался относительно того, как клиент будет его аутентифицировать, так как я не вижу никаких функций для этого – user2103849

2

Я не думаю, что нам нужно идти на комплексное решение здесь, как упоминание Майком.

Предположим, что вашим веб-серверам (web1, web2, web3) необходимо получить данные с серверов memcache (mem1 & mem2) через порт 11211, расположенный в одной и той же внутренней сети, а внутренние IP-адреса каждого веб-сервера начинаются с 172.221. ..

В этом случае вы можете поместить ограничение в ip-таблицу mem1 & mem2-серверов, чтобы ТОЛЬКО принимать запросы от 172.221. . для порта 11211.

Надеюсь, это поможет.

8

Решение, которое отвечало моим потребностям, заключалось в создании записей 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 находится в вашей локальной сети, следующая команда разрешает подключения только с определенных локальных серверов.

Например, для того, чтобы добавить 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 читаются в порядке их ввода, так что если вы выдать Отклонить все заявления до выдачи любого ACCEPT правила, все соединения будут отвергнуты (даже Whitelisted из них).

Данные, отправленные таким образом, однако, по-прежнему не зашифрованы. Все, что перехватывает ваш сервер memcached и удаленный сервер (пакетные снифферы, интернет-провайдеры), сможет увидеть данные полностью сырыми.