Netzwerkzugang für Programm einschränken
Netzwerkzugang für Programm einschränken
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 ...
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
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
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.
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)
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
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)
Re: 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.Hafner hat geschrieben:Gibt es unter Debian irgend eine Möglichkeit den Netzwerkzugang für Programm einschränken?
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"
"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"
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.
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.