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

Эквивалент SSH-туннелирования на основе брандмауэра

У меня есть веб-сервер, который подключается к стороннему серверу базы данных, и ему предоставлено разрешение на это через правило брандмауэра на сервере базы данных.

Когда я разрабатываю локально на своем ноутбуке, я использую SSH-туннель для подключения к серверу базы данных через веб-сервер.

ssh web.server.com -L 5678:database.server.com:1234

Что я хотел бы сделать, если это вообще возможно, так это настроить правило брандмауэра на веб-сервере, которое, по сути, постоянно выполняет одно и то же.

Таким образом, при подключении к web.server.com:5678 мое соединение перенаправляется на database.server.com:1234, и сервер базы данных разрешает соединение, поскольку оно поступает с веб-сервера.

Проблема в том, что я не совсем уверен, с чего мне начать искать способы сделать это.

Я запускаю Shorewall 3.2.6 на веб-сервере, чтобы настроить брандмауэр.

Нужно ли мне начинать с VPN или этого можно добиться без него?

Используя Shorewall, вы ищете правило DNAT ( онлайн-документация великолепно, иди туда). Вы получите что-то вроде

DNAT net loc:192.168.1.3:1234 tcp 5678

в вашем файле правил, где 192.168.1.3 - это IP-адрес вашего сервера базы данных. Возможно, вам придется включить routeback вариант, если ваше входящее соединение и соединение вашего веб-сервера с сервером базы данных находятся на одном и том же сетевом адаптере.

Однако я очень настоятельно призываю вас не делай этого!! Это открывает доступ к вашему серверу базы данных буквально для всех, явно предоставляя им доступ, чтобы маскироваться под ваш веб-сервер, и лишает сервер базы данных возможности брандмауэра. Кроме того, все, что вы делаете через это соединение, будет незашифрованным, включая имя пользователя и пароль сервера базы данных! Так не делай этого! Туннель SSH обеспечивает аутентификацию и шифрование, чего не будет при перенаправлении портов.

Кроме того, почему вы используете такую ​​старую версию Shorewall? Я использую Shorewall для лет, и когда я началось версия 3 устарела! К настоящему времени вы должны быть как минимум на 4.0, а еще лучше - на 4.2 или 4.4. Обновлять программное обеспечение безопасности - это абсолютно необходимо!

Если вы не хотите сохранять туннель ssh, вы можете настроить автоматический зашифрованный VPN, например openvpn, чтобы сделать то же самое. Это сделает ваш сервер более защищенным.

Я предполагаю, что вы можете достичь того, чего хотите, с помощью чего-то вроде этого (не проверено, просто по памяти и, вероятно, не будет работать, но может дать вам несколько советов для начала). На веб-сервере попробуйте:

iptables -t nat -I PREROUTING -p tcp --dport 5678 -j REDIRECT --to-port 1234
iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to-destination database.server.com 

Если у вас нет прямого доступа к серверу базы данных с вашего маршрутизатора, вы можете сделать то же самое, просто сопоставив соответствующие порты прямо на вашем маршрутизаторе.

тем не мение я считаю вы все равно должны использовать свой ssh-туннель потому что его преимущества:

1) соединение требует аутентификации, что хорошо 2) трафик зашифрован 3) вы можете настроить свое соединение, когда захотите, с помощью ssh (добавление сжатия, добавление дополнительных портов в туннель, добавление привязок socks5 и т. Д.