Настройка 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:
- Откройте файл конфигурации SSH:
nano /etc/ssh/sshd_config - Найдите строку PermitRootLogin и измените её значение на yes (если требуется разрешить root-доступ):
PermitRootLogin yes - Перезапустите демон 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
Создание и подписание пользовательских ключей
- На сервере центра сертификации создайте ключи для локального пользователя (например,
zel):
ssh-keygen -f id_zel - Подпишите публичный ключ с использованием корневого ключа CA:
ssh-keygen -s server_ca -Izeluser -n sky id_zel.pub Скопируйте закрытый ключ и подписанный публичный ключ на каждого пользователя (в домашнюю директорию пользователя root):scp id_sky address:/root/scp id_sky-cert.pub address:/root/
Проверка подключения
Для проверки подключения выполните команду:
ssh -i id_zel zel@address
Если подключение прошло успешно и не запрашивается пароль, значит, настройка выполнена корректно.
Дополнительная настройка SSH на всех хостах
Установка баннера
- Создайте файл с баннером:
bashКопировать кодecho "Authorized access only!" > /etc/ssh/banner - Откройте файл конфигурации SSH:
bashКопировать кодnano /etc/ssh/sshd_config - Найдите строку #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
Если все шаги выполнены корректно и подключение прошло успешно без запроса пароля, значит, настройка завершена успешно.