Правила просмотра iptables Ubuntu

Обновлено: 21.11.2024

Iptables — это утилита брандмауэра, которая по умолчанию доступна во всех дистрибутивах Linux. Iptables обычно используются для настройки, обслуживания и проверки таблиц правил фильтрации пакетов в ядре Linux.

Правила Iptables, которые больше не требуются или добавлены по ошибке, необходимо удалить. После изучения этого руководства вы узнаете о различных способах отображения и удаления правил iptables.

Для запуска команд iptables требуются права пользователя root или sudo.

Чтобы перечислить (просмотреть) все правила в iptables

Чтобы перечислить все правила во всех цепочках (INPUT, OUTPUT и FORWARD), iptables использует параметр --list или -L.

Проверьте синтаксис списка iptables:

Ниже в примере показаны все цепочки без правил:

Позвольте мне показать вам еще один пример с правилом в цепочке 'OUTPUT'.

Удалить все правила iptables (все цепочки)

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

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

Следующая команда удалит все цепочки из iptables:

После выполнения вышеуказанной команды ваш iptables станет полностью чистым. Вы можете проверить вывод с помощью команды iptables --list.

Удалить определенную цепочку

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

Следующая команда удалит все правила в цепочке OUTPUT:

Как удалить конкретное правило внутри цепочки

Внутри цепочки можно удалить отдельное правило. У нас есть два варианта: удаление по совпадению с правилом или по указанному номеру правила.

Удалить по совпадению с правилом

Следующая команда удаляет правило в цепочке ввода путем сопоставления.

Удалить по указанному номеру правила

Чтобы удалить правило по определенному номеру, необходимо сначала указать номер правила ( iptables -L INPUT --line-numbers ).

Ниже в примере показаны номера строк для правил в цепочке «ВХОД».

Итак, теперь у нас есть номер правила. Давайте продолжим и удалим второе правило, используя опцию -D.

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

Список всех правил nat

Удалить все правила nat

Заключение

Вы должны быть осторожны, прежде чем удалять правило iptables, и порекомендуйте перед этим сделать резервную копию. Надеюсь, вам понравилось читать, и, пожалуйста, оставьте свое предложение в разделе комментариев ниже.

Теги FirewallIptables slug; $list = get_page_by_title('related', 'OBJECT', 'wp_show_posts'); wpsp_display($list->ID, 'tax_term="' . $cat_slug . '"' );*/ ?>

Iptables — это брандмауэр, установленный по умолчанию во всех официальных дистрибутивах Ubuntu (Ubuntu, Kubuntu, Xubuntu). Когда вы устанавливаете Ubuntu, iptables есть, но он по умолчанию разрешает весь трафик. Ubuntu поставляется с ufw — программой для простого управления брандмауэром iptables.

Существует множество информации об iptables, но большая ее часть довольно сложна, и если вы хотите сделать несколько основных вещей, это руководство для вас.

Основные команды

перечисляет ваши текущие правила в iptables. Если вы только что настроили свой сервер, у вас не будет правил, и вы должны увидеть

Основные параметры Iptables

  • НОВОЕ – соединение еще не обнаружено.
  • СВЯЗАННЫЕ — подключение новое, но оно связано с другим уже разрешенным подключением.
  • УСТАНОВЛЕНО — соединение уже установлено.
  • INVALID – по какой-то причине не удалось идентифицировать трафик.

Разрешение установленных сеансов

  • В приведенном выше правиле нет пробелов по обе стороны от запятой в ESTABLISHED,RELATED

Если указанная выше строка не работает, возможно, вы используете кастрированный VPS, поставщик которого не предоставил расширение, и в этом случае в качестве крайней меры можно использовать более низкую версию:

Разрешение входящего трафика через определенные порты

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

Чтобы разрешить входящий трафик через SSH-порт по умолчанию (22), вы можете разрешить iptables разрешать весь TCP-трафик через этот порт.

  • добавьте это правило к цепочке ввода (-A INPUT), чтобы мы могли отслеживать входящий трафик
  • проверьте, не TCP ли это (-p tcp).
  • если да, проверьте, идет ли ввод на порт SSH (--dport ssh).
  • если это так, примите ввод (-j ПРИНЯТЬ).

Давайте проверим правила: (показаны только первые несколько строк, вы увидите больше)

Теперь разрешим весь входящий веб-трафик

Проверив наши правила, мы обнаружили

Мы специально разрешили tcp-трафик к ssh- и веб-портам, но, поскольку мы ничего не блокировали, любой трафик все еще может поступать.

Блокировка трафика

После того как принято решение о приеме пакета, на него больше не действуют никакие правила. Поскольку наши правила, разрешающие ssh и веб-трафик, идут первыми, пока наше правило, блокирующее весь трафик, идет после них, мы все равно можем принимать тот трафик, который нам нужен. Все, что нам нужно сделать, это поставить правило, чтобы блокировать весь трафик в конце.

Поскольку мы не указали интерфейс или протокол, блокируется любой трафик для любого порта на любом интерфейсе, за исключением веб и ssh.

Редактирование iptables

Единственная проблема с нашей установкой на данный момент заключается в том, что даже петлевой порт заблокирован. Мы могли бы написать правило отбрасывания только для eth0, указав -i eth0, но мы также могли бы добавить правило для замыкания на себя. Если мы добавим это правило, оно придет слишком поздно — после того, как весь трафик будет отброшен. Нам нужно вставить это правило перед этим. Поскольку это большой объем трафика, мы вставим его в качестве первого правила, чтобы оно обрабатывалось первым.

Первая и последняя строки выглядят почти одинаково, поэтому мы опишем iptables более подробно.

Теперь вы можете увидеть гораздо больше информации. Это правило на самом деле очень важно, так как многие программы используют петлевой интерфейс для связи друг с другом. Если вы не позволите им говорить, вы можете сломать эти программы!

Ведение журнала

В приведенных выше примерах трафик не регистрируется. Если вы хотите регистрировать потерянные пакеты в системном журнале, это будет самый быстрый способ:

Дополнительные идеи по ведению журнала см. в разделе "Советы".

Сохранение iptables

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

Конфигурация при запуске

ВНИМАНИЕ! Iptables и NetworkManager могут конфликтовать. Кроме того, если вы достаточно обеспокоены безопасностью, чтобы установить брандмауэр, вы можете не доверять NetworkManager. Также обратите внимание, что NetworkManager и iptables имеют противоположные цели. Iptables стремится предотвратить любой сомнительный сетевой трафик. NetworkManager стремится держать вас на связи в любое время. Поэтому, если вам нужна постоянная безопасность, запускайте iptables во время загрузки. Если вам иногда нужна безопасность, то NetworkManager может быть правильным выбором.

ВНИМАНИЕ! Если вы используете NetworkManager (установленный по умолчанию на Feisty и более поздних версиях), эти шаги не позволят вам использовать NetworkManager для изменяемых вами интерфейсов. Вместо этого выполните действия, описанные в следующем разделе.

ПРИМЕЧАНИЕ. На Hardy появляется проблема с NetworkManager, которая неправильно сохраняет и восстанавливает правила iptable при использовании метода, описанного в следующем разделе. Использование этого первого метода работает. Если вы обнаружите обратное, обновите это примечание.

Сохраните правила брандмауэра в файл

На данный момент у вас есть несколько вариантов. Вы можете внести изменения в /etc/network/interfaces или добавить сценарии в /etc/network/if-pre-up.d/ и /etc/network /if-post-down.d/ для достижения аналогичных целей. Скриптовое решение обеспечивает немного большую гибкость.

(Примечание: будьте осторожны: ввод неправильных директив конфигурации в файл интерфейса может отключить все интерфейсы, что может привести к блокировке вашего доступа к удаленному компьютеру.)

Измените файл конфигурации /etc/network/interfaces, чтобы правила применялись автоматически. Вам нужно будет знать интерфейс, который вы используете, чтобы применить правила — если вы не знаете, вы, вероятно, используете интерфейс eth0, хотя сначала вы должны проверить с помощью следующей команды, чтобы увидеть, есть ли какие-либо беспроводные карты:

Если вы получаете вывод, подобный следующему, значит, у вас вообще нет беспроводных карт, и вам, вероятно, лучше всего подойдет eth0.

Когда вы узнали, какой интерфейс вы используете, отредактируйте (используя sudo) свой /etc/network/interfaces:

В файле найдите найденный интерфейс и в конце строк, связанных с сетью, для этого интерфейса добавьте строку:

Вы также можете подготовить набор правил отключения, сохранить их во второй файл /etc/iptables.downrules и применить его автоматически, выполнив описанные выше действия:

Полностью работающий пример с использованием обоих из приведенных выше:

Вы также можете сохранить данные счетчиков байтов и пакетов.

ПРИМЕЧАНИЕ. В этом решении используется iptables-save -c для сохранения счетчиков. Просто удалите -c, чтобы сохранить только правила.

В качестве альтернативы вы можете добавить iptables-restore и iptables-save в if-pre-up.d и if -post-down.d в каталоге /etc/network вместо прямого изменения /etc/network/interface.

ПРИМЕЧАНИЕ. Скрипты в if-pre-up.d и if-post-down.d не должны содержать точки в своих именах.

Сценарий /etc/network/if-pre-up.d/iptablesload будет содержать:

и /etc/network/if-post-down.d/iptablessave будут содержать:

Затем обязательно дайте обоим скриптам права на выполнение:

Установите и используйте пакет iptables-persistent.

Конфигурация NetworkManager при запуске

NetworkManager позволяет запускать сценарии при активации или деактивации интерфейса. Чтобы сохранить правила iptables при завершении работы и восстановить их при запуске, мы собираемся создать такой скрипт. Чтобы начать, нажмите Alt+F2 и введите следующую команду:

Затем вставьте этот скрипт в свой редактор, сохраните и выйдите из редактора.

Наконец, нам нужно убедиться, что NetworkManager может выполнить этот скрипт. В окне терминала введите эту команду:

Если вы регулярно редактируете iptables вручную

Вышеописанные шаги посвящены настройке правил брандмауэра и предполагают, что они будут относительно статичными (и для большинства людей они должны быть такими). Но если вы много работаете над разработкой, вы можете захотеть, чтобы ваши iptables сохранялись при каждой перезагрузке. Вы можете добавить строку, подобную этой, в /etc/network/interfaces:

Строка «post-down iptables-save > /etc/iptables.rules» сохранит правила, которые будут использоваться при следующей загрузке.

Использование iptables-save/restore для проверки правил

Если вы редактируете свои iptables помимо этого руководства, вы можете использовать функции iptables-save и iptables-restore для редактирования и проверки ваших правил. Для этого откройте файл правил в вашем любимом текстовом редакторе (в данном примере это gedit).

У вас будет файл, похожий на (в приведенном выше примере):

Обратите внимание, что это команды iptables без команды iptable. Не стесняйтесь редактировать это в файл и сохранить, когда закончите. Затем просто протестировать:

ПРИМЕЧАНИЕ. В iptables 1.4.1.1-1 и выше сценарий позволяет протестировать новые правила, не рискуя вывести из строя удаленный сервер. Если вы применяете правила на удаленном сервере, вам следует протестировать его с помощью:

После тестирования, если вы не добавили указанную выше команду iptables-save в свой /etc/network/interfaces, не забудьте не потерять свои изменения:

Более подробное ведение журнала

Отключение брандмауэра

Если вам нужно временно отключить брандмауэр, вы можете сбросить все правила с помощью

или создайте сценарий с помощью текстового редактора, например nano

Убедитесь, что вы можете выполнить скрипт

Вы можете запустить скрипт

Простая настройка через графический интерфейс

UFW и GUFW

GUFW — Gufw представляет собой графический интерфейс для UFW (простой брандмауэр).

Дополнительная информация

Shoreline Firewall, также известный как Shorewall, представляет собой генератор брандмауэра для iptables, который позволяет выполнять расширенную настройку с помощью простых файлов конфигурации. Он доступен в репозиториях Ubuntu через apt-get.

Кредиты

Спасибо Расти Расселу и его практическим рекомендациям, так как многое из этого основано на этом.

IptablesHowTo (последний удаленный пользователь gunnarhj 11.04.2020 23:42:18)

Материалы этой вики доступны по бесплатной лицензии, подробности см. в разделе Авторские права / Лицензия
Вы можете внести свой вклад в эту вики, подробности см. в Руководстве по вики

Есть ли способ более подробно просмотреть правила iptables?

Недавно я добавил маскарад к ряду IP-адресов:

Что сделало то, что я хочу, но когда я использую:

Я получаю тот же результат, что и обычно:

Как просмотреть правила, в том числе добавленные мной? (система CentOS 6)

8 ответов 8

При использовании параметра -L , --list для отображения текущих правил брандмауэра также необходимо указать соответствующую таблицу Netfilter (один из filter , nat , mangle , raw или security ). Итак, если вы добавили правило для таблицы nat, вы должны явно указать эту таблицу с помощью опции -t , --table:

Или с помощью краткой формы параметров:

Если вы не укажете конкретную таблицу, по умолчанию будет использоваться таблица фильтров.

Для получения более быстрых результатов может быть полезно также включить параметр -n , --numeric для печати числовых IP-адресов вместо имен хостов, что позволит избежать необходимости ждать обратного поиска DNS.

Вы можете получить еще больше информации, включив параметр -v , --verbose.

iptables управляет пятью различными таблицами: filter, nat, mangle, raw и security. При заданном вызове iptables отображает или изменяет только одну из этих таблиц, указанную аргументом опции -t (по умолчанию filter ). Чтобы увидеть полное состояние брандмауэра, вам нужно последовательно вызывать iptables для каждой из таблиц.

Кроме того, чтобы получить точное представление о правилах, необходимо передать параметр -v . В противном случае в выводе будут опущены некоторые важные критерии, такие как интерфейс в правилах фильтрации (например,правило, в котором говорится «принять все», и правило, в котором говорится «принять все на петлевом интерфейсе», можно отличить только с помощью -v ).

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

В качестве альтернативы вы можете вызвать программу iptables-save, которая отображает все правила во всех таблицах в формате, который может быть проанализирован iptables-restore. Этот формат также достаточно удобочитаем для людей (это очень похоже на серию вызовов команды iptables для построения таблицы).

Прикладная программа iptables пользовательского пространства позволяет настраивать таблицы, предоставляемые брандмауэром ядра Linux, а также цепочки и правила, которые он хранит. Модуль ядра, используемый в настоящее время для iptables, применяется только к трафику IPv4, для настройки правил брандмауэра для соединений IPv6 вместо этого используйте ip6tables, которые реагируют на те же структуры команд, что и iptables.

Список текущих правил

Серверы Ubuntu по умолчанию не применяют никаких ограничений, но для дальнейшего использования проверьте текущие правила iptable с помощью следующей команды.

При этом будет распечатан список из трех цепочек: ввод, пересылка и выход, как в примере с пустой таблицей правил ниже.< /p>

Имена цепочек указывают, к какому трафику будут применяться правила в каждом списке, вход — для всех подключений, входящих на ваш облачный сервер, выход — любой исходящий трафик и вперед для любого прохода. Каждая цепочка также имеет свою настройку policy, которая определяет, как обрабатывается трафик, если он не соответствует каким-либо конкретным правилам. По умолчанию установлено значение принять.

Добавление правил

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

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

Вы можете убедиться, что правило было добавлено, с помощью того же sudo iptables -L, что и раньше.

Далее разрешите трафик на определенный порт, чтобы активировать SSH-соединения со следующим.

После добавления всех разрешенных правил, которые вам нужны, измените политику ввода на удаление.

Предупреждение. Если изменить правило по умолчанию на сброс, будет разрешено только специально принятое соединение. Перед изменением правила по умолчанию убедитесь, что вы включили как минимум SSH, как показано выше.

Эти же правила политики можно определить и для других цепочек, введя имя цепочки и выбрав либо DROP, либо ACCEPT.

Сохранение и восстановление правил

Теперь, если вы перезапустите свой облачный сервер, все эти конфигурации iptables будут стерты. Чтобы этого не произошло, сохраните правила в файл.

Затем вы можете просто восстановить сохраненные правила, прочитав сохраненный файл.

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

После установки первоначальная настройка попросит сохранить текущие правила для IPv4 и IPv6, просто выберите Да и нажмите Enter для обоих.

Если вы вносите дальнейшие изменения в свои правила iptables, не забудьте сохранить их снова, используя ту же команду, что и выше. iptables-persistent ищет файлы rules.v4 и rules.v6 в папке /etc/iptables.

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

Расширенная настройка правила

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

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

Если вы хотите удалить существующее правило из определенной цепочки, используйте команду удаления с параметром -D.Самый простой способ выбрать правило для удаления — использовать порядковые номера, описанные выше. Например, чтобы удалить второе правило в цепочке ввода, используйте эту команду.

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

Предупреждение. Прежде чем очищать любую цепочку, убедитесь, что для правила по умолчанию задано значение ПРИНЯТЬ.

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

Если iptable очищен, ваш сервер может быть уязвим для атак. Убедитесь, что ваша система защищена альтернативным методом, даже временно отключив iptables.

Главный редактор и технический писатель в UpCloud с 2015 года. Энтузиаст облачных вычислений, пишущий о серверных технологиях и программном обеспечении.

Читайте также: