Автор оригинала: Kishor Pawar.
Вступление:
NetFilter Набор крючков внутри ядра Linux, который позволяет модулям ядра зарегистрировать функции обратного вызова со стеком сети. Зарегистрированная функция обратного вызова затем вызывается обратно для каждого пакета, который проходит соответствующий крюк в сети сети.
iptables Программа брандмауэра, используемая во всех ароматах Linux. С помощью этой программы пользователь может контролировать и принимать меры на пакетных переводах на машину Linux.
iptables Это универсальная структура таблицы, где вы определяете правила накомпливы. Каждое правило в IPTable состоит из ряда классификаторов ( iptables matchs — условие) и одно подключенное действие ( iptables Target — действие, которое нужно предпринять).
Доступны сторонние инструменты, которые могут добавлять правила к iPtables, и детали можно найти в следующем изображении.
Терминология:
NetFilter: Это модуль уровня ядра, который контролирует передачу пакета.Iptables.: Это может быть связано между программой брандмауэра (командной строки) и фактическим таблицем правил брандмауэра.iptables-services: Это имя пакета для обслуживания, которое можно установить наCentOS 7.x.. То же самое можно установить наCentOS 6.xиAmazon Linux Amiсiptablesимя пакета. Это использует тот же синтаксис, что иIptables.(программа командной строки), но она хранит свои правила в/etc/sysconfig/IP [6] таблицыFirewalld: Это программа брандмауэра, доступная вCentosи может быть установлен наUbuntuиDebian 8Отказufw.: Это программа брандмауэра, обычно найденная по умолчанию вDebianароматы. Эта программа функционально синхронизация сiptables(командная строка программы).цепь: IP-пакеты разделены на цепи, такие как:Вход,Выход,ВПЕРЕД,Пребуринг,PostroutingОтказВход: Это цепочка для всехвходящиепакеты. Мы можем применять правила и политики для этой цепи, и они будут применяться ко всем входящим пакетам.Выход: Это цепочка для всехИсходящиепакеты. Мы можем применять правила и политики для этой цепи, и они будут применяться ко всем исходящим пакетам.ВПЕРЕД: Это цепочка для всехПеренаправленпакеты. Мы можем применить правила и политики для этой цепочки, и они будут применяться ко всемПеренаправленПакеты (пакеты могут быть перенаправлены на ту же машину на другом интерфейсе или могут быть направлены на другую машину).политика: Это обычно называется политикой по умолчанию и может быть либоПринятьилиУРОНИТЬ. Применяется после того, как все правила проверяются на соответствие. Когда правило соответствует пакетам, все другие правила и политики игнорируются.ПРИНИМАТЬ: Это одна из политик по умолчанию, которую мы можем обратиться в цепочки. Если установлено, он позволяет всем пакетам, кроме указанных правил.УРОНИТЬ: Это одна из политик по умолчанию, которую мы можем обратиться в цепочки. Если установлен, он блокирует все пакеты, кроме указанных правил.зоны: Зона определяет уровень доверия к сетевым соединениям. Зоны применяются только на входящих пакетов. Это однозначное соотношение, что означает, что соединение может быть частью одной зоны, но зона может быть использована для многих сетевых подключений. Есть следующие зоны.падение: Любая входящих сетевых пакетов упала, и ответа нет. Возможна только исходящие сетевые соединения.Блок: Любые входящие сетевые соединения отклоняются с помощью ICMP-хостинга-запрещенного сообщения для IPv4 и ICMP6-ADM-запрещенного для IPv6. Возможна только сетевые соединения, инициированные в этой системе.публичный: Для использования в общественных местах. Это работает какПРИНИМАТЬВсе по умолчанию.внешний: Для использования на внешних сетянах с Masquerading включен специально для маршрутизаторов. Это работает какПРИНИМАТЬВсе по умолчанию.ДМЗ: Для компьютеров в вашей демилитаризованной зоне, которые публично доступны с ограниченным доступом к вашей внутренней сети. Это также работает какПРИНИМАТЬВсе по умолчанию.Работа: Для использования в рабочих местах. Это также работает какПРИНИМАТЬВсе по умолчанию.дом: Для использования в домашних районах. Это также работает какПРИНИМАТЬВсе по умолчанию.внутренний: Для использования на внутренних сетях. Это также работает какПРИНИМАТЬВсе по умолчанию.доверенный: Все сетевые соединения принимаются.
Команды:
iptables:
IP [6] таблицы -L [Ввод | Выход | вперед]Перечислите все правила в выбранной цепи. Если цепь не выбрана, все цепи перечислены.
[kishor@localhost ~]$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination [kishor@localhost ~]$
IP [6] Таблицы -P {ввод | Выход | Переслать} {Принять | Drop}Установите политику для цепочки к данной цели
[kishor@localhost ~]$ sudo iptables -P FORWARD DROP [kishor@localhost ~]$ sudo iptables -L FORWARD Chain FORWARD (policy DROP) target prot opt source destination REJECT all -- anywhere anywhere reject-with icmp- host-prohibited [kishor@localhost ~]$
IP [6] Таблицы - {вход | выход | World} -P {TCP | UDP} --dport {22 | 80 | 443} -j {Принять | Drop}Установите правило, чтобы принять или пакеты пакетов для цепочки на конкретный порт
[kishor@localhost ~]$ sudo iptables -A FORWARD -p tcp --dport 22 -j DROP
[kishor@localhost ~]$ sudo iptables -L FORWARD
Chain FORWARD (policy DROP)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
DROP tcp -- anywhere anywhere tcp dpt:ssh
[kishor@localhost ~]$
sudo iptables - {ввод | вывод | вперед} -M string --hex-string "| 0a | Google | 03 | Com" --algo bm -j принимаютВыше представляет правило, при добавлении в iptables позволит пакетам и из домена Google.
kishor@localhost:~$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 192.168.0.100 anywhere ACCEPT icmp -- anywhere anywhere icmp echo-request ACCEPT all -- anywhere anywhere STRING match "|0a636c6f7564726178616b036e6574|" ALGO name bm TO 65535 kishor@localhost:~$
iptables -a {ввод | вывод | Переслать} -p tcp -s xxx.xxx.xxx.xxx -j {Принять | падение}IP6Tables -a {ввод | Выход | Переслать} -P TCP -S XXXX: XXXX: XXXX: XXXX: XXXX: XXXX -J {Принять | Drop}Установите правило, чтобы разрешить или отбросить соединения от конкретных IPS.
Firewalld:
Firewall-Cmd - Zero-Zone-ZoneВозвращает значение зоны по умолчанию (Foxback) для всех интерфейсов. Зона по умолчанию применяется только в том случае, если активная зона не установлена для интерфейса. Зона по умолчанию постоянна по умолчанию.
kishor@localhost:~$ firewall-cmd --get-default-zone public kishor@localhost:~$
Брандмауэр-CMD - задача - зона по умолчаниюУстанавливает зону по умолчанию для всех интерфейсов.
kishor@MWPYT113:~$ firewall-cmd --set-default-zone=trusted success kishor@MWPYT113:~$ sudo firewall-cmd --get-default-zone trusted kishor@MWPYT113:~$
Firewall-CMD - Джет-активные зоныВозвращает активные зоны для каждого доступных интерфейсов. Это имеет приоритет над зоной по умолчанию.
kishor@MWPYT113:~$ sudo firewall-cmd --get-active-zones
internal
interfaces: eht0
trusted
interfaces: br0
block
interfaces: virbr0
kishor@MWPYT113:~$
sudo firewall-cmd [--permanent] --zone = {Доверенные | Публичные | DMZ | Drop | Блок | Внутренний | Главная | Работа | Внешний} --change-интерфейс = <Имя интерфейса>Устанавливает активную зону для определенного интерфейса. Если добавляется аппаратура, результат будет сохраняться перезагрузки. Чтобы вступить в силу постоянные изменения, вам придется перезагрузить брандмауэльд, как показано ниже.
kishor@MWPYT113:~$ sudo firewall-cmd --zone=trusted --change-interface=br0 success kishor@MWPYT113:~$ sudo firewall-cmd --zone=internal --change-interface=eht0 success kishor@MWPYT113:~$ sudo firewall-cmd --zone=block --change-interface=virbr0 success kishor@MWPYT113:~$
Firewall-Cmd [--permanent]Установите правило, чтобы принять или отклонить соединение от определенного IP-адреса.
kishor@MWPYT113:~$ sudo firewall-cmd --add-rich-rule="rule family='ipv4' source address='192.168.0.11' reject" success kishor@MWPYT113:~$
UFW:
Инструмент конфигурации брандмауэра по умолчанию для Ubuntu является UFW. Разработано для облегчения конфигурации брандмауэра iptables, UFW предоставляет пользовательский способ создания брандмауэра на основе IPv4 или IPv6.
- Включить UFW
Чтобы включить UFW с набором правил по умолчанию:
sudo ufw. включить
Чтобы проверить состояние UFW:
sudo ufw status verbose
Вывод должен быть таким:
kishor@localhost:~$ sudo ufw status verbose [sudo] password for kishor: Status: active Logging: on (low) Default: deny (incoming), allow (outgoing) New profiles: skip kishor@localhost:~$
Вы также можете прочитать правила от /etc/default/ufw
- Отключить UFW
Чтобы отключить использование UFW:
Sudo UFW отключить
- Разрешить и отрицать (конкретные правила)
Sudo UFW Разрешить
пример: Чтобы допустить входящий пакет TCP и UDP на порт 53
sudo ufw разрешит 53
Пример: разрешить входящие пакеты TCP на порт 53
Sudo UFW Разрешить 53/TCP
Пример: разрешить входящие пакеты UDP на порт 53
Sudo UFW Разрешить 53/UDP
* Deny
sudo ufw deny
Пример: отрицать пакеты TCP и UDP на порту 53
sudo ufw deny 53
Пример: отрицать входящие пакеты TCP на порт 53
sudo ufw deny 53/tcp
Пример: отрицать входящие пакеты UDP на порт 53
sudo ufw deny 53/udp
- Удалить существующее правило
Чтобы удалить правило, просто префикс исходного правила с удалением. Например, если исходное правило было:
UFW Deny 80/TCP
- Используйте это, чтобы удалить его:
sudo ufw delete deny 80/tcp
Sudo UFW Разрешить <имя обслуживания>
пример: Чтобы позволить SSH по имени
sudo ufw разрешать ssh
- Отрицать по имени службы
sudo ufw deny <имя обслуживания>
Пример: отрицать SSH по имени
sudo ufw deny sshstatus
- Чтобы проверить состояние UFW
sudo ufw status.
Если UFW не был включен, вывод будет:
sudo ufw status Положение дел: неактивный
Чтобы разрешить переадресацию портов, когда UFW работает, выполните следующие действия:
Sudo Vim./etc/default/ufw
Установите политику по умолчанию перед Принять , Падение или Отклонить Отказ Обратите внимание, что если вы измените это, вы, скорее всего, захотите настроить свои правила Default_forward_policy = "Примите" Отказ
Оригинал: «https://www.codementor.io/@kishorpawar/a-bit-about-firewalls-in-linux-fadw9zrws»