ИБ (Информационная Безопасность)
October 17

Ufw - Просто и быстро настраиваем фаерволл в Linux для дома

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

В данной статье не будет гайда по полноценной настройке фаерволла для серверных машин. Здесь я расскажу о том, как можно просто и быстро настроить фаерволл ufw на домашнем компьютере, чтобы защититься от стандартных хакерских атак. Если вы хотите более подробно изучить iptables или nftables, то эта статья вам явно не в помощь.

Зачем вообще нужен фаерволл на домашнем ПК?
Фаерволл позволяет ограничиться от нежелательных подключений (как входящих, так и исходящих). Таким образом злоумышленникам будет в разы сложнее подключиться к вашему компьютеру, даже если они получат доступ к локальной сети. Вы сможете защитить запущенные службы и запретить любые подозрительные соединения.

Для начала предлагаю рассмотреть самый простой способ настройки фаерволла - через gufw. Это программа с графическим интерфейсом GTK для ufw, которая позволяет практически без усилий запустить и настроить фаерволл на компьютере.

Установка в Debian:
sudo apt install gufw

Установка в Arch:
sudo pacman -S gufw

Для запуска введите в терминале gufw или найдите программу через меню вашей среды рабочего стола. Вам будет необходимо ввести пароль администратора, т.к. для настройки фаерволла требуются привелегии root. Вас встретит примерно такое окно:

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

  • Home
  • Office
  • Public

Настроим профиль Home. Это профиль для использования компьютера в домашней сети. Включаем профиль и переходим к настройке. В первую очередь блокируем входящий и исходящий трафик:

Проверим работоспособность:
ping archlinux.org
curl https://2ip.ru

Теперь любой трафик блокируется. Отлично, нам это и было нужно. Мы добились строгой блокировки. Далее начинаем создавать собственные правила. Для этого нажимаем на соответствующую кнопку:

Для начала нам нужно разрешить DNS. Для этого выставляем следующие настройки:

  • Policy: Allow
  • Direction: Both
  • Application: DNS

С помощью Category, Subcategory и Application filter можно более быстро находить нужные приложения, для которых мы хотим установить правила.

Нажимаем кнопку Add, чтобы добавить правило и проверяем DNS:

DNS работает, но ICMP все еще блокируется. Таким образом мы можем создавать правила для любых приложений. Чтобы разрешить работу с веб-сайтами, нам нужно разрешить правила для http и https:

Проверяем:

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

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

Чтобы фаерволл автоматически запускался при старте системы, включите службу ufw:
sudo systemctl enable ufw.service

Теперь рассмотрим консольный вариант. Посмотрим справку по ufw:
ufw --help

Как видно на скриншоте, у программы не очень то и много опций, соответственно и ее использование не является чем-то очень сложным. Мы можем проверить текущий статус фаерволла:
sudo ufw status

Или более подробно:
sudo ufw status verbose

С помощью ufw можно включить или отключить фаерволл:
sudo ufw enable
sudo ufw disable

Файл /etc/default/ufw содержит в себе политики безопасности по умолчанию. Изменить политики по умолчанию можно следующим образом:
sudo ufw default deny incoming - блокировать входящий трафик;
sudo ufw default allow outgoing - разрешить исходящий трафик.

Базовые профили приложений находятся в /etc/ufw/applications.d. Посмотреть список всех профилей можно так:

Посмотреть информацию о профиле (на примере SSH):
sudo ufw app info SSH

Чтобы создать свой профиль, перейдите в каталог /etc/ufw/applications.d и создайте файл по данному шаблону:

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

Например:

[App1]
title=Test profile
description=My web server profile.
ports=80,443/udp

Чтобы файл был виден фаерволлу, перезагрузите его:
sudo ufw reload

Далее разрешите доступ профилю:
`sudo ufw allow App1

Вот так можно открыть порт для входящих подключений:
sudo ufw allow <порт>/<протокол>

Также можно открывать порты по именам конкретных сервисов, например:
sudo ufw allow http

Чтобы закрыть порт используйте вместо allow deny:
sudo ufw deny <порт>/<протокол>

Чтобы разрешить соединение ко всем портам сервера с конкретного IP-адреса, используйте следующую команду:
sudo ufw allow from <IP-адрес>

Также можно разрешить подключаться к конкретному порту с определенного IP-адреса:
sudo ufw allow from <IP-адрес> to any port <порт>

Чтобы запретить подключение с конкретного IP:
sudo ufw deny from <IP-адрес>

Также вы можете настроить подключение к конкретному порту определенного сетевого интерфейса:
sudo ufw allow in on <имя интерфейса> to any port <порт>

Посмотреть текущий список правил:
sudo ufw status numbered

Удалить правило:
sudo ufw delete <номер_правила>


Мой Telegram

Мой GitHub

Поддержать автора донатом