Назад | Перейти на главную страницу

Требование входа по SSH-ключу из определенных диапазонов IP-адресов

Мне нужно иметь доступ к моему серверу (Ubuntu 8.04 LTS) с удаленных сайтов, но я хотел бы немного меньше беспокоиться о сложности пароля. Таким образом, я хотел бы потребовать, чтобы для входа в систему использовались SSH-ключи, а не имя / пароль. Тем не менее, мне еще многое предстоит узнать о безопасности, и, уже разбив тестовую коробку, когда я пытался это настроить, я остро осознаю возможность облажаться, пытаясь достичь этого. Итак, у меня есть вторая цель: я хотел бы потребовать, чтобы определенные диапазоны IP-адресов (например, 10.0.0.0/8) могли входить в систему с именем / паролем, но все остальные должны использовать ключ SSH для входа.

Как я могу достичь обеих этих целей?

Уже существует очень похожий вопрос здесь, но я не могу понять, как получить то, что я хочу, из этой информации.

Текущая тактика: прочитать документацию PAM (pam_access выглядит многообещающе) и посмотреть / etc / ssh / sshd_config.


Редактировать: В качестве альтернативы, есть ли способ указать, что определенные пользователи должны аутентифицироваться с помощью ключей SSH, а другие могут аутентифицироваться с помощью имени / пароля?


Решение, которое в настоящее время работает:

# Globally deny logon via password, only allow SSH-key login.  
PasswordAuthentication no  

# But allow connections from the LAN to use passwords.  
Match Address 192.168.*.*  
    PasswordAuthentication yes  

Блок Match Address также может быть блоком Match User, отвечая на мой второстепенный вопрос. На данный момент я просто считаю, что неспособность проанализировать адреса CIDR связана с причудой моей установки, и решаю повторить попытку, когда я перейду на Ubuntu 10.04 незадолго до этого. Оказалось, что PAM не нужен.

Не уверен, как PAM должен вписаться в это. В последней версии SSH (например, в версии 8.04) это должно быть так же просто, как использование блоков Match для адресного пространства, которое вы хотите разрешить.

Итак, ваш sshd_config должен содержать что-то вроде этого.

# global option no password auth (keys only)
PasswordAuthentication no

# permit password from rfc1918
Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
  PasswordAuthentication yes