Nftables: Porovnání verzí
Z Wiki UnArt Slavičín
Skočit na navigaciSkočit na vyhledávání
(Založena nová stránka s textem „[https://wiki.nftables.org/wiki-nftables/index.php/Main_Page Dokumentace]“) |
(→Server) |
||
(Nejsou zobrazeny 4 mezilehlé verze od stejného uživatele.) | |||
Řádek 1: | Řádek 1: | ||
= Firewall = | |||
Jednoduchý firewall brány do internetu: | |||
#!/usr/sbin/nft -f | |||
# rozhraní přistupující do internetu | |||
define wan = ens5f0 | |||
# rozhrani přístupující do lokální sítě | |||
define lan = ens5f1 | |||
# vymažeme původní pravidla | |||
flush ruleset | |||
# tabulka pro filtrování provozu | |||
table inet filter { | |||
# omezení příchozího provozu NA bránu | |||
chain input { | |||
type filter hook input priority 0 | |||
ct state established,related counter accept "Povolení navázaných spojení z conntracku" | |||
icmp type echo-request counter accept comment "Povolení pingu na bránu" | |||
tcp dport ssh counter accept comment "Povolení SSH na bránu" | |||
iifname $wan counter drop comment "Zakázání přístupu na bránu z internetu" | |||
counter comment "Povolení přístupu na bránu z lokální sítě" | |||
policy accept | |||
} | |||
# omezení provozu PŘES bránu | |||
chain forward { | |||
type filter hook forward priority 0 | |||
ct state established,related counter accept comment "Povolení navázaných spojení z conntracku" | |||
iifname lo counter accept comemnt "Povolení všeho na loopback rozhraní" | |||
oifname $wan counter accept comment "Povolení vše do internetu" | |||
counter comment "Ostatní provoz blokovat" | |||
policy drop | |||
} | |||
} | |||
# tabulka pro NAT | |||
table ip nat { | |||
# mapování NATu ve formátu vnitřní IP : veřejná IP | |||
map snat_map { | |||
type ipv4_addr : ipv4_addr | |||
flags interval | |||
elements = { | |||
10.143.122.200 : 5.104.17.160 | |||
} | |||
} | |||
# SNAT | |||
chain postrouting { | |||
type nat hook postrouting priority 0 | |||
oifname $wan counter snat ip saddr map @snat_map comment "Vnitřní IP adresy z mapy snat_map sNATujeme za jim přidělené veřejné IP adresy" | |||
oifname $wan counter masquerade comment "Ostatní vnitřní IP adresy zaNATujeme za veřejnou IP adresu brány" | |||
} | |||
} | |||
= Server = | |||
Jednoduchý firewall pro server: | |||
#!/usr/sbin/nft -f | |||
# vymazeme puvodni pravidla | |||
flush ruleset | |||
define UNART4 = { | |||
10.143.126.0/24, | |||
5.104.16.0/21 | |||
} | |||
define UNART6 = { | |||
2a05:2100::/29 | |||
} | |||
# tabulka pro filtrovani provozu (pro IPv4 i IPv6) | |||
table inet filter { | |||
set unart4 { | |||
type ipv4_addr | |||
flags interval | |||
elements = $UNART4 | |||
} | |||
set unart6 { | |||
type ipv6_addr | |||
flags interval | |||
elements = $UNART6 | |||
} | |||
# omezení provozu na server | |||
chain input { | |||
type filter hook input priority 0 | |||
ct state established,related counter accept | |||
icmp type echo-request counter accept comment "Povolení IPv4 pingu" | |||
icmpv6 type { | |||
destination-unreachable, | |||
echo-reply, | |||
echo-request, | |||
nd-neighbor-solicit, | |||
nd-router-advert, | |||
nd-neighbor-advert, | |||
packet-too-big, | |||
parameter-problem, | |||
time-exceeded | |||
} counter accept comment "Povolení IPv6 pingu" | |||
tcp dport { | |||
ftp, | |||
ssh, | |||
http, | |||
https, | |||
mysql, | |||
tproxy | |||
} counter accept comment "Povolení TCP služeb (FTP, SSH, HTTP, HTTPs a MySQL)" | |||
ip saddr @unart4 udp dport snmp counter accept comment "Povolení SNMP z IPv4 rozsahů UnArtu" | |||
ip6 saddr @unart6 udp dport snmp counter accept comment "Povolení SNMP z IPv6 rozsahů UnArtu" | |||
counter comment "Všechno ostatní zakaž" | |||
policy drop | |||
} | |||
# omezení provozu ze serveru | |||
chain output { | |||
type filter hook output priority 0 | |||
counter comment "Všechno povol" | |||
policy accept | |||
} | |||
} | |||
[https://wiki.nftables.org/wiki-nftables/index.php/Main_Page Dokumentace] | [https://wiki.nftables.org/wiki-nftables/index.php/Main_Page Dokumentace] | ||
[http://moutane.net/RMLL2014/day_1-1620-Eric_Leblond-Netfilter_logging_at_the_nftables_age.pdf Logování provozu] |
Aktuální verze z 19. 1. 2022, 07:45
Firewall
Jednoduchý firewall brány do internetu:
#!/usr/sbin/nft -f # rozhraní přistupující do internetu define wan = ens5f0 # rozhrani přístupující do lokální sítě define lan = ens5f1 # vymažeme původní pravidla flush ruleset # tabulka pro filtrování provozu table inet filter { # omezení příchozího provozu NA bránu chain input { type filter hook input priority 0 ct state established,related counter accept "Povolení navázaných spojení z conntracku" icmp type echo-request counter accept comment "Povolení pingu na bránu" tcp dport ssh counter accept comment "Povolení SSH na bránu" iifname $wan counter drop comment "Zakázání přístupu na bránu z internetu" counter comment "Povolení přístupu na bránu z lokální sítě" policy accept } # omezení provozu PŘES bránu chain forward { type filter hook forward priority 0 ct state established,related counter accept comment "Povolení navázaných spojení z conntracku" iifname lo counter accept comemnt "Povolení všeho na loopback rozhraní" oifname $wan counter accept comment "Povolení vše do internetu" counter comment "Ostatní provoz blokovat" policy drop } } # tabulka pro NAT table ip nat { # mapování NATu ve formátu vnitřní IP : veřejná IP map snat_map { type ipv4_addr : ipv4_addr flags interval elements = { 10.143.122.200 : 5.104.17.160 } } # SNAT chain postrouting { type nat hook postrouting priority 0 oifname $wan counter snat ip saddr map @snat_map comment "Vnitřní IP adresy z mapy snat_map sNATujeme za jim přidělené veřejné IP adresy" oifname $wan counter masquerade comment "Ostatní vnitřní IP adresy zaNATujeme za veřejnou IP adresu brány" } }
Server
Jednoduchý firewall pro server:
#!/usr/sbin/nft -f # vymazeme puvodni pravidla flush ruleset define UNART4 = { 10.143.126.0/24, 5.104.16.0/21 } define UNART6 = { 2a05:2100::/29 } # tabulka pro filtrovani provozu (pro IPv4 i IPv6) table inet filter { set unart4 { type ipv4_addr flags interval elements = $UNART4 } set unart6 { type ipv6_addr flags interval elements = $UNART6 } # omezení provozu na server chain input { type filter hook input priority 0 ct state established,related counter accept icmp type echo-request counter accept comment "Povolení IPv4 pingu" icmpv6 type { destination-unreachable, echo-reply, echo-request, nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert, packet-too-big, parameter-problem, time-exceeded } counter accept comment "Povolení IPv6 pingu" tcp dport { ftp, ssh, http, https, mysql, tproxy } counter accept comment "Povolení TCP služeb (FTP, SSH, HTTP, HTTPs a MySQL)" ip saddr @unart4 udp dport snmp counter accept comment "Povolení SNMP z IPv4 rozsahů UnArtu" ip6 saddr @unart6 udp dport snmp counter accept comment "Povolení SNMP z IPv6 rozsahů UnArtu" counter comment "Všechno ostatní zakaž" policy drop } # omezení provozu ze serveru chain output { type filter hook output priority 0 counter comment "Všechno povol" policy accept } }