Як захистити SSH на Linux VPS
Публічний VPS отримує автоматичні спроби входу протягом кількох хвилин після запуску. Ці кроки значно ускладнюють атаки на SSH. Їх написано для Ubuntu або Debian; якщо сервер ще не створено, можна орендувати Linux VPS і почати з чистого образу. Не закривайте поточну SSH-сесію, доки не перевірите нові налаштування з другого вікна.
1. Створіть звичайного користувача з sudo
adduser deploy
usermod -aG sudo deploy2. Використовуйте SSH-ключі замість паролів
На вашому комп'ютері:
ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id deploy@YOUR_SERVER_IP
ssh deploy@YOUR_SERVER_IPУвійдіть один раз за ключем, щоб переконатися, що він працює, перш ніж вимикати паролі.
3. Вимкніть вхід за паролем і під root
Створіть файл /etc/ssh/sshd_config.d/99-hardening.conf:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3Перевірте синтаксис і перезавантажте службу. Служба називається ssh в Ubuntu і Debian та sshd в системах на основі RHEL:
sudo sshd -t && sudo systemctl reload sshВідкрийте другий термінал і увійдіть знову. Лише після цього закрийте стару сесію.
4. Увімкніть фаєрвол
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verboseВідкривайте лише потрібні порти, наприклад 80 і 443 для веб-сервера. Ви також можете обмежити доступ до SSH своєю IP-адресою правилом фаєрвола в хмарній консолі.
5. Блокуйте повторні невдалі спроби за допомогою Fail2ban
sudo apt install -y fail2banСтворіть файл /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1hsudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd6. Встановлюйте оновлення безпеки автоматично
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades7. Додаткові можливості
- Зміна порту SSH зменшує кількість записів у журналах, але сама по собі не є заходом безпеки.
- Захистіть приватний ключ парольною фразою і зберігайте резервну копію в надійному місці.
- Переглядайте входи командами
lastіsudo journalctl -u ssh --since today. - Зробіть знімок після налаштування сервера, щоб мати чисту базову точку для відновлення.
Якщо ви втратили доступ, скористайтеся консоллю браузера в хмарній панелі, щоб увійти та виправити конфігурацію. Наш посібник із захисту від DDoS описує наступний рівень захисту.
Часті запитання
Чи безпечно вимикати вхід під root?
Так, якщо спершу створити користувача з sudo і перевірити, що його ключ працює. Адміністративні команди й далі можна виконувати через sudo.
Чи потрібен Fail2ban, якщо я використовую лише ключі?
Це необов'язково. Коли вхід за паролем вимкнено, атака перебором не має шансів на успіх, але Fail2ban зменшує кількість записів у журналах і навантаження.
Що робити, якщо я втратив SSH-ключ?
Скористайтеся консоллю в хмарній панелі, щоб увійти, додайте новий публічний ключ до ~/.ssh/authorized_keys і видаліть старий.