Назад | Перейти на главную страницу

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

Мне нужна помощь по поводу конфигурации 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 порта.

Любая информация будет принята с благодарностью ...

Спасибо!

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