Programmen Zugriff zum Internet (oder einem anderen Netz) verweigern

#0
28.08.2006, 19:54
Member
Avatar Xeper

Beiträge: 5285
#1 Hallo allerseits

Jeder weiß das es keine Desktop-Firewall für GNU/Linux gibt
und sowas auch im allgemeinen nicht gebraucht wird.
Was wäre wenn wir einem bestimmten Programm den Zugriff zum Internet doch verbieten möchten?

Nun damit mußte ich mich letzte Woche außeinander setzen und bin zu folgendem einfachen Beispiel gekommen:

Da Linux Netfilter ja nur unterhalb des application layers funkioniert ist es schwierig Anhand von Programmen den Zugriff zu verweigern hier aber eine Lösung:

Man nehme Programm XY und ändere die Gruppe von diesem Prograrmm auf 'unpriviliged' diese Gruppe muss natürlich existieren.

nehmen wir einfach an die Gruppe unpriviliged hat die GID von 1005.
Dann sagen wir dem Netfilter folgendes:

iptables -A OUTPUT -t filter -o ppp0 -m owner --gid-owner 1005 -j DROP

(ppp0 ist bei ADSL das ausgehende Device, bei euch eventuell ein anderes)

Voila die Gruppe 1005 kann nicht mehr nach hause telefonieren ;)
Da die user selber nicht unbedingt in Gruppe 1005 sind müssen wir dem Programm das sgid bit geben per chmod g+s /path/to/executable

Nun wird dieses Programm immer mit den 'unpriviliged' Gruppen-Rechten ausgeführt
und somit hat es auch keinen Zugriff mehr richtung ppp0 in diesem Fall.

Das ipt_owner modul (oder im Kernel) ist dafür notwendig.

Es gibt auch folgendes:

Zitat

--cmd-owner name
Matches if the packet was created by a process with the given
command name. (this option is present only if iptables was com-
piled under a kernel supporting this feature)
Interessant - würde das SGID und die Gruppe ersparen allerdings stand auch folgendes dadrunter:

Zitat

NOTE: pid, sid and command matching are broken on SMP
Arbeite leider auf einem SMP System.
Kann ja mal jemand ausprobieren und diesen Thread erweitern.
__________
Email/XMPP: therion at ninth-art dot de
IRC: megatherion @ Freenode
Seitenanfang Seitenende
09.11.2006, 12:03
Ehrenmitglied

Beiträge: 831
#2

Zitat

iptables -A OUTPUT -o eth1 -t filter -m owner --cmd-owner curl -j DROP
Arbeitet erfolgreich.

Btw:
Personal Firewall unter GNU/Linux http://fireflier.sourceforge.net/

Gruß Conny
__________
http://linux.regionnet.de/ - http://www.pf-lug.de/ - http://www.4logistic.de/ - http://www.pfenz.de
Seitenanfang Seitenende
Um auf dieses Thema zu ANTWORTEN
bitte erst » hier kostenlos registrieren!!

Folgende Themen könnten Dich auch interessieren: