SSH (Secure Shell) — это один из самых популярных и важных протоколов для безопасного удаленного управления серверами, включая гипервизоры, такие как oVirt. SSH используется для администрирования хостов и виртуальных машин, а также для выполнения различных операций на гипервизоре. Однако, как и любой сервис, SSH подвержен различным угрозам, включая брутфорс-атаки, попытки несанкционированного доступа и использование уязвимостей в протоколе. Важно правильно настроить и защищать SSH-сервер, чтобы минимизировать эти риски и обеспечить безопасность инфраструктуры.
В этой статье мы более подробно рассмотрим основные принципы защиты SSH-сервера на гипервизоре oVirt, включая конфигурации, конкретные примеры команд и настройки, а также лучшие практики по повышению безопасности.
1. Основные риски для SSH-сервера
Перед тем как рассматривать способы защиты, важно понимать основные риски, с которыми может столкнуться SSH-сервер:
- Брутфорс-атаки: злоумышленники пытаются угадать пароль с помощью перебора всех возможных комбинаций.
- Уязвимости в старых версиях SSH: устаревшие версии SSH-сервера могут содержать известные уязвимости, которые могут быть использованы для доступа к серверу.
- Некачественные пароли: использование слабых паролей или паролей по умолчанию является одной из основных уязвимостей.
- Открытые порты: открытые SSH порты (порт 22) без должной защиты могут быть использованы для атак извне.
- Неавторизованный доступ: если доступ не ограничен определенными пользователями или IP-адресами, это увеличивает шанс несанкционированных подключений.
2. Принципы защиты SSH-сервера на oVirt
Для минимизации рисков необходимо применить несколько принципов защиты, начиная от использования более безопасных методов аутентификации и заканчивая настройкой мониторинга.
2.1. Использование ключей SSH вместо паролей
Одним из наиболее эффективных способов защиты SSH-сервера является использование пары публичного и приватного ключей для аутентификации, вместо обычных паролей. Это значительно повышает безопасность, поскольку для взлома ключа необходимо его физическое присутствие или же знание приватного ключа, который, в свою очередь, должен быть защищен.
Шаги по настройке аутентификации с помощью ключей SSH:
-
Генерация пары ключей на локальной машине: Для начала сгенерируем пару ключей с использованием алгоритма RSA с длиной ключа 4096 бит. Команда:
ssh-keygen -t rsa -b 4096
Эта команда создаст два файла:
id_rsa
(приватный ключ) иid_rsa.pub
(публичный ключ), которые будут храниться в каталоге~/.ssh/
на локальной машине. -
Передача публичного ключа на сервер: Публичный ключ необходимо передать на сервер, в каталог
~/.ssh/authorized_keys
для соответствующего пользователя. Это можно сделать с помощью команды:ssh-copy-id user@your_ovirt_host
Либо вручную, скопировав содержимое файла
~/.ssh/id_rsa.pub
и вставив его в файл~/.ssh/authorized_keys
на сервере:cat ~/.ssh/id_rsa.pub | ssh user@your_ovirt_host 'cat >> ~/.ssh/authorized_keys'
-
Отключение аутентификации по паролю: Чтобы повысить безопасность, необходимо отключить аутентификацию по паролю. Для этого откройте файл конфигурации SSH-сервера
/etc/ssh/sshd_config
и измените следующие параметры:PasswordAuthentication no ChallengeResponseAuthentication no
После этого перезапустите SSH-сервис:
systemctl restart sshd
Это полностью отключит возможность входа по паролю и будет доступен только доступ через ключи SSH.
2.2. Ограничение доступа по IP-адресам
Один из важных шагов в защите SSH-сервера — это ограничение доступа только для определенных IP-адресов. Это значительно уменьшает вероятность успешных атак, особенно если сервер доступен через интернет.
Пример настройки с использованием iptables
:
-
Разрешаем доступ только с определенного IP-адреса:
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
-
Блокируем доступ для всех остальных:
iptables -A INPUT -p tcp --dport 22 -j DROP
-
Чтобы изменения сохранялись после перезагрузки, нужно сохранить правила:
service iptables save
Если на сервере используется firewalld, правила можно добавить с помощью:
firewall-cmd --zone=public --add-source=192.168.1.100 --permanent firewall-cmd --reload
Эти правила обеспечат доступ к SSH-серверу только с указанного IP-адреса и заблокируют все остальные попытки подключения.
2.3. Использование двухфакторной аутентификации (2FA)
Для дополнительной защиты можно настроить двухфакторную аутентификацию (2FA), которая потребует от пользователя помимо обычного ключа или пароля ввести код, сгенерированный на мобильном устройстве.
Настройка двухфакторной аутентификации с помощью Google Authenticator:
-
Установите PAM-модуль для Google Authenticator:
yum install pam_google_authenticator
-
Настройте Google Authenticator для каждого пользователя:
google-authenticator
Эта команда создаст конфигурационный файл и предложит отсканировать QR-код с помощью приложения Google Authenticator.
-
Включите поддержку 2FA в SSH, отредактировав файл конфигурации
/etc/pam.d/sshd
и добавив строку:auth required pam_google_authenticator.so
-
Активируйте двухфакторную аутентификацию в файле конфигурации SSH
/etc/ssh/sshd_config
:ChallengeResponseAuthentication yes
-
Перезапустите SSH-сервис:
systemctl restart sshd
Теперь при каждом подключении через SSH пользователю нужно будет ввести дополнительный код, полученный из приложения Google Authenticator.
2.4. Ограничение прав пользователя
Для того чтобы минимизировать ущерб в случае компрометации аккаунта, важно ограничить доступ по SSH только тем пользователям, которые действительно нуждаются в нем.
Пример настройки доступа через директивы AllowUsers
и DenyUsers
:
-
В файле
/etc/ssh/sshd_config
добавьте следующие строки:AllowUsers admin user1 DenyUsers user2 user3
Это позволит подключаться к серверу только пользователям
admin
иuser1
, в то время как доступ дляuser2
иuser3
будет заблокирован. -
Для более детализированного контроля можно использовать директиву
AllowGroups
иDenyGroups
, чтобы ограничить доступ на основе групп:AllowGroups admin_group
Это обеспечит доступ через SSH только для членов группы
admin_group
.
2.5. Мониторинг и оповещения о попытках несанкционированного доступа
Для своевременного обнаружения несанкционированных попыток доступа и брутфорс-атак можно использовать такие инструменты, как Fail2Ban.
Настройка Fail2Ban для защиты SSH:
-
Установите Fail2Ban:
yum install fail2ban
-
Создайте конфигурационный файл для SSH в
/etc/fail2ban/jail.local
:[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/secure maxretry = 5 bantime = 600
-
Перезапустите Fail2Ban:
systemctl restart fail2ban
Теперь Fail2Ban будет блокировать IP-адреса, с которых было совершено более 5 неудачных попыток входа за 10 минут (600 секунд).
2.6. Регулярные обновления SSH-сервера и системы
Не забывайте регулярно обновлять SSH-сервер и систему, чтобы закрывать уязвимости, которые могут быть использованы злоумышленниками.
Для обновления системы используйте команду:
yum update
Также можно включить автоматическое обновление безопасности с помощью yum-cron
:
yum install yum-cron
systemctl enable yum-cron
systemctl start yum-cron
3. Заключение
Защита SSH-сервера на гипервизоре oVirt — это не только настройка доступа, но и комплексный подход, включающий использование более безопасных методов аутентификации, ограничение доступа по IP-адресам, двухфакторную аутентификацию, мониторинг и своевременное обновление. Эти шаги помогут значительно повысить уровень безопасности и снизить риски, связанные с несанкционированным доступом и атаками на SSH-сервер.
Реклама Google |
|
Внимание! Данная статья не является официальной документацией.Использование информации необходимо выполнять с осторожностью, используя для этого тестовую среду.
Если у вас есть вопросы о построении современных систем резервного копирования, репликации, синхронизации данных и защиты от программ вымогателей обратитесь в нашу компанию для получения консультации о современных технологиях резервного копирования и восстановления данных. Наша компания имеет более чем 20-летний опыт в этой области. |
Десять лучших практик резервного копирования в Казахстане
- Установка и настройка контейнеров Docker на Ubuntu 24
- Резервное копирование и восстановление контейнера Docker средствами Kubernetes
- Подключение NFS-диска к контейнеру Docker: Глубокое погружение
- Bacula на oVirt: Установка, настройка и эффективное использование
- Zabbix на oVirt: Установка, настройка и эффективное использование
- Prometheus + Grafana на oVirt: Установка и эффективное использование
- oVirt Backup: Установка, настройка и эффективное использование
- Контейнеры Docker в oVirt — глубокое погружение
- Как установить и настроить Kubernetes в oVirt
- Установка и настройка ManageIQ на oVirt