Hilfe bei iptables

l3u

Neuer User
Mitglied seit
9 Okt 2013
Beiträge
18
Punkte für Reaktionen
0
Punkte
0
Hallo :)

Ich brauche zusätzlich zu der AVM-Firewall iptables, was ich per Freetz verfügbar machen will. Nur habe ich damit noch nicht viel gemacht und wäre deswegen sehr dankbar für Hilfe beim Erstellen der Regeln. Ich muss die Firewall in einem laufenden System einrichten, und zwar idealerweise per Fernzugriff. Deswegen wäre es blöd, wenn ich mich selbst aussperren würde und erst hinfahren muss ;-)

Folgende Situation:

Im Moment hängen alle Rechner nach der Fritz-Box am Internet. Zu einem route ich Port 1194 UDP (zwecks OpenVPN-Zugriff) durch.

Alle Rechner haben feste IP-Adressen und sollen im LAN untereinander uneingeschränkt kommunizieren dürfen. Das sollte ja unabhängig von irgendwelchen Firewall-Einstellungen gehen, weil ja nur Anfragen nach außen über den Router laufen (oder?!).

Keiner der Rechner soll mit dem Internet kommunizieren dürfen, außer einem. Der Soll uneingeschränkten Internetzugriff haben (also so, wie es jetzt ist).

Der Rechner, zu dem Port 1194 geroutet wird, soll diesen auch weiterhin bekommen. Aber eben nur diesen Port.

Für jede Hilfe wäre ich sehr dankbar :)
 
Hallo und willkommen im Forum!

Wie Du die Firewall für Deine Zwecke optimal einrichtest, kannst nur Du selbst wissen. Um das Risiko Dich selbst auszusperren zu minimieren könntest Du Dir einen Cron-Job einrichten, der die Box jede Nacht neu startet. Die Regeln für iptables testest Du dann erstmal ausschließlich über die Rudi-Shell. Wenn Du Dich dabei selbst aussperrst, musst Du "nur" bis zum nächsten Neustart warten. Wenn Deine Regeln dann schlussendlich im Ordnung sind, kannst Du die in der rc.custom persistent speichern.
 
Keiner der Rechner soll mit dem Internet kommunizieren dürfen, außer einem.
Dann könntest Du z. B. mit iptables eine Regel für die FORWARD chain, mit dem target REJECT und der negierten IP-Adresse des erlaubten Rechners, erstellen.
 
Also hab ich das richtig verstanden, dass erstmal die AVM-Firewall kommt und danach iptables? Und beides unabhängig voneinander ist? Weil dann müsste man sich ja über NAT, Masquerading und sowas schonmal keine Gedanken machen.

Ich hatte mir gedacht, eben nur das zu erlauben, was erlaubt sein soll, und ansonsten alles zu blocken. Nur weiß ich eben nicht genau, wie.

Würde sowas hier funktionieren? Sorry, ich hab mit iptables bisher noch nicht viel gemacht …
Code:
# VPN an 192.168.10.99 erlauben(?)
iptables -I FORWARD -p udp --dport 1194 -d 192.168.10.99 -j ACCEPT
# Die ganze Kommunikation mit 192.168.10.110 erlauben(?)
iptables -I FORWARD -d 192.168.10.110 -j ACCEPT
# Alles andere verbieten(?)
iptables -I FORWARD -j REJECT
Die INPUT-Chain würde ja nur die direkte Kommunikation mit der Fritz-Box betreffen, oder?
 
Zuletzt bearbeitet:
Hallo,

zwei kleine Tips:

1. Es heißt
Code:
iptables -A FORWARD ...

2. Um Dich nicht auszusperren sorgst Du idealerweise dafür, daß die Box einen Dropbear-Server (o.Ä.) bekommt. Desweiteren solltest Du (speziell für die Fernwartung) irgendwo noch eine weitere Möglichkeit haben, Dich auf einem Rechner per SSH einzuloggen. Dieser sollte eine feste (öffentliche) IP oder zumindest einen festen IP-Bereich haben. Dann schafft ein
Code:
iptables -A INPUT -p tcp -s DieObenAngemerkteÖffentlicheIPAdresse --dport 22 -j ACCEPT
Dir die Möglichkeit, im Fall des Falles auch weiterhin Zugang zu Deiner Box zu haben.
Grüße,

JD.
 
Okay, Dropbear wollte ich sowieso mit draufziehen. Ich will ja die Regeln später auch automatisch bei einem Neustart der Box setzen.

Also würde dann folgendes passen (abgesehen von der Input-Regel für den Zugriff von außen)?
Code:
iptables -A FORWARD -p udp --dport 1194 -d 192.168.10.99 -j ACCEPT
iptables -A FORWARD -d 192.168.10.110 -j ACCEPT
iptables -A FORWARD -j REJECT
 
Für den Zugriff von Außen musst Du gar nichts tun, solange Du die Finger von INPUT lässt.

Die FORWARD Regeln sind etwas einseitig und sicher nicht das, was Du erreichen willst. Was passiert mit den Paketen, die in die andere Richtung gesendet werden?
 
Wie gesagt, von iptables hab ich bisher leider noch nicht viel Ahnung, das war jetzt mal das, was ich mir nach der Lektüre diverser Einführungen in iptables zusammengereimt habe.

Für den Rechner 192.168.10.110 soll alles so bleiben, wie bisher (also ohne iptables, so, als ob er „einfach so“ an der unveränderten Fritz-Box hängt). Sprich: dieser soll „einfach so“ mit dem Internet kommunizieren können. Alle anderen sollen überhaupt keinen Internetzugang haben, eben mit einer Ausnahme: Port 1194/UDP muss von und nach 192.168.10.99 geroutet werden zwecks OpenVPN-Zugang. Aber _nur_ dieser Port.

Die interne Kommunikation zwischen den Rechnern wird ja von den iptables-Regeln der Fritz-Box nicht beeinflusst, sondern nur die von oder nach außen, oder?

Welche Regeln fehlen noch? Bzw. was würden denn die bisherigen machen (oder nicht machen)?
 
Zuletzt bearbeitet:
Das hängt von deinen Regeln ab, aber solange es nicht "durch" die FB muss, kann sie auch nix verbieten...

Ich würde nur Dinge "raus" ins Internet verbieten. Deine Regeln müssten dann also in etwa so aussehen:

Code:
# Sicherheit: In 5 Minuten reboot, wenn was falsch war
echo "reboot" > /var/tmp/reboot.sh
(sleep 300 && sh /var/tmp/reboot.sh) &

iptables -A FORWARD -o dsl -p udp --sport 1194 -s 192.168.10.99 -j ACCEPT
iptables -A FORWARD -o dsl -s 192.168.10.110 -j ACCEPT
iptables -A FORWARD -o dsl -j REJECT

#wenn alles gut geht:
rm /var/tmp/reboot.sh
killall sleep
Vermutlich ginge auch direkt "(sleep 300 && reboot) &", aber ich bin nicht 100% sicher, ob dann das reboot auch weg ist.
 
Na, da war ich ja schon nah dran ;-)

Vielen Dank! Ich werd’s ausprobieren. Und wenn alles klappt, dann schreib ich die Regeln in die /etc/init.d/rc.custom (bzw. source ein Script von da aus, das die Regeln enthält), damit sie nach einem Reboot automatisch gesetzt werden, oder? Muss da noch ein iptables -F an den Anfang?
 
Ein
Code:
iptables -F
iptables -Z
würde ich immer an den Anfang eines Scriptes stellen, daß bei Starten der Box automatisch abgearbeitet wird.
Zum Testen würde ich erst mal einige Zeit das von MaxMuster vorgeschlagene
Code:
iptables -A FORWARD -o dsl -j REJECT
durch ein
Code:
iptables -A FORWARD -j LOG --log-prefix "[IPT] DENY-FRITZ-FORWARD "
ersetzen. Dann kannst Du in den Syslogs nachsehen, welcher "Standard-Verkehr" im Tagesgeschäft durch Deine Box geht und Deine Regeln entsprechend verfeinern.
 
Folgendes Script tut exakt, was ich haben wollte:
Code:
modprobe ip_tables
modprobe iptable_filter
iptables -Z
iptables -F
iptables -A FORWARD -o dsl -p udp --sport 1194 -s 192.168.10.99 -j ACCEPT
iptables -A FORWARD -o dsl -s 192.168.10.110 -j ACCEPT
iptables -A FORWARD -o dsl -j DROP
Nochmal vielen Dank für die Hilfe :)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.