Документ взят из кэша поисковой машины. Адрес оригинального документа : http://uneex.lorien.cs.msu.su/Meetings/ModernOsFeatures/Conspect/3
Дата изменения: Unknown
Дата индексирования: Sun Apr 10 05:19:34 2016
Кодировка: UTF-8
Meetings/ModernOsFeatures/Conspect/3 - UNИX
  1. Вопрос: в каких случаях выгоднее использовать аппаратный маршрутизатор, а в каких -- программный?
    1. Ответ: прикидывать по деньгам
      • в самых простых случаях лучше купить железяку за 50уе (рек. D-Link)

      • в "средних" случаях дешевле использовать FreeBSD5 или (для задач помельче) Linux

      • в "тяжелых случаях" (когда может не потянуть шина/процессор/память ядра) лучше купить железяку за 50k+уе (Cisco, Juniper)

    2. Ответ (динамическая маршрутизация):
      • в сложных случаях -- только железо
      • в простых случаях -- zebra/quagga, bird, mrtd

  2. Как бороться с 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МБит/сек (скорее всего, из-за скорости индексирования таблиц ядра и поиска по ним).

  3. Packet Filter (PF)

    • Журнализация
                 |
            +----+----+   +-------+
            | Правила +---+ pflog |
            +----+----+   +-------+
                 |
      • PfLog -- сетевой интерфейс, в котором есть только то, что надо журналировать. А скоро pflog-ов будет много.

    • Построение межсетевых экранов в режиме 24/7 при высокой цене краткосрочного (более полминуты) простоя
                           |
                           V
                 +---------+----------+
                 |      Общий IP      |
                 V                    V
            +----+----+          +----+----+
            |         |  PfSync  |         |
            |    PF   +<-------->+   PF    |
            |         |   VRRP   |         |
            +----+----+ или CARP +----+----+
                 |                    |
                 V      Общий IP      V
                 +---------+----------+
                           |
                           V
      • Время автоматического переключения (downtime) -- 10 секунд
  4. MAC (Mandatory Access Control)

    • Есть реализации субъект-обектной модели в Linux -- LSM, RSBAC

    • Ручная настройка -- дело не для слабонервных, потому что по умолчанию все запрещено (спасибо TrustedBSD, гда такое требование обязательно). Любую задачу можно решить, существует 6000 меток безопасности, каждую из которых можно отдельно обрабатывать. Настроцка --вручную.

    • За каждый вид объекта и субъекта отвечает собственный модуль. А настраиваются эти модули по-разному!

  5. Использование 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) и т. п.
  6. Пример: 10 Jail-ов на ноутбуке Research Engeneer-а:
    1. PostgreSQL

    2. IMAP (Cyrus и OfflineIMAP)

    3. Exim

    4. Murder (IMAP Aggregator)

    5. Apache

    6. Разовый для различных задач

    7. Запасной

    8. Запасной

    9. Для клиентов ко всем этим сервисам
    10. DNS-сервер для них всех

Meetings/ModernOsFeatures/Conspect/3 (последним исправлял пользователь eSyr 2009-11-28 14:10:19)