Discussion:
[TYPO3-german] EXT:rsaauth / open_basedir ??
Michael Ludwig
2011-01-05 22:06:28 UTC
Permalink
Moin moin und ein frohes Neues! ;-)

Ich wollte mal gerade wieder eine Site erweitern, dabei stellte ich
fest, dass seit 4.3 rsaauth integriert ist (von wegen kb_md5...
obsolet)... :-)
Da muss ich wohl etwas geschlafen haben in der letzten Zeit... ;)
So, nun habe ich rsaauth mal installiert, und eben nach dieser
Installation fragt mich die EXT nach einem temp-Verzeichnis (f?r den
www-user beschreibbar) die per PHP-Einstellung "open_basedir"
festzulegen sei. Dabei ist doch "open_basedir" seit PHP5.3 ebenfalls
obsolet, oder??

Was tun??

Meldung EXT:rsaauth:
-----------------------------------------
[...] If left empty, typo3conf/ will be used and it is INSECURE! Make
sure that the directory is included into open_basedir if you use this
setting.
-----------------------------------------

PHP seit 5.3.0
-----------------------------------------
http://php.net/manual/de/features.safe-mode.php:
Dieses Feature ist seit PHP 5.3.0 DEPRECATED [...]
-----------------------------------------

Und open_basedir geh?rt doch zum safe_mode, oder bekomme ich da jetzt
etwas durcheinander??
Bitte, erleuchte mich doch jemand! ;-)

Gr?sse,
Michael
Michael
2011-01-05 23:53:57 UTC
Permalink
Post by Michael Ludwig
So, nun habe ich rsaauth mal installiert, und eben nach dieser
Installation fragt mich die EXT nach einem temp-Verzeichnis (f?r den
www-user beschreibbar) die per PHP-Einstellung "open_basedir"
festzulegen sei. Dabei ist doch "open_basedir" seit PHP5.3 ebenfalls
obsolet, oder??
[...]
Post by Michael Ludwig
Und open_basedir geh?rt doch zum safe_mode, oder bekomme ich da jetzt
etwas durcheinander??
Es stimmt zwar, dass die safe_mode Funktionalitaet von PHP ab Version
5.3 obsolete ist, aber "open_basedir" hat meiner Meinung nach nichts mit
safe_mode direkt zu tun und ist auch nicht obsolute (auch nicht in PHP 5.3).

Durch die PHP Konfiguration "open_basedir" kannst du einstellen (bzw.
einschraenken), auf welche Verzeichnisse PHP (und somit der Webserver,
also auch TYPO3) zugreifen darf.

Bei rsaauth erzeugt TYPO3 fuer jeden Login ein public/private key pair.
Der public key wird an den client gesendet, der private key wird in ein
Verzeichnis auf dem Server abgelegt. Dieses Verzeichnis ist das besagte
"temporaere" Verzeichnis und sollte natuerlich *NICHT* (z.B. per GET
request) von jedem zugreifbar sein, da sonst die private keys offen
liegen wuerden (obwohl, auch wenn, noch ein bischen mehr Aufwand
erforderlich ist, um das dann auszunutzen).

Um rsaauth in deiner TYPO3 Umgebung zu aktivieren, erstellst du also ein
neues Verzeichnis im Idealfall ausserhalb deines DocRoots, stellst
sicher, dass der Webserver Prozess darin lesen/schreiben kann (und NUR
der Webserver Prozess) und gibst jenes Verzeichnis in der
TYPO3-Extension-Konfiguration an.

Sollte in deiner PHP Konfiguration "open_basedir" verwendet werden, muss
dieses Verzeichnis dieser Konfiguration natuerlich hinzugefuegt werden,
da sonst (wie oben erklaert) der Webserver nicht darin lesen/schreiben kann.

Ob weitere Einstellungen erforderlich sind, wenn man safe_mode
verwendet, kann ich gerade nicht sagen. "safe_mode" ist sowieso doof :-)
und ab PHP 5.3 obsolete.

In deinem typo3conf/localconf.php file findest du bei richtiger
Konfiguration dann auch die folgende Zeile (oder aehnlich):

$TYPO3_CONF_VARS['BE']['loginSecurityLevel'] = 'rsa';

Und/statt 'BE' (backend), ggf. auch eine Zeile fuer 'FE' (frontend), je
nachdem, wo du rsaauth aktiviert hast.

Ich hoffe, das oben beschriebene stimmt alles - wenn nicht: ich lasse
mich gerne eines besseren belehren ;-)

Cheers
Michael
Michael Ludwig
2011-01-06 15:56:29 UTC
Permalink
Hallo Michael,

vielen Dank erstmal f?r deine ergiebige Antwort.
Ich habe Ubuntu 8.04 und dort ist per default kein open_basedir
Verzeichnis gesetzt.
Nun habe ich testweise das besagte Verzeichnis angegeben und es lief
?berhaupt nichts mehr.
Es gab nur noch Fehler vom Webserver, dass er dann auf ?berhaupt keine
Verzeichnisse mehr
zugreifen konnte.

Weiss jemand Rat? Sorry, genaue Fehlermeldungen habe ich nicht mehr im Kopf,
m?sste ich sonst heute abend nochmal dem Webserver entlocken, bin z.Zt
in der Firma...

Gr?sse,
Michael
Post by Michael Ludwig
So, nun habe ich rsaauth mal installiert, und eben nach dieser
Installation fragt mich die EXT nach einem temp-Verzeichnis (f?r den
www-user beschreibbar) die per PHP-Einstellung "open_basedir"
festzulegen sei. Dabei ist doch "open_basedir" seit PHP5.3 ebenfalls
obsolet, oder??
[...]
Post by Michael Ludwig
Und open_basedir geh?rt doch zum safe_mode, oder bekomme ich da jetzt
etwas durcheinander??
Es stimmt zwar, dass die safe_mode Funktionalitaet von PHP ab Version 5.3
obsolete ist, aber "open_basedir" hat meiner Meinung nach nichts mit
safe_mode direkt zu tun und ist auch nicht obsolute (auch nicht in PHP 5.3).
Durch die PHP Konfiguration "open_basedir" kannst du einstellen (bzw.
einschraenken), auf welche Verzeichnisse PHP (und somit der Webserver, also
auch TYPO3) zugreifen darf.
Bei rsaauth erzeugt TYPO3 fuer jeden Login ein public/private key pair. Der
public key wird an den client gesendet, der private key wird in ein
Verzeichnis auf dem Server abgelegt. Dieses Verzeichnis ist das besagte
"temporaere" Verzeichnis und sollte natuerlich *NICHT* (z.B. per GET
request) von jedem zugreifbar sein, da sonst die private keys offen liegen
wuerden (obwohl, auch wenn, noch ein bischen mehr Aufwand erforderlich ist,
um das dann auszunutzen).
Um rsaauth in deiner TYPO3 Umgebung zu aktivieren, erstellst du also ein
neues Verzeichnis im Idealfall ausserhalb deines DocRoots, stellst sicher,
dass der Webserver Prozess darin lesen/schreiben kann (und NUR der Webserver
Prozess) und gibst jenes Verzeichnis in der TYPO3-Extension-Konfiguration
an.
Sollte in deiner PHP Konfiguration "open_basedir" verwendet werden, muss
dieses Verzeichnis dieser Konfiguration natuerlich hinzugefuegt werden, da
sonst (wie oben erklaert) der Webserver nicht darin lesen/schreiben kann.
Ob weitere Einstellungen erforderlich sind, wenn man safe_mode verwendet,
kann ich gerade nicht sagen. "safe_mode" ist sowieso doof :-) und ab PHP 5.3
obsolete.
In deinem typo3conf/localconf.php file findest du bei richtiger
$TYPO3_CONF_VARS['BE']['loginSecurityLevel'] = 'rsa';
Und/statt 'BE' (backend), ggf. auch eine Zeile fuer 'FE' (frontend), je
nachdem, wo du rsaauth aktiviert hast.
Ich hoffe, das oben beschriebene stimmt alles - wenn nicht: ich lasse mich
gerne eines besseren belehren ;-)
Cheers
Michael
_______________________________________________
TYPO3-german mailing list
TYPO3-german at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Michael
2011-01-06 21:32:46 UTC
Permalink
On 07/01/11 02:56, Michael Ludwig wrote:

[...]
Post by Michael Ludwig
Nun habe ich testweise das besagte Verzeichnis angegeben und es lief
?berhaupt nichts mehr.
Es gab nur noch Fehler vom Webserver, dass er dann auf ?berhaupt keine
Verzeichnisse mehr zugreifen konnte.
Jep, das ist auch voellig korrekt, sofern du NUR das besagte Verzeichnis
in open_basedir angibst :-)

Wenn open_basedir nicht gesetzt wird, heisst das, es gibt keine
Einschraenkung; PHP darf also generell auf alle Verzeichnisse zugreifen
(entsprechende Berechtigungen auf Filesystem-Ebene vorausgesetzt).

Wenn open_basedir aktiviert ist, also ein Verzeichnis (oder mehrere)
angegeben ist, darf PHP nur auf dieses Verzeichnis zugreifen, keine
anderen. Bei dir bedeutet das nun wahrscheinlich, dass PHP
ausschliesslich auf das temporaere RSAauth Verzeichnis zugreifen darf,
welches du (als einziges) angegeben hast. Damit schliesst du natuerlich
das komplette DocRoot aus, also das web Verzeichnis (in der Regel
"htdocs"), in dem sich die TYPO3 Instanz befindet. Somit laeuft
logischerweise gar nichts mehr :-)

Die Loesung waere entweder, auf open_basedir zu verzichten (also
"deaktiviert" lassen, wie es bei deinem System vorher der Fall war), und
somit PHP nicht einzuschraenken - oder ALLE Verzeichnisse, auf die PHP
Zugriff haben soll, in der open_basedir Konfiguration anzugeben.

Mehrere Verzeichnisse werden jeweils mit einem Doppelpunkt voneinander
getrennt, ausser bei Windows: dort werden Semikolon verwendet. Zum
Beispiel (Debian/Ubuntu):

open_basedir =
"/var/www/htdocs:/usr/share/php5:/var/www/tmp:/var/www/rsaauth"

Weitere Infos zu "open_basedir":
http://php.net/manual/en/ini.core.php#ini.open-basedir

Cheers
Michael
Michael Ludwig
2011-01-06 22:12:09 UTC
Permalink
Hi,

also kann f?r die EXT rsaauth ruhig die Variable open_basedir ungesetzt
bleiben? Wenn PHP dann sowieso auf alle Verzeichnisse zugreifen darf, dann
ja auch auf das rsaauth-temp - Verzeichnis.

Oder macht es durchaus Sinn, die open_basedir Variable zu belegen?

Vielen Dank auf jeden Fall f?r Deine M?hen! Hast schon sehr geholfen! ;-)

Gr?sse,
Michael
Am 06.01.2011 22:32 schrieb "Michael" <typo3ml at schams.net>:
Michael
2011-01-06 23:09:05 UTC
Permalink
Post by Michael Ludwig
also kann f?r die EXT rsaauth ruhig die Variable open_basedir ungesetzt
bleiben? Wenn PHP dann sowieso auf alle Verzeichnisse zugreifen darf, dann
ja auch auf das rsaauth-temp - Verzeichnis.
Richtig. rsaauth benoetigt nicht zwangsweise die open_basedir
Konfiguration. Aber, WENN open_basedir verwendet wird, MUSS das
temporaere Verzeichnis dort mit eingetragen sein.
Post by Michael Ludwig
Oder macht es durchaus Sinn, die open_basedir Variable zu belegen?
Das kommt auf deine Sicherheitsanforderungen an :-) Meiner Meinung nach
macht open_basedir auf jeden Fall Sinn, besonders wenn mehrere virtuelle
Hosts auf dem Server laufen und alle unter einem user (z.B. www-data).
Ohne open_basedir kann unter Umstaenden ein PHP Script von virtualHost-1
Dateien von virtualHost-2 lesen. Hat jeder virtuelle Host seine eigene
open_basedir Konfiguration kann man jenes unterbinden.
Post by Michael Ludwig
Vielen Dank auf jeden Fall f?r Deine M?hen!
Kein Problem :-)

Cheers
Michael

Loading...