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

Вступление

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

Из этого туториала вы узнаете, как настроить брандмауэр с UFW в Debian 10.

Предпосылки

Чтобы следовать этому руководству, вам понадобится один сервер Debian 10 с пользователем «+ sudo +» без полномочий root, который можно настроить, выполнив шаги 1-3 в https://www.digitalocean.com/community/tutorials/ initial-server-setup-with-debian-10 [Начальная настройка сервера с учебником Debian 10].

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

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

sudo apt install ufw

Мы настроим UFW и включим его в следующих шагах.

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

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

sudo nano /etc/default/ufw

Затем убедитесь, что значение + IPV6 + равно + yes +. Это должно выглядеть так:

/ etc / default / ufw выдержка

IPV6=

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

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

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

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

sudo ufw default deny incoming
sudo ufw default allow outgoing

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

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

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

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

sudo ufw allow ssh

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

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

sudo ufw allow 22

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

sudo ufw allow

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

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

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

sudo ufw enable

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

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

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

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

  • HTTP на порт + 80 +, который используется незашифрованными веб-серверами. Чтобы разрешить этот тип трафика, вы должны набрать + sudo ufw allow http + или + sudo ufw allow 80 +.

  • HTTPS на порт + 443 +, который используется зашифрованными веб-серверами. Чтобы разрешить этот тип трафика, вы должны набрать + sudo ufw allow https + или + sudo ufw allow 443 +.

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

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

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

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

sudo ufw allow :/tcp
sudo ufw allow :/udp

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

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

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

sudo ufw allow from

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

sudo ufw allow from  to any port

Subnets

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

sudo ufw allow from /

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

sudo ufw allow from / to any port 22

Соединения с определенным сетевым интерфейсом

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

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

ip addr
Output2: : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: : <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .

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

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

sudo ufw allow in on  to any port

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

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

sudo ufw allow in on  to any port

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

Шаг 7 - Запрет подключения

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

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

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

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

sudo ufw deny http

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

sudo ufw deny from

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

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

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

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

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

sudo ufw status numbered
OutputStatus: active

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

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

sudo ufw delete

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

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

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

sudo ufw delete

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

sudo ufw delete

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

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

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

sudo ufw status verbose

Если UFW отключен, что по умолчанию, вы увидите что-то вроде этого:

OutputStatus: inactive

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

OutputStatus: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere

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

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

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

sudo ufw disable

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

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

sudo ufw reset

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

Заключение

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

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

Related