Тут ми докладніше зупинимося на критеріях виділення пакетів. Я розбив все критерії п'ять груп. Перша -- загальні критерії які можуть використовуватися у різноманітних правилах. Друга - TCP критерії що застосовуються лише у TCP пакетів. Третя -- UDP критерії що застосовуються лише у UDP пакетів. Четверта -- ICMP критерії до роботи з ICMP пакетами. І, насамкінець п'ята -- спеціальні критерії, такі як state, owner, limit тощо.

Загальні критерії

Тут ми розглянемо Загальні критерії. Загальні критерії припустимо вживати у різноманітних правилах, де вони залежить від типу протоколу, й не вимагають подгрузки модулів розширення. До цій групі я зумисне відніс к 40;итерій --protocol як і раніше, що його використовують у деяких специфічних від протоколу расширениях. Наприклад, вирішили використовувати TCP критерій, тоді слід активно використовуватиме критерій --protocol якій у ролі додаткового ключа передається назва протоколу -- TCP. Проте критерій --protocol сам собі є критерієм, що використовується для вказівки типу протоколу.

Таблиця 6-4. Загальні критерії

-p, --protocol : Цей критерій використовується для вказівки типу протоколу. Прикладами протоколів може бути TCP, UDP і ICMP. СписCE;к протоколів можна подивитися в файлі [misc/iptables-tutorial/other/protocols.txt /etc/protocols]. Насамперед, як протоколу у цей критерій можна передавати одне із трьох вищезгаданих протоколів, і навіть ключовим словом ALL. Як протоколу допускається передавати число - номер протоколу, так наприклад, протоколу ICMP відповідає число 1, TCP -- 6 і UDP -- 17. Соответствия між номерами протоколів та його іменами ви можете подивитися в файлі /etc/protocols, які вже згадувався. Критерієві може передаватися і список протоколів, розділених комами, наприклад так: udp,tcp (Хоча він і свідчить про можливість передачі списку протоколів, тим щонайменше вам врят чи це! До речі, man iptables явно обумовлює, що в критерії то, можливо зазначений лише одне протокол. Можливо це розширення є у patch-o-matic? прим. перев.) Якщо даному критерію передається числове значення 0, це еквівалентно використанню специфікатора ALL, який мається на увазі за умовчанням, коли критерій --protocol немає. Для логічного інверсії критерію, перед ім'ям протоколу (списком протоколів) використовується символ !, наприклад --protocol ! tcp передбачає пакети протоколів, UDP і ICMP.

Приклад:

    iptables -A INPUT -p tcp

-s, --src, --source : IP-адрес(а) джерела пакета. Адреса джерела може указуватися оскільки показано в прикладі, тоC4;і мається на увазі єдиний IP-адрес. А можна вказати адресу як address/mask, наприклад як 192.168.0.0/255.255.255.0, або як сучасним способом 192.168.0.0/24, тобто. фактично визначаючи діапазон адрес Як і раніше, символ !, встановлений перед адресою, означає логічне заперечення, тобто. --source ! 192.168.0.0/24 означає будь-який адресу крім адрес 192.168.0.x.

Приклад:

    iptables -A INPUT -s 192.168.1.1

-d, --dst, --destination : IP-адрес(а) одержувача. Має синтаксис схожий з критерієм --source, крім те, що передбачає адресу місця призначення. Так само може визначати як IP-адрес, і діапазон адрес. Символ ! використовується для логічного інверсії критерію.

Приклад:

    iptables -A INPUT -d 192.168.1.1

, --in-interface : Інтерфейс, від якого було отримано пакет. Використання цього критерію допускається лише у ланцюжках INPUT, FORWARD і PREROUTING, у різноманітних інших випадках викликатиме повідомлення про помилку. За відсутності цього критерію передбачається будь-який інтерфейс, що рівносильне використанню критерію -і +. Як і раніше, символ ! інвертує результат збіги. Якщо ім'я інтерфейсу завершується символом +, то критерій задає все інтерфейси, які з заданої рядки, наприклад -і PPP+ позначає будь-який PPP інтерфейс, а запис -і ! eth+ -- будь-який інтерфейс, крім будь-якого eth.

Приклад:

    iptables -A INPUT -і eth0

-o, --out-interface : Задает ім'я вихідного інтерфейсу. Цей критерій допускається використовувати лише у ланцюжках OUTPUT, FORWARD і POSTROUTING, інакше буде генеруватися повідомлення про помилку. За відсутності цього критерію передбачається будь-який інтерфейс, що рівносильне використанню критерію -o +. Як і раніше, символ ! інвертує результат збіги. Якщо ім'я інтерфейсу завершується символом +, то критерій задає все інтерфейси, які з заданої рядки, наприклад -o eth+ позначає будь-який eth інтерфейс, а запис -o ! eth+ - будь-який інтерфейс, крім будь-якого eth.

Приклад:

    iptables -A FORWARD -o eth0

-f, --fragment : Правило поширюється попри всі фрагменти фрагментированного пакета, крім першого, зроблено бо немає можливості визначити исходящий/входящий порт для фрагмента пакета, а ICMP-пакетов визначити їх тип. З допомогою фрагментованих пакетів можуть виготовлятися атаки на ваш брендмаудер, оскільки фрагменти пакетів можуть отлавливаться іншими правилами. Як раніше, допускається використання символу ! для інверсії результату порівняння. лише у тому випадку символ ! повинен передувати критерію -f, наприклад ! -f. Инверсия критерію сприймається як "все перші фрагменти фрагментованих пакетів і/або нефрагментовані пакети, але з другі й наступні фрагменти фрагментованих пакетів".

Приклад:

    iptables -A INPUT -f

Неявні критерії

У розділі ми розглянемо неявні критерії, точніше, ті критерії, які подгружаются неявно і стають доступні, наприклад при вказуванні критерію --protocol tcp. Сьогодні існує три автоматично завантажувальних розширення, це TCP критерії, UDP критерії і ICMP критерії (при побудові своїх правил я зіштовхнувся із необхідністю явного вказівки ключа -m tcp, тобто. про неявности тут годі й говорити, тому будьте уважніше при побудові своїх правил, якщо щось йде -- пробуйте явно вказувати необхідне розширення. прим. перши.). Завантаження цих розширень може здійснюватися і явно з допомогою ключа -m, -match, наприклад -m tcp.

TCP критерії

Цей набір критеріїв залежить від типу протоколу, й працює тільки з TCP пакетами. Щоб використовувати їх, вам знадобиться в правилах вказувати тип протоколу --protocol tcp. Важливо: критерій --protocol tcp обов'язково має бути перед специфічним критерієм. Ці розширення завантажуються автоматично як tcp протоколу, так udp і icmp протоколів. (Про неявній завантаженні розширень вже згадував вище прим. перев.).

Таблиця 6-5. TCP критерії

--sport, --source-port : Вихідний порт, від якого відправили пакет. Як параметра може указуватися номер порту чи назву мережевий служби. Відповідність імен сервісів і номерів портів ви натрапите на в файлі /etc/services. При вказуванні номерів портів правила відпрацьовують трохи швидше. але це менш зручно при розборі листингов скриптов. Якщо ж ви маєте намір створювати значні за обсягом набори правил, скажімо порядку кілька сотень і більше, з дохідними статтями краще використовувати номери портів. Номери портів можуть задаватися як інтервалу з мінімального і максимального номерів, наприклад --source-port 22:80. Якщо опускається мінімальний порт, тобто. коли критерій записується як --source-port :80, то ролі початку діапазону приймається число 0. Якщо опускається максимальний порт, тобто. коли критерій записується як --source-port 22:, то ролі кінця діапазону приймається число 65535. Допускаєть 41;я така запис --source-port 80:22, у разі iptables змінить числа 22 і 80 місцями, тобто. такого роду запис буде перетворять на --source-port 22:80. Як раніше, символ ! використовується для інверсії. Так критерій --source-port ! 22 передбачає будь-який порт, крім 22. Инверсия може застосовуватися і до діапазону портів, наприклад --source-port ! 22:80. За додаткової інформацією звертайтеся до опису критерію multiport.

Приклад:

    iptables -A INPUT -p tcp --sport 22

--dport, --destination-port : Порт чи діапазон портів, який адресовано пакет. Аргументи задаються у тому форматі, що у --source-port.

Приклад:

    iptables -A INPUT -p tcp --dport 22

--tcp-flags : Визначає маску і прапори tcp-пакета. Пакет вважається що задовольняє критерію, коли з перелічених прапорів у першому списку в одиничне стан встановлено прапори з другого списку. Так для вищевказаного прикладу під критерій підпадають пакети які мають прапор SYN встановлено, а прапори FIN і ACK скинули. Як аргументів критерію можуть виступати прапори SYN, ACK, FIN, RST, URG, PSH, а як і зарезервовані ідентифікатори ALL і NONE. ALL -- отже ВСЕ прапори і NONE - ЖОДЕН прапор. Так, критерій --tcp-flags ALL NONE означає -- "все прапори у пакеті повинні прагнути бути скинули". Як і раніше, символ ! означає інверсію критерію Важливо: імена прапорів у кожному списку повинні розділятися комами, прогалини служать потреби ділити списків.

Приклад:

    iptables -p tcp --tcp-flags SYN,FIN,ACK SYN

--syn : Критерій --syn є власне реліктом, перекочевавшим з ipchains. Критерієві відповідають пакети з установленою прапором SYN і скинутими прапорами ACK і FIN. Цей критерій аналогічний критерію --tcp-flags SYN,ACK,FIN SYN. Такі пакети йдуть на відкриття сполуки TCP. Забл 3E;кувавши такі пакети, ви надійно заблокируете все вхідні запити на з'єднання, проте це критерій неспроможний заблокувати вихідні запити на з'єднання. Як і раніше, допускається інвертування критерію символом !. Так критерій ! --syn означає -- "все пакети, які є запитом на з'єднання", тобто. все пакети із чітко встановленими прапорами FIN чи ACK.

Приклад:

    iptables -p tcp --syn

--tcp-option : Удовлетворяющим умові даного критерію буде вважатиметься пакет, TCP параметр якого дорівнює заданому числу. TCP Option - це частина заголовка пакета. Воно складається з 3 різних полів. Перше 8-місячного битовое полі містить інформацію про опціях, які у даному поєднанні. Друге 8-місячного битовое полі містить довжину поля опцій. Якщо з стандартам остаточно, то було б реалізувати оброC1;ку всіх можливих варіантів, проте, натомість ми можемо перевірити перше полі, і у разі, якщо там зазначена неподдерживаемая нашим брендмаудером опція, то просто переступити через третє полі (довжина якого є у другому полі). Пакет, який матиме повного TCP заголовка, буде скинуто автоматично під час спроби вивчення його TCP параметра. Як і раніше, припускається використання прапора інверсії умови !. Додаткову інформацію з TCP Options ви натрапите на на Internet Engineering Task Force

Приклад:

    iptables -p tcp --tcp-option 16

UDP критерії

У розділі розглядатимуться критерії, специфічні лише протоколу UDP. Ці розширення подгружаются автоматично при вказуванні типу протоколу --protocol udp. Важливо, що пакети UDP орієнтовані на встановлений з'єднання, і тому мають різних прапорів які дозволяють будувати висновки про призначення датаграмм. Одержання UDP пакетів не вимагає якого або підтвердження з боку одержувача. Якщо вони самі втрачені, всі вони просто втрачені (не викликаючи передачу ICMP повідомлення про помилку). Це вимагає наявність значно меншої кількості додаткових критеріїв, на відміну TCP пакетів. Важливо: Хороший брендмаудер повинен працювати з пакетами будь-якого типу, UDP чи ICMP, які вважають не орієнтованими на з'єднання, як і добре як і з TCP пакетами. Про це поговоримо пізніше, у таких розділах.

Таблиця 6-6. UDP критерії

--sport, --source-port : Вихідний порт, від якого відправили пакет. Як параметра може указуватися номер порту чи назву мережевий служби. Відповідність імен сервісів і номерів портів ви натрапите на в файлі [misc/iptables-tutorial/other/services.txt other/services.txt]. При вказуванні номерів портів правила відпрацьовують трохи швидше. але це менш зручно при розборі листингов скриптов. Якщо ж ви маєте намір створювати значні за обсягом набори правил, скажімо порядку кілька сотень і більше, з дохідними статтями краще використовувати номери портів. Номери портів можуть задаватися як інтервалу з мінімального і максимального номерів, наприклад -source-port 22:80. Якщо опускається мінімальний порт, тобто. коли критерій записується як --source-port :80, то ролі початку діапазону приймається число 0. Якщо оCF;ускається максимальний порт, тобто. коли критерій записується як --source-port 22: , то ролі кінця діапазону приймається число 65535. Допускається така запис --source-port 80:22 , у разі iptables змінить числа 22 і 80 місцями, тобто. такого роду запис буде перетворять на --source-port 22:80 . Як раніше, символ ! використовується для інверсії. Так критерій --source-port ! 22 передбачає будь-який порт, крім 22. Инверсия може застосовуватися і до діапазону портів, наприклад --source-port ! 22:80.

Приклад:

    iptables -A INPUT -p udp --sport 53

--dport, --destination-port : Порт, який адресовано пакет. Формат аргументів повністю аналогічний ухваленого критерії --source-port.

Приклад:

    iptables -A INPUT -p udp --dport 53

ICMP критерії

Цей протокол використовується, зазвичай, передачі повідомлень помилки й у управління з'єднанням. Він є підлеглим IP протоколу, але тісно з нею взаємодіє, бо дає змогу обробляти помилкові ситуації. Заголовки ICMP пакетів дуже схожі на на IP заголовки, але мають значення і відмінності. Головне властивість цього протоколу залежить від типі заголовка, який містить інформацію у тому, що за пакет. Наприклад, коли ми намагаємося з'єднатися з недоступним хостом, ми одержимо у відповідь повідомлення ICMP host unreachable. Повний список типів ICMP повідомлень, ви можете подивитися при застосуванні [#ICMPTYPES Типи ICMP]. Є лише один специфічний критерій для ICMP пакетів. Це розширення завантажується автоматично, ми указуємо критерій --protocol icmp. Зауважте, для перевірки ICMP пакетів можуть вживатися і спільні критерії, оскільки відомий і адресу 34;жерела і записуйте адресу призначення тощо.

Таблиця 6-7. ICMP критерії

--icmp-type : Тип повідомлення ICMP визначається номером чи ім'ям. Числові значення визначаються RFC 792. Щоб самому отримати список імен ICMP значень виконайте команду iptables --protocol icmp --help, чи подивіться додаток [#ICMPTYPES Типи ICMP]. Як і раніше, символ ! інвертує критерій, наприклад --icmp-type ! 8.

Приклад:

    iptables -A INPUT -p icmp --icmp-type 8

Явні критерії

Перед використанням цих розширень, повинно бути завантажені явно, з допомогою ключа -m чи --match. Приміром, коли ми використовуватимемо критерії state, ми повинні явно вказати це у рядку правила: -m state лівіше використовуваного критерію. Деякі з цих критеріїв поки що перебувають у стадії розробки, тож можуть працювати який завжди, проте, здебільшого, вони працюють цілком стійко. Усі різниця між явними і неявними критеріями лише у цьому, перші потрібно довантажувати явно, а другі подгружаются автоматично.

Критерій Limit

Мушу довантажуватися явно ключем -m limit. Чудово адресований правил, які виробляють запис в системний журнал (logging) тощо. Додаючи цей критерій, ми цим встановлюємо граничне число пакетів в одиницю часу, який може пропустити правило. Можна також використовувати символ ! для інверсії, наприклад -m limit ! --limit 5/s. І тут мається на увазі, що пакети проходитимуть правило тільки після перевищення обмеження.

Більше наочно цей критерій можна уявити як деяку ємність з випускним отвором, крізь який проходить певна кількість пакетів за одиницю часу (тобто. швидкість "витікання"). Швидкість "витікання" таки визначає величина --limit. Величина --limit-burst задає загальний "обсяг ємності". Нині ж уявімо собі правило --limit 3/minute --limit-burst 5, тоді після вступу 5 пакетів (за дуже стислий період часу), ємність "наповниться" й у наступний пакет викликатиме "переповнювання" ємності, тобто. "спрацьовування" критерію. Через 20 секунд "рівень" в ємності буде знижений (відповідно до величиною --limit), в такий спосіб готова буде прийняти іще одна пакет, не викликаючи "переповнення" ємності, тобто. спрацьовування критерію.

Розглянемо ще докладніше.

  1. Припустимо наявність правила, що 3C;істить критерій -m limit --limit 5/second --limit-burst 10. Ключ limit-burst встановив обсяг "ємності" рівний десятьох. Кожен пакет, який підпадає під вказане правило, направляють у цю ємність.
  2. Припустимо, протягом 1/1000 секунди, ми маємо 10 пакетів, тоді із отриманням кожного пакета "рівень" в "ємності" зростатиме: 1-2-3-4-5-6-7-8-9-10.
  3. Ємність наповнилася. Тепер пакети, які підпадають під наше обмежувальне правило, большє нє зможуть потрапити до цю "ємність" (там просто немає), тому вони (пакети) підуть далі за набору правил, коли будуть явно сприйняті них, або піддадуться політиці по-умолчанию.
  4. Кожні 1/5 секунди "рівень" в уявлюваного ємності знижується на 1, й дуже до того часу, поки "ємність" нічого очікувати спустошена. Через секунду, після прийому десятьох пакетів "ємність" готова буде прийняти ще п'ять пакетів.
  5. Звісно ж, що "рівень" в "ємності" зростає на 1 з кожним знову які прийшли пакетом.

  6. Розширення -m limit передбачає наявність ключів --limit і --limit-burst. Якщо ви хоч не вказуєте ці ключі, всі вони приймають значення по-умолчанию.

  7. Ключ --limit-burst - це максимальне значення лічильника пакетів, у якому спрацьовує обмеження.
  8. Ключ --limit - це швидкість, з якою CB;ічильник burst limit "відкручується тому".

Принцип, яке прямо реалізується на З і дуже використовується у багатьох алгоритмах-ограничителях.

Таблиця 6-8. Ключі критерію limit

--limit : Встановлюється середня швидкість "звільнення ємності" за одиницю часу. Як аргумент вказується числ 3E; пакетів та палестинці час. допустимими вважаються такі одиниця виміру часу: /second /minute /hour /day. За умовчанням прийнято значення 3 пакета за годину, чи 3/hour. Використання прапора інверсії умови ! у цьому критерії неприпустимий.

Приклад:

    iptables -A INPUT -m limit --limit 3/hour

--limit-burst : Встановлює максимальне значення числа burst limit для критерію limit. Ця кількість поповнюється одиницю якщо отримано пакет, що під дія цього правила, і навіть середня швидкість (що задається ключем --limit) надходження пакетів вже досягнуто. Так відбувається до того часу, поки число burst limit не досягне максимального значення, установлюваного ключем --limit-burst. Після цього правило починає пропускати пакети зі швидкістю, задаваемой ключем --limit. Значення по-умолчанию приймається рівним 5. Для демонстрації засад роботи даного критерію я написав сценарій [#LIMIT-MATCHTXT Limit-match.txt] З допомогою цього сценарію ви не побачите як працює критерій limit, просто посилаючи ping-пакети з різними часовими інтервалами.

Приклад:

    iptables -A INPUT -m limit --limit-burst 5

Критерій MAC

MAC (Ethernet Media Access Control) критерій використовується для перевірки вихідного MAC-адреса пакета. Розширення -m mac, нині, надає єдиний критерій, але можна у майбутньому він розширено і більш корисний.

Зауваження:

Модуль розширення повинен довантажуватися явно ключем -m mac. Згадую я про це тому, що чимало, забувши вказати цей ключ, дивуються, чому працює цей критерій.

Таблиця 6-9. Ключі критерію MAC

--mac-source : MAC адресу мережного вузла, що передав пакет. MAC адресу повинен указуватися у вигляді XX:XX:XX:XX:XX:XX. Як і раніше, символ ! використовується для інверсії критерію, наприклад --mac-source ! 00:00:00:00:00:01, що означає - "пакет з будь-якої світової вузла, крім вузла, який має MAC адресу 00:00:00:00:00:01" . Цей критерій має сенс тільки в ланцюжках PREROUTING, FORWARD і INPUT і більш.

Приклад:

    iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01

Критерій Mark

Критерій mark дає можливість "позначити" пакети спеціальним чином. Mark - спеціальне полі, що існує лише у сфері пам'яті ядра пов'язано з конкретним пакетом. Може використовуватися в різноманітних цілях, наприклад, обмеження трафіку і фільтрація. Сьогодні існує одна можливість установки мітки на пакет в Linux -- це використання дії MARK. Поле mark є беззнаковое ціла кількість буде в діапазоні від 0 до 4294967296 для 32-бітних систем.

Таблиця 6-10. Ключі критерію Mark

--mark : Критерій виробляє перевірку пакетів, хто був попередньо "позначені". Метки встановлюються дією MARK, яку ми розглядатимемо нижче. Усі пакети, які відбуваються через netfilter мають спеціальне полі mark. Запам'ятайте, що просто неможливо передати стан цього поля разом із пакетом до мережі. Поле mark є цілим беззнаковим, в такий спосіб можна створити трохи більше 4294967296 різних міток. Допускається використовувати маску з міткам. У разі критерій виглядатиме таким чином: --mark 1/1. Якщо вказується маска, то виконується логічне AND мітки і маски.

Приклад:

    iptables -t mangle -A INPUT -m mark --mark 1

Критерій Multiport

Розширення multiport дозволяє вказувати з тексту правила кілька портів і діапазонів портів.

Ви зможете використовувати стандартну перевірку портів і розширення -m multiport (наприклад --sport 1024:63353 -m multiport --dport 21,23,80) одночасно. Такі правила будуть просто відхилятися iptables.

Таблиця 6-11. Ключі критерію Multiport

--source-port : Служить для вказівки списку вихідних портів. З допомогою даного критерію можна вказати до 15 різних портів. Назви портів у списку повинні відокремлюватися друг від друга комами, прогалини у списку не припустимі. Дане розширення може використовуватися лише що з критеріями -p tcp чи -p udp. головним чином використовують як роз 48;ирена версія звичайного критерію --source-port.

Приклад:

    iptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110

--destination-port : Служить для вказівки списку вхідних портів. Формат завдання аргументів повністю аналогічний -m multiport --source-port.

Приклад:

    iptables -A INPUT -p tcp -m multiport --destination-port 22,53,80,110

--port : Цей критерій перевіряє як вихідний і вхідний порт пакета. Формат аргументів аналогічний критерію --source-port і --destination-port. Зверніть увагу що це критерій перевіряє порти обох напрямE6;в, тобто. коли ви пишете -m multiport --port 80, то під даний критерій підпадають пакети, які йдуть із порту 80 на порт 80.

Приклад:

    iptables -A INPUT -p tcp -m multiport --port 22,53,80,110

Критерій Owner

Розширення owner призначено для перевірки "власника" пакета. Спочатку це роC7;ширення було написане як приклад демонстрації можливостей iptables. Допускається використовувати цей критерій лише у ланцюжку OUTPUT. Таке обмеження накладено адже сьогодні немає реального механізму передачі про "власника" через мережу. Задля справедливості треба сказати, що з деяких пакетів неможливо визначити "власника" у цьому ланцюжку. До що така пакетів ставляться різні ICMP responses. Тому годі було застосовувати цей критерій до ICMP responses пакетів.

Таблиця 6-12. Ключі критерію Owner

--uid-owner : Виробляється перевірка "власника" по User ID (UID). Такі перевірка можна використовувати, приміром, для блокування виходу до Інтернету користувачів.

Приклад:

    iptables -A OUTPUT -m owner --uid-owner 500

--gid-owner : Виробляється перевірка "власника" пакета по Group ID (GID).

Приклад:

    iptables -A OUTPUT -m owner --gid-owner 0

--pid-owner : Виробляється перевірка "власника" пакета по Process ID (PID). Цей критерій досить складний використання, наприклад, якщо ми хочемо дозволити передачу пакетів на HTTP порт тільки від заданого демона, знадобиться написати невеличкий сценарій, котра отримує PID процесу (хоча через ps) і далі підставляє знайдений PID у Правила. Приклад використання критерію можна знайти у [#PID-OWNERTXT Pid-owner.txt].

Приклад:

    iptables -A OUTPUT -m owner --pid-owner 78

--sid-owner : Виробляється перевірка Session ID пакета. Значення SID успадковуються дочірніми процесами від "батька", так, наприклад, всі HTTPD мають і той ж SID (прикладом таких процесів можуть бути HTTPD Apache і Roxen). Приклад використання цього критерію можна знайти у [#SID-OWNERTXT Sid-owner.txt]. Цей сценарій можна запускати за часом для перевірки наявності процесу HTTPD, у разі відсутності - перезапустить "впав" процес, після чого скинути вміст ланцюжка OUTPUT і введення її знову.

Приклад:

    iptables -A OUTPUT -m owner --sid-owner 100

Критерій State

Критерій state використовується що з кодом трасування сполук і дозволяє нам одержувати інформацію про ознаці стану сполуки, що дозволяє будувати висновки про стані сполуки, причому навіть таких протоколів як ICMP і UDP. Дане розширення необхідно завантажувати явно, з допомогою ключа -m state. Докладніше механізм визначення стану сполуки обговорюється розділ [#STATEMACHINE Механізм визначення станів] .

Таблиця 6-13. Ключі критерію State

--state : Перевіряється ознака стану сполуки (state) Сьогодні можна вказувати 4 стану: INVALID, ESTABLISHED, NEW і RELATED. INVALID передбачає, що пакет пов'язані з невідомим потоком чи з'єднанням і, можливо містить помилку у цих чи заголовку. Стан ESTABLISHED зазначає, що пакет належить вже встановленому з'єднанню крізь який пакети йдуть у обох напрямах. Ознака NEW передбачає, що пакет відкриває нове з'єднання чи пакет належить односпрямованому потоку. І, насамкінець, ознака RELATED зазначає що пакет належить існуючому з'єднанню, та заодно він відкриває нове з'єднання Приклад цього може бути передача даних із FTP, чи видача повідомлення ICMP про помилку, що з існуючим TCP чи UDP з'єднанням. Зауважу, що ознака NEW не те саме, що встановлений біт SYN в пакетах TCP, з яких відкривається нове з'єднання, такої роду пакети, може бути потенційно небезпечні у разі, коли за захистом мережі ви використовуєте один мережевий екран. Докладніше цю проблему розглядають нижчий за главі [#STATEMACHINE Механізм визначення станів].

Приклад:

    iptables -A INPUT -m state --state RELATED,ESTABLISHED

Критерій TOS

Критерій TOS призначений щодо перевірки битов поля TOS. TOS -- Type Of Service -- є 8-місячного битовое, полі заголовку IP-пакета. Модуль повинен завантажуватися явно, ключем -m tos.

Дане полі служить потреб маршрутизації пакета. Установка будь-якого біта можуть призвести до того що, що пакет буде оброблений маршрутизатором негаразд як пакет зі скинутими бітами TOS. Кожен біт поля TOS має значення. У пакеті може бути встановлений лише з битов цього поля, тому комбінації не припустимі. Кожен біт визначає тип мережевий служби:

Мінімальна затримка Використовується у ситуаціях, коли час передачі пакета має бути мінімальним, тобто., якщо є можливість, то маршрутизатор для такого пакета обиратиме більш швидкісної канал. Наприклад, є вибір між оптоволоконною лінією і супутниковими каналом, то перевагу віддадуть більш швидкісному оптоволокну.

Максимальна пропускну здатність Вказує, що пакет може бути переправлений через канал з максимальною пропускною спроможністю. Наприклад супутникові канали, володіючи більшої затримкою мають високу пропускну спроможність.

Максимальна надійність Вибирається максимально надійний маршрут щоб уникнути необхідності повторної передачі пакета. Прикладом можуть бути PPP і SLIP сполуки, які через свої надійності поступаються, приміром, мереж X.25, тому, мережевий провайдер може передбачити спеціальний маршрут із підвищеною надійніD1;тю.

Мінімальні витрати Застосовується у разі, коли важливо мінімізувати витрати (себто гроші) передати даних. Наприклад, під час передачі через океан (в інший континент) оренда супутникового каналу може бути дешевше, ніж оренда опт 3E;волоконного кабелю. Установка даного біта справді може призвести до з того що пакет піде більш "дешевому" маршруту.

Звичайний сервіс У такій ситуації все біти поля TOS скинули. Маршрутизация такого пакета повністю віддC0;ється на розсуд провайдера.

Таблиця 6-14. Ключі критерію TOS

--tos : Цей критерій призначений для перевірки встановлених битов TOS, які описувалися вище. Зазвичай полі використовується потреб маршрутизації, а цілком можна використовувати з єдиною метою "маркування" па 3A;етів від використання з iproute2 та додатковою маршрутизації в linux. Як аргумент критерію може бути передане десяткове чи шестнадцатиричное число, чи мнемонічне опис біта, мнемоніки та його числове значення ви можете отримати виконавши команду iptables -m tos -h. Нижче наводяться мнемоніки та його значення. Minimize-Delay 16 (0x10) (Мінімальна затримка), Maximize-Throughput 8 (0x08) (Максимальна пропускну здатність), Maximize-Reliability 4 (0x04) (Максимальна надійність), Minimize-Cost 2 (0x02) (Мінімальні витрати), Normal-Service 0 (0x00) (Звичайний сервіс)

Приклад:

    iptables -A INPUT -p tcp -m tos --tos 0x16

Критерій TTL

TTL (Time To Live) є числовим полC5;м в IP заголовку. Під час проходження чергового маршрутизатора, їх кількість зменшується на 1. Якщо стає рівним нулю, то відправнику пакета передають ICMP повідомлення типу 11 з кодом 0 (TTL equals 0 during transit) чи з кодом 1 (TTL equals 0 during reassembly) . Для використання цього критерію необхідно явно завантажувати модуль ключем -m ttl.

Від перекладача: Знову виявилося деяке невідповідність оригінального тексту з дійсністю, по крайнього заходу для iptables 1.2.6a, яку власне і відбувається мова, існує три різних критерію перевірки поля TTL, це -m ttl --ttl-eq число, -m ttl --ttl-lt число і -m ttl --ttl-gt число. Призначення цих критеріїв зрозуміло вже з їхньої синтаксису. Проте, тим таки наведу переклад оригіналу:

Таблиця 6-15. Ключі критерію TTL

--ttl : Виробляє перевірку поля TTL на рівність заданому значенням. Цей критерій можна використовувати при налагодження локальної мережі, наприклад: для випадків, коли який або машина локальної мережі неспроможна підключитися до сервера з Інтернету, або заради пошуку "троянов" тощо. Вобщем, області застосування цієї поля обмежуються лише вашої фантазією. Ще одна приклад: використання цього критерію може бути спрямована до пошуку машин з неякісної реалізацією стека TCP/IP чи з помилками в конфігурації ОС.

Приклад:

    iptables -A OUTPUT -m ttl --ttl 60

Критерій "сміття" (Unclean match)

Критерій unclean немає додаткових ключів і його використання досить явно завантажити модуль. Будьте обережні, даний модуль є ще на стадії розробки та у деяких ситуаціях може працювати некоректно. Ця перевірка виробляється для вичленування пакетів, які мають розбіжності з прийнятими стандартами, що можуть бути пакети з ушкодженим заголовком чи з зрадливої контрольної сумою тощо., проте використання цієї перевірки можуть призвести до розриву і геть коректного сполуки.