Чи використовує хто в проді ssh-тунелі між серверами?

Задача: дешево і сердито зробити конект до mysql та redis з кількох хостів.

Відкривати доступ вовнє не дуже хочеться.

Якщо хто робив таке — наскільки можна покладатися на стабільність? як контролюється існування тунелю? сервіс systemd?

Якщо у кого конструктивні заперечення (або альтернативні поради) — давайте сюди, щоб дитина зайвий раз не лохматила бабушку.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Юзаем. Но еще лучше openvpn для таких целей (тоже юзаем).

проще openvpn в минимальном конфиге со статическим ключем.

Зараз кожна БД має конфіг з IP whitelist. Це найпростіший спосіб. + кожен клауд провайдер має приватну мережу. Тому піднімаєш БД на айпі локальної мережі (listen address). Тким чином маєш фільтр по айпі + відкриту БД тіки для локальної мережі провайдера.

або альтернативні поради

Обычно облачные хостеры дают настроить приватную сеть между виртуалками. Это должно быть проще в настройке чем туннель. В случае реального железа нужны 2 сетевые на каждом (кажется).

Насколько интенсивный ворклод ожидается? И насколько далек ремоут хост? Что нужно туннелить? Дай больше вводных данных, эффективность разных туннелей может очень отличаться.

Я пришел к 3 сценариям, покрывают вроде все случаи

— для краткосрочных задач github.com/sshuttle/sshuttle + проброс ссш-агента на бастион-хост, на вход даю необходимую маску подсети k8s к которой нужно обращаться по приватному днс, туннель висит и пишет трафик лог в открытой сессии терминала пока не остановлю или не отвалится.

— openvpn в контейнере в нужной подсети непосредственно в кластере, и один единственный порт открытый наружу, авторизация через сертификаты с ротацией и ldap — подходит для более долгосрочных но менее нагруженных задач

— www.telepresence.io для туннелей или свайпа контейнеров по-живому прямо в тестовом контуре, а с секретом в хедере и канари-релизами — так и вовсе в боевом. Траффик при этом проксируется в мой локалхост с маппингом портов, jmx агенты и дебаг порты пробрасываются в IDE, а локальная файловая система монтируется прямо в под через osxfuse — вобщем довольно мощная магия.

не сильно интенсивный. Хочу отрезать от монолита кусок и отсадить на отдельный сервер. Но так как пока не придумал, как абстрагировать этот кусок до состояния автономного сервиса, рассматриваю возможность просто расшарить бд и редис. Выносить планирую десяток парсеров, т.е. обмен — максимум пара десятков запросов в секунду в моменты обновления информации, в основном единицы rps.
Шарить буду mysql и redis.
Вспомнил про проброс портов и решил поинтересоваться у шановного люду на эту тему. Т.к. (с моей точки зрения) это требует меньше телодвижений, чем поднятие и сопровождение полноценного впн и средств сетевой безопасности.

Бастион — самое правильное решение с точки зрения безопасности.

Не для роботи, а в особистому пет-проекті використовую ssh-тунелі для зв’язку зоопарку машин між собою. Все працює, ні з ким погоджувати не потрібно, бо тут я сам собі голова. Кому з читачів не подобається — користуйтесь чимось іншим.

iptables уже не в моде? Да и MySQL если что вполне умеет ACL + TLS. Чем меньше прослоек — тем стабильнее и предсказуемее оно работает.

iptables для извращенцев. В том смысле что в чистом виде для человека, которому раз в пятилетку надо что-то включить или выключить, настройка выглядит слишком уж заумной. Каждый раз приходиться гуглить и опасаться забанить самого себя. Я того не лю́блю. Не зря же народ всякие ufw изобретает.
с ограничением доступа файрволом неудобство в том, что появляются лишние места, где можно накосячить и куда надо синхронно вносить изменения. Имхо проброс портов тут проще и надёжней — добавил на сервер с БД пользователя без шела с логином по ключу и доступом к отдельной схеме в бд и коннектишься из любой точки мира.

На любом проде должен быть настроен фаервол, iptables — очень простая реализация, разобраться в которой довольно просто, главное вдумчиво прочитать к примеру — losst.ru/...​a-iptables-dlya-chajnikov . А делать костыли в виде тонеля — то ещё занятие...

инпут, форвард, аутпут, прероутинг, построутинг, акцепт, дроп, кю, режект, фильтр, др. менгеле, бла-бла-бла... Просто и логично, а надстройки над iptables народ придумывает чисто из вредности, чтобы остальных запутать)
Ничего не имею против iptables, но если есть ufw — лучше использую его. Он хоть конфиг сам сохраняет и ман у него короче.

И мне почему-то кажется, что современные дистры имеют вполне нормальные дефолтные настройки и без брандмауера, потому «на любом должен быть настроен», имхо, звучит занадто категорично, хотя в общем я согласен.

А почему проброс портов это костыль я не поняль. Штатное средство, шифрование, базу можно локалхостом ограничить, не надо отслеживать айпишники в конфигах брандмауера/бд. Если оно на тестах себя покажет нормально, то почему бы и нет?

Чтоб быстро набросать правила для сервака в большинстве случаев достаточно инпут и аутпут, когда на проекте требуется больше уже должен быть человек который шарит и сможет сделать.
Штатное средство — удалённый доступ с шифрованием + фаервол, проброс портов — готовность выгребать из лога: Unable to connect to MySQL server. MySQL reported: Lost connection to MySQL server at ’reading initial communication packet’, system error: 104 и аналогичные.

Всё верно, ну а для тех, кто не в состоянии осилить внешний периметр безопасности с использованием файервола более чем достаточно будет цепочки INPUT, а OUTPUT можно оставить для параноиков ))) На предмет ufw и прочих поделок в этом стиле — довелось настраивать файервол на сервере с кучей сетевых интерфейсов и виланов, там стояла CentOS с firewalld — более упоротую поделку мне было сложно представить, в итоге всё свелось к банальному закрытию всего дефолтной политикой «public» и применение «—add-rich-rule» в стиле старого доброго iptables...

зато он умеет применять правила без перезапуска, если верить доке. Ну и сам факт того, что на него переходят дистры из корп. сегмента, намекает на существование каких-то плюсов.

Ну а так то конечно вещь, которую я умею, всегда лучше вещи, которую я не умею. Для человека с молотком всё вокруг — гвозди.)

iptables тоже умеет применять правила без перезапуска, так что такое... То что корпоративный сегмент переходит на «это» — ещё ни о чём не говорит, хайповые вещи всегда были и будут...

Если «Unable to connect ...» явление регулярное, то, конечно, стоит посмотреть на более стабильные варианты.
С другой стороны даже простой воркер рассылки писем, находящийся под боком у бд, иногда её теряет после длительного простоя. Редкие случаи отвала можно и архитектурно предусмотреть.
Репликацию по такому каналу я делать не собираюсь, тут чисто бытовое использование.

кю — допустимое в обществе ругательство
ку — все другие слова
©

оплатите час-два работы сисадмину, или пусть ваша контора это сделает. на крайняк есть индусы с апворка по 3$/час)

Он хоть конфиг сам сохраняет

iptables тоже все сохраняет и восстанавливает, раньше это делал скрипт в sysv init, щас это делает iptables.service в systemd.

инпут, форвард, аутпут, прероутинг, построутинг, акцепт, дроп, кю, режект, фильтр, др. менгеле

для вашей задачи из этого достаточно инпут, акцепт, дроп, ну мб с роутинг/форвард

Да вам собственно для вашей задачи только input -A и надо то.

Я для обмеження доступу використовую iptables і нічого складного там немає
Наприклад, відкрити доступ до mysql з одного ip
iptables -A INPUT -s 127.0.0.1/32 -p tcp --dport 3306 -j ACCEPT
і закрити для всіх інших
iptables -A INPUT -p tcp --dport 3306 -j DROP
І це все.
SSH тунелі ніколи не використовував, але якщо у вас вийде простіше через ssh ніж декілька рядків правил на iptables то напишіть як ви це реалізували.

iptables уже не в моде?

Ага, щас на nftables же переходят, там еще и боль может возникнуть на CentOS8 с докером=)

Кілька разів використовував порт-форвардинг через ссш з серверів на клієнтів, існування тунелю то є проблема, доводилось скриптом контролювать відвал/реконект. Також, як варіант, пптп з автореконектом, менше костилів. Але віддалено рулить все одно полюбляю через ссш-тунель.

Аналогічно, для разових робіт чи казуального використання ссш-тунель зручний. От і стало цікаво, наскільки воно підходить для постійного зв’язку.

wireguard же ж є.

Тепер я знаю цю назву, завтра пограюся. Дякую

У 5.6 буде, а так є dkms.

В мене є arm хости які глибоко за натом сидять, і в реверсивному режимі на паблік сервер автоконектяться. Юзаю autossh. Близько року вже так працює все, по стабільності відмов поки не було.

Підписатись на коментарі