Всех приветствую. С тех пор как железный веб-сервер вырос до гипервизора с ворохом виртуалок столкнулся со следующей проблемой. Есть один внешний IP, который обрабатывает шлюз на FreeBSD. Во внутренней сети (за NAT) крутятся виртуалки с бэкендами на разных вариациях Linux. Если с HTTP всё понятно - на шлюзе делается фронтэнд с proxy_pass в nginx с указанием виртуалок с серыми IP, то как реализовать подобное с SSH (SFTP) и FTP? Допустим, использовать FTP в 2016-ом совсем некомильфо, но как решить проброс SSH-туннеля? Гугление показало вот такой способ: http://www.cyberciti.biz/faq/linux-unix-ssh-proxycommand-pas.../ (с командой ProxyCommand), но для конечных пользователей он совершенно неудобен, да и не поддерживается FileZilla/WinSCP. То есть в идеале должен быть такой механизм:
Пользователь -> Шлюз -> Виртуалка
10.20.30.40 77.50.40.30:22 192.168.1.105:22
#SSH login user a user a=192.168.1.105 SSH user a
user b=192.168.1.110
user c=192.168.1.115
Есть ли корректное (без тупого порт-форвардинга по скрипту) и безопасное (чтобы юзеры не попадали на шлюз или другую виртуалку) решение? Уверен, что не я один с таким сталкивался.
Порт форвардинг на шлюзе.77.50.40.30:10005 --> 192.168.1.105:22
77.50.40.30:12005 --> 192.168.1.105:21+ модуль для проксирования пассивных FTP соединений
> Порт форвардинг на шлюзе.
> 77.50.40.30:10005 -->
> 192.168.1.105:22
> 77.50.40.30:12005 -->
> 192.168.1.105:21
> + модуль для проксирования пассивных FTP соединенийА без таких диких костылей? Это у меня, выходит, будет с десяток SSH-портов смотреть в веб, откуда их будут брутить китайские ботнеты? Не вариант.
P.S. Мне на ум приходит разве что дублирование пользователей на шлюзе с запуском при коннекте SSH у них скрипта в home, который бы подцеплял по NFS домашнюю папку с виртуалки. Но это тоже костыль.
а без костылей тут никакесли хочеш побыть пионЭром - http://www.opennet.dev/opennews/art.shtml?num=44659
> А без таких диких костылей? Это у меня, выходит, будет с десяток
> SSH-портов смотреть в веб, откуда их будут брутить китайские ботнеты? Не
> вариант.man ACL
man fail2ban
и еще с 10-к аналогичных продуктов
> man ACL
> man fail2ban
> и еще с 10-к аналогичных продуктовНе-не-не, мне Америку открывать не нужно, я и так в курсе существования sshguard и прочих. Просто сама концепция горы открытых портов наружу меня совсем не прельщает, а раздавать на каждого юзера белый список его подсети с доступом к порту ещё более корявое решение. Хотя, видимо, другого варианта просто нет.
>> man ACL
>> man fail2ban
>> и еще с 10-к аналогичных продуктов
> Не-не-не, мне Америку открывать не нужно, я и так в курсе существования
> sshguard и прочих. Просто сама концепция горы открытых портов наружу меня
> совсем не прельщает, а раздавать на каждого юзера белый список его
> подсети с доступом к порту ещё более корявое решение. Хотя, видимо,
> другого варианта просто нет.Напишите свой ssh клиент и прокси с шахматами и поэтессами :)
> Напишите свой ssh клиент и прокси с шахматами и поэтессами :)Вот это больше всего и удивляет. Казалось бы, ситуация вроде моей встречаются довольно часто, но нормального решения никто до сих пор не сделал. Вот те на.
Что ж, значит будем изобретать вел^W колхозить.
>[оверквотинг удален]
>
>
> user b=192.168.1.110
>
>
> user c=192.168.1.115
>
а с haproxy не работает(сам не проверял, нашел на просторах)?
к примеру:
listen SSHD :2200
mode tcp
acl is_apple hdr_dom i apple
acl is_orange hdr_dom -i orange
use_backend apple if is_apple
use_backend orange if is_orange
backend apple
mode tcp
server apple 10.0.3.221:22
backend orange
mode tcp
server orange 10.0.3.222:22