Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables portforwarding
Ist das richtig damit???
iptables -t nat -A PREROUTING -i eth1 -p protocol -d ip_address_of_eth1 --dport original_port_number -j DNAT --to destination_ip_address:destination_port_number
Weiterleitung der Pakete:
iptables -A FORWARD -i eth1 -o eth0 -p protocol -d destination_ip_address --dport destination_port_number -j ACCEPT
Blos was mach ich wenn ich mehrere Rechner hinter meiner Firewall habe?
Und alle nutzen zB den Port 80???
Wie kann ich dann das Portforwarding an mehrere Rechner machen?
Das ist nicht möglich !
Der Port 80 ist bei dir ja dazu da, dass jemand auf Port 80 auf deinem Router zugreifen kann. Wenn du nun aber Portforwarding für Port 80 aktivierst, ist es nur logisch, dass du nur einen anderen Rechner für den Port 80 nehmen kannst.
Du bekommst von deinem ISP ja ne externe IP zugewiesen. Auf dieser IP kann jeder Port maximal einmal vorhanden sein. Sonst ist ja die Eindeutigkeit der Zuweisung nicht mehr gegeben.
Willst du auf mehreren PCs hinter einem Router zwei www-Server anbieten, so musst du dir 2 IPs von deinem ISP zuweisen lassen (also 2mal anmelden, 2mal zahlen, etc).
Das gilt übrigens nicht nur für Port 80 !
Und nochwas: Du brauchst Port 80 ja nicht generell freigeben, wenn er von ausser nicht erreichbar sein soll (wenn du also keine eigene Homepage im Netz anbietest).
MfG Markus
Die Webserver haben alle eine feste IP die nach aussen sichtbar ist.
Sprich sie gehen mit dieser IP ins Internet und sind mit dieser IP auch erreichbar!
es muss doch möglich sein das die Firewall die Pakete filtert (zB nur TCP-Pakete die über den Port 80, 20 ... kommen, reinläßt) und dann einfach weiter durchläßt und die Pakete die IPs (Webserver) erreichen.
Klar geht das, solange die Datenpakete nur auf jeweils EINEN Rechner weitergeleitet werden !
MfG Markus
@Duffy1905
Du müsstest genauere Angaben machen, punkto Netzwerktopologie.
Hast Du z.B 8 IPs vom Provider mit einer Netmask 255.255.255.248, und alle Rechner stehen in einem Subnet => d.h die Firewall brauch nur routen
oder
Hast Du z.B meherer IPs die Webserver stehen aber in einem eigenen Subnet mit privaten IPs => dann brauchst Du SNAT/DNAT
@Da.Bull
Mit SNAT/DNAT kannst Du auch Pakete, die an einen Rechner gehen auf mehrere weiterleiten lassen, zumindest versteh ich das so (hab's noch nicht versucht):
## Zieladresse zu 5.6.7.8, 5.6.7.9 oder 5.6.7.10 aendern
# iptables -t nat -A PREROUTING -i eth1 -j DNAT --to 5.6.7.8-5.6.7.10
... loadbalancing ala round-robin für arme ;)
Grüße
Manx
ja klar sollen die Pakete immer nur auf einen Rechner.
Mal der mal der, wo halt grad das Paket hinsoll.
die pakete sollen durch die Firewall, werden dort eventuell gefiltert.
Die die durchkommen sehen ja dann anhand der IP an welchen Webserver sie sollen.
*ich komm mir grad sau dumm vor*
Hi!
Vielleicht hast Du ja mein obiges Posting übersehen (der F5-Effekt ;) ).
Hast Du jetzt einen Router UND eine Firewall, oder nur EINE Linuxbox als Router/Firewall/Gateway?
Grüße
Manx
also ... wenn du mehere ip's an deinem linux router hängen hast dann machst du eben 2 regeln ...
eine für destination ip 1 und eine für die zweite ... mit den entsprecheneden redirects ...
hast du ja auch selber geschrieben :
Die die durchkommen sehen ja dann anhand der IP an welchen Webserver sie sollen.
Natuerlich muss dazu am extern Interface der FW eine Subnetmask haengen welche auch dein subnet vertritt ...
Dies ist aber auch dann der Fall wenn deine FW hinter einem Router vom ISP steht ...
Klaro ? :D
Original geschrieben von Nuno
Dies ist aber auch dann der Fall wenn deine FW hinter einem Router vom ISP steht ...
Hi!
Wenn er einen Router und eine Firewall betreibt, kann sich die Sache u.U verkomplizieren.
z.B
Er bekommt vom Provider einen IP Range mit 8 IPs (Subnet 255.255.255.248) und den Router dazu (kommt häufig vor), der vom ISP verwaltet wird!
In diesem Fall kannst Du Dir direkten Zugriff mit Routing und offiziellen IPs auf die Webserver über eine Firewall aufzeichnen :D
Hat er den Router selber zu konfigurieren, wird's auch etwas komplizierter.
Da es sich um offizielle IPs handelt, und diese knapp sind, wird er einmal eine Point-to-Point Netzwerk zw. Router und FW einrichten (und am Router die korrekten Routen eintragen müssen).
Grüße
Manx
@[WCM]Manx
"Hast Du z.B 8 IPs vom Provider mit einer Netmask 255.255.255.248, und alle Rechner stehen in einem Subnet => d.h die Firewall brauch nur routen "
so sieht das ungefähr bei mir aus!
Und wie lass ich die Firewall nur routen???
hier vielleicht mal mein Script:
#!/bin/sh
### Alle vorhandenen Regelketten werden gelöscht
iptables -F
iptables -t nat -F
iptables -X
### Variablen für unsere Interfaces
DEV_EXT=eth0
DEV_LAN=eth1
### Alles was von Aussen kommt oder rausgeht wird verworfen
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
### Loopback-Interface aktivieren
iptables -A OUTPUT -o lo -j ACCEPT
iptables A INPUT -i lo -j ACCEPT
### Aktivieren von Forwarding und Masquerading
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables –t nat –A Postrouting –o $DEV_EXT –j MASQUERADE
### Die benutzerdefinierten Chains werden angelegt
iptables -N MY_REJECT
iptables -N MY_DROP
### MY_REJECT füllen
iptables -A MY_REJECT -p tcp -m limit 7200/h -j LOG --log prefix "REJECT TCP"
iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
iptables -A MY_REJECT -p udp -m limit 7200/h - LOG --log prefix "REJECT UDP"
iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A MY_REJECT -p icmp -m limit 7200/h -j LOG --log prefix "DROP ICMP"
iptables -A MY_REJECT -p icmp -j ACCEPT
iptables -A MY_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER"
iptables -A MY_REJECT -j REJECT --reject-with icmp-port-unreachable
### MY_DROP-CHAIN
iptables -A MY_DROP -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP"
iptables -A MY_DROP -j DROP
### Alle verworfenen Packete protokollieren
iptables -A INPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "INPUT INVALID"
iptables -A OUTPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "OUTPUT INVALID"
### Korrupte Pakete zurueckweisen
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
### ausgehende Pakete bei bereits aufgebauter Verbindung erlauben
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
### HTTP:
iptables -A INPUT -i $DEV_EXT -o $DEV_LAN -m state --state NEW -p tcp --dport 80 -j ACCEPT
### HTTPS:
iptables -A INPUT -i $DEV_EXT -o $DEV_LAN -m state --state NEW -p tcp --dport 443 -j ACCEPT
### FTP:
iptables -A INPUT -i $DEV_EXT -o $DEV_LAN -m state --state NEW -p tcp --dport 21 -j ACCEPT
### SSH:
iptables -A INPUT -i $DEV_EXT -o $DEV_LAN -m state --state NEW -p tcp --dport 22 -j ACCEPT
### Rückkanal: eingehende Pakete zu einer bestehenden Verbindung
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW,INVALID -j MY_REJECT
Hi!
Du hast keine einzige FORWARD Regel, nur die Default Policy auf drop, da kann nix durch!
Außerdem fällt mir auf die Schnelle auf, dass INPUT Chain und -i UND -o NICHT zusammenpassen.
So in die Richtung solltest Du zum Ziel kommen:
iptables -A FORWARD -i $DEV_EXT -o $DEV_LAN -d $IP_des_WEBSERVER_1 -m state NEW -p TCP --dport 80 -j ACCEPT
Soll Deine Firewall unsichtbar sein, gibt's keine INPUT-Regeln die (von außen) Sachen erlauben.
Grüße
Manx
sry, bin davon ausgegangen, dass du nur EINE IP "richtung" Internet hast...
MfG Markus
ok also soll ich die Input chain komplett löschen???
Und für jeden Port den ich in meiner INPUT chain freigebe nur in der Forward Chain
freigeben (so wie du es angegeben hast)?
du hast geschrieben Webserver 1:
iptables -A FORWARD -i $DEV_EXT -o $DEV_LAN -d $141.52.X.Y1 -m state NEW -p TCP --dport 80 -j ACCEPT
für den Webserver 2:
iptables -A FORWARD -i $DEV_EXT -o $DEV_LAN -d $141.52.X.Y2 -m state NEW -p TCP --dport 80 -j ACCEPT
kann ich das den so machen?
Wenn du mehrere IP's hast hast du im Normalfall auch eine Standleitung mit Router ...
Wir haben Router welche wir selber verwalten koennen und welche die der ISP verwaltet.
Aber immer wird dein Subnet welches du bezogen hast durchgeroutet. Paketfilterung auf den Kundenroutern machen die ISP's sehr sehr selten.
Und der Router dient meist nur als Gateway fuer die FW ...
das is so: ich arbeite in nem Forschungszentrum.
Das heißt ca 3500 Mitarbeiter. Wir haben eine
Hauptabteilung für Informations und kommunikationstechnik.
Die kümmern sich um den großen Router und um die Zentrale Firewall.
Meine Firewall ist aber nur für mein Institut!!!
Hi!
Am besten ausprobieren und die Logs überwachen.
Denn da fehlt dann immer was, aber Du siehst das dann ja im Logfile, was verworfen wird.
Am besten am Schluss vorest eine Regel, die alles logt, bevor gedropt wird.
Fehlen tut zum Beispiel DNS erlauben (für die Firewall selber und die Clients dahinter) usw.
Grüße
Manx
PS: Du kannst ja an vorhandenen Scipts lernen und versuchen zu verstehen.
harry's Server hat einen Web-Generator
auf www.linuxguruz.org => iptables findest Du eine Menge Scripts
Mir gefällt das Script der Sentry-firewall ganz gut:
http://www.sentry.net/~obsid/IPTables/rc.scripts.dir/current/rc.firewall.iptables.dual
So hab mir eins gebastelt, und ich glaube ich habs endlich ein bißchen kapiert.
#!/bin/sh
################################################## ################## Erstellt von: Sascha Rech
# Datum: April 2003
################################################## #################
#Alle vorhandenen Regelketten werden gelöscht
iptables -F
iptables -t nat -F
iptables -X
INET=eth0
LAN=eth1
tcp_port=“21 22 80 443“
udp_port=“53“
#Laden der Iptables Module
/sbin/depmod -a
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_MASQUERADE
#IP-Forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
####################################
#Alles erst mal verwerfen
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#Loopback
iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT
iptables –N lokal_chain
iptables –N LAN_IN
iptables –N INET_IN
iptables –N LAN_OUT
iptables –N INET_OUT
####################################
# INPUT-CHAIN
iptables –A INPUT –i $LAN –j LAN_IN
iptables –A INPUT –i $INET –j INET_IN
####################################
# FORWARD-CHAIN
#HTTP
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 80 -d 141.52.X.98 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 80 -d 141.52.X.99 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 80 -d 141.52.X.100 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 80 -d 141.52.X.101 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#HTTPS
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 443 -d 141.52.X.98 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 443 -d 141.52.X.99 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 443 -d 141.52.X.100 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 443 -d 141.52.X.101 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#FTP
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 21 -d 141.52.X.98 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 21 -d 141.52.X.99 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 21 -d 141.52.X.100 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 21 -d 141.52.X.101 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#SSH
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 22 -d 141.52.X.98 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 22 -d 141.52.X.99 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 22 -d 141.52.X.100 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i $INET -o $LAN -p tcp --dport 22 -d 141.52.X.101 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
####################################
#OUTPUT-CHAIN
iptables -A OUTPUT -o $LAN -j LAN_OUT
iptables -A OUTPUT -o $INET -j INET_OUT
################################################## #################
####################################
# LAN_IN
iptables -I LAN_IN -i $LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A LAN_IN -i $LAN -j ACCEPT
# LAN_OUT
iptables -I LAN_OUT -o $LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A LAN_OUT -o $LAN -j ACCEPT
####################################
# INET_IN
iptables –A INET_IN –i $INET –p tcp --dport $tcp_port –j ACCEPT
iptables –A INET_IN –i $INET –p icmp –s 0/0 --icmp-type 8 –j ACCEPT
iptables –A INET_IN –i $INET –p icmp –s 0/0 --icmp-type 11 –j ACCEPT
####################################
# INET_OUT
iptables –A INET_OUT –o $INET –p tcp --dport $tcp_port –j ACCEPT
iptables –A INET_OUT –o $INET –p udp --dport $udp_port –j ACCEPT
iptaböes –A INET_OUT –o $INET –j ACCEPT
####################################
# LOGS
$iptables -A INPUT -j LOG --log-prefix FIRE_ -m limit --limit 2 --limit-burst 4
$iptables -A FORWARD -j LOG --log-prefix FIRE_ -m limit --limit 2 --limit-burst 4
$iptables -A OUTPUT -j LOG --log-prefix FIRE_ -m limit --limit 2 --limit-burst 4
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.