Тестування вашої настройки PF

Тепер прийшов час здути пил з точної специфікації, яка описує, як ваші настройки повинні працювати Фізичне розташування нашого прикладу мережі зосереджена навколо шлюзу підключеного до Інтернету через $ ext_if У додатку до шлюзу через $ int_if є локальна мережа з робочими станціями і, можливо, один або кілька серевров для місцевого застосування І нарешті, ми маємо DMZ підключений через $ dmz_if, населений серверами, що пропонують послуги локальної мережі та Інтернету

Малюнок 9-2 показує логічну схему мережі

Відповідні специфікації набору правил виглядають таким чином:

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Машини поза нашої мережі, повинні мати доступ до сервісів наших серверів в DMZ, і не мати доступу до локальної мережі

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Машини в нашій локальній мережі, прикріплені через $ int_if, повинні мати

доступ до наших сервісів, пропонованих сереврамі в DMZ і доступ до певного переліку сервісів за межами нашої мережі

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Машини в DMZ повинні мати доступ до деяких мережевих сервісів в зовнішньому світі

Завдання полягає в тому, щоб переконатися що набір правил, фактично реалізує специфікацію Ми повинні перевірити настройки Корисний тест можна було б спробувати зображений в таблиці 9-1 Вашої конфігурації може знадобитися інші тести або можуть відрізнятися в деяких деталях Ваш реальний тестовий сценарій повинен вказати, як пакети і зєднання повинні бути зареєстровані Головне, що ви повинні вирішити, це очікуваний і бажаний результат для кожного з ваших тестів має бути визначено перед початком тестування Загалом, ви повинні

Малюнок 9-2 мережу з серверами в DMZ

Завдання полягає в тому, щоб переконатися що набір правил, фактично реалізує специфікацію Ми повинні перевірити настройки Корисний тест можна було б спробувати зображений в таблиці 9-1 Вашої конфігурації може знадобитися інші тести або можуть відрізнятися в деяких деталях Ваш реальний тестовий сценарій повинен вказати, як пакети і зєднання повинні бути зареєстровані Головне, що ви повинні вирішити, це очікуваний і бажаний результат для кожного з ваших тестів має бути визначено перед початком тестування Загалом, ви повинні перевірити використання додатків, які як ви очікуєте повинен мати користувач Такі як веб браузер або поштовий клієнт в різних ОС Зєднання повинні просто бути прийняті або відкинуті, у відповідності зі специфікацією Якщо один або більше з ваших основних тестів дає несподівані результат, переходите до налагодження набору правил

Таблиця 9-1 простий набір правил, у разі перевіряє послідовності

Тестоване дію Очікуваний результат

Спробувати зєднатися з локальної мережі на кожен дозволений порт на сервери в DMZ

Спробувати зєднатися з локальної мережі на кожен дозволений порт на сервери поза нашої мережі Спробувати зєднатися на будь-який порт з DMZ в локальну мережу

Спробувати з DMZ на кожен дозволений порт на сервери поза нашої мережі

Спробувати зєднатися ззовні нашої мережі на $ webserver в DMZ на кожен порт на $ webports

Спробувати зєднатися ззовні нашої мережі на $ webserver в DMZ на порт 25 (SMTP)

Спробувати зєднатися з поза нашої мережі на

$ Emailserver в DMZ на 80 порт (HTTP) Спробувати зєднатися ззовні нашої мережі на

$ Emailserver в DMZ на 25 порт (SMTP)

Спробувати зєднатися ззовні нашої мережі на один або більше машин в локальній мережі

Зєднання має пройти Зєднання має пройти

Зєднання має бути заблоковано Зєднання має пройти

Зєднання має пройти

Зєднання має бути заблоковано Зєднання має бути заблоковано Зєднання має пройти

Зєднання має бути заблоковано

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

Перш ніж зануритися в набору правил, ви можете легко визначити чи є PF конфігурація причиною проблеми Зробіть так, вимкніть PF використовуючи pfctl –d, Щоб подивитися чи зникла проблема Якщо проблема не усувається коли PF відключений, ви повинні звернутися до налагодження інших частин конфігурації З іншого боку, якщо проблема зникла після відключення PF, і ви збираєтеся почати виправляти конфігурацію PF, переконайтеся, що PF включений і, що ваш набір правил завантажений, цією командою:

$ sudo pfctl -si | grep Status

Status: Enabled for 20 days 06:28:24            Debug: err

Status: Enabled говорить нам, що PF включений, потрібно спробувати подивитися завантажилися правила використовуючи різні команди:

$ sudo pfctl -sr

match in all scrub (no-df max-mss 1440) block return log all

block return log quick from &ltbruteforce&gt to any anchor &quotftp-proxy/*&quot all

Тут, pfctl –sr еквівалентно pfctl –s правилам Фактичний висновок ймовірно, буде трохи більше, ніж показано тут, але це хороший приклад того, що ви повинні

очікувати, щоб побачити, коли набір правил завантажений Для налагодження, спробуйте додати

–vv  прапор в командний рядокpfctl, Ви побачите кількість правил і деяку додаткову зневадження приблизно як цю:

$ sudo pfctl -vvsr

@0 match in all scrub (no-df max-mss 1440)

[ Evaluations: 341770   Packets: 3417668  Bytes: 2112276585  States: 125  ] [ Inserted: uid 0 pid 14717 State Creations: 92254 ]

@1 match out on nfe0 inet from 10000/8 to any queue(q_def, q_pri) nat-to (nfe0:1) round-robin static-port

[ Evaluations: 341770   Packets: 0        Bytes: 0           States: 0    ] [ Inserted: uid 0 pid 14717 State Creations: 0    ]

@2 match out on nfe0 inet from 1921681030/24 to any queue(q_def, q_pri) nat-to (nfe0:1) round-robin static-port

[ Evaluations: 68623    Packets: 2138128  Bytes: 1431276138  States: 103  ] [ Inserted: uid 0 pid 14717 State Creations: 39109 ]

@3 block return log all

[ Evaluations: 341770   Packets: 114929   Bytes: 62705138    States: 0    ] [ Inserted: uid 0 pid 14717 State Creations: 0    ]

@4 block return log (all) quick from &ltbruteforce:0&gt to any

[ Evaluations: 341770   Packets: 2        Bytes: 104         States: 0    ] [ Inserted: uid 0 pid 14717 State Creations: 0     ]

@5 anchor &quotftp-proxy/*&quot all

[ Evaluations: 341768   Packets: 319954   Bytes: 263432399   States: 0    ] [ Inserted: uid 0 pid 14717 State Creations: 70   ]

Тепер ви повинні виконувати структуровану покрокову завантаження набору правил Знайти правила, які відповідають розслідування пакетів Яке останнє відповідне правило Якщо більше ніж одне відповідне правило (Як ви, напевно, памятаєте з попередніх глав, коли пакет відповідає правилу quick оцінка зупиняється, і все, що quick правило визначає відбувається з пакетом) Якщо так, вам потрібно простежити за оцінкою правил до тих пір, поки ви не дійдете до кінця набору правил або поки пакет не буде відповідати правилу quick, яке потім завершує процес Якщо ваш набір правил проходить наприкінці десь в іншому, ніж в очікуваному вами

відповідному правилі місці, ви знайшли свою логічну помилку

Логічні помилки в наборі правил як правило, діляться на три типи:

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Ваше правило, не відповідає, тому що воно ніколи не оцінюється Мається quick правило раніше, і тому всі оцінки правил на цьому зупиняються

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Ваше правило оцінюється, але пакет не відповідає зрештою, через

критеріїв правила

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Ваше правило оцінюється, правило відповідає, але пакет також соответсвует іншому правилу пізніше в наборі правил Остання відповідність правило є тим, яке визначає що відбувається з вашим зєднанням

У главі 8 введений tcpdump як цінний інструмент для читання та інтерпретації логів PF Програма також дуже добре прибутк для перегляду трафіку, який проходить через певний інтерфейс Те, що ви дізналися про логах PF і як використовувати tcpdump у фільтрації знадобиться, коли ви хочете розшукати які саме пакети досягають якого інтерфейсу Ось приклад використання tcpdump для перегляду TCP трафіку на xl0 інтерфейсі (але не показано SSH або SMTP трафік) і роздруковує результат в дуже докладному режимі (vvv):

$ sudo tcpdump -nvvvpi xl0 tcp and not port ssh and not port smtp tcpdump: listening on xl0, link-type EN10MB

21:41:42395178 194541071922418 &gt 1372171904180: S [tcp sum ok] 3304153886:3304153886(0) win 16384 &ltmss 1460,nop,nop,sackOK,nop,wscale

0,nop,nop,timestamp 1308370594 0&gt (DF) (ttl 63, id 30934, len 64)

21:41:42424368 1372171904180 &gt 194541071922418: S [tcp sum ok] 1753576798:1753576798(0) ack 3304153887 win 5792 &ltmss 1460,sackOK,timestamp 168899231 1308370594,nop,wscale 9&gt (DF) (ttl 53, id 0, len 60)

Сполуки показані тут успішно зєднуються з вебсайтом Є більш цікаві

речі, на які варто поглянути, хоча, наприклад, зєднання, які ніколи не повинні відповідно до ваших вимог, або сполуки, які були успішні, коли ваше завдання говорить, що вони явно не повинні Тест в таких випадках включає в себе відстеження шляху пакетів через свою конфігурацію Ще раз, це корисно, щоб перевірити, включений або виключений PF і перевірити чи є різниця Спираючись на результати від початкового тесту, ви потім виконайте такий же аналіз набору правил як описано вище:

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Якщо у вас є розумні теорії про те, як пакети повинні пройти ваш набір правил і мережевих інтерфейсів, використовуючи tcpdump, ви побачите Трафка на кожному з інтерфейсів, в свою чергу

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Використання tcpdump у фільтрації, щоб витягти тільки потрібну інформацію,

щоб побачити тільки ті пакети, які повинні відповідати вашому конкретному випадку, таких як порт SMTP і призначення 1920219

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Знайти місце, де ваші припущення не відповідають реальності вашого

мережевого трафіку

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Увімкніть ведення журналу для правил, які можуть бути залучені, і подивіться через tcpdump на відповідний в pflog інтерфейс, щоб побачити дійсно відповідають правилам пакети

Основний план тесту процедури досить справний Якщо ви звузили з причини вашої конфігурації PF, знову ж, це випадок зясувати, які правила відповідають і яке правило закінчується у визначенні того, буде пакет проходити або заблокується

Знайте вашу мережу і зберігайте контрольПовторювана тема в цій книзі в тому, що PF і повязані з ним інструменти дозволяють відносно легко для вас, як мережевого адміністратора, брати під контроль мережі і змусити вести її так як ви хочете, щоб вона себе вела Іншими словами, будувати

мережа вам потрібно

Запуск мережі може бути веселим, і я сподіваюся, вам сподобався цей тур, я вважаю це

кращим інструментом для мережевої безпеки Представляючи PF, я зробив усвідомлене рішення на ранньому етапі, щоб познайомити вас з методами та способами мислення за допомогою цікавих і корисних конфігурацій, а не пропонувати повний каталог доступних функцій, або що, втім, робить цю книгу повним довідником Повний довідник PF вже існує в man сторінках, які оновлюються кожні шість місяців з новими релізами OpenBSD Ви також можете знайти додаткову інформацію на ресурсах, які я перераховував у додатку А

Тепер у вас є широкі базові знання про те, що PF може зробити, ви можете почати будувати мережі відповідно до вашими власними уявленнями про те, що

вам потрібно Це коли найцікавіше починається

Джерело: Книга про PF, by Peter NM Hansteen, Переклад виконав Михайлов Олексій aka iboxjo

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*