Настройка iptables в Linux


Iptables — это межсетевой экран (файервол) для ОС на базе Linux. Он удобен и сравнительно прост в использовании, поэтому пользоваться им могут все, а не только опытные ИТ-специалисты.

Утилита отвечает за блокировку или пропуск сетевого трафика. При установке соединения с устройством iptables сверяется со списком правил, после чего принимает решение о действии в данном случае. Сетевой пакет может передаваться дальше или отклоняться.

Утилита присутствует практически во всех дистрибутивах Linux и настраивается в командной строке. Управление из командной строке — это не сложно, но нужно быть внимательным, особенно при удалённом SSH-подключении. Если ввести неверную команду, возникает риск блокировки доступа к удалённому серверу. В этом случае поменять настройки удастся только при физическом доступе к устройству.

Установка или добавление iptables выполняется путём ввода команды sudo apt-get install iptables.

Типы правил

iptables в Linux

Существует три типа сетевых пакетов: входящие (отправленные на этот компьютер), исходящие (отправленные в сеть из этого компьютера) и проходящие (пересылаемые дальше). Фильтр iptables также делит пакеты на три цепочки, input, forward и output.

  • Input. Обрабатываются входящие соединения и сетевые пакеты. Цепочка задействуется при попытке подключения к пользовательскому компьютеру по SSH или отправке сайтом контента через браузер.
  • Output. Обрабатываются исходящие пакеты и соединения. Если выполнить пинг любого ресурса или зайти на любой сайт в браузере, iptables разрешит действие или запретит соединение, исходя из записанной цепочки правил.
  • Forward. Обрабатываются проходящие соединения. Сетевые пакеты, которые проходят через компьютер и предназначены другому адресату, попадают в эту цепочку. Встречается, если использовать компьютер как маршрутизатор или при раздаче Wi-Fi.

Не забывайте, что пинг внешних хостов требует не только отправки пакетов (input), но и получения ответа (input). Двусторонняя коммуникация — важное условие работы многих протоколов. Поэтому настройка iptables должна учитывать возможность полноценной работы с сервером по SSH. Зачастую forward оказывается невостребованным.

Стоит упомянуть ещё два важных типа цепочек. Имеются в виду необходимая для первичной обработки и анализа абсолютно всех входящих пакетов цепочка Prerouting (сюда пакет попадает перед обработкой iptables), и завершающая работу с пакетами цепочка Postrouting (сюда после прохождения цепочки forward отправляются пакеты, которые нужно передать на другие узлы сети).

У каждого типа сетевых пакетов может быть набор правил, которые определяют, какое действие применить к конкретному пакету. Основными действиями являются:

  • ACCEPT. Разрешить прохождение сетевого пакета дальше по цепочке правил;
  • DROP. Удалить пакет;
  • REJECT. Отклонить сетевой пакет, уведомив об этом отправителя;
  • LOG. Запись о сетевом пакете в лог;
  • QUEUE. Отправить сетевой пакет пользовательскому приложению.

Действия с соединениями

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

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

iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT

Можно запретить весь трафик, чтобы потом выборочно разрешить какой-то. Для этого используйте команды:

iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

При перезапуске iptables все внесённые изменения пропадут. Сохраните изменения в цепочках правил, выполнив команду =sudo /sbin/iptables-save для Ubuntu или =/sbin/service iptables save для Red Hat/CentOS.

Таблицы iptables

Таблицы iptables имеют тот же набор цепочек i(nput, forward, output) и предназначены для выполнения модификации, фильтрации или других действий над сетевыми пакетами. Выделяют следующие таблицы:

  • Raw. Для работы с пакетами, которые пока не прошли обработку;
  • Mangle. Для модификации пакетов;
  • Nat. Для поддержки работы NAT, если вы хотите использовать компьютер в качестве маршрутизатора; 
  • Filter. Используется по умолчанию для фильтрации пакетов.

Дополнительные настройки

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

$ iptables -t таблица действие цепочка дополнительные_параметры

 

Здесь «таблица» указывает таблицу, с которой нужно работать. «Действие» — указывает действие, которое нужно выполнить (например, создать/удалить правило). «Дополнительные параметры» описывают действие и правило, которое нужно выполнить. Какими бывают действия?

  • -A. Добавить правило в цепочку; 
  • -С. Проверить все правила; 
  • -D. Удалить правило; 
  • -I. Вставить правило с нужным номером; 
  • -L. Вывести все правила в текущей цепочке; 
  • -S. Вывести все правила; 
  • -F. Очистить все правила; 
  • -N. Создать цепочку; 
  • -X. Удалить цепочку; 
  • -P. Установить действие по умолчанию. 

Среди дополнительных настроек для правил выделим следующие:

  • -p. Указать протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh; 
  • -s. Указать ip адрес устройства-отправителя пакета; 
  • -d. Указать ip адрес получателя; 
  • -i . Входной сетевой интерфейс; 
  • -o. Исходящий сетевой интерфейс; 
  • -j. Выбрать действие, если правило подошло.

В целом это всё, что нужно знать о настройке iptables в Linux-системах. Напоминаем, что без необходимости и достаточных знаний менять системные настройки опасно. Рекомендуем экспериментировать на виртуальной машине.


поделиться: 
(0)
автор: Андрей Огурчиков
опубликовано: 16.11.2021
Читайте нас: 
Вверх!