8(800) 222 32 56
Панель управления
Решения для бизнеса

Firewall на VPS: минимальный набор правил для старта

Firewall на VPS: минимальный набор правил для старта
Подберите идеальное решение для ваших задач:
в России, США и Нидерландах обеспечат максимальную скорость. Воспользуйтесь всеми преимуществами надежного оборудования. Базовая помощь и техническое обслуживание входят в пакет услуг.

Введение

Если VPS «смотрит» в интернет, у него есть две роли: работать и не светиться лишним. Firewall — это как дверной замок: не делает дом неуязвимым, но резко сокращает число случайных гостей и неприятных сюрпризов.

Эта статья рассчитана на владельцев VPS с базовыми навыками Linux (SSH, sudo, редактирование конфигов). ОС не указана, поэтому примеры даны для Debian/Ubuntu и отдельно отмечены нюансы для CentOS/RHEL-подобных систем. В фокусе три стека управления правилами: UFW, iptables и nftables (и как между ними не запутаться). UFW — штатный «упрощённый фасад» над netfilter/iptables для Ubuntu , nftables — современный наследник iptables, который всё чаще оказывается «под капотом» даже там, где вы продолжаете писать iptables … .

Что вы получите на выходе:

  • минимальную безопасную базу (default deny inbound + allowlist нужных портов);
  • готовые наборы правил и команды для пяти типовых сценариев: SSH‑only, Web, Mail, Docker‑host, Control panel (с акцентом на ISPmanager, которую King Servers предлагает предустановленной) ;
  • безопасный порядок применения (включая «страховку от самоизоляции»), откат и проверку;
  • короткую шпаргалку по выбору инструмента и чек‑лист деплоя.

Контекст, аудитория и выбор инструмента без лишней философии

Целевая аудитория. Администратор или разработчик, который арендует VPS, подключается по SSH, умеет читать вывод ss, пользоваться systemctl, править /etc/* и хочет быстро прийти к «разумно закрытому» серверу.

Цели настройки.Сделать сервер безопасным «по умолчанию»: входящие соединения запрещены, кроме явно нужных. При этом правила должны быть минимальными, чтобы вы не потратили вечер на отладку, и адаптируемыми, чтобы легко добавлять сервисы и нестандартные порты.

Область охвата (что учтём).UFW / iptables / nftables; SSH (включая rate‑limit); типовые веб‑порты; базовые почтовые порты; нюансы Docker; логирование; fail2ban; DNS и systemd-resolved (чтобы не «сломать интернет» на ровном месте) .

Ограничения и реальность.1) Примеры — для Debian/Ubuntu и CentOS/RHEL‑линейки. 2) Порт‑лист «вашего проекта» может отличаться: держите в голове правило «добавили сервис → открыли порт → проверили → задокументировали». 3) Не смешивайте несколько управлялок одновременно: параллельная работа legacy‑iptables и nft‑инструментов может давать неожиданные эффекты .

Как выбрать инструмент на старте.

  • UFW: когда хочется быстро и аккуратно, а правил немного. Он специально задуман как простой интерфейс к netfilter/iptables .
  • nftables: когда сервер живёт долго, правил становится больше, или вы хотите «современный чистый» ruleset. В RHEL 8+ nftables — рекомендуемый путь для кастомной фильтрации, а iptables‑утилита там работает через nf_tables (совместимость) .
  • iptables: когда есть legacy‑скрипты/инструкции или конкретная необходимость. Но помните: в новых системах iptables часто «переводит» команды в nftables, а не работает как старый xtables .

Готовы перейти на современную серверную инфраструктуру?

В King Servers мы предлагаем серверы как на AMD EPYC, так и на Intel Xeon, с гибкими конфигурациями под любые задачи — от виртуализации и веб-хостинга до S3-хранилищ и кластеров хранения данных.

  • S3-совместимое хранилище для резервных копий
  • Панель управления, API, масштабируемость
  • Поддержку 24/7 и помощь в выборе конфигурации

Создайте аккаунт

Быстрая регистрация для доступа к инфраструктуре


Безопасное внедрение: порядок действий, тестирование, откат и аварийный доступ

Самая частая авария при настройке firewall — закрыли SSH и потеряли доступ. Это лечится дисциплиной и двумя страховками: порядком применения и планом отката.

Правильная последовательность настройки

1) Убедитесь, что вы понимаете, какой порт у SSH и откуда вы подключаетесь.Быстро проверить, что слушает sshd:

sudo ss -tlnp | grep -E 'sshd|:22'

2) Подготовьте «страховку» до включения правил:

  • откройте вторую SSH‑сессию (в идеале — через другой клиент/канал);
  • запустите tmux, чтобы не потерять контекст при разрыве соединения (tmux сохраняет сессию при обрыве SSH) .

tmux new -s fw

3) Сохраните текущее состояние правил (даже если «там пусто»).

  • iptables:

sudo iptables-save > ~/iptables.backup.$(date +%F_%H%M%S).rulessudo ip6tables-save > ~/ip6tables.backup.$(date +%F_%H%M%S).rules

  • nftables:

sudo nft list ruleset > ~/nftables.backup.$(date +%F_%H%M%S).nft

4) Делайте изменения с возможностью автоматического отката.

Для iptables есть готовая «защита от самоизоляции»: iptables-apply. Она применяет набор правил и просит подтвердить, что всё ок; если вы не подтвердили (например, SSH умер) — откатит назад по таймауту .

5) После применения — проверка доступности и логов, и только потом — «постоянство» (автозагрузка правил на reboot).

Две «кнопки паники»: что делать, если всё пошло не так

Вариант A: есть доступ по SSH, но что-то сломалось.

  • UFW:

sudo ufw disable

ufw disable выгружает firewall и отключает его автозапуск .

  • iptables (осторожно: это откроет всё входящее, пока вы не восстановите правила):

sudo iptables -P INPUT ACCEPTsudo iptables -P FORWARD ACCEPTsudo iptables -P OUTPUT ACCEPTsudo iptables -Fsudo iptables -X

  • nftables (тоже «открывает всё», потому что пустой ruleset = нет фильтрации):

sudo nft flush ruleset

flush ruleset очищает правила и фактически оставляет систему без фильтрации (ядро принимает пакеты, если нет правил) .

Вариант B: SSH уже отвалился.

Тут спасает консоль провайдера (VNC/serial/remote console) или rescue mode. Большинство провайдеров это дают как «аварийный вход», когда SSH недоступен . В консоли вы выполняете одну из команд выше (для UFW/iptables/nftables), возвращаете доступ и спокойно исправляете правила.

Мини‑диаграмма безопасного внедрения

flowchart TDA[Открыли 2-ю SSH-сессию + tmux] --> B[Сохранили текущие правила]B --> C[Добавили правило для SSH]C --> D[Включили default deny inbound]D --> E[Открыли нужные сервисы]E --> F[Проверили доступность снаружи + логи]F --> G[Настроили автозагрузку / persistence]F -->|SSH пропал| H[Консоль/Rescue → отключить/flush → откатить]

Минимальная логика правил: что обязательно, а что по желанию

Вне зависимости от инструмента, «здоровый скелет» правил одинаковый.

Минимум, который почти всегда нужен:

  • Loopback (lo): разрешить. Иначе начинают «странно» ломаться локальные сервисы (включая DNS‑stub от systemd‑resolved).
  • Established/Related: разрешить ответы на уже начатые соединения.
  • Default deny incoming: всё входящее — закрыто, кроме allowlist.
  • Только нужные порты: SSH, HTTP/HTTPS и т.д.
  • Логирование: умеренно, чтобы видеть «что стучится», но не залить диск логами.

DNS и systemd-resolved: важная мелочь, о которую часто спотыкаются

На многих системах systemd-resolved поднимает локальный DNS‑stub на 127.0.0.53 (и 127.0.0.54) на loopback-интерфейсе . Если вы «перекрыли» loopback или слишком агрессивно режете локальный трафик — DNS начинает вести себя как будто «интернет пропал», хотя сеть жива.

Вывод: loopback разрешаем всегда, а исходящий трафик (например, DNS наружу) в базовом варианте проще оставить разрешённым (default allow outgoing). Это соответствует типовой модели UFW: «входящее закрыть, исходящее оставить» .

SSH: риск‑компромиссы и минимальная защита от брутфорса

Открытый SSH в интернет почти гарантированно увидит перебор паролей через минуты. Компромисс простой:

  • Можно открыть SSH «на весь мир» и включить rate‑limit и fail2ban.
  • Лучше открыть SSH только с вашего IP (или через VPN/bastion), а остальным — отказ.

UFW умеет rate‑limit встроенно: ufw limit ssh/tcp. По manpage, лимит начинает «резать» попытки, если IP инициирует 6+ соединений за 30 секунд .

Fail2ban читает логи (например, auth.log) и банит IP, обновляя правила firewall . У него есть actions и для iptables, и для nftables (в репозитории присутствуют action.d/iptables*.conf и action.d/nftables*.conf) .

Docker: почему «я закрыл порт, а он всё равно открыт?»

Docker активно управляет iptables‑правилами и создаёт свои цепочки. Для пользовательских правил перед докеровскими есть цепочка DOCKER-USER — именно туда Docker рекомендует помещать ограничения . Это ключевой момент для сценария «Docker‑host».

Готовые минимальные наборы правил по сценариям

Ниже — пять практичных шаблонов. В каждом: логика правил, команды для UFW, iptables и nftables, «постоянство», проверка и быстрый troubleshooting.

Обозначения, которые стоит заменить под себя:

  • ADMIN_IP — ваш внешний IP/32 (или офисная подсеть).
  • SSH_PORT — порт SSH (часто 22, но не всегда).
  • Если у вас нестандартные порты — адаптация всегда одна: откройте конкретный порт/протокол и ограничьте источник.

Сценарий: минимальный сервер только с SSH (SSH-only)

Смысл правил.Входящее: разрешить только SSH (желательно только с ADMIN_IP). Остальное — drop. Исходящее — разрешить (чтобы работали обновления и DNS).

UFW (Debian/Ubuntu)

# 1) Базаsudo ufw default deny incomingsudo ufw default allow outgoing# 2) SSH: сначала открыть (лучше с ограничением по IP)sudo ufw allow from ADMIN_IP to any port SSH_PORT proto tcp# 3) Опционально: вместо allow — limit (если SSH в интернет)# sudo ufw limit SSH_PORT/tcp# 4) Логи (умеренно)sudo ufw logging low# 5) Включение (включает и автозапуск на boot) sudo ufw enable

UFW поддерживает --dry-run, чтобы посмотреть изменения, не применяя их :

sudo ufw --dry-run enable

Проверка.

sudo ufw status verbosesudo ss -tlnp | grep -E ":${SSH_PORT}\b"

Troubleshooting.Если после ufw enable пропал доступ — сразу через консоль провайдера: ufw disable .

iptables (универсально, но аккуратно)

Для безопасного применения удалённо используйте iptables-apply (автооткат при потере связи) .

Создадим файл ~/rules.v4:

cat > ~/rules.v4 <<'EOF'*filter:INPUT DROP [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [0:0]# 1) Loopback-A INPUT -i lo -j ACCEPT# 2) Established/Related-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT# 3) SSH только с ADMIN_IP-A INPUT -p tcp -s ADMIN_IP --dport SSH_PORT -m conntrack --ctstate NEW -j ACCEPT# 4) (Опционально) ICMP для диагностики-A INPUT -p icmp -j ACCEPTCOMMITEOF

Проверка синтаксиса без коммита (iptables-restore --test) :

sudo iptables-restore --test < ~/rules.v4

Применение с автооткатом:

sudo iptables-apply -t 60 ~/rules.v4

Проверка.

sudo iptables -Ssudo iptables -L -n -v

nftables (рекомендуемый «чистый» вариант)

Проверка команды без применения: nft --check .

Файл /etc/nftables.conf (минимальный skeleton):

#!/usr/sbin/nft -fflush rulesettable inet filter {  chain input {    type filter hook input priority 0; policy drop;    iif "lo" accept    ct state established,related accept    ip saddr ADMIN_IP tcp dport SSH_PORT ct state new accept    ip protocol icmp accept    ip6 nexthdr ipv6-icmp accept  }  chain forward {    type filter hook forward priority 0; policy drop;  }  chain output {    type filter hook output priority 0; policy accept;  }}

Проверка:

sudo nft --check -f /etc/nftables.confsudo nft -a list ruleset

Важно. В базовых цепочках nftables policy drop отбрасывает всё, что не принято правилами .


Сценарий: веб‑сервер (HTTP/HTTPS)

Смысл правил.SSH для администрирования (желательно ограничить по IP), плюс открыть 80/443 на весь мир.

UFW

sudo ufw default deny incomingsudo ufw default allow outgoingsudo ufw allow from ADMIN_IP to any port SSH_PORT proto tcpsudo ufw allow 80/tcpsudo ufw allow 443/tcpsudo ufw logging lowsudo ufw enable

Проверка.

sudo ufw status numberedsudo ss -tlnp | grep -E ':(80|443|SSH_PORT)\b'

iptables (пример rules.v4)

cat > ~/rules.v4 <<'EOF'*filter:INPUT DROP [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [0:0]-A INPUT -i lo -j ACCEPT-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT# SSH admin-only-A INPUT -p tcp -s ADMIN_IP --dport SSH_PORT -m conntrack --ctstate NEW -j ACCEPT# HTTP/HTTPS-A INPUT -p tcp --dport 80  -m conntrack --ctstate NEW -j ACCEPT-A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPTCOMMITEOFsudo iptables-restore --test < ~/rules.v4sudo iptables-apply -t 60 ~/rules.v4

nftables (фрагмент)

flush rulesettable inet filter {  chain input {    type filter hook input priority 0; policy drop;    iif "lo" accept    ct state established,related accept    ip saddr ADMIN_IP tcp dport SSH_PORT ct state new accept    tcp dport { 80, 443 } ct state new accept  }  chain forward { type filter hook forward priority 0; policy drop; }  chain output  { type filter hook output  priority 0; policy accept; }}


Сценарий: базовый mail-server

Смысл правил.Почтовый сервер — это больше портов и больше «публичной поверхности». Минимально обычно открывают:

  • SMTP: 25 (приём), 465 и/или 587 (submission) — зависит от схемы;
  • IMAP/IMAPS: 143/993 (если есть почтовые ящики);
  • POP3/POP3S: 110/995 (если нужен POP3; многие обходятся без него).

Такие наборы портов фигурируют в документации популярных панелей (например, Plesk перечисляет 25/465/110/995/143/993)  и в требованиях ISPmanager (25/465/587/110/143/993/995) .

UFW

sudo ufw default deny incomingsudo ufw default allow outgoingsudo ufw allow from ADMIN_IP to any port SSH_PORT proto tcp# SMTPsudo ufw allow 25/tcpsudo ufw allow 465/tcpsudo ufw allow 587/tcp# IMAP/IMAPSsudo ufw allow 143/tcpsudo ufw allow 993/tcp# POP3/POP3S (если нужно)sudo ufw allow 110/tcpsudo ufw allow 995/tcpsudo ufw logging lowsudo ufw enable

iptables (пример)

cat > ~/rules.v4 <<'EOF'*filter:INPUT DROP [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [0:0]-A INPUT -i lo -j ACCEPT-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT# SSH admin-only-A INPUT -p tcp -s ADMIN_IP --dport SSH_PORT -m conntrack --ctstate NEW -j ACCEPT# SMTP / Submission-A INPUT -p tcp --dport 25  -m conntrack --ctstate NEW -j ACCEPT-A INPUT -p tcp --dport 465 -m conntrack --ctstate NEW -j ACCEPT-A INPUT -p tcp --dport 587 -m conntrack --ctstate NEW -j ACCEPT# IMAP/IMAPS-A INPUT -p tcp --dport 143 -m conntrack --ctstate NEW -j ACCEPT-A INPUT -p tcp --dport 993 -m conntrack --ctstate NEW -j ACCEPT# POP3/POP3S (опционально)-A INPUT -p tcp --dport 110 -m conntrack --ctstate NEW -j ACCEPT-A INPUT -p tcp --dport 995 -m conntrack --ctstate NEW -j ACCEPTCOMMITEOFsudo iptables-restore --test < ~/rules.v4sudo iptables-apply -t 60 ~/rules.v4

nftables

flush rulesettable inet filter {  chain input {    type filter hook input priority 0; policy drop;    iif "lo" accept    ct state established,related accept    ip saddr ADMIN_IP tcp dport SSH_PORT ct state new accept    tcp dport { 25, 465, 587, 143, 993, 110, 995 } ct state new accept  }  chain forward { type filter hook forward priority 0; policy drop; }  chain output  { type filter hook output  priority 0; policy accept; }}

Риск‑компромиссер для почты.Открыть «все почтовые порты» — нормально, но обязательно усиливайте аутентификацию (DKIM, SPF, строгие пароли, rate‑limit/ban). Здесь особенно полезен fail2ban: он предназначен банить адреса при множественных ошибках аутентификации, меняя правила firewall .


Сценарий: Docker-host

Смысл проблемы.Docker создаёт свои цепочки и правила в iptables, и «обычные» ожидания от UFW/iptables иногда не совпадают с реальностью. Правильная точка входа для ваших ограничений — цепочка DOCKER-USER: Docker прямо описывает её как место для пользовательских правил, которые обрабатываются до докеровских цепочек .

Практический минимум:

  • на хосте держать строгий inbound (SSH + то, что реально публикуете);
  • для контейнеров — фильтрация через DOCKER-USER (если нужно ограничивать источники).

UFW (минимум)

UFW можно использовать, но помните: Docker управляет iptables сам. Если вам нужно жёстко ограничивать доступ к опубликованным контейнерным портам, проще делать это через DOCKER-USER (iptables) или через native nftables‑правила (в продвинутых схемах).

База UFW на хосте:

sudo ufw default deny incomingsudo ufw default allow outgoingsudo ufw allow from ADMIN_IP to any port SSH_PORT proto tcp# Открывайте только реально опубликованные порты контейнеров:# пример: контейнер публикует 80/443 на hostsudo ufw allow 80/tcpsudo ufw allow 443/tcpsudo ufw enable

iptables: DOCKER-USER как «фильтр перед Docker»

Пример: разрешаем опубликованный порт 443 только с ADMIN_IP, остальным — drop (но не ломаем внутреннюю кухню Docker).

# Разрешить established/related в DOCKER-USER (безопасная база)sudo iptables -I DOCKER-USER 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT# Разрешить доступ к 443 только с ADMIN_IPsudo iptables -I DOCKER-USER 2 -p tcp -s ADMIN_IP --dport 443 -j ACCEPT# Остальное к 443 — дропнутьsudo iptables -A DOCKER-USER -p tcp --dport 443 -j DROP

Почему именно так: DOCKER-USER обрабатывается перед DOCKER‑FORWARD и DOCKER‑цепочками, и предназначена для пользовательских правил .

nftables: общий принцип

С nftables Docker‑интеграции сложнее «универсальным рецептом», потому что Docker традиционно работает через iptables‑стек. На современных системах iptables может быть nf_tables‑вариантом и переводить правила в nft , но это уже зона «проверьте на конкретной ОС».

Если вы делаете firewall полностью на nftables, важно не запускать параллельно другой firewall‑сервис, чтобы они не влияли друг на друга .


Сценарий: сервер с control panel

Здесь два главных правила выживания:

1) Панель — это самый лакомый публичный интерфейс, поэтому её лучше открывать только с доверенных IP (ваш офис/VPN).2) Открывайте только то, что реально используете (вендоры панелей сами это подчёркивают) .

ISPmanager (актуально для King Servers)

King Servers предлагает VPS/VDS с предустановленной ISPmanager . По документации ISPmanager web‑интерфейс доступен по HTTPS на порту 1500 . В server requirements ISPmanager также перечисляет типовой набор портов для веба, почты, DNS и базы данных .

Минимальная «разумная» модель:

  • 1500/tcp — только с ADMIN_IP;
  • 80/443 — публично (если хостите сайты);
  • mail/dns/db — открывать только если реально используете и понимаете, кому они доступны.

UFW (пример для ISPmanager + web)

sudo ufw default deny incomingsudo ufw default allow outgoing# SSH (admin-only)sudo ufw allow from ADMIN_IP to any port SSH_PORT proto tcp# ISPmanager UI (admin-only): порт 1500 по умолчанию sudo ufw allow from ADMIN_IP to any port 1500 proto tcp# Websudo ufw allow 80/tcpsudo ufw allow 443/tcpsudo ufw logging lowsudo ufw enable

iptables (пример)

cat > ~/rules.v4 <<'EOF'*filter:INPUT DROP [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [0:0]-A INPUT -i lo -j ACCEPT-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT# SSH admin-only-A INPUT -p tcp -s ADMIN_IP --dport SSH_PORT -m conntrack --ctstate NEW -j ACCEPT# ISPmanager UI admin-only (1500)-A INPUT -p tcp -s ADMIN_IP --dport 1500 -m conntrack --ctstate NEW -j ACCEPT# Web-A INPUT -p tcp --dport 80  -m conntrack --ctstate NEW -j ACCEPT-A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPTCOMMITEOFsudo iptables-restore --test < ~/rules.v4sudo iptables-apply -t 60 ~/rules.v4

nftables (пример)

flush rulesettable inet filter {  chain input {    type filter hook input priority 0; policy drop;    iif "lo" accept    ct state established,related accept    ip saddr ADMIN_IP tcp dport { SSH_PORT, 1500 } ct state new accept    tcp dport { 80, 443 } ct state new accept  }  chain forward { type filter hook forward priority 0; policy drop; }  chain output  { type filter hook output  priority 0; policy accept; }}

Другие панели: Plesk / cPanel / DirectAdmin (быстрые ориентиры)

  • Plesk: административный интерфейс обычно на 8443/tcp (HTTPS), а также сервисные порты для веба/почты/DNS перечислены в официальной базе знаний Plesk .
  • cPanel/WHM: список портов и рекомендацию «открывать только используемые» даёт сама документация cPanel .
  • DirectAdmin: по умолчанию слушает 2222 .

Принцип одинаковый: порт панели — только с ADMIN_IP, а веб/почта — по необходимости.

Persistence, логирование и fail2ban

Как сделать, чтобы правила сохранялись после перезагрузки

UFW.ufw enable не просто включает фильтрацию — он «включает firewall на boot» (прямо указано в manpage) . Если после reboot правила «неожиданно пропали», частая причина — конфликт с другим сервисом, который позже перезаписывает iptables (это типовой класс проблем, и его диагностируют через journalctl -b -u ufw.service) .

nftables.На Ubuntu пакет nftables содержит systemd unit, который может автоматически загружать конфиг из /etc/nftables.conf при старте системы . В Debian правила по умолчанию тоже ожидаются в /etc/nftables.conf, а systemctl enable nftables.service включает nftables на boot .

iptables (Debian/Ubuntu).Самый практичный путь — netfilter-persistent / iptables-persistent. Debian прямо описывает netfilter-persistent как загрузчик netfilter‑конфигурации на boot/halt и систему плагинов для iptables/ip6tables .

iptables (CentOS/RHEL‑подобные).На старых ветках (RHEL 6/7, CentOS 6/7) классика — сохранение в /etc/sysconfig/iptables и автоприменение сервисом iptables; Red Hat описывает это как «rules applied whenever service started or machine rebooted» . На RHEL 8+ чаще выбирают firewalld/nftables, а iptables‑утилита работает поверх nf_tables (совместимость) .

Логирование: что включить, чтобы не утонуть

UFW умеет включать/выключать logging и задавать уровень, а также логировать конкретные правила (allow log …) .

nftables имеет statement log с префиксом и может сочетать log+accept в одной строке — удобнее, чем классический iptables‑подход .

Пример nftables: логировать новые SSH‑подключения (и принять):

tcp dport SSH_PORT ct state new log prefix "NEW SSH: " accept

Fail2ban (минимум для SSH)

Fail2ban отслеживает логи и банит IP с множественными ошибками, обновляя правила firewall . Если вы используете nftables, в fail2ban есть соответствующие actions (например, nftables.conf, nftables-multiport.conf) .

Минимальный пример /etc/fail2ban/jail.local (идея, не догма):

[sshd]enabled = truemaxretry = 5findtime = 10mbantime  = 1h

Здесь важно не «магия конфига», а принцип: firewall закрывает поверхность, fail2ban добавляет динамический «анти‑перебор» поверх.

Шпаргалка: чек-лист деплоя и quick reference по UFW vs iptables vs nftables

Короткий чек‑лист перед тем, как нажать Enter

1) У вас есть консоль/Rescue у провайдера на случай lockout .2) Открыта вторая SSH‑сессия, лучше в tmux .3) Вы знаете SSH_PORT и свой ADMIN_IP.4) Сделан бэкап текущих правил (iptables-save / nft list ruleset).5) Правило на SSH добавлено до включения default deny.6) После применения выполнены проверки: ss, ufw status / iptables -S / nft list ruleset.7) Настроено persistence (UFW enable; nftables.service; netfilter-persistent).8) Включено умеренное логирование и вы знаете, где смотреть (journalctl, syslog).

One-page quick reference: сравнение инструментов

Инструмент

Когда брать

Плюсы

Минусы/подводные камни

Автозагрузка

Docker‑нюансы

UFW

Быстрый старт на Ubuntu/Debian, простые правила

Простые команды, --dry-run, rate‑limit (ufw limit

Меньше контроля над «краевыми» кейсами; возможны конфликты, если другое ПО перезаписывает iptables 

ufw enable включает на boot 

Docker меняет iptables сам; для тонкой фильтрации часто нужен DOCKER-USER 

iptables

Legacy‑скрипты, привычный синтаксис, точечные правки

Много знаний/примеров; есть iptables-apply для безопасного remote‑применения с автооткатом 

В новых системах iptables может быть «nft‑вариантом»; смешивание legacy и nft‑инструментов опасно 

Debian/Ubuntu: netfilter-persistent/iptables-persistent грузит правила на boot 

Docker пишет правила; используйте DOCKER-USER для пользовательских ограничений 

nftables

«Правильно и надолго», единый ruleset IPv4/IPv6

Современный механизм; скрипты применяются атомарно (в RHEL 8 это подчёркивается как major benefit) ; есть nft --check 

Порог входа выше; важно не запускать параллельно другой firewall‑сервис 

Ubuntu: unit грузит /etc/nftables.conf ; Debian: systemctl enable nftables.service 

Docker чаще ожидает iptables‑стек; тщательно тестируйте на вашей ОС 

Как повысить антиплагиат: 8 эффективных способов 2021 года
Сайт

Как повысить антиплагиат: 8 эффективных способов 2021 года

Чем популярнее тема, тем сложнее написать уникальный текст. Большинство письменных трудов должно содержать цитаты, термины,

Медиасервер: зачем он вам нужен и как его настроить?
Решения для бизнеса

Медиасервер: зачем он вам нужен и как его настроить?

Медиасервер используется для хранения фильмов, музыки или личных фотографий. К нему можно подключиться по локальной сети из

ІоВ – одна из главных технологических тенденций 2021 года
DDoS

ІоВ – одна из главных технологических тенденций 2021 года

Устройства из категории IoT (Internet of Things, «интернет вещей») уже прочно вошли в нашу жизнь. Если