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

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

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

  2. Намалювати схему проходження транзитних пакетів.

  3. Намалювати схему проходження пакетів створених на локальному вузлі.

  4. Намалювати схему проходження вхідних для даного вузла пакетів.

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

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

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

  1. Назвіть таблиці через які проходять пакети в мережевому екрані Netfilter.

  2. Назвіть ланцюжки які існують в таблицях в мережевому екрані Netfilter.

  3. Опишіть порядок проходження транзитних пакетів.

  4. Опишіть порядок проходження пакетів створених на локальному вузлі.

  5. Опишіть порядок проходження вхідних для даного вузла пакетів.

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

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

Мета роботи: Ознайомитись з призначенням основних таблиць мережевого екрану, способами їхнього застосування та ознайомитись з таблицею трасувальника

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

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

Таблиця Mangle

Таблиця Mangle призначена, для внесення змін в заголовки пакетів.

В цій таблиці допускається виконувати зміни тільки в таких полях:

TOS: виконує встановлення бітів поля Type of Service в пакеті. Це поле використовується для призначення мережевої політики обслуговування пакета, тобто задає бажаний варіант маршрутизації.

TTL: використовується для встановлення значення поля TTL (Time To Live) пакета.

MARK: встановлює спеціальну мітку на пакет, яка може бути перевірена іншими правилами в iptables або іншими програмами, например iproute2. З допомогою міток можна керувати маршрутизацією пакетів, обмежувати трафік, ...

Таблиця Nat

Ця таблиця використовується для виконання перетворень мережевих адрес NAT (Network Address Translation). Тільки перший пакет з потоку проходить через ланцюжки цієї таблиці, трансляція адрес чи маскування застосовуються до всіх наступних пакетів в потоці автоматично. Для цієї таблиці характерні дії:

DNAT (Destination Network Address Translation): виконує перетворення адрес призначення в заголовках пакетів. Цією дією виконується перенаправлення пакетів на інші адреси, відмінні від вказаних в заголовках пакетів.

SNAT (Source Network Address Translation): використовується для зміни адрес вихідних пакетів. З допомогою цього можна приховати структуру локальної мережі, а заодно и розділити єдину зовнішню IP адресу між комп'ютерами локальної мережі для виходу в Internet. В цьому випадку мережевий екран, з допомогою SNAT, автоматично проводить пряме и зворотне перетворення адрес, даючи можливість виконувати підключення до серверів в інтернеті з комп'ютерів в локальній мережі.

MASQUERADE: використовується в тих же цілях, що й SNAT, але створює більше навантаження на систему. Це відбувається тому, що кожний раз, коли вимагається виконання цієї дії - виконується запит IP адреси для вказаного в дії мережевого інтерфейсу, в той час як для SNAT IP адреса вказується безпосередньо. Проте, завдяки цьому, MASQUERADE може працювати у випадках з динамічною IP адресою, коли підключення відбувається через PPP, SLIP чи DHCP.

Таблиця Filter

В цій таблиці знаходяться набори правил для виконання фільтрації пакетів. Пакети можуть пропускатись дальше або відкидатись (дії ACCEPT і DROP відповідно), в залежності від їх вмістимого.

Механізм визначення станів (state machine) (більш коректна назва механізм трасування з'єднань) створений для того, щоб netfilter мав інформацію про стан кожного конкретного з'єднання.

В iptables, з'єднання може мати один з 4-х базових станів: NEW, ESTABLISHED, RELATED і INVALID. Для керування проходженням пакетів, на основі їх станів, використовується критерій --state.

Трасування з'єднань виконується спеціальним кодом в просторі ядра -- трасувальником (conntrack). Код трасувальника може бути скомпільований як завантажувальний модуль ядра, так і статично зв'язаний ядром. В більшості випадків потрібна більш детальна інформація про з'єднання, ніж та, яку надає трасувальник по замовчуванню. Тому трасувальник включає в себе обробники різних протоколів, наприклад TCP, UDP чи ICMP. Зібрана ними інформація використовується для ідентифікації і визначення поточного стану з'єднання.

Трасування з'єднань виконується в ланцюжку PREROUTING, крім випадків, коли пакети створюються локальними процесами мережевому екрані, в цьому випадку трасування відбувається в ланцюжку OUTPUT. Це означає, що iptables визначає стани, в межах цих ланцюжків. Коли локальний процес на мережевому екрані відправляє перший пакет з потоку, то в ланцюжку OUTPUT йому присвоюється стан NEW, а коли повертається пакет відповідь, то стан з'єднання в ланцюжку PREROUTING змінюється на ESTABLISHED, и так дальше. Якщо встановлюється зовнішнє з'єднання, то стан NEW присвоюється першому пакету з потоку в ланцюжку PREROUTING. Таким чином, визначення стану пакетів відбувається в межах ланцюжків PREROUTING и OUTPUT таблиці nat.

Таблиця трасувальника

Таблицю трасувальника можна знайти в файлі /proc/net/ip_conntrack. В ній міститься список всіх активних з'єднань. Інформація про з’єднання представлена в наступному вигляді:

tcp 6 117 SYN_SENT src=192.168.1.6 dst=192.168.1.9 sport=32775 dport=22 [UNREPLIED] src=192.168.1.9 dst=192.168.1.6 sport=22 dport=32775 use=2

В цьому прикладі міститься вся інформація, відома трасувальнику, по конкретному з'єднанню. Перше поле - це назва протоколу, в даному випадку - tcp. Дальше йде певне число в десятковому форматі. Після нього йде число, яке визначає "час життя" запису в таблиці (кількість секунд, через яку інформація про з'єднання буде видалена з таблиці). В приведеному прикладі, запис в таблиці буде зберігатись ще 117 секунд, якщо через це з'єднання більше не пройде ні одного пакета. При проходженні кожного наступного пакета через дане з'єднання, це значення буде встановлюватись в значення по-замовчуванню для заданого стану. Це число зменшується на 1 кожну секунду. Дальше йде фактичний стан з'єднання. Для наведеного прикладу стан має значення SYN_SENT. Внутрішнє представлення стану відрізняється від зовнішнього. Значення SYN_SENT говорить про те, що через дане з'єднання пройшов єдиний пакет TCP SYN. Дальше йдуть адреси відправника та отримувача, порт відправника та отримувача. Також видно ключове слово [UNREPLIED], яке повідомляє про те, що пакета-відповіді через це з'єднання ще не було. Дальше йде додаткова інформація про очікуваний пакет, це IP адреса відправника/отримувача (ті ж самі, тільки поміняні місцями, оскільки очікується пакет-відповідь), це ж стосується і портів.

Записи в таблиці можуть приймати ряд значень, які визначені в заголовочних файлах linux/include/netfilter-ipv4/ip_conntrack*.h. Значення по-замовчуванню залежать від типу протоколу. Кожний з IP-протоколів - TCP, UDP чи ICMP мають власні значення за замовченням, які визначені в заголовочному файлі linux/include/netfilter-ipv4/ip_conntrack.h.

Зміни вносяться з допомогою певних системних викликів, через каталог /proc/sys/net/ipv4/netfilter.

Після отримання пакета-відповіді трасувальник знімає прапорець [UNREPLIED] и змінює його прапорцем [ASSURED]. Цей прапорець повідомляє про те, що з'єднання встановлено і цей запис не буде стертий по досягненню максимально можливої кількості з'єднань. Максимальна кількість записів, які можуть знаходитись в таблиці, залежить от значення по-замовчуванню, яке може бути встановлено викликом функції ipsysctl. Це значення можна змінити встановленням змінної /proc/sys/net/ipv4/ip_conntrack_max.

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