Page 1 of 1

PHP System -> iptables verändern

Posted: 2006-12-30 09:57
by nixix
Hallo zusammen.

Ich habe ein PHP Script, mit welchem ich die iptables direkt verändere:
system("iptables ...");

Wenn ich das Script als Root ausführe geht alles perfekt, die iptables-Regel werden eingelesen.

Rufe ich das Script jedoch über den Apachen auf geht nichts, es kommt auch keine Fehlermeldung. Am base_dir von php kann es nicht liegen, da wenn ich system("ls -l /"); eingebe alle Ordner vom / (wie /root /sbin / etc) angezeigt werden.

Wie kann ich dem Apachen die Berechtigung geben über php iptables aufzurufen?

Danke und Viele Grüsse,
NiX

Re: PHP System -> iptables verändern

Posted: 2006-12-30 10:53
by daemotron
NiXiX wrote:Wie kann ich dem Apachen die Berechtigung geben über php iptables aufzurufen?
Das willst Du nicht ernsthaft, oder? iptables lässt sich nur als root ausführen, ergo könntest Du sowas konstruieren:

Code: Select all

system("sudo iptables ....")
- allerdings müsstest Du dem Apache-User dann Zugriff auf sudo gewähren... sicherheitstechnisch jedenfall höchst bedenklich!

IMHO etwas gesünder wäre es, per PHP nur eine Datei mit den Regeln zu erzeugen, die dann per Cron-Job (der unter root läuft) an iptables übergeben werden.

Re: PHP System -> iptables verändern

Posted: 2006-12-30 10:56
by nixix
jfreund wrote:

Code: Select all

system("sudo iptables ....")
- allerdings müsstest Du dem Apache-User dann Zugriff auf sudo gewähren... sicherheitstechnisch jedenfall höchst bedenklich!
Der Webserver ist öffentlich nicht zugänglich, deshalb ertragbar. Ausserdem hostet er nur dieses Script.
Wie gewähre ich dem Apachen denn nun Zugang zu zum sudo?
Habe sudo installiert, kann das aber mit dem php system() nicht ausführen.

Danke und Gruss,
NiX
jfreund wrote: IMHO etwas gesünder wäre es, per PHP nur eine Datei mit den Regeln zu erzeugen, die dann per Cron-Job (der unter root läuft) an iptables übergeben werden.
Hatte ich zuerst auch gedacht. Das Problem ist, dass Crontab nur 1 minütiges aufrufen unterstützt und ich zwingend Realtime benötige.

Re: PHP System -> iptables verändern

Posted: 2006-12-30 10:58
by daemotron
Normalerweise reicht es, den betreffenden User in die /etc/sudoers einzutragen (musst mal schauen, wo die Datei bei Dir liegt - ev. auch unter /etc/sudo/sudoers, je nach Distribution) und anzugeben, welche Programme er mit root-Rechten starten darf.

Re: PHP System -> iptables verändern

Posted: 2006-12-30 11:05
by nixix
Die liegt bei mir unter /etc/sudoers und sieht so aus:

Code: Select all

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL
Wollte mit man sudoers schauen wie ich das Ding zu editieren habe, funktioniert aber nicht, bzw. habe es wahrscheinlich falsch gemacht.
Weisst du gerade wie ich dem user www-data die Berechtigungen auf iptables (/sbin/iptables) gebe?


Gruss, NiX

Re: PHP System -> iptables verändern

Posted: 2006-12-30 11:24
by daemotron
Aus dem Kopf grade auch nicht, aber vielleicht hilft Dir das:
http://www.gentoo.org/doc/de/sudo-guide.xml

Re: PHP System -> iptables verändern

Posted: 2006-12-30 11:39
by Joe User
PHP als (F)CGI mit su[exec|php] statt mod_php einsetzen.

Re: PHP System -> iptables verändern

Posted: 2006-12-30 12:08
by nixix
jfreund wrote:Aus dem Kopf grade auch nicht, aber vielleicht hilft Dir das:
http://www.gentoo.org/doc/de/sudo-guide.xml
Genialer Link. Danke.
Jetzt gehts :-)