Настройка правил фаервола (iptables) с помощью UFW
Uncomplicated Firewall (ufw) (англ. незамысловатый межсетевой экран) — это межсетевой экран, предназначенный быть простым в использовании. Он использует интерфейс командной строки, состоящий из небольшого числа простых команд, и использует iptables для конфигурации.
GUI for Uncomplicated Firewall (Gufw) (англ. графический интерфейс пользователя для незамысловатого межсетевого экрана) — это, как следует из его названия, графический интерфейс для UFW (Uncomplicated Firewall). Он был разработан для Ubuntu.
UFW предназначен для легкого, интуитивно понятного управления межсетевым экраном Ubuntu. Он поддерживает общие задачи, такие как разрешение или блокирование предварительно настроенных, общих P2P, или отдельных портов. Gufw работает на UFW, запускается на Ubuntu, а также на любой платформе, где доступны Python, GTK+ и UFW.
- fail2ban - защита от брутфорса
Шаг 1: Введения в UFW
Все современные решения Линукс по сетевой защите используют подсистему ядра Netfilter (сетевой фильтр).
Система пакетной фильтрации на уровне ядра неудобна для использования без пользовательского интерфейса для её управления. Для управления предназначен iptables. Когда пакет попадает на ваш сервер, он передается подсистеме Netfilter для одобрения, изменения или отказа на основе правил, которые она получает от интерфейса пользователя через iptables. Таким образом iptables - это все, что вам нужно для управления вашей сетевой защитой, но он сложен в настройке. Поэтому был разработан Uncomplicated Firewall (ufw) (незамысловатый межсетевой экран) для легкой настройки iptables. UFW предоставляет дружественный способ создания сетевой защиты для IPv4 и IPv6.
Шаг 2: Установить брандмауэр UFW
UFW устанавливается в Ubuntu по умолчанию во всех случаях, кроме варианта с минимальной установкой. Зачастую я заказываю сервера VPS/VDS с минимальной установкой Ubuntu, поэтому на нем нет iptables.
Если UFW нет, мы можем установить его с помощью команды:
sudo apt install ufw
Шаг 2.1: Конфигурационный файл UFW (опционально)
Конфигурационный файл UFW находится в /etc/default/ufw.
Вы можете в нем настроить, например поддержку правил для IPv6. Для поддержки правил IPv6 проверьте параметр IPV6=yes конфигурационного файла.
Политики безопасности по умолчанию также находятся в файле /etc/default/ufw и могут быть изменены с помощью следующей команды:
sudo ufw default deny incoming sudo ufw default allow outgoing
Первое правило запрещает все входящие подключения, второе разрешает исходящие.
Шаг 2.2: Создание профилей приложений для UFW (опционально)
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, чтобы брандмауэр увидел ваш файл.
Шаг 3: Первоначальная настройка сетевого фильтра при помощи UFW
Вы только что установили сервер Linux Ubuntu с поддержкой UFW, не важно на вашем компьютере или на виртуальном хостинге. Ниже описаны шаги которые нужно сделать для безопасности вашего сервера. Соответственно под ваши нужды правила фаервола в дальнейшем должны расширяться.
Закрываем все кроме доступа к сервер по протоколу SSH:
$ sudo ufw app list
Available applications:
OpenSSH
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Postfix
Разрешаем SSH и Nginx Full
$ sudo ufw allow OpenSSH $ sudo ufw allow 'Nginx Full'
Включаем 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, а все исходящие разращены.
Шаг 3.1: UFW правила для протокола ICMP
Протокол ICMP должен быть открыт в файрволе всегда!
ufw с одной стороны не позволяет указывать правила icmp с помощью команды интерфейса командной строки. Но он позволяет вам настраивать набор правил с помощью файлов правил, которые представляют собой файлы стиля iptables-restore.
ufw по умолчанию разрешает определенный icmp-трафик, включая эхо-ответ icmp, и это уже настроено по умолчанию в /etc/ufw/before.rules:
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
Если ваш хост не отвечает на пинг, посмотрите в этом файле, чтобы убедиться, что указанная выше строка присутствует, и если это не работает, посмотрите на пингующий хост и любые брандмауэры между ними.
В дистрибутивах Linux на базе Debian, которые поставляются с брандмауэром приложений UFW, вы можете блокировать сообщения ICMP, добавив следующее правило в файл /etc/ufw/before.rules, как показано в приведенном ниже отрывке кода.
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
Шаг 3.2: Общая настройка логирования UFW и конкретной службы
В Ufw есть опция сохранения логов — журнал событий. По умолчанию логи включены и используется уровень low, что можно проверить командой вывода статуса. Как видите в моем примере настройки по умолчанию Logging: on (low).
ufw status verbose Status: active Logging: on (low)
Для запуска, используйте команду:
ufw logging on
Ufw поддерживает несколько уровней логирования:
- off — отключен.
- low — регистрирует все заблокированные пакеты, не соответствующие заданной политике (с ограничением скорости), а также пакеты, соответствующие зарегистрированным правилам.
- medium — все то, что при значении low. Плюс все разрешенные пакеты, не соответствующие заданной политике, все недопустимые пакеты, и все новые соединения. Все записи ведутся с ограничением скорости.
- high — работает также как и medium. Плюс все пакеты с ограничением скорости.
- full — также как и high, но без ограниения скорости.
Чтобы задать уровень, укажите его как параметр:
ufw logging high
Файлы относящихся с логам ufw находятся в стандартной директории:
ls /var/log/ufw* /var/log/ufw.log /var/log/ufw.log.1 /var/log/ufw.log.2.gz
Вы можете добавить правило ведения журнала, если хотите отслеживать определенные службы. Я бы рекомендовал вам изменить уровень ведения журнала на low, чтобы в журналах было меньше беспорядка. Чтобы добавить правило ведения журнала, вам просто нужно следовать синтаксису команды:
ufw allow log service_name
Например, добавим правило журнала для порта 22 протокола SSH:
ufw allow log 22/tcp
Шаг 4: Настройка NAT (преобразование сетевых адресов) в UFW
Настройка NAT к сожалению не простая задача и нужно править конфигурационные файл UFW before.rules вручную. Чтобы не дублировать контент, все подробно описано в статье Настройка UFW (iptables) для OpenVPN.
Также не забываем включать преобразование NAT на уровне ядра Linux, описано в той же статье.
Расширенное использование UFW: лучшие команды брандмауэра UFW
- sudo ufw enable - активировать UFW для применения внесённых изменений.
- sudo ufw disable - деактивировать UFW.
- Посмотреть статус сетевой защиты - з варианта:
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
Простые варианты разрешения доступа с удаленного IP и открытие порта
ufw allow from xxx.xxx.xxx.xxx ufw allow 6000:6007/tcp ufw allow 6000:6007/udp
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
Как удалить правило в UFW
Для удаления правила используйте delete
sudo ufw delete deny proto tcp from any to any port 1080
Или еще проще удалять по номеру правила. Чтобы узнать номер правила в UFW используйте ключ numbered:
ufw status numbered Status: active To Action From -- ------ ---- [ 1] Nginx Full ALLOW IN Anywhere [ 2] Anywhere ALLOW IN 10.26.95.11 [ 3] Nginx Full (v6) ALLOW IN Anywhere (v6)
Выше мы узнали номера правило, теперь для удаления третьего правила используйте нижеприведенную команду. У вас потребуют подтвердить удаление правила.
ufw delete 3 Deleting: allow from 10.26.95.11 Proceed with operation (y|n)? y Rule deleted
Отключение или сброс UFW
Если вы уже настроили правила UFW, но решите начать заново, вы можете использовать эту команду.
ufw reset
Эта команда отключит UFW и удалит все ранее заданные правила, кроме правил по умолчанию. Правила по умолчанию (запрет входящих соединений и разрешение исходящих.) задаются командами:
sudo ufw default deny incoming sudo ufw default allow outgoing
Удаление правил UFW
Существует два способа удаления правил. Первый — по номеру правила. Выполните команду:
ufw status numbered tatus: active To Action From -- ------ ---- [ 1] 22 ALLOW IN Anywhere [ 2] 80 ALLOW IN Anywhere [ 3] 22 (v6) ALLOW IN Anywhere (v6) [ 4] 80 (v6) ALLOW IN Anywhere (v6)
После этого выполните команду ufw delete и укажите номер правила, которое следует удалить, например правило 2:
ufw delete 2
Второй способ заключается в том, что после команды ufw delete используется фактическое правило, например:
ufw delete allow http
или
ufw delete allow 80
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах