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

Без брандмауэра нет правил или ограничений для трафика в вашей сети, и это приводит к ряду негативных последствий. В системе Linux по умолчанию предоставляется инструмент конфигурации брандмауэра, который называется Uncomplicated Firewall (UFW). Но как настроить брандмауэр UFW? Усаживайтесь поудобнее, этот учебник вам поможет!

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

Готовы? Читайте далее, чтобы начать!

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

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

  • Машина с Ubuntu – в этом учебнике используется Ubuntu 20.04 LTS, но также подойдут другие дистрибутивы Linux.

Установка UFW и включение подключения IPv6

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

1. Откройте ваш терминал и запустите нижеприведенную команду apt update, чтобы обновить локальный индекс пакетов. Команда принимает все подтверждения (-y) во время обновления для уменьшения вмешательства пользователя.

sudo apt update -y
Updating the System Package

2. Затем выполните следующую команду для установки UFW (install uwf) на вашу систему, принимая все подтверждения (-y) во время установки.

sudo apt install ufw -y
Installing UFW on Ubuntu

3. Откройте файл конфигурации UFW (/etc/default/ufw) с помощью вашего любимого текстового редактора. UFW поддерживает IPv6, но вам нужно убедиться, что брандмауэр настроен на прием соединений по IPv6.

Если у вас включен только IPv4, вы все равно оставляете себя уязвимым к атакам по IPv6.

4. Прокрутите вниз до переменной IPV6 и установите значение yes, как показано ниже, затем сохраните изменения и выйдите из редактора

Enabling IPV6 in the UFW Configuration File

5. Наконец, выполните команду ниже, чтобы отключить и снова включить UFW. Команда перезапускает службу UFW, чтобы изменения вступили в силу.

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

sudo ufw disable && sudo ufw enable

Настройка политик по умолчанию для правил брандмауэра

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

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

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

sudo ufw default deny incoming
Denying Incoming Network Traffics

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

sudo ufw default allow outgoing
Allowing Outgoing Network Traffics

Разрешение подключений SSH в брандмауэре UFW

Вы только что настроили политики по умолчанию на вашем брандмауэре UFW для блокировки всех входящих трафиков, и правило “разрешить все – запретить все” – хорошая настройка для обычного пользователя. Но что, если вы управляете сервером? Вам нужно разрешить определенный трафик внутрь и наружу. Разрешение подключения SSH на вашем брандмауэре UFW поможет разрешить определенный трафик внутрь и наружу.

Вы настроите сервер SSH, который разрешает входящие подключения SSH на порт 22. Но почему порт 22, а не любой другой? На подобных системах UNIX SSH-демон слушает порт 22 по умолчанию, поэтому использование стандартного порта SSH – хорошая практика, которая облегчит вам жизнь.

1. Запустите нижеприведенные команды, чтобы установить сервер OpenSSH (установить openssh-server) на вашей системе и запустить сервер OpenSSH (start ssh).

sudo apt install openssh-server -y
sudo systemctl start ssh

2. Теперь выполните команду ниже, чтобы разрешить входящие подключения SSH. Без указания порта 22 будет достаточно, так как UFW знает, какой порт используется для SSH.

sudo ufw allow ssh
Allowing SSH connection

Файл /etc/services содержит список всех доступных служб в вашей системе. Откройте файл в вашем текстовом редакторе, прокрутите вниз до ssh и убедитесь, что номер порта (22) является частью описания службы, как показано ниже.

Previewing the /etc/services file

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

sudo ufw allow 22

3. Теперь выполните следующую команду для включения UFW.

sudo ufw enable

Введите Y в окне подтверждения, как показано ниже, и нажмите Enter, чтобы продолжить выполнение команды. Теперь UFW начнет фильтрацию пакетов на вашей системе.

Enabling UFW

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

## Отображает более подробную информацию, такую как интерфейс и 
## текущий прогресс пакета
sudo ufw status verbose
## Показывает каждое правило с номером и соответствующим статусом allow или deny 
## Нумерованный режим полезен, когда вы пытаетесь удалить набор правил здесь и там
sudo ufw status numbered

Если вы выполните команду с параметром verbose, вы увидите вывод, аналогичный приведенному ниже:

  • Status: active – Указывает, что брандмауэр в данный момент активен.
  • Logging: on (low) – Указывает, что UFW ведет журнал всех обрабатываемых брандмауэром пакетов.
  • По умолчанию: запрет (входящие), разрешение (исходящие), отключено (маршрутизация) – Это означает, что политика по умолчанию заключается в запрете всех входящих соединений и разрешении всех исходящих соединений.
  • Новые профили: пропустить – Это указывает на то, что брандмауэр в данный момент использует набор правил по умолчанию.
Checking verbose UFW firewall status

Если вы выполните команду с параметром numbered, то увидите вывод ниже. Вы можете увидеть список пронумерованных правил и их соответствующий статус РАЗРЕШИТЬ или ЗАПРЕТИТЬ.

Viewing the UW Firewall status in a numbered list

Разрешение подключений HTTP и HTTPS

На данный момент вы разрешили только подключения SSH на вашем брандмауэре UFW, но это ограничивает возможности вашего сервера. Разрешите другие типы соединений, такие как HTTP или HTTPS, и добавьте больше правил в брандмауэр UFW.

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

## Подключение HTTP использует порт 80 (небезопасно)
sudo ufw allow 80
sudo ufw allow http
Allowing HTTP connections

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

sudo ufw allow https
## Подключение HTTP использует порт 443 (безопасно)
sudo ufw allow 443
Allowing incoming HTTPS connections.

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

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

Запустите следующие команды, чтобы разрешить входящие соединения на портах с 5001 по 5009. Всегда укажите протокол (tcp или udp) после диапазона портов, к которым применяются правила, потому что не все порты используются обоими протоколами.

Например, обычно используемые TCP-порты включают 80 (HTTP) и 443 (HTTPS). Но общие порты UDP включают 53 (DNS) и 67/68 (DHCP).

sudo ufw allow 5001:5010/tcp
sudo ufw allow 5001:5010/udp
Allowing traffic on 5001:5010 port range

Запустите нижеприведенную команду, если вы предпочитаете разрешить соединения SSH с определенного IP-адреса. Команда разрешает соединения SSH (порт 22) только с IP-адреса 192.168.1.2.

sudo ufw allow from 192.168.1.2 to any port 22
Allowing SSH Connections from Specific IP Address

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

UFW также позволяет разрешить трафик только на определенном сетевом интерфейсе, например, eth0 – это первый Ethernet-интерфейс, а wlan0 – первый интерфейс Wi-Fi.

Запустите одну из следующих команд, чтобы разрешить соединения HTTP только на интерфейсах eth0 и wlan0.

## Разрешить соединение HTTP только на интерфейсе eth0
sudo ufw allow in on eth0 to any port 80
## Разрешить соединение HTTP только на интерфейсе wlan0
sudo ufw allow in on wlan0 to any port 80
Allowing traffic on a specific interface

Удаление правил брандмауэра UFW

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

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

sudo ufw status numbered

Запишите номер или имя правила в выводе, как показано ниже.

Previewing all the rules

2. Затем выполните следующую команду, чтобы удалить правило с номером 4, которое представляет собой диапазон портов 5001:5010/tcp.

sudo ufw delete 4
Deleting a Rule by Rule Number

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

sudo ufw delete allow http
Deleting a Rule by Rule Name (http)

4. Теперь выполните следующую команду, чтобы удалить правило, указав номер порта (443) со статусом разрешено.

sudo ufw delete allow 443
Deleting a Rule by Port Number (443)

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

sudo ufw status numbered

Как видно ниже, правила для диапазона портов 5001:5010/tcp, http и порта 443 теперь отсутствуют.

Checking the firewall rules

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

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

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

sudo ufw reset

Наберите «Y» и нажмите Enter, чтобы продолжить сброс вашего UFW брандмауэра.

Resetting UFW

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

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

sudo ufw enable

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

sudo ufw disable
Disabling UFW firewall

Заключение

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

Теперь, почему бы не расширить эти новые знания, изучив больше о Безопасности UFW и Docker на машине с Linux?

Source:
https://adamtheautomator.com/ufw-firewall/