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