Nftables (Linux)
Noch in Bearbeitung
Installation
sudo apt-get install -y nftables
Service
sudo systemctl enable nftables.service sudo systemctl restart nftables.service
Firewall
Pre-Konfiguration
sudo vi /etc/nftables.conf
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy accept;
}
chain forward {
type filter hook forward priority 0; policy accept;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
table inet filter- Legt eine Tabelle mit dem Namen filter für die Familiy inet an.
- Mit der Familie
inetlassen sich Regeln für IPv4 und IPv6 auf einmal definieren.
type filter hook input priority 0;typelegt fest, welche Art von Kette gebildet werden soll. Mögliche Werte sind filter, route oder nat.hooklegt fest, in welcher Phase sich die Pakete während der Bearbeitung befinden. Mögliche Werte sind prerouting, input, forward, output oder postrouting.prioritylegt die Reihenfolge der Ketten fest bzw. legt sie zwischen Netfilter-Operationen.
policy accept;- Lässt als Standard-Regel alle Pakete durch.
Links
https://wiki.nftables.org/wiki-nftables/index.php/Quick_reference-nftables_in_10_minutes
Beispiele
# icmp (ping) icmp type echo-request limit rate 10/second burst 2 packets counter accept;
# open sshd (22) for internal networks only
tcp dport { ssh } ip saddr @internal_networks_ip4 limit rate 15/minute accept;
Links
https://wiki.nftables.org/wiki-nftables/index.php/Rate_limiting_matchings
Server-Firewall
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
set internal_networks_ip4 {
type ipv4_addr
flags interval
auto-merge
elements = { 10.2.0.0/24, 10.0.0.0/24 }
}
chain input {
type filter hook input priority 0; policy drop;
# established/related connections
ct state established,related accept;
# loopback interface
iifname lo accept;
# icmp (ping)
icmp type echo-request accept;
# open sshd (22) for internal networks only
tcp dport { ssh } ip saddr @internal_networks_ip4 accept comment "accept SSH from internal networks"
# open tcp ports: http (80), https (443)
tcp dport { http, https } accept;
# open udp ports: domain (53), openvpn (1194)
udp dport { domain, openvpn } accept;
# mysql (3306)
meta l4proto { tcp, udp } @th,16,16 { 3306 } ip saddr @internal_networks_ip4 accept comment "accept mysql from internal networks";
# mysql (3306)
# udp dport { mysql } accept;
# tcp dport { mysql } accept;
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
Links
https://de.wikipedia.org/wiki/Liste_der_standardisierten_Ports
Routing
Links
https://wiki.gentoo.org/wiki/Nftables/Examples
Kontrolle
sudo nft list table inet filter
Links
https://wiki.nftables.org/wiki-nftables/index.php/Main_Page
https://wiki.debian.org/nftables
https://manpages.debian.org/testing/nftables/nftables.8.en.html
https://linuxandcaffeine.com/setup-a-simple-web-server-firewall-using-nftables/
Zurück zu Ubuntu