Настройка брандмауэра с помощью UFW на Debian
Руководство как установить и настроить UFW на Debian
Uncomplicated Firewall (ufw) — это упрощённый интерфейс управления брандмауэром, который скрывает сложность технологий фильтрации пакетов нижнего уровня, таких как iptables и nftables.
Разберём, как настроить брандмауэр с помощью UFW на сервере Linux.
Политики по-умолчанию
Установить параметры по-умолчанию, на запрет всех входящих соединений и разрешение всех исходящих. можно командами:
1
2
ufw default deny incoming
ufw default allow outgoing
Политики по-умолчанию — это базовый уровень контроля, который действует на весь трафик, не подпадающий под пользовательские правила.
Разрешение SSH
Чтобы настроить сервер на разрешение входящих SSH‑соединений, используем команду:
1
ufw allow ssh
UFW знает, какой порт разрешить ssh, потому что он указан как служба в файле
/etc/services.
Однако можно написать эквивалентное правило, указав порт вместо имени службы:
1
ufw allow 22
Разрешение соединений зависит от ваших конкретных потребностей. Существует несколько способов разрешить другие соединения, помимо указания порта или известной службы.
Диапазон портов
Например, чтобы разрешить соединения X11, которые используют порты 6000-6007, используем команды:
1
2
ufw allow 6000:6007/tcp
ufw allow 6000:6007/udp
При указании диапазонов портов с помощью UFW необходимо указать протокол (tcp или udp), к которому должны применяться правила.
Конкретные IP‑адреса
Например, если хотим разрешить подключения с определённого IP‑адреса 201.202.203.204:
1
ufw allow from 201.202.203.204
Также можно указать конкретный порт, к которому разрешено подключаться указанномуIP‑адресу, добавив to any port, за которым следует номер порта.
Например, если мы хотим разрешить 201.202.203.204 подключаться к порту 22, используем:
1
ufw allow from 201.202.203.204 to any port 22
Подсети
Например, нужно разрешить все IP‑адреса в диапазоне от 201.202.203.1 до 201.202.203.254:
1
ufw allow 201.202.203.0/24
Аналогичным образом можно указать порт назначения, к которому разрешено подключаться подсети 201.202.203.0/24, подключаться к порту 22:
1
ufw allow from 201.202.203.0/24 to any port 22
По сетевому интерфейсу
Если необходимо создать правило, которое будет применяться только к определённому сетевому интерфейсу, можно сделать это, указав allow in on, за которым следует имя интерфейса.
Например, хотим разрешить порт 443 на сетевом интерфейсе ens192:
1
ufw allow in on ens192 to any port 443
Запрет соединений
Если необходимо запретить определённые соединения на основе IP‑адреса или подсети источника, это можно сделать с помощью запрещающих правил для всех служб или IP‑адресов.
Например, чтобы запретить HTTP‑соединения, используем команду:
1
ufw deny http
Если нужно запретить все соединения с 201.202.203.204, используем:
1
ufw deny from 201.202.203.204
Изменить порядок правил
Порядок правил в UFW важен, потому что брандмауэр обрабатывает их последовательно, сверху вниз и применяет первое подходящее правило. Поэтому порядок может повлиять на то, как обрабатывается сетевой трафик.
Если вы хотите изменить порядок существующего правила, сначала удалите его и затем добавьте снова с нужным порядком.
Вариант #1
С использованием параметра insert. Например, чтобы переместить правило, разрешающее порт 443 (HTTPS), перед портом 80, можно сначала удалить его:
1
ufw delete allow 443
Затем добавить снова с нужным порядком:
1
ufw insert 1 allow 443
Вариант #2
Можно также использовать параметр after или before для указания позиции правила относительно другого правила. Если нужно поместить правило разрешения порта 80 непосредственно после правила с номером 1, используем:
1
ufw insert after 1 allow 80
Если нужно поместить правило разрешения порта 443 непосредственно перед правилом с номером 2, используем:
1
ufw insert before 2 allow 443
Удаление правил
Знание того, как удалять правила брандмауэра, так же важно как и знание того, как их создавать. Есть два разных способа указать, какие правила удалять: по номеру правила или по самому названи правила.
Самый удобный способ удаления правил по номеру, чтобы получить список правил с их нумерацией, выполняем команду:
1
ufw status numbered
Вывод:
1
2
3
4
5
6
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN Anywhere
К примеру, хотим удалить правило 2, разрешающее соединения через порт 80:
1
ufw delete 2
Обратите внимание, что если у вас включен IPv6, нужно будет удалить и соответствующее правило IPv6.
Проверка состояния
Проверить состояние ufw можно командой:
1
ufw status verbose
Если ufw отключен (что по умолчанию), вы увидите:
1
Status: inactive
Если ufw активен, вывод может выглядеть примерно так:
1
2
3
4
5
6
7
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
Отключение
Если необходимо отключить ufw это можно сделать с помощью команды:
1
ufw disable
После этого все созданные правила больше не будут активны.
Сброс
Если нужно сбросить все созданные правила, то делается это командой:
1
ufw reset
Это приведёт к отключению и удалению всех ранее созданных правил.
Имейте в виду, что политики по умолчанию не изменятся на исходные, если вы их меняли.
