Система обмежень tcp wrappers
Система обмежень tcp wrappers
Кожен, хто знайомий з inetd (8), можливо колись чув про TCP Wrappers. Але мало хто повністю розуміють їх корисність в мережевому середовищі: більшість використовують брандмауер. Хоча його застосовність дуже широка, є речі, з якими брандмауер не може працювати, такі як відправка тексту назад викликає стороні. Програмне забезпечення рівня TCP може робити це і багато іншого. У наступних декількох розділах обговорюються багато можливостей TCP Wrappers, і, коли це необхідно, даються приклади налаштувань.
Програмне забезпечення TCP Wrappers розширює можливість inetd з підтримки кожного даемона. З ним стає можливим протоколювання, повернення повідомлень викликає стороні, обмеження підключень внутрішньою мережею і т.п. Хоча деякі з цих можливостей можуть бути реалізовані брандмауером, TCP Wrappers не тільки надають додатковий рівень захисту, але і дають більше контролю над системою, ніж це можливо за брандмауером.
Розширена функціональність обробників TCP не може замінити хороший мережевий екран. Тим не менш, обробники TCP можуть використовуватися спільно з мережевим екраном та іншими засобами забезпечення інформаційної безпеки, забезпечуючи тим самим додатковий рівень захисту системи.
Початкова настройка
Єдина вимога для використання TCP Wrappers в FreeBSD це наявність в rc.conf параметрів запуску inetd-Ww; це налаштування за замовчуванням. Звичайно, очікується також наявність правильного налаштування / etc / hosts.allow, але syslogd (8) відправить повідомлення в системний протокол якщо щось не так. У простій конфігурації, політика підключення зводиться до вирішення або блокування в залежності від параметрів в / etc / hosts.allow. Налаштування в FreeBSD за умовчанням полягає в дозволі підключення до будь даемону, запущеного з inetd. Зміна цієї поведінки буде обговорюватися тільки після розгляду базової налаштування.
Базова настройка зазвичай приймає форму daemon: address: action, де daemon це ім'я даемона, який запускається inetd. У поле address може перебувати ім'я хоста, IP адреса, або IPv6 адресу, укладений у квадратні дужки ([]). Поле action може приймати значення allow або deny, щоб відповідно дозволяти або забороняти доступ. Пам'ятайте, що пошук правил проводиться до першого збігу. При виявленні збігу застосовується відповідне правило і пошук переривається.
Існують і інші параметри, але вони будуть описані в наступних розділах. Проста конфігурація може бути, наприклад, такий: для дозволу з'єднань по протоколу POP3 до даемону mail / qpopper, в hosts.allow необхідно додати наступні рядки:
# This line is required for POP3 connections:
qpopper : ALL : allow
Після додавання цього рядка, inetd необхідно перезапустити. Це можна виконати командою kill (1) або скриптом / etc / rc.d / inetd з параметром restart.
розширена конфігурація
У TCP Wrappers є додаткові параметри; вони дають додаткові можливості контролю над з'єднаннями. Іноді буває корисно повертати коментар певним хостам або при підключенні до певних даемонам. В інших випадках може бути необхідно додати запис в лог файл, або відправити лист адміністраторові. У певних ситуаціях сервіс повинен використовуватися тільки для локальних з'єднань. Все це можливо з використанням параметрів c шаблонами, символами підстановки і шляхом виконання зовнішніх команд. Наступні два розділи присвячені цим типам налаштувань.
Зовнішні команди
Припустимо ситуацію, в якій з'єднання повинно бути заборонено, а про причини необхідно повідомити викликає стороні. Як це можна зробити? Відповідну можливість надає параметр twist. При спробі підключення виконується команда або скрипт, заданий цим параметром. Приклад дан у файлі hosts.allow:
- The rest of the daemons are protected.
ALL: ALL \
: Severity auth.info \ : Twist / bin / echo "You are not welcome to use% d from% h."
У цьому прикладі повідомлення,You are not allowed to use daemon from hostname.Буде повернуто від усіх даемонов, які не були попередньо налаштовані у файлі доступу. Зверніть увагу, що повертається, повинно бути укладена в лапки; з цього правила немає винятків. Можливо також використання параметра spawn. Як і параметр twist, параметр spawn передбачає заборону з'єднання і може використовуватися для запуску команд або скриптів. На відміну від twist, spawn не відправляє відповідь викликає стороні. Наприклад, наступна конфігурація:
- We do not allow connections from example.com:
ALL:. Example.com \
: Spawn (/ bin / echo% a from% h attempted to access% d>> \ / Var / log / connections.log) \ : Deny
відхилить всі спроби з'єднання з домену *. example.com, а ім'я хоста, IP адреса і даемон протоколюються в файл / var / log / connections.log.
Параметри - шаблони
До цього моменту в прикладах використовувався шаблон ALL. Існують і інші параметри, функціональність яких в подальшому може бути розширена. ALL відповідає будь-якому даемону, домену або IP адресу. Інший доступний шаблон це PARANOID, який відповідає хосту, IP адреса якого може бути підроблений. Іншими словами, paranoid може бути використаний для визначення дії з хостами, IP адреса яких не відповідає імені хоста. Ось приклад застосування цього параметра:
- Block possibly spoofed requests to sendmail:
sendmail: PARANOID: deny