Доброго времени суток.
ОС: Centos 5, вопрос в следующем:
можно ли установить в параметрах sshd PasswordAuthentication = (yes/no) в зависимости от ip хоста, от которого пришел запрос на соединение?
Хотелось бы увидеть: внутри локальной сети допускается авторизация по паролю, из внешней сети - только по ключу.
Пока в /etc/ssh/sshd_config
PermitRootLogin without-password
PasswordAuthentication yes
, но, хотелось бы допускать пользователей снаружи сети только по ключу, без пароля (хотя бы для того, чтобы рестартануть апач).
Внешний ip заранее неизвестен, так что hosts.allow не подходитНе представляю где копать... pam?
Помогите советом, пожалуйста
Как вариант, запустить два демона sshd. Один демон завесить на внутреннем интерфейсе (авторизация по паролю). Второй демон sshd смотрит в интернет, и авторизация на нем сугубо по ключу.Плюсы данного решения в том, что вы можете контролировать пользователей интранета и интернета отдельно на разных демонах sshd, изменяя их конфигурации по отдельности.
+ можно настроить work time-ы через cron.
> Как вариант, запустить два демона sshd. Один демон завесить на внутреннем интерфейсе
> (авторизация по паролю). Второй демон sshd смотрит в интернет, и авторизация
> на нем сугубо по ключу.
> Плюсы данного решения в том, что вы можете контролировать пользователей интранета и
> интернета отдельно на разных демонах sshd, изменяя их конфигурации по отдельности.
> + можно настроить work time-ы через cron.Спасибо за быстрый ответ. Тоже думал об этом, но как о последнем решении. Сервер стоит во внутренней сети, все пакеты пока приходят через один интерфейс, но не суть - можно добавить алиас или VLAN ,относящийся к DMZ.
Work time не подходит в моем случае - как правило ssh используется при авариях, чтобы помощник тот же апач перезапустил.
Если у вас интерфейс один, тогда можно завесить демоны на разные порты (например 22/23) а на NAT-сервере/устройстве сделать правило переброса (Internet IP, port 22) -> (Server sshd port 23).
> Если у вас интерфейс один, тогда можно завесить демоны на разные порты
> (например 22/23) а на NAT-сервере/устройстве сделать правило переброса (Internet IP, port
> 22) -> (Server sshd port 23).Как таковой, проблемы в доведении до ssh того факта, что к нему стучатся из внешней сети нет (алиасы ethX:Y, vlan, port-map), теоретически было интересно управиться одним демоном, который бы определял разные границы аутентификации, о чем и вопрос был. Может, надо покопаться в pam (там я не силен) или есть какая-то группа опций для конкретной маски ip - это было бы интересно...
Спасибо за ответ!
В sshd_config есть директива Match
Почитайте, например тут - http://www.gossamer-threads.com/lists/openssh/dev/42757Через эту директиву Вы можете разрешать/запрещать определенным юзерам варианты авторизации и не только.
А ограничение по IP сделайте общей директивой AllowUsers или AllowGrous с указанием IP - user@192.168.0.*
Используя в совокупности эти 2-е директивы, вы как раз, решите Вашу задачу.
Match group internalusers
PasswordAuthentication yes
а глобально
AllowUsers admin technik@192.168.0.*
PasswordAuthentication noну и technik должен быть в группе internalusers
почитайте еще вот это - http://serverfault.com/questions/286159/how-to-disabled-pass...
Или еще проще, просто
Match user technik@192.168.0.*
PasswordAuthentication yes
[skipped]> почитайте еще вот это - http://serverfault.com/questions/286159/how-to-disabled-pass...
> Или еще проще, просто
>
> Match user technik@192.168.0.*
> PasswordAuthentication yes
>ОГРОМНЕЙШЕЕ ВАМ СПАСИБО! Это то, что надо!