Как ограничить указанного пользователя SSH подключением только с одного IP-адреса или имени хоста?
У меня есть сервер мониторинга, для которого требуются сведения о соединении SSH учетной записи пользователя, отличной от sudo, для каждого окна, которое он отслеживает. Можно ли настроить конкретную учетную запись пользователя таким образом, чтобы в нее можно было входить только с определенного IP-адреса (или, еще лучше, имени хоста)? Я не хочу ограничивать возможность подключения других пользователей на сервере с других адресов (в противном случае я бы просто использовал брандмауэр) или использование аутентификации по паролю только для службы мониторинга.
4 ответа
Увидеть man sshd_config
, Есть возможность добавить AllowUsers
блок, в котором вы можете указать как пользователя, так и хост:
AllowUsers user@host # or IP
Конечно, вам нужно указать также других пользователей, от которых вы хотите разрешить вход, если у вас есть.
Другое решение (зависит от исправления ошибок!)
Как я думаю об этом еще раз, есть возможность изменить ваш sshd_config
как это:
Match Host !hostname
DenyUsers user
Match Host hostname
AllowUsers user
Это легко заблокирует всех пользователей, кроме user
от hostname
и отовсюду это заблокировало бы user
,
НО это не работает, из-за нескольких ошибок, зарегистрированных в апстриме [1] [2]. Но мы получили обещанное, что это будет исправлено в следующем выпуске.
Вы можете использовать подстановочные знаки для строки AllowUsers на /etc/ssh/sshd_config
файл. Так что было бы целесообразно добавить строку:
AllowUsers *@192.168.1.100
Или же:
AllowUsers *@hostname
Чтобы разрешить всем с этого IP-адреса или имени хоста доступ.
Запомни:
service ssh restart
После внесения изменений, если вы используете версию до 15.04. 15.04 теперь использует systemd, поэтому имеет другой механизм управления сервисами.
Согласно страницам руководства, это должно работать:
DenyUsers user@"!host,*"
Я протестировал это на Debian, и, похоже, он работал правильно.
Так как это лучший результат поиска в Google, я думаю, что люди должны знать о настройке разрешений в /etc/hosts.allow
файл (любезно предоставлено в блоге Кэмерон Олтманн по этому вопросу):
Чтобы ограничить доступ ssh к Linux-блокам на основе исходного IP-адреса, отредактируйте файл /etc/hosts.allow:
sshd : localhost : allow sshd : 192.168.0. : allow sshd : 99.151.250.7 : allow sshd : mydomain.net : allow sshd : ALL : deny
Приведенная выше запись разрешит ssh доступ из localhost, подсети 192.168.0.x, одного IP-адреса 99.151.250.7 и mydomain.net (при условии, что mydomain.net имеет запись ptr для облегчения обратного поиска). Всем остальным IP-адресам будет отказано в доступе к sshd.
Примечания: Вы можете разрешить или запретить на основе IP-адреса, подсети или имени хоста. Список правил в порядке от наиболее до наименее конкретных. Файл считывается только до тех пор, пока не будет найдена соответствующая строка, поэтому, если вы начнете с ssdh: ALL: deny, соединения ssh не будут разрешены.
И вы должны быть в состоянии использовать user@address
в этом файле, по этой ссылке на lifewire.com:
Более сложные формы daemon@host и user@host описаны в разделах, посвященных шаблонам конечных точек сервера и поиску имени пользователя клиента, соответственно.