Netzwerkzugang für Programm einschränken

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Hafner
Beiträge: 188
Registriert: 31.03.2004 10:31:48

Netzwerkzugang für Programm einschränken

Beitrag von Hafner » 24.04.2007 20:09:28

Gibt es unter Debian irgend eine Möglichkeit den Netzwerkzugang für Programm einschränken? Zum Beispiel möchte ich das das Programm XYZ nur Zugriff auf ein bestimmtes Netz oder eine bestimmte IP hat oder nur auf einen Server verbinden kann, der auf dem eigenen Rechner liegt. Alles andere soll geblockt werden. TCP, wie UDP, wie ...

knue
Beiträge: 33
Registriert: 11.05.2006 15:35:41
Wohnort: Münzkirchen
Kontaktdaten:

Beitrag von knue » 24.04.2007 21:42:12

hallo

das geht mittels iptables

http://www.netfilter.org

wenn du bestimmte dienste wie z.B http auf den Server zulassen willst musst du eine Regel erstellen die dieses erlaubt
und dann eine Regel die den Rest verbietet
damit du ein bestimmtes programm das erlauben willst
musst du die PortNummer wissen und das Protokoll wenn du diese weißt ist es einfach

iptables ist aber eine sehr umfangreiche MAterie wenn du dir nur das PAcketfilter HOWTo durchlest sollte es aber gehen

mfg knue

Hafner
Beiträge: 188
Registriert: 31.03.2004 10:31:48

Beitrag von Hafner » 25.04.2007 07:13:44

Hmm, das meinte ich war nicht, aber ich habe mich dennoch für so eine ähnliche Lösung entschieden, den das Modul owner von IP-Tables wollte nicht so wie ich es wollte. :-)

Code: Alles auswählen

sudo iptables -P FORWARD DROP
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
sudo iptables -I INPUT -m iprange --src-range 141.0.0.0-141.255.255.255 -j ACCEPT
sudo iptables -I OUTPUT -m iprange --src-range 141.0.0.0-141.255.255.255 -j ACCEPT

# HTTP
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
# HTTPS
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
# ICQ
sudo iptables -A INPUT -p tcp --dport 5190 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 5190 -j ACCEPT
# POP
sudo iptables -A INPUT -p tcp --dport 110 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT
# POP (verschlüsselt)
sudo iptables -A INPUT -p tcp --dport 995 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 995 -j ACCEPT

sudo iptables --list
Das Script soll alles sperren, was mit FORWARD zu tun hat und es soll INPUT und OUTPUT nur für die Adressenbereiche 141.0.0.0-141.255.255.255 zulassen.
Soweit klappt es.
Ich will aber bestimmte Ausnahmen freigeben (HTTP, HTTPS, ICQ, POP und POP (verschlüsselt)). Leider funktioniert das nicht. Es wird trotzdem geblockt. Habe ich was vergessen?

(Die Regeln werden alle akzeptiert und bei iptables --list richtig angezeigt)

Hafner
Beiträge: 188
Registriert: 31.03.2004 10:31:48

Beitrag von Hafner » 25.04.2007 08:17:29

Ups, bei INPUT willte ich eigentlich --sport eingeben. :-)
Nun gehts. Zumindest mail und http. ICQ komischerweise nicht. muss ich nochmal schauen.

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Re: Netzwerkzugang für Programm einschränken

Beitrag von roli » 25.04.2007 09:36:25

Hafner hat geschrieben:Gibt es unter Debian irgend eine Möglichkeit den Netzwerkzugang für Programm einschränken?
Das hoert sich fuer mich danach an, als ob du etwas suchst, was einer "typischen Windows Application Fierewall" entspricht, oder? Du moechtest z.B. das Konqueror nur im Lan arbeiten darf, aber nicht im INet, Firefox nur im INet, aber nicht im Lan, waere es das? Wenn ja, wuesste ich dafuer keine Loesung.
Wenn du mit Programm einen Daemon/Dienst meinst, wie Beispielsweise einen lokal installierten Apache, dann kannst du das mit iptables machen.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Hafner
Beiträge: 188
Registriert: 31.03.2004 10:31:48

Beitrag von Hafner » 25.04.2007 10:37:01

Ich meinte den "typischen Windows Firewall". :-)
Das ganze hätte eh nicht so funktioniert, da der Prozessname einer (nur mal als Beispiel) Java-Application immer "java" ist. Da kann man also nur schlecht selektieren.
Ports sperren ist immer so ne Sache, vorallem wenn Programme potentiell ganze Portbereiche verwenden. Überschneiden sich diese auch noch, so kann man das schlecht eingrenzen.
Ein Anderer Ansatz von mir war es, einen Benutzer einzurichten und dafür zu sorgen, dass das Programm nur von diesem Benutzer ausgeführt werden kann. Dann hätte ich für den Benutzer und damit für das Programm individuelle iptable-Regeln aufstellen können. Das ist leider daran gescheitert, dass das owner-Modul von iptables nicht richtig funktioniert hat. Es war zwar geladen, aber es kam irgend eine Fehlermeldung. Die Internetrechersche ergab, das ich das Modul neu compilieren müsste. Dazu hatte ich aber keine Lust. :-)

Antworten