Управление службами и портами

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

Введение

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

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

Вы изучите два важных способа изменения этих правил:

  1. Временно (Runtime): это похоже на запись на доске. Правило работает сейчас, но исчезнет, когда придёт уборщик — то есть после перезагрузки или перезапуска конфигурации.
  2. Постоянно: это похоже на надпись, высеченную в камне. Правило сохраняется после перезагрузки конфигурации и перезапуска системы.

Разделение на состояния runtime и permanent — одна из важнейших особенностей Firewalld. Оно позволяет администраторам безопасно проверять изменения, прежде чем сохранять их надолго.

К концу этой лабораторной работы вы сможете временно разрешать веб-трафик для тестирования, постоянно открывать определённый пользовательский порт и понимать, как сохранять изменения.

Временно разрешите службу

На этом шаге вы разрешите трафик для службы HTTP.

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

Мы добавим правило http в конфигурацию runtime — то есть временно.

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

Сначала проверьте, какие службы явно разрешены в текущей зоне.

sudo firewall-cmd --list-services

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

sudo firewall-cmd --add-service=http

Если команда выполнена успешно, терминал выведет только success.

Снова выведите список служб и убедитесь, что служба теперь разрешена.

sudo firewall-cmd --list-services

В списке должна появиться http. Помните: поскольку мы не указали параметр, делающий это правило «постоянным», оно похоже на запись на доске — пока правило существует только в памяти.

Постоянно откройте порт

Иногда нужно напрямую открыть определённый номер «двери», а не именованную службу. Например, порт 8080 часто используют для тестирования веб-серверов.

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

В этом случае правило должно сохраняться даже после перезапуска сервера. Для этого мы используем флаг --permanent.

Выполните следующую команду, чтобы постоянно открыть TCP-порт 8080.

sudo firewall-cmd --permanent --add-port=8080/tcp

В выводе должно появиться success.

Ключевая идея: при использовании --permanent вы изменяете файл конфигурации — «каменную табличку», — но не изменяете работающий межсетевой экран немедленно.

Давайте это проверим. Выведите порты, активные в текущей конфигурации runtime.

sudo firewall-cmd --list-ports

Список будет пустым или в нём не будет 8080. Межсетевой экран ещё не знает о новом правиле, потому что пока не прочитал обновлённый файл конфигурации.

Теперь проверьте постоянную конфигурацию и убедитесь, что правило надёжно сохранено на диске.

sudo firewall-cmd --permanent --list-ports

Здесь должен отображаться 8080/tcp. Это подтверждает, что правило поставлено в очередь и будет применено при следующей загрузке конфигурации межсетевого экрана.

Перезагрузите конфигурацию межсетевого экрана

На этом шаге у вас сложилась следующая ситуация:

  • У вас есть временное правило, разрешающее http (из шага 1).
  • У вас есть постоянное правило, разрешающее 8080, которое сохранено, но ещё не активно (из шага 2).

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

С операционной точки зрения именно при перезагрузке конфигурации runtime- и permanent-состояния сопоставляются. Набор правил в памяти заменяется правилами, записанными на диске. Поэтому временные эксперименты исчезают, если вы не сохранили их как постоянные.

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

Выполните команду перезагрузки.

sudo firewall-cmd --reload

Теперь проверим результат. Сначала убедитесь, что порт 8080 активен.

sudo firewall-cmd --list-ports

Успешно! В списке должно появиться 8080/tcp. Постоянное правило загружено в работающую систему.

Теперь проверьте, что произошло со службой http.

sudo firewall-cmd --list-services

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

Проверьте полную конфигурацию

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

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

Используйте параметр --list-all, чтобы получить общий обзор.

sudo firewall-cmd --list-all

Вывод содержит сводную информацию об активной зоне, которой в нашей лабораторной среде является trusted:

  • target: ACCEPT.
  • interfaces: активный сетевой интерфейс, например eth0.
  • services: список стандартных разрешённых служб. Обратите внимание: http отсутствует, потому что после перезагрузки конфигурации мы потеряли это временное правило.
  • ports: список пользовательских открытых портов, например 8080/tcp.

Эта команда отлично подходит для устранения неполадок: она показывает, что именно межсетевой экран делает прямо сейчас.

Итоги

В этой лабораторной работе вы освоили различие между временными и постоянными правилами межсетевого экрана. Вы научились:

  1. Правилам Runtime: мгновенно, но временно добавлять службу, например http.
  2. Постоянным правилам: использовать флаг --permanent, чтобы сохранить правило на будущее, например при открытии порта 8080.
  3. Перезагрузке конфигурации: применять постоянные изменения в среде runtime с помощью --reload и учитывать, что временные правила при этом удаляются.
  4. Проверке конфигурации: использовать --list-all, чтобы просматривать полное состояние межсетевого экрана.

Теперь вы хорошо понимаете, как безопасно и постоянно управлять сетевым доступом.