У меня есть веб-сервер, который подключается к стороннему серверу базы данных, и ему предоставлено разрешение на это через правило брандмауэра на сервере базы данных.
Когда я разрабатываю локально на своем ноутбуке, я использую 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 и т. Д.