Zavedení pravidel nftables při startu

Filip

Zavedení pravidel nftables při startu
« kdy: 05. 09. 2017, 06:53:49 »
Ahoj,
Začal jsem si hrát s nftbles na Debianu 9. Bohužel nemůžu přijít na to jak je zavést při startu systému, stejně jako iptbles persistent.
Děkuji z případnou radu.
« Poslední změna: 05. 09. 2017, 08:11:18 od Petr Krčmář »


wefasdfasdfas

Re:nftables
« Odpověď #1 kdy: 05. 09. 2017, 06:56:33 »
ono to nema init skript v /etc/init.d a pak link v /etc/rcX

Filip

Re:nftables
« Odpověď #2 kdy: 05. 09. 2017, 07:25:23 »
Nic takového jsem zatím nenašel.

Re:Zavedení pravidel nftables při startu
« Odpověď #3 kdy: 05. 09. 2017, 08:17:31 »
Přímo součástí balíčku nftables je service soubor pro systemd (/lib/systemd/system/nftables.service), který se postará o zavedení konfigurace z /etc/nftables.conf. Vytvořit je ho možné pomocí výstupu

Kód: [Vybrat]
# nft list ruleset

j

Re:Zavedení pravidel nftables při startu
« Odpověď #4 kdy: 05. 09. 2017, 08:47:50 »
Rucne se to dela nejak tahle ...

nft list table inet filter -a -n >> firewall_nft

nft -f firewall_nft


Filip

Re:Zavedení pravidel nftables při startu
« Odpověď #5 kdy: 05. 09. 2017, 08:59:17 »
Přímo součástí balíčku nftables je service soubor pro systemd (/lib/systemd/system/nftables.service), který se postará o zavedení konfigurace z /etc/nftables.conf. Vytvořit je ho možné pomocí výstupu

Kód: [Vybrat]
# nft list ruleset

Ano, ten servis sedí.
Kód: [Vybrat]
[Unit]
Description=nftables
Documentation=man:nft(8) http://wiki.nftables.org

[Service]
Type=oneshot
RemainAfterExit=yes
StandardInput=null
ProtectSystem=full
ProtectHome=true
ExecStart=/usr/sbin/nft -f /etc/nftables.conf
ExecReload=/usr/sbin/nft -f /etc/nftables.conf
ExecStop=/usr/sbin/nft flush ruleset

[Install]
WantedBy=multi-user.target
Bohužel po rebootu se žádné nftables nenačtou. Musím ručně přes nft -f nftables.conf

Filip

Re:Zavedení pravidel nftables při startu
« Odpověď #6 kdy: 05. 09. 2017, 09:48:05 »
Ahoj,
Tak už jsem zprovoznil. Je nutné mít dle nftables wiki nastaveno chmod u+x na /etc/nftables.conf
Potom už po rebootu běží.
Nftables vypadají skutečně dobře. Jen se v tom ještě motám  :) Mohl by mě někdo zkušený poradit zda-li je tento můj přiložený fw správný. Jedná se o konfiguracni skript. Můj cíl je firewall s dvěma LAN. Lan 1 192.168.3.22 je WAN Lan 2 172.16.1.0/24 je interní lan pro PC. Tato síť má mít přístup k internetu. Děkuji za případné rady.
Kód: [Vybrat]
#!/usr/sbin/nft -f
# Nft firewall for 2 nic firewall with internal network for internet acces

flush ruleset

table inet filter {
chain input { # specifakace rozhrani pro rozdeleni
type filter hook input priority 0;

  iifname lo accept # vzdy povol loopbcak
iifname enp0s25 jump input_wan # 192.168.3.0/26
iifname enp4s0 jump input_lan # 172.16.1.0/24

reject with icmp type port-unreachable # refuse traffic from all other interfaces
}
chain input_wan { # pravidla pro rozhrani wan
ct state {established,related} accept
ct state invalid drop
  #ip saddr {192.168.3.16} ip daddr {172.16.1.0/24} ip protocol icmp icmp type echo-request accept
    ip saddr {192.168.3.0/26} tcp dport { 22 } log prefix "Wan SSH pripojeni:" accept
    reject with icmp type port-unreachable # all other traffic
  }
  chain input_lan { # pravidla pro rozhrani lan
    ct state {established,related} accept
    ct state invalid drop
    ip saddr {172.16.1.0/24} tcp dport {22} log prefix "Lan SSH pripojeni:" accept
ip protocol icmp icmp type echo-request log accept
    tcp dport {domain} log prefix "DNS input pozadavek:" accept # Povoleni DNS pro interni DHCP LAN
    udp dport {domain} accept
    tcp dport {bootpc,bootps} log prefix "DHCP input pozadavek:" accept # povoleni DHCP z interni site
    udp dport {bootpc,bootps} log prefix "DHCP input pozadavek:" accept # povoleni DHCP z interni site
    reject with icmp type port-unreachable
  }
# OUTPUT retzec
}
table ip output {
        chain output {
                type filter hook output priority 0;
ct state {established,related,new} accept
ct state invalid drop
ip protocol icmp icmp type {echo-reply} drop
ip protocol icmp drop
udp dport {domain} accept
tcp dport {domain,ntp} accept
reject
}
# NAT pravidla
}
table ip nat { # Povoleni SNAT pro pristup k internetu pro uzivatele z vnitrni site
chain prerouting {
type nat hook prerouting priority 0; policy accept;
iif "enp0s25" tcp dport {3389} log prefix "RDP login:" dnat 172.16.1.3
#iif "enp0s25" ip protocol icmp icmp type echo-request dnat 172.16.1.3
}

chain postrouting {
type nat hook postrouting priority 100; policy accept;
ip saddr 172.16.1.0/24 oif "enp0s25" snat to 192.168.3.22 # SNAT funguje jako maskarada
#masquerade # Povoleni uzivatelu pro pristup k internetu
}
}

Filip

Re:Zavedení pravidel nftables při startu
« Odpověď #7 kdy: 06. 09. 2017, 07:24:56 »
Našel jsem velice zajímovou cestu jak si řídit firewall na GITU.
Kód: [Vybrat]
http://ral-arturo.blogspot.cz/2015/02/nftables-ruleset-managed-with-git.html