Entwicklungsumgebung/Apache: Unterschied zwischen den Versionen
(SSL-Konfiguration für den Webserver) |
(ssl) |
||
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
__NOTOC__ | __NOTOC__ | ||
{{ | {{EditStatus|1|Kirmse}} | ||
Zeile 228: | Zeile 228: | ||
<VirtualHost _default_:443> | <VirtualHost _default_:443> | ||
DocumentRoot /var/www | DocumentRoot /var/www-ssl/ | ||
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
Zeile 329: | Zeile 329: | ||
a2enmod userdir | a2enmod userdir | ||
In der Datei <code>/etc/apache2/ | In der Datei <code>/etc/apache2/mods-available/userdir.conf</code> werden folgende Zeilen ergänzt: | ||
ergänzt: | |||
<source lang="text"> | <source lang="text"> | ||
UserDir html_public | <IfModule mod_userdir.c> | ||
UserDir html_public | |||
UserDir disabled root | |||
<Directory /home/teacher/*/ | <Directory /home/teacher/*/public_html> | ||
Options Indexes SymLinksIfOwnerMatch | Options Indexes SymLinksIfOwnerMatch | ||
AllowOverride AuthConfig Limit FileInfo | AllowOverride AuthConfig Limit FileInfo Indexes | ||
<LimitExcept GET POST> | <LimitExcept GET POST OPTIONS> | ||
Order deny,allow | Order deny,allow | ||
Deny from all | Deny from all | ||
</LimitExcept> | </LimitExcept> | ||
<Limit GET POST> | <Limit GET POST OPTIONS> | ||
Order allow,deny | Order allow,deny | ||
Allow from all | Allow from all | ||
Zeile 351: | Zeile 349: | ||
</Directory> | </Directory> | ||
<Directory /home/students/*/ | <Directory /home/students/*/public_html> | ||
Options Indexes SymLinksIfOwnerMatch | Options Indexes SymLinksIfOwnerMatch | ||
AllowOverride AuthConfig Limit FileInfo | AllowOverride AuthConfig Limit FileInfo Indexes | ||
<LimitExcept GET POST> | <LimitExcept GET POST OPTIONS> | ||
Order deny,allow | Order deny,allow | ||
Deny from all | Deny from all | ||
</LimitExcept> | </LimitExcept> | ||
<Limit GET POST> | <Limit GET POST OPTIONS> | ||
Order allow,deny | Order allow,deny | ||
Allow from all | Allow from all | ||
</Limit> | </Limit> | ||
</Directory> | </Directory> | ||
</IfModule> | |||
</source> | </source> | ||
Zeile 372: | Zeile 370: | ||
Damit alle neuen Nutzer später automatisch über eine Webseite verfügen können, sind weitere Vorarbeiten nötig: | Damit alle neuen Nutzer später automatisch über eine Webseite verfügen können, sind weitere Vorarbeiten nötig: | ||
mkdir /etc/skel/ | mkdir /etc/skel/public_html | ||
cd /usr/share/doc/adduser/examples/adduser.local.conf.examples/skel.other | cd /usr/share/doc/adduser/examples/adduser.local.conf.examples/skel.other | ||
cp ./index.html /etc/skel/html_public | cp ./index.html /etc/skel/html_public | ||
Zeile 381: | Zeile 379: | ||
=== Test von Userdir === | === Test von Userdir === | ||
Beim User <code>mmustermann</code> wurde im Homeverzeichnis das Unterverzeichnis <code> | Beim User <code>mmustermann</code> wurde (Dieser Nutzer kann zu Testzwecken nach der Anleitung im Kapitel [[Entwicklungsumgebung/LDAP|Entwicklungsumgebung LDAP]] angelegt werden) im Homeverzeichnis das Unterverzeichnis <code>public_html</code> angelegt und eine Datei <code>index.html</code> erstellt. Die Rechte wurden für das Verzeichnis mit 755 und für die Datei mit 644 gesetzt. Der Owner wurde auf <code>mmustermann</code> geändert, die Gruppe <code>root</code> gelassen. Der Aufruf erfolgt mit | ||
lynx http://localhost/~mmustermann/index.html | lynx http://localhost/~mmustermann/index.html | ||
Zeile 393: | Zeile 391: | ||
aptitude install php5-cli php5-common php5-mhash php-pear | aptitude install php5-cli php5-common php5-mhash php-pear | ||
a2enmod suexec rewrite include expires ident | |||
Zeile 417: | Zeile 417: | ||
Die letzte Zeile ist eine Zeile! | Die letzte Zeile ist eine Zeile! | ||
Und dann wird noch die | Und dann wird noch die Datei [[Entwicklungsumgebung/Dateiliste/phpldapadmin|/etc/phpldapadmin/config.php]] so angepasst, dass | ||
* ein Login per uid, | * ein Login per uid, | ||
Zeile 465: | Zeile 465: | ||
# SASL auth | # SASL auth | ||
$ldapservers->SetValue($i,'server','sasl_auth',true); | # auskommentieren | ||
$ldapservers->SetValue($i,'server','sasl_mech','PLAIN'); | #$ldapservers->SetValue($i,'server','sasl_auth',true); | ||
$ldapservers->SetValue($i,'server','sasl_realm','EXAMPLE.COM'); | #$ldapservers->SetValue($i,'server','sasl_mech','PLAIN'); | ||
$ldapservers->SetValue($i,'server','sasl_authz_id',null); | #$ldapservers->SetValue($i,'server','sasl_realm','EXAMPLE.COM'); | ||
$ldapservers->SetValue($i,'server','sasl_authz_id_regex','/^uid=([^,]+)(.+)/i'); | #$ldapservers->SetValue($i,'server','sasl_authz_id',null); | ||
$ldapservers->SetValue($i,'server','sasl_authz_id_replacement','$1'); | #$ldapservers->SetValue($i,'server','sasl_authz_id_regex','/^uid=([^,]+)(.+)/i'); | ||
$ldapservers->SetValue($i,'server','sasl_props',null); | #$ldapservers->SetValue($i,'server','sasl_authz_id_replacement','$1'); | ||
#$ldapservers->SetValue($i,'server','sasl_props',null); | |||
Zeile 503: | Zeile 504: | ||
?> | ?> | ||
</pre> | </pre> | ||
Die Anmeldung erfolgt nun vom Client aus mittels Webbrowser unter der Adresse https://alix/phpldapadmin/ | |||
:[[Datei:PhpLDAPadmin_UID.PNG|PhpLDAPadmin per UID]] | |||
:''Abbildung: PhpLDAPadmin per UID'' | |||
In der Entwicklungsumgebung geben Sie folgende Werte ein: | |||
User Name: root | |||
Passwort: schule | |||
Zeile 518: | Zeile 529: | ||
Konfiguration: | Konfiguration: | ||
/etc/webalizer.conf | /etc/webalizer/webalizer.conf | ||
Reports erzeugen (Text noch unvollständig): | Reports erzeugen (Text noch unvollständig): | ||
cronjob.... | cronjob.... | ||
=== phpSysInfo === | |||
Damit immer volle Kontrolle über den Server selbst möglich ist, wird die Analysesoftware "phpsysinfo" installiert: | |||
aptitude install phpsysinfo | |||
ln -s /usr/share/phpsysinfo /var/www-ssl/phpsysinfo | |||
Konfiguration: | |||
/etc/phpsysinfo/config.php | |||
Text noch unvollständig... | |||
Aufgerufen wird diese Informationsseite über: https://alix.delixs-schule.de/phpsysinfo | |||
Zeile 553: | Zeile 581: | ||
---- | ---- | ||
=== WebDAV-Client === | === WebDAV-Client === | ||
Zeile 602: | Zeile 631: | ||
Hans-Dietrich Kirmse, Klaus Werner 2009 | Hans-Dietrich Kirmse, Klaus Werner 2009 | ||
[[Kategorie:DebianSqueeze]] |
Aktuelle Version vom 16. Oktober 2013, 12:25 Uhr
Diese Seite ist momentan eine Baustelle im Zustand: 1
-
0
-
1
-
2
-
3
-
4
Der Webserver Apache
Installation von Apache
Der Apache HTTP (Web)-Server wird als traditionelles non-threaded-Modell installiert, was als nicht ganz so schnell wie das threaded-Modell, aber dafür als stabiler betrachtet werden kann.
Die Installation erfolgt mit dem Befehl:
aptitude install apache2-mpm-prefork
Dabei wurde der Webserver Apache auch gleich gestartet. Die Kontrolle auf Funktionstüchtigkeit erfolgt sofort nach der Installation mit dem Text-Browser "lynx", indem dieser über
lynx http://localhost
aufgerufen wird. Es erscheint eine Webseite mit dem Inhalt "It works!".
Mit der Taste "q" beenden Sie den Textbrowser wieder und kommen so in Ihre Shell zurück.
Diese Seite kann künftig unter /var/www/index.html
durch eine eigene Seite ersetzt werden.
Konfiguration von Apache
In folgenden Dateien und Verzeichnissen finden Sie die Konfigurationen des Webservers:
- /etc/apache2/apache2.conf - Die Steuerdatei, aus der alle weiteren Konfigurationen geladen werden.
- /etc/apache2/envvars - Die Steuerdatei mit Variablendefinitionen für den apache Daemon selbst.
- /etc/apache2/httpd.conf - Die Steuerdatei für eigene Konfigurationen.
- /etc/apache2/ports.conf - Die Steuerdatei für Ports, auf die der Webserver hören soll.
- /etc/apache2/conf.d/ - Das Verzeichnis mit zusätzlichen Einstellungen, wie Zeichensätzen, Sicherheitseinstellungen u.s.w
- /etc/apache2/mods-available/ - Das Verzeichnis mit verfügbaren Fremdmodulen. Hier aufgeführte Module werden nicht automatisch geladen.
- /etc/apache2/mods-enabled/ - Das Verzeichnis, aus der alle Fremdmodule geladen werden. Verändern Sie hier nichts per Hand!
- /etc/apache2/sites-available/ - Das Verzeichnis mit verfügbaren virtuellen Hosts. Hier aufgeführte virtuelle Hosts werden nicht automatisch geladen.
- /etc/apache2/sites-enabled/ - Das Verzeichnis, welches Konfigurationen für virtuelle Hosts enthält
Test von Apache
Um ein CGI-Script zu testen, erstellen Sie folgendes Script
<source lang="perl">
- !/usr/bin/perl
print "Content-type: text/html\n\n"; print '<html><body>';
print '
It works!
';
print '</body></html>'; </source>
und speichern es in /usr/lib/cgi-bin
mit dem Dateinamen "test.pl" ab.
Der Aufruf des Scripts erfolgt an der Konsole mit
lynx http://localhost/cgi-bin/test.pl
Ein Umbenennen der Datei mit der Endung ".cgi" und der entsprechende Aufruf sollte ebenso klappen.
Zertifikate für den Webserver erstellen und bereitstellen
Generieren Sie zuerst einen privaten Serverschlüssel ("alix.key") ohne Passwort!
openssl genrsa -out alix.key 1024
Da kommt nur:
Generating RSA private key, 1024 bit long modulus ....................++++++ ............................++++++ e is 65537 (0x10001)
der erzeugte alix.key sieht dann so aus:
-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQDCDvkOgSexJ1bpf1mFY2ffyOE0ZS9Hd/KFLGq8zVhLYvEAhlu7 jstzfSE3Mz02Oj/z+xACTtCEpU8fSh0Kn6ma9KnLw/rWR9b/Cip5PjPsu2afijin M08emVKjxUSDVUGJH6CSwwg7J4wRoMWDa5jl3bxtYi9hrfobsh7jNJAUawIDAQAB AoGAHJVB/+3sH77QoWHdmLUUlrSq3yHMPfWf5hetvRNt3uS65L3lgxG8S81xeAT3 Dia0RsaDDCP5uJ/0sIIlFux/eY7C9qRBrxwrbl27FokrVeNZC8+qJyMNLttz6Edi K+0ysWi/W0FEZWqlibl6qW1HKN+H6y1jvqlELzvjUpuHJqECQQDk/SsdXG8bWdgK 6BGHgCFtfEBkpocjkwTUOItRN+qThOvkOOSjfQ7OEXLBWG5uBtBsi6Vb7FBaT5mA 0Pelw1VRAkEA2PMAaN74WXq5izHZc8TD/kAbgFL1khLFcfeZi9Nv9XYbdO8DUPXL BOFuBaGslPWOpd2D9x745sBf35tzxREO+wJAX6uaeNDmpsG5rozYzgjtbmXMLYEZ 0vYYvWXGZy96dRnCyH4woFGeft/xVvBQau2z5LXPZ4Fq7OB23Mfxv7LFkQJALYzX yS0Hd8IMsu0EewoVHIzZOVgxtzm5uvQBiRobp63kleiZCaaRubSbJROM6Lml+a1I x9n46Hn7pzc8V2P9gQJBAIu+4eV0++ch8nr/wQdWGcBnmiwA0JPXnvuRQFcUcZ9P c6wmnHJhfq4d0Zuhd5YeomeaFBu6LzfZE4bByo4vRJ4= -----END RSA PRIVATE KEY-----
Bewahren Sie diesen Schlüssel gut auf und veröffentlichen ihn keinesfalls.
Dann generieren Sie als zweiten Schritt eine Zertifikatsanfrage ("alix.csr")
openssl req -new -key alix.key -out alix.csr
Die folgenden 4 Eingaben sind so einzugeben (sonst einfach "."):
Country Name (2 letter code) [AU]:DE State or Province Name (full name) [Some-State]:Germany Organization Name (eg, company) [Internet Widgits Pty Ltd]:delixs-Schule Common Name (eg, YOUR name) []:alix
Am Wichtigsten hierbei ist, das der "Common Name" unbedingt mit dem späteren exakten Aufrufnamen im Webserver übereinstimmen muß.
Diese Datei "alix.csr" sollte dann etwa so aussehen:
-----BEGIN CERTIFICATE REQUEST----- MIIBhTCB7wIBADBGMQswCQYDVQQGEwJkZTEQMA4GA1UECBMHR2VybWFueTEWMBQG A1UEChMNRGVsaXhzLVNjaHVsZTENMAsGA1UEAxMEYWxpeDCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEAwg75DoEnsSdW6X9ZhWNn38jhNGUvR3fyhSxqvM1YS2Lx AIZbu47Lc30hNzM9Njo/8/sQAk7QhKVPH0odCp+pmvSpy8P61kfW/woqeT4z7Ltm n4o4pzNPHplSo8VEg1VBiR+gksMIOyeMEaDFg2uY5d28bWIvYa36G7Ie4zSQFGsC AwEAAaAAMA0GCSqGSIb3DQEBBQUAA4GBAC5SSYCxF6AFjgJnUmadIbOyyMqgu/pq MBS6miJEeCbuBM4/0QT/Kj6AUtOTN53+d5owPt/QoV/oQxHP2gE6TnS4hqHDy2FW zLCzopRydMdHC69+VXEaBeoi7mD8jYStsFfpgY412tZsC7UpzhPA0uPXjjXBLN2X b7tbZsq6M0fn -----END CERTIFICATE REQUEST-----
Überprüfen Sie nun unbedingt alle Angaben auf Korrekte Schreibweise mit:
openssl req -noout -text -in alix.csr
Die Ausgabe des Befehls sollte so aussehen:
Certificate Request: Data: Version: 0 (0x0) Subject: C=de, ST=Germany, O=delixs-Schule, CN=alix Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:c2:0e:f9:0e:81:27:b1:27:56:e9:7f:59:85:63: 67:df:c8:e1:34:65:2f:47:77:f2:85:2c:6a:bc:cd: 58:4b:62:f1:00:86:5b:bb:8e:cb:73:7d:21:37:33: 3d:36:3a:3f:f3:fb:10:02:4e:d0:84:a5:4f:1f:4a: 1d:0a:9f:a9:9a:f4:a9:cb:c3:fa:d6:47:d6:ff:0a: 2a:79:3e:33:ec:bb:66:9f:8a:38:a7:33:4f:1e:99: 52:a3:c5:44:83:55:41:89:1f:a0:92:c3:08:3b:27: 8c:11:a0:c5:83:6b:98:e5:dd:bc:6d:62:2f:61:ad: fa:1b:b2:1e:e3:34:90:14:6b Exponent: 65537 (0x10001) Attributes: a0:00 Signature Algorithm: sha1WithRSAEncryption 2e:52:49:80:b1:17:a0:05:8e:02:67:52:66:9d:21:b3:b2:c8: ca:a0:bb:fa:6a:30:14:ba:9a:22:44:78:26:ee:04:ce:3f:d1: 04:ff:2a:3e:80:52:d3:93:37:9d:fe:77:9a:30:3e:df:d0:a1: 5f:e8:43:11:cf:da:01:3a:4e:74:b8:86:a1:c3:cb:61:56:cc: b0:b3:a2:94:72:74:c7:47:0b:af:7e:55:71:1a:05:ea:22:ee: 60:fc:8d:84:ad:b0:57:e9:81:8e:35:da:d6:6c:0b:b5:29:ce: 13:c0:d2:e3:d7:8e:35:c1:2c:dd:97:6f:bb:5b:66:ca:ba:33: 47:e7
Erstellen jetzt abschließend das eigentliche Zertifikat ("alix.crt"), indem Sie es selbst unterzeichnen.
openssl x509 -req -in alix.csr -out alix.crt -signkey alix.key -days 3650
auf der Konsole erscheint:
Signature ok subject=/C=de/ST=Germany/O=Delixs-Schule/CN=alix Getting Private key
Das fertige Zertifikat sehen Sie hier:
-----BEGIN CERTIFICATE----- MIICAzCCAWwCCQCBnSDDZcUFmTANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJk ZTEQMA4GA1UECBMHR2VybWFueTEWMBQGA1UEChMNRGVsaXhzLVNjaHVsZTENMAsG A1UEAxMEYWxpeDAeFw0wOTAyMTUxOTE0NDRaFw0xOTAyMTMxOTE0NDRaMEYxCzAJ BgNVBAYTAmRlMRAwDgYDVQQIEwdHZXJtYW55MRYwFAYDVQQKEw1EZWxpeHMtU2No dWxlMQ0wCwYDVQQDEwRhbGl4MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC DvkOgSexJ1bpf1mFY2ffyOE0ZS9Hd/KFLGq8zVhLYvEAhlu7jstzfSE3Mz02Oj/z +xACTtCEpU8fSh0Kn6ma9KnLw/rWR9b/Cip5PjPsu2afijinM08emVKjxUSDVUGJ H6CSwwg7J4wRoMWDa5jl3bxtYi9hrfobsh7jNJAUawIDAQABMA0GCSqGSIb3DQEB BQUAA4GBAD+H9j/lmDoUX+nk4YEUFkVh23JGRCpysyEnswr+p5nlOU1ERA0F2SiQ B85iA3XvX82G5871SZ7EA03qMaHwES4GFfeYFuiIzsew/tZ23LVCd0SHIEPuO/TQ 3/cTKSaoMm2cHlNaWsDnnfNOdYzDgYbtfFvP8uSxH6MXH20tENjO -----END CERTIFICATE-----
Die Passphrase aus dem Key können Sie wieder entfernen, falls Sie oben doch eine eingegeben hätten:
cp alix.key alix.key.orig openssl rsa -in alix.key.orig -out alix.key
Wenn Sie das Zertifikat ohne Passwort erzeugt hatten, entfällt dieser Schritt natürlich.
SSL-Konfiguration für den Webserver
Bearbeiten Sie (nach dem Anfertigen der Sicherheitskopie) zuerst die Datei, in der die SSL-Konfiguration für den Webserver abgelegt wird:
cp /etc/apache2/mods-available/default-ssl /etc/apache2/mods-available/default-ssl.orig mcedit /etc/apache2/mods-available/default-ssl
Folgenden Inhalt sollte diese Datei haben:
<source highlight="1-30" lang="text">
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
DocumentRoot /var/www-ssl/ ServerAdmin webmaster@localhost
SSLEngine On SSLCipherSuite HIGH:MEDIUM SSLCertificateFile /etc/apache2/ssl/alix.crt SSLCertificateKeyFile /etc/apache2/ssl/alix.key
CustomLog /var/log/apache2/ssl_access.log combined ErrorLog /var/log/apache2/ssl_error.log LogLevel warn
<Location /> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Location>
</VirtualHost> </IfModule> </source>
Mit den Befehlen:
a2ensite default-ssl a2enmod ssl
wird die Konfiguration für die SSL-Webseite eingebunden und danach das Modul für SSL verfügbar gemacht.
Jetzt kann zuletzt der Webserver selbst neu gestartet werden:
/etc/init.d/apache2 restart
Sollte der Restart ohne Fehler abgelaufen sein, können Sie vom Client aus die sichere Verbindung testen. Geben Sie in einem Browserfenster die Adresse https://10.100.0.1 ein.
Nach der Bestätigung der Sicherheitswarnung (die erscheint, weil wir das Zertifikat selbst unterzeichnet haben) kann das Zertifikat akzeptiert werden und ab sofort ist eine verschlüsselte Kommunikation mit dem Schulserver möglich.
PHP
Installation von PHP
Das Paket libapache2-mod-php5 enthält das PHP5-Modul für den Webserver Apache 2 und php5-mysql enthält das MySQL-Modul für PHP5.
Die Installation erfolgt mit
aptitude install libapache2-mod-php5 php5-mysql
Nach der Installation schalten Sie das PHP_Modul mit folgendem Befehl ein:
a2enmod php5
wobei der Befehl Apache 2 enable module (kurz: a2enmod) verwendet wird.
Abschließend wird der Webserver Apache neu gestartet mit:
/etc/init.d/apache2 restart
Test von PHP
Um PHP testen zu können, wird die eine Datei info.php
benötigt. Mit dem Befehl:
touch /var/www/info.php (später /htdocs/info.php)
erzeugen Sie diese Datei. In die Datei schreiben Sie mit einem beliebigen Editor folgende Zeilen rein:
<source lang="php"> <?php
phpinfo();
?> </source>
Der Aufruf erfolgt nun über den Webserver mit dem Befehl:
<source lang="text">
lynx http://localhost/info.php
</source>
Das Ergebnis sollte am Bildschirm eine recht lange Liste an Parametern und Variablen anzeigen.
Das MySQL-Modul kann erst später getestet werden, weil der MySQL-Server noch nicht eingerichtet ist. Keine Angst, wir vergessen es nicht.
Userdir
Einrichtung von Userdir
Es wird nun das userdir-Modul für die privaten Webseiten der Nutzer (/~nutzer) installiert und anschließend eingeschaltet mit:
aptitude install libapache2-mod-ldap-userdir a2enmod userdir
In der Datei /etc/apache2/mods-available/userdir.conf
werden folgende Zeilen ergänzt:
<source lang="text"> <IfModule mod_userdir.c>
UserDir html_public UserDir disabled root
<Directory /home/teacher/*/public_html>
Options Indexes SymLinksIfOwnerMatch AllowOverride AuthConfig Limit FileInfo Indexes <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> </Directory>
<Directory /home/students/*/public_html> Options Indexes SymLinksIfOwnerMatch AllowOverride AuthConfig Limit FileInfo Indexes <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> </Directory> </IfModule> </source>
und der Apache abschließend neu gestartet.
/etc/init.d/apache2 restart
Damit alle neuen Nutzer später automatisch über eine Webseite verfügen können, sind weitere Vorarbeiten nötig:
mkdir /etc/skel/public_html cd /usr/share/doc/adduser/examples/adduser.local.conf.examples/skel.other cp ./index.html /etc/skel/html_public
Mit diesen Befehlen wird die Musterseite erzeugt, die später jeder neue Nutzer automatisch in sein Homeverzeichnis gelegt bekommt.
Test von Userdir
Beim User mmustermann
wurde (Dieser Nutzer kann zu Testzwecken nach der Anleitung im Kapitel Entwicklungsumgebung LDAP angelegt werden) im Homeverzeichnis das Unterverzeichnis public_html
angelegt und eine Datei index.html
erstellt. Die Rechte wurden für das Verzeichnis mit 755 und für die Datei mit 644 gesetzt. Der Owner wurde auf mmustermann
geändert, die Gruppe root
gelassen. Der Aufruf erfolgt mit
lynx http://localhost/~mmustermann/index.html
Weitere Werkzeuge
Installation von:
aptitude install php5-cli php5-common php5-mhash php-pear a2enmod suexec rewrite include expires ident
Das Paket "php5-cli" stellt einen Kommandozeileninterpreter /usr/bin/php5
zur Verfügung, der für das Testen von PHP-Scripten und auch für Shell-Scripting-Aufgaben verwendet werden kann. Das Paket "php5-common" enthält Beispieldateien und Dokumentationen für PHP5. Das Paket "php5-mhash" stellt mhash-Funktionen bereit. Und "php-pear" enthält die Basis-PEAR-Klassenbibliothek für PHP.
phpLDAPadmin
Das Paket "phpldapadmin" enthält einen grafischen LDAP-Browser, der Konfigurations- und Wartungsarbeiten am LDAP-Baum ermöglicht.
Installation von:
aptitude install phpldapadmin
Damit phpldapadmin arbeitet, werden die folgenden Korrekturen vorgenommen:
In der Datei /etc/phpldapadmin/apache.conf wird nach php_value include_path . ergänzt:
php_admin_value safe_mode off php_admin_value open_basedir /var/lib/php5/:/usr/share/phpldapadmin/:/usr/share/doc/phpldapadmin/:/etc/phpldapadmin
Die letzte Zeile ist eine Zeile!
Und dann wird noch die Datei /etc/phpldapadmin/config.php so angepasst, dass
- ein Login per uid,
- der Login per Full-DN und
- der anonyme Bind
möglich wird.
Die geänderte Datei config.php:
<?php $i=0; $ldapservers = new LDAPServers; $ldapservers->SetValue($i,'server','name','Alix per UID'); $ldapservers->SetValue($i,'server','host','localhost'); $ldapservers->SetValue($i,'server','base',array('dc=delixs-schule,dc=de')); $ldapservers->SetValue($i,'server','auth_type','session'); $ldapservers->SetValue($i,'login','attr','uid'); $ldapservers->SetValue($i,'login','pass',''); $ldapservers->SetValue($i,'login','anon_bind',true); $i++; $ldapservers->SetValue($i,'server','name','Alix per Full-DN'); $ldapservers->SetValue($i,'server','host','localhost'); $ldapservers->SetValue($i,'server','port','389'); $ldapservers->SetValue($i,'server','base',array('dc=delixs-schule,dc=de')); $ldapservers->SetValue($i,'server','auth_type','session'); $ldapservers->SetValue($i,'login','dn',''); $ldapservers->SetValue($i,'login','pass',''); $ldapservers->SetValue($i,'server','tls',false); $ldapservers->SetValue($i,'server','low_bandwidth',false); $ldapservers->SetValue($i,'appearance','password_hash','md5');; $ldapservers->SetValue($i,'server','read_only',false); $ldapservers->SetValue($i,'appearance','show_create',true); $ldapservers->SetValue($i,'auto_number','enable',true); $ldapservers->SetValue($i,'auto_number','mechanism','search'); $ldapservers->SetValue($i,'auto_number','search_base',null); $ldapservers->SetValue($i,'auto_number','min','1000'); $ldapservers->SetValue($i,'auto_number','dn',null); $ldapservers->SetValue($i,'auto_number','pass',null); $ldapservers->SetValue($i,'login','anon_bind',true); $ldapservers->SetValue($i,'custom','pages_prefix','custom_'); $ldapservers->SetValue($i,'unique_attrs','dn',null); $ldapservers->SetValue($i,'unique_attrs','pass',null); # SASL auth # auskommentieren #$ldapservers->SetValue($i,'server','sasl_auth',true); #$ldapservers->SetValue($i,'server','sasl_mech','PLAIN'); #$ldapservers->SetValue($i,'server','sasl_realm','EXAMPLE.COM'); #$ldapservers->SetValue($i,'server','sasl_authz_id',null); #$ldapservers->SetValue($i,'server','sasl_authz_id_regex','/^uid=([^,]+)(.+)/i'); #$ldapservers->SetValue($i,'server','sasl_authz_id_replacement','$1'); #$ldapservers->SetValue($i,'server','sasl_props',null); $friendly_attrs = array(); $friendly_attrs['facsimileTelephoneNumber'] = 'Fax'; $friendly_attrs['telephoneNumber'] = 'Phone'; $friendly_attrs['uid'] = 'User Name'; $q=0; $queries = array(); $queries[$q]['name'] = 'User List'; $queries[$q]['base'] = 'dc=delixs-schule,dc=de'; $queries[$q]['scope'] = 'sub'; $queries[$q]['filter'] = '(&(objectClass=posixAccount)(uid=*))'; $queries[$q]['attributes'] = 'cn, uid, homeDirectory, telephonenumber, jpegphoto'; $q++; $queries[$q]['name'] = 'Samba Users'; $queries[$q]['base'] = 'dc=delixs-schule,dc=de'; $queries[$q]['scope'] = 'sub'; $queries[$q]['filter'] = '(&(|(objectClass=sambaAccount)(objectClass=sambaSamAccount))(objectClass=posixAccount)(!(uid=*$)))'; $queries[$q]['attributes'] = 'uid, smbHome, uidNumber'; $q++; $queries[$q]['name'] = 'Samba Computers'; $queries[$q]['base'] = 'dc=delixs-schule,dc=de'; $queries[$q]['scope'] = 'sub'; $queries[$q]['filter'] = '(&(objectClass=sambaAccount)(uid=*$))'; $queries[$q]['attributes'] = 'uid, homeDirectory'; ?>
Die Anmeldung erfolgt nun vom Client aus mittels Webbrowser unter der Adresse https://alix/phpldapadmin/
In der Entwicklungsumgebung geben Sie folgende Werte ein:
User Name: root Passwort: schule
Webalizer
Damit immer volle Kontrolle über das Nutzungsverhalten auf dem Webserver möglich ist, wird die Analysesoftware "webalizer" installiert:
aptitude install webalizer
Start:
webalizer
Konfiguration:
/etc/webalizer/webalizer.conf
Reports erzeugen (Text noch unvollständig):
cronjob....
phpSysInfo
Damit immer volle Kontrolle über den Server selbst möglich ist, wird die Analysesoftware "phpsysinfo" installiert:
aptitude install phpsysinfo ln -s /usr/share/phpsysinfo /var/www-ssl/phpsysinfo
Konfiguration:
/etc/phpsysinfo/config.php
Text noch unvollständig...
Aufgerufen wird diese Informationsseite über: https://alix.delixs-schule.de/phpsysinfo
WebDAV
Unter WebDAV (Web-based Distributed Authoring und Versioning) versteht man die Erweiterung des HTTP-Protokolls, um Benutzern das Bearbeiten von Dateien auf dem Webserver zu ermöglichen.
<source lang="text"> <Location "/pfad"> Options Indexes FollowSymLinks AllowOverride None order allow,deny allow from all
DAV On AuthType Basic
AuthLDAPBindDN cn=admin,dc=delixs-schule,dc=de AuthLDAPBindPassword SOMEPASS AuthLDAPURL ldap://127.0.0.1/cn=webmaster,ou=groups,dc=delixs-schule,dc=de?uid?sub?(objectClass=*)
AuthName "Webdav Zugriff" Require valid-user </Location> </source>
WebDAV-Client
- Mit "cadaver" kann ein Linux-Client auf WebDAV-Freigaben zugreifen, also Dateien herunterladen, ändern, erzeugen und auch löschen.
- Mittels "davfs2" können WebDAV-Freigaben als Filesysteme in fremde Linux-Systeme eingebunden (gemountet) werden, vergleichbar mit nfs-Freigaben.
- In Windows-Clients können WebDAV-Freigaben als Netzwerkfreigaben eingebunden werden.
Hinweis: Windows in Version Windows XP-Sp2 beherrscht keine BASIC-Authentifizierung von WebDAV-Freigaben. Zur Nachrüstung dieser Funktionalität muss erst der folgende Patch in der Registry erfolgen:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters] "UseBasicAuth"=dword:00000001
Speichern Sie diesen Patch einfach als Datei "webdav-xp.reg" ab und aktivieren ihn dann mittels Doppelklick.
Automatische Proxy-Konfiguration
- Definition: http://www.web-cache.com/Writings/Internet-Drafts/draft-ietf-wrec-wpad-01.txt
- siehe Hinweise unter: http://wiki.bsdforen.de/howto/automatische_proxy-konfiguration
Weblinks
Webserver
- http://www.apache.org
- http://httpd.apache.org/docs/2.0/de
- http://www.jfranken.de/homepages/johannes/vortraege/apache_inhalt.de.html
- virtuelle Hosts: http://www.tim-bormann.de/tutorial-installation-debian-etch-server/
PHP
Webalizer
Hans-Dietrich Kirmse, Klaus Werner 2009