Как настроить брандмауэр UFW на Ubuntu 22.04

UFW (Uncomplicated Firewall) – это брандмауэр управляемый из командной строки, предназначенный для Ubuntu. Он работает и в дистрибутивах на основе Debian.

Брандмауэр построен с целью облегчить сложность Iptables. UFW Ubuntu предоставляет удобные способы создания брандмауэра на основе хоста. GUFW – это графическая версия для управления UFW.

UFW предустановлен в операционных системах Ubuntu, но не включен по умолчанию. Вам необходимо выполнить команду ufw для включения и настройки брандмауэра.

В этом руководстве мы покажем, как настроить брандмауэр с UFW в Ubuntu 22.04 LTS.

Требование к настройке UFW Ubuntu

  • Система под управлением Ubuntu 22.04.
  • Пользователь root или обычная учетная запись с правами sudo.
  • Знание о работе брандмауэре.
  • Доступ к терминалу.

Как установить UFW в Ubuntu

UFW поставляется с предустановленной в Ubuntu. В случае, если вы его не нашли, вы можете установить пакет ufw с помощью команды apt.

sudo apt update
sudo apt install ufw

Шаг 1: Настройка политики ufw ubuntu по умолчанию

Брандмауэры обычно имеют политику по умолчанию. Вы можете найти политику ufw по умолчанию в файле /etc/default/ufw. Политика по умолчанию будет активна после включения брандмауэра.

Как только UWF включен, то по умолчанию он запрещает все входящие потоки и разрешает все исходящие потоки. Это означает, что любой, кто пытается получить доступ к вашему серверу, не сможет подключиться, если вы не откроете определенные порты и службы.

Вы можете найти политику правил ufw  в файле /etc/default/ufw.

$ cat /etc/default/ufw

Ответ терминала:

UFW UBUNTU правила по умолчанию
UFW UBUNTU правила по умолчанию

Синтаксис для изменения политики ufw по умолчанию:

ufw default allow|deny|reject DIRECTION

  • allow|deny|reject это разрешение, которое вы установите.
  • DIRECTION – это одно из значений: входящее, исходящее или маршрутизируемое.

В случае, если кто-то изменил значения по умолчанию, вам нужно вернуться к ufw default:

sudo ufw default deny incoming

sudo ufw default allow outgoing

Шаг 2: Проверьте профили приложений по умолчанию

Когда вы установили некоторые стандартные приложения, UFW распознает службы связанные с этими приложениями. Это профиль приложения, который представляет собой текстовый файл в формате INI, описывающий службу и содержащий правила брандмауэра для этой службы. Это может быть полезно, чтобы разрешить службу на UFW, если вы не помните номер порта. Профили приложений создаются в каталоге /etc/ufw/applications.d во время установки пакета.

Чтобы перечислить все профили приложений, которые распознаются по умолчанию:

sudo ufw app list

Available applications:
OpenSSH

OpenSSH – это приложение, которое позволяет использовать службу SSH, указанную в приложениях, распознанных на UFW по умолчанию.

Если вы установите некоторые инструменты, такие как Nginx, вы увидите больше приложений.

Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

Шаг 3: Разрешить SSH в UFW Ubuntu

По умолчанию SSH-соединения не разрешены на UFW. Это означает, что если вы включите UFW, то не будет правила, которое разрешит ваше SSH-соединение. Итак, первое, что нужно сделать после доступа к удаленному облачному серверу – это разрешить SSH-соединения на UFW Ubuntu. Сделать это можно командами:

sudo ufw allow 22

или

sudo ufw allow ssh

Ответ терминала:

Rule added

или

Rule added (v6)

Когда IPv6 включен, UFW автоматически добавит для него правило. Это линия с упоминанием (v6).

Шаг 4: Включить UFW

UFW не включен по умолчанию. Итак, вы должны сначала активировать его. Помните, что при его активации, если нет правила подключения SSH, вы потеряете удаленное соединение, так как по умолчанию оно будет запрещать все входящие соединения, которые явно не указаны.

Чтобы запустить брандмауэр UFW, нам нужно его включить:

sudo ufw enable

Далее введите Y

Command may disrupt existing ssh connections. Proceed with operation

(y|n)? y

Firewall is active and enabled on system startup

С включением ufw мы включили брандмауэр на Ubuntu.

Вы можете увидеть предупреждение о том, что ssh-соединение может быть нарушено. Это будет верно, если в UFW нет правила SSH.

Перед запуском брандмауэра используете следующую команду для отображения всех добавленных правил:

sudo ufw show added

Ответ терминала:

Added user rules (see 'ufw status' for running firewall):
ufw allow 22

Шаг 5: Проверка статуса UFW

Вы можете в любое время проверить состояние брандмауэра ufw ubuntu,. Кроме того, он показывает, как настроены правила брандмауэра. Чтобы проверить включен или выключен брандмауэр используйте команду.

sudo ufw status verbose

Ответ терминала примерно будет такой:

Проверка статуса UFW
Проверка статуса UFW

Первая строка вывода показывает статус ufw активным или неактивным. В следующих строках отображается список установленных правил.

Шаг 6: Разрешить входящий трафик в UFW Ubuntu

Пришло время создать правила, чтобы указать входящие потоки, которые вы собираетесь разрешить. Вы должны разрешить только те службы, которые вам нужны и которым вы доверяете.

Давайте проверим, как писать правила для разрешения подключений на основе порта, диапазонов портов, IP-адреса, диапазона IP и многого другого.

Разрешить трафик на один порт

Если у вас есть служба для добавления, вы можете использовать UFW, чтобы разрешить один порт.

Например, чтобы разрешить HTTP-трафик на порту 80:

sudo ufw allow 80

Далее проверьте, проверив статус UFW:

sudo ufw status

Ответ терминала:

Разрешить трафик на один порт в UFW Ubuntu
Разрешить трафик на один порт в UFW Ubuntu

Разрешить диапазон портов в UFW фаерволе

UFW позволяет устанавливать правила для определенных диапазонов портов для разрешения подключений.

Например, вы запускаете некоторые приложения Java, прослушивающие порт 8080 до 8085. Будет утомительно вносить вручную порт за портом; UFW позволяет указать диапазон портов. Вам нужно будет указать разрешенный протокол (TCP или UDP).

sudo ufw allow 8080:8085/tcp

Вы можете сделать то же самое для протокола UDP, просто замените TCP

Разрешить несколько портов

Вы можете разрешить несколько портов в командной строке. Также необходимо указать протокол (TCP или UDP).

Например, чтобы разрешить порты 80 и 443 в брандмауере ufw, введите:

sudo ufw allow 80,443/tcp

Теперь вы можете проверить свои правила UFW

sudo ufw status

Ответ терминала будет следующим:

Разрешение нескольких портов в UFW Ubuntu
Разрешение нескольких портов в UFW Ubuntu

Кстати вы можете заметить, что указано имя протокола.

Разрешить определенные IP-адреса

Когда у вас есть сервер, доступный через Интернет, вы должны быть осторожны с тем, кому разрешено обращаться к серверу. Используя UFW, вы можете указать IP-адреса, которым разрешен доступ к серверу. Это может быть полезно, если вы собираетесь предоставить доступ некоторым партнерам.

Например, чтобы разрешить подключения с IP-адреса 58.105.0.200, вы можете указать:

sudo ufw allow from 58.105.0.200

Разрешить подсети

Вместо того, чтобы разрешать определенный IP-адрес, вы можете просто разрешить подсеть IP-адресов. UFW позволяет использовать определенную маску подсети с использованием обозначения CIDR.

Например, чтобы разрешить сеть 192.168.10.0 с маской сети 24, введите команду:

sudo ufw allow from 192.168.10.0/24

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

UFW позволяет определенному IP-адресу подключаться к порту с помощью опции fromany port IP-адрес.

Например, чтобы разрешить IP-адрес 58.105.0.200 для подключения к порту 22, введите:

sudo ufw allow from 58.105.0.25 to any port 22

Вы также можете фильтровать, чтобы разрешить определенные протоколы, используя опцию proto:

sudo ufw allow from 58.105.0.0/24 to any port 22 proto tcp

Чтобы настроить сервер на прослушивание определенного IP-адреса на порте:

ufw allow from any to 10.8.0.1 port 22

Вы можете дополнительно фильтровать, чтобы ограничить только определенный источник для подключения определенного IP-адреса к порту:

sudo ufw allow proto tcp from 10.20.80.55 to 10.20.80.56 port 22

Разрешить трафик на определенный интерфейс

Используя UFW, вы можете определить правила брандмауэра, которые будут применяться к определенному интерфейсу.

Во-первых, вы можете использовать следующую команду ip для проверки деталей интерфейса:

ip a

Разрешить трафик на определенный интерфейс
Разрешить трафик на определенный интерфейс

Следующая команда создает правило брандмауэра UFW для установки в сетевом интерфейсе с именем eth1 чтобы разрешить трафик MYSQL т.е. порт 3306:

sudo ufw allow in on eth1 to any port 3306

Шаг 7: Добавить правило с комментарием в UFW

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

ufw rule comment 'add your comment here'

Например, чтобы добавить комментарий к правилу ufw allow, введите:

sudo ufw allow 'Nginx HTTPS' comment 'For website allowed Nginx on port 443'

Шаг 8: Блокировка соединения в UFW Ubuntu

Как упоминалось ранее, политика по умолчанию UFW – запретить все входящие соединения. Если вы изменили политику по умолчанию и вам нужно запретить определенные службы, вы можете использовать опцию ufw deny . Когда мы используем deny UFW будет игнорировать этот трафик. Если вы хотите, чтобы ufw отправил сообщение return denied, используйте эту опцию reject.

Синтаксис такой же, как и разрешить правила, только нужно заменить опцией deny.

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

sudo ufw deny 21

Например вы можете заблокировать все соединения, поступающие с IP-адреса 10.30.55.10 на порт номер 22.

sudo ufw deny from 10.30.55.10 to any port 22

Шаг 9: Создание правила с именем профиля приложения

Когда вы устанавливаете некоторые пакеты, такие как Nginx или Apache, он создаст профиль приложения с именем службы, которые связаны с соответствующим портом (80, 22, 443 и т. д.). Чтобы посмотреть доступные списки приложений, используйте команду ufw app list .

Вы можете создать правило просто используя имя профиля приложения. Например, Nginx Full соответствует портам 80 и 443, а OpenSSH – порту 22.

Например, чтобы разрешить порты 80 и 443 с помощью профиля Nginx, введите

sudo ufw allow 'Nginx Full'

Шаг 10: Как удалить правило в UFW Ubuntu

Если вы создали правило UFW и оно больше не требуется, вы можете легко удалить его двумя способами.

Вы можете удалить правила UFW по номеру правила. Для просмотра номеров правил используйте следующую команду:

sudo ufw status numbered

Ответ терминала:

Удаление правил UFW Ubuntu по номеру
Удаление правил UFW Ubuntu по номеру

Теперь вы можете удалить правило ufw например номер 6. Для этого используйте следующую команду:

$ sudo ufw delete 6

Второй способ удалить правило: используйте само фактическое правило для удаления. Для этого добавьте правило, за которым следует удаление ufw.

Например, чтобы удалить правило, в котором мы разрешили порт 1194:

$ sudo ufw delete deny from 10.20.59.0/24 to any port 1194

Шаг 11: Активация маскировки IP

Маскировка IP работает с NAT. Он позволяет машинам с не маршрутизируемыми IP-адресами получать доступ к Интернету через машину, действующую как шлюз (тот, который делает маскировку).

Вы должны включить переадресацию IP, чтобы разрешить это. Отредактируем файл конфигурации /etc/ufw/sysctl.conf и раскомментируем определенную строку.

sudo vim /etc/ufw/sysctl.conf

net/ipv4/ip_forward=1

Теперь вы должны разрешить политику DEFAULT_FORWARD_POLICY

sudo ufw default allow routed

Это изменит значение DEFAULT_FORWARD_POLICY на ACCEPT в файле политики по умолчанию. Обычно после перезагрузки изменения вступают в силу. Чтобы применить его немедленно, вы должны выполнить команду

sysctl -p

Вам нужно отредактировать таблицу nat и правило маскарада и установить политику по умолчанию для цепочки POSTROUTING. Также вы должны добавить несколько строк в файл /etc/ufw/before.rules

sudo vim /etc/ufw/before.rules

Пример:

NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]

Forward traffic through eth0 - Change to match your public network interface
-A POSTROUTING -s A.B.C.0/24 -o eth0 -j MASQUERADE

don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

Шаг 12: Остановка UFW и сброс

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

sudo ufw disable

Ответ терминала будет следующим:

Firewall stopped and disabled on system startup

Это отключит ufw не удаляя никаких правил, но все правила больше не активны. Вы можете активировать все правила обратно с помощью команды ufw enable .

Если вы по какой-либо причине хотите удалить все правила, то вам нужно сбросить настройки ufw. Но это сохранит установленные политики по умолчанию.

sudo ufw reset

Шаг 13: Как включить IPv6 в UFW Ubuntu

По умолчанию IPV6 отключен в UFW. Чтобы включить IPV6, вам требуется добавить IPV6 в файле /etc/default/ufw .

Используйте ваш любимый редактор и установите параметр IPV6 = yes:

sudo vim /etc/default/ufw

Когда вы отредактировали конфигурацию UFW, чтобы изменения вступили в силу, запустите команду ufw reload . Это не требуется при добавлении правил с помощью командной строки.

Команды UFW

Некоторые полезные команды UFW:

Команды UFW Описание
ufw default allow|deny|reject Для управления политиками ufw по умолчанию
ufw app list Чтобы посмотреть все профили приложений
ufw enable Чтобы запустить или включить брандмауэр ufw
ufw show added Перед включением показать добавленные правила
ufw status verbose Показать активный / неактивный статус и список правил для запуска брандмауэра
ufw allow Установить правила разрешения
ufw rule comment Добавить комментарий к правилам
ufw deny Установить правила запрета
ufw delete Удалить определенные правила по фактическому правилу или по номеру правила
ufw disable Сделать все правила неактивными
ufw reset Удалить все правила

Заключение

В этой статье мы подробно расписали, как настроить брандмауэр с UFW на Ubuntu 22.04 LTS.

Что мы рассмотрели в UFW? политика по умолчанию, профили приложений, разрешить ssh, включить, разрешить и запретить правила и удалить правила. Убедитесь, что разрешены только необходимые входящие соединения и запрещены все ненужные соединения.

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

Nazario

Я — Nazario, создатель и автор сайта guid.su, специализируюсь на информационных технологиях с акцентом на системное администрирование Linux и Windows, веб-разработку и настройку различных систем. Мои глубокие знания и обширный практический опыт в этих сферах позволяют мне создавать детальные руководства и учебные материалы, ценные для пользователей всех уровней.

Я стремлюсь делать сложные темы доступными и понятными, надеюсь что мой вклад в сообщество IT будет оценен по достоинству.

Моя работа направлена на образование и распространение знаний в области информационных технологий, помогая другим расширять свои возможности и углублять понимание современных технологий.

Guid: Linux и Windows
Выскажите своё мнение или присоединяйтесь к обсуждению:

Отправляя комментарий, вы даете согласие на обработку ваших данных в соответствии с политикой конфиденциальности и даюёте согласие на их использование.