Защита службы 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
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
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.
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
port = SELECTED_SSH_PORT
Необязательно, значения для:
- bantime (Время, в которое дальнейшие входы в систему невозможны.)
- findtime (Время, в которое должны учитываться неправильные попытки входа в систему. Начинается с первого неудачного входа в систему.)
- maxretry (Максимально возможное количество неудачных попыток до блокировки.)
- может быть изменено.
Следующая команда должна принять измененную конфигурацию для этого:
systemctl restart fail2ban
Шаг 3 - Проверка подлинности на основе сертификатов
Это позволяет пользователю войти на сервер без пароля для входа; только пароль требуется для защиты закрытого ключа.На клиенте
Создайте пару ключей SSHLinux / 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
PasswordAuthentication no
Шаг 4 - Двухфакторная аутентификация
После успешного входа в систему требуется одноразовый пароль до завершения процесса входа. Это делается с помощью Google Authenticator.Примечание. Для создания временного одноразового пароля (TOTP) требуется смартфон с одним из перечисленных приложений.
- Google Authenticator
- andOTP
Установка Google Authenticator
Ubuntu / Debaianapt 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