cgiwrap Konfig-Probleme, wer kann helfen !? :-/

Apache, Lighttpd, nginx, Cherokee
Post Reply
footh
Posts: 84
Joined: 2002-12-02 02:33
 

cgiwrap Konfig-Probleme, wer kann helfen !? :-/

Post by footh »

Hallo Zusammen!

Ich versuche schon seit längerem das CGI-Problem in Verbindung mit dem Apachen in den Griff zu bekommen und habe da auch schon unzählige Tools probiert, keine Besserung. Ich meine das Problem, daß CGIs, die in perl geschrieben sind, mit den Rechten des Apachen laufen.

CGIWRAP soll da Abhilfe schaffen, nur läuft das nicht so recht.
Vielleicht ist hier jemand, der bereit ist mir einmal zu erklären was ich falsch bei der Konfig mache?

Ich bin so vorgegangen:

Das Modul mod_cgiwrap.c besorgt und mit apxs in den Apachen als Modul einkompiliert, die httpd.conf entsprechend angepasst.

Nun habe ich mir noch das aktuelle Paket cgiwrap-3.9 für mod_cgiwrap besorgt und mit diesen Optionen kompiliert und installiert:

Code: Select all

./configure --with-perl=/usr/bin/perl --with-install-dir=/usr/sbin --with-cgi-dir=/cgi-bin --with-httpd-user=wwwrun --with-check-shell --with-minimum-uid=631 --with-minimum-gid=101 --with-logging-syslog=info --with-logging-file=/var/log/httpd/cgiwrap_log --without-redirect-stderr --with-php=/usr/share/php --with-php-interpreter --with-rlimit-cpu=60 --with-docroot-mode --with-docroot-owner --with-wall
Nun habe ich im Apachen die Module mod_cgi deaktiviert und mod_cgiwrap aktiviert. Nach diesem HowTo habe ich dann noch die bestehenden Variablen in der httpd.conf ersetzt:

Code: Select all

AddHandler cgi-script .cgi .pl .py
AddHandler cgi-script-debug .cgid 
In der httpd.conf sieht es also jetzt ungefähr so aus:

Code: Select all

##########################################
#Docroot
/srv/www
#
LoadModule cgiwrap_module     /usr/lib/apache/mod_cgiwrap.so
#
AddModule mod_cgiwrap.c
#
#
# set /cgi-bin for CGI execution
#
<Location /cgi-bin>
AllowOverride None
Options +ExecCGI +IncludesNoExec
SetHandler cgi-script
</Location>
#
AddHandler cgi-script .cgi .pl .py
AddHandler cgi-script-debug .cgid 
#
#
Der vhost in der ich ein .cgi-Script über cgiwrap laufen lassen möchte sieht in der confixx_vhost.conf so aus:

Code: Select all

<VirtualHost IP-Adresse:80>
ServerName web2.domain.de
DocumentRoot /home/www/web2/html
ServerAlias  web2.domain.de 
ScriptAlias /cgi-bin/ /home/www/web2/html/cgi-bin/
#User web2
#Group ftponly
php_admin_value open_basedir /home/www/web2/
php_admin_value upload_tmp_dir /home/www/web2/phptmp/
</VirtualHost>
Nach einem rcapache restart gebe ich nun http://domain.de/cgi-bin/env.cgi im Browser ein und heraus kommt dieses:

Code: Select all

CGIWrap Error: User not found

--------------------------------------------------------------------------------

CGIWrap was unable to find the user '-' in the password file on this server. 

Check the URL and try again. 


Server Data: 

Server Administrator/Contact: webmaster@domain.de 
Server Name: web2.domain.de 
Server Port: 80 
Server Protocol: HTTP/1.1 
Virtual Host: web2.domain.de 

Request Data: 

User Agent/Browser: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) 
Request Method: GET 
Remote Address: 80.143.248.118 
Remote Port: 3942 
Extra Path Info: /-/cgi-bin/env.cgi
Ich bin jetzt überhaupt erstmal froh, daß der Wrapper ein Lebenszeichen von sich gibt. Was mich aber irritiert ist:

Code: Select all

CGIWrap was unable to find the user '-' in the password file on this server.
Warum sucht CGIWRAP nach einem User Namens "-"??? Und in welchen Passwordfile sucht er diesen User? Ich habe das nirgenswo angegeben. Wenn doch ein Script auf dem Account web2 gestartet wird, dann müßte der Wrapper doch eigentlich nach dem User web2 fahnden.

Dann kommt noch dazu, daß wenn ich in der confixx_vhost.conf die Rauten davor entferne:

Code: Select all

User web2
Group ftponly
..und dann noch mal diese url eingebe http://domain.de/cgi-bin/env.cgi kommt das hier:

Code: Select all

Script Error
The script did not produce proper HTTP headers. Please see the error log to see the detail of the errors. Depending on the server configuration, you can also run this script under CGIWrap debugging. Usually, either rename or link the script temporarily to a file which ends with .cgid extension, or add a AddHandler cgi-script-debug .cgi line to your .htaccess file.
Ich blicke da nicht mehr durch, was mache ich hier alles falsch?

MFG
footh
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim
 

Re: cgiwrap Konfig-Probleme, wer kann helfen !? :-/

Post by oxygen »

Warum benutzt du nicht einfach SuExec wie Confixx das vorsieht?
footh
Posts: 84
Joined: 2002-12-02 02:33
 

Re: cgiwrap Konfig-Probleme, wer kann helfen !? :-/

Post by footh »

øxygen wrote:Warum benutzt du nicht einfach SuExec wie Confixx das vorsieht?
..weil SuExec nicht verhindert, das man mit Hilfe eines .cgi-Scripts auf der Festplatte des Servers herumsurfen kann. Mit SuExec werden cgis immernoch mit den Rechten des Apachen ausgeführt und das möchte ich mit cgiwrap verhindern.

MFG
footh
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim
 

Re: cgiwrap Konfig-Probleme, wer kann helfen !? :-/

Post by oxygen »

Nein, das ist quatsch. Mit SuExec werden die Scripts mit den Rechten des Users ausgeführt der im Vhost über User bzw. SuexecUserGroup angegeben ist. Kannst du gerne z.B. hier nachlesen: http://httpd.apache.org/docs-2.0/suexec.html
footh
Posts: 84
Joined: 2002-12-02 02:33
 

Re: cgiwrap Konfig-Probleme, wer kann helfen !? :-/

Post by footh »

Hallo!

Du mußt nur mal ein wenig googlen, um die Bestätigung zu bekommen, daß SuExec nicht ausreicht und cgiwrap wahrscheinlich Abhilfe schafft. Und überhaupt, wenn SuExec es ermöglicht, Scripts nur mit den Rechten des Users auszuführen, wie kann dann dieser User auf der ganzen Festplatte herumsurfen, ja sogar im tmp-Verzeichnis der Festplatte schreiben, wenn dieser User "nur" Userrechte hat ?
Das ist jetzt nun schon bei drei Servern der Fall. Oder ist das nur bei Susesystemen so und bei Debian nicht? Kann ja sein, daß SuExec dort ausreicht.

Wenn SuExec den User also nur als User laufen lassen würde, dann dürfte so etwas nicht passieren. Einige meinen, daß es völlig normal wäre, das cgis auf der Platte herumsurfen können, ich finde es nicht normal.

Daher hatte ich hier um Hilfe gebeten, wie ich diesen Wrapper am besten Aufsetze, da ich da nun schon seit Tagen dransitze. :roll:


MFG
footh
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim
 

Re: cgiwrap Konfig-Probleme, wer kann helfen !? :-/

Post by oxygen »

Natürlich schließen Userrechte ein z.B. in /tmp zu schreiben, ob du das normal findest tut da nichts zur Sache. Auch mit SuSE oder Debian hat das rein gar nichts zu tun.

Es gibt da nur 2 Möglichkeiten das zu verhindern:
a) Keine Serverseitigen Scripts (also kein Perl, PHP, Python, weder per CGI noch per Modul)
b) Für jeden User eine chroot Umgebung
footh
Posts: 84
Joined: 2002-12-02 02:33
 

Re: cgiwrap Konfig-Probleme, wer kann helfen !? :-/

Post by footh »

Ok, vielen Dank!

Möglichkeit a) fällt für mich leider flach.
Möglichkeit b) wäre glaube ich in meinem Fall der bessere Weg.
Kennst du für die Möglichkeit b) ein gutes HowTo, um Webaccount-Usern in ihren Accounts mit allen Funktionalitäten einzusperren?
Ich weiß, es gibt viele Howtos dazu, aber was könntest du mir empfehlen, wie ich da genau vorgehen muß?

MFG
footh
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim
 

Re: cgiwrap Konfig-Probleme, wer kann helfen !? :-/

Post by oxygen »

Sorry, kann ich leider nicht. Diese Sache ist wirklich nicht trivial.
Ich würde eher empfehlen SuExec + suPHP zu benutzten, da mpm_perchild unter Linux zur Zeit ja noch flach fällt. Mit zusätzlichen Sicherheitsmaßnahmen wie:
grsecurity/pax
mod_security
/tmp als nosuid,noexec
unnötige Anwendungen (Compiler etc) deinstallieren
weiter Ansätze findest du hier im Forum ;)
erreicht man ein ausreichendes Maß an Sicherheit ohne die User zu sehr einzuschränken. Viele User hier im Forum (inkl. mir ;) ) haben mit dieser Konfiguration gute Erfahrungen gemacht.
Post Reply