pings erlauben mit iptables?

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
MSfree
Beiträge: 3971
Registriert: 25.09.2007 19:59:30

Re: pings erlauben mit iptables?

Beitrag von MSfree » 10.01.2019 15:25:52

inne hat geschrieben: ↑ zum Beitrag ↑
10.01.2019 14:59:55
...

Code: Alles auswählen

dpkg-reconfigure iptables-persistent
...

Code: Alles auswählen

service netfilter-persistent save
Das sollte kein Problem sein. Wenn man mit einem eigene Skript iptabels etabliert, dann werden sie halt danach "persistent" gemacht und sind nach dem nächsten Boot wieder vorhanden.

Technisch geht das recht unspektakulär, in dem iptables-save > persistent.rules ausgeführt wird, damit die Regeln dauerhaft auf der Platte stehen und reboots überleben. Beim Booten werden mit iptables-restore < persistent.rules die Regeln wieder eingelesen und aktiviert.

Alles, was man dabei zwischendurch an Regeln dazu einführt, überlebt den save/restore Vorgang unverändert.

inne
Beiträge: 2204
Registriert: 25.06.2013 15:45:12
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: pings erlauben mit iptables?

Beitrag von inne » 10.01.2019 15:28:43

jmar83 hat geschrieben: ↑ zum Beitrag ↑
10.01.2019 15:05:55
Keine Ahnung...
Was ist der Unterschied zwischen den Befehlen?
Das dpkg-reconfigure ist eher für die Paketeinrichtung gedacht. Die Idee das auch so wie du jetzt zu benutzen hatte ich noch gar nicht und fand das aber ok.

Bis auf den Punkt das es erst mal interaktiv ist, fällt mir nichts ein. Man kann es aber mir DEBCONF=non-interactive dpkg-reconfigure iptables-persistent auch in Skript o.ä. nutzen.

Selbst wenn bei debconf/dpkg-reconfigure bald mehr Dinge zur Konfiguration des Pakets abgehandelt werden, gelten immer noch die Standard oder Hinterlegten Antworten aus der Datenbank. So das auch das auch das auf Dauer funktionieren könnte.
(=_=)

Have mercy!

Benutzeravatar
jmar83
Beiträge: 143
Registriert: 20.06.2013 20:20:15

Re: pings erlauben mit iptables?

Beitrag von jmar83 » 10.01.2019 15:32:33

Danke für die Feedbacks!! :-)


@mat6937:

ls -la /etc/iptables/rules.v4 gibt das aus:

Code: Alles auswählen

-rw-r--r-- 1 root root 566 Jan 10 15:06 /etc/iptables/rules.v4

cat /etc/iptables/rules.v4 das hier:

Code: Alles auswählen

# Generated by iptables-save v1.6.0 on Thu Jan 10 15:06:43 2019
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1395:528297]
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8/0 -m state --state NEW -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j DROP
-A OUTPUT -p icmp -m icmp --icmp-type 8/0 -m state --state NEW -j ACCEPT
COMMIT
# Completed on Thu Jan 10 15:06:43 2019
Freundliche Grüsse, Jan

mat6937
Beiträge: 1233
Registriert: 09.12.2014 10:44:00

Re: pings erlauben mit iptables?

Beitrag von mat6937 » 10.01.2019 15:36:12

jmar83 hat geschrieben: ↑ zum Beitrag ↑
10.01.2019 15:32:33

Code: Alles auswählen

# Generated by iptables-save v1.6.0 on Thu Jan 10 15:06:43 2019
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1395:528297]
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8/0 -m state --state NEW -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j DROP
-A OUTPUT -p icmp -m icmp --icmp-type 8/0 -m state --state NEW -j ACCEPT
COMMIT
# Completed on Thu Jan 10 15:06:43 2019
OK.
Hier sieht man auch, dass die default policy der OUTPUT chain auf ACCEPT ist und dort es keine allgemeine Regel mit DROP gibt, so dass "-A OUTPUT -p icmp -m icmp --icmp-type 8/0 -m state --state NEW -j ACCEPT" nicht erforderlich wäre.

Benutzeravatar
jmar83
Beiträge: 143
Registriert: 20.06.2013 20:20:15

Re: pings erlauben mit iptables?

Beitrag von jmar83 » 10.01.2019 17:39:55

Vielen Dank!! :-)
Freundliche Grüsse, Jan

Benutzeravatar
ingo2
Beiträge: 698
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: pings erlauben mit iptables?

Beitrag von ingo2 » 10.01.2019 23:02:15

Noch eine Idee, da ja bald (mit Buster) Debiannftables zum Standard wird:

Auch in Stretch gibt's nftables im Repository. Ich selbst habe gleich die aktuelle Version aus "stretch-backports" installiert un das läuft einwandfrei. Da sind viele Dinge einfacher und die Optionen meist selbsterklärend. Wewiterer Vorteil: alles steht in einer Datei "/etc/nftables.conf" und das wars schon. Einzike Aktion: den systemd nftables.service enablen und starten - fertig.

Das mit dem Ping ist da ganz simpel:

Code: Alles auswählen

# allow ping (echo request) at limited rate. 2nd rule needed to handle established.
ip6 nexthdr icmpv6 icmpv6 type echo-request limit rate 10/second accept
ip6 nexthdr icmpv6 icmpv6 type echo-request counter log prefix "nft-ping_flood " drop
ip protocol icmp icmp type echo-request limit rate 10/second accept
ip protocol icmp icmp type echo-request counter log prefix "nft-ping_flood " drop
Schreibt dann auch gleich ein Log, falls mehr als 10 pings/second eingehen.

mat6937
Beiträge: 1233
Registriert: 09.12.2014 10:44:00

Re: pings erlauben mit iptables?

Beitrag von mat6937 » 10.01.2019 23:28:51

ingo2 hat geschrieben: ↑ zum Beitrag ↑
10.01.2019 23:02:15
Auch in Stretch gibt's nftables im Repository. Ich selbst habe gleich die aktuelle Version aus "stretch-backports" installiert un das läuft einwandfrei.
Kann man nftables auch neben iptables verwenden, oder gibt es da Konflikte? Z. B. den eingehenden Traffic sichert man mit iptables ab und erst mal als Test, den ausgehenden Traffic sichert man mit nftables ab.

MSfree
Beiträge: 3971
Registriert: 25.09.2007 19:59:30

Re: pings erlauben mit iptables?

Beitrag von MSfree » 11.01.2019 08:18:04

mat6937 hat geschrieben: ↑ zum Beitrag ↑
10.01.2019 23:28:51
Kann man nftables auch neben iptables verwenden, oder gibt es da Konflikte?
Das sollte gehen. Allerdings kann man, wenn man schon einzelne Regeln auf nftables umstellt, gleich den ganzen Regelsatz umstellen. Irgendwann in der Zukunft könnte es passieren, daß iptables aus dem Kernel entfernt wird, so daß man dann sowieso gezwungen ist, nftables zu verwenden.

Der Syntax von nftables ist weitgehen kompatibel mit dem von iptables, so daß die Umstellung eigentlich wenig Mühe bereiten sollte (ich war bisher allerdings auch zu faul dazu :mrgreen: )

Benutzeravatar
jmar83
Beiträge: 143
Registriert: 20.06.2013 20:20:15

Re: pings erlauben mit iptables?

Beitrag von jmar83 » 11.01.2019 09:15:53

...danke für den Tipp mit "nftables"!! :-)
Freundliche Grüsse, Jan

mat6937
Beiträge: 1233
Registriert: 09.12.2014 10:44:00

Re: pings erlauben mit iptables?

Beitrag von mat6937 » 11.01.2019 09:58:57

MSfree hat geschrieben: ↑ zum Beitrag ↑
11.01.2019 08:18:04
...Irgendwann in der Zukunft könnte es passieren, daß iptables aus dem Kernel entfernt wird, so daß man dann sowieso gezwungen ist, nftables zu verwenden.
Das ist schon richtig bzw. klar. Mir geht es ja nur ums einarbeiten bzw. daran gewöhnen und deshalb auch erstmal nur in der OUTPUT chain, weil ich dort keine iptables-Regeln habe.

Benutzeravatar
ingo2
Beiträge: 698
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: pings erlauben mit iptables?

Beitrag von ingo2 » 11.01.2019 12:52:27

So, da hier mehrere User genau wie ich noch wenig Erfahrung mit Debiannftables haben und sich auch einarbeiten möchten, poste ich mal (m)eine "Rezeptur" für den Start.

Unter Stretch rate ich dazu, Debiannftables aus Backports zu installieren, das passiert dann parallel zum intallierten Debianiptables. Die Version aus Stretch entfernt ipatables.

Also jetzt der Reihe nach:

Code: Alles auswählen

apt install -t stretch-backports nftables
...
5 aktualisiert, 3 neu installiert, 0 zu entfernen
Die einzige Konfigurationsdatei mit den Regeln ist /etc/nftables.conf.
Meine simple Version für einen Desktop-PC mit Erklärungen zu den jeweiligen Rules:
/etc/nftables.conf:

Code: Alles auswählen

#!/usr/sbin/nft -f

# /etc/nftables.conf

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
		ct state invalid counter drop

		# allow ping (echo request) at limited rate. 2nd rule needed to handle established.
		ip6 nexthdr icmpv6 icmpv6 type echo-request limit rate 10/second accept
		ip6 nexthdr icmpv6 icmpv6 type echo-request counter log prefix "nft-ping_flood " drop
		ip protocol icmp icmp type echo-request limit rate 10/second accept/etc/nftables.conf
		ip protocol icmp icmp type echo-request counter log prefix "nft-ping_flood " drop

		# IPv6: accept ICMP for neighbour discovery, otherwise IPv6 connectivity breaks.
		ip6 nexthdr icmpv6 icmpv6 type { nd-neighbor-solicit,  nd-router-advert, nd-neighbor-advert } accept
		# IPv6: ICMP redirects (type 137) is included in "ct stat invalid"
                # ip6 nexthdr icmpv6 icmpv6 type nd-redirect counter drop

		# IPv4: accept & count all other ICMP.
		ip protocol icmp icmp type { destination-unreachable, router-solicitation, router-advertisement, time-exceeded, parameter-problem } counter accept
		# IPv4: drop & count IGMP (Multicast) i.e. FritzBox for IPTV, unused by me.
		ip protocol igmp counter drop

                # accept common local services: SSH, CUPS
                tcp dport { 22, 631 } ct state new accept

		# FritzBox scans for ports 80 und 14013: unused by me
		tcp dport { 80, 14013 }  ct state new counter drop

		# broadcast from this PC: AVAHI and CUPS
		udp dport { 5353, 161 } counter drop
		# broadcast from this PC: saned searching scanners
		udp dport { 1124, 3289, 8610, 8612 } counter drop
		# NetBIOS, SMB von b3, Win10 WM, laptops
		udp dport { 137, 138 } counter drop
		# broadcast from other clients for DHCP
		udp dport { 67 } counter drop

		# drop any other traffic, count and log to nftables.log.
		counter log prefix "nft-final_drop " drop
	}

	# Forwarding is not requiered on a desktop PC
	# chain forward {
	#	type filter hook forward priority 0;
	# }

	chain output {
		type filter hook output priority 0;
	}
}
Einfach nach /etc/ kopieren.

Fürs Logging in einem eigenen Logfile statt des "syslog" folgende Konfigurationsdatei erstellen:
/etc/rsyslog.d/01_nft_log.conf:

Code: Alles auswählen

# /etc/rsyslog.d/01_nft_log.conf

# Log for nftables if activated. Prevent writing to syslog by "& stop"

#
# prefix nft-* : where "*" indicates a specific rule in nftables.conf.
#
:msg,regex,"nft."        -/var/log/nftables.log
& stop
Dann:
Checken, ob bereits iptables aktiv ist (beides, d.h. iptables und nftables gleichzeitig wird nicht empfohlen):

Code: Alles auswählen

iptables -L
rsyslog neu starten, nftables starten - und wenn alles ok ist , nftables aktivieren

Code: Alles auswählen

systemctl restart rsyslog.service

systemctl (re)start|reload nftables.service

systemctl enable nftables.service
So, das sollte für nahezu alle Standard-Desktops reichen. Was ich darüberhinaus erlaubt habe:
SSH-Zugang
Drucker/CUPS von anderen PCs aus.

Meine Konfiguration ist jetzt soweit, dass ich alle normalerweise einfach durchs letzte "drop" verworfenen UDP-Pakete den entsprechenden Anwendungen zuordnen konnte - deshalb die Aufteilung auf mehrere Regeln. Kann dann auch jeder bei Bedarf separat auf "accept" setzen. Damit bleibt im Normalfall das Log leer, nur unerlaubte Zugriffsversuche werden geloggt.

Ich stelle die ganze Konfiguration zur Diskussion und bin über weitere Anregungen/Verbesserungen dankbar. Eine ergiebige Quelle für Information ist das Projekt-Wiki https://wiki.nftables.org/wiki-nftables ... 10_minutes und auch die Wikis von Arch und Gentoo.


EDIT/Nachtrag, nur zur Info:
a) Anzeige des gesamten Filters mit Anzahl der gefilterten Pakete, bei denen "counter" gesetzt ist:
Als root:

Code: Alles auswählen

nft list ruleset
b) SIP-Telefonie (mit Debianlinphone geht ohne jede Portöffnung in beide Richtungen.
c) Debiannano nutzt Syntax-Highlighting beim Editieren der nftables.conf - eine gute Hilfe.
d) Sehr comfortabel: Einträge in der table "inet" gelten gleich für beides, IPv4 und IPv6!
Zuletzt geändert von ingo2 am 11.01.2019 22:57:39, insgesamt 5-mal geändert.

Benutzeravatar
jmar83
Beiträge: 143
Registriert: 20.06.2013 20:20:15

Re: pings erlauben mit iptables?

Beitrag von jmar83 » 11.01.2019 13:47:15

Danke, werde es testen wenn ich das nächste Mal ein fertig konfiguriertes Linux-Image (inkl. allem "drum und dran") aufbaue. :-)
Freundliche Grüsse, Jan

ReturnToSender
Beiträge: 120
Registriert: 23.10.2018 18:06:09

Re: pings erlauben mit iptables?

Beitrag von ReturnToSender » 12.01.2019 18:35:42

ingo2 hat geschrieben: ↑ zum Beitrag ↑
10.01.2019 23:02:15
Noch eine Idee, da ja bald (mit Buster) Debiannftables zum Standard wird:
Ich habe gestern Buster installiert und da ist es anscheinend noch nicht Standard...iptables wurde vom Installer installiert, nftables nicht. Gibts da irgendwo Aussagen, wie es bei dem Thema weitergeht?

Benutzeravatar
ingo2
Beiträge: 698
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: pings erlauben mit iptables?

Beitrag von ingo2 » 12.01.2019 21:54:17

ReturnToSender hat geschrieben: ↑ zum Beitrag ↑
12.01.2019 18:35:42
Ich habe gestern Buster installiert und da ist es anscheinend noch nicht Standard...iptables wurde vom Installer installiert, nftables nicht. Gibts da irgendwo Aussagen, wie es bei dem Thema weitergeht?
Auf jeden Fall kannst du nftables problemlos installieren ohne dass iptables entfernt wird.
Soviel ich es verstanden hab', kann eine bestehende ipatbles-Konfiguration von nftables entweder mit einer Zwischenschicht weiter benutzt werden (z.B. für die Leute, die upgraden), aber es soll auch per Übersetzung möglich sein, eine bestehende iptables-Konfiguration direkt in nftables zu übertragen.

Das wird wohl noch diskutiert, wie das für Buster umgesetzt werden soll. Quelle habe ich leider nicht mehr,

Ingo

ReturnToSender
Beiträge: 120
Registriert: 23.10.2018 18:06:09

Re: pings erlauben mit iptables?

Beitrag von ReturnToSender » 12.01.2019 23:00:30

ingo2 hat geschrieben: ↑ zum Beitrag ↑
12.01.2019 21:54:17
Auf jeden Fall kannst du nftables problemlos installieren ohne dass iptables entfernt wird.
Ja, ich weiss. aber ich habs bislang nicht eingesetzt, weils bisher mit der Stretch-Version Probleme für Stateful-Regeln gab. Der Paketfilter hat regelmäßig meine IPV6-Konfiguration still gelegt. Mit dem alten Paketfilter gabs diese Probleme nicht.

Ich habe gerade auch den Hinweis gefunden: https://wiki.debian.org/nftables
Current status
NOTE: Debian Buster will use the nftables framework by default.


Merkwürdig, dass der aktuelle Installer das noch nicht so sieht. Aber egal, ich werde mal die neuere Version testen.

Antworten