Как разрешить вход через ssh только машинам с указанным IP?

Как разрешить вход через ssh только машинам с указанным IP?

Я хочу разрешить входить в мою систему через ssh только машинам с разрешенными IP-адресами.

Например, userAможно использовать только ip xx.xx.xx.xxили yy.yy.yy.yyдля входа через ssh, и никакой другой ip не может войти как userA. И userBможно использовать только ip zz.zz.zz.zzдля входа через ssh, никакой другой ip не zz.zz.zz.zzможет войти как userB.

Как мне настроить Linux, чтобы добиться этого?

решение1

Добавьте /etc/ssh/sshd_configследующее:

AllowUsers [email protected] [email protected] userA
AllowUsers [email protected] userB

Затем перезапустите демон SSH.

Вы можете использовать подстановочные знаки, как описано вУзорыразделssh_config руководство.

решение2

Это можно сделать через iptables.

Все соединения с адреса 1.2.3.4 по SSH (порт 22):

iptables -A INPUT -p tcp -m state --state NEW --source 1.2.3.4 --dport 22 -j ACCEPT

Запретить все остальные SSH-подключения:

iptables -A INPUT -p tcp --dport 22 -j DROP

решение3

Один из подходов (если вы используете PAM для аутентификации) — указать pam_rhostsкак requiredмодуль в /etc/pam.d/ssh. Это позволяет каждому пользователю указать в своем собственном .rhostsфайле, откуда ему разрешено подключаться.

Обратите внимание, что модули аутентификации в pam.dфайле не будут использоваться для входа с открытым ключом (например, мне нужно auth required pam_deny.soзапретить вход с паролем на моих машинах). Другие модули ( accountи sessionт. д.) по-прежнему используются.

Связанный контент