Как составить список и удалить правила брандмауэра Iptables

0 Акции
0
0
0
0

Введение

Iptables — это брандмауэр, играющий основополагающую роль в обеспечении сетевой безопасности большинства систем Linux. Хотя многие руководства по iptables рассказывают о создании правил брандмауэра для защиты сервера, это руководство фокусируется на другом аспекте управления брандмауэром: составлении списка правил и их удалении.

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

  • Перечислите правила
  • Очистить счетчики пакетов и байтов
  • Удалить правила
  • Очистка цепочки (удаление всех правил в цепочке)
  • Очистить все цепочки и таблицы, удалить все цепочки и принять весь трафик
Предпосылки

В этом руководстве предполагается, что вы используете сервер Linux с установленной командой iptables и у вашего пользователя есть права sudo. Если вам нужна помощь с первоначальной настройкой, обратитесь к руководству по первоначальной настройке сервера в Ubuntu 20.04.

Правила листинга по спецификации

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

Чтобы вывести список всех активных правил iptables по спецификации, выполните команду iptables с опцией -S:

sudo iptables -S
Output
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N ICMP
-N TCP
-N UDP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
...

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

Листинг конкретной сети

Если вы хотите ограничить вывод определенной цепочкой (INPUT, OUTPUT, TCP и т. д.), вы можете указать имя цепочки непосредственно после опции. Например, чтобы отобразить все правила в цепочке TCP, выполните следующую команду:

sudo iptables -S TCP
Output
-N TCP
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT

Теперь давайте рассмотрим альтернативный способ просмотра активных правил iptables — в виде таблицы правил.

Правила перечисления в таблицах

Просмотр правил iptables в табличном виде может быть полезен для сравнения различных правил. Чтобы вывести все активные правила iptables в таблице, выполните команду iptables с опцией -L:

sudo iptables -L

Это позволит создать все текущие правила, отсортированные по цепочке.

Если вы хотите ограничить вывод определенной цепочкой (INPUT, OUTPUT, TCP и т. д.), вы можете указать имя цепочки непосредственно после опции -L.

Давайте рассмотрим пример входной цепочки:

sudo iptables -L INPUT
Output
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
DROP all -- anywhere anywhere ctstate INVALID
UDP udp -- anywhere anywhere ctstate NEW
TCP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
ICMP icmp -- anywhere anywhere ctstate NEW
REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
REJECT tcp -- anywhere anywhere reject-with tcp-reset
REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable

В первой строке вывода указано имя цепочки (в данном случае INPUT), а затем её политика по умолчанию (DROP). В следующей строке содержатся заголовки каждого столбца таблицы, а затем правила цепочки. Рассмотрим, что представляет каждый заголовок:

  • Цель: если пакет соответствует правилу, цель определяет, что с ним делать. Например, пакет может быть принят, отброшен, зарегистрирован или отправлен в другую цепочку для сравнения с другими правилами.
  • prot: протокол, такой как tcp, udp, icmp или все
  • opt: используется редко, в этом столбце показаны параметры IP
  • Источник: IP-адрес источника или подсеть трафика или любое другое место.
  • назначение: IP-адрес назначения или подсеть трафика или любое другое место

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

Отображение количества упаковок и общего размера

При выводе списка правил iptables можно отобразить количество пакетов и их общий размер в байтах, соответствующих каждому правилу. Это часто полезно, когда нужно получить общее представление о том, какие правила соответствуют тем или иным пакетам. Для этого используйте одновременно опции -L и -v.

Например, давайте еще раз посмотрим на цепочку INPUT с опцией -v:

sudo iptables -L INPUT -v
Output
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
284K 42M ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 DROP all -- any any anywhere anywhere ctstate INVALID
396 63275 UDP udp -- any any anywhere anywhere ctstate NEW
17067 1005K TCP tcp -- any any anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
2410 154K ICMP icmp -- any any anywhere anywhere ctstate NEW
396 63275 REJECT udp -- any any anywhere anywhere reject-with icmp-port-unreachable
2916 179K REJECT all -- any any anywhere anywhere reject-with icmp-proto-unreachable
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED

Обратите внимание, что в списке теперь есть два дополнительных столбца: пакеты и байты Это.

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

Сбросить количество пакетов и общий размер

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

Чтобы очистить счетчики всех цепочек и правил, используйте опцию Использовать отдельно:

sudo iptables -Z

Чтобы очистить счетчики для всех правил в определенной цепочке, используйте опцию Используйте и укажите цепочку. Например, чтобы очистить счётчики цепочек. ВХОД Выполните эту команду:

sudo iptables -Z INPUT

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

sudo iptables -Z INPUT 1

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

Удалить правила на основе спецификаций

Один из способов удалить правила iptables — указать их. Для этого выполните команду iptables с опцией -D и указанием правила. Если вы хотите удалить правила этим способом, воспользуйтесь выводом списка правил iptables -S.

Например, если вы хотите удалить правило, которое отбрасывает недопустимые входящие пакеты (-A INPUT -m conntrack –ctstate INVALID -j DROP), вы можете выполнить следующую команду:

sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP

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

Правила удаления на основе цепочки и номера

Другой способ удаления правил iptables — по цепочке и номеру строки. Чтобы указать номер строки правила, перечислите правила в табличном формате и добавьте параметр --line-numbers:

sudo iptables -L --line-numbers
Output
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
2 ACCEPT all -- anywhere anywhere
3 DROP all -- anywhere anywhere ctstate INVALID
4 UDP udp -- anywhere anywhere ctstate NEW
5 TCP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
6 ICMP icmp -- anywhere anywhere ctstate NEW
7 REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
8 REJECT tcp -- anywhere anywhere reject-with tcp-reset
9 REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable
10 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED

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

Определив, какое правило нужно удалить, запишите номер цепочки и строку правила. Затем выполните команду iptables -D, указав номер цепочки и правило.

Например, если мы хотим удалить входящее правило, которое отбрасывает недействительные пакеты, мы видим, что правило 3 находится в цепочке INPUT. Поэтому нам нужно выполнить следующую команду:

sudo iptables -D INPUT 3

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

Мигающие цепи

Iptables позволяет удалить все правила в цепочке или сбросить её. В этом разделе мы рассмотрим несколько способов сделать это.

Промывка цепи

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

Например, чтобы удалить все правила в цепочке ВХОД, выполните эту команду:

sudo iptables -F INPUT

Перепрошивка всех цепей

Чтобы очистить все цепочки, что удалит все правила брандмауэра, можно использовать опцию -F или ее эквивалент -flush:

sudo iptables -F

Очистить все правила, удалить все цепочки и принять все

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

Сначала установите для каждой внутренней цепочки политику по умолчанию «ПРИНЯТЬ». Это необходимо для того, чтобы не допустить блокировки доступа к серверу через SSH:

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

Затем очистите таблицы nat и mangle, очистите все цепочки (-F) и удалите все цепочки, не являющиеся цепочками по умолчанию (-X):

sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X

Теперь ваш брандмауэр разрешает весь сетевой трафик. Если вы теперь перечислите свои правила, вы увидите, что их нет, и остались только три цепочки по умолчанию (INPUT, FORWARD и OUTPUT).

Результат

После изучения этого руководства вы узнали, как просматривать и удалять правила брандмауэра iptables. Помните, что любые изменения iptables, внесённые с помощью команды iptables, являются временными и должны быть сохранены для сохранения после перезагрузки сервера. Подробнее об этом см. в разделе «Сохранение правил» руководства «Общие правила и команды брандмауэра».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться