Различия между версиями 11 и 12
Версия 11 от 2022-04-25 19:22:17
Размер: 10633
Редактор: FrBrGeorge
Комментарий:
Версия 12 от 2022-05-02 10:12:44
Размер: 10617
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 104: Строка 104:
   * Чёрный список сайтов (ко всем можно подключиться, а к некоторым нельзя)    * Чёрный список IP (ко всем можно подключиться, а к этим — нельзя)

Введение в межсетевые экраны

МЭ — обработка сетевого трафика (вообще говоря, на всех уровнях):

  • ограничение
  • перенаправление
  • преобразование
  • учёт (в первую очередь для последующего анализа)

МЭ интерфейсного уровня

в Linux:

TODO пример, если останется время

МЭ сетевого и транспортного уровней

Обычно оба уровня, потому что задачи МЭ общие.

В Linux:

Попробуем nftables.

Принцип: https://wiki.nftables.org/wiki-nftables/index.php/Netfilter_hooks:

  • nf-hooks.png

  • Ничего страшного, нам нужна только зелёненькая часть ☺
    • Обратите внимание на то, что она называется «IP Layer», но она же и транспортная
  • Стрелочки — это поуть пакета сквозь nftables
  • «Local Process» наверху — это получатель и отправитель

NFTables_Hooks.svg

Правила, хуки, цепочки, таблицы

NFTables_Flow.svg

  1. Проходя по стрелочкам, пакет, в зависимости от принятия решений (обозначены ромбами) проходит контрольные точки (обозначены зелёными боксами и для уровня TCP/IP называютюся «Hook», а для интерфейсного — «Bridge»)
    • Кто придумал такую терминологию, был большой оригинал ☹

  2. В процессе прохождения пакет обрабатывается правилами

  3. Однотипные правила объединяются в цепочки

    • Типы цепочек: nat (преобразование), filter (фильтрация), route (перенаправление)

    • Цепочка может быть «закреплена» на какой-нибудь контрольной точке (или «зацеплена за крюк») — это базовая цепочка.
    • Проходя через контрольную точку, пакет «перепрыгивает» на базовую цепочку: по очереди обрабатывается правилами из неё.
    • Если при контрольной точке имеется несколько цепочек, сравнивается их приоритет,
    • Пакет из цепочки может не выйти — если его выбросят или попросят уйти (goto) на конкретную цепочку, указанную в правиле
    • В противном случае пакет доходит до конца цепочки (или правила «покинуть цепочку»), и обработка пакета продолжается в том месте, откуда он перепрыгнул на неё.
      • …например, переход в следующую базовую цепочку или по стрелочке на следующую контрольную точку
  4. Цепочки и данные к ним группируются в таблицы — наборы правил для решения определённых пользовательских задач. Единственная роль таблицы, помимо информационной — её можно целиком удалить или заменить.

Имена таблиц и цепочек могут быть любыми.

Типы данных

В справочнике:

Работа nftables — это интерпретация некоторого байт-кода, в который компилируются правила

Наборы данных можно изменять без изменения правил в цепочке (а ещё в них логарифмический поиск)

Кстати, есть ещё «ARP Level» — потому что он межуровневый и там свои задачи.

Высокоуровневые оболочки

  • Firewalld — в т. ч. интерактив с пользователем а-ля windows

  • Shorewall — планирование целой сети

Использование NFTables

Примеры из Арчевики

  • Команды утилиты nft

  • Упростим NAT из прошлой лекции:
    table ip do_masq {
            chain do_postmasq {
                    type nat hook postrouting priority srcnat; policy accept;
                    ip saddr 10.1.1.0/24  masquerade
            }
    }
  • Разрешим принимать TCP только на определённые порты, остальное запретим
  • Проброс портов
  • Ограничение скорости передачи
  • Счётчик и временный отказ флудерам

МЭ прикладного уровня

Это какого? ☺

  • Для каждого протокола правила свои
  • Например, антиспам, DPI, родительский контроль и т. п.

Д/З

  • Про просьбам трудящихся публикую vbconnect и vbsnap

  • Новое в образе

    • Настроена автогенерация /etc/machine-id на основании UUID виртуалки

Задание 10

Воспроизвести (модифицированный) пример из лекции:

  1. Суть:
    • Настроить сеть на server с помощью systemd-networkd, включить маршрутизацию, но не NAT

    • Настроить общий SNAT на server с помощью nftables

      • «выход в интернет» должен работать на всех трёх машинах
    • Настроить сеть и маршрутизацию на router с помощью systemd-networkd

    • Настроить на router с помощью nftables:

      • Проброс порта (подключение с server к router на порт порт1 должно приводить к подключению к client на порт2)

      • Чёрный список IP (ко всем можно подключиться, а к этим — нельзя)
      • Ограничение по количеству TCP-соединений к server по порту3 за определённый период времени

    • Настроить сеть на client с помощью systemd-networkd

  2. Отчёт (вместо курсива могут быть числа, IP-адреса и т. п.):

    1. report 10 server:

      • networkctl status

      • nft list ruleset

      • cal | netcat router порт1 (дождаться, пока отработает)

    2. report 10 router:

      • networkctl status

      • nft list ruleset

    3. report 10 client:

      • netcat -l порт2

      • date | netcat ya.ru 80 (должно работать)

      • date | netcat сайт-из-чёрного-списка 80 (не должно)

    4. server (продолжение)

      • Принимать одновременно все подключения с форком обработчика (socat c параметром TCP-LISTEN:порт3,reuseaddr,fork

    5. client (продолжение)

      • for i in $(seq число ); do date | netcat server порт3 ; done

        • Должен отработать в рамках ограничения (сколько положено по квоте), а дальше зависнуть
    6. router (продолжение)

      • Посмотреть множество нарушителей квоты по подключением (там должен быть client)

    7. Остановить зависшие команды на client и server

  3. Три отчёта(названия сохранить, должно быть: report.10.server, report.10.router и report.10.client) переслать одним письмом в качестве приложений на uneexlectures@cs.msu.ru

LecturesCMC/LinuxNetwork2022/10_FireWalls (последним исправлял пользователь FrBrGeorge 2022-05-02 10:12:44)