Поиск по сайту:

Как защитить и усилить сервер OpenSSH


Когда дело доходит до доступа к удаленным устройствам, таким как серверы, маршрутизаторы и коммутаторы, настоятельно рекомендуется использовать протокол SSH, поскольку он способен шифровать трафик и отгонять любого, кто может попытаться подслушать ваши соединения.

Как бы то ни было, настройки SSH по умолчанию не являются безупречными, и необходимы дополнительные настройки, чтобы сделать протокол более безопасным. В этом руководстве мы рассмотрим различные способы, которые можно использовать для защиты и усиления установки OpenSSH на сервере.

1. Настройте беспарольную аутентификацию SSH.

По умолчанию SSH требует, чтобы пользователи вводили свои пароли при входе в систему. Но вот в чем дело: хакеры могут угадать пароли или даже выполнить атаку методом перебора с помощью специальных хакерских инструментов и получить доступ к вашей системе. На всякий случай настоятельно рекомендуется использовать аутентификацию SSH без пароля.

Первым шагом является создание пары ключей SSH, состоящей из открытого ключа и закрытого ключа. Закрытый ключ находится в вашей хост-системе, а открытый ключ затем копируется на удаленный сервер.

После успешного копирования открытого ключа вы сможете беспрепятственно подключаться к удаленному серверу по протоколу SSH без необходимости предоставления пароля.

Следующим шагом будет отключение аутентификации по паролю. Для этого вам необходимо изменить файл конфигурации SSH.

sudo vim /etc/ssh/sshd_config

Внутри файла конфигурации прокрутите и найдите следующую директиву. Раскомментируйте и измените параметр 'yes' на 'no'.

PasswordAuthentication no

Затем перезапустите демон SSH.

sudo systemctl restart sshd

На этом этапе у вас будет доступ к удаленному серверу только с использованием аутентификации по ключу SSH.

2. Отключите запросы на беспарольное соединение пользователя по SSH.

Еще один рекомендуемый способ повышения безопасности вашего сервера — отключить вход по SSH для пользователей без паролей. Это звучит немного странно, но иногда системные администраторы могут создавать учетные записи пользователей и забывать назначать пароли, что является очень плохой идеей.

Чтобы отклонить запросы от пользователей без пароля, снова перейдите к файлу конфигурации /etc/ssh/sshd_config и убедитесь, что у вас есть указанная ниже директива:

PermitEmptyPasswords no

Затем перезапустите службу SSH, чтобы изменения вступили в силу.

sudo systemctl restart sshd

3. Отключите корневой вход по SSH.

Нетрудно понять, что может случиться, если хакеру удастся подобрать ваш пароль root. Разрешение удаленного входа в систему с правами root — это всегда плохая идея, которая может поставить под угрозу безопасность вашей системы.

По этой причине всегда рекомендуется отключить удаленный вход с правами root по SSH и вместо этого использовать обычного пользователя без полномочий root. Еще раз перейдите к файлу конфигурации и измените эту строку, как показано.

PermitRootLogin no

Когда вы закончите, перезапустите службу SSH, чтобы изменения вступили в силу.

sudo systemctl restart sshd

Впредь удаленный root-вход будет деактивирован.

4. Используйте протокол SSH 2.

SSH существует в двух версиях: SSH протокол 1 и протокол 2. SSH протокол 2 был представлен в 2006 году и более безопасен, чем протокол 1, благодаря строгим криптографическим проверкам, массовому шифрованию и надежным алгоритмам.

По умолчанию SSH использует протокол 1. Чтобы изменить его на более безопасный Протокол 2, добавьте в файл конфигурации следующую строку:

Protocol 2

Как всегда, перезапустите SSH, чтобы изменения вступили в силу.

sudo systemctl restart sshd

В дальнейшем SSH будет использовать Протокол 2 по умолчанию.

Чтобы проверить, поддерживается ли еще SSH протокол 1, выполните команду:

ssh -1 user@remote-IP

Вы получите сообщение об ошибке «Протокол SSH версии 1 больше не поддерживается».

В данном случае команда была:

ssh -1 [email 

Кроме того, вы можете просто указать тег -2, чтобы быть уверенным, что Протокол 2 является используемым протоколом по умолчанию.

ssh -2 [email 

5. Установите значение времени ожидания соединения SSH.

Если оставить компьютер без присмотра на длительное время с неактивным SSH-соединением, это может представлять угрозу безопасности. Кто-то может просто пройти мимо, взять на себя управление вашим сеансом SSH и делать все, что ему заблагорассудится. Поэтому, чтобы решить эту проблему, разумно установить ограничение времени простоя, при превышении которого сеанс SSH будет закрыт.

Еще раз откройте файл конфигурации SSH и найдите директиву ClientAliveInterval. Назначьте разумное значение, например, я установил ограничение на 180 секунд.

ClientAliveInterval 180

Это означает, что сеанс SSH будет прерван, если в течение 3 минут не будет зарегистрировано никакой активности, что эквивалентно 180 секундам.

Затем перезапустите демон SSH, чтобы изменения вступили в силу.

sudo systemctl restart sshd

6. Ограничьте доступ SSH для определенных пользователей

Для дополнительного уровня безопасности вы можете определить пользователей, которым требуется протокол SSH для входа в систему и выполнения удаленных задач в системе. Это защитит других пользователей, которые могут попытаться получить доступ к вашей системе без вашего разрешения.

Как всегда, откройте файл конфигурации и добавьте директиву «AllowUsers», а затем имена пользователей, которым вы хотите предоставить права. В приведенном ниже примере я разрешил пользователям «tecmint» и «james» иметь удаленный доступ к системе через SSH. Любой другой пользователь, попытавшийся получить удаленный доступ, будет заблокирован.

AllowUsers tecmint james

После этого перезапустите SSH, чтобы изменения сохранились.

sudo systemctl restart sshd

7. Настройте ограничение на количество попыток ввода пароля.

Другой способ добавить уровень безопасности — ограничить количество попыток входа в систему SSH таким образом, чтобы после нескольких неудачных попыток соединение разрывалось. Итак, еще раз перейдите к файлу конфигурации, найдите директиву «MaxAuthTries» и определите значение максимального количества попыток.

В этом примере ограничение установлено на 3 попытки, как показано.

MaxAuthTries 3

И, наконец, перезапустите службу SSH, как в предыдущих сценариях.

Вам также могут пригодиться следующие статьи, посвященные SSH:

  • Как установить сервер OpenSSH 8.0 из исходного кода в Linux
  • Как установить Fail2Ban для защиты SSH на CentOS/RHEL 8
  • Как изменить порт SSH в Linux
  • Как создать SSH-туннелирование или переадресацию портов в Linux
  • 4 способа ускорить SSH-соединения в Linux
  • Как найти все неудачные попытки входа в систему SSH в Linux
  • Как отключить неактивные или простаивающие SSH-соединения в Linux
Заключение

Это был обзор некоторых мер, которые вы можете предпринять для защиты удаленных подключений SSH. Важно добавить, что вы всегда должны назначать надежные пароли пользователям, имеющим удаленный доступ, чтобы предотвратить атаки методом перебора. Мы надеемся, что это руководство оказалось для вас полезным. Ваши отзывы очень приветствуются.