В принципе: нет. Любой пользователь с доступом к оболочке может использовать свой собственный форвардер и получить доступ к порту в любом случае. Поэтому, если у вас есть пользователи root
, bob
и dbtunnel
на машине Linux, все три могут «экспортировать» доступ к базе данных.
Но что вы, действительно хотите сделать? Поскольку мне кажется, что вы хотите зашифровать (возможно, сжать) соединение с базой данных между веб-сервером и базой данных. Вы можете сделать это без SSH.
Что вы можете сделать с SSH, отключен порт переадресации и оболочки в целом для этой одной группы, за исключением. sshd_config allowgroups
supports LDAP. Вы сильно ограничите всех (или большинство) пользователей на машине Linux.
Некоторые базы данных, такие как MySQL offer native encryption, возможно, не настолько эффективны, если сравнивать с «рожденными» решениями. MySQL также имеет сжатый клиент/серверный протокол (который лучше всего отключил при использовании стороннего зашифрованного соединения).
Вы можете настроить VPN и разрешить доступ только к порту 3306 через интерфейс VPN.
Кроме того, вы можете ограничить соединения (как SSH, так и VPN) теми, что поступают с веб-сервера, чтобы уменьшить поверхность атаки машины базы данных.
Приятное решение, даже если оно мало для безопасности, равно , а не, есть SSHd на машине Linux вообще, и, скорее, иметь его на компьютере с Windows. Затем компьютер Linux может подключиться к клиенту autossh
и переслать его местный порт 3306 на пульт. Любой пользователь на машине Windows может подключиться к базе данных. И пользователю туннеля не нужно даже на машине Linux. Затем вы можете отключить доступ SSH для всех пользователей, кроме bob
, для целей управления. Чтобы открыть туннель с auto-SSH от Linux до Windows, вам понадобится SSH server или other для Windows.
Причина, по которой VPN, iptables и обратный туннель не имеют большого значения, как хакер может «попасть» на компьютер Windows? Вероятно, он использовал веб-сервер. Но в этот момент, независимо от того, какое соединение между веб-сервером и базой данных, , злоумышленник получит полный доступ независимо от того, что. Он просто соглашался с существующей связью.
Таким образом, брандмауэр ограничение IP и обратное туннелирование решение не делать ничего для идентификации пользователя, как это будет спорным в любом случае, а удалить уязвимость наличия машины Linux доступен снаружи веб-сервер пользователя без прав администратора.
решение Fancy (в данном примере MySQL и порт 3306, может быть PostgreSQL и порт 5432 так же хорошо)
- установить сервер Sshd на машине Windows, на каком-то нестандартном порту.
- настроить брандмауэр Windows, чтобы разрешить подключения к этому порту, только если он исходит из IP-адреса компьютера Linux.
- создать (ограниченный) пользователь на компьютере Windows, чтобы позволить Linux подключаться.
- установить скрипт autose (выше) на машине Linux и настроить его для подключения к серверу Windows, пересылая локальный порт 3306 на вновь созданный удаленный порт 3306 для прослушивания, привязанный к localhost (опция no -g).
- сказать веб-сервер есть сервер MySQL по адресу 127.0.0.1 порт 3306.
... и вы сделали.
Кому теперь можно подключиться к базе данных?
- любой пользователь на этой машине один Windows,. Это должно означать только пользователя веб-сервера (*).
- любой пользователь admin с доступом SSH на машине Linux (при условии, что - это SSH-доступ к машине Linux. Вы могли бы отключить его).
- злоумышленник успешно использует веб-сервер Windows: но он мог бы это сделать в любом случае, так как веб-серверу нужен доступ к базе данных.
(*) и любой другой пользователь мог бы сделать это и, если перенаправление портов было LDAP ограниченно - они бы просто нужно было ждать, пока соединение не было выполнено с помощью LDAP пользователя с включенной поддержкой, то они могли бы иметь на него набросилось.
Можете вы рассказать об этом решении? Я хотел бы только переслать соединение с базой данных на сервере Windows, если пользователь находится в определенной группе –