Защита службы SSH

Вступление

Эта статья посвящена защите службы SSH в системах Linux. Следующие пункты объяснены более подробно:

  • Защита службы SSH
  • логин на основе сертификата
  • Двухфакторная аутентификация

Шаг 1 - Защита службы SSH

Это в основном о настройке конфигурации OpenSSH. Все последующие изменения в файле конфигурации SSH относятся к следующему файлу: /etc/ssh/sshd_config

Шаг 1.1 - Деактивировать root-логин

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

Чтобы создать такого пользователя, необходимо выполнить следующие команды в системе.

useradd -m -U -s /bin/bash -G sudo holu
passwd holu

Теперь root-логин может быть деактивирован. Поэтому строка PermitRootLogin в файле конфигурации SSH должна быть изменена следующим образом:

PermitRootLogin no

Шаг 1.2 - Автоматический тайм-аут сеанса

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

ClientAliveInterval 300
ClientAliveCountMax 1

ClientActiveInterval определяет максимальное время, в течение которого сеанс может быть неактивным до его завершения. В этом случае 300 секунд - это 5 минут. ClientAliveCountMax определяет количество проверок, которые необходимо выполнить перед отключением.

Шаг 1.3 - Включить пользователя для SSH

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

AllowUsers holu holu2

Шаг 1.4 - Изменить порт по умолчанию для SSH

Этот параметр изменяет порт SSH с 22.

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

Недостатки: модифицированный порт SSH должен быть указан для каждого соединения. Здесь у вас есть возможность сохранить SSH соединение. В Windows, например с Putty, это делается через интерфейс. На клиентах Linux ~/.ssh/config должен быть создан файл со следующим содержимым.

Host <yout_host>
HostName <your_host>
Port SELECTED_PORT

(Необязательно) Ключ также может храниться здесь позже: IdentityFile ~/.ssh/id_rsa.

Предупреждение: ** При изменении порта SSH может потребоваться изменить настройки брандмауэра. Это должно быть проверено в первую очередь.

Чтобы применить настройку, в файл конфигурации SSH должны быть внесены следующие изменения: Рекомендуется выбрать порт между 10000 и 65535.

Port SELECTED_PORT

Шаг 1.5 - Автоматическое отключение при неправильном входе

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

MaxAuthTries 2

Шаг 1.6 - Деактивировать неиспользуемые функции

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

AllowTcpForwarding no                   # Disables port forwarding.
X11Forwarding no                        # Disables remote GUI view.
AllowAgentForwarding no                 # Disables the forwarding of the SSH login.
AuthorizedKeysFile .ssh/authorized_keys # The ".ssh/authorized_keys2" file should be removed.

Шаг 1.7 - Применение настроек

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

sshd -t

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

systemctl restart sshd

Шаг 2 - Настройка Fail2Ban

Это программное обеспечение предлагает защиту от так называемых атак Bute-force.

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

Для установки Fail2Ban необходимы следующие шаги. Установка программного обеспечения:

Ubuntu / Debian

apt install fail2ban
systemctl enable fail2ban

CentOS / RedHat

yum install epel-release
yum install fail2ban
systemctl enable fail2ban

ArchLinux

pacman -S fail2ban
systemctl enable fail2ban

OpenSUSE / SELS

zypper install fail2ban
systemctl enable fail2ban

Fedora

dnf install fail2ban
systemctl enable fail2ban

Настройка конфигурации Fail2Ban


Создайте конфигурацию, используя шаблон:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

В файл /etc/fail2ban/jail.local должны быть внесены следующие изменения:

На [sshd] вкладке enable должно быть установлено значение true и должен быть указан возможно измененный порт SSH.

enabled = true
port = SELECTED_SSH_PORT

Необязательно, значения для:

  • bantime (Время, в которое дальнейшие входы в систему невозможны.)
  • findtime (Время, в которое должны учитываться неправильные попытки входа в систему. Начинается с первого неудачного входа в систему.)
  • maxretry (Максимально возможное количество неудачных попыток до блокировки.)
  • может быть изменено.

Следующая команда должна принять измененную конфигурацию для этого:

systemctl restart fail2ban

Шаг 3 - Проверка подлинности на основе сертификатов

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

На клиенте

Создайте пару ключей SSH

Linux / MacOS

Создайте пару ключей SSH с битовой длиной 4096.

ssh-keygen -b 4096

Внимание: по соображениям безопасности рекомендуется защищать ключ парольной фразой. Это означает, что ключ недоступен в виде простого текста, но зашифрован AES-CBC.

Windows

Чтобы сгенерировать пару ключей SSH в системах Windows, можно использовать либо WSL (Windows Subsystem for Linux), либо программное обеспечение PuttyGen .

Передайте открытый SSH-ключ на сервер

Linux / MacOS

Для передачи открытого ключа на сервер первым шагом является использование SSH-соединения с использованием аутентификации по паролю. Инструмент ssh-copy-id копирует соответствующий файл идентификации на сервер:

ssh-copy-id -i .ssh/id_rsa.pub holu@<your_host>

Windows

В системах Windows этот шаг выполняется вручную путем копирования содержимого открытого ключа в /home/holu/.ssh/authorized_keys файл на сервере. Также возможно, что этот файл должен быть создан первым.

Тестирование соединения SSH с аутентификацией на основе сертификатов:

ssh -i .ssh/id_rsa holu@<your_host>

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

PasswordAuthentication no.


Это требует изменения PasswordAuthentication yes в PasswordAuthentication no файле конфигурации SSH в /etc/ssh/sshd_config.

Запись PubkeyAuthentication также должна быть проверена, если она включена yes и не закомментирована.

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

Match User holu
    PasswordAuthentication no

Шаг 4 - Двухфакторная аутентификация

После успешного входа в систему требуется одноразовый пароль до завершения процесса входа. Это делается с помощью Google Authenticator.

Примечание. Для создания временного одноразового пароля (TOTP) требуется смартфон с одним из перечисленных приложений.

  • Google Authenticator
  • andOTP

Установка Google Authenticator

Ubuntu / Debaian

apt install libpam-google-authenticator

CentOS / RedHat

yum install epel-release
yum install google-authenticator

ArchLinux

pacman -S libpam-google-authenticator

openSUSE / SELS

zypper install google-authenticator-libpam

Конфигурация Google Authenticator

После установки модуля PAM его можно инициализировать и настроить, как показано ниже.

Запуск Google Authenticator:

google-authenticator

Do you want authentication tokens to be time-based (y/n) y создает токены TOTP (одноразовые пароли на основе времени) n, создает токены HOTP (одноразовые пароли на основе счетчиков)

QR-код теперь отображается на консоли SSH. Сканируйте этот код с помощью совместимого приложения на вашем смартфоне.

надежно скопируйте и сохраните перечисленные ниже ключи. С помощью аварийных кодов вы можете войти без OTP. Обновите файл .google_authenticator с этой информацией. Тип y.

Подтвердите все остальные вопросы кнопками y или, n если вы хотите другие настройки.

Интеграция в SSH-вход

Модуль PAM Google Authenticator настроен и теперь можно настраивать такие службы, как демон SSH, чтобы разрешить двухфакторную аутентификацию через него.

Корректировки в /etc/pam.d/sshd

Здесь время @include common-auth должно быть закомментировано # в начале строки. Затем строка auth required pam_google_authenticator.so вставляется.

Адаптации в /etc/ssh/sshd_config. В файле конфигурации ChallengeResponseAuthentication теперь можно установить значение yes.

ChallengeResponseAuthentication yes

Также записи UsePAM и AuthenticationMethods должны быть проверены. Запись UsePAM должна быть установлена yes и AuthenticationMethods должна выглядеть так:

AuthenticationMethods publickey,keyboard-interactive

Перезапустите службу SSH

systemctl restart sshd

После этого настройка двухфакторной аутентификации завершена.

Добавить комментарий

Автору будет очень приятно узнать обратную связь о своем руководстве.

Комментариев 0