Я хочу разрешить входить в мою систему через 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
т. д.) по-прежнему используются.