Как защитить сервер с помощью UFW и iptables: Руководство по файрволам в Linux
Приветствую, друзья!
Настройка сетевого экрана (Firewall) — это первый и главный шаг в обеспечении безопасности любого виртуального сервера. Открытые и незащищенные сетевые порты становятся мишенью для автоматизированных сканеров, брутфорс-атак и попыток эксплойта системных утилит.
В операционных системах Linux управление сетевыми пакетами осуществляется на уровне ядра подсистемой netfilter. Для взаимодействия с ней используют два ключевых инструмента: низкоуровневый гибкий утилитарный комплекс iptables и надстройку UFW (Uncomplicated Firewall), созданную для упрощения повседневного администрирования. В этой статье мы разберем базовые принципы работы обоих решений.
Key Takeaways: Ключевые выводы
UFW — стандарт для большинства типовых задач: UFW предоставляет простой человекочитаемый синтаксис, исключающий фатальные ошибки при настройке SSH, веб-серверов или баз данных на Ubuntu и Debian.
iptables — низкоуровневая мощность:
iptablesдает полный контроль над цепочками пакетов, трансляцией адресов (NAT), пробросом портов и кастомными правилами фильтрации трафика на уровне ядра.Главное правило межсетевого экрана — Default Deny: Надежный файрвол должен быть настроен по принципу «запрещено все, что явно не разрешено». Все входящие подключения по умолчанию блокируются, кроме критически важных (SSH, HTTP/HTTPS).
Часть 1. Настройка UFW (Uncomplicated Firewall)
UFW по умолчанию установлен в Ubuntu и доступен в репозиториях большинства популярных дистрибутивов.
Шаг 1: Проверка статуса и базовая политика
Перед включением файрвола важно установить базовое правило блокировки входящего трафика и разрешить исходящий:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Шаг 2: Разрешение критически важных портов
ВАЖНО: До включения UFW обязательно разрешите порт SSH, иначе вы потеряете доступ к серверу!
# Разрешить SSH (стандартный порт 22)
sudo ufw allow 22/tcp
# Или разрешить по имени службы
sudo ufw allow ssh
# Разрешить веб-трафик (HTTP и HTTPS)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Шаг 3: Включение UFW и управление правилами
# Включить файрвол
sudo ufw enable
# Проверить текущий статус и список активных правил с номерами
sudo ufw status numbered
# Удалить правило по его номеру (например, правило №3)
sudo ufw delete 3
# Ограничить брутфорс на SSH (ограничивает частоту подключений с одного IP)
sudo ufw limit ssh
Часть 2. Основы работы с iptables
iptables использует концепцию Таблиц (Tables) и Цепочек (Chains). Для базовой фильтрации трафика используется таблица filter, содержащая три основные цепочки:
INPUT: Трафик, предназначенный непосредственно для самого сервера.
OUTPUT: Трафик, генерируемый сервером и уходящий наружу.
FORWARD: Трафик, проходящий через сервер транзитом (например, при настройке роутера или VPN).
[ Сетевой пакет ] ---> INPUT (Сервер) ---> FORWARD (Транзит) ---> OUTPUT (Уход)
Базовые команды iptables
1. Просмотр текущих правил
sudo iptables -L -v -n
Флаг
-vпоказывает подробный вывод (байты/пакеты).Флаг
-nпоказывает IP-адреса и порты в числовом формате без долгих попыток резолва DNS.
2. Разрешение локального трафика (Loopback) и установленных соединений
Сервер должен свободно общаться сам с собой (через интерфейс lo) и поддерживать уже установленные соединения:
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
3. Открытие конкретных портов
# Разрешить входящие соединения на SSH (порт 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Разрешить HTTP (80) и HTTPS (443)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
4. Установка политики «Заблокировать все остальное»
После того как все нужные порты явным образом разрешены, меняется политика по умолчанию для входящего трафика:
sudo iptables -P INPUT DROP
5. Сброс всех правил (Flush)
Если вы случайно заблокировали нужный порт и хотите сбросить правила к дефолтным:
sudo iptables -F
sudo iptables -P INPUT ACCEPT
Сравнительная матрица: UFW vs iptables
| Критерий | UFW | iptables |
| Уровень сложности | Низкий (понятный синтаксис) | Средний / Высокий |
| Целевая аудитория | Начинающие и системные администраторы | Опытные инженеры, DevOps, сетевые архитекторы |
| Гибкость настройки | Ограничена базовыми сценариями | Абсолютная (любые цепочки, маски, NAT, MANGLE) |
| Поддержка NAT / Port Forwarding | Требует ручной правки файлов конфигурации | Нативная работа через таблицу nat |
| Автосохранение правил | Да (сохраняет состояние автоматически) | Нет (требует iptables-persistent) |
FAQ: Часто задаваемые вопросы
Можно ли использовать UFW и iptables одновременно?
UFW является оберткой над
iptables(илиnftablesв современных ядрах). Не рекомендуется вручную изменять правила черезiptables, если в системе активен UFW, так как при перезапуске UFW может перезаписать созданные вручную цепочки.Что делать, если я случайно заблокировал себе доступ по SSH через iptables/UFW?
Если вы потеряли доступ к серверу по SSH, используйте Emergency Console (VNC / Out-of-Band IPMI) в панели управления вашего хостинг-провайдера. В консоли панели вы сможете отключить файрвол командой
sudo ufw disableили сбросить правилаsudo iptables -F.Как сделать так, чтобы правила iptables не сбрасывались после перезагрузки сервера?
По умолчанию правила
iptables, созданные через CLI, очищаются при перезагрузке. Для их сохранения в Ubuntu/Debian установите пакетiptables-persistent:Bashsudo apt install iptables-persistent -y sudo netfilter-persistent save
Заключение
Грамотно настроенный сетевой экран — это базовый минимум для безопасности любого сервера в интернете. Для 95% повседневных задач веб-разработки и администрирования возможностей UFW более чем достаточно, тогда как iptables остаётся незаменимым инструментом для сложной сетевой маршрутизации и защиты от специфических атак.
Однако даже самый жесткий файрвол не защитит систему, если сам сервер подвергается массированным сетевым атакам (DDoS) на уровне каналов связи, переполняющим сетевые порты провайдера.
Если вы ищете безопасную и надежную инфраструктуру для ваших проектов, оцените NVMe VPS и Hourly Cloud Серверы от MivoCloud. Мы предоставляем чистую KVM-виртуализацию, гарантированные вычислительные ресурсы, защищенную сетевую инфраструктуру и сверхбыстрые Enterprise NVMe-накопители для безупречной работы ваших сервисов.
Автор статьи: Anatolie Cohaniuc

