Firewalld — различия между версиями
Andy (обсуждение | вклад) |
Andy (обсуждение | вклад) (→"сложные" правила) |
||
| Строка 138: | Строка 138: | ||
[accept|reject|drop|mark] | [accept|reject|drop|mark] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | |||
| + | Порядок следования правил в зоне: | ||
| + | # Перенаправление порта или маскардинг в зоне | ||
| + | # Набор правил журналирования в зоне | ||
| + | # Набор разрешающих правил в зоне | ||
| + | # Набор запрещающих правил в зоне | ||
== Ссылки == | == Ссылки == | ||
[https://fedoraproject.org/wiki/FirewallD/ru Описание Firewalld]<br /> | [https://fedoraproject.org/wiki/FirewallD/ru Описание Firewalld]<br /> | ||
Версия 11:55, 21 февраля 2018
Содержание
Настройка правил файрволла firewalld
Предварительные требования
- Виртуальная машина с двумя сетевыми интерфейсами
- Установленные пакеты:
firewalld,firewalld-filesystem
Общая информация
firewalld разделяет весь входящий трафик на зоны, где каждой зоне соответствует свой набор правил.
Для проверки принадлежности входящих соединений зоне, используется следующая логика, в которой побеждает первое совпадение:
- Исходный адрес входящего пакета совпадает с исходным правилом настройки зоны, в таком случае пакет отправляется на обработку в данной зоне.
- Если исходный интерфейс для пакета совпадает с правилами настройки зоны - эта зона будет использована
- В противном случае, будет использована зона по-умолчанию. Зона по-умолчанию не отдельная зона, поэтому она указывает на другую зону в системе.
Если поведение по-умолчанию не изменено администратором, либо конфигурацией NetworkManager'а, то зона по-умолчанию для каждого нового
интерфейса в системе становится зона public. firewalld поставляется с некоторым количеством сконфигурированных зон. Для управления
файрволлом используется команда firewall-cmd. Конфигурационные файлы firewalld находятся в директории /etc/firewalld/
Сконфигрурированные зоны для firewalld
| Параметр | Значение |
|---|---|
| work | Предназначено для использования в рабочем пространстве. Остальные компьютеры сети, по большей части, считаются надёжными (с точки зрения причинения вреда вашему ПК). Разрешены лишь отдельные входящие соединения (ssh, ipp-client, или dhcpv6-client).
|
| drop | Все входящие сетевые пакеты сбрасываются, ответ на них недопустим. Возможны только исходящие сетевые соединения. |
| internal | Предназначено для использования во "внутренних" сетях. Остальные компьютеры сети, по большей части, считаются надёжными (с точки зрения причинения вреда вашему ПК). Разрешены лишь отдельные входящие соединения (ssh, mdns, ipp-client, samba-client, или dhcpv6-client).
|
| external | Предназначено для использования во "внешних" сетях с активированным режимом маскарадинга, особенно с применением роутеров. Остальные компьютеры сети считаются ненадёжными (с точки зрения причинения вреда вашему ПК). Разрешены лишь отдельные входящие соединения (ssh).
|
| trusted | Разрешены все сетевые соединения. |
| home | Предназначено для использования в домашних сетях. Остальные компьютеры сети, по большей части, считаются надёжными (с точки зрения причинения вреда вашему ПК). Разрешены лишь отдельные входящие соединения (ssh, mdns, ipp-client, samba-client, или dhcpv6-client).
|
| dmz | Предназначено для компьютеров в личной "безоружной" зоне с ограниченным доступом к внутренней сети. Разрешены лишь отдельные входящие соединения (ssh).
|
| public | Предназначено для использования в общественных местах. Остальные компьютеры сети считаются ненадёжными (с точки зрения причинения вреда вашему ПК). Разрешены лишь отдельные входящие соединения (ssh и dhcpv6-client). Зона по-умолчанию для новых сетевых интерфейсов.
|
| block | Все входящие сетевые соединения отклоняются с сообщениями icmp-host-prohibited (для IPv4) и icmp6-adm-prohibited (для IPv6). Возможны только инициированные в рамках данной системы сетевые соединения.
|
Список основных команд для firewalld
| Параметр | Значение |
|---|---|
| -- get-default-zone | Получение зоны, указанной по умолчанию для сетевых соединений. |
| -- set-default-zone | Определение зоны по-умолчанию. Команда изменяет уже загруженную конфигурацию и постоянную. |
| --get-zones | Получение списка всех доступных зон. |
| --get-services | Получение списка поддерживаемых постоянно служб. |
| --get-active-zones | Получение списка зон используемых в данный момент (имеют интерфейс или источник привязанный к ним, вместе с информацией об интерфейсе или источнике). |
| --add-source=source[/mask] [--zone=zone] | Привязать трафик из источника к зоне. Если зона не указывается, то используется зона по-умолчанию. |
| --remove-source=source[/mask] [--zone=zone] | Отвязать трафик из источника от зоны, если он был привязан ранее. |
| --add-interface=interface [--zone=zone] | Привязать трафик из интерфейса к зоне. Если зона не указывается, то используется зона по-умолчанию. |
| --change-interface=interface [--zone=zone] | Ассоциировать трафик от интерфейса с зоной. Если зона не указывается, то используется зона по-умолчанию. |
| --list-all [--zone=zone] | Отображение списка интерфейсов, портов и сервисов, сконфигурированных для зоны. Если зона не указывается, то используется зона по-умолчанию. |
| --list-all-zones | Отображение списка интерфейсов, портов и сервисов, сконфигурированных для всех зон. |
| --add-service=service | Разрешить прохождение трафика к демону. Если зона не указывается, то используется зона по-умолчанию. |
| --add-port=portid[-portid]/protocol | Разрешить прохождение трафика на порт/группу портов. Если зона не указывается, то используется зона по-умолчанию. |
| --remove-service=service | Убрать прохождение трафика к демону. Если зона не указывается, то используется зона по-умолчанию. |
| --remove-port=portid[-portid]/protocol | Убрать прохождение трафика на порт/группу портов. Если зона не указывается, то используется зона по-умолчанию. |
| --reload | Перезагрузка правил файрвола без обрыва соединений. |
| --permanent | Опция используется для постоянного применения изменений, однако изменения не распространяются на работающую конфигурацию, но вступят в силу только после перезагрузки. Если опция не задана, то изменения распространяются только на работающую конфигурацию. |
Обычные правила firewalld
Добавим сервис http в зону по-умолчанию:
[root@vm-01 ~]# firewall-cmd --add-service=http --permanent
success
[root@vm-01 ~]# firewall-cmd --list-services
https dhcpv6-client smtp ssh dns
[root@vm-01 ~]# firewall-cmd --reload
success
[root@vm-01 ~]# firewall-cmd --list-services
http dns dhcpv6-client smtp ssh https
[root@vm-01 ~]#"Сложные" правила firewalld
Кроме обычных правил, для открытия/закрытия доступа к сервису или порту, firewalld предлагает системным администраторам
два других способа добавления правил "прямые" (direct) правила и "сложные" (rich).
"прямые" правила
Данный вид правил позволяет напрямую управлять файрволлом. Для их применения требуется знание основных концепций ip(6)tables/ebtables, таких как:
- таблицы
(filter/mangle/nat) - цепочки
(INPUT/OUTPUT/FORWARD/...) - команды
(-A/-D/-I/...) - параметры
(-p/-s/-d/-j/...) - целей
(ACCEPT/DROP/REJECT/...)
Прямые правила должны быть использованы только в качестве последнего средства, когда невозможно использовать конфигурационные файлы зон. Формат правил следующий:
[--permanent] --direct --add-rule { ipv4 | ipv6 | eb } table chain priority argsПеременная priority используется для порядка очередности правил. Цифра 0 используется для постановки правила на самый верх, далее местонахождение правила в списке зависит от его номера.
[root@serverX ~]# firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist
[root@serverX ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 - j blacklist
[root@serverX ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix "blacklisted"
[root@serverX ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP"сложные" правила
"сложные" правила позволяют создавать более комплексные правила для файрволла простым и понятным путем. Язык используемый в написании "сложных" правил
использует ключевые слова со значениями (в формате переменная=значение) и является абстрактным отображением правил ip*tables.
"сложные" правила расширяют текущие элементы зоны (service, port, icmp-block, masquerade, forward-port и source-port) дополнительными адресами приемника и источника, действиями, журналированием
и ограничением на действия и журналирование.
Правила являются частью зоны. Зона может содержать несколько правили. Применяется первое совпавшее правило!
Синтаксис сложных правил, выражается следующим блоком:
rule
[source]
[destination]
service|port|protocol|icmp-block|masquerade|forward-port|source-port
[log]
[audit]
[accept|reject|drop|mark]Порядок следования правил в зоне:
- Перенаправление порта или маскардинг в зоне
- Набор правил журналирования в зоне
- Набор разрешающих правил в зоне
- Набор запрещающих правил в зоне