
- •Засоби аналізу та управління мережами методичні вказівки
- •Утиліта traceroute/tracert
- •Утиліта nslookup
- •Послідовність виконання роботи
- •Послідовність виконання роботи
- •Лабораторна Робота №3
- •Стани в просторі користувача
- •Послідовність виконання роботи
- •Послідовність виконання роботи
- •Неявні критерії
- •Icmp критерії
- •Icmp критерії
- •Послідовність виконання роботи
- •Критерій mac
- •Критерій Mark
- •Критерій Multiport
- •Критерий State
- •Критерій tos
- •Критерій ttl
- •Послідовність виконання роботи
- •Послідовність виконання роботи
- •Контрольні запитання
- •Засоби аналізу та управління мережами методичні вказівки
Стани в просторі користувача
Поза ядром пакети можуть мати тільки 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. Механізм визначення стану дозволяє відкривати доступ тільки для зворотного трафіка, блокуючи спроби встановлення зовнішніх з'єднань.
Послідовність виконання роботи
Ознайомитись з поданими вище теоретичними відомостями.
Описати призначення таблиці Mangle.
Описати призначення таблиці NAT.
Описати призначення таблиці Filter.
Описати інформацію про з’єднання представлену в таблиці трасувальника.
Розробити скрипт для аналізу інформації з таблиці трасувальника.
Дати відповіді на контрольні запитання.
Скласти звіт з виконання лабораторної роботи обсягом дві-три сторінки друкованого тексту та захистити його.
Контрольні запитання
Які поля в IP пакеті можна модифікувати в таблиці Mangle?
В чому різниця між SNAT, DNAT та Masquerade?
Які базові стани з’єднання можуть бути?
Яка інформація про з’єднання представлена в таблиці трасувальника?
В яких станах може бути пакет в просторі користувача?
Лабораторна Робота №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). |