10.05.2024

SSH (Secure Shell) является фундаментальным инструментом для удаленного управления системами Linux. Эффективная настройка и обеспечение безопасности SSH-соединений — это неотъемлемая часть обеспечения целостности и защиты вашего сервера. В данной статье мы рассмотрим подробные шаги по настройке SSH и укреплению безопасности подключений для дистрибутивов CentOS и Debian/Ubuntu.

Часть 1: Настройка SSH

1. Установка SSH

CentOS:

sudo yum install openssh-server

Debian/Ubuntu:

sudo apt-get install openssh-server

2. Запуск службы SSH

sudo systemctl start ssh sudo systemctl enable ssh

3. Проверка доступности SSH-сервера

sudo systemctl status ssh

Часть 2: Базовая настройка

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

sudo nano /etc/ssh/sshd_config

Примеры настроек:

  • Изменение порта (по умолчанию 22): Port 2222
  • Отключение входа под учетной записью root: PermitRootLogin no
  • Ограничение методов аутентификации: PasswordAuthentication no

Если эти параметры были закомментированы знаком #, удалите его и установите нужное значение.

5. Перезапуск SSH-сервера после изменений

sudo systemctl restart ssh

Часть 3: Усиление безопасности

6. Использование ключей SSH

  • Генерация ключевой пары на локальной машине: ssh-keygen -t rsa -b 2048
  • Копирование открытого ключа на сервер: ssh-copy-id user@server_ip
  • Отключение входа по паролю (если ключи успешно настроены): PasswordAuthentication no

7. Ограничение доступа по IP

CentOS:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="your_ip_address" port protocol="tcp" port="2222" accept' sudo firewall-cmd --reload

Debian/Ubuntu:

sudo ufw allow from your_ip_address to any port 2222

8. Использование двухфакторной аутентификации (2FA)

Установка пакетов:

CentOS:

sudo yum install libpam-google-authenticator

Debian/Ubuntu:

sudo apt-get install libpam-google-authenticator

Настройка двухфакторной аутентификации:

nano ~/.ssh/sshd_config

Добавьте в конец файла:

ChallengeResponseAuthentication yes AuthenticationMethods publickey,password publickey,keyboard-interactive

Дополнительные меры безопасности

9. Ограничение доступа по пользователям

Для улучшения безопасности, вы можете явно указать, какие пользователи могут входить через SSH.

AllowUsers username1 username2

10. Ограничение доступа по группам

Если необходимо разрешить доступ для группы пользователей:

AllowGroups ssh_group

11. Автоматическая блокировка для брутфорс-атак

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

Установка Fail2Ban:

CentOS:

sudo yum install fail2ban

Debian/Ubuntu:

sudo apt-get install fail2ban

12. Мониторинг SSH-соединений

Используйте инструменты мониторинга, такие как logwatch или регулярно проверяйте журналы аутентификации для обнаружения подозрительной активности.

sudo tail -f /var/log/auth.log

13. Автоматические обновления

Регулярно обновляйте вашу операционную систему и программное обеспечение, включая SSH, чтобы закрыть известные уязвимости.

sudo yum update sudo apt-get update && sudo apt-get upgrade

14. Периодический аудит конфигурации

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

sudo sshd -t

Дополнительные меры безопасности (продолжение)

15. Использование SSH-ключей с фразой-паролем

Добавление фразы-пароля к SSH-ключам повышает безопасность, даже если ключи попадут в чужие руки.

ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -C "Комментарий" -N "Фраза_пароля"

16. Ограничение прав на файлы ключей

Убедитесь, что файлы ключей имеют ограниченные права доступа.

chmod 600 ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa.pub

17. Отключение неиспользуемых SSH-опций

Отключите ненужные опции в конфигурационном файле SSH для снижения поверхности атаки.

UseDNS no X11Forwarding no

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

Ограничьте количество попыток входа, чтобы предотвратить брутфорс-атаки.

MaxAuthTries 3

19. Периодическая смена ключей

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

20. Проверка целостности SSH-файлов

Проверяйте целостность системных файлов, связанных с SSH, с помощью инструментов, таких как AIDE или Tripwire.

21. Использование TCPWrappers

TCPWrappers позволяют ограничивать доступ к службам, в том числе SSH, на основе IP-адресов.

sudo nano /etc/hosts.allow

Добавьте строку:

sshd: ваш_IP_адрес

sudo nano /etc/hosts.deny

Добавьте строку:

sshd: ALL

22. Шифрование трафика

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

Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com

23. Ведение аудита

Включите ведение аудита для SSH для отслеживания попыток входа и других событий.

sudo nano /etc/ssh/sshd_config

Добавьте строки:

LogLevel VERBOSE

24. Использование SELinux или AppArmor

Если это возможно, включите и настройте SELinux (Security-Enhanced Linux) или AppArmor для дополнительного контроля доступа к SSH.

Дополнительные меры безопасности (продолжение)

25. Использование белого списка (Whitelist) для доступа

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

sudo nano /etc/ssh/sshd_config

Добавьте строки:

AllowUsers username@your_ip

username — Ваш пользователь

your_ip — Ваш IP адрес.

26. Мониторинг необычной активности

Настройте систему мониторинга для обнаружения необычной активности, например, повышенного количества неудачных попыток входа.

27. Обновление SSH-сервера

Регулярно обновляйте SSH-сервер, чтобы использовать последние исправления безопасности.

sudo yum update openssh-server # для CentOS

sudo apt-get update && sudo apt-get upgrade openssh-server # для Debian/Ubuntu

28. Введение виртуальных сетей (VPN)

Использование виртуальных частных сетей (VPN) для обеспечения безопасности обмена данными между клиентами и сервером SSH.

29. Отключение неиспользуемых сервисов

Отключите неиспользуемые сервисы на сервере, чтобы уменьшить атаку по поверхности.

sudo systemctl disable <service_name>

30. Внимание к конфигурации клиентов

Обеспечьте безопасность и конфиденциальность клиентских устройств, на которых используется SSH.

31. Восстановление из резервной копии

Регулярно создавайте резервные копии конфигурационных файлов SSH и журналов событий для быстрого восстановления в случае инцидента.

32. Тестирование безопасности

Проводите регулярные тесты на проникновение и аудит безопасности для выявления потенциальных слабых мест.

34. Применение Security Headers

Примените Security Headers веб-сервера для дополнительной защиты, таких как Strict-Transport-Security и Content-Security-Policy.

Заключение

Эти многочисленные меры безопасности представляют собой комплексный подход к защите SSH-сервера. Настоятельно рекомендуется не только следовать предложенным шагам, но и регулярно обновлять и адаптировать меры безопасности в соответствии с развивающимися угрозами и требованиями вашей среды. Безопасность — это непрерывный процесс, и постоянное внимание к ней существенно для поддержания надежности вашего сервера.

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