Toon posts:

[iptables] Uitgaand mailverkeer toestaan naar slechts 1 ip

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil met iptables al het uitgaande smtp verkeer blokkeren, met een uitzondering voor 1 ipadres.
Ik weet heel weinig van iptables, dus vandaar dat ik jullie hulp graag wil inroepen. Ik hoef geen pasklare oplossing, maar een verwijzing naar een goede site zou al heel fijn zijn. Een tijdje zoeken levert voornamelijk dingen op als het blokkeren van inkomend smtp verkeer, of alleen uitgaand smtp verkeer toestaan vanaf de eigen internet mailserver. Ik heb wel een eigen mailserver, maar die hangt buiten mijn netwerk en ik wil afdwingen dat die gebruikt wordt.
Waarschijnlijk hebben jullie de reden hiervoor inmiddels ook wel bedacht, maar even voor de volledigheid. Er zwerven wat virussen rond die gehackte mailservers gebruiken voor het verzenden van spam, ons ipadres komt hierdoor op blacklists en xs4all sluit je internetverbinding na het constateren tijdelijk af.

Ik was zover gekomen:
code:
1
iptables -t NAT -I PREROUTING -p tcp -s 0/0 –sport 1024:65535 -d ip.van.de.mailserver –dport 25 -j ACCEPT


Ik heb helaas geen testopstelling en weet niet op dit de juiste regel is. En ik neem aan dat er nog een REJECT regel bij moet, maar moet die ervoor, of erna? Ik weet niet hoe iptables zijn state allow/deny interpreteert.

  • Pommi
  • Registratie: December 2001
  • Laatst online: 30-11-2025
Ik dacht meer richting:

code:
1
2
/sbin/iptables -A OUTPUT -p TCP -o $NIC_ISP -d $MAILSERVER --dport 25 -j ACCEPT
/sbin/iptables -A OUTPUT -p TCP -o $NIC_ISP -d 0/0 --dport 25 -j REJECT


Iptables-rules werken van boven naar beneden.
Ten eerste wordt al het verkeer naar poort 25 van $MAILSERVER uitgaand op de netwerkkaart verbonden met het Internet ($NIC_ISP = eth0/eth1/ethX) geaccepteerd. Wordt hieraan niet voldaan, dan wordt al het uitgaande verkeer naar poort 25 gereject.

Of je FORWARD of OUTPUT moet gebruiken ligt een beetje aan je situatie. Als ik het me goed herinner, OUTPUT wanneer het om de bak zelf gaat die mail verstuurd naar $MAILSERVER. En forward, wanneer de machine verkeer routeerd van een client naar het Internet (en terug).

Ik hoop dat je hiermee een beetje op weg bent geholpen ;)

  • doctormetal
  • Registratie: Februari 2006
  • Laatst online: 25-01 14:38
iptables rules worden sequentieel afgehandeld. Komt hij voor een ip packet een rule tegen die matched, dan zullen verdere rules niet meer geprocessed worden.
Maar waarom kijk je niet op de iptables homepage? Daar staat genoeg info.

Ik weet niet of de prerouting de juiste chain hiervoor was, maar ik zou de regel wat anders doen.
Even uit mijn hoofd:

code:
1
iptables -t nat -I PREROUTING 1 -p tcp --dport 25 -d ! ip-van-mailserver -j DROP

Deze regel zou dan al het verkeer dat via het netwerk naar poort 25 gaat, weggooien als het niet naar de mailserver gaat.
Dit geldt voor het interne netwerk. Wil je deze ook voor de gateway zelf, dan zal je een soortgelijke rule in de output chain op moeten nemen.

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

Buffy

Fire bad, Tree pretty

Voor zover ik kan zien doet deze regel niks. De -j optie zou niet ACCEPT moeten zijn maar DNAT met de extra optie --to mailserverip.
In de 'nat' table doet een ACCEPT target niks anders dan het verder matchen van de 'nat' rules afbreken.

De vraag is of je dit wilt doen via de 'nat' table. Is het niet handiger om alle emailprogramma's zo in te stellen dat ze de externem mailserver gebruiken en/of een eventuele interne mailserver je externe mailserver als smarthost te laten gebruiken.
dan kan in je firewall op de externe interface een ACCEPT rule zetten voor het ip van je externe mailserver (en de smtp port) en en daarna een (LOG+) DROP voor de overige pakketjes die naar een smtp port worden gestuurd.

dus iets als dit:
code:
1
2
3
iptables -A FORWARD -i <externeinterface> -p tcp --dport smtp -d <mailserverip> -j ACCEPT
iptables -A FORWARD -i <externeinterface> -p tcp --dport smtp -j LOG  --log-level notice --log-prefix VIRUSMAIL
iptables -A FORWARD -i <externeinterface> -p tcp --dport smtp -j DROP


Mbv van bv logcheck zie je dan zo of op je interne netwerk een spambot actief is.

edit:
Sneller typen :)

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

Topicstarter
Bedankt voor jullie hulp, het is gelukt!
En wel met de volgende regels:
code:
1
2
3
iptables -t mangle -A PREROUTING -p tcp -d ip-mailserver-extern -j MARK --set-mark 2
iptables -A FORWARD -p TCP -d ip-mailserver-extern --dport 25 -j ACCEPT
iptables -A FORWARD -p TCP -d 0/0 --dport 25 -j REJECT

Met de eerste regel gooi ik dus al het mailverkeer over 1 internetverbinding. Er wordt gebruik gemaakt van meerdere internetverbindingen voor meer bandbreefte en redundantie, echter zit er een provider bij die afdwingt hun mailserver te gebruiken, dus die kan voor deze grap niet worden gebruikt, vandaar dus de eerste regel :)

Het werkt nu perfect! Nogmaals dank aan allen.

  • gjs
  • Registratie: Juni 2001
  • Laatst online: 31-01 16:03

gjs

Scoobydoobydoo

Je kan ook vuurmuur installeren dan kan je de regels logisch inkloppen zonder iptables kennis, vuurmuur maakt er dan iptables regels van.
Zie ook: http://vuurmuur.sourceforge.net/

GA-Z68X-UD3H-B3 I7-2600K@4.4GHz 24Gb Ram 7Tb HDD


  • Jungian
  • Registratie: Juni 2006
  • Niet online

Jungian

>_<

gjs schreef op zondag 25 februari 2007 @ 16:38:
Je kan ook vuurmuur installeren dan kan je de regels logisch inkloppen zonder iptables kennis, vuurmuur maakt er dan iptables regels van.
Zie ook: http://vuurmuur.sourceforge.net/
offtopic:
Briljante naam _/-\o_

0.0

Pagina: 1