Введение
В этой лабораторной работе вы изучите основные этапы настройки 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, что позволит вам в дальнейшем самостоятельно изучать продвинутые функции инструмента.



