Настройка firewalld для разрешения веб-трафика в Linux

CompTIABeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы изучите основные этапы настройки firewalld в системе Linux для разрешения веб-трафика, практикуясь на реальных серверах. Вы будете использовать интерфейс командной строки firewall-cmd для управления зонами и сервисами межсетевого экрана — это базовый навык для любого системного администратора, отвечающего за безопасность серверов. Основная цель — открыть стандартные порты для HTTP и HTTPS, сделав веб-сервер доступным извне при сохранении безопасного состояния системы по умолчанию.

Вы начнете с проверки статуса службы firewalld, убедившись, что она установлена, запущена и добавлена в автозагрузку. Затем вы установите зону по умолчанию в значение public и увидите практическое влияние правил межсетевого экрана, запустив простой веб-сервер на Python. Добавляя и удаляя правила для сервисов http и https, вы наглядно увидите, как эти конфигурации влияют на сетевое соединение. В завершение лабораторной работы вы научитесь проверять свои настройки и изучите другие доступные опции firewall-cmd для дальнейшего обучения.

Проверка статуса и зоны по умолчанию firewalld

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

Сначала убедимся, что firewalld установлен в вашей системе. Хотя он может уже присутствовать, запуск команды установки — надежный способ подтверждения. Откройте терминал и выполните следующие команды, чтобы обновить список пакетов и установить firewalld:

sudo apt-get update && sudo apt-get install -y firewalld

После завершения установки firewalld должен быть активен по умолчанию. Чтобы убедиться в этом, проверьте статус службы firewalld с помощью команды systemctl, которая используется для управления службами в современных дистрибутивах Linux.

Выполните эту команду, чтобы увидеть, активен ли firewalld:

sudo systemctl status firewalld

В выводе должно быть указано active (running), что означает работоспособность межсетевого экрана.

Теперь, когда служба запущена, вы можете изучить ее конфигурацию. firewalld использует «зоны» для управления уровнями доверия сетевых соединений. Зона — это предопределенный набор правил. Давайте выясним, какая зона в данный момент установлена по умолчанию.

Используйте утилиту firewall-cmd, основной интерфейс командной строки для firewalld, чтобы узнать зону по умолчанию:

sudo firewall-cmd --get-default-zone

Команда, скорее всего, вернет public, что является зоной по умолчанию для новых установок.

public

Вы успешно проверили статус firewalld и определили зону по умолчанию. На следующих этапах вы узнаете, как изменить эту конфигурацию.

Установка зоны по умолчанию в public

На этом этапе вы научитесь устанавливать зону по умолчанию для firewalld. Зона по умолчанию применяется к любому сетевому интерфейсу, который явно не назначен другой зоне. Хотя на новой системе зоной по умолчанию часто является public, умение настраивать ее — фундаментальный навык управления межсетевым экраном. Зона public обычно используется для общедоступных, недоверенных сетей. В таких сетях вы не доверяете другим компьютерам и предполагаете, что они могут нанести вред вашей системе.

Чтобы изменить зону по умолчанию, используйте команду firewall-cmd с опцией --set-default-zone. Это изменение является постоянным и вступит в силу немедленно.

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

sudo firewall-cmd --set-default-zone=public

После выполнения команды firewalld подтвердит успешное завершение операции.

success

Всегда полезно проверять, правильно ли применились изменения. Вы можете сделать это, снова запустив команду --get-default-zone, как и на предыдущем этапе.

sudo firewall-cmd --get-default-zone

Вывод должен подтвердить, что зоной по умолчанию теперь является public.

public

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

Добавление сервиса http в зону public и тестирование с веб-сервером

На этом этапе вы добавите правило в межсетевой экран для разрешения веб-трафика, а затем продемонстрируете результат на практике, запустив простой веб-сервер. По умолчанию firewalld блокирует большую часть входящего трафика для защиты системы. Чтобы разрешить определенные соединения, необходимо добавить правила для сервисов, которые вы хотите открыть. firewalld использует предопределенные «сервисы» — это легко запоминающиеся имена для стандартных сетевых портов. Например, сервис http соответствует TCP-порту 80, стандартному порту для незашифрованного веб-трафика.

Сначала проверим текущее состояние межсетевого экрана для зоны public перед внесением изменений:

sudo firewall-cmd --zone=public --list-services

Вы заметите, что изначально http отсутствует в списке, а значит, внешние подключения к порту 80 заблокированы.

Теперь добавим сервис http в зону public. Используйте команду firewall-cmd с опцией --add-service, указав зону, которую хотите изменить:

sudo firewall-cmd --zone=public --add-service=http

Эта команда указывает firewalld изменить зону public, добавив правило для сервиса http. Изменение применяется к конфигурации времени выполнения (runtime), то есть вступает в силу немедленно. Вы должны увидеть подтверждение:

success

Проверим, был ли добавлен сервис, снова просмотрев список сервисов:

sudo firewall-cmd --zone=public --list-services

Теперь вы должны увидеть http в списке разрешенных сервисов.

Чтобы продемонстрировать это на практике, запустим простой веб-сервер. Мы воспользуемся встроенным HTTP-сервером Python на порту 80:

cd /tmp
echo "<h1>Welcome to LabEx Firewall Demo</h1><p>This server is running on port 80</p>" > index.html
sudo python3 -m http.server 80

Обратите внимание, что нам требуется sudo, так как порт 80 является привилегированным (ниже 1024). Оставьте этот сервер запущенным в отдельном терминале.

Теперь из другого терминала протестируйте соединение:

curl http://localhost

Соединение работает, потому что сервис http теперь разрешен в межсетевом экране. Учтите, что соединения через localhost могут обходить правила экрана, но ключевой момент здесь в том, что внешние подключения к порту 80 теперь будут разрешены.

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

sudo firewall-cmd --zone=public --remove-service=http

Проверьте список сервисов, чтобы убедиться в удалении:

sudo firewall-cmd --zone=public --list-services

Вы увидите, что http больше нет в списке. Теперь добавьте сервис обратно:

sudo firewall-cmd --zone=public --add-service=http

Убедитесь, что он снова добавлен:

sudo firewall-cmd --zone=public --list-services

Вы успешно научились управлять сервисом HTTP в межсетевом экране и наглядно увидели результат изменений. Основная концепция заключается в том, что без правила для сервиса http внешние подключения к порту 80 будут блокироваться, даже если веб-сервер запущен. Вы можете остановить веб-сервер, нажав Ctrl+C, когда закончите демонстрацию.

Добавление сервиса https в зону public и тестирование конфигурации HTTPS

На этом этапе вы продолжите настройку межсетевого экрана, добавив сервис https. В то время как http разрешает стандартный веб-трафик, современные веб-коммуникации полагаются на https (HTTP Secure) для обеспечения шифрования и безопасности. Сервис https соответствует TCP-порту 443 и необходим для любого сервера, обрабатывающего конфиденциальную информацию.

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

sudo firewall-cmd --zone=public --list-services

Вы должны увидеть http в списке, но не https.

Теперь добавим сервис https в зону public. Используйте команду firewall-cmd --add-service, чтобы разрешить трафик https через зону public. Это гарантирует, что ваш сервер сможет принимать безопасные соединения от внешних пользователей.

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

sudo firewall-cmd --zone=public --add-service=https

Эта команда изменяет текущую конфигурацию зоны public, включая в нее правило для сервиса https. firewalld подтвердит успешное добавление правила.

success

Теперь проверим, что сервис HTTPS был добавлен, снова просмотрев список сервисов:

sudo firewall-cmd --zone=public --list-services

Теперь в выводе должны присутствовать и http, и https, что подтверждает настройку вашего межсетевого экрана на прием обоих типов веб-трафика.

Для наглядности вы также можете проверить, какие порты теперь открыты:

sudo firewall-cmd --zone=public --list-ports
sudo firewall-cmd --zone=public --list-services

Команда --list-services показывает сервисы по именам, при этом вы можете видеть, что сервис http соответствует порту 80, а https — порту 443.

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

Проверка добавления веб-сервисов в зону public

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

Чтобы увидеть список всех сервисов, разрешенных в данный момент в зоне, используйте команду firewall-cmd с опцией --list-services. Поскольку вы добавляли сервисы в зону public, необходимо указать ее в команде.

Выполните следующую команду в терминале, чтобы вывести список активных сервисов для зоны public:

sudo firewall-cmd --list-services --zone=public

В выводе отобразится список имен сервисов. Вы должны увидеть http и https в этом списке, наряду с другими сервисами, которые могут быть включены по умолчанию, такими как dhcpv6-client и ssh.

dhcpv6-client ssh http https

Наличие http и https в выводе подтверждает, что вы успешно настроили межсетевой экран для разрешения входящего веб-трафика. Ваша система готова обслуживать веб-контент как по стандартному, так и по защищенному портам.

Изучение доступных команд с помощью firewall-cmd --help

На этом заключительном этапе вы научитесь самостоятельно изучать возможности firewall-cmd. Инструменты командной строки часто имеют множество опций и функций, и умение пользоваться встроенной документацией — важнейший навык для любого пользователя Linux. Опция --help — это универсальный способ быстро получить обзор синтаксиса команды и доступных параметров.

Чтобы увидеть все доступные команды и опции для firewall-cmd, выполните в терминале следующую команду. Обратите внимание, что эта команда не требует прав sudo, так как она только выводит информацию.

firewall-cmd --help

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

Usage: firewall-cmd [OPTIONS...]

General Options
  -h, --help            Prints a short help text and exists
  -V, --version         Print the version string of firewalld
  -q, --quiet           Do not print status messages

Status Options
  --state               Get state of firewalld
  --reload              Reload firewall rules and keep state information
  --complete-reload     Reload firewall rules and lose state information
  --runtime-to-permanent
                        Save runtime configuration to permanent
...

Уделите время изучению вывода. Вы увидите разделы «Zone Options» (Опции зон), «Service Options» (Опции сервисов), «Port Options» (Опции портов) и многие другие. Это отличный ресурс для открытия новых функций или напоминания синтаксиса команд, которые вы используете нечасто. Например, вы можете найти опцию --remove-service, которая является противоположностью команде --add-service, использованной вами ранее.

Поздравляем! Вы завершили эту лабораторную работу и изучили основные операции с firewalld. Теперь вы умеете проверять его статус, управлять зонами и добавлять сервисы для разрешения определенного трафика.

Резюме

В этой лабораторной работе вы изучили основные шаги по управлению и настройке firewalld в системе Linux с практическими демонстрациями. Вы начали с проверки установки службы firewalld, затем использовали команды systemctl для запуска, включения автозагрузки и проверки статуса. Вы также определили активную зону по умолчанию и научились изменять ее на public с помощью firewall-cmd, создав четкую базу для правил межсетевого экрана.

Ключевым моментом работы стала практическая демонстрация влияния межсетевого экрана с использованием реального веб-сервера. Вы настроили простой HTTP-сервер на Python и на собственном опыте увидели, как правила экрана контролируют доступ к сети. Добавляя и удаляя сервис http из зоны public, вы наблюдали немедленное влияние на возможность подключения к веб-сайту, что сделало абстрактную концепцию правил межсетевого экрана понятной и осязаемой.

Опираясь на этот фундамент, вы настроили межсетевой экран для разрешения как стандартного, так и защищенного веб-трафика, добавив сервисы http и https в зону public. Вы научились проверять изменения с помощью различных опций firewall-cmd и изучили связь между именами сервисов и соответствующими номерами портов. Наконец, вы узнали, как обращаться к подробной справочной документации firewall-cmd, что позволит вам в дальнейшем самостоятельно изучать продвинутые функции инструмента.