Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
iptables und eine DMZ-IP, nicht interface
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page 1, 2  Next  
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
benjamin200
Veteran
Veteran


Joined: 01 Feb 2004
Posts: 1426
Location: DE Munich

PostPosted: Tue Jun 14, 2005 4:58 pm    Post subject: iptables und eine DMZ-IP, nicht interface Reply with quote

Ich möchte heute Abend/Nacht meinen Hardware Router, testweise, gegen einen Gentoo Router ersetzen. Als kleine Hilfe nehme ich das HowTo "Gentoo Home Router Guide" von gentoo.org

Gibt es eine Möglichkeit eine IP des privaten / lokalen Netzes in die DMZ zu nehmen, so das alle Ports offen sind? Ich möchte kein physikalisches Interface dafür verwenden, zudem ich wie die meisten von uns zuhause nur einen L2-Switch habe.

Anregungen, Tips und Code willkommen :)


Danke im voraus.


Gruß,
Benjamin
_________________
Gentoo Linux Stage1 / Kernel 2.6.18
AMD Athlon64 3500+ on Asus A8N-E / 1024 MB DDR-RAM / ATI X700 PCIe
Take LINUX and forget Blue Screens


Last edited by benjamin200 on Mon Jun 20, 2005 1:31 pm; edited 1 time in total
Back to top
View user's profile Send private message
slick
Bodhisattva
Bodhisattva


Joined: 20 Apr 2003
Posts: 3495

PostPosted: Wed Jun 15, 2005 6:15 am    Post subject: Reply with quote

Hmm... also ich verstehe die Frage noch nicht ganz. Was für eine DMZ hast Du? So eine richtige wie z.B. auf dem Bild hier? Also so wie ich das verstanden habe hast Du nur einen Router, auf einen Seite hängt INet, auf der anderen LAN, korrekt? So und Du möchtest jetzt das ein PC aus dem LAN so zu erreichen wäre, als würde es eine richtige DMZ sein (wie auf dem Bild) und der Rechner liegt darin (und ohne eine neue NIC einzubauen)?

Also wenn dem so ist, dann machst Du ja vermutlich NAT nach außen. Traffic von außen läßt Du nur zu wenn er von drinnen angestoßen wurde:
Auszug:
Code:
iptables -A INPUT -i $EXTERN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $EXTERN -o $INTERN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXTERN -j MASQUERADE

Dann möchtest Du z.B. einen Webserver im LAN betreiben der von extern erreichbar ist:
Code:
iptables -t nat -A PREROUTING  -i $EXTERN -p tcp --dport 80 -m state --state NEW -j DNAT --to $IP-INTERN
iptables -A FORWARD -i $EXTERN -o $INTERN -p tcp -d $IP-INTERN --dport 80 -m state --state NEW -j ACCEPT

Dieses "alle Ports offen" verwirrt mich noch etwas. Du könntest da z.B. alles von von extern kommt mit --state NEW auf einen Rechner umleiten. Das wäre dann aber so als würde dieser Rechner direkt am (externen) Netz hängen, von daher paßt das dann mit der "DMZ" nicht mehr so recht.
Back to top
View user's profile Send private message
benjamin200
Veteran
Veteran


Joined: 01 Feb 2004
Posts: 1426
Location: DE Munich

PostPosted: Wed Jun 15, 2005 6:57 am    Post subject: Reply with quote

Quote:

Hmm... also ich verstehe die Frage noch nicht ganz. Was für eine DMZ hast Du? So eine richtige wie z.B. auf dem Bild hier?

Morgen Slick,
nein so ein Szenario meine ich nicht.

Quote:

Dieses "alle Ports offen" verwirrt mich noch etwas. Du könntest da z.B. alles von von extern kommt mit --state NEW auf einen Rechner umleiten. Das wäre dann aber so als würde dieser Rechner direkt am (externen) Netz hängen, von daher paßt das dann mit der "DMZ" nicht mehr so recht.

Ich würde es gern erläutern. Eine echte Firewall besitzt ja in der Regel drei Schnittstellen. Externes, Lokales und ein DMZ Interface. Jedes dieser physikalischen Interfaces liegt in einem andren Subnetz und wird durch Policies geschützt.

Wenn du die billigen SOHO-Router kennst, Netgear, SMC etc, kannst hast du nur 2 Schnittstellen, Intern (LAN) und Extern (WAN). Hier kann fast immer eine IP als DMZ angegeben werden, wo Programme die mehrere Ports dynamisch öffnen auch mit diesem Soho Router laufen. Ich wollte einfach mal klären, ob es möglich ist eine sollche DMZ mit iptables zu erstellen?

Hoffe ich habs einigermaßen gut erklären können :)


Quote:

Auszug:
Code:
iptables -A INPUT -i $EXTERN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $EXTERN -o $INTERN -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXTERN -j MASQUERADE

Dann möchtest Du z.B. einen Webserver im LAN betreiben der von extern erreichbar ist:
Code:
iptables -t nat -A PREROUTING -i $EXTERN -p tcp --dport 80 -m state --state NEW -j DNAT --to $IP-INTERN
iptables -A FORWARD -i $EXTERN -o $INTERN -p tcp -d $IP-INTERN --dport 80 -m state --state NEW -j ACCEPT

Kurze Frage dazu: Wo deklarierst du $Extern und $Intern? Hab iptables rules manuell mit Angabe der Interfaces eth0 bzw. ppp0 erstellt. Übersichtlicher wäre eine solche Lösung wie von dir gepostet.



Gruß,
Benjamin
_________________
Gentoo Linux Stage1 / Kernel 2.6.18
AMD Athlon64 3500+ on Asus A8N-E / 1024 MB DDR-RAM / ATI X700 PCIe
Take LINUX and forget Blue Screens
Back to top
View user's profile Send private message
slick
Bodhisattva
Bodhisattva


Joined: 20 Apr 2003
Posts: 3495

PostPosted: Wed Jun 15, 2005 7:16 am    Post subject: Reply with quote

Quote:
hast du nur 2 Schnittstellen, Intern (LAN) und Extern (WAN).

Genau das was ich meinte.
Quote:
Hier kann fast immer eine IP als DMZ angegeben werden

Folgende Regeln (ungetestet) sollten allen (neuen) eingehenden (TCP-) Traffic auf eine Maschine umbiegen. "Normaler" Traffic von bestehenden Verbindungen ins LAN ist davon nicht betroffen. Macht genau das was die DMZ-IP-Funktion im Router macht.
Code:
iptables -t nat -A PREROUTING -i $EXTERN -p tcp -m state --state NEW -j DNAT --to $IP-INTERN
iptables -A FORWARD -i $EXTERN -o $INTERN -p tcp -d $IP-INTERN -m state --state NEW -j ACCEPT

Quote:
Wo deklarierst du $Extern und $Intern?

Ich benutze nicht das iptables-initscript sondern habe mir ein eigenes initscript für die Reglen geschreiben. So kann ich darin Variablen definieren. Kurz gesagt, ersetze: $EXTERN mit dem dem extern Interface (ppp0), $INTERN mit dem internen Interface (eth0) und $IP-INTERN mit der IP des "DMZ-Host". Wenn Du ein eingenes Init-Script schreiben willst, kann ich heute abend mal ein leere Muster posten. Aber im Prinzip brauchst Dir nur die anderen initscripte anschauen, das Prinzip ist leicht verständlich.

Allerdings solltest Du bei dieser Vorgehensweise wissen was Du tust. Der "DMZ-Host" sollte sicher konfiguriert sein. Du solltest Dir an den anderen Rechner im LAN Paketfilter einrichten um zu verhindern das Traffic zwischen dem "DMZ-Host" und den anderen Rechnern entsteht. Denn der "DMZ-Rechner" ist dann der anfälligste im Netz.

Auf der anderen Seite ist dann der Gentoo-Router vollkommen überflüssig, denn es bringt kaum noch Vorteile. Die kritische Maschine ist ja dann nicht mehr der Router sondern der "DMZ-Host". Von daher kannst Du auch gleich den "DMZ-Host" direkt als Router ans Netz hängen.
Back to top
View user's profile Send private message
benjamin200
Veteran
Veteran


Joined: 01 Feb 2004
Posts: 1426
Location: DE Munich

PostPosted: Wed Jun 15, 2005 7:28 am    Post subject: Reply with quote

Quote:

Code:
iptables -t nat -A PREROUTING -i $EXTERN -p tcp -m state --state NEW -j DNAT --to $IP-INTERN
iptables -A FORWARD -i $EXTERN -o $INTERN -p tcp -d $IP-INTERN -m state --state NEW -j ACCEPT

Danke, genau das wollte ich erreichen.

Quote:

Wenn Du ein eingenes Init-Script schreiben willst, kann ich heute abend mal ein leere Muster posten. Aber im Prinzip brauchst Dir nur die anderen initscripte anschauen, das Prinzip ist leicht verständlich.

Gerne, daran wäre ich natürlich interessiert :)

Quote:

Allerdings solltest Du bei dieser Vorgehensweise wissen was Du tust. Der "DMZ-Host" sollte sicher konfiguriert sein. Du solltest Dir an den anderen Rechner im LAN Paketfilter einrichten um zu verhindern das Traffic zwischen dem "DMZ-Host" und den anderen Rechnern entsteht. Denn der "DMZ-Rechner" ist dann der anfälligste im Netz.

Auf der anderen Seite ist dann der Gentoo-Router vollkommen überflüssig, denn es bringt kaum noch Vorteile. Die kritische Maschine ist ja dann nicht mehr der Router sondern der "DMZ-Host". Von daher kannst Du auch gleich den "DMZ-Host" direkt als Router ans Netz hängen.

Du hast natürlich Recht, aber manchmal (nicht als dauerlösung) möchte ich die Option einer DMZ haben. Somit ist die Lösung für mich akzeptabel.
_________________
Gentoo Linux Stage1 / Kernel 2.6.18
AMD Athlon64 3500+ on Asus A8N-E / 1024 MB DDR-RAM / ATI X700 PCIe
Take LINUX and forget Blue Screens
Back to top
View user's profile Send private message
slick
Bodhisattva
Bodhisattva


Joined: 20 Apr 2003
Posts: 3495

PostPosted: Wed Jun 15, 2005 7:37 am    Post subject: Reply with quote

Was mir grad noch einfällt, Du könntest das ganze noch etwas sicherer gestalten, wenn Du eth0 2 IPs aus 2 verschiedenen Netzen gibts. In Netz 1 kommen dann die LAN-Rechner, in Netz 2 der "DMZ-Host". Dann kannst/mußt Du den Zugriff aus dem "LAN" auf den "DMZ-Host" und vor allem umgekehrt sehr fein über iptables auf dem Router regeln weil aller Verkehr dann über den Router laufen muss.
Back to top
View user's profile Send private message
benjamin200
Veteran
Veteran


Joined: 01 Feb 2004
Posts: 1426
Location: DE Munich

PostPosted: Wed Jun 15, 2005 8:04 am    Post subject: Reply with quote

Quote:

Was mir grad noch einfällt, Du könntest das ganze noch etwas sicherer gestalten, wenn Du eth0 2 IPs aus 2 verschiedenen

das würde ich hinbekommen...

Quote:

In Netz 1 kommen dann die LAN-Rechner, in Netz 2 der "DMZ-Host". Dann kannst/mußt Du den Zugriff aus dem "LAN" auf den "DMZ-Host" und vor allem umgekehrt sehr fein über iptables auf dem Router regeln weil aller Verkehr dann über den Router laufen muss.

... aber wie spezifiziere ich eth0-lan1 bzw. eth0-lan2?
_________________
Gentoo Linux Stage1 / Kernel 2.6.18
AMD Athlon64 3500+ on Asus A8N-E / 1024 MB DDR-RAM / ATI X700 PCIe
Take LINUX and forget Blue Screens
Back to top
View user's profile Send private message
slick
Bodhisattva
Bodhisattva


Joined: 20 Apr 2003
Posts: 3495

PostPosted: Wed Jun 15, 2005 8:13 am    Post subject: Reply with quote

mehrere IPs auf ein interface

/etc/conf.d/net
Code:
config_eth0=(
"192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255"
"192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255"
)


bei iptables würde ich dann nur mit IPs arbeiten, evt. geht auch eth0:0 bzw. eth0:1 in den regeln, weiß nicht genau, müßtest mal mit ifconfig schauen und testen.

EDIT: Ok, habs mal nachgeschlagen, also die erste Ip sollte eth0 sein, die zweite eth0:0 die dritte eth0:1 usw... die Angaben können dann auch in iptables so verwendet werden.
Code:
iptables ... -i eth0:0 ...

Solltest aber selbst erstmal antesten, hatte ich bisher kaum was mit zu tun.


Last edited by slick on Wed Jun 15, 2005 8:36 am; edited 1 time in total
Back to top
View user's profile Send private message
benjamin200
Veteran
Veteran


Joined: 01 Feb 2004
Posts: 1426
Location: DE Munich

PostPosted: Wed Jun 15, 2005 8:35 am    Post subject: Reply with quote

Quote:

mehrere IPs auf ein interface

/etc/conf.d/net
Code:
config_eth0=(
"192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255"
"192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255"
)


bei iptables würde ich dann nur mit IPs arbeiten, evt. geht auch eth0:0 bzw. eth0:1 in den regeln, weiß nicht genau, müßtest mal mit ifconfig schauen und testen.

Merci, ich werde es testen Slick.

Achja, mir ist noch was aufgefallen. Der Gentoo Software-Router verhält sich etwas anders als mein Hardware-Router. Wenn ich per öffentlicher IP aus dem lokalen Netz den Router ansprechen will geschieht das woll über das lokale Netz, da z.B. Ports offen sind (nmap öffentlichIP) wenn ich diese von intern scanne.

Denkst du es handelt sich um einen Fehler in meinen iptables oder checkt iptables ab das die Anfrage von intern an den Routern nicht übers Internet gehen muss und leitet somit direkt aufs lokale Netz um?
_________________
Gentoo Linux Stage1 / Kernel 2.6.18
AMD Athlon64 3500+ on Asus A8N-E / 1024 MB DDR-RAM / ATI X700 PCIe
Take LINUX and forget Blue Screens
Back to top
View user's profile Send private message
slick
Bodhisattva
Bodhisattva


Joined: 20 Apr 2003
Posts: 3495

PostPosted: Wed Jun 15, 2005 8:46 am    Post subject: Reply with quote

Hmm.. kann ich leider nicht mit Gewissheit beantworten. Vielleicht hat noch ein Netzwerk-Guru eine Antwort?

Aber ich _vermute_ es läuft wie folgt:

Du beginnst von intern die externe IP anzusprechen. Das geht über NAT raus und ein Eintrag in der NAT-Tabelle wird erstellt das dies von intern initialisiert wurde. Jetzt kommt das Paket von "extern" wieder rein und in der NAT-Tabelle steht das es das darf. Von daher ist von innen gesehen außen alles offen.
Back to top
View user's profile Send private message
benjamin200
Veteran
Veteran


Joined: 01 Feb 2004
Posts: 1426
Location: DE Munich

PostPosted: Wed Jun 15, 2005 9:08 am    Post subject: Reply with quote

Quote:

Du beginnst von intern die externe IP anzusprechen. Das geht über NAT raus und ein Eintrag in der NAT-Tabelle wird erstellt das dies von intern initialisiert wurde. Jetzt kommt das Paket von "extern" wieder rein und in der NAT-Tabelle steht das es das darf. Von daher ist von innen gesehen außen alles offen.

So sehe ich das auch (jedenfalls so ähnlich).

Quote:

Vielleicht hat noch ein Netzwerk-Guru eine Antwort?

Ja, wäre interessant. Netzwerk-Guru bitte melden!
_________________
Gentoo Linux Stage1 / Kernel 2.6.18
AMD Athlon64 3500+ on Asus A8N-E / 1024 MB DDR-RAM / ATI X700 PCIe
Take LINUX and forget Blue Screens
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Wed Jun 15, 2005 9:46 am    Post subject: Reply with quote

Hi,

ohne das jetzt wirklich rauszutracen (und daher ohne Anspruch auf Richtigkeit) würde ich sagen es läuft in etwa so:

- Paket kommt von 'innen'
- es wird gegen die Rulebase gecheckt ob es erlaubt wird
- Source-IP-wird umgeNATed auf 'IP von ppp0'
- Paket wird an Dest-IP geschickt (ebenfalls IP von ppp0)

Da nun normalerweise die FW-Regeln so aussehen das lokal<->lokal grundsätzlich erlaubt ist trifft das auch auf dieses Paket zu und ist daher auch erlaubt.
Bau dir mal eine Regel ein die genau das verbietet und du weißt ob ich recht habe :wink:

HTH
T.
_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself
Back to top
View user's profile Send private message
benjamin200
Veteran
Veteran


Joined: 01 Feb 2004
Posts: 1426
Location: DE Munich

PostPosted: Wed Jun 15, 2005 9:51 am    Post subject: Reply with quote

Quote:

Bau dir mal eine Regel ein die genau das verbietet und du weißt ob ich recht habe

bin leider noch nicht so fit in iptables, wenn du mir vielleicht behilflich sein könntest?

eth0 ist mein lokales-Netz
eth1 inteface für dsl, hierüber wird ppp0 initialisiert
ppp0 DSL-Vebrindung zu ISP

Meine Iptables richten sich nach dem Home-Router-Guide auf Gentoo, bis auf die Änderungen von eth1 auf ppp0, damit auch das Richtige Interface gefiltert wird.

Home-Router-Guide
Quote:

Code Listing 5.3: Setting up iptables

First we flush our current rules
# iptables -F
# iptables -t nat -F

Then we lock our services so they only work from the LAN
# iptables -I INPUT 1 -i eth0 -j ACCEPT
# iptables -I INPUT 1 -i lo -j ACCEPT
# iptables -A INPUT -p UDP --dport bootps -i ! eth0 -j REJECT
# iptables -A INPUT -p UDP --dport domain -i ! eth0 -j REJECT

(Optional) Allow access to our ssh server from the WAN
# iptables -A INPUT -p TCP --dport ssh -i eth1 -j ACCEPT

Drop TCP / UDP packets to privileged ports
# iptables -A INPUT -p TCP -i ! eth0 -d 0/0 --dport 0:1023 -j DROP
# iptables -A INPUT -p UDP -i ! eth0 -d 0/0 --dport 0:1023 -j DROP

Finally we add the rules for NAT
# iptables -I FORWARD -i eth0 -d 192.168.0.0/255.255.0.0 -j DROP
# iptables -A FORWARD -i eth0 -s 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -A FORWARD -i eth1 -d 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Tell the kernel that ip forwarding is OK
# echo 1 > /proc/sys/net/ipv4/ip_forward
# for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

This is so when we boot we don't have to run the rules by hand
# /etc/init.d/iptables save
# rc-update add iptables default
# nano /etc/sysctl.conf
Add/Uncomment the following lines:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1

_________________
Gentoo Linux Stage1 / Kernel 2.6.18
AMD Athlon64 3500+ on Asus A8N-E / 1024 MB DDR-RAM / ATI X700 PCIe
Take LINUX and forget Blue Screens
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Wed Jun 15, 2005 10:01 am    Post subject: Reply with quote

es steht schon eindeutig in deinen Regeln das es erlaubt ist.

Das NAT findet erst in POSTROUTING statt, d.h. als letzter Schritt bevor das Paket auf die Reise geht.
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Vorher erlaubst du aber schon das alles was 192.168.0.0/16 ist grundsätzlich alles darf nach 'wurscht wohin'
iptables -A FORWARD -i eth0 -s 192.168.0.0/255.255.0.0 -j ACCEPT

Was von eth0 kommt darf auf alles zugreifen das die Maschine anbietet- und von daher kommt das Paket ja
iptables -I INPUT 1 -i eth0 -j ACCEPT

Ergo -> von intern darfst du auf deine externe IP alles.
_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself
Back to top
View user's profile Send private message
slick
Bodhisattva
Bodhisattva


Joined: 20 Apr 2003
Posts: 3495

PostPosted: Wed Jun 15, 2005 10:05 am    Post subject: Reply with quote

Aber nicht vergessen ;-) eth1 =/= ppp0
http://www.gentoo.org/doc/de/home-router-howto.xml wrote:
Warning: Wenn das DSL-Interface läuft, erstellt es ppp0. Obwohl Ihre NIC eth1 genannt wird, ist die IP tatsächlich an ppp0 gebunden. Von jetzt an, wenn Sie ein Beispiel sehen, das 'eth1' nutzt, ersetzen Sie es mit 'ppp0'.
Back to top
View user's profile Send private message
benjamin200
Veteran
Veteran


Joined: 01 Feb 2004
Posts: 1426
Location: DE Munich

PostPosted: Wed Jun 15, 2005 11:22 am    Post subject: Reply with quote

Quote:

Aber nicht vergessen eth1 =/= ppp0

hab ich angepasst:
Quote:

Meine Iptables richten sich nach dem Home-Router-Guide auf Gentoo, bis auf die Änderungen von eth1 auf ppp0, damit auch das Richtige Interface gefiltert wird.


Quote:

es steht schon eindeutig in deinen Regeln das es erlaubt ist.

Das NAT findet erst in POSTROUTING statt, d.h. als letzter Schritt bevor das Paket auf die Reise geht.
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Vorher erlaubst du aber schon das alles was 192.168.0.0/16 ist grundsätzlich alles darf nach 'wurscht wohin'
iptables -A FORWARD -i eth0 -s 192.168.0.0/255.255.0.0 -j ACCEPT

Was von eth0 kommt darf auf alles zugreifen das die Maschine anbietet- und von daher kommt das Paket ja
iptables -I INPUT 1 -i eth0 -j ACCEPT

Ergo -> von intern darfst du auf deine externe IP alles.

Danke, nun ist ja damit alles klar. Die Policies werde ich noch verschärfen müssen. Alles soll aus dem internen Netz nun auch wieder nicht erlaubt werden. Slick wollte mir heute eine Pre-Config schicken, die bestimmt für mich interessant ist


Danke an euch beide.
_________________
Gentoo Linux Stage1 / Kernel 2.6.18
AMD Athlon64 3500+ on Asus A8N-E / 1024 MB DDR-RAM / ATI X700 PCIe
Take LINUX and forget Blue Screens
Back to top
View user's profile Send private message
benjamin200
Veteran
Veteran


Joined: 01 Feb 2004
Posts: 1426
Location: DE Munich

PostPosted: Wed Jun 15, 2005 1:42 pm    Post subject: Reply with quote

Schützt die oben genannte Regel (angepasst mit ppp0) vor ...
Quote:

Angriffsvektor IP-Spoofing - Mittel gegen die Angriffe

Das einfachste Mittel gegen IP-Spoofing ist die Verwendung vernünftiger Regeln in der Firewall. Ist dem Administrator erst bewusst, dass IP-Spoofing in der Praxis existiert, dann gilt zumindest eine Firewall-Regel: Die Firewall muss von außen eingehende Pakete daraufhin überprüfen, ob deren IP-Header aus der IP-Range des internen Netzes stammen. Ist das der Fall, handelt es sich mit Sicherheit um eine gefälschte Adresse und beim Paket möglicherweise um einen Angriffsversuch, denn die internen Adressen befinden sich ja auf der anderen Seite der Firewall. Mit anderen Worten: Eingehende Pakete mit Adressen aus dem internen Adressbereich müssen blockiert werden.

... IP-Spoofing?

Code:



Ich finde keinen Bezug der dies verbietet bzw. erlaubt. Bin mir aber nicht sicher.
_________________
Gentoo Linux Stage1 / Kernel 2.6.18
AMD Athlon64 3500+ on Asus A8N-E / 1024 MB DDR-RAM / ATI X700 PCIe
Take LINUX and forget Blue Screens
Back to top
View user's profile Send private message
slick
Bodhisattva
Bodhisattva


Joined: 20 Apr 2003
Posts: 3495

PostPosted: Wed Jun 15, 2005 1:53 pm    Post subject: Reply with quote

Bei einem NAT hast Du diese Problematik weniger. Wenn Du mit ... -m state --state ESTABLISHED,RELATED ... arbeitest führt iptables eine Liste welche Verbindungen von wo nach wo aufgebaut wurden und läßt deren Antworten von draußen wieder rein. Und wenn ein Angreifer extern die interne IP als Quelle hättest wie Du im LAN, würde das Paket dennoch nicht durchkommen, solange der Angreifer nicht weiß oder errät was grad eben in Deiner NAT-Tabelle steht was "reindarf". D.h. bei einem typischen und sauberen NAT bist Du save es sei denn der Angreifer fälscht die passenden Pakete zu einer Deiner bestehenden Verbindungen. Äußerst aufwendig schätze ich mal und wahrscheinlich wenig sinnbringend. Das Problem IP-Spoofing ist eher bei "normalen" Routern ohne NAT (oder schlechten iptables-Regeln)

Last edited by slick on Wed Jun 15, 2005 2:06 pm; edited 3 times in total
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Wed Jun 15, 2005 2:00 pm    Post subject: Reply with quote

Trotzdem ist es kein Schaden die Möglichkeit des Spoofens abzustellen

entnomen aus dem Gentoo Security Handbuch
Code:
# for i in /proc/sys/net/ipv4/conf/*; do
        /bin/echo "1" > $i/rp_filter
done

Es wird geprüft ob das jeweilige Paket das da ankommt überhaupt von dort kommen kann (via routing table) und wenn nicht verworfen.
_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself
Back to top
View user's profile Send private message
benjamin200
Veteran
Veteran


Joined: 01 Feb 2004
Posts: 1426
Location: DE Munich

PostPosted: Wed Jun 15, 2005 2:00 pm    Post subject: Reply with quote

Quote:

Äußerst aufwendig schätze ich mal und wahrscheinlich wenig sinnbringend. Das Problem IP-Spoofing ist eher bei "normalen" Routern ohne NAT (oder schlechten iptables-Regeln)

Danke für deine Antwort. Ich müsste es also mit mstate realisieren?

Sind die Regeln aus dem Gentoo Home Router Guide gut? Immerhin habe ich gelesen, das die PREROUTING Funktion/Regel als erstes und nicht zum Schluss gesetzt wird. Im Guide jedoch als letztes. Ist das schlichtweg egal oder ist das Not Save?

Siehe:
http://iptables-tutorial.frozentux.net/iptables-tutorial.html
_________________
Gentoo Linux Stage1 / Kernel 2.6.18
AMD Athlon64 3500+ on Asus A8N-E / 1024 MB DDR-RAM / ATI X700 PCIe
Take LINUX and forget Blue Screens
Back to top
View user's profile Send private message
slick
Bodhisattva
Bodhisattva


Joined: 20 Apr 2003
Posts: 3495

PostPosted: Wed Jun 15, 2005 2:06 pm    Post subject: Reply with quote

Meine EDIT von oben hier angehangen, zwecks Übersicht

Die einfachste NAT-Box sieht daher so aus (wenn Default-Policie DROP oder REJECT) und ist save

Code:

# Zugriff vom LAN auf den Router erlauben:
iptables -A INPUT -i $INTERN -j ACCEPT

# Zugriff von aus dem LAN über den Router nach draußen erlauben
iptables -A FORWARD -i $INTERN -o $EXTERN -j ACCEPT

# Zugriff des Routers selbst nach draußen erlauben
iptables -A OUTPUT -o $EXTERN -j ACCEPT

# Zugriff von außen auf den Router nur erlauben wenn Verbindung bereits besteht (kann ja nur von innen sein)
iptables -A INPUT -i $EXTERN -m state --state ESTABLISHED,RELATED -j ACCEPT

# Zugriff von außen über den Router in LAN nur erlauben wenn Verbindung bereits besteht (kann ja nur von innen sein)
iptables -A FORWARD -i $EXTERN -o $INTERN -m state --state ESTABLISHED,RELATED -j ACCEPT

# alle ausgehenden Pakete in die NAT Tabelle eintragen die dann von ESTABLISHED,RELATED gelesen wird
# und Absenderadresse auf Externe Adresse ändern
iptables -t nat -A POSTROUTING -o $EXTERN -j MASQUERADE


Last edited by slick on Wed Jun 15, 2005 2:16 pm; edited 1 time in total
Back to top
View user's profile Send private message
benjamin200
Veteran
Veteran


Joined: 01 Feb 2004
Posts: 1426
Location: DE Munich

PostPosted: Wed Jun 15, 2005 2:07 pm    Post subject: Reply with quote

Quote:

Trotzdem ist es kein Schaden die Möglichkeit des Spoofens abzustellen

entnomen aus dem Gentoo Security Handbuch
Code:
# for i in /proc/sys/net/ipv4/conf/*; do
/bin/echo "1" > $i/rp_filter
done

Es wird geprüft ob das jeweilige Paket das da ankommt überhaupt von dort kommen kann (via routing table) und wenn nicht verworfen.

@Think4UrS11
Klasse das wäre also die Lösung des Problems. Merci :)

@slick
wann kannst du die iptables vorlage posten?
_________________
Gentoo Linux Stage1 / Kernel 2.6.18
AMD Athlon64 3500+ on Asus A8N-E / 1024 MB DDR-RAM / ATI X700 PCIe
Take LINUX and forget Blue Screens
Back to top
View user's profile Send private message
slick
Bodhisattva
Bodhisattva


Joined: 20 Apr 2003
Posts: 3495

PostPosted: Wed Jun 15, 2005 2:18 pm    Post subject: Reply with quote

Sagen wir mal so ab max. 17:30. Bin noch @work
Back to top
View user's profile Send private message
slick
Bodhisattva
Bodhisattva


Joined: 20 Apr 2003
Posts: 3495

PostPosted: Wed Jun 15, 2005 3:21 pm    Post subject: Reply with quote

Hier mein Initscript. Habs etwas gekürzt... sollte verständlich sein.

Bei den Regeln bin ich einen etwas anderen Weg gegangen, ich baue mir eigene "Kanäle" für die ich dann jeweils einzeln bessern die Regeln vergeben kann. Ist für mich übersichtlicher. z.B. alles FORWARD von EXT nach INT ist im "Kanal" FWD_EXT_INT. Man muß nur beachten das es die vorher "Kanäle" exitieren, bevor man die Pakete da rein schiebt.

Dieses Script muß nach der Erstellung nach rp-pppoe (also wenn es ppp0 schon gibt) laufen, da sonst iptables natürlich das Interface nicht findet. Evt. Funktion depend() anpassen.

Wenn Fragen, dann fragen. ;-)

Code:
#!/sbin/runscript

depend() {
    need net
}

# ping von extern erlauben (0|1)
ALLOW_PING=1

# ping-versuche loggen (0|1)
LOG_PING=1

# Geräte definieren
INT="eth0"
EXT="ppp0"

# Pfad zu interfaces
IPV4PATH="/proc/sys/net/ipv4"

flush() {
# alle regeln löschen, alle verbindungen sperren
   if test -r /proc/net/ip_tables_names; then
      for name in `cat /proc/net/ip_tables_names`; do
         iptables -F -t $name
         iptables -X -t $name
      done;
   fi

   iptables -F
   iptables -X
   iptables -Z

   iptables -P INPUT REJECT
   iptables -P FORWARD DROP
   iptables -P OUTPUT REJECT

   tc qdisc del dev $EXT root &> /dev/null
   tc qdisc del dev $EXT ingress &> /dev/null
}

# nach allen Programmen prüfen
checkconfig() {
   if [ ! -x "$(which iptables)" ] ; then
      eerror "iptables need to be installed"
      return 1
   fi
}

start() {

   checkconfig || return 1

   ebegin "Starting NAT"

# Interface-Konfiguration setzen
   echo "0" > $IPV4PATH/ip_forward
   echo "0" > $IPV4PATH/ip_dynaddr
   echo "1" > $IPV4PATH/tcp_syncookies
   echo "1" > $IPV4PATH/icmp_echo_ignore_broadcasts
   echo "0" > $IPV4PATH/icmp_echo_ignore_all
   echo "1" > $IPV4PATH/icmp_ignore_bogus_error_responses

   echo "1" > $IPV4PATH/conf/all/rp_filter
   echo "0" > $IPV4PATH/conf/all/accept_redirects
   echo "0" > $IPV4PATH/conf/all/accept_source_route

# Default Policy und flush
   flush

# incoming traffic in INT
   iptables -N INP_INT
   iptables -A INP_INT -j ACCEPT

# outgoing traffic on INT
   iptables -N OUT_INT
   iptables -A OUT_INT -j ACCEPT

# incoming traffic in EXT
   iptables -N INP_EXT
   iptables -A INP_EXT -m state --state ESTABLISHED,RELATED -j ACCEPT

   # ssh
   iptables -A INP_EXT -p tcp --dport 22 -j ACCEPT

   # ping nach config loggen
   if [ "${LOG_PING}" == "1" ] ; then
      iptables -A INP_EXT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j LOG --log-level info --log-prefix "PING: "
   fi

   # ping nach config freigeben
   if [ "${ALLOW_PING}" == "1" ] ; then
      iptables -A INP_EXT -p icmp --icmp-type echo-request -j ACCEPT
   fi

# outgoing traffic on EXT
   iptables -N OUT_EXT
   iptables -A OUT_EXT -j ACCEPT

# forward from INT > EXT
   iptables -N FWD_INT_EXT
   iptables -A FWD_INT_EXT -j ACCEPT

# forward from EXT > INT
   iptables -N FWD_EXT_INT
   iptables -A FWD_EXT_INT -m state --state ESTABLISHED,RELATED -j ACCEPT

# in eigene Regeln schieben

   iptables -A INPUT -i $INT -j INP_INT
   iptables -A OUTPUT -o $INT -j OUT_INT

   iptables -A INPUT -i $EXT -j INP_EXT
   iptables -A OUTPUT -o $EXT -j OUT_EXT

   iptables -A FORWARD -i $INT -o $EXT -j FWD_INT_EXT
   iptables -A FORWARD -i $EXT -o $INT -j FWD_EXT_INT

   iptables -A INPUT -i lo -j ACCEPT
   iptables -A OUTPUT -o lo -j ACCEPT

   # Masquerade
   iptables -A POSTROUTING -t nat -o $EXT -j MASQUERADE

   # MTU
   iptables -A FORWARD -p TCP --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmt

   echo "1" > $IPV4PATH/ip_dynaddr
   echo "1" > $IPV4PATH/ip_forward

   eend $?

}

#

stop() {

      checkconfig || return 1

      ebegin "Stopping NAT"

      echo "0" > $IPV4PATH/ip_forward
      echo "0" > $IPV4PATH/ip_dynaddr

      flush

      iptables -A INPUT -i lo -j ACCEPT
      iptables -A OUTPUT -o lo -j ACCEPT

      iptables -A INPUT -i $INT -j ACCEPT
      iptables -A OUTPUT -o $INT -j ACCEPT

      iptables -A INPUT -i $EXT -j REJECT
      iptables -A OUTPUT -o $EXT -j REJECT

      eend $?
}
Back to top
View user's profile Send private message
benjamin200
Veteran
Veteran


Joined: 01 Feb 2004
Posts: 1426
Location: DE Munich

PostPosted: Wed Jun 15, 2005 3:32 pm    Post subject: Reply with quote

Danke Slick,
ich werde das heute Abend mal ausprobieren. Bin leider immer noch @work. Mal sehen ob ich das heute noch hinbiegen.

Den Vorschlag von Think4UrS11 mit IP-Spoofing Detection im Kernel wirst du auch aktivieren, nehme ich mal an!
_________________
Gentoo Linux Stage1 / Kernel 2.6.18
AMD Athlon64 3500+ on Asus A8N-E / 1024 MB DDR-RAM / ATI X700 PCIe
Take LINUX and forget Blue Screens
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum