Оглушить несколько портов через один и тот же порт
Я ищу некоторую помощь относительно конфигурации stunnel, над которой я работаю. По сути, я хочу, чтобы машина DMZ принимала входящие соединения с портами 80 и 110, а затем пересылала их через брандмауэр через порт 22 на машину, которая затем перенаправляла трафик на порты 80 и 110 локально. Это вообще возможно?
В основном я хотел бы иметь это на моей DMZ:
[http]
listen = localhost:80
connect = server:22
cert = cert.pem
[pop3]
listen = localhost:110
connect = server:22
cert = cert.pem
И на моем сервере я бы имел:
[http]
listen = localhost:22
connect = localhost:80
[pop3]
listen = localhost:22
connect = localhost:110
Есть ли в этом смысл? Порт 22 уже открыт на моем брандмауэре, и мне не нужно открывать еще 2 порта.
Любая информация будет принята с благодарностью...
Спасибо!
3 ответа
Вы можете использовать stunnel в дополнение к sslh: http://www.rutschle.net/tech/sslh.shtml
sslh - небольшая программа, которая анализирует протокол и перенаправляет пакет в соответствии с протоколом.
Согласно справочной странице:
Реализованы зонды для HTTP, SSL, SSH, OpenVPN, tinc, XMPP, и любой другой протокол, который можно протестировать с помощью регулярного выражения, можно распознать.
пример файла конфигурации доступен по адресу /usr/share/doc/sslh/examples/example.cfg (debian)
в итоге это может выглядеть так (я не проверял):
verbose: true;
foreground: true;
inetd: false;
numeric: false;
transparent: false;
timeout: 2;
user: "nobody";
pidfile: "/var/run/sslh.pid";
listen:
(
{ host: "localhost"; port: "SOME_PORT"; }
);
protocols:
(
{ name: "http"; host: "localhost"; port: "80"; probe: "builtin"; },
{ name: "pop3"; host: "localhost"; port: "110"; probe: [ INSERT_REGEXP_IDENTIFYING_POP3_PACKETS_HERE ]; }
);
ваш stunnel server.conf станет:
...
[sslh]
listen = localhost:22
connect = localhost:PORT_SSLH_IS_LISTENING_ON
Конечно, это возможно, но это на самом деле не связано stunnel
совсем.
Вы можете настроить SSH-туннель между вашей DMZ-машиной и вашим внутренним хостом. Что-то вроде:
on_dmz_host# ssh -L 80:localhost:80 -L 110:localhost:110 internal_server
Это говорит ssh
перенаправить порт 80 на вашем DMZ-хосте на порт 80 на вашем внутреннем сервере, и аналогично для порта 110. Все соединения проходят через соединение ssh на порту 22, поэтому для этого не требуется открывать какие-либо дополнительные порты.
Вы также можете сделать то же самое с помощью VPN типа "точка-точка" (например, OpenVPN хорош для этого), хотя, честно говоря, просто открыть порты на брандмауэре проще.
Если у stunnel нет какого-либо способа определить, какой трафик является каким протоколом (в чем я сомневаюсь), это не сработает. Вам придется открыть еще один порт на вашем брандмауэре.