Toon posts:

[iptables] NAT en uitgaande packet filtering

Pagina: 1
Acties:

Verwijderd

Topicstarter
In mijn iptables scripts wil ik 2 dingen doen:
1. SNAT over meerdere externe ip's
2. Packet filtering op uitgaand verkeer zodat gebruikers alleen gebruik kunnen maken van www en niet dingen zoals MSN messenger, ICQ etc. kunnen gebruiken.

In mijn script heb ik 't volgende staan: (eth0 = intern, eth1 = extern)
# Open high reconnect ports voor ESTABLISHED,RELATED verbindingen op externe interface (eth1)
iptables -A INPUT -p tcp --destination-port 1024:65535 -m state --state ESTABLISHED,RELATED -i eth1 -j ACCEPT
iptables -A INPUT -p udp --destination-port 1024:65535 -m state --state ESTABLISHED,RELATED -i eth1 -j ACCEPT


# Alle andere pakketen op eth1 droppen we
iptables -A INPUT -i eth1 -j DROP


# NAT translatie naar meerdere externe IP adressen
iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o eth1 -p tcp -j SNAT --to-source 61.33.48.60-61.33.48.62
iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o eth1 -p udp -j SNAT --to-source 61.33.48.60-61.33.48.62


# Uitgaande pakket filtering
iptables -A OUTPUT -p udp --destination-port 53 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 80 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --destination-port 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT


# Drop de rest
iptables -A OUTPUT -j DROP


Dit werkt echter niet helemaal zoals ik wil. De SNAT naar meerdere externe ip adressen werkt perfect alleen de packet filtering wil 'ie niet doen.

De interne gebruikers kunnen gewoon verbinding maken met alle poorten (MSN, ICQ, SMTP, POP3 etc.) en niet alleen maar met de DNS en WWW poorten zoals ik zou willen, alleen vanaf de server kan ik nu nog maar gebruik maken van de DNS en WWW poorten. Ik vermoed dat dit komt omdat op de server geen NAT translatie plaatsvind maar dat 'ie alleen maar routeert en dat 'ie dan wel de OUTPUT chain pakt terwijl hij dat bij de SNAT niet doet.

Heeft iemand enig idee hoe de SNAT en de packet filtering beide te laten werken voor interne gebruikers?

Ik heb overigens al geprobeerd om de OUTPUT regels in de OUTPUT chain van de NAT tabel te plaatsen maar dat resulteerd in hetzelfde verhaal, bv:
iptables -A OUTPUT -t nat -p tcp --destination-port 80 -j ACCEPT

Verwijderd

Topicstarter
Ik heb 'm voor elkaar gekregen...

i.p.v de OUTPUt chain moet ik de FORWARD chain gebruiken... Het laatste stuk moet dus zijn:

# Uitgaande pakket filtering
iptables -A FORWARD -p udp --destination-port 53 -j ACCEPT
iptables -A FORWARD -p tcp --destination-port 80 -j ACCEPT
iptables -A FORWARD -p tcp --destination-port 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p udp --destination-port 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT


# Drop de rest
iptables -A FORWARD -j DROP


Deze kan dus op slot maar ik misschien wel een leuke reference voor andere gebruikers...

  • JayTaph
  • Registratie: Oktober 1999
  • Laatst online: 28-11-2025

JayTaph

Portability is for canoes.

Ik zou in de outgoing regels de "-m state --state NEW" opgeven voor de sync-pakkten van TCP poort 80, en voor de normale udp poort 53 pakketjes:
code:
1
2
3
4
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sync --dport 80 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -j DROP

* Eerste regel laat alles door wat al established of related is (dus ook bijvoorbeeld icmp-paketten related aan bepaalde connecties ed).
* 2e regel duwt alleen een connectie in de tracker als er een nieuwe connectie naar buiten wordt gemaakt naar een poort 80.
* 3e regel doet hetzelfde, alleen dan voor dns (alleen heeft udp geen "connectie" en kan je dus geen sync doen.
* 4e regel dropt de rest (natuurlijk heb je je policy ook op DROP staan).

input:
code:
1
2
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j DROP

Eventueel met of zonder high range (zoals jij doet).



Zou moeten werken :)


[edit: owja.. je had het over forwarden door die bak, da's waar ook :)]

Yo dawg, I heard you like posts so I posted below your post so you can post again.


  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

Op woensdag 22 mei 2002 15:40 schreef Pierce21 het volgende:
Ik heb 'm voor elkaar gekregen...

i.p.v de OUTPUt chain moet ik de FORWARD chain gebruiken... Het laatste stuk moet dus zijn:

[..]
Hmm, volgens mij moet je ook "related" icmp packetjes doorlaten op je input en forward chains. Met name de icmp-type 3 (destination-unreachable) zodat je connection error's terug krijgt.
Anders moet je wachten op de timeout.

-edit-

Oeps bedtijd!
Dat was al gepost
:z

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


Verwijderd

Heej iptables goeroes hier! mooi

ik heb een newbie vraag, ben me net een beetje aan het verdiepen in iptables, maar wat ik me afvraag... is het ook mogelijk om andere gebruikers (dus niet root) gebruik te laten maken van iptables?

oja, nog 1! :) iptables-save en restore, weet iemand ergens een manual om dat werken te krijgen?

bedankt!! :D

  • x-force
  • Registratie: Maart 2001
  • Laatst online: 05-01-2024
Dit is misschien wel een handige (algemene) link http://www.linuxguruz.org/iptables/ :*)

VangenopBetaalwater.nl Het platform om ervaringen over betaalwater in Frankrijk te delen met andere karpervissers zodat iedereen kan vangen op betaalwater!

Pagina: 1