Работа SSH
на альтернативном порту больше не считается безопасностью. Это лишь добавляет немного неясности и добавляет сложности вашим пользователям. Это добавляет ноль препятствий для людей, которые хотят сломать вашу сеть, которые используют автоматические сканеры портов и не заботятся о том, на каком порту он работает.
Если вы хотите повысить безопасность в системе, которая разрешает удаленный входящий в систему SSH через Интернет, управляйте своими пользователями в соответствии sshd_config
с указанным @Anthon, а затем также реализуйте защиту непосредственно в PAM.
Создайте две группы lusers
и rusers
. Добавьте удаленных мобильных пользователей в rusers
группу. Используйте модуль PAM pam_succeed_if.so, чтобы разрешить доступ этим пользователям. Добавьте строки в ваш pam config для ssh:
account sufficient pam_succeed_if.so user ingroup lusers
account sufficient pam_succeed_if.so user ingroup rusers
Некоторые модули pam_succeed_if.so могут потребовать, чтобы вы использовали немного другой синтаксис, например group = lusers
.
Тогда не только sshd
ограничивается количество пользователей, которые могут подключаться, но и в случае ошибки sshd
, вы все равно имеете защиту, которую предлагают ограничения на основе PAM.
Одним из дополнительных шагов для удаленных пользователей является принудительное использование ssh_keys с парольными фразами. Таким образом, локальные пользователи могут войти в систему с ключами или паролями, но удаленные пользователи должны иметь ключ, и если вы создаете ключи для них, вы можете убедиться, что ключ имеет ассоциированные парольные фразы. Таким образом, ограничение доступа к местоположениям, которые на самом деле обладают ключом SSH и парольной фразой. И ограничение потенциальных векторов атаки, если пароль пользователя взломан.
В sshd_config
:
изменить 2 настройки:
ChallengeResponseAuthentication yes
и
PasswordAuthentication yes
чтобы:
ChallengeResponseAuthentication no
и
PasswordAuthentication no
Таким образом, по умолчанию теперь разрешена только аутентификация по ключу. Затем для локальных пользователей вы можете использовать match
настройку конфигурации, чтобы изменить настройки по умолчанию для локальных пользователей. Предполагая, что ваша локальная частная сеть - 192.168.1.0/24, добавьте sshd_config
:
Match Address 192.168.1.0/24
PasswordAuthentication yes
Теперь локальные пользователи могут подключаться с помощью паролей или ключей, а удаленные пользователи будут вынуждены использовать ключи. Вам решать создавать ключи с парольными фразами.
Как дополнительное преимущество, вам нужно управлять только одним sshd_config
, и вам нужно только запустить ssh на одном порту, что упрощает ваше собственное управление.
edit 2017-01-21 - Ограничение использования authorized_keys
файлов.
Если вы хотите убедиться, что пользователи не могут просто сгенерировать ключ ssh и использовать его с authorized_keys
файлом для входа в систему, вы можете контролировать это, установив определенное расположение для sshd, которое будет искать разрешенные ключи.
В /etc/ssh/sshd_config
, изменить:
AuthorizedKeysFile %h/ssh/authorized_keys
что-то вроде:
AuthorizedKeysFile /etc/.ssh/authorized_keys/%u
Указание на контролируемый каталог, в котором у пользователей нет прав на запись, означает, что они не могут сгенерировать свой собственный ключ и использовать его для обхода установленных вами правил.
lusers
группе, но не вrusers
группе, сгенерирует пару ключей и обновит их~/.ssh/authorized_keys
, он сможет войти с удаленного компьютера.