Настройка брандмауэра с помощью firewalld в centos 8

Метод временного отключения брандмауэра в CentOS 8

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

Шаг 1. Проверка состояния демона брандмауэра Сначала мы запустим терминал в CentOS 8, найдя его в строке поиска Действия. Терминал CentOS 8 показан на изображении ниже:

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

$ sudo firewall –cmd —state

Поскольку наш брандмауэр был запущен по умолчанию, поэтому статус «запущен» показан на изображении ниже :

Шаг 2. Временное отключение Брандмауэр в CentOS 8 Убедившись, что наш брандмауэр работает, мы можем легко попытаться временно отключить его, выполнив следующую команду в терминале:

$ sudo systemctl stop firewalld

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

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

$ sudo systemctl status firewalld

Если ваш брандмауэр был отключен (временно) успешно, вы увидите «неактивный (мертв) »на вашем терминале, как показано на изображении ниже:

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

Настройка сети из консоли (командами)

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

Назначение IP-адреса или добавление дополнительного к имеющемуся:

ip a add 192.168.0.156/24 dev ens32

* в данном примере к сетевому интерфейсу ens32 будет добавлен IP 192.168.0.156.

Изменение IP-адреса:

ip a change 192.168.0.157/24 dev ens32

* однако, по факту, команда отработает также, как add.

Удаление адреса:

ip a del 192.168.163.157/24 dev ens32

Добавление маршрута по умолчанию:

ip r add default via 192.168.0.1

Добавление статического маршрута:

ip r add 192.168.1.0/24 via 192.168.0.18

Удаление маршрутов:

ip r del default via 192.168.160.1

ip r del 192.168.1.0/24 via 192.168.0.18

Подробнее про управление маршрутами в CentOS.

Настройка шлюза по-умолчанию в CentOS 8

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

netstat -nr

Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.253.2 0.0.0.0 UG 0 0 0 ens36
192.168.31.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
192.168.253.0 0.0.0.0 255.255.255.0 U 0 0 0 ens36

В итоге в моем примере есть основной шлюз 0.0.0.0 192.168.235.2. Напоминаю, что в системе может быть только один шлюз по умолчанию.

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

route add default gw 192.168.31.1

Если нужно удалить шлюз или маршрут, то для этого есть ключ del.

route del default gw 192.168.31.1

Послесловие

Если конечно Вам лень с этим возится руками, то ничто не мешает поставить сторонний фаерволл, который позволяет ставить правила, что называется «на лету». Есть даже легкие решения-интеграторы, вроде Windows 10 Firewall Control о котором мы уже писали ранее.

В общем, каждому своё, наше дело рассказать про брандмауэр Windows, а уж использовать его или нет, — дело Ваше.

Как и всегда, если есть какие-то вопросы, мысли, дополнения и всё такое прочее, то добро пожаловать в комментарии к этой статье (может подскажу какие-то нюансы с особо заковыристыми правилами и всем таким).

Оставайтесь с нами ;)

Настройка разрешений SELinux для виртуальных хостов (рекомендуется)

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

Существуют различные способы настройки политики с учетом потребностей вашей среды, поскольку SELinux позволяет настраивать необходимый вам уровень безопасности. На этом шаге мы обсудим два метода внесения изменений в политики Apache: универсально и в конкретной директории. Изменение политики в директориях является более безопасным, поэтому мы рекомендуем использовать этот подход.

Универсальное изменение политик Apache

Универсальная настройка политики Apache позволит SELinux одинаковым образом использовать все процессы Apache, используя для этого булеву переменную 

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

Запустите следующую команду для установки универсальной политики Apache:

Команда  меняет значения булевых значений SELinux. Флаг  будет обновлять значение времени начальной загрузки, а обновленное значение сохраняется между перезагрузками.  — это булево значение, которое позволит SELinux рассматривать все процессы Apache как один тип, поэтому вы активировали его со значением .

Изменение политик Apache для директории

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

Вначале проверьте тип контекста, который SELinux указал для директории :

Эта команда формирует список и выводит контекст SELinux из директории. Вы получите примерно следующий результат:

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

Затем воспользуйтесь командой  для применения этих изменений и их сохранения между перезагрузками:

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

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

Результат отражает обновленный тип контекста:

Теперь, когда директория  использует тип , вы готовы протестировать вашу конфигурацию виртуального хоста.

Настройка SELinux для web сервера

Раздел для тех, кто хочет настроить SELinux на своем web сервере. Сначала ставим пакет policycoreutils-python-utils если он еще не установлен. Он нам нужен для утилиты semanage.

# dnf install policycoreutils-python-utils

Дальше нам нужно подготовить набор правил для selinux при нашей текущей конфигурации web сервера. Общий смысл их следующий:

  1. У нас нестандартная директория для сайтов — /web/sites, по-умолчанию запросы будут блокироваться.
  2. Надо разрешить nginx взаимодействовать с сокетом.
  3. Позволить nginx управлять параметром rlimit_nofile.
  4. И еще некоторое количество запретов, которые сможете сами проверить.

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

Я для этого пользуюсь следующими командами. Просмотр сработавших блокировок selinux для nginx.

# grep nginx /var/log/audit/audit.log | audit2why

Можете внимательно посмотреть суть блокировок. На первый взгляд выглядит не понятно, но в целом все гуглится. Можно разобраться, если есть желание. Подробно этот процесс описан в статье на сайте nginx.com.

Сформировать список правил для selinux.

# grep nginx /var/log/audit/audit.log | audit2allow -m nginx > ~/nginx.te

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

# checkmodule -M -m -o nginx.mod nginx.te
# semodule_package -m nginx.mod -o nginx.pp

В конце загружаю этот модуль в selinx.

# semodule -i nginx.pp

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

# grep nginx /var/log/audit/audit.log | audit2allow -M nginx
# semodule -i nginx.pp

Потом повторите все то же самое для php-fpm и можно проверять работу web сервера. Если в процессе проверки окажется, что что-то еще не работает, опять смотрите audit.log и добавляйте новые правила, пересобирайте и загружайте модуль. Так, через несколько итераций, получится рабочий набор правил для selinux.

Убедиться, что модуль загружен, можно командой.

# semodule -l | grep nginx

В целом, по selinux все. Мы просто разрешили все, что веб сервер просил. По идее, надо вдумчиво во всех правилах разбираться и разрешать только то, что считаешь нужным. Я честно скажу, что selinux знаю не очень хорошо. Дальше загрузки готовых модулей и автоматического создания модулей с помощью audit2allow я не двигался. Руками модули никогда не писал. Если есть какой-то более осмысленный и правильный способ настройки selinux на кастомной конфигурации веб сервера, буду рад полезной информации.

Хорошая практическая статья по ручной настройке selinux для web сервера — https://habr.com/ru/post/322904/. Там же есть ссылки на другие статьи автора на тему selinux. Написано содержательно и наглядно, рекомендую для тех, кто будет знакомиться с технологией.

Что такое Iptables

Iptables — это еще один сервис, который разрешает, отбрасывает или возвращает IP-пакеты. Сервис Iptables управляет пакетами Ipv4, в то время как Ip6tables управляет пакетами Ipv6. Эта служба управляет списком таблиц, в которых каждая таблица поддерживается для различных целей, например: таблица « filter » предназначена для правил брандмауэра, к таблице « nat » обращаются в случае нового соединения, « mangle » в случае изменения пакета и т. Д.

Каждая таблица дополнительно имеет цепочки, которые могут быть встроенными или определяемыми пользователем, где цепочка обозначает набор правил, применимых к пакету, таким образом решая, каким должно быть целевое действие для этого пакета, т.е. оно должно быть РАЗРЕШЕНО, БЛОКИРОВАНО или ВОЗВРАЩЕНО, Этот сервис является сервисом по умолчанию в таких системах, как: RHEL / CentOS 6/5 и Fedora, ArchLinux, Ubuntu и т. Д.

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

мы объясним, как запускать, останавливать или перезапускать службы Iptables и FirewallD в Linux.

Метод постоянного отключения брандмауэра в CentOS 8

В этом методе мы научимся постоянно отключать брандмауэр в CentOS 8. Это означает, что после этого метода наш брандмауэр не перестанет работать сразу; скорее, мгновенно появится статус «отключено». Кроме того, при перезапуске системы после выполнения этого метода брандмауэр по-прежнему не будет включен до тех пор, пока вы не включите его явно. Чтобы навсегда отключить брандмауэр в CentOS 8, вам необходимо выполнить следующие шаги:

Шаг 1. Окончательное отключение брандмауэра в CentOS 8 Даже в этом методе вы можете проверить состояние вашего демона брандмауэра так же, как мы объяснили в методе № 1. После этого вы можете навсегда отключить брандмауэр в CentOS 8, выполнив команду, указанную ниже, в вашем терминале:

$ sudo systemctl disable firewalld

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

Шаг 2. Проверка, был ли наш брандмауэр отключен навсегда Теперь нам нужно проверить был ли наш брандмауэр отключен навсегда или нет. Это можно сделать, выполнив указанную ниже команду в вашем терминале CentOS 8:

$ sudo systemctl status firewalld

Выполнение этой команды отобразит на вашем терминале статус «активен (работает)», в отличие от метода временного отключение брандмауэра, но ваш брандмауэр будет отключен, как показано на следующем изображении:

Шаг 3. Маскирование службы демона межсетевого экрана К настоящему времени наш межсетевой экран отключен навсегда, что означает, что он не будет включен автоматически даже после перезапуска. ваша система; скорее, вам придется вручную включить его; однако иногда бывает, что любой другой процесс или служба, запущенная в вашей системе CentOS 8, может включить ваш брандмауэр.. Вы можете предотвратить это, замаскировав демон брандмауэра, выполнив в терминале CentOS 8 команду, указанную ниже:

$ sudo systemctl mask —now firewalld

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

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

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

Посмотреть состояние:

firewall-cmd —state

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

firewall-cmd —reload

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

firewall-cmd —complete-reload

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

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

firewall-cmd —list-all

Остановить службу:

systemctl stop firewalld

Запустить сервис:

systemctl start firewalld

Запретить автозапуск:

systemctl disable firewalld

Разрешить автозапуск:

systemctl enable firewalld

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

firewall-cmd —runtime-to-permanent

Создание первой шары и предоставление к ней гостевого доступа (анонимного)

Разберем самый простой пример предоставления доступа к папке — анонимный доступ всем пользователям без запроса пароля.

Открываем на редактирование конфигурационный файл samba:

vi /etc/samba/smb.conf

В секцию  добавляем:


map to guest = Bad Password

И добавляем настройку для общей папки:

    comment = Public Folder
    path = /data/public
    public = yes
    writable = yes
    read only = no
    guest ok = yes
    create mask = 0777
    directory mask = 0777
    force create mode = 0777
    force directory mode = 0777

* где: 

  •  — имя общей папки, которое увидят пользователи, подключившись к серверу.
  • comment — свой комментарий для удобства.
  • path — путь на сервере, где будут храниться данные.
  • public — для общего доступа. Установите в yes, если хотите, чтобы все могли работать с ресурсом.
  • writable — разрешает запись в сетевую папку.
  • read only — только для чтения. Установите no, если у пользователей должна быть возможность создавать папки и файлы.
  • guest ok — разрешает доступ к папке гостевой учетной записи.
  • create mask, directory mask, force create mode, force directory mode — при создании новой папки или файла назначаются указанные права. В нашем примере права будут полные.
  • workgroup — Название рабочей группы, если будет отличатся, то шары не увидите;
  • hosts allow — Разрешить вход папку с IP-адресов;
  • browseable — Разрешить просмотр через проводник;

Создаем каталог на сервере и назначим права:

mkdir -p /data/public

chmod 777 /data/public

Применяем настройки samba, перезагрузив сервис:

systemctl restart smb

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

Проверить текущий статус

Чтобы проверить статус firewalld выполните

sudo firewall-cmd —state

Возможные варианты:

running
not running

Проверить статус с помощью systemctl:

sudo systemctl status -l firewalld

firewalld.service — firewalld — dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-12-22 00:00:01 EEST; 2h 55min ago 1671657695
Docs: man:firewalld(1)
Main PID: 783 (firewalld)
Tasks: 2
CGroup: /system.slice/firewalld.service
└─783 /usr/bin/python2 -Es /usr/sbin/firewalld —nofork —nopid

Dec 22 00:23:35 localhost.localdomain systemd: Starting firewalld — dynamic firewall daemon…
Dec 22 00:23:35 localhost.localdomain systemd: Started firewalld — dynamic firewall daemon.
Dec 22 00:23:35 localhost.localdomain firewalld: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Управление активностью брандмауэра

Главная настройка, интересующая большинство пользователей и относящаяся к изменениям в работе брандмауэра Windows 11, – управление его активностью. Обычно нужно именно отключить работу компонента, но мы рассмотрим общее управление активностью.

  1. Переход к окну работы с брандмауэром покажем только один раз, а вы далее уже будете знать, как открыть нужные настройки и выбрать подходящий раздел. Через меню «Пуск» перейдите в «Параметры».
  2. На панели слева выберите раздел «Конфиденциальность и защита», затем кликните по надписи «Безопасность Windows».
  3. На экране отобразится весь список инструментов, отвечающих за безопасность операционной системы. Среди них будет и «Брандмауэр и защита сети», куда и следует перейти для получения доступа к настройкам.
  4. Если вы уже вносили какие-то изменения в работу встроенного межсетевого экрана, вверху будет уведомление о том, что используются нестандартные параметры, которые могут навредить безопасности Windows. Ниже находится кнопка «Восстановить параметры», при помощи которой в любой момент можно будет вернуть стандартные настройки брандмауэра, когда это понадобится.
  5. Еще ниже в этом же окне расположены три кнопки для управления сетями. Частой является ваша домашняя есть (если не настроено другое), общедоступной считаются сети без каких-либо ограничений в плане подключений, а сеть домена работает только в том случае, если есть сам домен в локальной сети, поэтому на домашнем компьютере недоступна. Если здесь вы видите кнопки «Включить», значит, для указанных сетей брандмауэр отключен.
  6. Если нужно его, наоборот, выключить, понадобится нажать непосредственно по названию активной сети.
  7. Вы будете перенаправлены в другое окно, где находится список подключений к указанному типу сетей, а также переключатель «Брандмауэр Microsoft Defender», который и отвечает за отключение защиты.
  8. Вместе с этим вы можете вовсе запретить все входящие подключения для всех приложений без исключений. Это обезопасит используемую сеть от несанкционированного доступа из сторонних источников. Используется крайне редко, поскольку будет блокироваться взаимодействие практически со всеми программами, требующими соединение с интернетом.

Установка php-fpm

Установка php-fpm в Centos 8 сильно упростилась по сравнению с предыдущей версией, потому что в базовом репозитории хранится актуальная версия php 7.2, которой можно пользоваться. Пока нет необходимости подключать сторонние репозитории, так как версия 7.2 вполне свежа и актуальна. Если у вас нет необходимости использовать что-то новее, то можно остановиться на этой версии.

Устанавливаем php и php-fpm в CentOS 8, а так же некоторые популярные модули.

# dnf install php-fpm php-cli php-mysqlnd php-json php-gd php-ldap php-odbc php-pdo php-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip

Проверим конфигурацию php-fpm, которая располагается в файле /etc/php-fpm.d/www.conf. Изменим пользователя, под которым будет работать php-fpm с apache на nginx.

user = nginx
group = nginx

Перезапускаем php-fpm и проверяем, запущен ли сокет.

# systemctl restart php-fpm
# ll /run/php-fpm/www.sock
srw-rw----+ 1 root root 0 Oct  7 16:59 /run/php-fpm/www.sock

Все в порядке, php-fpm запущен и готов к работе. Cделаем еще одну важную настройку. Назначим nginx владельцем директории для хранения сессий php.

# chown -R nginx. /var/lib/php/session

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

Возможно, вам захочется поставить более свежу версию php. Как это сделать, читайте в отдельной статье — обновление php-7.2 до 7.4 в CentOS 8.

Для того, чтобы проверить работу нашего веб сервера, нужно установить ssl сертификаты. Без них nginx с текущим конфигом не запустится. Исправляем это.

Шаг 3 — Управление процессом Apache

Теперь, когда служба установлена и запущена, вы можете использовать различные команды systemctl для управления службой.

Чтобы остановить веб-сервер, введите:

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

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

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

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

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

Apache должен будет запуститься автоматически при следующей загрузке сервера.

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

Заключение

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

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

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

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: