2016-10-14 3 views
6

Возможно ли разрешить использование порта только через туннелирование портов SSH, если пользователь находится в определенной группе Active Directory?SSH Port Tunneling With Autherization

У меня есть клиентская машина, веб-сервер Windows и сервер Linux с базой данных. Я хотел бы, чтобы клиент мог подключиться к базе данных с помощью SSH, но только если они находятся в определенной группе AD.

Есть ли способ достичь этого?

ответ

3

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

+0

Можете вы рассказать об этом решении? Я хотел бы только переслать соединение с базой данных на сервере Windows, если пользователь находится в определенной группе –