Iptables — это основной межсетевой экран, который по умолчанию поставляется с большинством дистрибутивов Linux. Он отвечает за обеспечение сетевой безопасности. Он работает путем сравнения пакетов данных с набором правил, предписывая системе принимать, отклонять или перенаправлять соединение в соответствии с правилами. В этом руководстве мы покажем вам, как просматривать и удалять правила, проверять и очищать счетчики пакетов и байтов, а также очищать цепочки. Готовы? Давайте начнем!
Предварительные требования
Прежде чем перейти к руководству, давайте кое-что проясним. Все советы и приемы, продемонстрированные в этом руководстве, выполняются на отдельной виртуальной машине. Рекомендуется сделать так же, так как это исключает любую возможность превратить вашу систему в полный хаос. Только после того, как вы освоите эти процессы, вам следует пытаться применять их в реальных ситуациях.
В этом руководстве мы будем использовать Ubuntu для демонстрации всех шагов. Однако они должны работать аналогичным образом независимо от дистрибутива.
Просмотр правил
Вывод списка правил по спецификации
Сначала давайте проверим все активные правила по спецификации. Выполните следующую команду:
|
1 |
sudo iptables -S |

Если вы ранее работали с созданием правил iptables, вы могли заметить сходство. Вывод напоминает команды, которые использовались для их создания, за исключением части «iptables». Они также имеют структуру, аналогичную конфигурационным файлам правил iptables.
Вывод списка конкретной цепочки
Давайте попробуем что-то более точное. Вместо вывода всех правил iptables, укажите iptables вывести правила конкретной цепочки. Например, TCP, INPUT, OUTPUT и т. д. Для этого укажите имя цепочки после флага «-S»:
|
1 |
sudo iptables -S <chain> |

Вывод списка правил в виде таблиц
Табличный вид полезен при сравнении различных правил. Используйте флаг «-L», чтобы указать iptables вывести все активные правила в табличном формате:
|
1 |
sudo iptables -L |

Вывод содержит все текущие правила, отсортированные по цепочкам. Как и в предыдущем разделе, вывод списка можно отфильтровать по конкретной цепочке, например INPUT, TCP, OUTPUT и т. д. Для этого укажите цепочку после флага «-L»:
|
1 |
sudo iptables -L <chain> |

Давайте немного разберем вывод. В нашем случае из-за правил вывод будет выглядеть немного хаотично. Первая строка вывода объявляет имя цепочки (INPUT) с ее политикой по умолчанию (DROP). Следующая строка определяет заголовки столбцов таблицы. Остальное — это правила цепочки. Давайте посмотрим, что означают заголовки:
- target: если пакет соответствует правилу, этот раздел определяет, какое действие должно быть выполнено. Это может быть прием пакета, сброс, логирование или отправка его в другую цепочку.
- prot: определяет протокол, например, udp, tcp, icmp или all.
- opt: этот столбец указывает параметры IP. Используется редко.
- source: источник пакета (IP-адрес или подсеть). Значение может быть конкретным или anywhere.
- destination: назначение пакета (IP-адрес или подсеть). Значение может быть конкретным или anywhere.
Если вы заметили, последний столбец не имеет заголовка. Это связано с тем, что он используется для указания параметров правила. Он будет содержать все части правила, которые не поместились в предыдущие поля. Он может содержать что угодно: от портов источника/назначения до состояния соединения пакетов и т. д.
Количество пакетов и совокупный размер
Очистка счетчиков пакетов и байтов
При выводе списка правил iptables мы также можем проверить количество пакетов и совокупный размер пакетов в байтах, которые соответствовали каждому конкретному правилу. Это полезная метрика, когда вам нужно получить примерное представление о том, какие правила соответствуют пакетам.
В этом примере мы будем использовать цепочку INPUT. На этот раз добавьте флаг «-v», который означает подробный режим:
|
1 |
sudo iptables -L INPUT -v |

Вы заметите, что вывод таблицы теперь включает два дополнительных поля: pkts и bytes.
Сброс счетчиков пакетов и совокупного размера
В некоторых ситуациях вам может потребоваться сбросить счетчики, которые мы демонстрировали ранее. При перезагрузке системы счетчики сбрасываются автоматически. Вы также можете принудительно сбросить их вручную. Мы будем использовать флаг «-Z» для сброса счетчиков пакетов и общего объема данных:
|
1 |
sudo iptables -v -Z |

Обратите внимание, что эта команда сбросит счетчики всех цепочек. Как и в случае с другими командами, можно сбросить счетчик для конкретных цепочек. Например, следующая команда сбросит счетчики для цепочки INPUT:
|
1 |
sudo iptables -v -Z <chain> |

Можно сделать сброс счетчика более точным. Вы можете сбросить счетчик для конкретного правила в определенной цепочке. Для этого добавьте номер правила после имени цепочки:
|
1 |
sudo iptables -v -Z <chain> <rule_number> |
Удаление правил
Удаление правил по спецификации
Существует несколько способов удаления правил iptables. Первый способ — удаление по спецификации правила. Для удаления мы будем использовать флаг «-D», за которым следует спецификация правила:
|
1 |
sudo iptables -v -D INPUT -s 172.217.194.113 -j DROP |

Если вы уже добавляли правила iptables ранее, вы заметите сходство. Единственное, что здесь изменилось, — это флаг «-D» вместо флага «-A».
Удаление правил по цепочке и номеру
Удаление правил по их спецификации требует немного больше усилий, верно? Что если бы мы могли удалять их, не запоминая спецификацию правила? Давайте удалим правила по их цепочке и номеру! По сравнению с первым методом (удаление по спецификации), этот относительно проще, так как вам не нужно иметь под рукой всю спецификацию.
Для этого метода требуются цепочка и номер строки целевого правила. Где взять номер строки? Выполните следующую команду, чтобы определить его:
|
1 |
sudo iptables -L --line-numbers |

Вы получите большой вывод со всеми правилами и номерами их строк. Чтобы сузить вывод, укажите имя цепочки после флага «-L»:
|
1 |
sudo iptables -L <chain> --line-numbers |

В выводе вы заметите дополнительный столбец num. Он указывает номер строки для каждого правила. Как только мы определили целевой номер, выполните удаление:
|
1 |
sudo iptables -v -D <chain> <line_number> |
Очистка цепочек
Что такое очистка цепочки в случае iptables? Это процесс удаления всех правил в определенной цепочке. Если вам нужно массово удалить правила, вы можете использовать этот метод. Перед очисткой цепочки мы настоятельно рекомендуем сделать резервную копию существующих правил с помощью iptables-save. Это встроенный инструмент iptables, который выведет все текущие цепочки и правила. Вывод можно экспортировать в текстовый файл:
|
1 |
sudo iptables-save > ~/Desktop/iptables-backup.txt |
![]()
Очистка одной цепочки
Давайте посмотрим, как очистить цепочку. Используйте флаг «-F», за которым следует целевая цепочка:
|
1 |
sudo iptables -v -F <chain> |

Очистка всех цепочек
Прежде чем очищать все цепочки, убедитесь, что вы понимаете, что делаете. Это действие удалит все правила брандмауэра iptables. Вам следует заранее создать резервную копию правил iptables.
Готовы? Очистите все цепочки iptables, выполнив следующую команду:
|
1 |
sudo iptables -v -F |

Очистка правил, удаление цепочек и разрешение всего трафика
Выполнение шагов, описанных в этом разделе, фактически отключит брандмауэр, разрешив неограниченный сетевой трафик. Как и в предыдущем разделе, перед продолжением мы рекомендуем сделать резервную копию iptables. Сначала мы изменим политику по умолчанию для каждой из встроенных цепочек на ACCEPT. Это необходимо для того, чтобы iptables не заблокировал вам доступ к серверу по SSH:
|
1 |
sudo iptables -v -P INPUT ACCEPT && sudo iptables -v -P FORWARD ACCEPT && sudo iptables -v -P OUTPUT ACCEPT |

Теперь очистите таблицы nat и mangle:
|
1 2 |
sudo iptables -v -t nat -F sudo iptables -v -t mangle -F |


Очистите все цепочки и удалите все пользовательские цепочки:
|
1 2 |
sudo iptables -v -F sudo iptables -v -X |


Далее давайте проверим результат:
|
1 |
sudo iptables -L --line-numbers |
Заключение
Iptables — это мощный брандмауэр. Надеемся, это руководство помогло вам узнать, как выводить список и удалять правила брандмауэра iptables. И не забудьте потренироваться перед тем, как применять их в реальных условиях.
Приятной работы!



Комментарии
Комментариев пока нет. Будьте первым.