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

Вступление

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

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

Предпосылки

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

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

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

sudo apt install ufw

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

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

Это руководство написано с учетом IPv4, но будет работать и для IPv6, пока вы его включаете. Если на вашем сервере Debian включен IPv6, убедитесь, что UFW настроен на поддержку IPv6, чтобы он мог управлять правилами брандмауэра для IPv6 в дополнение к IPv4. Для этого откройте конфигурацию 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
Output Excerpt2: : <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-трафик (порт + 80 + `) с помощью этой команды:

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 - Удаление правил

Знать, как удалять правила брандмауэра, так же важно, как знать, как их создавать. Есть два разных способа указать, какие правила удалять: по номеру правила или по фактическому правилу (аналогично тому, как правила были указаны при их создании). Мы начнем с метода * delete by rule number *, потому что он проще.

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

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

sudo ufw status numbered
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, например так:

sudo ufw delete

Это покажет запрос подтверждения и затем удалит правило 2, разрешающее HTTP-соединения. Обратите внимание, что если у вас включен 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
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

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