[iptables] Managen uitgaande connecties per daemon

Pagina: 1
Acties:

Onderwerpen


  • HarmoniousVibe
  • Registratie: September 2001
  • Laatst online: 11-09 14:18
Vraagje, ik draai een server waarop ondermeer httpd, sshd en postfix draaien.

Nu is het natuurlijk altijd wel handig als men bijvoorbeeld vanuit een SSH-sessie een SSH/FTP verbinding kan maken naar een andere server, kan whoisen op poort 43, kan wgetten op HTTP(S), etc. En het is niet de bedoeling dat men bijvoorbeeld via SSH connecties gaat leggen met dport 25. Dat mag alleen postfix. En postfix mag slechts verbinding maken met my-smtp.relay.nl:25 en mag die andere dingen weer niet. En uitgaande verbindingen vanuit httpd wil ik beperken tot 80 en 443, zodat web 2.0 niet onmogelijk wordt gemaakt ;). Samenvattend:

1. postfix -> mijn-smtp:25
2. httpd -> *:{80,443}
3. sshd -> *:{80,443,22,43,etc}

Probleem 1 heb ik reeds opgelost door de volgende regels op te nemen in mijn FW:
iptables -A OUTPUT -p tcp --dst mijn-smtp --dport 25 -m owner --uid-owner postfix -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -j LOG --log-prefix "**iptables-foreign_smtp**: "
iptables -A OUTPUT -p tcp --dport 25 -j REJECT

Oftewel, postfix mag verbinding met mijn-smtp:25 en de rest naar 25 wordt gelogd en geblokkeerd.

Het beperken van httpd is het grote probleem, omdat alle rechten die aan ssh worden toegekend, ik momenteel httpd niet kan ontzeggen. Niet met --uid-owner in ieder geval. Voorbeeld: via een SSH sessie moet er een FTP sessie kunnen worden geopend naar een andere host, terwijl dit via httpd niet mag.

Immers, als je op een SSH sessie inlogt met piet, is de owner piet en niet sshd. Dit geldt in mijn geval ook voor httpd (ik gebruik mpm-itk). Ik kan dus niet zeggen:
iptables -A OUTPUT -p tcp -m state --state NEW --dport 21 -m owner --uid-owner sshd -j ACCEPT


Wat ik momenteel doe is gewoon dit:
iptables -A OUTPUT -p tcp -m state --state NEW --dport 21 -j ACCEPT

Alles behalve ideaal dus, omdat er nogal wat malware wordt binnengehaald via FTP dmv lekke Joomla's e.d.

Vroeger had je -m owner --cmd-owner. Dan kon je wel zeggen:
iptables -A OUTPUT -p tcp -m state --state NEW --dport 21 -m owner --cmd-owner sshd -j ACCEPT

Echter is deze optie sinds Linux 2.6.16 ivm bugs al niet meer beschikbaar. Weet iemand toevallig een andere manier om per daemon fatsoenlijk de uitgaande verbindingen te regelen?

12 × LG 330Wp (Enphase) | Daikin FTXM-N 3,5+2,0+2,0kW | Panasonic KIT-WC03J3E5 3kW


  • benoni
  • Registratie: November 2003
  • Niet online
Groep gebruiken (--gid-owner) waar de ssh-gebruikers wel inzitten en je httpd niet? Misschien had je al zo'n groep aangemaakt voor een AllowGroups directive in je sshd_config.