Логотип
Код, который не читается, не существует для других. (автор не известен)

8 Советов по усилению защиты SSH-сервера Linux от атак методом перебора

8 Советов по усилению защиты SSH-сервера Linux от атак методом перебора

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

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

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

В этой статье приведены восемь практических советов по усилению защиты SSH в Linux. Цель — сократить количество ненужных доступов, усилить аутентификацию и сделать автоматические атаки менее эффективными.

 

Сколько времени требуется для подбора пароля?

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

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

Важным фактором является длина пароля. Для действительно случайного пароля каждый дополнительный символ экспоненциально увеличивает количество возможных комбинаций.

Национальный институт стандартов и технологий США уделяет особое внимание длине и надежности паролей и рекомендует ограничивать количество попыток аутентификации в интернете, чтобы снизить вероятность подбора пароля.

 

Взлом паролей в автономном режиме

Если злоумышленник получает хешированные пароли, он может проверять варианты паролей в автономном режиме, не отправляя каждую попытку на исходный сервер.

Это может происходить очень быстро, если базовый алгоритм хеширования рассчитан на высокую скорость. Например, бенчмарк Hashcat показал, что NVIDIA RTX 5090 способна обрабатывать около 220,6 миллиарда простых хешей MD5 в секунду. Это демонстрирует, насколько быстро современное оборудование может выполнять вычисления с использованием быстрого хеширования.

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

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

Они могут использовать словари, утекшие пароли, распространенные шаблоны паролей, правила и целенаправленные попытки подбора. Таким образом, предсказуемый пароль может оказаться гораздо более уязвимым, чем по-настоящему случайный пароль той же длины.

 

Онлайн-атаки по протоколу SSH отличаются от обычных

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

Это означает, что скорость хеширования на графическом процессоре не соответствует количеству попыток ввода пароля SSH в секунду.

Каждая попытка аутентификации по протоколу SSH задействует протокол SSH, сеть и сервер. OpenSSH также может ограничивать аутентификацию и доступ с помощью таких параметров, как MaxAuthTriesAllowUsersAllowGroups, и PasswordAuthentication.

MaxAuthTries ограничивает количество попыток аутентификации для каждого соединения; сам по себе он не является общим ограничителем скорости. Другие средства контроля, в том числе ограничения на количество подключений и внешние инструменты, такие как Fail2ban, могут помочь справиться с повторяющимися или неправомерными попытками подключения.

Это различие важно:

Обычно злоумышленник не может перебирать миллиарды паролей в секунду на SSH-сервере только потому, что графический процессор может вычислять миллиарды хэшей MD5 в секунду.

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

Читать  Let’s Encrypt запускает сертификаты с IP-адресами и сроком действия 6 дней

Хранение паролей тоже имеет значение

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

Быстрые алгоритмы хеширования, такие как MD5, не подходят для хранения паролей. В современных хранилищах паролей должна использоваться функция хеширования паролей, призванная сделать подбор пароля дорогостоящим, например Argon2id, scrypt, bcrypt или PBKDF2 с соответствующим рабочим фактором. В некоторых системах Linux для хеширования паролей системных учетных записей используется yescrypt.

Это еще одна причина не воспринимать бенчмарк MD5 для графического процессора как универсальные часы для подбора паролей.

 

Что это значит для SSH

Для администратора Linux вывод прост:

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

 

Надежный пароль — это хорошо, но усиление защиты SSH добавляет еще один уровень безопасности, контролируя попытки аутентификации.

В следующих разделах мы узнаем, как применить эти меры защиты на сервере Linux.

 

Что такое атака методом перебора по протоколу SSH?

Атака методом перебора по протоколу SSH — это попытка получить доступ к серверу путем многократного подбора имен пользователей и паролей.

Злоумышленники обычно автоматизируют этот процесс. Скрипт может перебирать множество распространенных имен пользователей и паролей без участия человека.

Чаще всего злоумышленники пытаются получить доступ к следующим ресурсам:

  • root
  • admin
  • user
  • Имена пользователей по умолчанию
  • Слабые или повторно используемые пароли

 

Сервер, напрямую подключенный к интернету, может получать автоматические попытки входа по протоколу SSH, даже если никто не пытается взломать его целенаправленно.

Цель усиления защиты SSH проста: затруднить несанкционированный доступ и сократить количество возможностей для атак.

 

8 советов по усилению защиты SSH для защиты вашей системы Linux от атак с подбором пароля

Как администратор Linux, вы можете защитить свои серверы от атак методом перебора по протоколу SSH разными способами:

  • Используйте длинные уникальные пароли там, где они требуются.
  • Для доступа к серверу отдавайте предпочтение аутентификации с помощью открытого ключа SSH.
  • Не разрешайте пользователям, которым это не нужно, входить в систему через SSH.
  • Ограничьте количество попыток аутентификации.
  • Добавьте средства контроля, например Fail2ban, чтобы реагировать на повторяющиеся неудачные подключения.
  • Обновляйте OpenSSH и операционную систему.
  • Отслеживайте журналы аутентификации SSH.

 

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

Этим все сказано. В следующих разделах мы узнаем, как применить эти меры защиты на сервере Linux.

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

1. Своевременно обновляйте OpenSSH

Проблемы с безопасностью могут затрагивать как OpenSSH, так и операционную систему. Обновление пакетов Linux — одно из самых простых способов повысить безопасность.

В Debian или Ubuntu:

sudo apt update
sudo apt upgrade

 

В Fedora, RHEL и совместимых системах:

sudo dnf upgrade

 

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

ssh -V

 

Чтобы узнать версию SSH-сервера, вы также можете проверить установленный пакет с помощью менеджера пакетов вашего дистрибутива.

При проверке безопасности не полагайтесь только на номер версии OpenSSH. В дистрибутивах Linux исправления безопасности часто переносятся в более старые версии пакетов.

 

 

Совет:
включите в своем дистрибутиве обычный процесс обновления системы безопасности,
чтобы не ждать месяцами перед обновлением сервера.

 

2. Отключить прямой вход в систему SSH от имени пользователя root

Прямой вход в систему SSH от имени пользователя root дает злоумышленнику доступ к имени пользователя с высоким приоритетом.

Лучше входить в систему с обычной учетной записью администратора и использовать sudo только при необходимости root-доступа.

Читать  Fedora открывает доступ к инструментам ИИ, требуя раскрытия информации и контроля

Откройте конфигурацию SSH-сервера:

sudo nano /etc/ssh/sshd_config

 

Установить:

PermitRootLogin no

 

Сохранить файл.

Перед применением изменений проверьте конфигурацию:

sudo sshd -t

 

Если вывода нет, значит, конфигурация прошла проверку синтаксиса.

Затем перезагрузите SSH:

sudo systemctl reload ssh

 

В некоторых дистрибутивах служба называется sshd:

sudo systemctl reload sshd

 

 

Ubuntu также поддерживает файлы конфигурации в каталоге /etc/ssh/sshd_config.d/, поэтому перед изменением настроек проверьте конфигурацию SSH вашего дистрибутива.

 

3. Используйте SSH-ключи вместо паролей

SSH-ключи, как правило, лучше подходят для администрирования сервера, чем аутентификация по паролю.

Сгенерируйте ключ Ed25519 на своем локальном компьютере:

ssh-keygen -t ed25519

 

Обычно можно оставить расположение файла по умолчанию. Защитите закрытый ключ парольной фразой.

Скопируйте открытый ключ на сервер:

ssh-copy-id username@server

 

Затем проверьте соединение:

ssh username@server

 

После того как вход по ключу будет работать, вы можете отключить аутентификацию по паролю.

Редактировать:

sudo nano /etc/ssh/sshd_config

 

Установить:

PasswordAuthentication no

 

Затем проверить конфигурацию:

sudo sshd -t

 

Перезагрузить SSH:

sudo systemctl reload ssh

 

или:

sudo systemctl reload sshd

Важно: не пропускайте этап тестирования

Отключение аутентификации по паролю до подтверждения работоспособности SSH-ключа может привести к блокировке доступа к серверу.

Не закрывайте текущий сеанс SSH.

Откройте второй терминал и выполните проверку:

ssh username@server

 

Отключайте аутентификацию по паролю только после успешного входа в систему с использованием нового ключа.

 

4. Ограничить круг пользователей, которые могут использовать SSH

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

OpenSSH позволяет указать, каким пользователям разрешено подключаться.

Например:

AllowUsers senthil kumar

 

Это разрешает доступ по SSH только для senthil и kumar.

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

AllowGroups sshusers

 

Затем создайте группу:

sudo groupadd sshusers

 

Добавить пользователя:

sudo usermod -aG sshusers senthil

 

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

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

OpenSSH поддерживает AllowUsers и AllowGroups в качестве параметров контроля доступа.

 

Не усложняйте: разрешайте доступ по SSH только тем учетным записям, которым он действительно нужен.

 

 

5. Ограничение количества попыток аутентификации SSH

Вы также можете ограничить количество попыток аутентификации в рамках одного подключения.

В /etc/ssh/sshd_config, установите:

MaxAuthTries 3

 

Значение OpenSSH по умолчанию выше, поэтому снижение значения может уменьшить количество повторных попыток в пределах одного соединения.

После его изменения:

sudo sshd -t

 

Затем перезагрузите:

sudo systemctl reload ssh

 

Вы также можете настроить MaxStartups, который контролирует неаутентифицированные SSH-соединения.

Например:

MaxStartups 10:30:60

 

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

Для большинства систем начните с более простой настройки MaxAuthTries.

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

 

6. Установите Fail2ban

Fail2ban полезен в качестве дополнительного уровня защиты от повторяющихся неудачных попыток аутентификации.

Он отслеживает файлы журналов и может временно блокировать IP-адреса, которые неоднократно приводят к сбоям аутентификации.

В Debian или Ubuntu:

sudo apt update
sudo apt install fail2ban

 

Включить службу:

sudo systemctl enable --now fail2ban

 

Проверить ее статус:

sudo fail2ban-client status

 

Чтобы проверить SSH-брандмауэр:

sudo fail2ban-client status sshd

 

В зависимости от вашего дистрибутива Linux и конфигурации Fail2ban, SSH-тюрьма может называться по-другому.

Fail2ban не заменяет строгую аутентификацию.

Рассматривайте его как еще один уровень безопасности:

SSH-ключи
 +
Ограничение доступа для пользователей
 +
Ограничение количества попыток аутентификации
 +
Fail2ban

 

Использование нескольких средств контроля более эффективно, чем использование одного.

 

7. Проверьте конфигурацию SSH перед перезагрузкой

Небольшая ошибка в конфигурации может привести к некорректной работе SSH.

Всегда проверяйте конфигурацию перед внесением изменений:

sudo sshd -t

 

Если команда не выдала никаких результатов, значит, конфигурация прошла синтаксическую проверку.

Читать  VPS в Европе: как выбрать сервер для сайта, бота или приложения

Если команда выдала ошибку, устраните проблему перед перезагрузкой SSH.

Это особенно важно после внесения изменений в:

  • PermitRootLogin
  • PasswordAuthentication
  • AllowUsers
  • AllowGroups
  • MaxAuthTries
  • MaxStartups

 

После успешной проверки синтаксиса:

sudo systemctl reload ssh

 

Или в системах, использующих имя службы sshd:

sudo systemctl reload sshd

 

В текущей документации Ubuntu по OpenSSH особо рекомендуется проверять конфигурацию с помощью sshd -t перед перезапуском или перезагрузкой службы.

 

Оставьте один сеанс открытым

Это одно из самых важных правил при удаленной настройке SSH.

Не вносите изменения, сразу же закрывайте существующий сеанс SSH и надейтесь, что все заработает.

Вместо этого:

  1. Оставьте текущий сеанс открытым.
  2. Проверьте конфигурацию.
  3. Перезагрузите SSH.
  4. Откройте второй терминал.
  5. Протестируйте новое SSH-соединение.
  6. Закройте старый сеанс только после того, как новое соединение заработает.

 

8. Мониторинг неудачных попыток входа по SSH

Усиление защиты SSH — это не только настройка. Вы также должны знать, что происходит на сервере.

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

В системах, использующих systemd, попробуйте:

sudo journalctl -u ssh

 

В некоторых дистрибутивах используется:

sudo journalctl -u sshd

 

Чтобы отслеживать появление новых записей:

sudo journalctl -f

 

Вы также можете искать случаи неудачной аутентификации:

sudo journalctl -u ssh | grep -i "failed"

 

Точное расположение журнала и название службы зависят от дистрибутива Linux.

Регулярная проверка этих журналов поможет вам выявить:

  • повторяющиеся неудачные попытки входа
  • неизвестные имена пользователей
  • неожиданные исходные адреса
  • проблемы с аутентификацией
  • неправильно настроенные клиенты
  • возможные попытки подбора пароля

 

Если установлен Fail2ban, его статус также может показать, были ли адреса заблокированы.

 

Простой контрольный список для повышения безопасности SSH

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

Контроль безопасностиРекомендуемое действие
OpenSSHОбновлять
Вход от имени rootОтключить прямой вход от имени root
Аутентификация по паролюОтключить после того, как будут работать SSH-ключи
SSH-ключиИспользовать аутентификацию на основе ключей
Пользователи SSHРазрешить вход только для необходимых пользователей или групп
Попытки аутентификацииУстановить разумное значение MaxAuthTries
Fail2banВключить его в качестве дополнительного уровня
КонфигурацияТестирование с помощью sshd -t
ЖурналыМониторинг неудачных попыток аутентификации

 

Вам не нужно применять все продвинутые опции SSH, которые можно найти в интернете.

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

 

Распространенные ошибки при усилении защиты SSH

1. Слишком раннее отключение паролей

Это один из самых простых способов потерять доступ к удаленному серверу.

Всегда проверяйте свой SSH-ключ перед настройкой:

PasswordAuthentication no

 

2. Закрытие текущего сеанса SSH

Оставьте существующий административный сеанс открытым на время тестирования изменений.

Если новая конфигурация не сработает, существующий сеанс может помочь ее исправить.

 

3. Копирование случайных конфигураций SSH

Не копируйте большой sshd_config фрагмент из блога или форума, не разобравшись в нем.

Настройки SSH могут различаться в зависимости от дистрибутива Linux и версии OpenSSH.

Меняйте только то, что вам нужно.

 

4. Использование Fail2ban в качестве основной защиты

Fail2ban полезен, но он не должен быть вашей единственной защитой.

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

 

5. Использование ненадежных паролей для остальных учетных записей

Даже если вы используете аутентификацию по SSH-ключу, другие сервисы могут по-прежнему использовать пароли.

Используйте длинные и уникальные пароли для учетных записей и сервисов, которые их требуют.

 

А как насчет смены порта SSH?

Смена порта SSH с 22-го по умолчанию часто предлагается в качестве защиты от перебора паролей.

Это может снизить количество автоматических сканирований, но не должно рассматриваться как основной метод обеспечения безопасности.

Злоумышленник, обнаруживший новый порт, все равно может атаковать службу SSH.

По этой причине в данном руководстве основное внимание уделяется средствам контроля, которые напрямую повышают безопасность аутентификации и доступа:

  • Строгая аутентификация
  • Ограничение доступа для пользователей
  • Ограничение количества попыток
  • Fail2ban
  • Обновления
  • Мониторинг

 

Эти средства контроля полезны независимо от того, какой порт SSH вы используете.

 

Заключение

Для SSH не требуется сложная настройка безопасности.

Начните с основ:

  1. Обновляйте OpenSSH и операционную систему.
  2. Отключите прямой вход в систему от имени пользователя root.
  3. Используйте SSH-ключи вместо паролей.
  4. Ограничьте доступ к SSH для необходимых пользователей.
  5. Ограничьте количество попыток аутентификации.
  6. Добавьте Fail2ban.
  7. Тестируйте каждое изменение конфигурации.
  8. Отслеживайте логи SSH.

 

Самое важное — вносить изменения осторожно.

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

Несколько простых мер предосторожности могут значительно усложнить атаку на Linux-сервер, подключенный к интернету, при этом не затрудняя использование SSH для законных администраторов.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

3 × 2 =

Это может быть вам интересно


Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала