Найти тему
Heisenberg

Дефолт настройки для ssh

Настройка SSH и Центра Сертификации на Linux

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

Установка SSH и OpenSSH-server

Прежде чем приступать к настройке, убедитесь, что на всех ваших Linux-хостах установлены пакеты ssh и openssh-server. Для этого выполните следующие команды:

apt install ssh
apt install openssh-server

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

После установки необходимо настроить конфигурацию SSH для разрешения подключения под пользователем root:

  1. Откройте файл конфигурации SSH:
    nano /etc/ssh/sshd_config
  2. Найдите строку PermitRootLogin и измените её значение на yes (если требуется разрешить root-доступ):
    PermitRootLogin yes
  3. Перезапустите демон SSH:
    systemctl restart ssh

Настройка Центра Сертификации

Создание пары корневых ключей

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

ssh-keygen -C CA -f server_ca

В результате будут созданы два файла: server_ca и server_ca.pub. Закрытый ключ server_ca оставляем на сервере, а публичный ключ server_ca.pub необходимо скопировать на все машины в директорию /etc/ssh/.

Распространение публичного ключа CA

Для копирования публичного ключа CA на каждую машину используйте следующую команду (при необходимости временно отключите firewalld):

scp server_ca.pub address:/etc/ssh/

Настройка SSH для доверия к CA

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

TrustedUserCAKeys /etc/ssh/server_ca.pub

Создание и подписание пользовательских ключей

  1. На сервере центра сертификации создайте ключи для локального пользователя (например, zel):
    ssh-keygen -f id_
    zel
  2. Подпишите публичный ключ с использованием корневого ключа CA:
    ssh-keygen -s server_ca -I
    zeluser -n sky id_zel.pub
  3. Скопируйте закрытый ключ и подписанный публичный ключ на каждого пользователя (в домашнюю директорию пользователя root):
    scp id_sky address:/root/
    scp id_sky-cert.pub address:/root/

Проверка подключения

Для проверки подключения выполните команду:

ssh -i id_zel zel@address

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

Дополнительная настройка SSH на всех хостах

Установка баннера

  1. Создайте файл с баннером:
    bashКопировать кодecho "Authorized access only!" > /etc/ssh/banner
  2. Откройте файл конфигурации SSH:
    bashКопировать кодnano /etc/ssh/sshd_config
  3. Найдите строку #Banner none, раскомментируйте её и замените на:
    plaintextКопировать кодBanner /etc/ssh/banner

Запрет доступа root

Найдите строку PermitRootLogin, раскомментируйте её и измените значение на no:PermitRootLogin no

Отключение аутентификации по паролю

Найдите строку PasswordAuthentication, раскомментируйте её и измените значение на no:

PasswordAuthentication no

Перевод на нестандартный порт

Найдите строку Port, раскомментируйте её и измените значение на 229 (кроме сервера HQ-SRV):

Port 229

Ограничение попыток входа

Найдите строку MaxAuthTries, раскомментируйте её и измените значение на 4:

MaxAuthTries 4

Отключение пустых паролей

Проверьте, чтобы строка PermitEmptyPasswords была установлена в no:

plaintextКопировать кодPermitEmptyPasswords no

Установка времени аутентификации

Найдите строку LoginGraceTime, раскомментируйте её и измените значение на 5m:

LoginGraceTime 5m

Отключение пересылки X11

Пересылка X11 позволяет передавать графический интерфейс через SSH, но если это не требуется, её лучше отключить. Найдите строку X11Forwarding, раскомментируйте её и измените значение на no:

X11Forwarding no

Ограничение пользователей

Для ограничения доступа к SSH только определённым пользователям, добавьте следующую строку. В этом примере доступ разрешён только пользователям user1 и user2:

AllowUsers user1 user2

Отключение пересылки TCP

Пересылка TCP позволяет передавать сетевой трафик через SSH, но если это не нужно, её лучше отключить. Найдите строку AllowTcpForwarding, раскомментируйте её и измените значение на no:

AllowTcpForwarding no

Включение двухфакторной аутентификации

Для повышения безопасности можно включить двухфакторную аутентификацию с использованием PAM (Pluggable Authentication Modules). Добавьте следующие строки в конфигурационный файл PAM (обычно /etc/pam.d/sshd):

auth required pam_google_authenticator.so

Убедитесь, что модуль libpam-google-authenticator установлен на вашем сервере.

Отключение использования протокола SSH версии 1

SSH версии 1 имеет известные уязвимости, поэтому его следует отключить. Найдите строку Protocol, раскомментируйте её и измените значение на 2:

Protocol 2

Ограничение времени сессии

Для повышения безопасности можно установить ограничение времени сессии. Найдите строку ClientAliveInterval, раскомментируйте её и измените значение на 300 секунд (5 минут):

ClientAliveInterval 300

Также установите параметр ClientAliveCountMax в 0, чтобы сессия завершалась по истечении указанного времени:

ClientAliveCountMax 0

Отключение пересылки агентом

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

AllowAgentForwarding no

Перезапуск демона SSH

После всех изменений перезапустите демон SSH:

systemctl restart ssh

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