- Вопрос: в каких случаях выгоднее использовать аппаратный маршрутизатор, а в каких -- программный?
- Ответ: прикидывать по деньгам
- Ответ (динамическая маршрутизация):
- Как бороться с DOS-атаками
/(А) DDOS-агенты +-----------+ Канал Провайдера (КП) /(А) | Провайдер |======================...Интернет...-(А) +-----+-----* \(А) | \(А) (КК) | Канал Клиента \... | \(А) +----+----+ | Клиент | +---------+
Чёрная дыра: на время DOS анонсируем Клиента как Black Hole, всем хорошо, но клиент не работает
Фильтр на КП: определение (А) косвенными методами может не работать, так как количество (А) прибывает быстрее, чем их обнаруживают. Всё равно нужно использовать, если КП не может свободно держать DDOS.
Фильтр на КК: КК (обычно) уже, на нём фильтровать проще. DDOS объёмом ~1000 (А) в день (Access List 3000 строк) держит и продолжает работать обычный сервер -- BGP по россии (FreeBSD5 / PF / 2xP3 550 / 512 RAM). Другой вариант: между Клиентом и Провайдером стоит машина (FreeBSD5 / PF+SynProxy_DDOS / 3G RAM /P4 3.2GHz / 2x100Mb), которая держит атаку в 330МБит/сек, но заваливается на 550МБит/сек (скорее всего, из-за скорости индексирования таблиц ядра и поиска по ним).
Packet Filter (PF)
- Журнализация
| +----+----+ +-------+ | Правила +---+ pflog | +----+----+ +-------+ |
PfLog -- сетевой интерфейс, в котором есть только то, что надо журналировать. А скоро pflog-ов будет много.
- Построение межсетевых экранов в режиме 24/7 при высокой цене краткосрочного (более полминуты) простоя
| V +---------+----------+ | Общий IP | V V +----+----+ +----+----+ | | PfSync | | | PF +<-------->+ PF | | | VRRP | | +----+----+ или CARP +----+----+ | | V Общий IP V +---------+----------+ | V
- Время автоматического переключения (downtime) -- 10 секунд
- Журнализация
MAC (Mandatory Access Control)
Есть реализации субъект-обектной модели в Linux -- LSM, RSBAC
Ручная настройка -- дело не для слабонервных, потому что по умолчанию всё запрещено (спасибо TrustedBSD, гда такое требование обязательно). Любую задачу можно решить, существует 6000 меток безопасности, каждую из которых можно отдельно обрабатывать. Настроцка --вручную.
За каждый вид объекта и субъекта отвечает собственный модуль. А настраиваются эти модули по-разному!
Использование Jail
Аналог в Linux -- VServer
Jail -- это процесс, внутри него top не работает. (кой-какая дополниельна информация о Jail и процессах). Паразитная нагрузка (overhead) не превышает 15%.
Проблема lo0 (он один на все Jail-ы), значит, не всё можно в Jail засовывать. Проще всего именно на lo0 вешать собственные Jail-ов. Что нельзя сажать в Jail:
NFS (в Linux есть User Space NFS)
- Маршрутизатор, МЭ, мониторинг
- Portupgrade работает в Jail плохо
Использование UnionFS (аналоги в Linux: посредством LUFS и по-человечески в ядре)
/usr/bin и прочие неизменяемые каталоги монтируются вместо того, чтобы копировать или исползовать find / | cpio -pdml
при монтировании можно указать, какой каталог -- "верхний", файлы которого "загораживают" файлы нижележащего каталога, и в который только и ведётся запись
Следовательно, размонтировав все unionfs-каталоги (в т. ч. /etc, /home и прочие), мы получаем только изменённые файлы! Вот это-то как раз и надо складывать backup...
- Недостаток: если обновлять пакеты на базовой системе, в Jail-ах их обновлять не стоит (иначе будет разноверсица файлов). Хуже того, уже изменённые конфигурационные файлы в Jail-ах останутся старыми. А если обновлять только в Jail-е, то дисковое пространство всё-таки нарастёт. Нет в мире совершенства!
Для FTP-сервера можно использовать двойное монтирование: сначала -- базовое наполнение, на неё -- FTP-сервис, на них -- пользовательское пространство (оно будет R/W)
UnionFS можно вообще не использовать, если нужна не полноценная система, а подобие BusyBox (например, для Zope) или делать в User Mode Linux вместо VServer-а.
Если каждый сервис оформлять в своём Jail-е, получается масштабируемое решение (IP-адреса Jail-ов повешены на lo0):
+----------------------------+ Host 1 | Host 2 | /------------------|----\ /-------------------|---\ | | | | | | | IP1 IP2 \P3| / | | IP4 IP5 IP3 V | | +----+ +----+ +\---/ | | +----+ +----+ +----+ | | | | | | | \ /| | | | | | | | | | | | J1 | | J2 | | J/ | | | | J1 | | J2 | | J3 | | | | | | | | / \| | | | | | | | | | | +----+ +----+ +/---\ | | +----+ +----+ +----+ | | / \ | | | \-----------------------/ \-----------------------/
- Перенос сервиса J3 -- это всего лишь
Удаление alias-a на одном lo0 и добавление на другом
- Dump+Restore изменённых файлов
- Останов Jail на одном сервере и зар/пуск на другом
- Перенос можно делать для перераспределения нагрузки, при отдаче одного сервера в ремонт (тогда переносятся все J) и т. п.
- Перенос сервиса J3 -- это всего лишь
- Пример: 10 Jail-ов на ноутбуке Research Engeneer-а:
IMAP (Cyrus и OfflineIMAP)
Murder (IMAP Aggregator)
Разовый для различных задач
Запасной
Запасной
- Для клиентов ко всем этим сервисам
- DNS-сервер для них всех