Заметка Безопасная настройка SSH-доступа на сервере: отключаем root и настраиваем ключи

🔥 Защищаем VPS и выделенные сервера от взлома через SSH: пошаговая инструкция

🔐 Введение

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

Чтобы минимизировать риск взлома, нужно:
  • Отключить root-доступ
    * запретить логин по паролю
  • Разрешить вход только по SSH-ключу
    * перенести SSH на нестандартный порт


👤 Шаг 1: Настраиваем sudo — безопасная замена root

Работа под root напрямую — крайне рискованна. Лучше использовать sudo, давая обычному пользователю ограниченные привилегии.

Создаём пользователя (если ещё не создан):
Код:
adduser yourname
usermod -aG sudo yourname

Теперь пользователь yourname может выполнять команды от root, вводя свой пароль:
Код:
sudo apt update

📌 Чтобы проверить, входит ли пользователь в группу sudo:
Код:
groups yourname



🚀 Шаг 2: Отключаем root и вход по паролю
Откройте конфигурацию:
Код:
sudo nano /etc/ssh/sshd_config

Измените или добавьте строки:
Код:
PermitRootLogin no
PasswordAuthentication no

После этого перезапустите SSH:
Код:
sudo systemctl restart sshd



🔐 Шаг 3: Создаём и подключаем SSH-ключ

На локальной машине:
Код:
ssh-keygen -t ed25519 -C "[email protected]"

По умолчанию ключи сохранятся в:
Код:
~/.ssh/id_ed25519 и ~/.ssh/id_ed25519.pub

Добавляем ключ на сервер:
Код:
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]

Или вручную:
Код:
cat ~/.ssh/id_ed25519.pub | ssh user@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"



🛡️ Шаг 4: Меняем порт SSH (опционально)

Открываем тот же файл:
Код:
/etc/ssh/sshd_config

И указываем нестандартный порт, например:
Код:
Port 2222

Открываем его в фаерволе:
Код:
sudo ufw allow 2222/tcp



🔎 Проверка и перезапуск
После всех изменений:
Код:
sudo systemctl restart sshd

Проверяем новое подключение:
Код:
ssh -p 2222 [email protected]



📋 Итого
Теперь ваш сервер:
  • Не допускает вход под root
    * Не принимает пароли (только ключи)
  • Работает на другом порту (если вы его сменили)


🛡️ Шаг 5: Устанавливаем и настраиваем fail2ban

fail2ban — это инструмент, который автоматически блокирует IP-адреса после нескольких неудачных попыток входа по SSH (и не только).

Установка:
Код:
sudo apt install fail2ban -y

Создаём локальный конфиг:
Код:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Редактируем файл:
Код:
sudo nano /etc/fail2ban/jail.local

Найдите секцию [sshd] и убедитесь, что она активирована:
Код:
[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s
maxretry = 5

📌 Это означает: если IP 5 раз подряд ввёл неправильный пароль — он будет забанен.

Перезапуск службы:
Код:
sudo systemctl restart fail2ban

Проверка статуса:
Код:
sudo fail2ban-client status sshd

Пример вывода:

Status for the jail: sshd
|- Filter
| └─ Currently failed: 0
|- Actions
└─ Currently banned: 1


📌 Что ещё можно защитить через fail2ban?
Кроме SSH, fail2ban поддерживает:
  • nginx (404-спам, brute-force на формы)
  • Postfix / Dovecot (почтовые сервера)
  • FTP-сервисы
  • WordPress wp-login.php (если интегрировать)


✅ Итого
Теперь сервер:
  • Отключает root-доступ
  • Принимает только SSH-ключи
  • Позволяет управлять через sudo без root
  • Блокирует IP при подозрительной активности


🔗 Полезные команды
Код:
sudo systemctl status sshd
journalctl -xe | grep ssh



💬 Есть вопросы или дополнения?
Оставляйте комментарии ниже — обсудим, подскажем, дополним!
 
Последнее редактирование:
Назад
Верх Низ