Главная  /  Помощь  /  Как защитить сервер: SSH, fail2ban и лишние службы

Как защитить сервер: SSH, fail2ban и лишние службы

Облачные серверы3 мин чтения

Что сделать в первый день: вход по ключу, fail2ban против подбора паролей, другой порт SSH, межсетевой экран и закрытые лишние службы.

Содержание

Сервер в интернете начинают проверять на прочность через несколько минут после запуска: роботы перебирают пароли к SSH. Ничего страшного, если сделать несколько вещей в первый же день.

1. Вход по ключу, пароли выключить

Это главное. Когда пароли выключены, подбирать нечего. Как это сделать — в статье Как подключиться к серверу по SSH.

2. fail2ban — блокировка тех, кто подбирает пароль

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

Ubuntu: sudo apt install fail2ban. Debian: sudo apt install fail2ban nftables — fail2ban блокирует адреса через nftables, а в образе Debian его нет. Защита SSH включается сразу после установки.

AlmaLinux — из репозитория EPEL. Ставьте именно fail2ban-server: пакет fail2ban потянет за собой межсетевой экран firewalld, а тот после перезагрузки может закрыть сайт.

sudo dnf install epel-release
sudo crb enable
sudo dnf install fail2ban-server

Создайте файл /etc/fail2ban/jail.local:

[DEFAULT]
banaction = nftables-multiport
banaction_allports = nftables-allports

[sshd]
enabled = true

и запустите: sudo systemctl enable --now fail2ban.

Кого заблокировали: sudo fail2ban-client status sshd. Случайно заблокировали себя — войдите через консоль в кабинете и снимите блокировку: sudo fail2ban-client set sshd unbanip 203.0.113.5.

Во FreeBSD то же делает sshguard: sudo pkg install sshguard. Он работает вместе с межсетевым экраном pf, как его подключить — расскажет pkg info -D sshguard.

3. Другой порт SSH

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

Ubuntu:

echo "Port 2222" | sudo tee /etc/ssh/sshd_config.d/20-port.conf
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket

Debian: тот же файл, затем sudo systemctl restart ssh.

AlmaLinux — сначала разрешите новый порт в SELinux, иначе SSH на нём не запустится:

sudo dnf install policycoreutils-python-utils
sudo semanage port -a -t ssh_port_t -p tcp 2222
echo "Port 2222" | sudo tee /etc/ssh/sshd_config.d/20-port.conf
sudo systemctl restart sshd

FreeBSD: строка Port 2222 в /etc/ssh/sshd_config, затем sudo service sshd restart.

Проверьте вход: ssh -p 2222 ubuntu@203.0.113.10. Если включён межсетевой экран, сначала откройте в нём новый порт. А в fail2ban допишите порт в раздел [sshd] файла /etc/fail2ban/jail.local строкой port = 2222 — иначе он будет закрывать для нарушителей только старый порт.

4. Межсетевой экран

Оставьте открытыми только нужные порты: SSH, и 80 и 443, если на сервере сайт. Как это сделать в вашей системе: Ubuntu, Debian, AlmaLinux, FreeBSD.

5. Лишние службы

Посмотрите, какие программы ждут подключений из интернета: sudo ss -ltnp. Адреса 127.0.0.1 и [::1] — только изнутри сервера, это нормально. 0.0.0.0 и * — открыто всем.

  • База данных должна слушать только 127.0.0.1, если к ней не подключаются с других серверов. Нужен доступ с компьютера — используйте SSH-туннель, а не открытый порт.
  • Ненужную службу выключите: sudo systemctl disable --now имя.
  • Не показывайте версии программ: в nginx — server_tokens off;, в Apache — ServerTokens Prod и ServerSignature Off.

6. Обновления

Большинство взломов — через старые версии программ. Как обновлять систему и включить автоматические обновления безопасности — в справочнике вашей системы: Ubuntu, Debian, AlmaLinux, FreeBSD.

Не нашли ответ? Напишите в поддержку — подскажем.

Контакты (495) 664-22-98 или Написать нам

© 2026 Транзит Телеком · Все права защищены