Автор оригинала: 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»