Введение
UFW, или Uncomplicated Firewall, – это упрощенный интерфейс управления брандмауэром, который скрывает сложность технологий фильтрации пакетов более низкого уровня, таких как iptables
и nftables
. Если вы хотите начать обеспечивать безопасность своей сети и не уверены, какой инструмент использовать, UFW может быть правильным выбором для вас.
Этот учебник покажет вам, как настроить брандмауэр с помощью UFW в Debian 11.
Предварительные требования
Для выполнения этого учебника вам понадобится один сервер Debian 11 с пользователем sudo
не root, который вы можете настроить, следуя Шагам 1 по 3 в учебнике Начальная настройка сервера с Debian 11.
Шаг 1 – Установка UFW
Debian по умолчанию не устанавливает UFW. Если вы следовали всему руководству по начальной настройке сервера, то уже установили и включили UFW. Если нет, установите его сейчас, используя apt
:
Вы настроите UFW и включите его в следующих шагах.
Шаг 2 — Использование IPv6 с UFW (По желанию)
Это руководство написано с учетом IPv4, но будет работать и для IPv6, если вы его включите. Если ваш сервер Debian имеет включенный IPv6, вам следует убедиться, что UFW настроен на поддержку IPv6. Это гарантирует, что UFW будет управлять правилами брандмауэра для IPv6, кроме IPv4. Чтобы настроить это, откройте файл конфигурации UFW /etc/default/ufw
с помощью nano
или вашего любимого редактора:
Найдите IPV6
в файле и убедитесь, что значение yes
:
IPV6=yes
Сохраните и закройте файл. Если вы используете nano
, нажмите CTRL+X
, затем Y
, затем ENTER
, чтобы сохранить и выйти из файла.
Теперь, когда UFW включен, он будет настроен на запись правил брандмауэра как для IPv4, так и для IPv6. Однако прежде чем включить UFW, убедитесь, что ваш брандмауэр настроен на разрешение подключения через SSH. Начните с установки политик по умолчанию.
Шаг 3 — Настройка Политик По Умолчанию
Если вы только начинаете работу с вашим брандмауэром, первые правила, которые следует определить, это ваши политики по умолчанию. Эти правила обрабатывают трафик, который явно не соответствует никаким другим правилам. По умолчанию UFW установлен на отклонение всех входящих соединений и разрешение всех исходящих соединений. Это означает, что любой попытке достичь вашего сервера не удастся, в то время как любое приложение внутри сервера сможет достигать внешнего мира.
Установите свои правила UFW обратно по умолчанию, чтобы быть уверенным, что вы сможете следовать этому руководству. Чтобы установить значения по умолчанию, используемые UFW, используйте эти команды:
Вы получите вывод, подобный следующему:
OutputDefault 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 используйте эту команду:
Это создаст правила брандмауэра, которые разрешат все соединения на порту 22
, который является портом, на который по умолчанию слушает демон SSH. UFW знает, какой порт связан с разрешить ssh
, потому что он указан как служба в файле /etc/services
.
Однако вы также можете написать эквивалентное правило, указав порт вместо названия службы. Например, эта команда даст тот же результат, что и приведенная выше:
Если вы настроили свой демон SSH на использование другого порта, вам придется указать соответствующий порт. Например, если ваш SSH-сервер слушает порт 2222
, вы можете использовать эту же команду, но заменить 22
на 2222
.
Теперь, когда ваш брандмауэр настроен на разрешение входящих соединений по SSH, вы можете его включить.
Шаг 5 – Включение UFW
Чтобы включить UFW, используйте эту команду:
Вы получите предупреждение, которое сообщит о возможном нарушении существующих SSH-соединений. Вы уже настроили правило брандмауэра, которое разрешает SSH-соединения, поэтому продолжать должно быть безопасно. Ответьте на запрос, введя y
и нажав ENTER
.
Брандмауэр теперь активен. Чтобы увидеть установленные вами правила, выполните эту команду:
Остальная часть этого руководства посвящена более детальному изучению использования UFW, включая разрешение и отклонение различных типов соединений.
Шаг 6 — Разрешение других соединений
На данном этапе вам следует разрешить все остальные соединения, необходимые для нормального функционирования вашего сервера. Какие именно соединения разрешать зависит от ваших конкретных потребностей. Вы уже знаете, как написать правила, разрешающие соединения на основе имени службы или порта; вы это сделали для SSH на порту 22
.
Вы можете сделать это для HTTP на порту 80
, который используется нешифрованными веб-серверами. Чтобы разрешить этот тип трафика, вы бы набрали:
Вы также можете сделать это для HTTPS на порту 443
, который используется шифрованными веб-серверами. Чтобы разрешить этот тип трафика, вы бы набрали:
В обоих сценариях также можно указать порты: HTTP — 80
, HTTPS — 443
. Например:
Однако есть и другие способы разрешения соединений, помимо указания порта или известной службы. Об этом будет рассказано далее.
Конкретные диапазоны портов
Вы можете указать диапазоны портов с помощью UFW. Например, некоторые приложения используют несколько портов вместо одного.
Например, чтобы разрешить соединения X11
, которые используют порты 6000
–6007
, используйте эти команды:
При указании диапазонов портов с UFW вы должны указать протокол (tcp
или udp
), к которому должны применяться правила. Об этом не упоминалось ранее, потому что неуказание протокола автоматически разрешает оба протокола, что в большинстве случаев нормально.
Конкретные IP-адреса
При работе с UFW вы также можете указывать IP-адреса. Например, если вы хотите разрешить соединения с определенного IP-адреса, такого как рабочий или домашний IP-адрес 203.0.113.4
, вам нужно указать from
, а затем IP-адрес:
Вы также можете указать конкретный порт, к которому разрешено подключение по IP-адресу, добавив to any port
, за которым следует номер порта. Например, если вы хотите разрешить 203.0.113.4
подключаться к порту 22
(SSH), используйте эту команду:
Подсети
Если вы хотите разрешить подсеть IP-адресов, вы можете сделать это, используя нотацию CIDR для указания маски подсети. Например, если вы хотите разрешить все IP-адреса в диапазоне от 203.0.113.1
до 203.0.113.254
, вы можете использовать эту команду:
Точно так же вы можете указать порт назначения, к которому разрешено подключение подсети 203.0.113.0/24
. Снова используя порт 22
(SSH) в качестве примера:
Подключения к конкретному сетевому интерфейсу
Если вы хотите создать правило брандмауэра, которое применяется только к определенному сетевому интерфейсу, вы можете сделать это, указав allow in on
, а затем имя сетевого интерфейса.
Будет полезно просмотреть ваши сетевые интерфейсы перед продолжением. Для этого используйте эту команду:
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 с помощью этой команды:
Это позволит вашему серверу получать запросы HTTP из общедоступного интернета.
Или, если вы хотите, чтобы сервер базы данных MySQL (порт 3306
) прослушивал соединения на частном сетевом интерфейсе eth1
, вы можете использовать эту команду:
Это позволит другим серверам в вашей частной сети подключаться к вашей базе данных MySQL.
Шаг 7 — Отклонение соединений
Если вы не изменили политику по умолчанию для входящих соединений, UFW настроен на отклонение всех входящих соединений. Обычно это упрощает процесс создания безопасной политики брандмауэра, требуя создания правил, которые явно разрешают определенные порты и IP-адреса.
Иногда вам может потребоваться отклонить определенные соединения на основе IP-адреса и подсети источника, возможно, потому, что вы знаете, что ваш сервер атакуется оттуда. Кроме того, если вы хотите изменить вашу политику входящих соединений на разрешить
(что не рекомендуется), вам нужно будет создать правила отклонить
для любых служб или IP-адресов, для которых вы не хотите разрешать соединения.
Чтобы написать правила отклонить
, вы можете использовать команды, описанные выше, заменив разрешить
на отклонить
.
Например, чтобы запретить соединения HTTP, вы можете использовать эту команду:
Или если вы хотите запретить все соединения с 203.0.113.4
, вы можете использовать эту команду:
Теперь вы можете узнать, как реализовать правила удаления.
Шаг 8 — Удаление Правил
Знание того, как удалять правила брандмауэра, так же важно, как и знание того, как их создавать. Существуют два способа указать, какие правила удалить: по номеру правила или по самому правилу. Это аналогично тому, как правила были указаны при их создании.
По Номеру Правила
Если вы используете номер правила для удаления правил брандмауэра, первое, что вам следует сделать, это получить список ваших правил брандмауэра. Команда 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
:
Это вызовет окно подтверждения, на которое вы можете ответить y/n
. Ввод y
затем удалит правило 2
. Обратите внимание, что если у вас включен IPv6, вы захотите удалить соответствующее правило IPv6 также.
По Фактическому Правилу
Альтернативой номерам правил является указание конкретного правила для удаления. Например, если вы хотите удалить правило allow http
, вы можете написать это следующим образом:
Вы также можете указать правило с помощью allow 80
вместо имени службы:
Этот метод удалит как IPv4, так и IPv6 правила, если они существуют.
Шаг 9 — Проверка статуса и правил UFW
В любое время вы можете проверить статус UFW с помощью этой команды:
Если UFW отключен, что является значением по умолчанию, вывод будет следующим:
OutputStatus: inactive
Если UFW активен, что должно быть, если вы следовали Шагу 3, вывод будет сообщать, что он активен, и перечислит любые правила, которые вы установили. Например, если брандмауэр настроен на разрешение подключений SSH (порт 22
) откуда угодно, вывод может выглядеть примерно так:
OutputStatus: active
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
Используйте команду status
, если вы хотите проверить, как UFW настроил брандмауэр.
Шаг 10 — Отключение или сброс UFW (по желанию)
Если вы решите не использовать UFW, вы можете отключить его с помощью этой команды:
Любые правила, которые вы создали с помощью UFW, больше не будут активными. Вы всегда можете выполнить sudo ufw enable
, если вам нужно активировать их позже.
Если у вас уже настроены правила UFW, но вы решили начать сначала, вы можете использовать команду сброса:
Это отключит UFW и удалит все ранее определенные правила. Имейте в виду, что значения по умолчанию не изменятся на свои исходные настройки, если вы их когда-либо изменяли. Это даст вам свежий старт с UFW.
Заключение
Ваша брандмауэр теперь настроена на разрешение (по крайней мере) подключений SSH. Обязательно разрешите любые другие входящие соединения, которые нужны вашему серверу, ограничивая при этом ненужные подключения. Это обеспечит функциональность и безопасность вашего сервера.
Чтобы узнать о более распространенных конфигурациях UFW, ознакомьтесь с этим руководством по Основы UFW: Общие правила и команды брандмауэра.
Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-debian