Когда дело доходит до доступа к удаленным устройствам, таким как серверы, маршрутизаторы и коммутаторы, протокол SSH всегда настоятельно рекомендуется, учитывая его способность шифровать трафик и защищать вас от любого злоумышленника, кто может попытаться прослушать ваши соединения.
Как бы то ни было, настройки SSH по умолчанию не являются безошибочными, и необходимы дополнительные настройки, чтобы сделать протокол еще более безопасным.
В этом руководстве мы рассмотрим различные способы, которые вы можете использовать для защиты и усиления OpenSSH на вашем сервере.
- 1. Настройте аутентификацию по SSH по ключам
- 2. Отключите запросы SSH пользователя без пароля
- 3. Отключите вход пользователя root по SSH
- 4. Используйте протокол SSH 2
- 5. Установите значение времени простоя соединения SSH
- 6. Ограничьте доступ по SSH для определенных пользователей.
- 7. Настройте ограничение попыток ввода пароля.
- Заключение
1. Настройте аутентификацию по SSH по ключам
Ранее мы уже рассматривали этот момент:
- 🔬 Как обменяться ключом SSH для аутентификации без пароля между серверами Linux
- Как настроить беспарольный вход SSH в RHEL 8
На этом этапе у вас будет доступ к удаленному серверу только с использованием аутентификации по ключу SSH.
2. Отключите запросы SSH пользователя без пароля
Другим рекомендуемым способом усиления безопасности вашего сервера является отключение SSH-входа пользователей без паролей.
Это звучит немного странно, но иногда системные администраторы могут создавать учетные записи пользователей и забывать назначать пароли, что является очень плохой практикой.
Чтобы отклонить запросы пользователей без пароля, снова перейдите в файл конфигурации в /etc/ssh/sshd_config и убедитесь, что у вас есть следующая директива:
PermitEmptyPasswords no
Затем перезапустите службу SSH, чтобы изменения вступили в силу.
$ sudo systemctl restart sshd
3. Отключите вход пользователя root по SSH
Разрешение удаленного входа в систему пользователю root – это всегда плохая идея, которая может поставить под угрозу безопасность вашей системы.
По этой причине всегда рекомендуется отключать удаленный вход по SSH в систему root и вместо этого придерживаться обычного пользователя без полномочий root.
Еще раз, зайдите в файл конфигурации и измените эту строку, как показано далее:
PermitRootLogin no
Затем перезапустите службу SSH, чтобы изменения вступили в силу.
$ sudo systemctl restart sshd
4. Используйте протокол SSH 2
SSH поставляется в двух версиях: протокол SSH 1 и протокол 2.
Протокол SSH 2 был представлен в 2006 году и является более безопасным, чем протокол 1, благодаря строгим криптографическим проверкам и надежным алгоритмам.
По умолчанию SSH использует протокол 1.
Чтобы изменить его на более безопасный протокол 2, добавьте следующую строку в файл конфигурации:
Protocol 2
$ sudo systemctl restart sshd
В дальнейшем SSH будет использовать протокол 2 по умолчанию.
Чтобы проверить, поддерживается ли протокол SSH 2, выполните команду:
$ ssh -1 user@remote-IP
Вы получите сообщение об ошибке “SSH protocol v.1 is no longer supported”.
$ ssh -2 itsecforu@192.168.2.108
5. Установите значение времени простоя соединения SSH
Если вы оставляете свой компьютер без присмотра в течение продолжительного времени с бездействующим SSH-соединением, это может создать угрозу безопасности.
Кто-то сможет просто принять сеанс SSH и делать все, что пожелает.
Поэтому для решения этой проблемы целесообразно установить ограничение времени простоя, при превышении которого сеанс SSH будет закрыт.
Еще раз откройте ваш файл конфигурации SSH и найдите директиву «ClientAliveInterval».
Назначьте разумное значение, например, я установил ограничение в 180 секунд.
ClientAliveInterval 180
$ sudo systemctl restart sshd
6. Ограничьте доступ по SSH для определенных пользователей.
Для дополнительного уровня безопасности вы можете определить пользователей, которым требуется протокол SSH для входа в систему и выполнения удаленных задач в системе.
Это исключает других пользователей, которые могут попытаться получить доступ к вашей системе без вашего разрешения.
Как всегда, откройте файл конфигурации и добавьте директиву «AllowUsers», за которой добавьте имена пользователей, которым вы хотите предоставить доступ.
В приведенном ниже примере я разрешил пользователям «itsecforu» и «itisgood» иметь удаленный доступ к системе через SSH.
Любой другой пользователь, который пытается получить удаленный доступ, будет заблокирован.
AllowUsers itsecforu itisgood
$ sudo systemctl restart sshd
7. Настройте ограничение попыток ввода пароля.
Еще один способ добавить уровень безопасности – ограничить количество попыток входа в систему SSH, чтобы после нескольких неудачных попыток соединение обрывалось.
Итак, еще раз зайдите в файл конфигурации и найдите директиву MaxAuthTries и определите значение для максимального количества попыток.
В этом примере предел был установлен в 3 попытки, как показано далее:
MaxAuthTries 3
И, наконец, перезапустите службу SSH, как в предыдущих случаях.
Заключение
Это был обзор некоторых мер, которые вы можете предпринять для защиты удаленных соединений SSH.
Важно добавить, что вы всегда должны назначать надежные пароли пользователям, имеющим удаленный доступ для предотвращения атак методом брута.