qvib.pro
EN

Безопасность сервера

Открытый сервер сканируют боты непрерывно. Базовая гигиена закрывает массовые атаки.

бесплатно профи

Почему это важно

Любой публичный VPS брутфорсят и сканируют 24/7 — это начинается через минуты после поднятия. Дефолтные настройки, вход по паролю и работа под root превращают одну дыру в полный захват машины: майнеры, спам, бот-нет, кража данных и удаление бэкапов.

Живой сценарий. Подняли сервер, оставили SSH на 22-м порту с парольным входом под root. За ночь боты перебрали слабый пароль, зашли root-ом, поставили майнер и зачистили логи. CPU в полке, сервер в чёрных списках, восстановление — с нуля. Пять минут базовой настройки это бы предотвратили.

Что делать (по шагам)

  1. Отдельный пользователь с sudo вместо работы под root:
adduser deploy && usermod -aG sudo deploy
  1. Вход по SSH-ключам, пароль отключить:
ssh-copy-id deploy@SERVER         # сначала залить свой ключ
# в /etc/ssh/sshd_config:
#   PasswordAuthentication no
#   PermitRootLogin no
sudo systemctl restart ssh
  1. Firewall: закрыть всё лишнее, открыть только нужное:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH            # 22
sudo ufw allow 80,443/tcp         # web
sudo ufw enable
  1. fail2ban против перебора:
sudo apt install fail2ban -y && sudo systemctl enable --now fail2ban
  1. Регулярные обновления безопасности (можно автоматом):
sudo apt update && sudo apt upgrade -y
sudo apt install unattended-upgrades -y   # авто security-апдейты
  1. БД и админки — не на публичный IP: слушай 127.0.0.1/приватную сеть, доступ через SSH-туннель/VPN.

Чего НЕ делать

  • Не работай и не запускай сервисы под root без необходимости.
  • Не оставляй вход по паролю и PermitRootLogin yes.
  • Не вешай PostgreSQL/Redis/Mongo/админки на 0.0.0.0 без firewall.
  • Не забивай на обновления — непропатченный сервис ломают по известному CVE.
  • Не открывай порты «про запас» — каждый открытый порт это поверхность атаки.

Как проверить себя

  • sudo ufw status показывает только нужные порты, остальное — deny.
  • Парольный вход и root-логин по SSH отключены; захожу по ключу.
  • Работаю под отдельным sudo-пользователем, не под root.
  • fail2ban активен; авто-обновления безопасности включены.
  • БД/Redis/админки не торчат на публичном IP (проверил ss -tlnp).

Инструменты

  • Firewall: ufw, firewalld, nftables.
  • Защита от перебора: fail2ban, CrowdSec.
  • SSH/доступ: ключи ed25519, Tailscale/WireGuard для приватного доступа к админкам/БД.
  • Аудит: Lynis (хардненинг-скан), ss/nmap для проверки открытых портов.
  • Авто-обновления: unattended-upgrades (Debian/Ubuntu), dnf-automatic (RHEL).