Поиск по сайту:

Как настроить брандмауэр с помощью UFW в Debian 10


Введение

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

В этом руководстве показано, как настроить брандмауэр с помощью UFW в Debian 10.

Предпосылки

Чтобы следовать этому руководству, вам понадобится один сервер Debian 10 с пользователем без полномочий root sudo, который вы можете настроить, выполнив шаги 1–3 в руководстве по начальной настройке сервера с Debian 10.

Шаг 1 – Установка UFW

Debian не устанавливает UFW по умолчанию. Если вы следовали всему руководству по начальной настройке сервера, вы установили и включили UFW. Если нет, установите его сейчас, используя apt:

  1. sudo apt install ufw

Вы настроите и включите UFW, выполнив следующие шаги.

Шаг 2. Использование IPv6 с UFW (необязательно)

Этот учебник написан с учетом IPv4, но будет работать и для IPv6, если вы включите его. Если на вашем сервере Debian включен IPv6, вы должны убедиться, что UFW настроен на поддержку IPv6. Это гарантирует, что UFW будет управлять правилами брандмауэра для IPv6 в дополнение к IPv4. Чтобы настроить это, откройте файл конфигурации UFW /etc/default/ufw с помощью nano или вашего любимого редактора:

  1. sudo nano /etc/default/ufw

Найдите IPV6 в файле и убедитесь, что значение равно yes:

IPV6=yes

Сохраните и закройте файл. Если вы используете nano, нажмите CTRL+X, затем Y, затем ENTER, чтобы сохранить и выйти из файла.

Теперь, когда UFW включен, он будет настроен на запись правил брандмауэра IPv4 и IPv6. Однако перед включением UFW вы должны убедиться, что ваш брандмауэр настроен на разрешение подключения через SSH. Начните с установки политик по умолчанию.

Шаг 3 — Настройка политик по умолчанию

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

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

  1. sudo ufw default deny incoming
  2. sudo ufw default allow outgoing

Вы получите следующий вывод:

Output
Default incoming policy changed to 'deny' (be sure to update your rules accordingly) Default outgoing policy changed to 'allow' (be sure to update your rules accordingly)

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

Шаг 4 — Разрешение SSH-соединений

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

Чтобы настроить сервер для разрешения входящих SSH-соединений, используйте эту команду:

  1. sudo ufw allow ssh

Это создаст правила брандмауэра, разрешающие все подключения к порту 22, который по умолчанию прослушивается демоном SSH. UFW знает, какой порт привязан к allow ssh, потому что он указан как служба в файле /etc/services.

Однако на самом деле вы можете написать эквивалентное правило, указав порт вместо имени службы. Например, эта команда дает тот же результат, что и приведенная выше:

  1. sudo ufw allow 22

Если вы настроили демон SSH для использования другого порта, вам нужно будет указать соответствующий порт. Например, если ваш SSH-сервер прослушивает порт 2222, вы можете использовать ту же команду, но заменить 22 на 2222.

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

Шаг 5 — Включение UFW

Чтобы включить UFW, используйте эту команду:

  1. sudo ufw enable

Вы получите предупреждение о том, что команда может нарушить существующие SSH-соединения. Вы уже настроили правило брандмауэра, разрешающее SSH-подключения, поэтому можно продолжить. Ответьте на приглашение с помощью y и нажмите ENTER.

Теперь брандмауэр активен. Чтобы просмотреть установленные вами правила, выполните следующую команду:

  1. sudo ufw status verbose

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

Шаг 6 — Разрешение других подключений

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

Вы можете сделать это для HTTP на порту 80, который используют незашифрованные веб-серверы. Чтобы разрешить этот тип трафика, введите:

  1. sudo ufw allow http

Вы также можете сделать это для HTTPS через порт 443, который используют зашифрованные веб-серверы. Чтобы разрешить этот тип трафика, введите:

  1. sudo ufw allow https

В обоих сценариях также будет работать указание портов: HTTP — 80, а HTTPS — 443. Однако есть и другие способы разрешить соединения, помимо указания порта или известной службы. Это обсуждается далее.

Конкретные диапазоны портов

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

Например, чтобы разрешить соединения X11, использующие порты 6000-6007, используйте следующие команды:

  1. sudo ufw allow 6000:6007/tcp
  2. sudo ufw allow 6000:6007/udp

При указании диапазонов портов с помощью UFW необходимо указать протокол (tcp или udp), к которому должны применяться правила. Об этом не упоминалось ранее, потому что если не указывать протокол, автоматически разрешаются оба протокола, что в большинстве случаев допустимо.

Конкретные IP-адреса

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

  1. sudo ufw allow from 203.0.113.4

Вы также можете указать конкретный порт, к которому разрешено подключаться IP-адресу, добавив to any port, за которым следует номер порта. Например, если вы хотите разрешить 203.0.113.4 подключаться к порту 22 (SSH), используйте следующую команду:

  1. sudo ufw allow from 203.0.113.4 to any port 22

Подсети

Если вы хотите разрешить подсеть IP-адресов, вы можете сделать это, используя нотацию CIDR для указания сетевой маски. Например, если вы хотите разрешить все IP-адреса в диапазоне от 203.0.113.1 до 203.0.113.254, вы можете использовать эту команду:

  1. sudo ufw allow from 203.0.113.0/24

Аналогичным образом вы также можете указать порт назначения, к которому разрешено подключаться подсети 203.0.113.0/24. Опять же, используя порт 22 (SSH) в качестве примера:

  1. sudo ufw allow from 203.0.113.0/24 to any port 22

Подключения к определенному сетевому интерфейсу

Если вы хотите создать правило брандмауэра, которое применяется только к определенному сетевому интерфейсу, вы можете сделать это, указав разрешить в, а затем имя сетевого интерфейса.

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

  1. ip addr
Output
. . . 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state . . . 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default . . .

Выделенный вывод указывает имена сетевых интерфейсов. Обычно они имеют такие имена, как eth0 или enp3s2.

Например, если ваш сервер имеет общедоступный сетевой интерфейс с именем eth0, вы можете разрешить HTTP-трафик с помощью этой команды:

  1. sudo ufw allow in on eth0 to any port 80

Это позволит вашему серверу получать HTTP-запросы из общедоступного Интернета.

Или, если вы хотите, чтобы сервер базы данных MySQL (порт 3306) прослушивал соединения на частном сетевом интерфейсе eth1, вы можете использовать эту команду:

  1. sudo ufw allow in on eth1 to any port 3306

Это позволит другим серверам в вашей частной сети подключаться к вашей базе данных MySQL.

Шаг 7 — Отказ в подключении

Если вы не изменили политику по умолчанию для входящих подключений, UFW настроен на запрет всех входящих подключений. Как правило, это упрощает процесс создания политики безопасного брандмауэра, требуя от вас создания правил, которые явно разрешают определенные порты и IP-адреса.

Однако иногда вы захотите запретить определенные соединения на основе исходного IP-адреса или подсети, возможно, потому, что вы знаете, что ваш сервер атакуется оттуда. Кроме того, если вы хотите изменить политику входящего трафика по умолчанию на разрешить (что не рекомендуется), вам потребуется создать правила deny для любых служб или IP-адресов, которые вы не используете. Не хочу разрешать подключения.

Чтобы написать правила deny, вы можете использовать описанные выше команды, заменив allow на deny.

Например, чтобы запретить HTTP-соединения, вы можете использовать эту команду:

  1. sudo ufw deny http

Или, если вы хотите запретить все соединения с 203.0.113.4, вы можете использовать эту команду:

  1. sudo ufw deny from 203.0.113.4

Теперь вы можете узнать, как реализовать правила удаления.

Шаг 8 — Удаление правил

Знать, как удалять правила брандмауэра, так же важно, как и уметь их создавать. Есть два способа указать, какие правила удалить: по номеру правила или по самому правилу. Это похоже на то, как правила были указаны при их создании.

По номеру правила

Если вы используете номер правила для удаления правил брандмауэра, первое, что вам нужно сделать, это получить список ваших правил брандмауэра. Команда UFW status имеет параметр numbered, который отображает числа рядом с каждым правилом:

  1. sudo ufw status numbered
Output
Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhere

Если вы решите удалить правило 2, которое разрешает HTTP-соединения через порт 80, вы можете указать это в следующей команде UFW delete :

  1. sudo ufw delete 2

Появится запрос подтверждения, на который вы можете ответить y/n. Если ввести y, правило 2 будет удалено. Обратите внимание, что если у вас включен IPv6, вы также захотите удалить соответствующее правило IPv6.

По фактическому правилу

Альтернативой номерам правил является указание фактического правила для удаления. Например, если вы хотите удалить правило allow http, вы можете написать его так:

  1. sudo ufw delete allow http

Вы также можете указать правило с allow 80 вместо имени службы:

  1. sudo ufw delete allow 80

Этот метод удалит правила IPv4 и IPv6, если они существуют.

Шаг 9 — Проверка статуса и правил UFW

В любой момент вы можете проверить состояние UFW с помощью этой команды:

  1. sudo ufw status verbose

Если UFW отключен, что является значением по умолчанию, вывод будет таким:

Output
Status: inactive

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

Output
Status: active To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere

Используйте команду status, если вы хотите проверить, как UFW настроил брандмауэр.

Шаг 10 — Отключение или сброс UFW (необязательно)

Если вы решите, что не хотите использовать UFW, вы можете отключить его с помощью этой команды:

  1. sudo ufw disable

Любые правила, созданные с помощью UFW, больше не будут активны. Вы всегда можете запустить sudo ufw enable, если вам нужно активировать его позже.

Если у вас уже настроены правила UFW, но вы решили начать заново, вы можете использовать команду сброса:

  1. sudo ufw reset

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

Заключение

Теперь ваш брандмауэр настроен на разрешение (как минимум) SSH-соединений. Обязательно разрешите любые другие входящие соединения, необходимые вашему серверу, а также ограничьте ненужные соединения. Это гарантирует, что ваш сервер будет функциональным и безопасным.

Чтобы узнать о более распространенных конфигурациях UFW, ознакомьтесь с этим руководством по UFW Essentials: общие правила и команды брандмауэра.