One place for hosting & domains

      Настройка брандмауэра с UFW в Ubuntu 20.04


      Введение

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

      В этом обучающем модуле вы научитесь настраивать брандмауэр с помощью UFW в Ubuntu 20.04

      Предварительные требования

      Для данного обучающего руководства вам потребуется следующее:

      UFW устанавливается в Ubuntu по умолчанию. Если вы удалили UFW, вы можете установить его с помощью команды sudo apt install ufw.

      Шаг 1 — Использование IPv6 с UFW (опционально)

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

      • sudo nano /etc/default/ufw

      Убедитесь, что параметр IPV6 имеет значение yes. Конфигурация должна выглядеть следующим образом:

      /etc/default/ufw excerpt

      IPV6=yes
      

      Сохраните и закройте файл. После активации UFW будет настроен для записи правил брандмауэра для IPv4 и для IPv6. Однако перед включением UFW нужно убедиться, что ваш брандмауэр настроен для подключения через SSH. Для начала настроим политики по умолчанию.

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

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

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

      • sudo ufw default deny incoming
      • sudo ufw default allow outgoing

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

      Шаг 3 — Разрешение подключений SSH

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

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

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

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

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

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

      Шаг 4 — Активация UFW

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

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

      Теперь брандмауэр включен. Запустите команду sudo ufw status verbose, чтобы посмотреть заданные правила. В остальной части этого обучающего модуля более подробно рассказывается об использовании UFW, например, о запрете различных видов соединений.

      Шаг 5 — Разрешение других соединений

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

      • соединения HTTP на порту 80, которые используются веб-серверами без шифрования, с помощью команды sudo ufw allow http или sudo ufw allow 80
      • соединения HTTPS на порту 443, которые используются веб-серверами с шифрованием, с помощью команды sudo ufw allow https или sudo ufw allow 443

      Помимо указания порта или службы есть другие способы разрешить другие соединения.

      Определенные диапазоны портов

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

      Например, чтобы разрешить соединения X11, которые используют порты 60006007, нужно использовать следующие команды:

      • sudo ufw allow 6000:6007/tcp
      • sudo ufw allow 6000:6007/udp

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

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

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

      • sudo ufw allow from 203.0.113.4

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

      • sudo ufw allow from 203.0.113.4 to any port 22

      Подсети

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

      • sudo ufw allow from 203.0.113.0/24

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

      • sudo ufw allow from 203.0.113.0/24 to any port 22

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

      Если вы хотите создать правило брандмауэра, применимое только к определенному сетевому интерфейсу, вы можете использовать для этого опцию «allow in on», а затем указать имя сетевого интерфейса.

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

      Output Excerpt

      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 (порт 80) для этого интерфейса с помощью следующей команды:

      • sudo ufw allow in on eth0 to any port 80

      Это позволит вашему серверу принимать запросы HTTP из публичной части интернета.

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

      • sudo ufw allow in on eth1 to any port 3306

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

      Шаг 6 — Запрет соединений

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

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

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

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

      Если вы захотите запретить все подключения с IP-адреса 203.0.113.4, вы можете использовать следующую команду:

      • sudo ufw deny from 203.0.113.4

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

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

      Знать процедуру удаления правил брандмауэра так же важно, как и знать процедуру их создания. Существует два разных способа указывать правила для удаления: по номеру правила или по фактическому правилу (так же, как правила задавались при их создании). Начнем с метода удаления по номеру правила, поскольку этот метод проще.

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

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

      Numbered Output:

      Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhere

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

      После этого откроется диалогового окна подтверждения удаления правила 2, разрешающего соединения HTTP. Если вы включили поддержку IPv6, вы можете также удалить соответствующее правило для IPv6.

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

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

      • sudo ufw delete allow http

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

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

      Шаг 8 — Проверка состояния и правил UFW

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

      Если UFW отключен (по умолчанию), вы увидите примерно следующее:

      Output

      Status: inactive

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

      Output

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

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

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

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

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

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

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

      Заключение

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

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



      Source link


      Leave a Comment