nftable - Ausgehende Regel auf Applikation beschränken

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

nftable - Ausgehende Regel auf Applikation beschränken

Beitrag von joe2017 » 17.07.2019 15:35:04

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?

TomL

Re: nftable - Ausgehende Regel auf Applikation beschränken

Beitrag von TomL » 17.07.2019 15:47:11

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

Benutzeravatar
MSfree
Beiträge: 10741
Registriert: 25.09.2007 19:59:30

Re: nftable - Ausgehende Regel auf Applikation beschränken

Beitrag von MSfree » 17.07.2019 15:59:17

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.

TomL

Re: nftable - Ausgehende Regel auf Applikation beschränken

Beitrag von TomL » 17.07.2019 16:06:24

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.

Benutzeravatar
MSfree
Beiträge: 10741
Registriert: 25.09.2007 19:59:30

Re: nftable - Ausgehende Regel auf Applikation beschränken

Beitrag von MSfree » 17.07.2019 16:14:50

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:

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: nftable - Ausgehende Regel auf Applikation beschränken

Beitrag von joe2017 » 17.07.2019 16:20:38

Hmmm...

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

Benutzeravatar
MSfree
Beiträge: 10741
Registriert: 25.09.2007 19:59:30

Re: nftable - Ausgehende Regel auf Applikation beschränken

Beitrag von MSfree » 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.

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.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: nftable - Ausgehende Regel auf Applikation beschränken

Beitrag von joe2017 » 17.07.2019 16:40:43

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.

TomL

Re: nftable - Ausgehende Regel auf Applikation beschränken

Beitrag von TomL » 17.07.2019 16:45:35

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.
Zuletzt geändert von TomL am 17.07.2019 16:47:07, insgesamt 1-mal geändert.


TomL

Re: nftable - Ausgehende Regel auf Applikation beschränken

Beitrag von TomL » 17.07.2019 16:47:56

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:

Benutzeravatar
MSfree
Beiträge: 10741
Registriert: 25.09.2007 19:59:30

Re: nftable - Ausgehende Regel auf Applikation beschränken

Beitrag von MSfree » 17.07.2019 18:13:02

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.

TomL

Re: nftable - Ausgehende Regel auf Applikation beschränken

Beitrag von TomL » 17.07.2019 18:32:12

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.

wanne
Moderator
Beiträge: 7462
Registriert: 24.05.2010 12:39:42

Re: nftable - Ausgehende Regel auf Applikation beschränken

Beitrag von wanne » 17.07.2019 19:49:48

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.
rot: Moderator wanne spricht, default: User wanne spricht.

Antworten