Сброс правил в IPtables
Для того, чтобы остановить действие правил IPtables в Linux VPS, можно использовать несколько способов. Для работы каждого из них необходимо подключение к серверу по SSH с правами root.
Остановка работы IPtables
Остановить службу можно командами:
/etc/init.d/iptables stop
service iptables stop
В дополнение к вышеуказанным командам можно убрать IPtables из автозагрузки командой:
chkconfig iptables off
Создание скрипта для сброса правил
Данный вариант скрипта снимает все ограничения в IPtables на прием или отправку любых пакетов.
В директории /root создаем файл, например, с именем iptables-drop.sh
touch iptables-drop.sh
Открываем файл любым текстовым редактором, например, nano:
nano iptables-drop.sh
Копируем в файл следующий текст:
#!/bin/sh echo "Stopping firewall and allowing everyone. " iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT
Сохраняем изменения сочетанием клавиш CTRL+O и выходим из Nano командой CTRL+X
Разрешаем файл на исполнение:
chmod u+x /root/iptables-drop.sh
Запускаем файл скрипта для сброса правил:
sh /root/iptables-drop.sh
Результат работы этого файла можно посмотреть путем вывода итогового списка существующих правил в IPtables при помощи команды:
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
Примечание: Внесенные скриптом изменения остаются в силе до перезагрузки VPS или IPtables. В случае выполнения перезагрузки необходимо вновь запустить файл скрипта, чтобы исходные правила были сброшены.
Вывод и удаление правил IPTables
IPTables – это фаервол (или брандмауэр), играющий очень важную роль в сетевой безопасности большинства дистрибутивов Linux. Данное руководство сфокусировано на различных аспектах управления фаерволом: выводе списка правил, удалении правил и т.п.
Это руководство охватывает следующие вопросы:
- Вывод списка правил
- Очистка счетчиков пакетов и байтов
- Удаление правил
- Сброс цепочек (удаление всех правил цепи)
- Сброс всех цепочек и таблиц, удаление всех цепочек правил, разрешение всего трафика.
Примечание: При работе с брандмауэрами очень важно быть внимательным, иначе можно закрыть себе доступ к собственному серверу, заблокировав SSH-трафик (порт 22 по умолчанию). Если вы случайно заблокировали себе доступ к серверу, подключитесь к нему с помощью консоли, чтобы исправить настройки брандмауэра. Также решить эту проблему может перезагрузка сервера (только в случае если сохраненные правила брандмауэра разрешают трафик SSH).
Требования
Для начала нужно настроить сервер и создать не-root пользователя с расширенными правами. Подробнее об этом можно прочитать в руководствах:
- Начальная настройка сервера Ubuntu 14.04
- Начальная настройка сервера CentOS 7
Вывод правил IPTables
Существует два способа просмотра активных правил фаервола IPTables:
- В виде таблицы;
- В виде списка спецификаций правил.
Оба метода предоставляют примерно одинаковую информацию в разных форматах.
Вывод правил по спецификации
Чтобы вывести список правил по спецификации, запустите:
sudo iptables -S
Example: Rule Specification Listing
-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
Вывод цепочки правил
Чтобы ограничить вывод до определённой цепочки (INPUT, OUTPUT, TCP и т.п.), нужно просто указать имя цепочки после опции –S. К примеру, чтобы получить все правила цепи TCP, нужно запустить:
sudo iptables -S TCP
Example: TCP Chain Rule Specification Listing
-N TCP
-A TCP -p tcp -m tcp —dport 22 -j ACCEPT
Вывод правил в виде таблиц
Такой формат вывода правил iptables позволяет сравнивать разные правила.
Чтобы вывести все активные правила в виде таблицы, запустите iptables с опцией –L:
sudo iptables -L
Это выведет все текущие правила брандмауэра, отсортированные по цепочкам.
Чтобы ограничить вывод до определённой цепочки, просто укажите имя нужной цепи после опции –L. Например:
sudo iptables -L INPUT
Example: Input Chain Rule Table Listing
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).Следующая строка содержит заголовки всех столбцов в таблице, а затем следуют правила цепочки. Рассмотрим подробнее каждый заголовок:
- target: определяет, что делать с пакетом, если он соответствует правилу. Например, пакет может быть принят, сброшен, внесен в журнал или отправлен другой цепочке правил.
- prot: задаёт протокол (например, TCP, UDP, ICMP и т.д.).
- opt: показывает параметры IP (редко используется).
- source: исходный IP-адрес или подсеть трафика (или anywhere).
- destination: целевой IP-адрес или подсеть трафика (или anywhere).
Последний столбец без названия определяет опции правила (опцией в данном случае называется любая часть правила, которая не относится ни к одному из предыдущих столбцов).
Вывод количества пакетов и байтов
При просмотре правил iptables можно также запрашивать количество пакетов и байтов, которые совпали с каждым конкретным правилом. Для этого просто используйте опции -L и -v.
К примеру, запросите цепочку INPUT:
sudo iptables -L INPUT -v
Example: Verbose Listing
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
Обратите внимание: в выводе добавилось два столбца по имени pkts и bytes.
Сброс счетчиков пакетов и байтов
Чтобы очистить счетчики пакетов и байтов, используйте опцию –Z. Эти счетчики сбрасываются после перезагрузки системы. Это позволяет узнать, получает ли сервер какой-либо трафик, совпадающий с правилами брандмауэра.
Итак, чтобы очистить счётчики для всех цепочек и правил, используйте опцию –Z без дополнительных параметров:
sudo iptables -Z
Чтобы очистить счётчики для всех правил определённой цепи, укажите имя цепочки после –Z. Например, чтобы сбросить счётчики цепи INPUT, нужно ввести:
sudo iptables -Z INPUT
Чтобы сбросить счётчики для конкретного правила, укажите имя цепочки и номер правила. Например, чтобы сбросить счётчики первого правила цепи INPUT, нужно использовать:
sudo iptables -Z INPUT 1
Удаление правил iptables
Удалять правила брандмауэра iptables тоже можно двумя способами.
Удаление правил по спецификации
Первый способов удаления правил Iptables – использование спецификации правила. Для этого нужно запустить команду iptables с опцией –D, после которой указывается спецификация правила. Чтобы удалить правила таким способом, можно обратиться за помощью к выводу уже знакомой команды:
К примеру, чтобы удалить правило, которое сбрасывает недопустимые входящие пакеты (-A INPUT -m conntrack –ctstate INVALID -j DROP), нужно запустить команду:
sudo iptables -D INPUT -m conntrack —ctstate INVALID -j DROP
Примечание: При этом нужно исключить опцию –А, которая задаёт положение правила во время создания.
Удаление правила по номеру и цепочке
Кроме того, правило можно удалить, зная имя цепочки и номер строки, к которой оно находится. Чтобы узнать номер строки правила, используйте опцию –line-numbers:
sudo iptables -L —line-numbers
[secondary_output Example Output: Rules with Line Numbers] 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, указав после опции эти данные. К примеру, чтобы удалить правило цепочки INPUT, которое сбрасывает недействительные пакеты, нужно использовать:
sudo iptables -D INPUT 3
Сброс цепочек правил
Брандмауэр Iptables предоставляет возможность удалить все правила цепочки – сбросить цепочку правил. Данный раздел рассматривает несколько способов сделать это.
Примечание: Будьте внимательны, не заблокируйте себя на собственном сервере, случайно сбросив цепочку правил с политикой drop или deny. Если же вы всё-таки заблокировали себя, используйте консоль, чтобы остановить доступ.
Сброс одной цепи
Чтобы сбросить определённую цепочку правил, используйте флаг –F (или его полную версию –flush), указав имя цепочки.
Например, чтобы удалить все правила цепочки INPUT, запустите:
sudo iptables -F INPUT
Сброс всех цепочек
Чтобы сбросить все цепочки правил – то есть, удалить все правила фаервола, – используйте опцию –F (или –flush) без дополнительных параметров.
sudo iptables -F
Сброс всех правил, удаление всех цепочек, разрешение всего трафика
Этот раздел покажет, как сбросить все правила, цепочки и таблицы брандмауэра и разрешить весь трафик.
Примечание: Это полностью отключит фаервол. Следуйте данному разделу только в том случае, если хотите заново настроить правила фаервола.
Сначала настройте стандартную политику всех цепочек; это должна быть политика ACCEPT. В основном это нужно для того, чтобы случайно не заблокировать себе доступ к собственному серверу.
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 правило» я хочу рассказать как можно удалять правила с iptables. На наглядных примерах, я покажу как пользоваться iptables на вашем сервере.
Вывести правила.
Для начала смотрим какие правила и цепочки у нас имеются:
# iptables -L -n
Праметры:
-L — Вывести все правила.
-n — Отображать IP адрес с портом в числах (не используя DNS сервера для определения имен. Ускоряет отображение).
можно еще использовать параметр
-v — Данная опция, выводит дополнительную информацию. Этот параметр показывает имя интерфейса, его опции, TOS маски, отображает суффиксы ‘K’, ‘M’ or ‘G’.
Так же можно вывести список правил с нумерацией строк:
—line-numbers — вывод пронумерованных правил.
Удалить правила файрвола.
Для цепочки INPUT.
Выполняем поиск удобным для вас способом:
# iptables -L INPUT --line-numbers # iptables -L INPUT -n --line-numbers | less # iptables -L INPUT -n --line-numbers | grep 173.67.34.1
Можно просмотреть правила для конкретной цепочки:
# iptables -L your_chain_name -n -v
Чтобы удалить используем:
# iptables -D INPUT номер_строки
Можно удалить и по-другому, если знаете IP адрес источника:
# iptables -D INPUT -s 173.67.34.1 -j DROP
Для цепочки POSTROUTING.
Выполняем поиск удобным для вас способом:
# iptables -t nat -L POSTROUTING --line-numbers # iptables -L POSTROUTING -n --line-numbers | less # iptables -L POSTROUTING -n --line-numbers | grep 173.67.34.1
Чтобы удалить используем:
# iptables -t nat -D POSTROUTING номер_строки
Можно удалить и по-другому, если знаете IP адрес:
# iptables -D POSTROUTING -s 173.67.34.1 -j DROP
Для цепочки OUTPUT.
Выполняем поиск удобным для вас способом:
# iptables -t nat -L OUTPUT --line-numbers # iptables -L OUTPUT -n --line-numbers | less # iptables -L OUTPUT -n --line-numbers | grep 173.67.34.1
Чтобы удалить используем:
# iptables -t nat -D OUTPUT номер_строки
Можно удалить и по-другому, если знаете IP адрес:
# iptables -D OUTPUT -s 173.67.34.1 -j DROP
Например, нужно удалить порт с правил iptables, можно сделать это так:
# iptables -D INPUT -p tcp --dport 8081 -j ACCEPT # iptables -D INPUT -p tcp -m state --state NEW -m tcp --dport 8081 -j ACCEPT
Тема «Удалить iptables правило» подошла к завершению.
Как удалить правило iptables и все правила
Удалить правило iptables можно по его номеру или ориентируясь на содержание сохранив предварительно список правил в файл и загрузив обратно данные из файла после редактирования.
Цепочки iptables, просмотр правил
iptables представляет собой системный сетевой фильтр состоящий из нескольких цепочек, правил и политики фильтрации. Схематично структура выглядит так:

Чтобы просмотреть список используемых системой правил нужно выполнить команду iptables-save. Она сохраняет все изменения в файл если вывод перенаправить, по умолчанию выводит правила в терминал.
Как удалить одно правило iptables по номеру строки
Можно удалить одно правило — например, по номеру строки
Так выводится пронумерованный список правил:
Chain INPUT (policy ACCEPT) num target prot opt source destination 1 f2b-sshd tcp -- anywhere anywhere multiport dports ssh 2 ACCEPT tcp -- anywhere anywhere tcp dpt:domain 3 ACCEPT udp -- anywhere anywhere udp dpt:domain 4 f2b-sshd tcp -- anywhere anywhere multiport dports ssh 5 ispmgr_deny_ip all -- anywhere anywhere 6 ispmgr_allow_ip all -- anywhere anywhere 7 ispmgr_allow_sub all -- anywhere anywhere 8 ispmgr_deny_sub all -- anywhere anywhere 9 ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED 10 ACCEPT tcp -- anywhere anywhere ctstate NEW multiport dports heathview:35999 11 ACCEPT tcp -- anywhere anywhere ctstate NEW multiport dports ftp-data:ssh,smtp,http,https,pop3,imap,urd,submission,imaps,pop3s,domain,mysql,postgres,44477 12 ACCEPT tcp -- anywhere anywhere ctstate NEW multiport dports vlsi-lm 13 ACCEPT udp -- anywhere anywhere ctstate NEW multiport dports domain 14 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED 15 ACCEPT icmp -- anywhere anywhere 16 ACCEPT all -- anywhere anywhere 17 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
Удалим одно из них с указанием таблицы, и цепочки (iptables -t TABLE -D INPUT номер_строки)
Возьмем девятое правило из списка:
Также можно удалять правила применяя ключ -D без номера, приводя полное правило:
Команда приведенная ниже разрешит обращения по перечисленным портам
iptables -A INPUT -p tcp -m conntrack —ctstate NEW -m multiport —dports 20:22,25,80,443 -j ACCEPT
С ключом -D правило будет удалено
iptables -D INPUT -p tcp -m conntrack —ctstate NEW -m multiport —dports 20:22,25,80,443 -j ACCEPT
Каждый раз необходимо выполнять iptables-save чтобы проверить результат.
Если нужно отредактировать несколько правил или много правил, то проще сначала сохранить все правила в файл. Отредактировать его, затем загрузить их вновь.
Как сбросить все правила iptables
В iptables удалить все правила можно удалить выполнив в консоли команду iptables с флагом -F (flush)
Перед выполнением команды обязательно нужно выполнить iptables-save и убедиться в том, что политика для входящих пакетов на INPUT установлена в ACCEPT, в противном случае можно потерять доступ к серверу.
Перед очисткой правил всегда нужно их просмотреть и сохранить в файл.
Все правила и политики можно вывести такой командой
-P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT
В примере выше политики для INPUT, FORWARD и OUTPUT установлены в состояние ACCEPT. Значит после сброса правил iptables -F доступ к серверу извне потерян не будет.
С INPUT DENY было бы иначе. При такой конфигурации политикой запрещается доступ, за счет правил разрешается, при сбросе правил остается только запрет.
Если нам интересны правила для определенной цепочки нужно использовать ключ -L и название цепочки. Их можно сохранить отдельно
Читайте про сохранение правил iptables после перезагрузки