Введение
Удалённый доступ через SSH — это мощный инструмент, но по умолчанию он часто остается уязвимым для автоматических атак. В этой статье собраны проверенные приёмы, которые сделают ваше SSH-соединение в Linux надёжным всего за несколько минут. После выполнения шагов вы получите защиту от брутфорса, ограничите права доступа и сможете отслеживать попытки взлома.
Требования
- Доступ root (или
sudo) на целевом сервере. - Установленный SSH-сервер (
openssh-server). - Базовые знания работы с терминалом и редактированием текстовых файлов.
- Доступ в интернет для поиска обновлений (необязательно).
Пошаговая инструкция
Шаг 1: Отключите аутентификацию по паролю
Откройте конфигурационный файл SSH:
sudo nano /etc/ssh/sshd_config
Найдите строку PasswordAuthentication и измените её значение на no:
PasswordAuthentication no
Сохраните изменения (Ctrl+O, затем Enter) и выйдите (Ctrl+X). Примените настройки:
sudo systemctl restart sshd
Шаг 2: Отключите root‑логин по SSH
Добавьте или измените параметр:
PermitRootLogin no
Сохраните, перезапустите SSH и проверьте результат:
sudo systemctl restart sshd
grep PermitRootLogin /etc/ssh/sshd_config
Шаг 3: Ограничьте пользователей, имеющих доступ по SSH
Определите список разрешённых учётных записей:
AllowUsers alice bob
Сохраните конфигурацию, перезапустите сервис и проверьте:
sudo systemctl restart sshd
grep AllowUsers /etc/ssh/sshd_config
Шаг 4: Измените стандартный порт
Изменение порта снижает нагрузку сканеров. Укажите новый порт, например 2222:
Port 2222
Откройте порт в брандмауэре (пример для ufw):
sudo ufw allow 2222
Перезапустите SSH:
sudo systemctl restart sshd
Шаг 5: Настройте аутентификацию только по публичным ключам
Генерация ключей на клиентской машине
ssh-keygen -t ed25519 -C "workstation"
Копирование открытого ключа на сервер
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
Завершение настройки на сервере
Убедитесь, что PubkeyAuthentication включён и PasswordAuthentication отключён:
PubkeyAuthentication yes
PasswordAuthentication no
Сохраните, перезапустите SSH:
sudo systemctl restart sshd
Проверка результата
Проверьте, что настройки вступили в силу:
sshd -t && echo "Конфигурация корректна"
Попробуйте подключиться по SSH, используя ключ:
ssh -i ~/.ssh/id_ed25519 user@host -p 2222
Проверьте активные соединения:
ss -tnlp | grep 2222
Возможные проблемы
- SSH перестал запускаться – проверьте синтаксис конфигурации:
sudo sshd -t. Если ошибка в параметрах, верните предыдущую конфигурацию из бэкапа/etc/ssh/sshd_config.bak. - Не удаётся подключиться после смены порта – убедитесь, что брандмауэр действительно открыл новый порт (
sudo ufw statusилиsudo firewall-cmd --list-all). - Доступ по ключу отклонён – проверьте права на
.ssh(chmod 700 ~/.ssh,chmod 600 ~/.ssh/authorized_keys) и корректность открытого ключа (ssh-keygen -l -f ~/.ssh/id_ed25519.pub).
Следуйте этим советам регулярно, и ваш SSH-сервер станет значительно труднодоступным для автоматизированных атак.