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

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

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

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

Подготовка

Только root или пользователи с привилегиями sudo могут управлять системным брандмауэром. Лучше всего запускать административные задачи от имени пользователя sudo.

Установить UFW

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

sudo apt updatesudo apt install ufw

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

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

sudo ufw status verbose

Вывод покажет, что состояние брандмауэра неактивно:

Status: inactive

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

Политики 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 .

Profile: Nginx Full
Title: Web Server (Nginx, HTTP + HTTPS)
Description: Small, but very powerful and efficient web server

Ports:
  80,443/tcp

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

Включение UFW

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

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

sudo ufw allow ssh
Rules updated
Rules updated (v6)

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

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

sudo ufw allow 7722/tcp

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

sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Вы будете предупреждены, что включение брандмауэра может нарушить существующие соединения 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/tcpsudo 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

Вот пример 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

IP-маскарадинг

IP Masquerading — это вариант NAT (трансляция сетевых адресов) в ядре Linux, который преобразует сетевой трафик путем перезаписи исходных и целевых IP-адресов и портов. С помощью IP Masquerading вы можете разрешить одной или нескольким машинам в частной сети связываться с Интернетом, используя одну машину Linux, которая действует как шлюз.

Настройка IP-маскарадинга с помощью UFW включает несколько шагов.

Во-первых, вам нужно включить переадресацию IP. Для этого откройте файл /etc/ufw/sysctl.conf :

sudo nano /etc/ufw/sysctl.conf

Найдите и раскомментируйте строку net.ipv4.ip_forward = 1 :

/etc/ufw/sysctl.conf
net/ipv4/ip_forward=1

Затем вам нужно настроить UFW, чтобы разрешить пересылку пакетов. Откройте файл конфигурации UFW:

sudo nano /etc/default/ufw

Найдите ключ DEFAULT_FORWARD_POLICY и измените значение с DROP на ACCEPT :

/etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

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

sudo nano /etc/ufw/before.rules

Добавьте следующие строки:

/etc/ufw/before.rules
#NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic through eth0 - Change to public network interface
-A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE

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

Не забудьте заменить eth0 в строке -A POSTROUTING чтобы он соответствовал имени публичного сетевого интерфейса:

Когда вы закончите, сохраните и закройте файл.

Наконец, перезагрузите правила UFW, отключив и снова включив UFW:

sudo ufw disablesudo ufw enable

Выводы

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

Для получения дополнительной информации по этой теме посетитесправочную страницу UFW .

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

Оставьте комментарий