Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
zaum-lab-2013.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
474.11 Кб
Скачать

Стани в просторі користувача

Поза ядром пакети можуть мати тільки 4 стани. В основному стан пакета використовується завдяки критерію -- state. Існує 4 стани: NEW, ESTABLISHED, RELATED и INVALID.

Таблиця 4

Перелік станів в просторі користувача

Стан

Опис

NEW

Ознака NEW говорить про те, що пакет є першим для даного з'єднання. Наприклад, якщо отримано SYN пакет, який є першим пакетом для даного з'єднання, то він отримає статус NEW. Проте, пакет може і не бути SYN пакетом і отримати статус NEW. Це може створити певні проблеми в деяких випадках, але може бути і корисним, коли потрібно підхопити з'єднання, втрачені іншими мережевими екранами або в випадках, коли час очікування з'єднання вже пройшов, але саме з'єднання не було закрито.

RELATED

З'єднання отримує статус RELATED якщо воно зв'язане с іншим з'єднанням, яке має стан ESTABLISHED. Це означає, що з'єднання отримує ознаку RELATED тоді, коли воно ініційоване з вже встановленого з'єднання. Прикладами таких з'єднань є з'єднання FTP-data, яке пов'язане з портом FTP control, а також DCC з'єднання, запущене з IRC. Більшість протоколів TCP и деякі з протоколів UDP є складними і передають інформацію про з'єднання через область даних TCP чи UDP пакетів и тому вимагають наявності спеціальних допоміжних модулів для коректної роботи.

ESTABLISHED

Стан ESTABLISHED говорить про те, що це не перший пакет в з'єднанні. Для переходу в стан ESTABLISHED необхідно, щоб вузол мережі передав пакет і отримав на нього відповідь від другого вузла. Після отримання відповіді стан з'єднання NEW чи RELATED буде змінено на ESTABLISHED.

INVALID

Стан INVALID говорить про те, що пакет не може бути ідентифікований і тому не може мати певного статусу. Це може відбуватись з різних причин, наприклад при нестачі пам'яті чи при отримані ICMP-повідомлення про помилку, яке не відповідає відомому з'єднанню.

Ці чотири стани можуть використовуватись в критерії --state. Механізм визначення стану дозволяє відкривати доступ тільки для зворотного трафіка, блокуючи спроби встановлення зовнішніх з'єднань.

Послідовність виконання роботи

  1. Ознайомитись з поданими вище теоретичними відомостями.

  2. Описати призначення таблиці Mangle.

  3. Описати призначення таблиці NAT.

  4. Описати призначення таблиці Filter.

  5. Описати інформацію про з’єднання представлену в таблиці трасувальника.

  6. Розробити скрипт для аналізу інформації з таблиці трасувальника.

  7. Дати відповіді на контрольні запитання.

  8. Скласти звіт з виконання лабораторної роботи обсягом дві-три сторінки друкованого тексту та захистити його.

Контрольні запитання

  1. Які поля в IP пакеті можна модифікувати в таблиці Mangle?

  2. В чому різниця між SNAT, DNAT та Masquerade?

  3. Які базові стани з’єднання можуть бути?

  4. Яка інформація про з’єднання представлена в таблиці трасувальника?

  5. В яких станах може бути пакет в просторі користувача?

Лабораторна Робота №4

Принципи побудови правил в IPTABLES

Мета роботи: Ознайомитись з принципами побудови правил та основними командами IPTABLES

Завдання: Створити нові правила IPTABLES та навчитись додавати, вставляти та видаляти їх з ланцюжка правил

Теоретичні відомості

Основи побудови правил

Кожне правило -- це стрічка, яка містить критерії, які визначають чи потрапить пакет під це правило, і дію, яку необхідно виконати в випадку виконання критерію. В загальному випадку правила мають такий вигляд:

iptables [-t table] command [match] [target/jump]

Якщо в правило не включено специфікатор [-t table], то по замовчуванню вважається використання таблиці filter, якщо ж потрібно використати іншу таблицю, то це необхідно вказати явно.

Після імені таблиці, повинна стояти команда, яка визначає дію iptables, наприклад: вставити правило або добавити правило в кінець ланцюжка, чи видалити правило и т.п.

Розділ match задає критерії перевірки, по яким визначається чи підпадає пакет під дію цього правила чи ні. Тут можна вказати різні критерії -- IP-адресу відправника пакета чи мережі, IP-адресу отримувача, порт, протокол, мережевий інтерфейс і т.д.

target задає, дію, яку необхідно виконати при умові виконання критеріїв в правилі. Тут можна заставити ядро передати пакет в інший ланцюжок правил, скинути пакет без повідомлення про це відправника, видати відправнику повідомлення про помилку, ...

Таблиця 5

Основні таблиці і їхні ланцюжки

Таблиця

Опис

NAT

Таблиця nat використовується для перетворення мережевих адрес (Network Address Translation). Через цю таблицю проходить тільки перший пакет з потоку. Перетворення адрес автоматично застосовується до всіх наступних пакетів. Це один з факторів, виходячи з яких робити фільтрацію в цій таблиці нема змісту. Ланцюжок PREROUTING використовується для внесення змін в пакети на вході в мережевий екран. Ланцюжок OUTPUT використовується для перетворення адрес в пакетах, створених локальними процесами самого мережевого екрану, перед прийняттям рішення про маршрутизацію. Ланцюжок POSTROUTING використовується для перетворення пакетів перед їх передачею в мережу.

Mangle

Ця таблиця використовується для внесення змін в заголовки пакетів, наприклад, полів TTL, TOS або MARK. Насправді поле MARK не змінюється, але в пам'яті ядра заводиться структура, яка супроводжує цей пакет постійно при його проходженні через мережевий екран. Таким чином інші правила і локальні процеси даного мережевого екрана можуть використовувати це поле в своїх цілях. Таблиця має п'ять ланцюжків PREROUTING, POSTROUTING, INPUT, OUTPUT і FORWARD. PREROUTING використовується для внесення змін на вході в мережевий екран, перед прийняттям рішення про маршрутизацію. POSTROUTING використовується для внесення змін на виході з мережевого екрана, після прийняття рішення про маршрутизацію. INPUT -- для внесення змін в пакети перед тим як вони будуть передані локальному процесу мережевого екрана. OUTPUT -- призначений для внесення змін в пакети, які поступають від внутрішніх процесів мережевого екрану. FORWARD -- використовується для внесення змін в транзитні пакети після першого прийняття рішення про маршрутизацію, але перед останнім прийняттям рішення про маршрутизацію.

Filter

Таблиця filter використовується в основному для фільтрації пакетів. Можна виконувати дії DROP, LOG, ACCEPT і REJECT без обмежень, які існують для інших таблиць. Існує три вбудованих ланцюжка. FORWARD - використовується для фільтрації транзитних пакетів. Через ланцюжок INPUT проходять пакети, які призначені для локальних процесів мережевого екрана. Ланцюжок OUTPUT використовується для фільтрації вихідних пакетів, які створені локальними процесами мережевого екрану.

Таблиця 6

Основні команди Iptables

Команда

-A, --append

Приклад

iptables -A INPUT ...

Опис

Додає нове правило в кінець заданого ланцюжка.

Команда

-D, --delete

Приклад

iptables -D INPUT --dport 80 -j DROP, iptables -D INPUT 1

Опис

Видалення правила з ланцюжка. Команда має два формати запису, перший -- задає критерій порівняння з опцією -D (перший приклад), другий -- задає порядковий номер правила.

Команда

-R, --replace

Приклад

iptables -R INPUT 1 -s 192.168.0.1 -j DROP

Опис

Ця команда заміняє одне правило іншим.

Команда

-I, --insert

Приклад

iptables -I INPUT 1 --dport 80 -j ACCEPT

Опис

Вставляє нове правило в ланцюжок. Число, вказане за ім'ям ланцюжка вказує номер правила, перед яким потрібно вставити нове правило. В прикладі вказується, що дане правило має бути 1-м в ланцюжку INPUT.

Команда

-L, --list

Приклад

iptables -L INPUT

Опис

Друк списку правил в заданому ланцюжку. В прикладі виводиться правила з ланцюжка INPUT. Якщо ім'я ланцюжка не вказано, то виводиться список правил для всіх ланцюжків. Формат виводу залежить від додаткових ключів в команді, таких як: -n, -v, и пр.

Команда

-F, --flush

Приклад

iptables -F INPUT

Опис

Скид (видалення) всіх правил з заданого ланцюжка (таблиці). Якщо ім'я ланцюжка и таблиці не вказано, то видаляються всі правила, у всіх ланцюжках.

Команда

-Z, --zero

Приклад

iptables -Z INPUT

Опис

Обнулення всіх лічильників в заданому ланцюжку. Якщо ім'я ланцюжка не вказано, то буде обнулено всі ланцюжки. При використанні ключа -v разом з командою -L, буде виведено і стан лічильників пакетів, які підпадають під дію кожного правила. Допускається спільне використання команд -L и -Z. В цьому випадку буде виведено спочатку список правил з лічильниками, а потім відбудеться обнулення лічильників.

Команда

-N, --new-chain

Приклад

iptables -N allowed

Опис

Створюється новий ланцюжок з заданим іменем в заданій таблиці. Ім'я ланцюжка має бути унікальним і не повинно співпадати с зарезервованими іменами ланцюжків і дій (такими як DROP, REJECT и т.п.)

Команда

-X, --delete-chain

Приклад

iptables -X allowed

Опис

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

Команда

-P, --policy

Приклад

iptables -P INPUT DROP

Опис

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

Команда

-E, --rename-chain

Приклад

iptables -E allowed disallowed

Опис

Команда -E виконує перейменування користувацького ланцюжка. В прикладі ланцюжок allowed буде перейменовано в ланцюжок disallowed. Ці перейменування не змінюють порядок работи, а мають тільки косметичний характер.

Список доступних команд можна переглянути с допомогою команди {iptables -h}/{iptables --help}. Деякі команди можуть використовуватись додатковими ключами.

Таблиця 7

Додаткові ключі команди Iptables

Ключ

-v, --verbose

Команди, з якими використовується

--list, --append, --insert, --delete, --replace

Опис

Використовується для підвищення інформативності виводу і, зазвичай, з командою --list. В випадку використання з командою --list, в буде відображено також ім'я інтерфейсу, лічильники пакетів и байт для кожного правила. Якщо ключ -v, --verbose використовується з командами --append, --insert, --delete чи --replace, то буде відображено детальний звіт про виконану роботу.

Ключ

-x, --exact

Команди, з якими використовується

--list

Опис

Для всіх чисел в вихідних даних виводяться їх точні значення без округлення і без використання помножників K, M, G. Цей ключ використовується тільки з командою --list.

Ключ

-n, --numeric

Команди, з якими використовується

--list

Опис

З цим ключем iptables виводить IP-адреси і номери портів в числовому вигляді без проведення спроб перетворити їх в символічні імена. Даний ключ використовується тільки з командою --list.

Ключ

--line-numbers

Команди, з якими використовується

--list

Опис

Ключ --line-numbers включає режим виводу номерів стрічок при відображенні списку правил командою --list. Номер стрічки відповідає позиції правила в ланцюжку. Цей ключ використовується тільки з командою --list.

Ключ

-c, --set-counters

Команди, з якими використовується

--insert, --append, --replace

Опис

Цей ключ використовується для встановлення початкового значення лічильників пакетів і байт в задане значення при створенні нового правила. Наприклад, ключ --set-counters 20 4000 встановить лічильник пакетів = 20, а лічильник байт в 4000.

Ключ

--modprobe

Команди, з якими використовується

Всі

Опис

Ключ --modprobe визначає команду завантаження модуля ядра. Цей ключ може використовуватись у випадку, коли модулі ядра знаходяться поза зоною пошуку (search path).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]