Seite 1 von 1

nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 15:35:04
von joe2017
Hallo zusammen,

ich würde gerne mit nftable eine ausgehende Regel anlegen welche lediglich für eine Applikation geöffnet wird.
Ist das mit nftable möglich? Kann man Regeln auf eine App bzw. Prozesse beschränken?

Re: nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 15:47:11
von TomL
Nein!

Das geht meines Wissens nach nur über einen Trick, einen Umweg. Für Applikationen gibts keinen Match, aber imho für PID-Owner. Das heisst, Du müsstest Dir einen virtuellen User basteln und dieses Prozesse unter dessen UID laufen lassen. Dann kann man wohl nach Owner-ID matchen... das ist aber jetzt nur ein vager Erinnerungshinweis... ist zulange her, dass ich mal selber die Idee hatte .... und bin dabei auch nur auf diesen Würgerund gekommen. Such mal nach "nftables skuid".

Code: Alles auswählen

iptables-translate -A OUTPUT --match owner --uid-owner 1000 -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED --sport 1024:65535 -j ACCEPT
nft add rule ip filter OUTPUT skuid 1000 tcp sport 1024-65535 tcp dport 80 ct state new,established counter accept

Re: nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 15:59:17
von MSfree
TomL hat geschrieben: ↑ zum Beitrag ↑
17.07.2019 15:47:11
Das geht meines Wissens nach nur über einen Trick, einen Umweg. Für Applikationen gibts keinen Match, aber imho für PID-Owner. ...
Zumindest funktioniert das Matching mit User-ID mit iptables. Auf meinem Router darf z.B. squid über das UID-Matching Pakete nach aussen schicken:

Code: Alles auswählen

iptables -A OUTPUT -o wan -m state --state NEW -m owner --uid-owner proxy -j ACCEPT
Ich würde annehmen, daß diese Option in nftables nicht entfernt wurde.

Re: nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 16:06:24
von TomL
Nee, das wurde nicht entfernt... das geht nach wie vor. Nur auf ner lokalen Maschine geht natürlich mit nem Drop oder Reject bei diesem User dann für die definierten Matchbedingungen gar nix mehr. ... also nicht nur eine App, sondern der vollständige Traffic des Users wäre hierbei und für diese Regeln gedropt, also auch auf andere Anwendungen bezogen. Er müsste dann um das zu umgehen, weil er ja auch nur eine Anwendung explizit genannt hat, diese Anwendung unter einer virtuellen UID starten und nur diese UID filtern. Nur hindert das eben nichts daran, dass die Anwendung auch unter einer normalen UID gestartet werden könnte, womit der Filter wieder umgangen wäre.

Re: nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 16:14:50
von MSfree
Mit liblnetfilter_queue könnte man sich einen eigenen Paketfilter bauen, der Pakete auf das sendende Programm untersucht. über das /proc-Dateisystem kann man den Namen des Prozesses herausbekommen und dementsprechend reagieren. Das erfordert halt nur ein wenig Programieraufwand. :mrgreen:

Re: nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 16:20:38
von joe2017
Hmmm...

Kann man evtl einen Proxy oder ähnliches bereitstellen welcher lediglich gewünschte Applikationen zulässt?

Re: nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 16:37:19
von MSfree
joe2017 hat geschrieben: ↑ zum Beitrag ↑
17.07.2019 16:20:38
Kann man evtl einen Proxy oder ähnliches bereitstellen welcher lediglich gewünschte Applikationen zulässt?
Es gibt nichts fertiges.

Du kannst dir was eigenes schreiben, siehe mein Kommentar oben.

Andererseits sind solche Appllication-Firewalls ziemlicher Unsinn. Spätestens, wenn die Firewall auf einem eigenen Rechner läuft, kennt sie den Namen der Anwendung nicht mehr, weil dieser Name nur dem Sendenden Rechner bekannt wäre. Appllication-Firewalls auf dem lokalen Host sind zu einfach auszuhebeln und daher auch eher nutzlos. Jedem, der sich nur halbwegs mit Netzwerksicherheit beschäftigt hat, ist zu der gleichen Erkenntnis gelangt und daher gibt es sowas in der Linuxwelt auch nicht.

Re: nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 16:40:43
von joe2017
Ja da hast du schon Recht.

Ich frage mich nur warum man die Möglichkeit nicht eingebaut hat. Es ist sicherlich besser einen Port nur für eine Anwendung zu öffnen wie für das ganze System.
Dann muss ich mal schauen wie ich das lösen kann.

Re: nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 16:45:35
von TomL
MSfree hat geschrieben: ↑ zum Beitrag ↑
17.07.2019 16:37:19
joe2017 hat geschrieben: ↑ zum Beitrag ↑
17.07.2019 16:20:38
Kann man evtl einen Proxy oder ähnliches bereitstellen welcher lediglich gewünschte Applikationen zulässt?
Es gibt nichts fertiges.
Und ich geh noch nen Schritt weiter und sag "vergiss den Quatsch, das ist nix anderes als ein wirkungsloses Placebo" :wink: Ich nutze gerne und viel den Midnight Commander... der hat natürlich jetzt nix mit Netzwerk-Traffic zu tun, aber egal....

Code: Alles auswählen

# cp /usr/bin/mc /home/toml/mico
Was denkst Du, was passiert, wenn ich jetzt in meinem Homedir das programm "mico" starte....?... ich verrats Dir, er startet völlig normal. :lol: Also, du kannst nicht eine App verbieten, das wird nie gelingen. Selbst wenn 'mc' gefiltert wäre, 'mico' ist es jedenfalls nicht. Und wenns nur darum geht, dass normale Starts der APP nicht nachhause telefonieren, dann würde ich einen Kontext-Wechsel via pkexec durchführen, also die App unter einem anderen User betreiben. Mit dem o.g. kompletten Drop dieses Users wäre das gelöst. Das ist zwar nur ein kleiner -auf eigene Disziplin aufbauender- Schutz, aber mehr als nix.

Re: nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 16:46:18
von maledora4

Re: nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 16:47:56
von TomL
maledora4 hat geschrieben: ↑ zum Beitrag ↑
17.07.2019 16:46:18
Was ist damit: "Wechsel von iptaples zu nftaples"
Da steht aber auch nix von Filter auf Applikation drin.... :wink:

Re: nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 18:13:02
von MSfree
TomL hat geschrieben: ↑ zum Beitrag ↑
17.07.2019 16:45:35
Ich nutze gerne und viel den Midnight Commander... der hat natürlich jetzt nix mit Netzwerk-Traffic zu tun, aber egal....
Doch, man kann damit SCP und FTP Verbindungen aufbauen. :wink:

Ansonsten, schönens Beispiel, wie man ein Verbot von mc aushebelt indem man ihn auf einen anderen Programmnamen kopiert.

Re: nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 18:32:12
von TomL
MSfree hat geschrieben: ↑ zum Beitrag ↑
17.07.2019 18:13:02
Doch, man kann damit SCP und FTP Verbindungen aufbauen.
*uuups*... erwischt.... :hail: ... gut aufgepasst :THX:

ps
Der MC hat bei mir schon vor längerem den Filezilla für Updates auf meine HP abgelöst.... im Terminal ist der MC absolut einer meiner Favoriten... das Teilchen ist schon richtig klasse.

Re: nftable - Ausgehende Regel auf Applikation beschränken

Verfasst: 17.07.2019 19:49:48
von wanne
joe2017 hat geschrieben: ↑ zum Beitrag ↑
17.07.2019 15:35:04
Ist das mit nftable möglich? Kann man Regeln auf eine App bzw. Prozesse beschränken?
Das ist die falsche Frage. Man kann es nicht, weil es keinen Sinn macht:
Hier ein Beispiel: Die aller meisten älteren Programme nutzen curl (und nicht libcurl) um Daten aus dem Internet zu ziehen. KDE-Programm gehen oft den Umweg über einen Hintergrunddienst (kio) Selbst Chrome konnte eine Zeit lang curl nutzen statt selbst zu laden. Hättest du Chrome den Internetzugriff verboten wäre alles geblieben wie es ist.
Beschränkst du also die Internetzugriffe eines Programms oder gar nur eines Prozesses, erreichst du meist gar nichts. Der Prozess der den Internetzugriff macht ist ein anderer als du intuitiv denkst.
Insbesondere ist es unter Linux üblich, dass ein Prozess das zugehörige Programm wechselt. (Siehe man exec.)
Was du suchst sind Netzwerk-Namespaces. Damit kannst du ein ganzes Bundel von Prozessen zusammenfassen. Der kann dann eigene Routing und firewallregeln haben.
Eine Lösung die etwas weniger verständnis fordert ist den passenden Prozess unter einem anderen User auszuführen.
Für beides Gilt: Führt ein Programm ein anderes aus bleibt das erhalten.