Подключение к серверу Ubuntu из указанных машин [dубликат]

У меня есть сервер мониторинга, для которого требуется информация о соединении SSH для учетной записи пользователя, отличной от sudo, для каждого блока, который он контролирует. Есть ли способ настроить конкретную учетную запись пользователя таким образом, чтобы ее можно было регистрировать только с определенного IP-адреса (или еще лучшего имени хоста)? Я не хочу ограничивать возможность других пользователей на сервере иметь возможность подключения с других адресов (в противном случае я бы просто использовал брандмауэр) или использовать аутентификацию только для службы мониторинга.

4
задан 19 July 2015 в 13:10

10 ответов

См. 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]. Но мы получили обещание, что оно будет исправлено в следующем выпуске.

[1] https://bugzilla.mindrot.org/show_bug.cgi?id=1918 [2] https: //bugzilla.mindrot .org / show_bug.cgi? id = 2397
4
ответ дан 18 July 2018 в 05:17

См. 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]. Но мы получили обещание, что оно будет исправлено в следующем выпуске.

[1] https://bugzilla.mindrot.org/show_bug.cgi?id=1918 [2] https: //bugzilla.mindrot .org / show_bug.cgi? id = 2397
4
ответ дан 24 July 2018 в 18:17

Вы можете использовать подстановочные знаки для строки AllowUsers в файле /etc/ssh/sshd_config. Таким образом, было бы возможно добавить строку:

AllowUsers *@192.168.1.100

Или:

AllowUsers *@hostname

Чтобы разрешить всем доступ к этому IP-адресу или имени хоста.

Помните:

service ssh restart

После внесения изменений, если вы используете версию до 15.04. 15.04 использует systemd сейчас, поэтому имеет другой механизм управления сервисами.

3
ответ дан 18 July 2018 в 05:17

Поскольку это лучший результат поиска в google, я думаю, что люди также должны знать о настройке разрешений в файле /etc/hosts.allow (с учетом сообщения блога Cameron Oltmann по этому вопросу):

Чтобы ограничить 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 в этом файле, за это сообщение в блоге :

Чтобы ограничить доступ ssh к Linux на основе исходящего IP-адреса, отредактируйте /etc/hosts.allow:

1
ответ дан 18 July 2018 в 05:17

В соответствии с man-страницами это должно работать:

DenyUsers user@"!host,*"

Я тестировал это на Debian и, похоже, работал правильно.

0
ответ дан 18 July 2018 в 05:17

Вы можете использовать подстановочные знаки для строки AllowUsers в файле /etc/ssh/sshd_config. Таким образом, было бы возможно добавить строку:

AllowUsers *@192.168.1.100

Или:

AllowUsers *@hostname

Чтобы разрешить всем доступ к этому IP-адресу или имени хоста.

Помните:

service ssh restart

После внесения изменений, если вы используете версию до 15.04. 15.04 использует systemd сейчас, поэтому имеет другой механизм управления сервисами.

3
ответ дан 24 July 2018 в 18:17
  • 1
    Спасибо, но это может помешать другим пользователям подключиться с IP-адресов, отличных от 192.168.1.100, прямо? Я пытаюсь только ограничить этого одного пользователя при входе с одного IP-адреса, и все, что я делаю, не должно влиять на других пользователей. – Programster 18 July 2015 в 17:39
  • 2
    Его можно использовать для пространственного разделенного списка или с символом @ непосредственно перед именами групп. Он очень настраиваемый, но в качестве альтернативы использует сочетание аутентификации на основе ключа без паролей для серверов и обычного пароля ssh для пользователей. Похоже, это уже ваш план! – Arronical 18 July 2015 в 20:19
  • 3
    Для всех, кроме указанного пользователя, нет подстановочного знака, такого как regex ^ (! Username $). * Есть ли? – Programster 18 July 2015 в 20:27

Поскольку это лучший результат поиска в google, я думаю, что люди также должны знать о настройке разрешений в файле /etc/hosts.allow (с учетом сообщения блога Cameron Oltmann по этому вопросу):

Чтобы ограничить 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 в этом файле, за это сообщение в блоге :

Чтобы ограничить доступ ssh к Linux на основе исходящего IP-адреса, отредактируйте /etc/hosts.allow:

1
ответ дан 24 July 2018 в 18:17

В соответствии с man-страницами это должно работать:

DenyUsers user@"!host,*"

Я тестировал это на Debian и, похоже, работал правильно.

0
ответ дан 24 July 2018 в 18:17

В соответствии с страницами man это должно работать:

DenyUsers user@"!host,*"

Я тестировал это на Debian и, похоже, работал правильно.

0
ответ дан 6 August 2018 в 20:33

Так как это лучший результат поиска в google, я думаю, что люди также должны знать о настройке разрешений в файле /etc/hosts.allow (с учетом сообщения блога Cameron Oltmann ):

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

1
ответ дан 9 August 2018 в 01:02

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

Похожие вопросы: