Archiv verlassen und diese Seite im Standarddesign anzeigen : linux router iptables
hi,
ich habe einen linux-router mit drei netzen:
eth0 = internet-standleitung
eth1 = Server's-LAN mit globalen IP-Adressen ohne NAT
zwischen eth0 und eth1 soll geroutet werden, und alles von eth0 nach eth1 und umgekehrt soll erlaubt sein.
nur der linux-router selbst soll nur von eth1 von einem PC per SSH verbunden werden. alle anderen pakete von eth0 und eth1 an den router sollen gesperrt werden.
wie muss/sollte in diesem fall dir iptables konfiguriert werden?
Gruß
Lehrling
Ich habs jetzt 7 mal (!) gelesen aber immer noch nicht verstanden. Deine Frage scheint in sich unlogisch zu sein.
also....
alles von lan-1 nach lan-2 und lan-2 nach lan-1 ist gestattet.
nur alle pakete die direkt an den linux-router mit den 2 netzwerkkarten lan-1 und lan2 gehen sind gesperrt. der router soll nur routen...
verstanden?
gruß
lehrling
Wenn ich deine Frage richtig verstanden hab, dann sollen Anfrage vom Internet auf deine Recher auch geroutet werden. Was willst du den laufen lassen? HTTP-Server? SSH?
Wie willst du die Rechner aus dem Internet dann ansprechen? Haben die Rechner in deinem "Heimnetz" eine eindeutige IP im Internet oder nur der Router?
Bin mir jetzt zwar auch nicht so ganz sicher, aber wie wäre es damit:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD ACCEPT
Pakete, die geroutet werden, durchlaufen (zumindest was die filter-Tabelle angeht) nur die Chain FORWARD, daher wird die Policy auf ACCEPT gesetzt und somit alles erlaubt (man könnte auch die Policy auf DROP setzen und passende Regeln aufstellen).
Alle Pakete, die direkt an den Rechner adressiert sind (INPUT) oder direkt vom Rechner weggehen (OUTPUT) sind verboten, die Policy steht hier auf DROP.
Mit diesem Regelwerk kann der Router allerdings auch keine ICMP-Pakete mehr versenden, also muss ggf. nachgearbeitet werden.
Wenn der Rechner nur routen soll müsste das so funktionieren. Btw, was meinst du mit 'globalen IP-Adressen'?
Bubble
Bin mir jetzt zwar auch nicht so ganz sicher, aber wie wäre es damit:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD ACCEPT
Pakete, die geroutet werden, durchlaufen (zumindest was die filter-Tabelle angeht) nur die Chain FORWARD, daher wird die Policy auf ACCEPT gesetzt und somit alles erlaubt (man könnte auch die Policy auf DROP setzen und passende Regeln aufstellen).
Alle Pakete, die direkt an den Rechner adressiert sind (INPUT) oder direkt vom Rechner weggehen (OUTPUT) sind verboten, die Policy steht hier auf DROP.
Mit diesem Regelwerk kann der Router allerdings auch keine ICMP-Pakete mehr versenden, also muss ggf. nachgearbeitet werden.
Wenn der Rechner nur routen soll müsste das so funktionieren. Btw, was meinst du mit 'globalen IP-Adressen'?
Bubble
Wäre der Verweis auf das routing-HowTo und auf netfilter.org nicht einfacher gewesen?
@lehrling2:
Das eigentlich Problem besteht darin, daß hier niemand wirklich weiß, was Du erreichen willst.
Kurz knapp zu Deinem SSH: Wenn er nur aus dem Lan erreichbar sein soll, dann binde den sshd über die /etc/ssh/sshd_config auf die ip-adresse der Lan-NIC
cu/2 iae
Wäre der Verweis auf das routing-HowTo und auf netfilter.org nicht einfacher gewesen?
Ja mag sein - wird aber (immer wieder gerne ;) ) nachgereicht:
http://iptables-tutorial.frozentux.net/iptables-tutorial.html
Bubble
P.S.: Wenn auf dem Router alle nicht benötigten Dienste deaktiviert sind (also bis auf den ssh, der ja - wie mbo schreibt - nur auf den lokalen Adressen lauscht), also *kein* Dienst mehr läuft, dann brauchst du den Paketfilter auch nicht mehr. Ausser natürlich du willst die ICMP-Pakete unterbinden ...
Bubble
also *kein* Dienst mehr läuft, dann brauchst du den Paketfilter auch nicht mehr. Ausser natürlich du willst die ICMP-Pakete unterbinden ...
Bubble
Hm, dann gäbe es aber im Kostenfaktor günstigere Alternativen. Und wenn eh nix laufen soll, wieso dann noch den sshd? Reiche dann net eine Console?
Dann könnte man, wenn es eh ne alte Kiste ist, zB auch das runlevel 0 dahingehend aufräumen, daß alles zu halt und netzwerk nicht gekillt werden und die Maschine dann mit init 0 "härten", da würden auch noch paketfilter laufen.
Oder wie wäre es mit Bridging?
4-Port-Netzwerkkarten mit einem Embedded-Linux haben auch ihren Reiz, für mich persönlich scheiterts leider am Kostenfaktor.
Ach, es gäbe soviele Möglichkeiten ...
Das Problem stellt sich ja wie folgt da:
Er hat wohl 8 IP-Adressen, davon gehen (normalerweise) die Netz- und Broadkastadresse weg. Damit könnte er also alle 6 öffentlichen IP-Adressen auf dem externen INterface binden, und nach innen Nat(ten). Ist ja nicht sein Ziel, sondern die internen Rechner sollen ihre IP-Adressen bekommen. Eine Bridge setzt einen Router seitens des ISP voraus, der im Internet offiziell als Router zu diesen 8 IP-Adressen bekannt ist. Bei Kamp zB ist es so, daß die erste verwendbare IP-Adresse offiziell als Routeradresse eingetragen ist, diese also auf dem externen Interface gebunden wird, damit bleiben noch 5 übrig. Um da ein sauberes Routing hinzubekommen, wird entweder ein zweiter, interner Router benötigt, der über ein zB 10er Netz mit dem externen Router verbunden ist, oder man muß noch eine öffentliche IP-Adresse für den ersten Router opfern, die auf das interne Interface gebunden wird. An dieser Stelle setzen wir mal virtuell den Paketfilter auf. Da wir davon ausgehen, daß nur der sshd, und der auch nur auf dem internen Interface als Dienst erreichbar sein soll, sind die lokalen Regeln relativ vernachlässigbar fürs erste.
LAN=de.in.sub.netz
WELT=0.0.0.0/0
1.) Policy auf DROP, lieber extra erlauben, als etwas vergessen zu verbieten, aber vorher auch noch säubern, ach ja, und ohne Module gehts net
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
iptables -F
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
2.) Das Routing muß natürlich dem Kernel erklärt werden
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null
3.) Loopbackdevices werden aus Prinzip nicht restricted?
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
4.) INPUT von extern grundsätzlich verbieten, es sei denn, es betrifft Verbindungen, die schon existieren
iptables -A INPUT -s $LAN -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
3.) forwarden zu beschränken auf einen router macht nur Sinn, wenn er ein Gateway ist, und Clients darüber Kommunizieren könnten, obwohl sie es nicht sollten
iptables -A FORWARD -s $LAN -d $WELT -j ACCEPT
iptables -A FORWARD -s $WELT -d $LAN -j ACCEPT
4.) Was darf alles raus? Eigentlich doch alles, was der Sicherheit nicht wirklich dienlich ist, siehe Trojaner und Backdoors, aber ist im Endeffekt Ermessensfrage und Einstellungssache
Deswegen oben die Policy ACCEPT
5.) Der Rest wäre zB DNAT, schließlich gibt es immer Rechner, die DNS-Server abfragen wollen, die man nicht fragen will, oder VPN oder Telekomseiten sollen nicht angezeigt werden
iptables -A PREROUTING -t nat -p tcp -d irg.end.eine.ip -j DNAT --to-destination $ZIEL
So, ein Schnellkurs, der natürlich in keinster Weise hinsichtlich der Anwendung zu empfehlen wäre, denn wenn, sollte man es höchstens als Einstieg ansehen, und das war erbeten, richtig?
Werd schlau und Glücklich; Ängste, Sorgen, Nöte und Leiden, gehören hier herein ...
cu/2 iae
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.