Как ограничить указанного пользователя 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 описаны в разделах, посвященных шаблонам конечных точек сервера и поиску имени пользователя клиента, соответственно.

Другие вопросы по тегам