[iptables] nat forward problemen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • pixel
  • Registratie: Augustus 2001
  • Laatst online: 16-12-2024
Ik heb een raar probleem met linux en ip tables.
Wat is de bedoeling?

Er is een machine die dienst doet als gateway/router. Hier draait iptables op. Deze machine zit met een nic (WAN) op het internet en met een nic (LAN) op het interne lan. Zover niks spannends dus.
Achter deze machine op LAN leeft nog een computer. Dit is ook een linux machine. Deze wil ik benaderbaar maken van buiten af, Maar deze machine mag zelf niet een route naar internet (WAN) vinden.

Internet --------- Linux iptables------- Target Linux.

Voor deze test gebruik ik telnet om even makkelijk te testen of dit werkt. Ik ben me er van bewust dat het niet veilig maar als het met telnet werkt is het makkelijk om te zetten naar de uiteindelijke situatie. De target machine wil ik bereiken door het internet IP adres op poort 23 aan te roepen.
De linux router moet dan aan aanvraag die op poort 23 binnen komt natten naar de target computer.

In de iptables staat daarom het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
set -x

echo 1 > /proc/sys/net/ipv4/ip_forward
WAN="eth1"
LAN="eth0"

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -A PREROUTING -t nat -p tcp -i $WAN --dport 23 -j DNAT --to-destination x.x.x.x:23
iptables -A POSTROUTING -t nat -j MASQUERADE

Dus eigenlijk super simpel, en dit werkt ook goed. Voor nu is dat INPUT en OUTPUT op accept staan niet erg.

MAAR:

De target machine kan nu vrij het internet op omdat de FORWARD policy op ACCEPT staat. Dit is niet wenselijk.
Dus verander de FORWARD chain policy naar:
code:
1
iptables -P FORWARD DROP


Nu kan de target machine niet meer worden bereikt, en dat is logisch want FORWARD mag niet.
Dus er moet een extra regel komen waarin staat dat target machine wel door de FORWARD chain heen
mag. Dus je krijgt dan iets als:

code:
1
iptables -A FORWARD -i $WAN -p tcp --dport 23 -d x.x.x.x -j ACCEPT


Maar helaas krijg ik dit dus niet voor elkaar. Ik heb al heel veel variaties geprobeerd op deze regel, maar zodra je op de FORWARD chain iets gaat doen met poorten of ip nummer gaat het stuk.
Alleen als je iets erin zet als:
code:
1
2
Iptables -A FORWARD -i $WAN -j ACCEPT
Iptables -A FORWARD -o $WAN -j ACCEPT

Dan werkt het weer wel, maar dit is eigenlijk het zelfde als de policy van forward op ACCEPT zetten. Het rare is wel dat het niet uitmaakt of je nu de WAN of LAN ACCEPT bij beide werkt het weer!!??

Ik begrijp nu niet waarom de FORWARD chain niet mee werken wil. Als ik met wireshark mee ga kijken zie ik dat de telnet pakketten niet aankomen. Je ziet dan op een gegeven moment alleen maar retransmits van telnet pakketten. Wanneer de policy op ACCEPT staat zie een normaal beeld in wireshark.

De duidelijkste uitleg van dit en ook min of meer waar ik de regels van iptables op baseer komt van:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Security_Guide/s1-firewall-ipt-fwd.html

Iemand een idee want ik weet het even niet meer.

brabrabrabra...


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Het begin van je script, echo 1 > /proc... kan je ook in /etc/sysctl.conf permanent zetten. Kijk naar waarde net.ipv4.ip_forward. Maar dat staat ook al in je Red Hat linkje.

Verders is het een idee om te kijken naar de staat van packages die je ontvangt. Je wilt namelijk dat de target helemaal niets mag, behalve antwoorden op verbindingen die gemaakt worden en zijn. Dat valt onder RELATED en ESTABLISHED rules. Ik denk dat je daar wat regels mee moet maken, ipv FORWARD wat je nu hebt.

Ik ben verre van expert op het gebied van iptables, dus ik kan 't ook fout hebben. Test daarom het een en ander.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Thralas
  • Registratie: December 2002
  • Laatst online: 08:29
pixel schreef op vrijdag 14 november 2014 @ 14:28:
code:
1
iptables -A FORWARD -i $WAN -p tcp --dport 23 -d x.x.x.x -j ACCEPT


Maar helaas krijg ik dit dus niet voor elkaar. Ik heb al heel veel variaties geprobeerd op deze regel, maar zodra je op de FORWARD chain iets gaat doen met poorten of ip nummer gaat het stuk.
Dat is verklaarbaar. Hiermee laat je inkomende packets richting je telnet-server door, maar hoe zit het met replies vanaf je server? O-)

Het makkelijkste is om in eerste instantie een rule toe te voegen die simpelweg alle traffic vanaf de LAN-poort forward.

Daarna is het verstandig om het advies van Hero of Time in acht te nemen. Een veelvoorkomende firewallingsituatie is dat alle uitgaande packets toegestaan worden, maar inkomend enkel packets worden geaccepteerd welke bij een bestaande verbinding horen. Effectief kun je dan dus enkel praten met de buitenwereld als de verbinding vanuit je LAN wordt geinitieerd.

Uitgaande connecties, zowel nieuw als bestaand (deze miste je):
-A FORWARD -o $WAN -j ACCEPT


Alle bestaande verbindingen:
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


Dat kun je zelf natuurlijk nog strakker zetten met extra state en source match rules. En vergeet je rule voor telnet-access niet (al dan niet met --state NEW).

Als laatste de gouden tip waarmee je zelf al je issues kunt debuggen: insert een jump naar de LOG chain, dan kun je in je kernel logs alle matched packets terugvinden. Zo kun je packets opsporen die op bepaalde posities in je chain allang hadden moeten worden gematched (bv. als laatste rule).

[ Voor 3% gewijzigd door Thralas op 14-11-2014 19:18 ]


Acties:
  • 0 Henk 'm!

  • DSK
  • Registratie: Februari 2001
  • Laatst online: 29-09 22:15

DSK

boeiend...

In plaats van masquerade te gebruiken, kun je ook een specifieke postrouting regel toevoegen. Die zorgt er dan voor dat er een weg terug is via de originele router ipv direct naar buiten.

Masquerade zou hetzelfde moeten doen maar ik heb er in de praktijk soms andere ervaringen mee.

Recent heb ik hier ook mee zitten spelen en één en ander in een blogpost gegoten: http://jensd.be/?p=343 (niet volledig wat je zoekt maar kan wel interessant zijn).

Blog (Linux-related)


Acties:
  • 0 Henk 'm!

  • pixel
  • Registratie: Augustus 2001
  • Laatst online: 16-12-2024
Dank jullie voor de informatie. Ik ga ermee aan de gang!

brabrabrabra...