PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : port 80 weiter/umleitung



hjn
07.02.03, 17:57
hallo zusammen

ich habe einen rechner in eimem netzwerk mit einer netzwerkkarte
auf dem rechner wird nur über samba zugegriefen

ich möchte nun, wenn auf port 80 (http) zugreift die anfrage auf einem anderen rechner im netz (auch port 80) weiter/umgeleitet wird.

geht das und wie ?

das folgende firewall-shript ist aktiv aber leider läuft der nat block nicht.
der rechner hat die ip 192.168.10.30 und soll nach 192.168.10.20 weiter/umgeleitet werden.

---------------------------------------------------------------------------------------------------------------------

modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp
modprobe iptable_nat

# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Default-Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# MY_REJECT-Chain
iptables -N MY_REJECT

# MY_REJECT fuellen
iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A MY_REJECT -p icmp -j DROP
iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable

# MY_DROP-Chain
iptables -N MY_DROP
iptables -A MY_DROP -j DROP

# Korrupte Pakete zurueckweisen
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP

# Stealth Scans etc. DROPpen
# Keine Flags gesetzt
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP

# SYN und FIN gesetzt
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP

# SYN und RST gleichzeitig gesetzt
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP

# FIN und RST gleichzeitig gesetzt
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP

# FIN ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

# PSH ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP

# URG ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP

# Loopback-Netzwerk-Kommunikation zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Connection-Tracking aktivieren
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Ping (nur zum Testen)
#iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
#iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

# Webmin (nur zum Testen)
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 10000 -j ACCEPT

# HTTP (nur zum Testen)
#iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 80 -j ACCEPT

# IP-Adresse des LAN-Interfaces ermitteln (192.168.10.30)
#LAN_IP=$(ifconfig eth0 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1)

# NAT fuer HTTP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.20
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 80 -j SNAT --to-source 192.168.10.30
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 192.168.10.20 --dport 80 -j ACCEPT

# SMB
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 137 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 138 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 137 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 138 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 139 -j ACCEPT

# Default-Policies mit REJECT
iptables -A INPUT -j MY_REJECT
iptables -A OUTPUT -j MY_REJECT

---------------------------------------------------------------------------------------------------------------------

schon mal besten dank
hjn

HangLoose
07.02.03, 22:40
hi

mir ist dein netzaufbau noch nicht ganz klar. das script läuft das auf einem router oder ist das das script vom server (192.168.10.30 )?

warum läßt du die anfragen nicht gleich vom router nach 192.168.10.20 weiterleiten?


Gruß HL

hjn
08.02.03, 09:00
hallo

auf die frage von "HangLoose "

der rechner ist in einem netzwerk und wird nur als ein reiner image-backup rechner verwendet.
damit innerhalb des netzwerkes keiner den rechner angreift läuft der firewall (ich hoffe mit maximaler sicherheit)
wenn nun jemand in seinem explorer oder .... die ip "192.168.10.30" des rechner angibt, soll
der interne webserver mit der ip "192.168.10.20" angesprochen und angezeigt werden werden.

mfg
hjn

HangLoose
08.02.03, 12:21
moin

an und für sich sollte die von dir verwendete DNAT regel für diesen zweck ausreichend sein

# NAT fuer HTTP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.20
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 80 -j SNAT --to-source 192.168.10.30
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 192.168.10.20 --dport 80 -j ACCEPT


kommentiere die anderen beiden zeilen mal aus und probier es dann nochmal.


Gruß HL

Jinto
08.02.03, 15:26
Die FORWARD Zeile wird auf jeden Fall benötigt, da default auf DROP steht. Allerdings muss sie um ESTABLISHED(,RELATED) ergänzt werden.

HTH

hjn
08.02.03, 16:47
hallo

auf die antword von "HangLoose"
geht leider nicht


auf die antword von "Jinto"
wenn das so gemeint ist

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.20
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 80 -j SNAT --to-source 192.168.10.30
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -p tcp -d 192.168.10.20 --dport 80 -j ACCEPT

geht leider auch nicht

gruß
hjn

Jinto
08.02.03, 17:24
Nö. Eigentlich meinte ich:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.20
iptables -A FORWARD -i eth0 -m state --state NEW,ESTABLISHED,RELATED -p tcp -d 192.168.10.20 --dport 80 -j ACCEPT

Allerdings weiss ich nicht genau, was du machen willst und wo der Sinn des ganzen liegt. Bei Betrachtung der o. g. Zeilen und versuch das auf dein Netzwerk abzubilden, muss ich sagen: das funktioniert nicht. Dann schon eher deine Zeilen so:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.20
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 80 -j SNAT --to-source 192.168.10.30
iptables -A FORWARD -i eth0 -m state --state NEW,ESTABLISHED,RELATED -p tcp -d 192.168.10.20 --dport 80 -j ACCEPT

sinn macht es IMHO trotzdem nicht.

hjn
09.02.03, 14:59
hallo

auf die antword von "Jinto"

leider hatte ich damit auch kein erfolg


was ich damit bezwecke ist folgendes :

das netzwerk befindet sich in einem großen autohaus in dem natürlich seht viele
computer stehen.
es gibt mittlerweile kein arbeitsplatz ohne computer. selbst in der werkstatt stehen
auf rollwagen mehrere computer. selbst die verkaufsräume innen und außen sind
mit wlan überflutet.
kommunikation und information total.
die computer sind dabei nicht benutzer sondern gruppen zugeordnet.
nun haben manche benutzer ein bisschen und andere etwas mehr erfahrung.
da alle ins internet dürfen (macht ja auch sinn, information ist alles) wird automatisch von den benutzern auch ein bisschen experimentiert.
mit squidquard werden diverse seiten geblockt und auf interne seiten umgeleitet auf der
freundlich hingewiesen wird das man was verbotenes gemacht hat.
und das selbe soll diese umleitung/weiterleitung bezwecken.
nun könnte man sagen, das ganze verführt zum hacken.
ich glaube aber nicht (ausnahmen usw.) das sich in der z.b. werkstatt oder im lager hacker sich rumtreiben.
eine kontrolle über logfiles usw. ist ja kein broblem, datenschutzrechtlich aber ein heises thema
aber nun schluss damit es sollte nur eine kleine erklärung sein (nicht vollständig)


mittlerweile habe ich ein bisschen experimentiert und irgendwie läuft es
und zwar habe ich folgendes gemacht

auskommentiert
# iptables -P FORWARD DROP

# iptables -A FORWARD -i eth0 -m state --state NEW,ESTABLISHED,RELATED -p tcp -d 192.168.10.20 --dport 80 -j ACCEPT

eingefügt
echo 1 > /proc/sys/net/ipv4/ip_forward

meine schlussfolgerung
irgendetwas mit FORWARD stimmt nicht.

wenn ich es so belasse was für vor/nachteile habe ich ?

gruß
hjn

Jinto
09.02.03, 18:03
echo 1 > /proc/sys/net/ipv4/ip_forward Also diese Zeile benötigts du bei forward immer, ich bin davon ausgegangen, dass du die beirets hast.

Aufgrund des fehlenden DROP können die Mitarbeiter nun auf alle Dienste zugreifen (auch Filesharing, etc.)

HTH

hjn
09.02.03, 18:49
hallo

aber was soll ich machen ?
wenn ich die beiden zeilen wieder einsetze läuft es ja nicht mehr

iptables -P FORWARD DROP

iptables -A FORWARD -i eth0 -m state --state NEW,ESTABLISHED,RELATED -p tcp -d 192.168.10.20 --dport 80 -j ACCEPT

gruß
hjn

Jinto
09.02.03, 19:01
Also ich muss sagen, ich versteh immer noch nicht ganz was du da machen willst. Mit nur einer Netzwerkkarte klingt das fast als könnten die Clients auch direkt auf den Webserver zugreifen.

Kannst du dazu mal eine kleine ASCII-Netzwerkgrafik machen, damit man sieht was wohin gehen soll und welche Netzwerkdevices dazu Verwendung finden (dazu musst du die Code Funktion des Boards verwenden, da ansonsten die Leerzeichen gefiltert werden).

hjn
09.02.03, 19:43
hallo

der rechner ist ein ganz normaler rechner in einem netzwerk
(win nt-domain netz dhcp dns wins usw.)
der rechner hat nur eine feste ip bekommen (ist einfacher)
der rechner hat sehr viel plattenplatz und alle benutzer können darauf zugreifen (samba)
um ihre daten abzulegen (an dem rechner befindet sich ein streamer)
sozusagen ein kleiner backup-server
da ich es einfacher, sicherer und billiger sah wurde linux verwendet
ein webserver (nur intern nicht für extern) gibt es auch in dem netzwerk nur für interne informationen (auch linux)
und es gibt natürlich auch einen rechner für die außenwelt internet (auch linux)
und die vielen vielen user

also es gibt (jeweils ein rechner mit fester ip)

1. win nt/server
2. webserver
3. router/proxy-server (2 netzwerkkarten dsl)
4. backup-server (mit dem problem)

alle rechner an einem switch und natürlich die benutzer noch

wird auf 4. backup-server per port 80 zugegriffen sollen die seiten von 2. webserver angezeigt werden.


gruß
hjn

Jinto
09.02.03, 20:14
Ok, versuch mal folgendes:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.20
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 80 -j SNAT --to-source 192.168.10.30
iptables -A FORWARD -i eth0 -m state --state NEW,ESTABLISHED,RELATED -p tcp -d 192.168.10.20 --dport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -p tcp -s 192.168.10.20 --dport 80 -j ACCEPT

Ich hatte in der forward Zeile die explizit gestzte Adresse übersehen.

HTH

DerLipper[TuX]
09.02.03, 20:24
wieso baust du nicht einfach nen referrer auf http://ip.vom.richtigen.server ein in die index.html?

hjn
10.02.03, 18:23
hallo

die beiden "FORWARD" zeilen haben auch nichts gebracht


ich habe nun diese zeile eingefügt

# Connection-Tracking aktivieren
...
...
iptables -A FORWARD -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

und in dem "NAT block" alle "FORWARD" zeilen gelöscht
nur noch "PREROUTING und POSTROUTING" vorhanden
und es läuft wieder mit "iptables -P FORWARD DROP"

brauche ich die "FORWARD" zeilen nicht ?

frage ist jetzt immernoch die sicherheit vorhanden oder .....

gruß
hjn

Jinto
10.02.03, 19:00
Wundert mich, dass es funktioniert (mehr kann ich ohne es zu testen leider nicht sagen).
Zudem hab ich $§%% mal wieder einen Fehler in meinen Regeln gesehen.

iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -p tcp -s 192.168.10.20 --dport 80 -j ACCEPT

muss heissen:
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -p tcp -s 192.168.10.20 --sport 80 -j ACCEPT

bp
10.02.03, 21:04
iptables -A FORWARD -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

ist schon klar das es mit dieser zeile geht, denn damit erlaubst du allen paketen die weiterleitung. in punkto sicherheit ist zu sagen, das du damit die weiterleitung von wirklich allen paketen erlaubst und nicht nur die an port 80.

ich würde folgendermaßen vorgehen:

#NAT für http
#zuerst das weiterleiten von paketen an port 80 erlauben
iptables -A FORWARD -j ACCEPT -i eth0 -p tcp \
--dport 80 -m state --state NEW,ESTABLISHED,RELATED

#diese zeile brauchst du damit pakete von 192.168.10.20 rechner wieder zurück zum client dürfen
iptables -A FORWARD -j ACCEPT -o eth0 -p tcp \
--sport 80 -m state --state ESTABLISHED,RELATED

#jetzt die NAT regel für das umschreiben der pakete an 192.168.10.30 port 80 auf 192.168.10.20 port 80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.10.20

die SNAT regel brauchst du eigentlich gar nicht den du willst ja keine quellen verändern, wie z.B. alle pakete vom client. 192.168.10.35 sollen so aussehen wie vom rechner 192.168.10.30.
probiere es doch mal so... müsste klappen.
ich denke das jinto's lösung (zuerst umschreiben und dann forwarden) mit dem korrigiertem sport 80 auch gehen müsste zumindest kann ich keinen fehler darin finden.

hjn
10.02.03, 21:52
hallo und besten dank nochmal

ich glaube es läuft nun

die zeile (FORWARD) im
"# Connection-Tracking aktivieren" block
wieder raus (der sicherheit wegen)

und --dport 80 in --sport 80

das muß es wohl gewesen sein


an bp
die "SNAT regel" muß rein sonst läuft es nicht

an alle noch einmal besten dank
hjn