Как настроить SSH для безопасного подключения к серверу
Начинайте с генерации SSH-ключей. Используйте команду ssh-keygen для создания пары ключей – это надежный способ аутентификации без использования пароля. Обеспечьте сложность пароля для защиты приватного ключа и храните его в безопасном месте.
Ограничьте доступ через конфигурацию сервера. В файле sshd_config задайте параметры, такие как PermitRootLogin no и PasswordAuthentication no. Это отключит вход под root и пароли, заставляя использовать только ключи, что значительно повышает безопасность.
Настройте файрволл и ограничьте IP-адреса. Разрешите подключение только с доверенных IP-адресов, чтобы снизить риск несанкционированного доступа. Используйте инструменты, такие как ufw или iptables, для управления правилами доступа.
Периодически обновляйте программное обеспечение. Установите последние версии SSH и операционной системы, чтобы устранить возможные уязвимости. Регулярные обновления помогают поддерживать систему в актуальном состоянии и предотвращают атаки на известные уязвимости.
Создание парных ключей SSH и настройка их безопасности
Для повышения уровня защиты SSH-соединений рекомендуется создавать уникальные ключи для каждого пользователя и сервера. Используйте команду ssh-keygen с указанием алгоритма шифрования RSA или Ed25519, например:
ssh-keygen -t ed25519 -a 100. Параметр -a 100 увеличивает число итераций для борьбы с возможными атаками грубой силой.
Обеспечение безопасности ключей
Настройте сильный пароль для файла приватного ключа, чтобы даже при его утечке злоумышленник не мог быстро его использовать. При создании ключа вас попросят ввести пароль; выберите длинную комбинацию букв, цифр и символов.
После генерации приватного ключа сохраняйте его в безопасном месте, избегайте хранения в общедоступных каталогах или с облачными сервисами. Используйте права доступа 600 для файла приватного ключа, чтобы ограничить доступ только владельцу:
chmod 600 ~/.ssh/id_ed25519
Добавление публичного ключа на сервер
Для минимизации риска перебора паролей, добавьте публичный ключ в файл authorized_keys на сервере. Это делается командой:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
Проверьте, что права на файл authorized_keys ограничены:
chmod 600 ~/.ssh/authorized_keys. Это предотвратит его модификацию посторонними лицами.
Для дополнительной защиты отключите возможность входа по паролю, разрешив вход только по ключам. Для этого отредактируйте файл sshd_config, найдите строки:
PasswordAuthentication no
PubkeyAuthentication yes
Перезапустите SSH-сервис, чтобы изменения вступили в силу. Такой подход значительно повысит сопротивляемость серверу к попыткам взлома с использованием перебора паролей.
Настройка файла ssh_config и ограничение доступа по IP и пользователям
Для повышения безопасности следует настроить файл ssh_config, ограничивая доступ к серверу только определёнными IP-адресами и пользователями. Начинайте с редактирования файла /etc/ssh/ssh_config или ~/.ssh/config, добавляя блоки для каждого клиента.
Укажите директиву «Host», задающую условие для определённого подключения, например: Host myserver. Внутри блока задайте параметры: HostName – IP или доменное имя сервера, User – разрешённое имя пользователя, AllowUsers – список разрешённых к доступу пользователей.
Пример конфигурации:
Host myserver
HostName 192.168.1.100
User admin
AllowUsers admin johndoe
Это ограничит подключение только указанными пользователями с разрешённого IP. В файле /etc/ssh/sshd_config используйте директивы AllowUsers и AllowGroups, чтобы задать глобальные ограничения. Например:
AllowUsers admin johndoe@192.168.1.*
Обратите внимание, что в файле sshd_config можно настроить фильтрацию по IP и пользователю одновременно. Установите директиву PermitRootLogin no, чтобы отключить вход под учетной записью root, если это соответствует политикам безопасности.
После внесения изменений перезапустите службу SSH, используйте команду systemctl restart sshd. Это обеспечит применение новых правил. Также рекомендуется регулярно проверять список активных подключений и фиксировать нежелательные попытки доступа, чтобы своевременно реагировать на потенциальные угрозы.
Обеспечение защиты SSH через смену порта, отключение лишних опций и использование Fail2Ban
Измените порт SSH с стандартного 22 на нестандартный номер, например, 2222 или 2200, чтобы снизить вероятность автоматических атак. Для этого отредактируйте файл /etc/ssh/sshd_config, задав параметр «Port 2200», и перезапустите службу SSH. Не забудьте открыть новый порт в файрволле, чтобы обеспечить доступ к серверу.
Отключите устаревшие или лишние опции, снижая атакуемую поверхность. В файле /etc/ssh/sshd_config отключите такие параметры, как «PermitRootLogin no» (запрещая вход под root), «PasswordAuthentication no» (использование только аутентификации по ключам) и «UseDNS no» (ускоряя подключение и уменьшая нагрузку). Это поможет избежать атаки методом перебора паролей и снизит риск компрометации.
Для дополнительной защиты установите и настройте Fail2Ban. Он автоматически блокирует IP-адреса, после нескольких неудачных попыток подключения. Установите Fail2Ban из репозиториев вашего дистрибутива, откройте его конфигурационный файл /etc/fail2ban/jail.local и добавьте правила для SSH, например:
[sshd] enabled = true port = 2200 filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 600
Обновите правила и перезапустите Fail2Ban командой systemctl restart fail2ban. Это позволит автоматически блокировать злоумышленников, значительно усложняя их работу и повышая уровень защиты.
