Завдання черзі на основі відбитку операційної системи

Глава 6 охоплювала кілька способів використання spamd, що дозволяють скоротити

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

PF має досить надійний механізм зняття відбитка (fingerprinting) операційної системи, який дозволяє визначити операційну систему на іншому кінці зєднання, базуючись на характеристиках SYN пакетів переданих на початковій стадії встановлення зєднання Це може стати простою заміною spamd, за умови, що ви визначили, що легітимна пошта від систем що працюють на даній ОС вкрай малоймовірна:

pass quick proto tcp from any os &quotWindows&quot to $ext_if port smtp queue smallpipe

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

Висока надійність і безперервність обслуговування – одночасно маркетингові слівця і бажана мета для IT фахівців і мережевих адміністраторів Для досягнення цієї осоннаной необхідності і вирішення повязаних з ними проблем були створені CARP і pfsync, додані в функціонал OpenBSD 35

Common Address Redundancy Protocol (CARP) був розроблений в якості не повязаної патентами альтернативи Virtual Router Redundancy Protocol (VRRP), який проіснував досить довго, щоб стати санкціонованим IETF стандартом, хоча його патентні проблеми так і не були разрешени3 Одна з головних цілей CARP є забезпечення підтримки нормального функціонування мережі, навіть при порушенні роботи брандмауера або іншого сервісу, або в період сервісного обслуговування обладнання (наприклад оновлення) На додаток до CARP, був створений протокол pfsync призначений для управління синхронізацією станів PF між резервними вузлами пакетних фільтрів або шлюзами Обидва протоколу призначені для створення резервної мережі з можливістю автоматичної відмовостійкості

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

По суті pfsync є віртуальним мережевим інтерфейсом, спеціально розробленим для синхронізації відомостей про стани між брандмауерами PF Його інтерфейси призначаються на фізичні інтерфейси з використанням ifconfig настійно рекомендується встановлювати pfsync на окремі мережі (або навіть VLAN), навіть якщо технічно можливо одночасно передавати трафік pfsync з іншим трафіком на регулярному інтерфейсі Основна причина цієї рекомендації повязана з тим, що сам pfsync не виробляє жодної перевірки автентичності для партнерів синхронізації, і гарантувати коректну синхронізацію ви можете тільки використанням спеціальних інтерфейсів для трафіку pfsync

Для ілюстрації реалізації відмовостійкості з CARP і pfsync, ми почнемо з прикладу мережі має один шлюз для звязку із зовнішнім світом Переконфігуруванні мережі буде

переслідувати наступні цілі:

• Мережа повинна працювати так само як і колись

• Необхідно досягти кращу доступність сервісів без помітних простоїв

• Мережа повинна забезпечувати витончений перехід на резервний ресурс без переривання активних сполук

Почнемо з відносно простою мережі описаною в розділі 3, яка зображена на малюнку 7-2

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

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

змогли б звязатися з резервними шлюзами (окрім як з хостів в мережі яким призначені адреси на фізичні інтерфейси), до тих пір, поки вони не стануть головними в грруппе резервування і не приймуть на себе віртуальні IP адреси

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

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

Велика частина установки CARP полягає в установці кабельного зєднання (відповідно до схеми вашої мережі), установці значень sysctl і використанні команди ifconfig Крім того, на деяких системах, вам необхідно перевірити, що ваше ядро ​​скомпільовано з підтримкою необхідних пристроїв

На OpenBSD, пристрої CARP і pfsync присутні в конфігурації ядер GENERIC і GENERICMP Якщо ви працюєте з ядром, в якому ви відключили ці опції, буде потрібно

переконфігурувати ядро Користувачі FreeBSD повинні перевірити, що ядро

скомпільовано з пристроями CARP і pfsync, оскільки використовується за умовчанням, ядро ​​GENERIC не підтримує ці параметри Зверніться до керівництва по FreeBSD для отримання інформації по збірці і установці ядра Користувачі NetBSD, так само повинні перевірити, що ядро ​​скомпільовано з підтримкою псевдо-пристрої CARP Ядро GENERIC використовуване за замовчуванням не включає підтримку CARP Однак, ви виявите відповідну закоментірованную рядок у файлі конфігурації GENERIC, додану, для простоти підключення даної опції У даний час NetBSD ще не підтримує pfsync, що повязано з недозволеним питаннями в протоколі нумерації, принаймні на момент написання цієї глави

На всіх CARP-сумісних системах, основні функції регулюються купкою змінних sysctl Одна з головних, netinetcarpallow, включена за замовчуванням На типовій системі OpenBSD, ви побачите наступний висновок:

$ sysctl netinetcarpallow netinetcarpallow=1

Це говорить про те, що ваша система підготовлена ​​до використання CARP

Якщо ваше ядро ​​не налаштоване з CARP, дана команда надасть висновок типу: sysctl: unknown oid netinetcarpallow на FreeBSD абоsysctl:  third level name carp in netinetcarpallow is invalid на NetBSD

Використовуйте наступну команду sysctl для перегляду всіх змінних повязаних з CARP:

$ sysctl netinetcarp netinetcarpallow=1 netinetcarppreempt=0 netinetcarplog=2

У FreeBSD ви зіткнетеся з змінної netinetcarpsuppress_preempt, яка має статус тільки читання і показує існування можливості попередження У системах з кодовою базою CARP заснованої на OpenBSD 42 або більш ранньої, ви можете виявити змінну netinetcarparpbalance, яка використовується для включення балансування CARP ARP що пропонує кілька обмежені можливості балансування навантаження для хостів локальної мережі

Для включення відмовостійкості між шлюзами в планованої установці, нам необхідно встановити змінну netinetcarppreempt:

$ sudo sysctl netinetcarppreempt=1

Встановлення змінної netinetcarppreempt означає, що на хостах мають більше одного мережевого інтерфейсу, наприклад таких, як наш шлюз, всі інтерфейси CARP будуть перебувати між основним і резервним Ця установка повинна бути однаковою на всіх хостах в групі CARP Дану настройку необхідно повторити на всіх хостах Мінлива netinetcarplog встановлює рівень налагодження для журналирования CARP Діапазон можливих значень – від 0 до 7 За замовчуванням використовується рівень 2, що означає внесення до журналу тільки зміни станів CARP

Налаштування мережевого інтерфейсу з використанням ifconfig Розглядаючи схему мережі, ви можете помітити, що локальна мережа використовує адреси діапазону 192168120, в той час як інтерфейс виходу в Інтернет знаходиться в мережі 192020 За допомогою цих діапазонів адрес і маючи на увазі інтерфейс CARP за замовчуванням, можна збагнути, які команди необхідні для створення віртуальних інтерфесом Крім звичайних мережевих параметрів, інтерфейси CARP вимагають один додатковий параметр: ідентифікатор віртуального хоста (vhid), який однозначно ідентифікує інтерфейси для загальних віртуальних IP адрес

vhid  являє собою 8-бітну величину, яка повинна бути встановлена ​​в значення унікальне в межах широкомовного домену Невірна настройка значення vhidможет привести до ряду різних мережевих проблем, які важко піддаються налагодженні Існує непідтверджена інформація, що системи надмірності і балансування навантаження засновані на VRRP використовують ідентифікаційну схему схожу на схему CARP, таким чином, можуть виникати колізії

ID з деякими повязаними системами, що призведе до порушення роботи

На машині, яку ви плануєте встановити в якості початкової основною для групи, слід використовувати наступні команди:

$ sudo ifconfig carp0 1920219 vhid 1

$ sudo ifconfig carp1 19216811 vhid 2

Зверніть увагу, що немає необхідності явно вказувати фізичний інтерфейс Віртуальні інтерфейси carp0 і carp1 повязані з фізичними інтерфейсами, настрій з адресами в тій ж підмережі, що і CARP адреси

У тих ситуаціях, коли вибір фзіческого мережевого пристрою для інтерфейсу CARP, в існуючій конфігурації мережі, не очевидний, ви можете додати інтерфейс carpdev в рядку команди ifconfig Це буває корисно в декого не інтуїтивних конфігураціях, коли число вільних IP-адрес у відповідній мережі сильно обмежено Під час написання даної глави CARP порт FreeBSD не пропонував варіанти використання carpdev

Використовуючи ifconfig ви можете перевірити коректність налаштування кожного інтерфейсу CARP:

$ ifconfig carp0

carp0: flags=8843&ltUP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt mtu 1500 lladdr 00:00:5e:00:01:01

carp: MASTER carpdev ep0 vhid 1 advbase 1 advskew 0 groups: carp

Зверніть увагу, рядок carp: відображає статус MASTER

На резервної машині всі налаштування ідентичні, за винятком додавання параметра

$ sudo ifconfig carp0 1920219 vhid 1 advskew 100

$ sudo ifconfig carp1 19216811 vhid 2 advskew 100

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

на себе приймає За замовчуванням, значення advbase дорівнює 1, а advskew  дорівнює 0 У нашому прикладі, основний хост формуватиме оголошення кожну секунду (1 +0 / 256), в той час як резервний чекатиме (1 +100 / 256) секунди При netinetcarppreempt = 1, коли основний хост (master) припиняє оголошення або його оголошення не доступні, резервний (backup) приймає його функції на себе і стає новим основним (новим masterом) починаючи формувати оголошення із заданою швидкістю Завдання менших значень інтервалів для advskew дозволяє підвищити ймовірність хоста стати новим masterом Якщо кілька хостів мають однакове значення advskew, тільки один з них отримає статус майстра

У OpenBSD 41 і далі, існує ще один фактор, що визначає, який хост прийме на себе обовязки майстра CARP Лічильник зниження (demotion counter) – значення, оголошується інтерфейсу для кожного хоста CARP в якості вказівки заходи готовності інтерфейсу CARP Коли значення даного лічильника 0, вузол знаходиться в повній готовності більш високі значення вказують ступінь його деградації Ви можете встановити лічильник пониження безпосередньо з командного рядка, використовуючи команду ifconfig-g, але зазвичай, значення встановлюється самою системою в більш високі значення в процесі завантаження системи За інших рівних умов, хост з найнижчим значенням лічильника переважатиме при виборі майстра CARP

Під час написання цієї глави, порт CARP FreeBSD не підтримував встановлення лічильника зниження

На резервному хості, знову використовуємо ifconfig, щоб переконатися, що кожен CARP інтерфейс правильно сконфігурований:

$ ifconfig carp0

carp0: flags=8843&ltUP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt mtu 1500 lladdr 00:00:5e:00:01:01

carp: BACKUP carpdev ep0 vhid 1 advbase 1 advskew 100 groups: carp

inet 1920219 netmask 0xffffff00 broadcast 19202255

inet6 fe80::200:5eff:fe00:101%carp0 prefixlen 64 scopeid 0x5

Результуючий висновок дещо відрізняється Зверніть увагу, що рядок carp: відображає статус BACKUP, поряд з параметрами advbase і advskew Для актуального використання, вам необхідно додати заходи безпеки захищають CARP від ​​несанкціонованої активності, налаштувавши членів групи CARP із загальним, секретним паролем, наприклад так4:

$ sudo ifconfig carp0 pass mekmitasdigoat 1920219 vhid 1

$ sudo ifconfig carp1 pass mekmitasdigoat 19216811 vhid 2

Як і будь-який пароль, даний пароль стає невідємною частиною CARP трафіку вашої установки Подбайте про відповідній настройці всіх інтерфейсів групи CARP з тим же паролем (або без нього)

Після того як ви зясували відповідні налаштування, вам необхідно зберегти їх у відповідних файлах директорії / etc, щоб використовувати після перезавантаження:

• На OpenBSD, встановіть параметри в hostnamecarp0 і hostnamecarp1

• На FreeBSD і NetBSD додайте відповідні рядки в файл rcconf, містять

значення змінних ifconfig_carp0 = і ifconfig_carp1 =

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

*

*