Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Оцените статью

Введение

UFW (Uncomplicated Firewall) — это удобная надстройка над стандартным iptables, предназначенная для упрощения управления сетевыми правилами в операционных системах семейства Linux, особенно в Ubuntu. Благодаря интуитивно понятному синтаксису UFW позволяет быстро настроить базовую защиту сервера или рабочей станции, не углубляясь в сложные цепочки iptables. В этой статье мы подробно разберём основные команды, приведём практические примеры и объясним, как работать с правилами для разных интерфейсов, протоколов и IP-адресов.

Полный доступ на определённом интерфейсе

Иногда требуется разрешить весь трафик (как входящий, так и исходящий) на конкретном сетевом интерфейсе, например, на виртуальном мосте vmbr1 в среде Proxmox или на интерфейсе Docker. Для этого используются следующие команды:

Разрешить весь входящий трафик на интерфейсе vmbr1

# ufw allow in on vmbr1 to any

Разрешить весь исходящий трафик на интерфейсе vmbr1

# ufw allow out on vmbr1 to any

Пояснение:
in — направление «входящий» (трафик, приходящий на интерфейс).
out — направление «исходящий» (трафик, уходящий с интерфейса).
on vmbr1 — указывает, к какому интерфейсу применяется правило.
to any — означает «на любой адрес назначения».

Такие правила удобны, когда вы полностью доверяете сети, подключённой к данному интерфейсу (например, внутренняя виртуальная сеть). Однако помните: открытие полного доступа снижает уровень безопасности, поэтому используйте эту возможность только при необходимости.

Открываем доступ по определённому порту TCP

Самый частый сценарий — разрешить подключение к серверу по SSH (порт 22). Для этого достаточно указать номер порта:

# ufw allow 22

UFW автоматически понимает, что речь идёт о TCP-порте (по умолчанию для большинства служб). Если нужно явно указать протокол, можно добавить /tcp:

# ufw allow 22/tcp

Пример:
Допустим, вы хотите открыть веб-сервер на портах 80 и 443:

# ufw allow 80/tcp
# ufw allow 443/tcp

После этого можно проверить статус командой ufw status verbose.

Firewall отключен

Обратите внимание, что Firewall отключен.

Активация UFW

После того как вы добавили все необходимые правила, необходимо включить сам файрвол. Это делается командой:

# ufw enable

Важно: Перед активацией убедитесь, что у вас есть разрешающее правило для SSH (или другого способа удалённого доступа), иначе вы рискуете потерять соединение с сервером. Если вы работаете по SSH, сначала выполните ufw allow 22, а только потом sudo ufw enable. После включения UFW запускается автоматически при загрузке системы.

Показать текущие настройки

Чтобы увидеть, какие правила активны, используется команда:

# ufw status verbose

Вывод покажет статус (active/inactive), политики по умолчанию (обычно deny (incoming), allow (outgoing)) и список правил с подробностями. Например:

# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere                  
80/tcp                     ALLOW IN    Anywhere                  
443/tcp                    ALLOW IN    Anywhere                  
22 (v6)                    ALLOW IN    Anywhere (v6)             
80/tcp (v6)                ALLOW IN    Anywhere (v6)             
443/tcp (v6)               ALLOW IN    Anywhere (v6)

Разрешаем подключение к порту с определённого IP-адреса

Часто требуется ограничить доступ к критичным службам (например, к базе данных PostgreSQL на порту 5432) только с доверенных IP-адресов. Для этого используется конструкция:

# ufw allow from 37.194.5.244 to any port 5432

Разбор команды:
from 37.194.5.244 — источник (один IP или подсеть, например 192.168.1.0/24).
to any — назначение (можно заменить на конкретный IP сервера).
port 5432 — порт назначения.

Если нужно разрешить только TCP, добавьте /tcp:

# ufw allow from 37.194.5.244 to any port 5432/tcp

Пример:
Разрешить SSH только с IP офиса:

# ufw allow from 192.168.0.1/24 to any port 22

Открываем доступ по определённому порту UDP

Некоторые протоколы (например, L2TP/IPsec для VPN, DNS, DHCP) работают поверх UDP. Чтобы открыть порт для UDP, укажите протокол явно:

# ufw allow 1701/udp

Пояснение:
Порт 1701 используется протоколом L2TP. Если вы настраиваете VPN-сервер, может потребоваться открыть также порты 500/udp и 4500/udp для IPsec.

Разрешаем Forwarding на интерфейсе

UFW может управлять не только входящим и исходящим трафиком на самом хосте, но и маршрутизируемым трафиком (forwarding). Это необходимо, когда сервер выступает шлюзом или маршрутизатором, например, для VPN-подключений. Команда:

# ufw route allow in on ppp0 out on ens3

Что она делает:
route allow — разрешает маршрутизацию (forwarding) для данного трафика.
in on ppp0 — входящий интерфейс (например, PPP-интерфейс VPN-клиента).
out on ens3 — исходящий интерфейс (например, внешний Ethernet-интерфейс).

Таким образом, трафик, пришедший от VPN-клиента на ppp0, будет перенаправлен наружу через ens3. Не забудьте также включить IP-форвардинг в ядре (net.ipv4.ip_forward=1).

Разрешить весь входящий трафик с определенного IP-адреса

Еще один довольно популярный сценарий когда мы разрешаем весь трафик с определенного IP-адреса.

# ufw allow from 192.168.1.50

Удаление существующего правила

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

# ufw status numbered

Пример вывода:

To                         Action      From
 --                         ------      ----

[1] 22/tcp ALLOW IN Anywhere
[2] 80/tcp ALLOW IN Anywhere
[3] 443/tcp ALLOW IN Anywhere
[4] 5432/tcp ALLOW IN 37.194.5.244
[5] 22/tcp (v6) ALLOW IN Anywhere (v6)
[6] 80/tcp (v6) ALLOW IN Anywhere (v6)
[7] 443/tcp (v6) ALLOW IN Anywhere (v6)

Чтобы удалить правило номер 4 (доступ к порту 5432 с IP 37.194.5.244), выполните:

# ufw delete 4

Система запросит подтверждение:

Deleting:
 allow from 37.194.5.244 to any port 5432
 Proceed with operation (y|n)? y
 Rule deleted

Важно: Нумерация правил может меняться после удаления, поэтому перед каждым удалением лучше заново запрашивать status numbered.

Заключение

UFW — мощный, но простой инструмент для настройки сетевой безопасности в Ubuntu. Мы рассмотрели основные команды: открытие портов, привязку к интерфейсам, фильтрацию по IP, работу с UDP и forwarding, а также удаление правил. Не забывайте регулярно проверять логи UFW (/var/log/ufw.log) и обновлять правила по мере изменения инфраструктуры.

Похожие записи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

В этой статье мы рассмотрим пошаговую настройку кластера Kubernetes на Ubuntu 24.04 с тремя узлами: один мастер (который также может запускать пользовательские поды) и два рабочих узла. Мы настроим PersistentVolume…

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

В рамках создания собственного кластера Kubernetes я поднаял кластер Mysql который работает в режиме Master-Slave и Slave-узлы соответственно работают в режиме read-only, а мастер в read-write. Соответственно мне нужен балансировщик…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования