nftables [ ЧАСТЬ 1 ] | межсетевой экран a.k.a. firewall (ссылка на док в описании)

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 ต.ค. 2021
  • Команды можно посмотреть по ссылки:
    @k_hasan-sintaksis-nft
    nftables - межсетевой экран, проект netfilter, разработанный для замены существующего фреймворка {ip,ip6,arp,eb}tables. Предоставляет новую систему фильтрации пакетов, пользовательскую утилиту ntf которую буду рассматривать в этом ролике
    Тематика достаточно большая и в некоторых моментах требует глубоких знаний сети от пользователя, в данном руководстве я постарался собрать простые команды для начинающего уровня и буду настраивать для простоты в виде скрипта , но даже простую часть разбил на три части для упрощения восприятия информации:
    Часть 1. Тип filter цепочка INPUT и большинства распространенных правил
    Часть 2. Тип filter цепочка FORWARD
    Часть 3. Тип nat цепочка POSTROUTING и PREROUTING
    Все три части буду рассматривать на базе свежего (на момент публикации) дистрибутива Debian 11
    Так же в планах рассмотреть продвинутую часть nftables, но это уже другая истерика ;)

ความคิดเห็น • 57

  • @lexrus2037
    @lexrus2037 6 หลายเดือนก่อน +3

    Огромное спасибо!!!
    2024 год, но до сих пор статей про nftables кот наплакал.

  • @AlexGurmanis
    @AlexGurmanis 2 ปีที่แล้ว +1

    "Можно по медленнее я записываю" ))))) Шучу.
    Спасибо за подробное изложение

  • @user-gv6fg7ur6z
    @user-gv6fg7ur6z ปีที่แล้ว

    огромное спасибо, очень последовательно и понятно !

  • @Arius1987
    @Arius1987 ปีที่แล้ว

    Отличный гайд. Спасибо

  • @Van9ssio
    @Van9ssio 2 ปีที่แล้ว

    Отличное видео. Спасибо.

  • @alexsmth8925
    @alexsmth8925 2 ปีที่แล้ว

    Спасибо, отличное видео.

  • @antoshabrain
    @antoshabrain 2 ปีที่แล้ว

    очень вовремя, спасибо

  • @VilikSpb
    @VilikSpb 2 ปีที่แล้ว +3

    Спасибо, подача материала супер!

  • @vikbov1509
    @vikbov1509 ปีที่แล้ว +7

    Спасибо за материал. Кстати, чтобы постоянно смотреть обновленные правила необязательно писать скрипт. Есть отличная команда watch. Т.е. watch -n 1 'nft list ruleset' будет делать тоже что и ваш скрипт.

    • @bamm_br
      @bamm_br ปีที่แล้ว

      Это если дефолтные 2 секунды чем-то не устраивают и непременно 1с надо. По мне так и вовсе
      watch nft list ruleset
      хорошо. Без всяких кавычек, чмодов и бессмысленного скриптописания.

  • @user-rm2im6wx2b
    @user-rm2im6wx2b ปีที่แล้ว +1

    Шикарное видео, большое спасибо! Подписка, лайк!

  • @goshagotye
    @goshagotye 5 หลายเดือนก่อน +1

    Хасан, спасибо большое, прекрасное видео, продолжай в том же духе) надеюсь выпустишь курс по линукс)

    • @KhasanKarabayev
      @KhasanKarabayev  5 หลายเดือนก่อน

      Уже выпустил )

    • @KhasanKarabayev
      @KhasanKarabayev  5 หลายเดือนก่อน

      academy.it-bilim.uz/ru/

    • @goshagotye
      @goshagotye 5 หลายเดือนก่อน

      @@KhasanKarabayev отлично, вот только цен на сайте нет )

    • @goshagotye
      @goshagotye 5 หลายเดือนก่อน

      @@KhasanKarabayev еще нет возможности оставить заявку из РФ, не позволяет шаблонизация инпута телефона

    • @goshagotye
      @goshagotye 5 หลายเดือนก่อน

      @@KhasanKarabayev в чатике никто не отвечает

  • @vadimbeznosenko9690
    @vadimbeznosenko9690 2 ปีที่แล้ว

    всё круто, только небольшое замечание DNS использует как UDP так и TCP (DNS uses TCP Port 53 for zone transfers)

    • @KhasanKarabayev
      @KhasanKarabayev  2 ปีที่แล้ว +2

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

  • @asura963
    @asura963 2 ปีที่แล้ว

    Добрый вечер, еще один вопрос интерисует:
    Если на output (изходящие) ставить drop, то что нужно открыть что бы система нормально функционировала.
    Правильно ли будет ставить на OUTPUT такие правило, и достаточноли этого если правильно:
    nft add rule ip filter OUTPUT ct state invalid counter drop
    nft add rule ip filter OUTPUT ct state established counter accept
    nft add rule ip filter OUTPUT counter drop
    Хотя помню что то что большими буквами это всего лишь имя, и тогда получается что это дубликация что и в инпуте.
    Или для output будет правильней в таблице поставить дроп, если да то опять тот-же вопрос, что нужно тогда открыть, какие правила вписать для нормального функционирования системы?
    Помню когда я в iptables на output ставил дроп то сеть перестовала работать, а огда делал это через gufw то все норм.
    Подскажите пожалуйста

  • @Percovyj-Vazelin
    @Percovyj-Vazelin ปีที่แล้ว

    Спасибо

  • @asura963
    @asura963 2 ปีที่แล้ว

    Здраствуйте, все работает))
    Позволите пару вопросов по существу:
    1) Можноли дабовлять фильтрацию по мак адресу для 80,443,53 портов или это через чур. Или всетаки будет более безопасным и ни лишним.
    2) Как лудше сделать и большая ли разница:
    В таблице инпупт сразу поставить drop
    Или лудше в конце поставить: nft add rule ip filter INPUT counter drop

    • @KhasanKarabayev
      @KhasanKarabayev  2 ปีที่แล้ว

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

  • @onesply
    @onesply 2 ปีที่แล้ว

    Большое спасибо! Весьма доступно объяснили. В гайдах на сайтах вообще ничего не объясняют(

  • @AlexGurmanis
    @AlexGurmanis 2 ปีที่แล้ว

    Можно разобрать смыслы что-куда-зачем про "цепочки" { type filter hook input priority 0 \; policy accept \; }

    • @KhasanKarabayev
      @KhasanKarabayev  2 ปีที่แล้ว +2

      Во второй части разобрал

  • @asura963
    @asura963 2 ปีที่แล้ว +1

    Здраствуйте, подача очень хорошая, разжованая и понятная... Благодарю :)
    Хочу для домашнего компютера настроить компютер максимально безопасно, по этому пару уточнений если позволите.
    1) Для домашнего использования lo интерфейс обезательно должен быть открыт или нет. В iptables обычно закрывал.
    2) В таблице iptables использовал:
    iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    Какая команда будет равноссильна в nft ?
    И нужно ли ее применять?
    3) Можете привести пример или варианты* для максимальной безопасности для домашнего пользователя.
    Предпологаю идельно все порты закрыть как входящие так и исходящие и открыть только нужные порты:
    tcp 80,443
    udp 53
    порт для торента
    и для докера...
    Как это сделать правильно и правильноли будет так?
    Будет здорово и многим полезным сделать дополнительное видео, ведь защищать домашние компюторы очень нужно! :)
    Так же будет замечательно если вы в одельном примере от этого так же по кажите такой пример:
    Когда нужно что бы на реальной машине небыло интернета только обновление linux системы.
    А на виртуальной машине было настроено и проброшено так как вы надеюсь покажите в первом примере для домашнего использование.
    Как это сделать правильно?
    Буду благодарен за обратную связь

    • @KhasanKarabayev
      @KhasanKarabayev  2 ปีที่แล้ว +1

      1) интерфейс lo нужно открыть в любом случае, на нем крутятся внутренние сервисы ПК/сервера 2) nft add rule ip filter INPUT ct state related,established counter accept 3) исходящие порты можно все открыть, а вот входящие открывать по необходимости, если на компьютере не запущен вэб сервис то не нужно открыть 80, 443 порты, так же если на компьютере не запущен DNS его тоже не нужно открывать (видео ролик рассчитан для серверных платформ, не для домашних)

    • @asura963
      @asura963 2 ปีที่แล้ว +1

      Благодарю за обратную связь.
      Да, понимаю что видео расчитано для серверов, а хотелось бы хоть одно видео для номашнего использования.
      1) понял, lo открываем в любом случаии.
      2) nft add rule ip filter INPUT ct state related,established counter accept
      это правило ведь нужно применять для домашнего использования, верно?
      3) Понимаю что исходящие порты можно открыть все, но ни обходимоли для большей безопасности.?
      Если закрыть все-же и Изходящие в таблице, то что нужно открыть из изходящего что бы система работала как надо?
      Так как помню пробывал закрывать output, но ни смотря на то что в input 80.443 были открыты, сеть ни работала.
      4) DNS ведь нужен для обновления системы, без 53 udp система ведь ни будет обновляться... по этому думаю что нужен.

    • @asura963
      @asura963 2 ปีที่แล้ว

      @@KhasanKarabayev извените пожалуйста за без покойство!
      Ни как ни могу разобраться.
      Дело в том, что после написания правил в командной строке, после перезагрузки все сбивается по дефолту.
      Скажите пожалуйста как применить правила, что бы они сохранились после перезагрузки системмы?
      И второе, что бы каждый раз ни писать правила, можно ли их загузить из готового файла, например nftables.conf
      Помогите пожалуйста, странно проширстил мануалы но ответа ни нашел, везде все как подкопирку.

    • @KhasanKarabayev
      @KhasanKarabayev  2 ปีที่แล้ว +1

      @@asura963 посмотрите третию часть моего видео посвященному фаерволу таймлайн: 15:20, там как раз разказал как сохранить правило

    • @asura963
      @asura963 2 ปีที่แล้ว

      @@KhasanKarabayev понял, как раз третью чать и ни посмотрел... так как подумал что там чисто про nat, благодарю.

  • @asura963
    @asura963 2 ปีที่แล้ว

    Еще один вопрос забыл написать, по поводу ipv6
    Если мы указывает правила на ipv4 то ipv6 по умолчанию порты будут открыты, верно?
    Если это так: то получается конце правил ipv4 нужно добавить еще одну таблицу для ipv6 только с уже везде с drop?

    • @KhasanKarabayev
      @KhasanKarabayev  2 ปีที่แล้ว

      Для ipv6 другой тип цепочки, если на компьюторе не используется ipv6 то его настраивать вовсе не нужно

  • @sergeyzolin7297
    @sergeyzolin7297 8 หลายเดือนก่อน

    Здравствуйте. То что вы показали с файлом это не работает и ломает полностью nftables. Потом просто пишет консоль nft нет такой команды.
    И в 2023 Debian 12 этот скрипт как вы показали не работает .

    • @KhasanKarabayev
      @KhasanKarabayev  8 หลายเดือนก่อน

      Добрый день, скорей всего где то вы ошиблись

    • @sergeyzolin7297
      @sergeyzolin7297 8 หลายเดือนก่อน

      нет я не ошибся просто перед командой приходится ставить /sbin/@@KhasanKarabayev

    • @KhasanKarabayev
      @KhasanKarabayev  8 หลายเดือนก่อน

      Значит с местоположение ошиблись

  • @interesting7956
    @interesting7956 2 ปีที่แล้ว +2

    Можно было через watch запустить

    • @KhasanKarabayev
      @KhasanKarabayev  2 ปีที่แล้ว +1

      Можно было коммент прочитать, уже ответил

  • @asura963
    @asura963 2 ปีที่แล้ว

    Здраствуйте, до сих пор ни осилил это сохранения...
    Все делаю по пунктикам, ошибок ни каких нету, только почему то сейчас при nft list ruleset правила ни появляются.
    Если делаю скрипт, в скрипте прописываю правила.
    Затем название скрипта, и как понимаю после этого должны они перенеститсь правила в rules. (вобщем они должны сконфигурироваться) но этого почему то ни произходит.
    Это произошло после того как я удалил правила по умолчанию по пути: /usr/sbin/nft
    Потом заново создал этот файл: touch nft
    И дал разрешение: chmod 755 nft
    После того как перезагрузился при попытки просмотреть правила которые создовал "nft list ruleset " правила перестали пояляться...
    Подскажите пожалуйста, как мне исправить это?

    • @KhasanKarabayev
      @KhasanKarabayev  2 ปีที่แล้ว

      Проверьте включенли сервис systemctl status nftables, и файл нужно сохранять в /etc/ посмотрите видео внимательно

    • @asura963
      @asura963 2 ปีที่แล้ว

      @@KhasanKarabayev Да запущен: postimg.cc/K4ddF6Tk
      Вроде уже несколько раз пересматривал...
      Вот создание скрипта:
      cd /usr/local/bin/
      touch firewall
      chmod 755 firewall
      --
      Написал правила
      --
      # firewall
      # echo '#!/usr/sbin/nft -f' > /etc/nftables.conf
      # echo 'flush ruleset' >> /etc/nftables.conf
      # nft list ruleset >> /etc/nftables.conf
      Все верно?
      Просто уже даже н знаю куда смотреть, что бы понять что делаю ни так.
      Может для nft "/usr/sbin/nft" нужно другое разрешение а ни 755..

    • @KhasanKarabayev
      @KhasanKarabayev  2 ปีที่แล้ว

      А вот бинарник не нужно было удалять или изменять из папки /usr/sbin/nft (

    • @asura963
      @asura963 2 ปีที่แล้ว

      @@KhasanKarabayev уже понял что ни нужно было, сечас значит это ни исправить?
      Если нет тогда загружусь с новой копии, так как делаю это еще на виртуальной машине...
      Просто подумал что туда загружу свежие правила командой:
      # nft -s list ruleset >> /usr/sbin/nft
      А тут вот как оно оказалось.