Базовий забороняє набір правил PF

           До цього моменту, ми дозволяли будь-який трафік щодо себе Дозволяючий набір правил може бути дуже корисний поки ми перевіряємо наші основні зєднання знаходяться на місці, або перевіряємо якусь фільтрацію, яка є частиною проблеми, яку ми бачимо Але, як тільки фаза «У нас є звязок» Закінчилася, настав час почати посилення, щоб створити базову лінію, яка забезпечить контроль

4 Навіщо писати набору заборонних правил за замовчуванням Найкоротший відповідь це дає вам кращий контроль Завдання пакетного фільтра тримати під контролем, не дати попастися, що погані хлопці можуть зробити Маркус Ранум написав дуже захоплюючу і інформативну статтю, яка називається Шість найтупіших ідей в компютерній безпеці (http://wwwranumcom/security/computer_security/editorials/dumb/indexhtml)

Почнемо, з додавання наступного правила в /etc/pfconf:

block all

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

Тепер, ми визначимо кілька макросів в наборі правил, які використовуємо пізніше:

tcp_services = &quot{ ssh, smtp, domain, www, pop3, auth, https, pop3s }&quot udp_services = &quot{ domain }&quot

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

block all

pass out proto tcp to port $tcp_services pass proto udp to port $udp_services

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

Рядки $ tcp_services і $ udp_services є посиланнями на макрос Макроси, які зявляються в наборі правил в цьому місці розширюються, коли набір правил завантажується і працює набір правил буде мати повні списки, які вставляються в макроси на які посилаються Залежно від точної природи макросів, вони можуть викликатися одним правилом з посиланням на макрос, що розширюється на кілька правил

Навіть у маленьких наборах правил, таких як цей, використання макросів робить правила легше для розуміння і підтримки Кількість інформації, яка необхідна

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

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

TCP ПРОТИ UDP

Ми подбали, щоб відокремити TCP служби від UDP служб Деякі служби працюють в основному на добре відомих номерах портів і на TCP або UDP, а також декілька альтернативних між використанням TCP і UDP відповідно з конкретними умовами

Два протоколу абсолютно різних в деяких відносинах TCP є орієнтованим на зєднання і надійним, ідеальний кандидат для динамічної фільтрації На відміну від UDP, який є не без підстави не орієнтованим на зєднання, але PF створює і підтримує дані еквівалентно про стан

інформації для UDP трафіку, щоб забезпечити повернення дозволеного UDP трафіку назад, якщо він відповідає існуючим станам

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

Після змін у файлі pfconf, Нам потрібно завантажити нові правила як показано далі:

$ sudo pfctl -f /etc/pfconf

Якщо ні синтаксичних помилок, pfctl не повинен відобразити ніяких повідомлення в ході завантаження правил

Якщо ви віддаєте перевагу докладний висновок, використовуйте –v прапор:

$ sudo pfctl -vf /etc/pfconf

Коли ви використовуєте докладний режим виведення, pfctl повинен розширювати свої макроси в окремі правила, перш ніж повернуть вас в командний рядок як показано далі:

$ sudo pfctl -vf /etc/pfconf

tcp_services = &quot{ ssh, smtp, domain, www, pop3, auth, https, pop3s }&quot udp_services = &quot{ domain }&quot

block drop all

pass out proto tcp from any to any port = ssh flags S/SA keep state pass out proto tcp from any to any port = smtp flags S/SA keep state pass out proto tcp from any to any port = domain flags S/SA keep state pass out proto tcp from any to any port = www flags S/SA keep state pass out proto tcp from any to any port = pop3 flags S/SA keep state pass out proto tcp from any to any port = auth flags S/SA keep state pass out proto tcp from any to any port = https flags S/SA keep state pass out proto tcp from any to any port = pop3s flags S/SA keep state pass proto udp from any to any port = domain keep state

$ _

Порівняйте цей висновок з вмістом файлу /etc/pfconf, Який ви насправді написали Для нашої єдиної TCP служби правило розгортається у восьми різних контекстах: по одному для кожної служби в списку Одне правило UDP піклуватися тільки про одну службі, і воно розширюється від того, що ми включили опцію за замовчуванням Зверніть увагу, що правила відображаються в повному обсязі, з значеннями за замовчуванням, такі як прапори S / SA зберігають стан вживане в цьому місці для будь опції не указаной в явному вигляді Ця конфігурація та, яка завантажується насправді

Перевірка ваших правилЯкщо ви зробили зовнішні зміни у вашому наборі правил, перевірте їх перед тим, як спробуєте завантажити набір правил:

$ pfctl -nf /etc/pfconf

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

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

-F all або аналогічного) перш ніж намагатися завантажити нові з вашого конфігураційного файлу, остання допустима конфігурація буде залишатися

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

Тестування зміненого набору правилЯкщо у вас є набір правил, які pfctl завантажив без будь-яких помилок, прийшов час подивитися чи працюють ваші правила так, як очікувалося Перевірка дозволу імен з командою такий як $ host nostarchcom (як ми робили раніше) повинно все ще працювати, але виберіть домен, який недоступний останнім часом (наприклад, однієї з політичних партій, яка не пройшла голосування), щоб переконатися, що ви не тягнете DNS-інформацію з кеша Ви повинні здатні серфіть Web і використовувати декілька повязаних з поштою служб, але через природи цього оновленого набору правил, намагається отримати доступ до TCP службам інші, ніж ті, які визначені (SSH, SMTP і тд) на будь віддаленій системі не зможе І як і наш простий набір правил, ваша система повинна відмовитися від усіх зєднань, які не відповідають існуючим записам у таблиці станів тільки зворотний вхідний трафік буде дозволено ініціювати на цій машині

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

*

*