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

Ubuntu поставляется с инструментом настройки брандмауэра под названием UFW (Uncomplicated Firewall). Это удобный интерфейс для управления правилами брандмауэра iptables. Его основная цель — сделать управление брандмауэром проще или, как следует из названия, несложным.

В этой статье описывается, как использовать инструмент UFW для настройки и управления брандмауэром в Ubuntu 20.04. Правильно настроенный брандмауэр является одним из наиболее важных аспектов общей безопасности системы.

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

Установить UFW

UFW является частью стандартной установки Ubuntu 20.04 и должен присутствовать в вашей системе. Если по какой-то причине он не установлен, вы можете установить пакет, набрав:

sudo apt update
sudo apt install ufw

Проверить статус UFW

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

sudo ufw status verbose

Политики UFW по умолчанию

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

Политики по умолчанию определены в /etc/default/ufwфайле и могут быть изменены вручную или с помощью sudo ufw default <policy> <chain>команды.

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

Профили приложений

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

Вы можете перечислить все профили приложений, доступные на вашем сервере, набрав:

sudo ufw app list

В зависимости от пакетов, установленных в вашей системе, вывод будет выглядеть примерно так:

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

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

sudo ufw app info 'Nginx Full'

Вывод показывает, что профиль «Nginx Full» открывает порты 80и файлы 443.

Вы также можете создавать собственные профили для своих приложений.

Включение UFW

Если вы подключаетесь к Ubuntu из удаленного места, перед включением брандмауэра UFW вы должны явно разрешить входящие SSH-соединения. В противном случае вы больше не сможете подключиться к машине.

Чтобы настроить брандмауэр UFW для разрешения входящих SSH-подключений, введите следующую команду:

sudo ufw allow ssh

Если SSH работает на нестандартном порту , вам необходимо открыть этот порт.

Например, если ваш демон ssh прослушивает порт 7722, введите следующую команду, чтобы разрешить подключения к этому порту:

sudo ufw allow 7722/tcp

Теперь, когда брандмауэр настроен на разрешение входящих SSH-соединений, вы можете включить его, набрав:

sudo ufw enable

Вы будете предупреждены, что включение брандмауэра может нарушить существующие соединения ssh, просто введите yи нажмите Enter.

Открытие портов

В зависимости от приложений, работающих в системе, вам также может потребоваться открыть другие порты. Общий синтаксис для открытия порта следующий:

ufw allow port_number/protocol

Ниже приведены несколько способов разрешить HTTP-соединения.

Первый вариант — использовать имя службы. UFW проверяет /etc/servicesфайл на наличие порта и протокола указанной службы:

sudo ufw allow http

Вы также можете указать номер порта и протокол:

sudo ufw allow 80/tcp

Если протокол не указан, UFW создает правила как для , так tcpи для udp.

Другой вариант — использовать профиль приложения; в этом случае «Nginx HTTP»:

sudo ufw allow 'Nginx HTTP'

UFW также поддерживает другой синтаксис для указания протокола с помощью protoключевого слова:

sudo ufw allow proto tcp to any port 80

Диапазоны портов

UFW также позволяет открывать диапазоны портов. Начальный и конечный порты разделены двоеточием ( :), и вы должны указать протокол либо , tcpлибо udp.

Например, если вы хотите разрешить порты с 7100на 7200и на tcpи на udp, вы должны выполнить следующую команду:

sudo ufw allow 7100:7200/tcp
sudo ufw allow 7100:7200/udp

Конкретный IP-адрес и порт

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

Вот пример внесения IP-адреса в белый список:

sudo ufw allow from 64.63.62.61

Если вы хотите разрешить данному IP-адресу доступ только к определенному порту, используйте to any portключевое слово, за которым следует номер порта.

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

sudo ufw allow from 64.63.62.61 to any port 22

Подсети

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

Ниже приведен пример, показывающий, как разрешить доступ для IP-адресов в диапазоне от 192.168.1.1до 192.168.1.254до порта 3360( MySQL ):

sudo ufw allow from 192.168.1.0/24 to any port 3306

Конкретный сетевой интерфейс

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

sudo ufw allow in on eth2 to any port 3306

Отказ в подключении

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

Написание запрещающих правил аналогично написанию разрешающих правил; вам нужно только использовать denyключевое слово вместо allow.

Допустим, вы открыли порты 80и 443, а ваш сервер подвергается атаке из 23.24.25.0/24сети. Чтобы запретить все подключения от 23.24.25.0/24вас, выполните следующую команду:

sudo ufw deny from 23.24.25.0/24

Вот пример запрета доступа только к портам 80и 443из них 23.24.25.0/24можно использовать следующую команду:

sudo ufw deny proto tcp from 23.24.25.0/24 to any port 80,443

Удаление правил UFW

Существует два разных способа удаления правил UFW по номеру правила и путем указания фактического правила.

Удалить правила по номеру проще, особенно если вы новичок в UFW. Чтобы сначала удалить правило по номеру правила, вам нужно найти номер правила, которое вы хотите удалить. Чтобы получить список пронумерованных правил, используйте ufw status numberedкоманду:

sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 8080/tcp                   ALLOW IN    Anywhere

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

sudo ufw delete 3

Второй способ — удалить правило, указав фактическое правило. Например, если вы добавили правило для открытия порта 8069, вы можете удалить его с помощью:

sudo ufw delete allow 8069

Отключение UFW

Если по какой-либо причине вы хотите остановить UFW и деактивировать все правила, вы можете использовать:

sudo ufw disable

Позже, если вы захотите снова включить UTF и активировать все правила, просто введите:

sudo ufw enable

Сброс UFW

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

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

sudo ufw reset