• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Eigenes Gateway??

Sorehead

Newbie
Moin!

Hab da mal eine etwas seltsame Frage:

Ich will folgendes erreichen:

Internet -> Router -> Gateway(oder ähnliches) -> LAN
-> LAN
-> LAN usw

Nun das besondere: Die Rechner im LAN dürfen nur POP3 oder SSH benutzen, also dürfen nicht surfen usw.
Wie stellt man sowas ein?? Proxy will ich nicht, ich will nur bei den LAN-Rechnern ein Gateway eintragen.
Wenn es geht, kann man verschiedene Konfigurationen für spezielle rechner machen?? Wenn ja, wie??

Vielen Dank im voraus..
 

gaw

Hacker
Der Begriff Gateway und Router sind in dem Zusammenhang, wie du sie benutzt identisch.
Gateway bedeutet nach der ISO ein Rechner der bis in die 7.Schicht des ISO/OSI Netze verbindet. Da dieser Begriff jedoch schon früher genutzt wurde verstand man im 4 Schicht TCP/IP DoD-Modell einfach einen Rechner der sich in zwei Netzen zugleich befindet und IP-Pakete weitervermitteln kann, also dass was man üblicherweise als Router bezeichnet. Strenggenommen ist der Begriff Router in vielen Fällen auch nicht korrekt sondern es handelt sich um einen Forwarder, denn echte Routingentscheidungen also eine Wegewahl wird nicht getroffen. Das zu den Begriffen. Was also in der TCP/IP Netzwerkkonfiguration diverser Betriebssysteme als Gateway gemeint ist, ist nicht anderes als dass, was du als Router bezeichnest, über den die Pakete in deinem Netz ins Internet gelangen.

Um bestimmte Protokolle zu verbieten oder zu erlauben dient ein Paketfilter. Paketfilter sind ein Bestandteil einer Firewall. Unter Linux mit neueren Kernel ist iptables der bekannteste. Da es für einen Anfänger nicht unbedingt einfach ist iptables-Regeln selbst zu formulieren kann man fertige Firewallpakete nutzen, zum Beispiel die shore-Firewall oder die integrierte SuSE-Firewall. Du kannst auch eine spezielle Linux-Distribution für dein Router respektive Gateway nutzen die für einen solchen Einsatz vorgesehen sind, zum Beispiel den fli4 oder ipcop als frei Versionen. Es gibt natürlich auch kommerzielle Produkte wie die
SuSE-Firewall von CD oder Astaro um nur zwei zu nennen.

Vielleicht besitzt dein Router schon so eine Firewall. Auf vielen der sogenannten Hardwarerouter läuft im Flash ein Linux mit integrierter Firewall. Die lässt sich üblicherweise mit einem WEB-Tool bedienen. Wenn dir die Fähigkeit der Firewall auf dem Router nicht reichen, kannst du natürlich eine extra Firewall aufsetzen.

Um das zu erreichen, was du möchtest, solltest du alle anderen Ports bis auf ssh (Port 22) und pop3 (Port 110) sperren, das lässt sich in jeder Firewall einstellen. Port 80 dient dem http-Protokoll über dem gesurft wird. Um zu verhindern, das im Netz gesurft wird, reicht die Sperrung dieses Ports für ausgehende Verbindungen. Um aber auch gegen Angriffe möglicher Trojaner und anderes gewappnet zu sein, ist es immer besser alle Ports zu sperren, die man nicht benötigt.

mfg
gaw
 
OP
S

Sorehead

Newbie
Danke für die Klarstellung.

Aber dein Vorschalg ist nicht ganz das, was ich will.
Es ist ein Hardware-Router vorhanden. Einer seiner Ports soll in den neuen Gateway/Router, der das in das LAN routet.
Den Hardware-Router selbst will ich nicht weiter konfigurieren, da sollen auch die Ports offen bleiben.
Der neue Router/Gateway sollte nach meinen Idealvorstellungen für bestimmte interne IP-Bereiche alle Port ausser 22 und 110 sperren (für innen und aussen) und für einen anderen IP-Bereich, alles zulassen.
Es würde aber das generelle sperren auch genügen...
 

Dakuan

Hacker
Den Hardware-Router selbst will ich nicht weiter konfigurieren...
Wenn deine anderen PC's dort direkt angeschlossen sind, solltest du das aber tun. Es kostet ca. 3 Mausklicks und dann können die Clients direkt ins Internet, egal was dein Softwarerouter filtert. Ich mache das hier immer dann, wenn ich vergessen habe meinen Proxyserver im Schlafzimmer zu starten. Man kann sowas aber leicht über ne Sperre der MAC Adr. verhindern.
Dakuan
 
OP
S

Sorehead

Newbie
Dann lass mich das anders formulieren:

Ich kann den Hardware-Router nicht konfigurieren, weil ich nicht ran bzw rauf komme. Ich hab nur eine Leitung zur Verfügung.

Und nur mal zur Info: Diese Leitung ist für ne LAN-Party, d.h. es bringt nix alles aufzumachen, dann hat keiner was davon. Dewegen will ich das beschränken..
 

gaw

Hacker
Sorehead schrieb:
Dann lass mich das anders formulieren:

Ich kann den Hardware-Router nicht konfigurieren, weil ich nicht ran bzw rauf komme. Ich hab nur eine Leitung zur Verfügung.

Und nur mal zur Info: Diese Leitung ist für ne LAN-Party, d.h. es bringt nix alles aufzumachen, dann hat keiner was davon. Dewegen will ich das beschränken..

Dann sag das doch sofort. dann weiß, man auch was du willst. Also Linux aufsetzen, dann eine Firewall installieren. Mit iptables kannst du die Regeln. Zunächst musst du das Forwarding aktivieren, NAT brauchst du wahrscheinlich nicht, ich gehe davon aus du bekommst vom Router eine private Adresse.

Forwarding solltest du aktivieren:
echo "1" > /proc/sys/net/ipv4/ip_forward

Danach setzt man die Firewall im Script auf (hier eine sehr einfache wo noch vieles fehlt), definiert Ausgangsbedingungen und schreibt seine Regeln, zum Beispiel so:
----------------------------------schnipp------------------
#!/bin/bash
# Zunächst definiert man Variable
# IPTABLES; INTERFACE_INT, und
# INTERFACE_EXT sind Variable die am Anfang
# des Scriptes initialisiert werden, dass ist
# empfehlenswert, man muss dann nicht alle
# Regeln ändern, wen sich die Schnittstellen
# ändern:

IPTABLES="/usr/sbin/iptables"
INTERFACE_INT="eth0"
INTERFACE_EXT="eth1"
PORTS_HIGH="1024:65535"

# Forwarding aktivieren
echo "1" > /proc/sys/net/ipv4/ip_forward


# Alles verbieten:

$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# Alle vorherigen Regeln zurücksetzen:
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X

#Lokale Prozesse erlauben:
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A INPUT -i lo -j ACCEPT

# Na, und dann fängt man an Regeln zu
# formulieren, wie diese:


$IPTABLES -A FORWARD -i $INTERFACE_INT -o $INTERFACE_EXT -s 192.168.1.0/255.255.255.0 \
-m state \
--state NEW,ESTABLISHED,RELATED -p TCP --sport $PORTS_HIGH \
--dport 110 -j ACCEPT

$IPTABLES -A FORWARD -i $INTERFACE_EXT -o $INTERFACE_INT -d 192.168.1.0/255.255.255.0 \
-m state \
--state ESTABLISHED,RELATED -p TCP --sport 110 \
--dport $PORTS_HIGH -j ACCEPT


# Diese Regel arbeitet mit statefull inspection und
# sagt, alle Pakete einschließlich der
# Verbindungsaufbau die über die interne
# Schnittstelle hereinkommen und über die
# externe Schnittstelle herausgehen und die vom
# Netz 192.168.1.0 stammen akzepziert werden,
# dass heißt sie dürfen den Filter passieren. Mit
# anderen Worten von innen darf man nach
# aussen pop3 Anfragen stellen.



# Zum Schluss wird das was nicht erlaubt wird
# verboten:

$IPTABLES -A INPUT -j DROP
$IPTABLES -A FORWARD -j DROP
$IPTABLES -A OUTPUT -j DROP


-------------------------schnipp--------------------


Wenn du das versteht und dir das nicht so schwierig erscheint, würde ich dir empfehlen ein eigenes Script zu schreiben, da bist du sehr flexibel. Ansonsten solltest du besser eine fertige Firewall nehmen.

mfG
gaw
 
OP
S

Sorehead

Newbie
gaw schrieb:
Forwarding solltest du aktivieren:
echo "1" > /proc/sys/net/ipv4/ip_forward

Danach setzt man die Firewall im Script auf definierte Ausgangsbedingungen zum Beispiel so:

# Alles verbieten:

$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# Alle vorherigen Regeln zurücksetzen:
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X


Na, und dann fängt man an Regeln zu formulieren, wie diese:


$IPTABLES -A FORWARD -i $INTERFACE_INT -o $INTERFACE_EXT -s 192.168.1.0/24 \
-m state \
--state NEW,ESTABLISHED,RELATED -p TCP --sport $PORTS_HIGH \
--dport 110 -j ACCEPT

$IPTABLES -A FORWARD -i $INTERFACE_EXT -o $INTERFACE_INT -d 192.168.1.0/24 \
-m state \
--state ESTABLISHED,RELATED -p TCP --sport 110 \
--dport $PORTS_HIGH -j ACCEPT


Diese Regel arbeitet mit statefull inspection und sagt, alle Pakete einschließlich der Verbindungsaufbau die über die interne Schnittstelle hereinkommen und über die externe Schnittstelle herausgehen und die vom Netz 192.168.1.0 stammen werden akzepziert, dass heißt dürfen den Filter passieren.
IPTABLES; INTERFACE_INT, und INTERFACE_EXT sind Variable die am Anfang des Scriptes initialisiert werden, dass ist empfehlenswert, man muss dann nicht alle Regeln ändern.
IPTABLES=/usr/sbin/iptables
INTERFACE_INT=eth0 (zum Beispiel)
INTERFACE_EXT=eth1 (zum Beispiel)

Wenn du das versteht, würde ich dir empfehlen ein eigenes Script zu schreiben, ansonsten solltest du besser eine fertige Firewall nehmen.

mfG
gaw

OK, das habe ich soweit verstanden.. Bis auf eins: was bedeutet die "/24" hinter der IP-Adresse??
Aber es müsste doch auch ohne steful inspection gehn, oder??
 

gaw

Hacker
Normalerweise bedeutet das die Anzahl der Netzwerkbits, also eine alternative Schreibweise für die Netzwerkmaske. Ich bin mir nicht sicher ob iptables mit beiden Schreibweisen umgehen kann, besser du benutzt die 255.255.255.0, die funktioniert garantiert. Ich hab das ganze noch ein wenig korrigiert, lokale Prozesse solltest du erlauben. Eigentlich gehören noch ein paar andere Sachen mit rein, aber für eine kleine LAN-Party ist das vielleicht nicht so wichtig. Wichtig ist, dass du zum Schluss alles dicht machst. Regeln zum Loggen habe ich weggelassen, ich nehme nicht dan, dass du das möchtest.

Mit der Subnetzmaske kannst du natürlich auch spielen und Subnetze bilden, den einen erlaubst du auf Port XXXX zu spielen den anderen nicht. Aber ein wenig Arbeit will ich dir auch lassen. Viel Spass beim Probieren.

ps: Ja es geht auch ohne stateful inspection,
dann lass einfach so etwas wie das "-m state --state ESTABLISHED,RELATED" weg. Es ist aber etwas unsicherer.

mfg
gaw
 
Oben