Захист вашої бездротової мережі за допомогою authpf

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

використання вашої мережі

Як згадувалося раніше, фільтрація MAC адрес, насправді, не дає необхідного рівня захисту, оскільки можна, досить просто, змінити MAC адресу Розробники

OpenBSD вирішили використовувати радикально інший підхід до цієї проблеми, запровадивши authpf в

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

Для використання authpf, ви створюєте користувача з оболонкою authpf У процесі отримання доступу до мережі, користувачі реєструються на шлюзі з використанням SSH Як тільки користувач успішно завершує SSH аутентифікацію, завантажуються які ви визначили для користувача або відповідного класу користувачів Ці правила, які застосовуються до IP адресою користувача, діють до тих пір поки користувач остаестя повязаним з системою через SSH зєднання Після завершення SSH сесії, правила вивантажуються, і в більшості випадків, повністю не SSH трафік від IP адреси користувача забороняється При розумних налаштуваннях, буде проходити тільки трафік авторизованих користувачів

У OpenBSD, authpf – один з класів логінів пропонованих за замовчуванням, і ви можете це помітити коли будеде створювати користувача використовуючи команду adduser

Для систем, в яких клас authpf не доступний за замовчуванням, може бути необхідним додавання деяких рядків у файл / etc / loginconf:

authpf:\

:welcome=/etc/motdauthpf:\

:shell=/usr/sbin/authpf:\

:tc=default:

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

Базова аутентифікація шлюзуНалаштування аутентифікації шлюзу з authpf включає в себе створення та підтримку декількох додаткових файлів, крім вашого основного файлу конфігурації pfconf Основне дополнініе – файл authpfrules Всі інші файли мають достатньо

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

Почніть із створення порожнього файлу / etc / authpf / authpfconf Цей файл необхідний для роботи authpf, проте вміст його може бути різноманітним, тч створення порожнього

файлу буде розумним

Далі прямуємо в / etc / pfconf Спочатку, створюємо макроси інтерфейсу:

ext_if = &quotre0&quot int_if = &quotath0&quot

Додатково, якщо ви визначите таблицю названу , authpf буде додавати IP адреси аутентіфіціруемих користувачів в цю таблицю:

table &ltauthpf_users&gt persist

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

pass out on $ext_if from $localnet nat-to ($ext_if)

Синтаксис для pre-OpenBSD 47:

nat on $ext_if from $localnet to any -&gt ($ext_if)

Далі, ми створимо якір authpf, який дозволить завантажувати правила з authpfrules при аутентифікації користувача:

anchor &quotauthpf/*&quot

Для версії authpf pre-OpenBSD 47, потрібно кілька якорів, тч відповідна секція повинна виглядати так:

nat-anchor &quotauthpf/*&quot rdr-anchor &quotauthpf/*&quot binat-anchor &quotauthpf/*&quot anchor &quotauthpf/*&quot

Цим ми завершимо конфігурування pfconf повязане з authpf

У частині фільтрації, ми почнемо block all за замовчуванням, і будемо добалять що дозволяють правила (pass) по необхідності Тут для нас важливо, щоб SSH трафік проходив у внутрішню мережу:

pass quick on $int_if inet proto { tcp, udp } to $int_if port ssh

З цього моменту все залежить від вас Ви хочете, щоб ваші клієнти отримали дозвіл мен перш ніж аутентифицироваться Якщо це так, вставте правило пропуску для TCP і UDP сервісу дозволу імен в ваш файл pfconf Для відносно простих установок, ви можете включити іншу частину нашого базового набору правил, змінивши пропускають правила для дозволу трафіку адрес в таблиці

, замість будь-якої адреси вашої локальної мережі:

pass quick inet proto { tcp, udp } from &ltauthpf_users&gt to port $udp_services pass inet proto tcp from &ltauthpf_users&gt to port $client_out

Для більш диференційованої установки, ви можете помістити іншу частину вашого набору правил в / etc / authpf / authpfrules або розмістити окремі правила користувача в користувальницьких файлах authpfrules в піддиректорії кожного користувача в / etc / uathpf / users / Якщо вашим користувачам потрібен захист, ваш загальний файл / etc / authpf / authpfrule може виглядати наприклад так:

client_out = &quot{ ssh, domain, pop3, auth, nntp, http, https }&quot udp_services = &quot{ domain, ntp }&quot

pass quick inet proto { tcp, udp } from $user_ip to port $udp_services pass inet proto tcp from $user_ip to port $client_out

Макрос user_ip вбудований в authpf і розширюється в IP адресу користувача який пройшов аутентифікацію Ці правила будуть застосовуватися до будь-якому користувачеві, який проходить перевірку автентичності на шлюзі Якщо файл authpfrules існує в каталозі користувача / etc / authpf / users, правила з цього файлу будуть завантажуватися для користувача Це означає, що ваш наївний користувач Петро (Нехай буде Петро – пп) котору необхідно тільки переглядати сторінки в інтернет і мати доступ до служби працюючої на верхньому порту специфічною машини може отримати тільки те, що йому потрібно при наявності файлу / etc / authpf / users / peter / authpfrules подібного наступного:

client_out = &quot{ domain, http, https }&quot

pass inet from $user_ip to 19216810384 port 9000

pass quick inet proto { tcp, udp } from $user_ip to port $client_out

З іншого боку, колега Петра, Христина, запускає OpenBSD і взагалі не знає, що вона робить, навіть якщо вона створює трафік Ви могли б дати їй волю, створивши приблизно такий файл / etc / authpf / users / cristina / authpfrules:

pass from $user_ip os = &quotOpenBSD&quot to any

Це означає, що Христина може робити все що їй захочеться, поки вона аутентифицироваться на своїй OpenBSD

Широко відкрита закрита мережаУ деяких випадках, має сенс налаштувати мережу таким чином, щоб вона була відкритою і не зашифрованою на канальному рівні, в той же час дотримуючись деякі обмеження по authpf Наступний приклад – Wi-Fi зона яка може створюватися в аеропортах або інших громадських місцях, де будь-хто може звязатися з точками доступу і отримати IP адресу, проте будь-яка спроба виходу в Інтернет буде перенаправлено на спеціальну сторінку, до тих пір, поки користувач не отримає

аутентіфікаціі5

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

ext_if = &quotre0&quot int_if = &quotath0&quot auth_web=&quot1921682720&quot

dhcp_services = &quot{ bootps, bootpc }&quot # DHCP server + client table &ltauthpf_users&gt persist

pass in quick on $int_if proto tcp from &ltauthpf_users&gt to port http rdr-to $auth_web match out on $ext_if from $int_if:network nat-to ($ext_if)

anchor &quotauthpf/*&quot block all

pass quick on $int_if inet proto { tcp, udp } to $int_if port $dhcp_services pass quick inet proto { tcp, udp } from $int_if:network to any port domain pass quick on $int_if inet proto { tcp, udp } to $int_if port ssh

5 Дякую Вегарда Енгена (Vegard Engen) за ідею і його конфігурацію, яка збережена тут якщо не в усіх деталях, то хоча б в цілому

Для старої версії authpf, використовуйте такий файл:

ext_if = &quotre0&quot int_if = &quotath0&quot auth_web=&quot1921682720&quot

dhcp_services = &quot{ bootps, bootpc }&quot # DHCP server + client table &ltauthpf_users&gt persist

rdr pass on $int_if proto tcp from &ltauthpf_users&gt to any port http -&gt $auth_web nat on $ext_if from $localnet to any -&gt ($ext_if)

nat-anchor &quotauthpf/*&quot rdr-anchor &quotauthpf/*&quot binat-anchor &quotauthpf/*&quot anchor &quotauthpf/*&quot

block all

pass quick on $int_if inet proto { tcp, udp } to $int_if port $dhcp_services pass quick inet proto { tcp, udp } from $int_if:network to port domain pass quick on $int_if inet proto { tcp, udp } to $int_if port ssh

Макрос auth_web і перенаправлення дозволяє перенаправляти весь web трафік від адрес, які не потрапляють в таблицю аутентіфіцированний користувачів на спеціальний адресу На цю адресу ви створюєте web-сервер, який забезпечує інформаційні служби для клієнтів Це можуть бути сторінки з інструкціями, інформують до кого слід звернутися за отриманням доступу або підсистема обробки даних кредитних карток для отримання платного доступу Слід зазначити, що в цьому випадку буде працювати сервіс розпізнавання імен, однак всі спроби web серфінгу будуть перенаправлені на адресу auth_web Як тільки користувачі пройдуть аутентифікацію, ви можете додати для них загальні правила або специфічні правила користувача в файлах authpfrules, в залежності від вашої ситуації

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

*

*