Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » nftables - в чем проблема ?

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

sdr77

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я все-таки решил освоить собачий язык самоновейшего linux фаерволла nftables.
делать буду /etc/nftables.conf для атомарного применения, без интерактивных режимов.
начал с первого примера https://wiki.nftables.org/wiki-nftables/index.php/Simple_ruleset_for_a_home_router
получилось вот что:
 

Код:
 
#!/usr/sbin/nft -f
flush ruleset
define IF_LAN = eth1
define IF_INET = eth0
define NET_LAN = 10.2.4.0/24
 
table ip global {
  chain in_inet {
    icmp type echo-request limit rate 3/second accept
    ip protocol . th dport vmap {
      tcp . 22 : accept,
      udp . 53 : accept,
      tcp . 53 : accept,
      udp . 123 : accept
    }
  }
 
  chain out_inet {
    icmp type echo-request limit rate 5/second accept
    ip protocol . th dport vmap {
      tcp . 22 : accept,
      udp . 53 : accept,
      tcp . 53 : accept,
      udp . 123 : accept
    }
  }
 
  chain in_lan {
    icmp type echo-request limit rate 5/second accept
    ip protocol . th dport vmap {
      tcp . 22 : accept,
      udp . 53 : accept,
      tcp . 53 : accept,
      udp . 67 : accept,
      udp . 123 : accept
    }
  }
 
  chain out_lan {
    icmp type echo-request limit rate 5/second accept
    ip protocol . th dport vmap {
      tcp . 22 : accept,
      udp . 53 : accept,
      tcp . 53 : accept,
      udp . 67 : accept,
      udp . 123 : accept
    }
  }
 
  chain inbound {
    type filter hook input priority 0; policy drop;
# Allow traffic from established and related packets, drop invalid
    ct state vmap { established : accept, related : accept, invalid : drop }
# allow loopback traffic, anything else jump to chain for further evaluation
    iifname vmap { lo : accept, $IF_INET : jump in_inet, $IF_LAN : jump in_lan }
# the rest is dropped by the above policy
    log prefix "[nftables] in drop: " counter drop
  }
 
  chain outbound {
    type filter hook output priority 0; policy drop;
    ct state vmap { established : accept, related : accept, invalid : drop }
    oifname vmap { lo : accept, $IF_INET : jump out_inet, $IF_LAN : jump out_lan }
# the rest is dropped by the above policy
    log prefix "[nftables] out drop: " counter drop
  }
 
  chain forward {
    type filter hook forward priority 0; policy drop;
# Allow traffic from established and related packets, drop invalid
    ct state vmap { established : accept, related : accept, invalid : drop }
# connections from the internal net to the internet or to other
# internal nets are allowed
    iifname $IF_LAN accept
 
# the rest is dropped by the above policy
  }
 
  chain postrouting {
    type nat hook postrouting priority 100; policy accept;
# masquerade private IP addresses
    ip saddr $NET_LAN oifname $IF_INET masquerade
  }
}
 

 
это первый рабочий вариант.
 
а потом я решил закрутить гайки - DNS запросы имеют право делать только процессы с UID = bind, синхронизировать время - только UID = ntp, потом будут squid, tor, и т.д. далее только измененные части:

Код:
 
...
  chain o_uid_bind {
    type filter hook output priority 0; policy drop;
    meta skuid bind accept
  }
  chain o_uid_ntp {
    type filter hook output priority 0; policy drop;
    meta skuid ntp accept
  }
...
  chain out_inet {
    icmp type echo-request limit rate 5/second accept
    ip protocol . th dport vmap {
      tcp . 22 : accept,
      udp . 53 : jump o_uid_bind,
      tcp . 53 : jump o_uid_bind,
      udp . 123 : jump o_uid_ntp
    }
  }
...
  chain out_lan {
    icmp type echo-request limit rate 5/second accept
    ip protocol . th dport vmap {
      tcp . 22 : accept,
      udp . 53 : jump o_uid_bind,
      tcp . 53 : jump o_uid_bind,
      udp . 67 : accept,
      udp . 123 : jump o_uid_ntp,
    }
...
 

 
натравливаю на проект правил nft -c -v -f /etc/nftables.conf.new
и получаю отлуп:
 
/etc/nftables.conf.new:38:33-5: Error: Could not process rule: Operation not supported
    ip protocol . th dport vmap {
 
/etc/nftables.conf.new:59:33-5: Error: Could not process rule: Operation not supported
    ip protocol . th dport vmap {
 
чего ему надо ? "jump xxx_chain" изнутри vmap - совершенно законная операция или я не так понял ?
отказываться от vmap очень не хочется.

Всего записей: 386 | Зарегистр. 22-07-2005 | Отправлено: 18:23 01-08-2022
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sdr77
там это. темка есть по таким вопросам отдельная — http://forum.ru-board.com/topic.cgi?forum=8&topic=38463#1
 
p.s. я в nft не захотел без необходимости лезть, а необходимости лично у меня пока не возникло

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 19:11 03-08-2022
sdr77

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
> темка есть по таким вопросам отдельная
 
у нее в шапке iptables/ipfw/pf, nftables нет.
я же искал средствами форума.
 
> я в nft не захотел без необходимости лезть
 
надо что-то новое вписать в резюме, чтобы обновилась дата.

Всего записей: 386 | Зарегистр. 22-07-2005 | Отправлено: 05:44 05-08-2022
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Операционные системы » UNIX » nftables - в чем проблема ?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru