nftables [ ЧАСТЬ 3 ] | межсетевой экран a.k.a. firewall

Поделиться
HTML-код
  • Опубликовано: 14 окт 2021
  • nftables - межсетевой экран, проект netfilter, разработанный для замены существующего фреймворка {ip,ip6,arp,eb}tables. Предоставляет новую систему фильтрации пакетов, пользовательскую утилиту ntf которую буду рассматривать в этом ролике
    Тематика достаточно большая и в некоторых моментах требует глубоких знаний сети от пользователя, в данном руководстве я постарался собрать простые команды для начинающего уровня и буду настраивать для простоты в виде скрипта , но даже простую часть разбил на три части для упрощения восприятия информации:
    Часть 1. Тип filter цепочка INPUT и большинства распространенных правил
    Часть 2. Тип filter цепочка FORWARD
    Часть 3. Тип nat цепочка POSTROUTING и PREROUTING
    Все три части буду рассматривать на базе свежего (на момент публикации) дистрибутива Debian 11
    Так же в планах рассмотреть продвинутую часть nftables, но это уже другая истерика ;)

Комментарии • 39

  • @satoshinacomoto
    @satoshinacomoto 2 года назад +2

    круто. самый лучший вебкаст по nftables

  • @nikalt776
    @nikalt776 2 года назад +2

    Спасибо. Наглядно. Без лишней воды.

  • @Arius1987
    @Arius1987 Год назад +1

    Добрый день. Просьба о четвертой части. Работа со списками, аналог ipset

  • @lemfinch8668
    @lemfinch8668 2 года назад +3

    Супер! Спасибо!

  • @vosileypupkin
    @vosileypupkin 2 года назад

    Большое спасибо!

  • @user-od9wi4dg5i
    @user-od9wi4dg5i Месяц назад

    При открытии портов в input "tcp dport {80, 8080} counter accept" получается что мы эти порты всем открываем и они без настройки prerouting будут доступны

  • @sallador
    @sallador 2 года назад

    Спасибо большое за отличный вебкаст. Вопрос про сохранение правил. Все сделал как в вебкасте, в итоге nft list ruleset показывает мои правила + далее правила для таблиц ip6. Команда flush ruleset их не очистила? У меня виртуалка Centos 8 stream, если это важно.

  • @antoshabrain
    @antoshabrain 2 года назад

    есть ли у вас возможность записать вебкаст по сетам? iptables использовал в связке с ipset, слышал что у nft появились свои сеты, но информации пока не очень много по ним.

  • @asura963
    @asura963 2 года назад

    Удалось сохранить правила: )
    postimg.cc/w7QWGVCZ
    Решение:
    postimg.cc/tn5h2rsz

  • @asura963
    @asura963 2 года назад

    Здраствуйте, сколько раз и как ни пробывал, ни удатся мне сохранить параметры nftables
    В nftables.conf сохранило, только после перезагрузки - водя команду nft list rules - Возрощается все по умолчанию..
    Если в водить правила из терминала сохраняются правила так же или может как то иначе?

  • @bilbobaggins4494
    @bilbobaggins4494 2 года назад +1

    Спасибо за наглдяный пример! но у меня не большой вопрос. Как заNAT-ить трафик если он идет с виртуального интерфейса, который появляется при подключении впн? В целом мне необходимо NAT-ить сеть в интернет без указания интерфейса?

    • @igorcoolman
      @igorcoolman 2 года назад +1

      меня что то подобное тоже волнует, при запуске докера он создает рандомное название для своего интерфейса и создает свои правила iptables с открытыми портами на все интерфейсы, чем ломает уже рабочие правила ну и безопасность соответственно.

    • @bilbobaggins4494
      @bilbobaggins4494 2 года назад

      @@igorcoolman Может у докера можно как нибудь присвоить статичное название интерфейса? в моем случае у меня с подключением пользователей к впн сервису создавался виртуальный vpn0, но на него так же можно накатывать правила в nftables, у меня проблем вроде бы не было, но если как, как у вас, дается рандомное имя интерфейса, то надо начинать с докера

  • @asura963
    @asura963 2 года назад

    Процес:
    upload.disroot.org/r/bzr_8J_y#RdeEYxkdR+4cVezVbhT7shDTWBGfbq54JBmYnpfSxps=

  • @asura963
    @asura963 2 года назад

    Запущена:
    postimg.cc/ft4wVBqB

    • @KhasanKarabayev
      @KhasanKarabayev  2 года назад

      Что показывает команда systemctl status nftables?

  • @igorcoolman
    @igorcoolman 2 года назад +1

    спасибо очень доходчиво объяснил, не так часто это встречаешь, хотелось бы углубленную 4 часть урока увидеть:
    использование переменных в скрипте, слышал есть конвертер какой-то из iptables в nstables, про него рассказать, еще как такие правила в nftables записывать
    iptables -A INPUT -i $INET_IF -m conntrack --ctstate NEW -p tcp --dport 80 -m hashlimit --hashlimit-upto 50/sec --hashlimit-burst 50 --hashlimit-mode srcip,srcport,dstip,dstport --hashlimit-name www -j ACCEPT
    сильно интересует именно --hashlimit-mode
    как выставлять флаги:
    iptables -A INPUT -p tcp --tcp-flags ALL RST,ACK,PSH,URG -j DROP
    и тонкости уже установленных соединений
    iptables -A INPUT -p tcp -m multiport --dports 80,443 -m connlimit --connlimit-above 21 --connlimit-mask 32 -j DROP
    рассказать как реализовать Port Knocking
    хотел уточнить, а разве не правильнее будет все таблицы по умолчанию дропать и еще все правила писать через ct state new делать, а в конце каждой цепочки ct state related,established :
    nft add rule ip filter INPUT ct state related,established counter accept
    nft add rule ip filter FORWARD ct state related,established counter accept
    nft add rule ip filter OUTPUT ct state related,established counter accept

    • @KhasanKarabayev
      @KhasanKarabayev  2 года назад +1

      Отличный комент, в ближайшие время постораюсь сделать четвертую часть, где отвечу так же на поставленные вопросы реальными примерами

    • @igorcoolman
      @igorcoolman 2 года назад +1

      @@KhasanKarabayev очень буду ждать, спасибо

    • @igorcoolman
      @igorcoolman 2 года назад +1

      нашел утилиту:
      iptables-translate -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
      получается:
      nft add rule ip filter INPUT tcp dport 22 ct state new counter accept
      но к сожалению не все правила может конвертировать, это не работает:
      iptables-translate -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 109 --connlimit-mask 24 -j DROP

    • @KhasanKarabayev
      @KhasanKarabayev  2 года назад +1

      @@igorcoolman действительно утилита iptables-translate служит для трансляции давно всем известных правил на новый синтаксис, сделано это для того чтоб переход был более безболезненным, но нужно учесть тот факт что он рассчитан на широко известные/распространённые команды, для особых случаях как у вас он срабатывать не будет, в таком случаи нужно просто курить официальный мануал, вот что есть на вашу тему wiki.nftables.org/wiki-nftables/index.php/Connlimits

    • @igorcoolman
      @igorcoolman 2 года назад +2

      @@KhasanKarabayev спасибо нашел ответы на некоторые вопросы, осталось как-то протестировать на правильную работоспособность все-таки nftables для меня новый инструмент, но видео от тебя все равно ждем )

  • @AntiSmithhh
    @AntiSmithhh 10 месяцев назад

    а почему сразу не отредактировать файл nft.conf ?
    чисто в образовательных целях?

    • @KhasanKarabayev
      @KhasanKarabayev  10 месяцев назад

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

    • @AntiSmithhh
      @AntiSmithhh 10 месяцев назад

      @@KhasanKarabayev хоть какую-то конкретику можно: в чем? как? пример может какой-то прям единичный хотя бы.
      ясно, что это не просто так, но вот не ясно в чем именно подвох.
      спасибо.

    • @AntiSmithhh
      @AntiSmithhh 10 месяцев назад

      @@KhasanKarabayev скрипт, который формирует в итоге таблицу командами, вполне однозначно вроде предопределяет итоговый результат в конфиге. тот же результат, только формат подачи другой, который фактически все равно транслируется и потом сохраняется в конфиге.. и грузится потом из конфига.

    • @KhasanKarabayev
      @KhasanKarabayev  10 месяцев назад +1

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

    • @AntiSmithhh
      @AntiSmithhh 10 месяцев назад

      @@KhasanKarabayev это понятно. в этом плане скрипт лучше тольк тем, что не сохраняет конфигурацию после рестарта. для всяких VDS и тд это не важно, т.к. там рестарт делается через панель управления, как собственно и интерактивный доступ. а вот кусок железа даже дома тольк с кнопкой рестарт либо полный сброс - это да.. будет неприятно.
      но я думал, что что-то может еще другого плана. но и на этом спасибо.

  • @asura963
    @asura963 2 года назад

    Загрузился сновой копией...
    Сделал все по пунктикам, но после перезагрузки при воде "nft list ruleset" правила новые ни применились по чему то, только сахранились в nftables.conf
    Ни понимаю причины