Ufw - Просто и быстро настраиваем фаерволл в Linux для дома
Фаерволл является одним из основных инструментов для фильтрации входящего и исходящего трафика. С помощью него можно повысить безопасность системы и ограничить нежелательные подключения.
В данной статье не будет гайда по полноценной настройке фаерволла для серверных машин. Здесь я расскажу о том, как можно просто и быстро настроить фаерволл ufw на домашнем компьютере, чтобы защититься от стандартных хакерских атак. Если вы хотите более подробно изучить iptables или nftables, то эта статья вам явно не в помощь.
Зачем вообще нужен фаерволл на домашнем ПК?
Фаерволл позволяет ограничиться от нежелательных подключений (как входящих, так и исходящих). Таким образом злоумышленникам будет в разы сложнее подключиться к вашему компьютеру, даже если они получат доступ к локальной сети. Вы сможете защитить запущенные службы и запретить любые подозрительные соединения.
Для начала предлагаю рассмотреть самый простой способ настройки фаерволла - через gufw. Это программа с графическим интерфейсом GTK для ufw, которая позволяет практически без усилий запустить и настроить фаерволл на компьютере.
Установка в Debian:sudo apt install gufw
Установка в Arch:sudo pacman -S gufw
Для запуска введите в терминале gufw или найдите программу через меню вашей среды рабочего стола. Вам будет необходимо ввести пароль администратора, т.к. для настройки фаерволла требуются привелегии root. Вас встретит примерно такое окно:
Для начала выбираем профиль. В комплекте с программой идут следующие профили:
Настроим профиль Home. Это профиль для использования компьютера в домашней сети. Включаем профиль и переходим к настройке. В первую очередь блокируем входящий и исходящий трафик:
Проверим работоспособность:ping archlinux.orgcurl https://2ip.ru
Теперь любой трафик блокируется. Отлично, нам это и было нужно. Мы добились строгой блокировки. Далее начинаем создавать собственные правила. Для этого нажимаем на соответствующую кнопку:
Для начала нам нужно разрешить 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 enablesudo 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 <номер_правила>