Code: Alles auswählen
/usr/bin/sudo /usr/bin/apt install nftables
Nachdem wir die Firewall nftables erfolgreich installiert haben, können wir uns mit dem nano Editor die Konfiguration Script Datei ansehen.
Code: Alles auswählen
/usr/bin/sudo /usr/bin/nano /etc/nftables.conf
Code: Alles auswählen
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
}
chain forward {
type filter hook forward priority 0;
}
chain output {
type filter hook output priority 0;
}
}
Bevor wir die Firewall aktivieren, sollten wir beachten das alle Ports blockiert werden. Somit auch der Port 22, womit wir uns per ssh über Putty eingeloggt haben. Daher sollten wir als Erstes zu mindestens den Port 22 freigeben, indem wir das Konfiguration Script entsprechend ändern.
Code: Alles auswählen
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
#accept ssh
tcp dport { 22 } accept
}
chain forward {
type filter hook forward priority 0;
}
chain output {
type filter hook output priority 0;
}
}
Als Zweites sollten wir die Kommunikation von lokalen Programm zulassen, welche über das Loopback-Gerät mit dem Computer kommunizieren.
Code: Alles auswählen
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
# accept any localhost traffic
iif lo accept
#accept ssh
tcp dport { 22 } accept
}
chain forward {
type filter hook forward priority 0;
}
chain output {
type filter hook output priority 0;
}
}
Um Pakete zuzulassen, die Teil einer bereits etablierten Kommunikation mit dem Netzwerk sind, können wir folgenden Eintrag in unserem Konfiguration-Skript an der zweiten Stelle einbinden. Durch den nächsten Eintrag wird jeder Versuch von einem Computer im Netzwerk, Ihren Computer zu erreichen, verworfen. Der Datenverkehr, der Teil eines von Ihnen gestarteten Datenflusses ist, wird jedoch akzeptiert.
Code: Alles auswählen
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
# accept any localhost traffic
iif lo accept
# accept traffic originated from us
ct state established,related accept
# drop invalid packets
ct state invalid counter drop
#accept ssh
tcp dport { 22 } accept
}
chain forward {
type filter hook forward priority 0;
}
chain output {
type filter hook output priority 0;
}
}
Des Weiteren sollten wir noch die imcp und imcpv6 Protokolle akzeptieren. Denn die ICMP und ICMPv6 Protokolle sind die wichtigsten Unterstützungsprotokolle für das Internet. Diese Protokolle sind für Konnektivitätstests und Fehlersignalisierung vorgesehen, wenn ein Paket sein Ziel nicht erreicht. Durch den Empfang einer ICMP-Meldung kann eine Anwendung den Grund eines Fehlers nachvollziehen: Paket zu groß, keine Route verfügbar usw.
Code: Alles auswählen
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
# accept any localhost traffic
iif lo accept
# accept traffic originated from us
ct state established,related accept
# drop invalid packets
ct state invalid counter drop
# accept icmp
ip protocol icmp accept
# accept all icmpv6
ip6 nexthdr icmpv6 accept
#accept ssh
tcp dport { 22 } accept
}
chain forward {
type filter hook forward priority 0;
}
chain output {
type filter hook output priority 0;
}
}
Zum Schluss lassen wir noch alles zählen und ablehnen, so das nichts unerwünschte unseren Rootserver erreicht.
Code: Alles auswählen
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
# accept any localhost traffic
iif lo accept
# accept traffic originated from us
ct state established,related accept
# drop invalid packets
ct state invalid counter drop
# accept icmp
ip protocol icmp accept
# accept all icmpv6
ip6 nexthdr icmpv6 accept
# accept ssh
tcp dport { 22 } accept
# count and reject everything else
counter reject with icmpx type admin-prohibited
}
chain forward {
type filter hook forward priority 0;
}
chain output {
type filter hook output priority 0;
}
}
Code: Alles auswählen
nftables Firewall starten
Code: Alles auswählen
/usr/bin/sudo /usr/bin/systemctl enable nftables
/usr/bin/sudo /usr/bin/systemctl start nftables
Quelle: [External Link Removed for Guests]