UFW (Uncomplicated Firewall) настройка

Uncomplicated Firewall (ufw) (англ. незамысловатый межсетевой экран) — это межсетевой экран, предназначенный быть простым в использовании. Он использует интерфейс командной строки, состоящий из небольшого числа простых команд, и использует Правила iptables для конфигурации.

GUI for Uncomplicated Firewall (Gufw) (англ. графический интерфейс пользователя для незамысловатого межсетевого экрана) — это, как следует из его названия, графический интерфейс для UFW (Uncomplicated Firewall). Он был разработан для Хостинг VPS/VDS на Ubuntu.

UFW предназначен для легкого, интуитивно понятного управления межсетевым экраном Ubuntu. Он поддерживает общие задачи, такие как разрешение или блокирование предварительно настроенных, общих P2P, или отдельных портов. Gufw работает на UFW, запускается на Ubuntu, а также на любой платформе, где доступны Python, GTK+ и UFW.

Все современные решения Линукс по сетевой защите используют подсистему ядра Netfilter (сетевой фильтр).

Система пакетной фильтрации на уровне ядра неудобна для использования без пользовательского интерфейса для её управления. Для управления предназначен iptables. Когда пакет попадает на ваш сервер, он передается подсистеме Netfilter для одобрения, изменения или отказа на основе правил, которые она получает от интерфейса пользователя через iptables. Таким образом iptables - это все, что вам нужно для управления вашей сетевой защитой, но он сложен в настройке. Поэтому был разработан Uncomplicated Firewall (ufw) (незамысловатый межсетевой экран) для легкой настройки iptables. UFW предоставляет дружественный способ создания сетевой защиты для IPv4 и IPv6.

UFW устанавливается в Ubuntu по умолчанию во всех случаях, кроме варианта с минимальной установкой. Зачастую я заказываю сервера VPS/VDS с минимальной установкой Ubuntu, поэтому на нем нет iptables.

Если UFW нет, мы можем установить его с помощью команды:

sudo apt install ufw

Конфигурационный файл UFW находится в /etc/default/ufw.

Вы можете в нем настроить, например поддержку правил для IPv6. Для поддержки правил IPv6 проверьте параметр IPV6=yes конфигурационного файла.

Политики безопасности по умолчанию также находятся в файле /etc/default/ufw и могут быть изменены с помощью следующей команды:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Первое правило запрещает все входящие подключения, второе разрешает исходящие.

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

Посмотреть созданные профили можно при помощи команды:

sudo ufw app list

Просмотр детальной информации, например о приложении OpenSSH:

$ sudo ufw app info OpenSSH
Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.
 
Port:
  22/tcp

Все профили создаются вручную. Для создания профиля приложения перейдите в директорию /etc/ufw/applications.d. Создайте текстовый файл с любым названием и вставьте в него строки следующего формата:

[<название_профиля>]
title=<заголовок>
description=<краткое описание>
ports=<список портов>/<протокол>

После создания своего приложения запустите команду ufw reload, чтобы брандмауэр увидел ваш файл.

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

Закрываем все кроме доступа к сервер по протоколу SSH:

$ sudo ufw app list
Available applications:
  OpenSSH

Разрешаем SSH

$ sudo ufw allow OpenSSH

Включаем ufw

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

Проверяем что получилось:

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
 
To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)

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

  • sudo ufw enable - активировать UFW для применения внесённых изменений.
  • sudo ufw disable - деактивировать UFW.
  • sudo ufw reset - Отключение или сброс UFW. Если вы уже настроили правила UFW, но решите начать заново, вы можете использовать эту команду. Эта команда отключит UFW и удалит все ранее заданные правила, кроме правил по умолчанию. Правила по умолчанию (запрет входящих соединений и разрешение исходящих.) задаются командами:
sudo ufw default deny incoming
sudo ufw default allow outgoing
  • Посмотреть статус сетевой защиты - з варианта:
sudo ufw status
sudo ufw status verbose
sudo ufw status numbered
Status: active

To                         Action      From
--                         ------      ----
22                         LIMIT       Anywhere
443                        ALLOW       Anywhere
80                         ALLOW       Anywhere
22 (v6)                    LIMIT       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
  • Возможно разрешить доступ для определенных хостов или сетей. Следующий пример показывает как разрешить доступ хосту с ip адресом 192.168.0.2 на хост с любым ip по протоколу SOCKS. Если заменить 192.168.0.2 на 192.168.0.0/24 то мы разрешим протокол для любого хоста этой локальной сети. Добавление опции –dry-run команде ufw выведет список правил, но не применит их.
    sudo ufw --dry-run allow proto tcp from 192.168.0.2 to any port 1080
    sudo ufw allow proto tcp from 192.168.0.2 to any port 1080
  • Правила могут быть добавлены с использованием нумерованного формата:
    sudo ufw insert 1 allow proto tcp from 37.73.96.0/20 to any port 1080
  • Для удаления правила используйте delete:
    sudo ufw delete deny proto tcp from any to any port 1080

В дистрибутивах Linux на базе Debian, которые поставляются с брандмауэром приложений UFW, вы можете блокировать сообщения ICMP, добавив следующее правило в файл /etc/ufw/before.rules, как показано в приведенном ниже отрывке кода.

-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
Skyeng