Оглушить несколько портов через один и тот же порт

Я ищу некоторую помощь относительно конфигурации 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 нет какого-либо способа определить, какой трафик является каким протоколом (в чем я сомневаюсь), это не сработает. Вам придется открыть еще один порт на вашем брандмауэре.

Другие вопросы по тегам