YarkoDzech
@YarkoDzech
будучи трезвым, сдержи все свои пьяные обещания!

Как обеспечить доступ к Redis только с определенных ip?

Разбиваем монолитное приложение на микросервисы, у каждого микросервиса свой сервер. Redis выбран в качестве хранилища сессий, как обеспечить доступ к Redis только внутри условного кластера?
Штатными средствами Redis это возможно?
  • Вопрос задан
  • 2099 просмотров
Решения вопроса 1
YarkoDzech
@YarkoDzech Автор вопроса
будучи трезвым, сдержи все свои пьяные обещания!
С какой-то там версии 3.2.х bind нескольких ip в конфиге не позволяет стартануть серверу.

Поэтому вариант такой:

1. В /redis.conf меняем
bind 0.0.0.0 //открываем доступ к базе из вне
*опционально меням порт против типо этого zmap -p6379 -o omg.txt
очень рекомендовано прописать:
requirepass nl6Cq8mthJrrXbqlDqLaPgtFkeq12zqB7Sb5j5UJ
ну и очень рекомендовано отключить управление конфигом с командной строки:
rename-command CONFIG ""

После рестарта сервера, он по ip и порту должен смотреть наружу:
redis-cli -h ваш_ip -p ваш_порт

2. Прописываем правила для iptables
Важно! Все правила идут в строгом порядке, поэтому желательно обнулить все правила, перезаписать файл с листом начисто. И пройтись заново и в том месте, где открываются порты 80, для SSH и ряд других прописать:

iptables -A INPUT -p tcp -s y.y.y.y --dport хххх -j ACCEPT доступ с y.y.y.y ip на такой то порт

повторяем правило для ip всех микросервисов что будут стучаться к redis
открываем локальный интерфейс:

iptables -A INPUT -i lo -j ACCEPT

последним блокируем всё что не описано правилами и открываем исходящие пакеты:

После этого можно заблокировать все остальное и разрешить все исходящие соединения.

iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP

После перезагрузки iptables и если всё правильно настроено порт должен быть только для нужных нам ip. А если следовать всем инструкциям, то даже если пакет и пролетит фаервол, он упрется в авторизацию и не сможет с командной строки сгенерировать ключ доступа к серверу.

P.S Если всё пошло не так, обнуляется iptables так:
iptables -F
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы