ich bin heute auf eine gute idee gekommen, wie man eine application-layer firewall ohne grossen aufwand realisieren kann. habs ausprobiert: es funktioniert tadellos und ist sicher(keine unsichere paketinspektion mit grep o.ä.).
der trick dahinter ist einfach: man führt einfach die "bösen" programme, welche sich ungefragt mit dem inet verbinden unter einem speziell für diesen zweck angelegten account aus und filtert dann alle pakete, welche die uid des accounts haben mit iptables raus(dieses owner matching-modul gibts zum glück noch im kernel, im gegensatz zu --cmd-owner). da die uid immer gleich ist, braucht man auch das firewall-script nie ändern.
beispiel:
mein spezieller account "boese" hat die uid 501. ein programm wie z.b.
acrobat reader führe ich dann unter diesem account aus:
>su boese acrobat
bzw.
>su boese acrobat &
wenn es im hintergrund laufen soll. im firewallscript steht dann folgende zeile:
iptables -t filter -A OUTPUT -o eth0 -m owner --uid-owner 501 -j DROP
wichtig: grafische anwendungen müssen sich bei ausführung mit dem xserver verbinden können. durch das wechseln zu einem anderen user mittels su, muss man vorher dem anderen account die erlaubnis dazu geben (ist jedenfalls bei fedora 7 so):
>xhost + SI:localuser:boese
das kann man aber automatisieren und es in ein startscript einbinden.
ist das nicht toll?
Lesezeichen