htscanner

Apache, Lighttpd, nginx, Cherokee
cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin

htscanner

Post by cirox » 2007-04-27 21:19

Ich habe mich an die Installationsanleitung gehalten:
    * Run phpize in the htaccess directory. Use the phpize script from the php version you wish to compile htscanner for. * run the configure script the phpize create with --enable-htscanner * run make * now install the created module by copying the modules/htscanner.so file to the php extension directory. or use make install * copy the htscanner.ini configuration file to the php conf.d directory. If you're php version doesn't support that (eg on Suse) then you can add the settings from htscanner.ini to you're php.ini
Das phpize hab ich aufgerufen von meinem php5, wo auch das selbsgebaute binary drin liegt.

Ich bekomme den htaccess Scanner aber weder in der info.php angezeigt noch das er mir irgendwelche php_value_* Werte zulässt.

php_error.log sagt gar nichts. Das configure & make ist fehlerfrei durchgelaufen und natürlich hab ich die extension auch in den richtigen Pfad zu den anderen extensions kopiert und die php.ini angepasst. Ist ja nicht das erste Mal, dass ich sowas mache.

Mich wundern nur ein paar Sachen:

1. Was bedeutet das in der install vom author?:
    Make sure you have the development package installed if you installed php from a binary package.
2.
Auf der offiziellen Seite steht für die neueste Version als Vorraussetzung:

PEAR Package: PEAR Installer 1.4.8 or newer

Habe nichts beim ./configure gemerkt, das er den angemeckert hat.

gruß cirox

cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin

Re: htscanner

Post by cirox » 2007-04-28 19:10

So die Lösung ist folgende:

im htscanner Verzeichnis ausführen:

Code: Select all

/pfad_zu_phpize (von der PHP Version, die man einsetzen will)
./configure 
--enable-htscanner 
--with-php-config=/pfad_zur_kompilierten_php_version/bin/php-config

Code: Select all

make && make install
Jetzt stellt sich für mich aber eine ganz andere Frage. Da ja jeder nun gewisse php Einstellungen ändern kann, steigen die Anforderungen an die Security vom Webserver. Ich mach dazu aber ein anderes Thema auf: fcgi apache2 mod_security chrooted

cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin

Re: htscanner

Post by cirox » 2007-05-05 22:33

Kann mir jemand sagen, warum der htscanner keine geänderten Werte in einer php.ini übernimmt? Ich kann z. Bsp. das FallBack Root Dir nicht anpassen.

Als Solches funktioniert aber der htscanner.

Jedes Web hat eine eigene php.ini. Man kann die htscanner Erweiterung aktivieren/deaktivieren, indem man das entprechende .so File aus der php.ini auskommentiert/einkommentiert.

Ich stolpere auch über folgende Zeilen in der htscanner.c:

Code: Select all

/* {{{ PHP_INI
 */
PHP_INI_BEGIN()
    STD_PHP_INI_ENTRY("htscanner.config_file", ".htaccess", PHP_INI_SYSTEM, OnUpdateString, config_file, zend_htscanner_globals, htscanner_globals)
	STD_PHP_INI_ENTRY("htscanner.default_docroot", "/", PHP_INI_SYSTEM, OnUpdateString, default_docroot, zend_htscanner_globals, htscanner_globals)
#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 0)
	STD_PHP_INI_ENTRY("htscanner.default_ttl", "300", PHP_INI_SYSTEM, OnUpdateLong, default_ttl, zend_htscanner_globals, htscanner_globals)
	STD_PHP_INI_ENTRY("htscanner.stop_on_error", "0", PHP_INI_SYSTEM, OnUpdateLong, stop_on_error, zend_htscanner_globals, htscanner_globals)
#else
	STD_PHP_INI_ENTRY("htscanner.default_ttl", "300", PHP_INI_SYSTEM, OnUpdateInt, default_ttl, zend_htscanner_globals, htscanner_globals)
	STD_PHP_INI_ENTRY("htscanner.stop_on_error", "0", PHP_INI_SYSTEM, OnUpdateInt, stop_on_error, zend_htscanner_globals, htscanner_globals)
#endif
PHP_INI_END()
/* }}} */

cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin

Re: htscanner

Post by cirox » 2007-05-11 14:13

Kann das folgende Problem mal bitte :) jemand nachstellen. Vielen Dank! Oder bin ich der einzige hier ;-)

Also der htscanner funktioniert soweit. Bloss nicht in Verbindung mit:

Code: Select all

<IfModule mod_php.c>
  php_value register_globals 1
  php_value display_errors 1
</IfModule>
Das heisst "register_globals" wird zar als lokaler! Wert in der jeweiligen php.ini als "aktiviert" angezeigt aber die eigentliche Funktion ist nicht aktiv. Kontrollieren kann man das, wenn man "register_globals" in der php.ini aktiviert ( bei einem Programm, welches normalerweise Fehlermeldungen rausschmeisst, wenn register_globals nicht aktiv ist). Wenn es in der php.ini allerdings "off" ist und man möchte es mit eben diesem htscanner in einer .htaccess Datei aktivieren ist das alles ohne Funktion ( wie gesagt in der php.ini wird dann gloabal off und local on) angezeigt.

Dagegen funktioniert das Spielchen mit display_errors wunderbar.

Auch übernimmt der htscanner keine veränderten Werte in einer jeweiligen php.ini ( zum Bsp.: doc_root) . In der php.ini kann man bloss das Modul deaktivieren indem man die Zeile mit der extension löscht.

Das doc_root kann bloss vor dem "make" Befehl geändert werden indem man die Zeilen im Code ( siehe Post davor ) ändert.

Ich hab das schon mit verschiedenen PHP Versionen probiert und mit verscheidenen htscanner Versione. Überall das Selbe.

Was kann das sein, bzw. ist das bei Euch auch so?

kase
Posts: 1031
Joined: 2002-10-14 22:56

Re: htscanner

Post by kase » 2007-05-11 15:11

Liegt es evtl. daran, dass display_errors PHP_INI_ALL ist, und register_globals PHP_INI_PERDIR?

Was macht eigentlich dein Vorhaben, die php-fcgi Binarys in eine chroot zu stecken? Gibts da schon Fortschritte?

cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin

Re: htscanner

Post by cirox » 2007-05-16 23:25

Mein Vorhaben die Fast-CGI Prozesse in ein Chroot zu stecken ist erstmal ein wenig aufgeschoben wegen Zeitmangel. Steht aber ziemlich weit oben auf der To-Do lIste. Es scheint mir wohl der wirksamste Schutz zu sein neben all den anderen bekannten Massnahmen. Wahrscheinlich muss ich wirklich dahergehen ein ganz normales Chroot zu bauen mit allen libraries, benötigten Datein ( passwd ... etc. Bleibt aber dann das Problem mit den Mails, was sicherlich für die Webuser recht unschön ist.

Was den htscanner angeht liegt es nicht an "PHP_INI_PERDIR". Der Grund ist leider anders und im Moment auch nicht behebar. Das gilt für magic quotes, register_globals, register_long_arrays und noch ein paar andere.

[2007-05-14 09:34 UTC] pajoye (Entwickler):
php called the extension init after having
processed the input data.

There is a couple of solution to this problem. More about that once I
know which one will work with 5.x and 6.x.

Sidenote: register_long_arrays is also removed from php in 6.x. That
means only the sapi filters may be a problem (if it they use ini
settings).
Also ab PHP 5.3 könnte das behoben sein.

kase
Posts: 1031
Joined: 2002-10-14 22:56

Re: htscanner

Post by kase » 2007-05-17 13:20

Wenn du noch 1-2 Wochen wartest, habe ich wahrscheinlich ein Howto für dich bezüglich der chrooted fastcgi-php Prozesse. Bei mir auf meiner VMware läuft es bereits. Habe aber bis nächste Woche Freitag sogut wie keine Zeit, wegwegen ich wohl frühestens Samstag in einer Woche beginnen werde.

cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin

Re: htscanner

Post by cirox » 2007-05-21 10:09

Wäre natürlich Klasse ..... :)

Hier nochmal aktuelle Probleme des htscanners:

- php.ini Einstellungen werden nicht übernommen
- register_globals / register_long_arrays / magic_quotes_gpc -> nicht veränderbar
- [EDIT] er findet das docroot nicht, bzw. er probiert alles durch von "/" aus. Das sieht dann so aus:

Code: Select all

007 01:32:09] PHP Warning:  Unknown: open_basedir restriction in effect. File(/.htaccess) is not within the allowed path(s): (/var/www/webxx/html:/var/www/webxx/phptmp:/var/www/webxx/files:/var/www/webxx/atd:/usr/share/php) in Unknown on line 0
[21-May-2007 01:32:09] PHP Warning:  Unknown: open_basedir restriction in effect. File(/var/.htaccess) is not within the allowed path(s): (/var/www/webxx/html:/var/www/webxx/phptmp:/var/www/webxx/files:/var/www/webxx/atd:/usr/share/php) in Unknown on line 0
[21-May-2007 01:32:09] PHP Warning:  Unknown: open_basedir restriction in effect. File(/var/www/.htaccess) is not within the allowed path(s): (/var/www/webxx/html:/var/www/webxx/phptmp:/var/www/webxx/files:/var/www/webxx/atd:/usr/share/php) in Unknown on line 0
[21-May-2007 01:32:09] PHP Warning:  Unknown: open_basedir restriction in effect. File(/var/www/webxx/.htaccess) is not within the allowed path(s): (/var/www/webxx/html:/var/www/webxx/phptmp:/var/www/webxx/files:/var/www/webxx/atd:/usr/share/php) in Unknown on line 0
Last edited by cirox on 2007-07-05 12:48, edited 1 time in total.

cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin

Re: htscanner

Post by cirox » 2007-07-04 22:12

cirox wrote::
- php.ini Einstellungen werden nicht übernommen
nachdem ich nun mit dem Entwickler Rücksprache gehalten habe und nochmal alles durchgegangen bin, weil es mit dem doc_root immer noch nicht funktioniert hat, bzw. den spezifischen php.ini Einstellungen, bin ich heute auf eine geniale Webseite gestossen:

http://cha.homeip.net/blog/archives/200 ... httpd.html

und richtig da steht doch allen Ernstes:

Code: Select all

htscanner.default_docroot="/var/www/html"
also schlicht und einfach ein "htscanner" davor in der php.ini und alles wird gut und das error_log des Apache quiillt nicht mehr über, da man das doc_root jetzt für jeden User einstellen kann per spezifischer php.ini. Und das sieht dann so aus in der info.php:

Code: Select all

htscanner.default_docroot	/var/www/web1/html	/var/www/web1/html
und so steht es in den doc der original Sourcen, was bei mir mir nie funktioniert hat:

Code: Select all

[htscanner]
extension="htscanner.so"

; The configuration file htscanner needs to scan for php_* directives
config_file=".htaccess"

; The fallback docroot when htscanner can't determine the current docroot
default_docroot="/"
default_ttl=300

; Stop when an error occured in RINIT (no document root, cannot get path_translated,...)
stop_on_error = 0
also ist das hier richtig, wenn man eine ähnliche Konfiguration wünscht wie ich:

Code: Select all

[htscanner]
htscanner.config_file = ".htaccess"
htscanner.default_docroot = "/var/www/web1/html"
htscanner.stop_on_error = 0
htscanner.default_ttl = 300
:)