м управління роботою брандмауера (брандмауера) netfilter для ядер Linux версій 2.4 і 2.6. Всупереч дуже поширеній думці, ні iptables, ні netfilter не виробляють маршрутизацію пакетів і ніяк їй не керують. Netfilter тільки фільтрує і модифікує (у тому числі, для NAT) пакети за правилами, заданими адміністратором через утиліту iptables. Для використання утиліти iptables потрібні повноваження супер (root).
Ключовими поняттями iptables є:
Критерій / Умова - логічне вираження, анализирующее властивості пакету і / або з'єднання і визначальне, чи підпадає даний конкретний пакет під дію поточного правила.
Дія - опис дії, яку потрібно виконати з пакетом і / або з'єднанням в тому випадку, якщо вони підпадають під дію цього правила. Про дії більш докладно будет розказано нижче.
Лічильник - компонент правила, що забезпечує облік кількості пакетів, які потрапили під критерій даного правила. Також лічильник враховує сумарний обсяг таких пакетів в байтах. Правило - складається з критерію, дії і лічильника. Якщо пакет відповідає критерію, до нього застосовується дія, і він враховується лічильником. Критерію може і не бути - тоді неявно передбачається критерій «всі пакети». Вказувати дію теж не обов'язково - в відсутність дії правило працюватиме лише як лічильник.
Ланцюжок - упорядкована послідовність правил. Ланцюжки можна розділити на призначені для користувача і базові.
Базова ланцюжок - ланцюжок, створювана за замовчуванням при ініціалізації таблиці. Кожен пакет, в залежності від того, призначений він самому хосту, згенерований їм чи є транзитним, повинен пройти покладений йому набір базових ланцюжків різних таблиць. Схема проходження пакетів наведена на малюнку. Крім того, базова ланцюжок відрізняється від користувальницької наявністю «дії за умовчанням» (default policy). Ця дія застосовується до тих пакетам, що не були оброблені іншими правилами цього ланцюжка і викликаних з неї ланцюжків. Імена базових ланцюжків завжди записуються у верхньому регістрі (PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING).
Користувацька ланцюжок - ланцюжок, створена користувачем. Може використовуватися тільки в межах своєї таблиці. Рекомендується не використовувати для таких ланцюжків імена у верхньому регістрі, щоб уникнути плутанини з базовими ланцюжками і вбудованими діями.
Таблиця - сукупність базових і користувальницьких ланцюжків, об'єднаних загальним функціональним призначенням. Імена таблиць (як і модулів критеріїв) записуються в нижньому регістрі, так як в принципі не можуть конфліктувати з іменами користувальницьких ланцюжків. При виклику команди iptables таблиця вказується у форматі-t ім'я_таблиці. За відсутності явного вказівки, використовується таблиця filter [5].
Додавання правил в таблицю filter
Дане правило пропускає всі пакети з додатком http-сервер, що проходять через ланцюжок INPUT, по протоколу tcp і порту 8180, кажучи простіше, можна відкривати html-сторінки.
Приклад блокування пакетів по порту і протоколу:-I INPUT-p tcp - dport 8180-j REJECT
Аналогічна ситуація буде якщо написати DROP.
Відкриття порту для машини з адресою 192.168.1.2 наприклад:-I INPUT-p tcp - dport 8180 - source 192.168.1.2-j A...