Centos 8 настройка firewall

Обновлено: 30.06.2024

firewalld — программное обеспечение для управления брандмауэрами, поддерживаемое многими дистрибутивами Linux. Выступает в качестве клиентского интерфейса для встроенных в ядро Linux систем фильтрации пакетов nftables и iptables.

В этом обучающем руководстве мы покажем, как настраивать брандмауэр firewalld для сервера CentOS 8 и расскажем об основах управления брандмауэром с помощью административного инструмента firewall-cmd .

Предварительные требования

Для прохождения этого обучающего руководства нам потребуется сервер под управлением CentOS 8. Мы будем считать, что вы выполнили вход на этот сервер в качестве пользователя non-root user с привилегиями sudo . Чтобы выполнить настройку сервера, воспользуйтесь нашим руководством по начальной настройке сервера CentOS 8.

Основные концепции в firewalld

Прежде чем обсуждать фактическое использование утилиты firewall-cmd для управления конфигурацией брандмауэра, мы должны познакомиться с несколькими концепциями, которые вводит этот инструмент.

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

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

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

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

Постоянство правил

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

Большинство операций firewall-cmd могут принимать флаг --permanent , указывающий на необходимость применения изменений к постоянной конфигурации. Кроме того, текущую конфигурацию брандмауэра можно сохранить в постоянной конфигурации с помощью команды firewall-cmd --runtime-to-permanent .

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

Установка и активация firewalld

Брандмауэр firewalld установлен по умолчанию в некоторых дистрибутивах Linux, в том числе во многих образах CentOS 8. Однако вам может потребоваться установить firewalld самостоятельно:

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

После перезагрузки сервера брандмауэр запускается, сетевые интерфейсы помещаются в настроенные зоны (или возвращаются в заданные по умолчанию зоны), и все правила зон применяются к соответствующим интерфейсам.

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

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

Знакомство с текущими правилами брандмауэра

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

Изучение параметров по умолчанию

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

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

Здесь мы видим, что на нашем сервере брандмауэр контролирует два сетевых интерфейса ( eth0 и eth1 ). Управление обоими интерфейсами осуществляется в соответствии с правилами, заданными для зоны public.

Как же узнать, какие правила заданы для зоны public? Конфигурацию зоны по умолчанию можно распечатать с помощью следующей команды:

Из выводимых результатов мы видим, что эта зона активна и используется по умолчанию и что с ней связаны интерфейсы eth0 и eth1 (все это мы уже знали из предыдущих запросов). Также мы видим, что эта зона разрешает трафик клиента DHCP (для назначения IP-адресов), SSH (для удаленного администрирования) и Cockpit (веб-консоль).

Изучение альтернативных зон

Мы получили представление о конфигурации зоны по умолчанию и активной зоны. Также мы можем получить информацию о других зонах.

Чтобы получить список доступных зон, введите команду:

Чтобы посмотреть конкретную конфигурацию, относящуюся к зоне, необходимо добавить параметр --zone= к команде --list-all :

Вы можете вывести все определения зон, используя опцию --list-all-zones . Возможно вы захотите вывести результаты на пейджер для удобства просмотра:

Далее мы узнаем о назначении зон сетевым интерфейсам.

Выбор зон для интерфейсов

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

Изменение зоны интерфейса

Для перемещения интерфейса между зонами во время сеанса следует использовать параметр --zone= в сочетании с параметром --change-interface= . Как и для всех остальных команд, изменяющих брандмауэр, вам потребуется использовать sudo .

Например, интерфейс eth0 можно переместить в зону home с помощью следующей команды:

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

Чтобы убедиться в успешности операции мы можем снова запросить активные зоны:

Изменение зоны по умолчанию

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

Вы можете изменить зону по умолчанию с помощью параметра --set-default-zone= . При этом немедленно изменятся все интерфейсы, использующие зону по умолчанию:

Установка правил для приложений

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

Добавление службы к зонам

Самый простой метод заключается в том, чтобы добавлять необходимые службы или порты в используемые зоны. Список доступных определений служб можно получить с помощью опции --get-services :

Примечание. Вы можете получить более подробную информацию о каждой из этих служб, посмотрев соответствующий файл .xml в директории /usr/lib/firewalld/services . Например, служба SSH определяется следующим образом:

Вы можете активировать службу для зоны с помощью параметра --add-service= . Данная операция будет нацелена на зону по умолчанию или на другую зону, заданную параметром --zone= . По умолчанию изменения применяются только к текущему сеансу брандмауэра. Для изменения постоянной конфигурации брандмауэра следует использовать флаг --permanent .

Вы можете опустить флаг --zone= , если хотите внести изменения в зону по умолчанию. Для проверки успешного выполнения операции можно использовать команду --list-all или --list-services :

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

Также можно использовать флаг --runtime-to-permanent для сохранения текущей конфигурации брандмауэра в постоянной конфигурации:

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

Если вы хотите убедиться. что изменения успешно сохранены в постоянной конфигурации, добавьте флаг --permanent к команде --list-services . Вам потребуются привилегии sudo для выполнения любых операций с флагом --permanent :

Что делать, если подходящая служба отсутствует?

В базовом комплекте firewalld представлены многие распространенные приложения, к которым вы можете захотеть предоставить доступ. Однако возможны ситуации, когда эти службы не будут соответствовать вашим требованиям.

В этой ситуации у вас будет два варианта.

Открытие порта для зон

Проще всего добавить поддержку определенного приложения можно посредством открытия используемых им портов в соответствующих зонах. Для этого нужно указать порт или диапазон портов, а также протокол (TCP или UDP), связанный с портами.

Например, если наше приложение работает на порту 5000 и использует TCP, мы можем временно добавить его в зону public с помощью параметра --add-port= . Протоколы могут назначаться как tcp или udp :

Мы можем проверить успешность назначения с помощью операции --list-ports :

Также можно указать последовательный диапазон портов, разделив начальный и конечный порты диапазона дефисом. Например, если наше приложение используйте порты UDP с 4990 по 4999, мы можем открыть их на public с помощью следующей команды:

После тестирования мы вероятно захотим добавить это правило в брандмауэр на постоянной основе. Используйте для этого sudo firewall-cmd --runtime-to-permanent или запустите команды снова с флагом --permanent :

Определение службы

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

Службы представляют собой наборы портов с именем и описанием. Использование служб упрощает администрирование портов, но требует некоторой предварительной подготовки. Проще всего начать с копирования существующего скрипта (из директории /usr/lib/firewalld/services ) в директорию /etc/firewalld/services , где брандмауэр ищет нестандартные определения.

Например, мы можем скопировать определение службы SSH и использовать его для определения службы example. Имя файла без суффикса .xml определяет имя службы в списке служб брандмауэра:

Теперь можно изменить определение в скопированном вами файле. Вначале откройте его в предпочитаемом текстовом редакторе. Здесь мы используем vi :

Вначале файл будет содержать только что скопированное вами определение SSH:

Основная часть этого определения представляет собой метаданные. Вы можете изменить короткое имя службы, заключенное в тегах <short> . Это имя службы, предназначенное для чтения людьми. Также следует добавить описание на случай, если вам потребуется дополнительная информация при проведении аудита службы. Единственное изменение конфигурации, которое вам потребуется, и которое повлияет на функциональность службы, будет заключаться в определении портов, где вы идентифицируете номер порта и протокол, который хотите открыть. Можно указать несколько тегов <port/> .

Представьте, что для нашей службы example нам необходимо открыть порт 7777 для TCP и 8888 для UDP. Мы можем изменить существующее определение примерно так:

Сохраните и закройте файл.

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

Теперь вы увидите ее в списке доступных служб:

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

Создание собственных зон

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

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

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

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

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

Перезагрузите брандмауэр, чтобы добавить эти зоны в активную конфигурацию:

Для зоны privateDNS можно добавить службу DNS:

Затем мы можем изменить интерфейсы на новые зоны, чтобы протестировать их:

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

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

Проверьте правильность назначения зон:

Убедитесь, что в обеих зонах доступны соответствующие службы:

Вы успешно настроили собственные зоны! Если вы захотите задать одну из этих зон по умолчанию для других интерфейсов, используйте для настройки параметр --set-default-zone= :

Заключение

Теперь вы должны неплохо понимать принципы администрирования службы firewalld в системе CentOS на каждодневной основе.

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

Дополнительную информацию о firewalld можно найти в официальной документации по firewalld.

date

26.02.2021

directory

CentOS, Linux

comments

Один комментарий

Начиная с CentoOS 7 для настройки правил фильтрации трафика появился новый инструмент firewalld. Именно его рекомендуется использовать для управления правилами iptables. В CentOS 8 вместо стандартного пакета фильтрации iptables теперь используется фреймворк nftables, и при настройке правил файервола через firewalld на самом деле вы настраиваете nftables. В этой статье мы рассмотрим установку, основные концепции и настройку межсетевого экрана firewalld на сервере под управлением CentOS 8 (в CentOS 7 все аналогично).

FirewallD – межсетевой экран для защиты сервера от нежелательного трафика с поддержкой динамического управления правилами (без перезапуска) и реализации постоянных правил файервола. Работает как интерфейс для iptables и nftables. FirewallD можно использовать почти во всех дистрибутивах Linux.

Основные концепции firewalld, зоны и правила

Перед тем как приступить к установке и настройке firewalld, мы познакомимся с понятием зон, которые используются для определения уровня доверия к различным соединениям. Для различных зон firewalld можно применить различные правила фильтрации, указывать активные опции брандмауэра в виде предварительно определенных служб, протоколов и портов, перенаправления портов и rich-rules.

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

В firewalld есть зоны, где уже предварительно настроены разрешения для различных служб. Можно использовать эти настройки или создавать собственные зоны. Список зон по-умолчанию, которые создаются при установке firewalld (хранятся в каталоге /usr/lib/firewalld/zones/):

Установка и включение firewalld в CentOS

В CentOS 7/8 firewalld устанавливается по умолчанию при установке ОС. Если вы его удалили и хотите установить firewalld, можете воспользоваться стандартным менеджером yum/dnf:

установка firewalld в centos 8

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

Проверить статус сервиса:

Команда firewall-cmd является фронтендом firewalld к nftables/iptables.

Работа с правилами firewalld

Правила по умолчанию:

Перед настройкой правил firewalld, нужно проверить, какая зона используется по умолчанию:

firewall-cmd —get-default-zone

Так как firewalld мы только установили и еще не настраивали, у нас зона по-умолчанию public.

Как видим, сетевой интерфейс eth0 управляется зоной public.

Чтобы посмотреть правила активной зоны, введите:

Из листинга видно, что в данную зону добавлены обычные операции, связанные с DHCP-клиентом и ssh.

Доступные зоны

Чтобы просмотреть список всех зон, нужно выполнить команду:

У меня получился такой список:

Правила всех зон, можно просмотреть командой:

Листинг будет довольно большой, так как зон может быть много.

Изменение зоны по умолчанию.

По умолчанию все сетевые интерфейсы расположены в зоне public, но их можно перенести в любую из зон, командой:

Чтобы изменить зону по умолчанию, нужно применить команду:

firewall-cmd —set-default-zone

Добавление правил для приложений

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

firewall-cmd --get-services

Вывод будет содержать большое количество сервисов. Подробная информация о службе содержится в ее xml файле. Эти файлы расположены в директории /usr/lib/firewalld/services.

В XML файле есть описание сервиса, протокол и номер порта, который будет открыт в firewalld.

xml описания сервисов для firewalld

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

Чтобы удалить сервис из зоны:

Если вы хотите добавить в исключения свой сервис, вы можете создать файл xml самостоятельно и заполнить его. Можно скопировать данные с любого сервиса, изменить название, описание и номер порта.

Скопируем файл smtp.xml в директорию для работы с сервисами пользователей:

Измените описание сервиса в файле.

создать собственную службу в firewalld

Сам файл xml тоже нужно переименовать по имени вашего сервиса. После чего, нужно перезагрузить firewalld и проверить есть ли наш сервис в списке:

Я назвал сервис test и в списке он появился:

Теперь можно добавить созданный сервис в любую зону:

Если вы на нашли нужный вам сервис в списке, вы можете открыть нужный порт на firewalld командой:

Заблокировать/разрешить ICMP ответы:

Удалить добавленный порт:

firewall-cmd --zone=public —add-port - открыть порт в файерволе

Добавление собственных зон

Вы можете создать собственную зону (назову ее our):

После создания новой зоны, как и после создания сервиса, нужна перезагрузка firewalld:

Зона our доступна. Вы можете добавлять в нее сервисы или открывать определенные порты.

Firewalld: блокировка IP-адресов, создание исключений

Вы можете добавлять в исключения firewalld доверенные адреса IP адреса или блокировать нежелательные.

Чтобы добавить в исключения конкретный IP- адрес (например 8.8.8.8) на вашем сервере через firewalld, используйте команду:

Проверьте зону, и убедитесь что IP добавлен в исключения в правиле rich rules:

Чтобы заблокировать IP, нужно заменить accept на reject:

Можно разрешить определенную службу только для запросов с конкретного IP адреса:

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

Отключить режим паники можно либо командой:

Либо перезагрузив сервер.

Вы можете заблокировать конфигурацию firewalld, чтобы локальные сервисы с правами root не могли изменить созданные вами правила файервола:

Отключить режим блокировки:

Перенаправление портов в firewalld

Чтобы удалить правило перенаправления порта:

Предыдущая статья Следующая статья

page

page

page

Установка и настройка GLPI и FusionInventory, инвентаризация ИТ инфраструктуры

Firewalld — утилита для управления встроенным в ядро Linux брандмауэром Netfilter. Несмотря на собственный синтаксис, имеет такой же принцип работы, как Iptables. Дополнительно про управление Netfilter при помощи последнего.

Установка и запуск

В некоторых системах CentOS может не оказаться firewalld. Для его установки вводим:

yum install firewalld

Для автоматического зауска вводим:

systemctl enable firewalld

И для запуска службы:

systemctl start firewalld

Общие команды для управления firewalld

Мягко перечитать правила (применить настройки):

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

* в официальной документации сказано, что данную команду стоит применять только в случаях проблем с firewalld.

Посмотреть созданные правила:

systemctl stop firewalld

systemctl start firewalld

systemctl disable firewalld

systemctl enable firewalld

Сохранить текущие правила, сделав их постоянными (permanent):

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

Синтаксис

Общий синтаксис для работы с правилами:

firewall-cmd [опции] [зона] <правило>

* порядок следования параметров не важен.

  • [опции] — дополнительные параметры для создаваемого правила, например --permanent — постоянное правило, то есть будет действовать после перезагрузки. Не обязательный.
  • [зона] — по умолчанию, правила создаются для зоны public. Для работы с конкретной зоной ее необходимо указать, например, --zone=dmz. Не обязательный.
  • <правило> — само правило. Обязательный.

Чтобы правила применялись, не забываем их перечитывать:

Добавление портов

Открыть порт 80:

firewall-cmd --permanent --add-port=80/tcp

* где ключ --permanent — добавить постоянное правило (будет действовать после перезагрузки).

Добавить правило для определенной зоны:

firewall-cmd --permanent --zone=external --add-port=80/tcp

Добавить диапазон портов:

firewall-cmd --permanent --add-port=6500-6700/udp

Добавить несколько правил одной командой:

firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp

Добавление сервиса

Использование служб, вместо портов, может повысить удобство управления правилами за счет объединения нескольких портов в одну службу.

Посмотреть список доступных служб:

Разрешить порт, например, для сервиса ntp:

firewall-cmd --permanent --add-service=ntp

Создать собственную службу:

firewall-cmd --permanent --new-service=name-service

* где name-service — произвольное имя создаваемой службы.

Добавить порт, например TCP 2200 к службе:

firewall-cmd --permanent --service=name-service --add-port=2200/tcp

Задать описание для удобства:

firewall-cmd --permanent --service=name-service --set-short="Service With This Name"

firewall-cmd --permanent --service=name-service --set-description="Long Description For Service With This Name"

Информацию о созданном сервисе можно получить командой:

Теперь созданную службу можно использовать для создания правил, например:

firewall-cmd --permanent --add-service=name-service

Rich-Rule

rich-rule позволяет создавать правила с условиями. Рассмотрим несколько примеров:

2. Или для конкретного порта:

3. Чтобы заблокировать подсеть можно воспользоваться командой:

Список правил с условиями можно отобразить командой:

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

Аналогично созданию, но вместо add вводим remove, например --remove-port (удалит порт) или --remove-service (службу).

Удалим правило для открытия 80-о порта:

firewall-cmd --permanent --remove-port=80/tcp

Управление зонами

Все правила в firewalld могут быть разбиты по зонам. Для каждой свой набор правил и свои сетевые интерфейсы. Это нужно использовать, если мы захотим для разных сетевых адаптеров сделать разные по строгости правила.

Посмотреть список всех имеющихся зон:

Посмотреть список используемых зон:

Информация о конкретной зоне:

firewall-cmd --list-all --zone=public

Создать правило для зоны public:

firewall-cmd --permanent --zone=public --add-port=80/tcp

Добавить сетевой интерфейс в зону:

firewall-cmd --permanent --zone=public --remove-interface=ens34

firewall-cmd --permanent --zone=internal --add-interface=ens34

* сначала нужно удалить адаптер из текущей зоны.

Задать действие по умолчанию для зоны:

firewall-cmd --permanent --zone=public --set-target=DROP

Создать новую зону:

firewall-cmd --permanent --new-zone=custom_zone

* чтобы система увидела новую зону custom_zone, команда reload обязательная.

Пример настройки NAT (шлюза)

firewall-cmd --permanent --zone=dmz --add-masquerade

* без указания зон, будет включен для public и external.

Для примера берем два ethernet интерфейса — ens32 (внутренний) и ens33 (внешний). Для настройки nat последовательно вводим следующие 4 команды:

firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o ens33 -j MASQUERADE

* правило включает маскарадинг на внешнем интерфейсе ens33. Где опция --direct требуется перед всеми пользовательскими правилами (--passthrough, --add-chain, --remove-chain, --query-chain, --get-chains, --add-rule, --remove-rule, --query-rule, --get-rules); nat — таблица, в которую стоит добавить правило; POSTROUTING 0 — цепочка в таблице nat; опция MASQUERADE указывает сетевому экрану менять внутренний IP-адрес на внешний.

firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens32 -o ens33 -j ACCEPT

* добавляет в таблицу filter (цепочку FORWARD) правило, позволяющее хождение трафика с ens32 на ens33.

firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens33 -o ens32 -m state --state RELATED,ESTABLISHED -j ACCEPT

* добавляет правило в таблицу filter (цепочку FORWARD), позволяющее хождение трафика с ens33 на ens32 для пакетов, открывающих новый сеанс, который связан с уже открытым другим сеансом (RELATED) и пакетов, которые уже являются частью существующего сеанса (ESTABLISHED).

systemctl restart firewalld

* для того, чтобы сервер CentOS заработал в качестве шлюза, также необходимо настроить ядро. Подробнее в статье Настройка Интернет шлюза на CentOS 7.

Для просмотра созданных данным способом правил используем команду:

firewall-cmd --direct --get-all-rules

Проброс портов

Проброс настраивается со следующим синтаксисом:

firewall-cmd --zone=external --permanent --add-forward-port=port=25:proto=tcp:toport=8025:toaddr=192.168.0.15

* в данном примере мы будем слушать запросы на порту 25 и передодить их на узел 192.168.0.15 и порт 8025.

Запретить или разрешить трафик между интерфейсами

Предположим, у нас есть два внутренних сетевых интерфейса ens35 и ens36. Мы хотим контролировать трафик между ними.

Запретить

Применяется в случаях, когда на сервере включен FORWARD, но необходимо блокировать трафик между определенными сегменами сети.

Вводим следующие команды:

firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j DROP

firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j DROP

Разрешить

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

Для разрешения команды, практически, аналогичные:

firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT

firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j ACCEPT

Разрешить трафик в одном направлении

В предыдущих примерах мы разрешали трафик в обоих направлениях. Если необходимо сделать так, чтобы только сеть ens35 видела сеть ens36, вводим одну команду:

firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT

Возможные проблемы при работе с firewalld

1. Ошибка command not found (команда не найдена).

Возможные причины: не установлен пакет или не запущена служба.

Выполняем установку пакета firewalld:

yum install firewalld firewall-config

systemctl start firewalld

2. Не применяются правила.

Причина: не введена команда перезапуска правил.

Если это не помогло, делаем перезапуск со сбросом подключений:

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

systemctl restart network

В исключительных случаях, перезагружаем компьютер:

3. The interface is under control of NetworkManager and already bound to the default zone.

Ошибка появляется при попытке удалить интерфейс из зоны, настройками которого управляет NetworkManager.

Для решения открываем конфигурационный файл для настройки сетевого интерфейса, например:

И дописываем следующее:

* в данном примере сетевой интерфейс ens34 будет добавлен в зону external.

В одной из прошлых статей мы разбирались как установить CentOS 8 на компьютер. Любая только что установленная операционная система нуждается в настройке и персонализации под ваши нужды. CentOS не исключение.

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

Настройка CentOS 8 после установки

Шаг 1. Обновление системы

Пожалуй, самая стандартная процедура при установке любой операционной системы. Для начала нам надо зайти в текстовую консоль или открыть терминал если работаете в графическом интерфейсе. Открыть консоль можно сочетанием клавиш Ctrl+Alt+F1 (или F 2, F 3, F 4 и так до F12). А терминал можно найти в главном меню. Мы рассмотрим вариант с текстовой консолью.


А вот и она, авторизуйтесь от имени пользователя root. Затем используйте команды:

dnf check - update


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


Шаг 2. Установки системных утилит

Настройка centos 8 не обходится без установки сервисных утилит. Это те самые утилиты, которые можно использовать изо дня в день, поэтому давайте установим их заранее. Скорее всего, вам будет нужны след. утилиты: vim , wget , curl , net - tools , lsof и bash - completion . « И что же это такое?» — спросите вы. А вот что это:

  • wget и curl вам будут нужны для загрузки файлов по сети;
  • net - tools содержит набор программ для поддержки сетей;
  • lsof шикарная утилита, она позволяет выводить информацию о том, какие файлы задействованы теми или иными процессами;
  • nano и vim являются редакторами. Первый, кстати, больше для новичков подходит, а второй уже для опытных. Во многом из-за того, что в vim editor инструментарий шире.
  • bash - completion - без автозаполнений далеко не уедешь.

Итак, пишем команду длиною в жизнь:

dnf install nano vim wget curl net-tools lsof bash-completion


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

Шаг 3. Настройка имени компьютера

CentOS примечателен тем, что имеет широчайший диапазон инструментов для работы и настройки сетей. Для новичка лучше начать с команды nmtui . Установим имя хоста . Для этого пишем:

Сразу же появится вот такое окно:


Здесь мы устанавливаем любое нужное имя. Буквально любое, но все же стоит не перегибать с шуточками там, где это не надо.

Шаг 4. Настройка статического IP

Теперь зададим статический IP . Используем все ту же команду nmtui:

Далее вас приветствует вот такое интерфейс:

Нажимаем на Edit и попадаем в след. меню:


Теперь я устанавливаю значения для статики. Напротив IPv 4 Configuration выставите значение Manual .


Затем пропишите нужный ip адрес в поле Addresses, адрес шлюза (роутера) в поле Gateway и DNS серверы, которые хотите использовать, например, 8.8.8.8 от Google. Как только все сделали надо перезапустить сеть. Делается это командой:


Нажимаем на Deactivate/Activate. Сделали? Теперь новые настройки вступили в силу. Идем дальше. Давайте вообще проверим правильно ли мы указали данные. Пишем команды:

ifconfig enp 0 s 3




Ко всему прочему есть ещё дополнительные утилиты, которые позволят вам узнать какая скорость в сети, её статус, да и вообще более подробную информацию подтянуть. Пишем команды:


Шаг 5. Создаем нового пользователя

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

Создаем пароль для пользователя:

Добавляем пользователя в группу sudo:

usermod - aG wheel nomanoma

Достаточно просто, да?

Шаг 6. Настройка SSH

Если вы собираетесь подключаться к вашему серверу по ssh, то более удобно будет использовать ssh ключи вместо логина и пароля. Мы будем использовать и публичный, и приватный ключи. Ещё их называют открытый и закрытый ( public и private key ). Сначала вам надо вернуться в вашу рабочую систему и создать эту пару ключей. Для этого выполните:

ssh-keygen -t RSA

Обратите внимание на строку Enter passphrase (empty for no passphrase). Чтобы не вводить пароль при входе на сервер по SSH оставьте её пустой, одного тогда вы должны учитывать, что если этот файл попадет в чужие руки, то тот человек получит полный доступ к серверу.

Дальше система укажет, где сохранился SSH -ключ. Раз уж мы его сгенерировали, то стоит его использовать. Пишем команду ssh - copy - id , а также имя пользователя и IP -адрес нашего сервера, который мы сегодня настраиваем:

Теперь на удаленный сервер можно попасть без пароля.

Шаг 7. Настройка безопасности ssh

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


systemctl restart sshd

Шаг 8. Настройка брандмауэра

Базовая настройка centos не обойдется без брандмауэра, по умолчанию здесь используется firewalld. Чтобы запустить его на сервере надо использовать команды:

systemctl enable firewalld

systemctl start firewalld

А чтобы посмотреть статус используйте:

systemctl status firewalld

Но прежде всего надо добавить службу SSH, поскольку если её нет в правилах, то как вы будете взаимодействовать с системой по этому протоколу? Если вы подключены к серверу удаленно, то можете всё сломать. Для её добавления используйте:

firewall-cmd -–add-service=ssh
firewall-cmd -–add-service=ssh --permanent


Ну а если вам необходимо использовать SMTP или веб-сервер , то очевидно, что следует добавить разрешающие правила для этих служб:

С помощью команды ниже я могу увидеть все правила на сервере.

firewall-cmd --permanent –list-all


Шаг 9. Удаление ненужных служб

Вы думали, что только в Windows придется заниматься подобным? Уже нет. У каждой службы есть свое назначение. Поэтому я покажу как увидеть весь список служб, а вы уже для себя решите какие нужны, а какие нет. Чтобы увидеть весь список используйте:

Вот так это выглядит:


Для того, чтобы убрать ненужную службу используем команды

systemctl stop имя_службы

systemctl disable имя_службы

Шаг 10. Управление службами

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


Список действительно большой. В общем и целом, так можно отслеживать службы в вашей системе. Наша статья о том, как выполняется настройка centos после установки завершена, но настраивать там можно ещё очень много чего. Надеюсь, статья была полезной, и вы узнали что-то новое для вас. А что вы настраиваете после установки? Напишите в комментариях!

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Читайте также: