Ограничение исходящего SSH на пользователя
У меня есть сервер, который я администрирую. Имеет порт 22 для доступа ко многим машинам. Я хочу использовать его в качестве бастиона для некоторых пользователей. Суть в том, что я хочу, чтобы у каждого пользователя на моем сервере был свой собственный белый список IP-адресов / адресов, к которым он может подключаться по SSH.
Например, допустим, что моя машина M имеет доступ к серверам S1, S2, S3,... S8. У меня 3 пользователя: A, B и C на машине M. Я хочу, чтобы A мог подключаться только по SH к S2, B - по SSH только к S1, S5 и S6, а C - по SSH к S2., S3, S4, S5 и S8.
Как мне это сделать?
2 ответа
На конечном сервере вы можете ограничить доступ по SSH по имени пользователя в файле /etc/ssh/sshd_config, но я не думаю, что это то, что вы ищете здесь.
На исходном компьютере вы можете попытаться использовать модуль iptables "owner" для этого. Это могут быть некоторые работы по техническому обслуживанию, но это поможет. Он проверяет UID пользователя и затем разрешает (или отклоняет) соединение.
Допустим, UID ваших пользователей - 1, 2 и 3. Пользователю A разрешено использовать SSH до 1.1.1.1, пользователю B - 2.2.2.2 и пользователю C - 3.3.3.3.
iptables -A OUTPUT -m owner --owner-uid 1 -d 1.1.1.1/32 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -m owner --owner-uid 1 -p tcp --dport 22 -j DROP
iptables -A OUTPUT -m owner --owner-uid 2 -d 2.2.2.2/32 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -m owner --owner-uid 2 -p tcp --dport 22 -j DROP
iptables -A OUTPUT -m owner --owner-uid 3 -d 3.3.3.3/32 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -m owner --owner-uid 3 -p tcp --dport 22 -j DROP
чтобы сделать его немного более "управляемым", вы можете создать "цепочку" для каждого пользователя и определить все его разрешенные доступы.
Создайте цепочки:
iptables -N USER1
iptables -N USER2
iptables -N USER2
Переадресация исходящего трафика от пользователей в цепочку:
iptables -A output -m owner --owner-uid 1 -J USER1
iptables -A output -m owner --owner-uid 2 -J USER2
iptables -A output -m owner --owner-uid 3 -J USER3
Добавьте правила каждому пользователю своей цепочки:
iptables -A USER1 -d 1.1.1.1/32 -p tcp --dport 22 -m comment --comment "allow ssh to 1.1.1.1" -j ACCEPT
iptables -A USER1 -p tcp --dport 22 -j DROP
iptables -A USER1 -j ACCEPT
iptables -A USER2 -d 2.2.2.2/32 -p tcp --dport 22 -j ACCEPT
iptables -A USER2 -p tcp --dport 22 -j DROP
iptables -A USER3 -d 3.3.3.3/32 -p tcp --dport 22 -j ACCEPT
iptables -A USER3 -p tcp --dport 22 -j DROP
проверить доступ пользователя (цепочка отображения)
iptables -L USER1
Модуль владельца также работает с gid:
iptables -A USER3 -m owner --owner-gid 3 -p tcp --dport 22 -j DROP
Вы должны быть в состоянии сделать это с помощью фильтра iptable (сопоставления владельцев) для ограничения доступа к сети для каждого пользователя. Смотрите "как" ниже.
http://linuxpoison.blogspot.com/2010/11/how-to-limit-network-access-by-user.html