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

A correctly functioning firewall is the most crucial part of the complete Linux system security. By default, Debian and Ubuntu distribution comes with a firewall configuration tool called UFW (Uncomplicated Firewall), is a most popular and easy-to-use command line tool for configuring and managing a firewall on Ubuntu and Debian distributions.

В этой статье мы объясним, как установить и настроить брандмауэр UFW на дистрибутивах Ubuntu и Debian.

Предварительные условия

Прежде чем приступить к этой статье, убедитесь, что вы вошли в свой сервер Ubuntu или Debian от имени пользователя sudo или от имени учетной записи root. Если у вас нет пользователя sudo, вы можете создать его, используя следующие инструкции от имени пользователя root.

# adduser username
# usermod -aG sudo username 
# su - username
$ sudo whoami

Установка брандмауэра UFW на Ubuntu и Debian

Брандмауэр UFW (Uncomplicated Firewall) должен быть установлен по умолчанию в Ubuntu и Debian. Если это не так, установите его, используя менеджер пакетов APT с помощью следующей команды.

$ sudo apt install ufw

Проверка брандмауэра UFW

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

$ sudo ufw status verbose

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

Status: inactive

Включение брандмауэра UFW

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

$ sudo ufw enable

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

$ sudo ufw disable 

UFW Стандартные политики

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

Стандартные политики брандмауэра UFW находятся в файле /etc/default/ufw и могут быть изменены с помощью следующей команды.

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing

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

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

Вы можете просмотреть все доступные профили приложений на вашем сервере с помощью следующей команды.

$ sudo ufw app list

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

Available applications:
  APACHE
  APACHE Full
  APACHE SECURE
  CUPS
  OpenSSH
  Postfix
  Postfix SMTPS
  Postfix Submission

Если вы хотите получить больше информации о конкретном профиле и определенных правилах, вы можете использовать следующую команду.

$ sudo ufw app info 'Apache'
Profile: Apache
Title: Web Server 
Description: Apache V2 is the next generation f the omnipresent Apache web server.

Ports:
  80/tcp

Включение IPv6 в UFW

Если ваш сервер настроен с протоколом IPv6, убедитесь, что ваш UFW настроен на поддержку IPv6 и IPv4. Чтобы проверить это, откройте файл конфигурации UFW с помощью вашего любимого редактора.

$ sudo vi /etc/default/ufw

Затем убедитесь, что “IPV6” установлен в "yes" в файле конфигурации, как показано.

IPV6=yes

Сохраните и выйдите. Затем перезапустите свой брандмауэр с помощью следующих команд:

$ sudo ufw disable
$ sudo ufw enable

Разрешить подключения SSH в UFW

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

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

$ sudo ufw allow ssh

Если вы используете пользовательский порт SSH (например, порт 2222), то вам нужно открыть этот порт в брандмауэре UFW с помощью следующей команды.

$ sudo ufw allow 2222/tcp

Чтобы заблокировать все SSH-соединения, введите следующую команду.

$ sudo ufw deny ssh/tcp
$ sudo ufw deny 2222/tcp  [If using custom SSH port]

Включение конкретных портов в UFW

Вы также можете открыть определенный порт в брандмауэре, чтобы разрешить соединения через него к определенному сервису. Например, если вы хотите настроить веб-сервер, который слушает порт 80 (HTTP) и 443 (HTTPS) по умолчанию.

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

Открыть порт 80 HTTP в UFW
$ sudo ufw allow http     [By service name]
$ sudo ufw allow 80/tcp   [By port number]
$ sudo ufw allow 'Apache' [By application profile]
Открыть порт 443 HTTPS в UFW
$ sudo ufw allow https
$ sudo ufw allow 443/tcp
$ sudo ufw allow 'Apache Secure'

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

Предположим, у вас есть некоторые приложения, которые вы хотите запустить на диапазоне портов (5000-5003), вы можете добавить все эти порты, используя следующие команды.

sudo ufw allow 5000:5003/tcp
sudo ufw allow 5000:5003/udp

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

Если вы хотите разрешить соединения на всех портах с определенного IP-адреса 192.168.56.1, то вам нужно указать “from” перед IP-адресом.

$ sudo ufw allow from 192.168.56.1

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

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

$ sudo ufw allow from 192.168.56.1 to any port 22

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

Для разрешения подключений для конкретных IP-адресов в диапазоне от 192.168.1.1 до 192.168.1.254 к порту 22 (SSH), выполните следующую команду.

$ sudo ufw allow from 192.168.1.0/24 to any port 22

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

Для разрешения подключений к определенному сетевому интерфейсу eth2 для определенного порта 22 (SSH), выполните следующую команду.

$ sudo ufw allow in on eth2 to any port 22

Запретить подключения в UFW

По умолчанию все входящие подключения блокируются, если вы не открыли соединение в UFW специально. Например, вы открыли порты 80 и 443, и ваш веб-сервер подвергается атаке из неизвестной сети 11.12.13.0/24.

Чтобы заблокировать все подключения из этого конкретного диапазона сети 11.12.13.0/24, можно использовать следующую команду.

$ sudo ufw deny from 11.12.13.0/24

Если вы хотите заблокировать подключения только на портах 80 и 443, можно использовать следующие команды.

$ sudo ufw deny from 11.12.13.0/24 to any port 80
$ sudo ufw deny from 11.12.13.0/24 to any port 443

Удалить правила UFW

Есть 2 способа удаления правил UFW: по номеру правила и по фактическому правилу.

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

$ sudo ufw status numbered
Status: active

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

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

$ sudo ufw delete 1

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

$ sudo ufw delete allow 22/tcp

Тестирование правил UFW

Вы можете запускать любые команды ufw, не внося изменения в брандмауэр системы, используя флаг --dry-run, это просто показывает изменения, которые должны были произойти.

$ sudo ufw --dry-run enable

Сброс брандмауэра UFW

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

$ sudo ufw reset
$ sudo ufw status

Расширенные функции UFW

Брандмауэр UFW может делать все то же, что и iptables. Это можно сделать с различными наборами файлов правил, которые представляют собой простые текстовые файлы iptables-restore.

Настройка брандмауэра UFW или добавление дополнительных команд iptables не разрешается через команду ufw, это просто вопрос изменения следующих текстовых файлов

  • /etc/default/ufw: Основной файл конфигурации с предопределенными правилами.
  • /etc/ufw/before[6].rules: В этом файле правила вычисляются до добавления через команду ufw.
  • /etc/ufw/after[6].rules: В этом файле правила вычисляются после добавления через команду ufw.
  • /etc/ufw/sysctl.conf: Этот файл используется для настройки сети ядра.
  • /etc/ufw/ufw.conf: Этот файл включает ufw при загрузке.

Вот и все! UFW – отличный фронтенд для iptables с удобным интерфейсом пользователя для определения сложных правил с помощью одной команды ufw.

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

Source:
https://www.tecmint.com/setup-ufw-firewall-on-ubuntu-and-debian/