Назад в блог

Настройка брандмауэра с помощью UFW на Ubuntu 18.04

Настройка брандмауэра с помощью UFW на Ubuntu 18.04

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

UFW на Ubuntu

Термин UFW означает «Uncomplicated Firewall» (простой межсетевой экран). Это программа межсетевого экрана по умолчанию, которая поставляется предустановленной в Ubuntu. UFW на самом деле является интерфейсом для iptables. Цель UFW — упростить настройку и управление межсетевым экраном. Хотя iptables сам по себе является надежным и гибким инструментом, он не очень дружелюбен к новичкам. UFW облегчает работу как новичкам, так и опытным пользователям.

Сначала ознакомьтесь с нашим всеобъемлющим руководством, которое поможет вам ознакомиться с базовыми функциями UFW. Вы также можете воспользоваться этим руководством для установки вашего сервера Ubuntu. А теперь начнем!

Для начала, если по какой-то причине UFW у вас не установлен, установите его прямо сейчас:

Настройка UFW

  • Использование IPv6

На данный момент IPv4 все еще доминирует. Учитывая это, большая часть этого руководства также ориентирована на IPv4. К счастью, UFW также поддерживает IPv6. Все, что вам нужно сделать, это включить эту функцию в конфигурационном файле UFW.

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

Найдите параметр «IPV6» и убедитесь, что для него установлено значение «yes».

  • Политика по умолчанию

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

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

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

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

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

Чтобы разрешить SSH-соединения с сервером, выполните следующую команду. По сути, она укажет UFW разрешить все соединения на порту 22. Это порт, который демон SSH слушает по умолчанию:

Вместо этой команды можно напрямую настроить разрешение подключений к порту 22. Этот порт определен в файле /etc/services:

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

Включение UFW

Хотя правила UFW установлены, они ничего не будут делать, пока UFW не будет активирован. По умолчанию UFW отключен, то есть, несмотря на объявление правил, он не будет их применять. Чтобы включить UFW, выполните следующую команду:

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

Разрешение различных соединений

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

Вот некоторые другие порты, которые очень часто бывают открыты:

  • SSH (порт 22): это порт по умолчанию, настроенный для SSH-соединений.
  • HTTP (порт 80): это порт по умолчанию, который используют незашифрованные веб-серверы.
  • HTTPS (порт 443): это порт по умолчанию, который используют зашифрованные веб-серверы.

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

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

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

Port Range

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

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

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

Specific IP Addresses

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

Вы также можете указать конкретные порты, к которым разрешено подключаться этому IP-адресу. Для этого добавьте to any port, а затем номер порта к команде:

Subnets

Если вам необходимо разрешить подсеть IP-адресов, это можно сделать с помощью нотации CIDR. В этом примере UFW разрешит соединения с IP-адресов в диапазоне от 203.0.113.1 по 203.0.113.254:

Аналогично предыдущему шагу, также можно указать порт, к которому могут подключаться эти IP-адреса:

Connecting to a Specific Network Interface

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

 firewall with UFW on Ubuntu 18.04. 4

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

Также можно определить порт, на который может поступать трафик с этого сетевого интерфейса:

Denying Connection

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

Чтобы запретить подключение с определенных IP-адресов, для UFW требуются правила запрета. Написание правил запрета довольно просто. Возьмите любое разрешающее правило, замените термин «allow» на «deny» — и вуаля! Оно становится правилом запрета.

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

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

Удаление правил

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

  • Удаление правила по номеру

Это самый простой способ удаления правила UFW. Каждое правило в UFW имеет свой номер. Следующая команда выведет все правила UFW вместе с их номерами:

 firewall with UFW on Ubuntu 18.04. 3

Следующая команда удалит правило, указанное по его номеру:

  • Удаление правила по самому правилу

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

Правило также могло быть указано как allow 80. В этом случае следующая команда удалит его:

Удаление правила удалит его как для IPv4, так и для IPv6.

Проверка статуса и правил UFW

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

 firewall with UFW on Ubuntu 18.04. 2

Если статус «inactive», то активируйте его, выполнив шаг Включение UFW выше. Если он активен, то UFW сообщит о статусе «active» и выведет список всех активных правил.

Отключение UFW

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

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

 firewall with UFW on Ubuntu 18.04. 1

Обратите внимание, что это не изменит поведение UFW по умолчанию, которое было настроено в самом начале.

Заключение

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

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

Приятной работы!

author

Hark Labs

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.