БУДУЄМО МЕРЕЖА, ЯКА НАМ ПОТРІБНА

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

Якщо заголовок точно описує вашу мережу, ймовірно ви читаєте цю книгу для розваги, і я сподіваюся, що інша частина книги принесе вам задоволення

З іншого боку, якщо ви все ще вивчаєте, як будувати мережі, або не дуже впевнені у своїх навичках, вам може бути корисно коротке резюме основних мережевих термінів і

термінів безпеки

Безпека інформаційних технологій (IT) – це велика, складна і часто заплутуються тема Навіть якщо обмежитися тільки дослідженням термінів мережевої безпеки, виникає відчуття, що ми не сильно скоротили своє поле діяльності Справи стали набагато гірше кілька років тому, коли персональні компютери почали подсоеденяться в глобальну мережу і стали оснащуватися програмами і додатками для роботи з мережевим оточенням, які були не завжди вдало спроектовані

Результат виявився цілком передбачуваний Ще до того, як малі компютери стали мережевими, вони були метою для вірусів (напівавтоматичному програмному забезпеченню, яке може заражати інші файли і розмножуватися) і трояни (спочатку – троянські коні, програми змушують компютер жертви виконувати певні дії) Ставши мережевими, компютери піддалися ще одному типу вірусів – worms або мережеві червяки, що використовують мережу для размноженія1

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

Марно перераховувати все зло – це було прекрасно зроблено в іншому місці (дивіться додаток A, наприклад відмінне есе Марка Ранума – «Шість найтупіших ідей в компютерній безпеці») Підхід OpenBSD полягає, в першу чергу, в способі розробки дизайну та коду Якщо надалі, ви виявляєте помилки і ці помилки виявляються експлуатованими, після їх виправлення код повертається в дерево, навіть якщо це може означати радикальний перегляд дизайну, і в гіршому випадку призвести до втрати совместімості2

1 До епохи Windows був тільки один відомий червяк IBM Christmas Tree EXEC (1987 рік) і перший інтернет червяк, відомий як червяк Моріса (1988 рік), інформацію про яких легко знайти в будь-якому пошуковику Епоха мережевих червяків Windows, як вважається, почалася в травні 2000 року з появою хробака ILOVEYOU

2 Деякі презентації про підхід OpenBSD до питань безпеки можна знайти на http://www openbsdorg / papers / Одні з моїх улюблених – Тео де Раад (Theo de Raadts) Методи ліквідації проломів безпеки , Деміен Міллер (Damien Millers) Заходи безпеки в OpenSSH і Паффі на роботі – Отримання правильного коду і безпека, шлях OpenBSD Хеннінга Брауера (Henning Brauer) і Свена Демлоу (Sven Dehmlow)

У PF, а так само в цій книзі, основна увага концентрується на мережевому трафіку мережевого рівня Введення divert (4) сокетів в OPenBSD 47 зробило простіше налаштування системи, де PF використовується для глибокої інспекції пакетів Тим не менше, не всі вільне ПЗ має специфічний інтерфейс користувача, тому ми сфокусуємося на деяких методах основаних на поведінці притаманному мережному рівню (найбільш очевидно це показано в прикладі конфігурації глави 6) що допоможе знизити навантаження на програми контролю контексту, якщо вони у вас є У наступних розділах ви побачите, що мережевий рівень пропонує безліч можливостей окрім блокування та дозволу пакетів

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

події

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

Пакетний фільтр може стримувати небажаний мережевий трафік Крім того, він може допомогти контролювати всередині мережевий трафік вашої власної внутрішньої мережі Обидві ці функції дуже важливі в концепції брандмауера, однак блокування трафіку далеко не єдина корисна і цікава функціональна особливість пакетного фільтра

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

черзі, виконати формування трафіку (шейпер) і навіть перенаправляти проблемний

трафік до спеціалізованого ПЗ для спеціальної обробки

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

системи Існували приклади фільтрації пакетів в просторі користувача (user

space), проте в більшості операційних систем функції фільтрації реалізуються в ядрі системи, що забезпечує високу швидкість роботи

Розвиток PFЯкщо вас цікавить історія, ймовірно ви знаєте, що OpenBSD та інші BSD3 ОС є прямими нащадками системи BSD (іноді говорять про BSD Unix), операційної

системи включає еталонну реалізацію протоколів стека TCP / IP початку 80-х років

Як дослідний проект BSD був згорнутий на початку 90-х років та його код був звільнений для подальшого розвитку невеликими групами ентузіастів по всьому світу деякі з цих ентузіастів були відповідальні за збереження життєво важливих частин інфраструктури Інтернет і розвиток BSD тривало кількома паралельними напрямками під егідою різних груп OpenBSD стала відома як найбільш безпечна ОС заснована на BSD в якості системи фільтрації пакетів, дана система використовувала підсистему названу IPFilter, написану Дарреном Рідом (Darren Reed)

3 Якщо абревіатура BSD звучить для вас незнайоме, ось коротке розяснення Скорочена назва розшифровується як Berkeley Software Distribution і спочатку була набором корисних програм розроблених для операційної системи Unix співробітниками та студентами Університету Каліфорнії в Берклі З плином часу набір програм оформився в повноцінну операційну систему, яка, в свою чергу, стала основою цілого сімейства ОС, в тому числі OpenBSD, FreeBSD, NetBSD, DragonFlyBSD, і в деяких сенсах навіть Apple Mac OS X Для легкого розуміння, що таке BSD, зверніться до статті Що таке BSD за адресою http://wwwfreebsdorg/doc/en/articles/explaining-bsd (ну і звичайно до офіційних сайтів проектів)

На початку 2001 року, спільнота OpenBSD було шоковане заявою Ріда який оголосив, що IPFilter, який на той момент був тісно інтегрований з OpenBSD, не попадає під ліцензію BSD Замість цього, він використовує практично аналогічну ліцензію, виключаючи право внесення змін в код і розповсюдження результату змін Проблема полягала в тому, що версія IPFilter OpenBSD включала кілька змін і налаштувань, які, як виявилося, не потрапляли під дію ліцензії В результаті, 29 травня 2001 року, IPFilter був видалений з дерева вихідних кодів OpenBSD і на протязі декількох тижнів, OpenBSD (-Current) не включала ніякого ПО бранмауера

На щастя, в цей час, в Швейцарії, Даніель Хартмейер (Daniel Hartmeier) виробляв деякі експерименти з мережевою частиною коду ядра Він почав з підключення власної невеликої функції до мережному стеку, а потім пропустив через неї мережеві пакети Потім він задумався про фільтрації Коли настав описаний раніше криза з ліцензією, PF вже перебував у стадії розробки Перший Комміт коду PF припав на Неділя 24 червня 2001 року в 19:48:58 UTC Через кілька місяців інтенсивної роботи результуюча версія PF була висунута в якості основної частини базової системи OpenBSD 30 в грудні 2001 року4 Ця версія включала досить повну реалізацію пакетного фільтра, в тому числі включаючи NAT, який був досить схожим на IPFilter, тч перехід на нову версію OpenBSD не складе особливих проблем 5

PF виявився добре розробленим ПЗ У 2002 році Хартмейер отримав підтвердження USENIX, що доводить що тести продуктивності OpenBSD 31 PF виконуються однаково добре або навіть краще ніж IPFilter на OpenBSD 31 або IPTables на Linux Крім того, тести виконані на PF OpenBSD 30 показали, що код підвищує ефективність з версії 30 до версії 316

Код OpenBSD PF, написаний за допомогою нового движка фільтрації пакетів, досвідченими розробниками, естетственно викликав інтерес інших груп BSD Проект FreeBSD поступово прийняв PF, спочатку в якості пакета, а потім, починаючи з версії 53 в якості одного з трьох компонентів фільтрації пакетів базової системи Крім того, PF був включений в NetBSD і DragonFlyBSD7

Врізка: Нові версії PF працюють краще

Як і все в світі компютерів, OpenBSD і PF були порушені швидкими змінами апаратних засобів з мереж звязку Я не бачив тестів порівнянності USENIX, однак користувачі PF знаходять, що накладні

витрати при використанні PF вельми скромні Як приклад (в основному, щоб показати, що навіть

слабкі конфігурації обладнання цілком застосовні), одна з фірм використовувала як мережевих шлюзів машини в конфігурації Pentium III 450МГц c 384Мб памяті При цьому я не можу пригадати, щоб простий машини становив менше 96%

Варто відзначити, що поточні розробники PF, в основному Хеннінг Брауер (Henning Brauer) і Райан МакБрід (Ryan McBride), за участю ряду інших, внесли ряд оптимізацій в код OpenBSD PF в кількох останніх

релізах, що робило кожний наступний реліз з 44 по 48 помітно краще попереднього

4 Епізод з авторськими правами IPFilter стимулював команду OpenBSD на виконання аудиту ліцензій всього дерева вихідних кодів і портів, що дозволило уникнути подібних проблем в майбутньому Кілька потенційних проблем були вирішені в перебігу подальших місяців, що призвело до видалення деякого числа потенційних ліцензійних пасток, які загрожували розробникам вільного ПЗ Тео де Раадт підвів підсумки в повідомленні списку розсилки openbsd-misc 20 лютого 2003 Криза ліцензійної драми минув, а чистим прибутком стала нова система фільтрації пакетів під вільною ліцензією і з кращою якістю коду, а так само більш вільні ліцензії, як для великої частини коду OpenBSD, так і для іншого широко використовуваного ПЗ

5 Сумісність з конфігурацією IPFilter стало значним плюсом для розробників PF, але це перестало бути пріоритетом, як тільки стало можливо з упевненістю припустити, що всі користувачі OpenBSD перейшли на PF (приблизно під час виходу релізу OpenBSD 32) Вам не слід вважати, що існуюча конфігурація IPFilter працюватиме без змін з будь-якою версією PF З урахуванням змін синтаксису внесеними OpenBSD 47, навіть оновлення ранніх версій PF потребують проведення деяких додаткових робіт

6 Статтю надає детальну інформацію про тести, можна отримати на сайті Даніееля Хартмейера – http://wwwbenzedrinecx/pf-paperhtml

7 Один час виробники персонального брандмауера Core Force стверджували, що він заснований на PF На початку 2010 року, Core Security, компанія розробила Core Force (http://forcecoresecuritycom/) переключилася на інші галузі безпеки, такі як тестування проникнення, однак продукт по раніше доступний для скачування

Ця книга присвячена PF доступному в OpenBSD 48, і, у разі потреби, я буду відзначати значні відмінності між цією версією і тими, які інтегровані в інші системи Якщо ви гготови зануритися в конфігурацію PF, ви можете перейти до Глави 2, щоб відразу почати роботу Якщо ви

хочете витратити трохи часу і прокотитися по незнайомій території BSD, можете продовжити читання цієї глави

Якщо ви прийшли з іншого місцяЯкщо ви читаєте це з тієї причини, що плануєте перемістити налаштування PF з іншої системи – цей розділ для вас Якщо ви хочете використовувати PF, необхідно встановити і запустити системи такі як OpenBSD, FreeBSD, NetBSD або DragonFly BSD Все це – прекрасні ОС, але особисто мені більше подобається OpenBSD, в основному з тієї причини, що це та операційна система в якій, по суті, відбувається розвиток PF, і мені подобається діловий підхід до її розробки Іноді, невеликі зміни та виправлення помилок присходят в реалізаціях PF на інших системах, але новий і найсучасніший код PF завжди можна знайти в OpenBSD

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

Якщо ви плануєте використовувати PF на FreeBSD, NetBSD, DragonFly BSD або інших системах, ви повинні перевірити зауваження до релізу для вашої системи та іншу документацію, в цілях отримання докладної інформації про включеної версії PF

Вказівки для користувачів LinuxПодібність і відмінність між Linux і BSD – тема потенційно велика, якщо копати достатньо глибоко, але якщо ви маєте базові навички ця проблема не забере у вас занадто багато часу У решті частини книги, я буду вважати, що ви можете знайти свій шлях базовій конфігурації мережі BSD Тч, якщо ви більше знайомі з налаштуванням Linux або інших систем, варто відзначити кілька моментів властивих

конфігуруванню BSD

– Linux і BSD використовують різні угоди для іменування мережевих інтерфейсів Конвенція Linux – маркування всіх мережевих інтерфейсів на машині у вигляді послідовності eth0, eth1 і так далі (хоча для деяких драйверів і їх комбінацій ви можете зустріти wlan0, wlan1 і тд наприклад для бездротових інтерфейсів) У системах BSD, інтерфейсам присвоюються імена, що складаються з імені драйвера і порядкового номера інтерфейсу Наприклад старі карти 3Com використовують драйвер ep зявляються в системі як ep0, ep1 і так далі карти Intel Gigabit, визначаються як em0, em1 і так далі Деякі карти SMC представляються як sn0, sn1 .. Ця система цілком логічна, і дозволяє простіше знайти дані для специфічного інтерфейсу Якщо повідомлення ядра (у процесі завантаження або виведення ifconfig), говорять, що у вас є інтерфейс названий em0, вам необхідно звернеться до сторінці керівництва системи, щоб дізнатися, яку швидкість він підтримує, які прошивки йому потрібні тощо

– Ви повинні знати, що BSD-системи конфігуріются допомогою / etc / rcconf Загалом, BSD системи організовані так, щоб читати конфігурацію з файлу

/ Etc / rcconf, який читається скриптом / etc / rc при початковій завантаженні OpenBSD рекомендує використовувати / etc / rcconflocal для локальних налаштувань, оскільки

rcconf містить значення за замовчуванням FreeBSD використовує / etc / defaults / rcconf для зберігання значень за замовчуванням, надаючи / etc / rcconf для внесення

власних змін Крім того, OpenBSD використовує конфігураційні файли для кожного окремого інтерфейсу, звані hostname , Де

замінюється імям інтерфейсу

– З метою вивчення PF, вам необхідно сконцентруватися на файлі / etc / pfconf, який ви, здебільшого, будете створювати самі

Якщо вам потрібні більш широкі і ретельні відомості про вашу BSD системі, зверніться до документації по системі, в тому числі FAQ, списками розсилки і офіційним сайтам проектів Деякі рекомендації для прочитання ви можете знайти в Додаток А

Джерело: Книга про 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>

*

*