ca. 90 Min.
Rainer Perske
Westfälische Wilhelms-Universität
Zentrum für Informationsverarbeitung
Röntgenstraße 7-13
48149 Münster
perske@uni-muenster.de
+49 251 83 31582 (fon)
+49 251 83 31555 (fax)
Dynamisch generierte Inhalte für alle Infoanbieter
Weitgehende Konfigurierbarkeit durch alle Infoanbieter
Skalierbarkeit und Performanz
Ausfallsicherheit und Stabilität
Einfaches Management
Erweiterbarkeit und Anpassungsfähigkeit - schon etliche Male bewiesen
Sicherheit - Datensicherheit, Datenschutz, Schadensbegrenzung
Neu: Single Sign On
Zu unterscheiden:
URLs (WWW-Adressen)
Verzeichnisbasiert:
http://www.uni-muenster.de/NAME/
http://www.wwu.de/NAME/
https://www.uni-muenster.de/NAME/
https://sso.uni-muenster.de/NAME/
https://xsso.uni-muenster.de/NAME/
https://ssso.uni-muenster.de/NAME/
Hostbasiert:
http://NAME.uni-muenster.de/
http://www.NAME.uni-muenster.de/
https://NAME.uni-muenster.de/ (nur in Ausnahmefällen)
https://www.NAME.uni-muenster.de/ (nur in Ausnahmefällen)
Domainbasiert:
http://www.NAME.TLD/ (kostenpflichtig)
https://www.NAME.TLD/ (nur in Ausnahmefällen)
Realisierungen
Webspace (Backend-Server und Plattenplatz im Webserverpark)
normalerweise dedizierte VirtualHosts, ausnahmsweise (LearnWeb)
dedizierte Apache-Prozessgruppen
jeweils auf mehreren Backend-Servern parallel
Redirect (Umleitung durch Frontend-Server auf andere Adresse)
Reverse Proxy (Backend-Server und Plattenplatz auf
Institutsrechnern, z. B. mit privaten IP-Adressen)
mit oder ohne Lastverteilung
Alle Kombinationen möglich
Zugriffsrechte hängen an Nutzergruppen
Manuell gepflegte Bereiche: X0infoXX
Imperia-gepflegte Bereiche: X6XXXXXX
Antrag G durch für Finanzmittel Verantwortliche zwingend erforderlich
Bei gemischten Webspaces reicht ein Antrag für beide Gruppen
Keine Kostenberechnung (außer Fremddomains oder Terabytes)
Ausfüllhilfe:
Titel/Thema der Arbeit: Infoanbieter „Name des
Projekts“
Ressourcen: Rechner: Webserverpark
Falls Imperia-gepflegt: Ressourcen: Software: Imperia
Falls manuell gepflegt: Ressourcen: Software: SSH / Samba
Finanzierungsart: immer WWU, auch bei Drittmittelprojekten
Bitte immer vorher mit uns absprechen!
Ansprechpartner: R. Perske (manuelle Webspaces), W. Kaspar oder Online-Redaktion (Imperia-Webspaces)
Einrichtung auf Zuruf (Telefon, E-Mail)
Nur durch Verantwortliche
Nutzergruppenleiter von Infoanbietergruppen
technisch Verantwortliche von Webservern
Online-Redaktion
usw.
Nur Einzelfälle, keine Massen
Bitte immer mit uns absprechen! - Ansprechpartner: R. Perske
Verzeichnisbasiert: http://www.uni-muenster.de/NAME/ usw.
Grundsätzlich keine Dreibuchstabenkürzel
Grundsätzlich keine Begriffe, auf die mehrere Stellen Anspruch erheben könnten
Bei Bedenken und über Ausnahmen entscheidet Online-Redaktion i. A. des Rektorats
Hostbasiert: http://NAME.uni-muenster.de/ usw.
Es gelten (nur) die allgemeinen Regeln für Rechnernamen in der WWU
Domainbasiert: http://www.NAME.TLD/ usw.
Es gelten die einschlägigen Gesetze und dienstrechtlichen Vorschriften
Nutzergruppe muss bereits eingerichtet sein
Alles weitere läuft auf Zuruf per Telefon oder E-Mail
Vereinbarung der URL
Einrichtung des Webspaces (Plattenplatz, Backend- und Frontend-Server)
Weitere Wünsche, z. B. MySQL-Datenbank, Software usw.
Plattenplatzquote (anfänglich 1 GB) erhöhen
Bitte lassen Sie sich durch uns beraten!
Schon vielen Nutzern haben wir viele unnötige Arbeit ersparen können.
Zugreifbar unter mehreren Webadressen:
http://www.uni-muenster.de/NAME/ - ungeschützt
http://www.wwu.de/NAME/ - für Visitenkarten,
Veröffentlichungen
https://www.uni-muenster.de/NAME/ - abhörsicher
https://sso.uni-muenster.de/NAME/ - Single Sign On (Passwort)
https://xsso.uni-muenster.de/NAME/ - Single Sign On (Zertifikat)
https://ssso.uni-muenster.de/NAME/ - Single Sign On
(Shibboleth)
Frontends agieren als Reverse Proxy mit Lastverteilung auf verschiedene zivwebNN:
http://www.uni-muenster.de/NAME/
http://www.wwu.de/NAME/
→ http://zivwebNN.uni-muenster.de:1NNNN/NAME/
https://www.uni-muenster.de/NAME/
→ https://zivwebNN.uni-muenster.de:2NNNN/NAME/
https://sso.uni-muenster.de/NAME/
https://xsso.uni-muenster.de/NAME/
https://ssso.uni-muenster.de/NAME/
→ https://zivwebNN.uni-muenster.de:3NNNN/NAME/
Jeder Infoanbieter hat ein eigenes NNNN auf mehreren zivwebNN
NAME.uni-muenster.de oder www.NAME.TLD als Webspace
Kein Imperia
Kein Single Sign On
HTTPS nur in Ausnahmefällen
www.NAME.TLD kostenpflichtig und unerwünscht (Corporate Identity)
Verzeichnisbaum /www/data/NAME/ - daher nur falls keine Kollision
Redirects (Umleitungen) und Reverse Proxys
uni-muenster.de/NAME → irgendwas
NAME.uni-muenster.de → irgendwas
www.NAME.TLD → irgendwas (kostenpflichtig, aber als Umleitung erwünscht)
Pfade bleiben: www.NAME.TLD/ABC/DEF → irgendwas/ABC/DEF
Gerne als Kombination
Redirect: http://NAME.uni-muenster.de/ → http://www.uni-muenster.de/NAME/
Webspace: http://www.uni-muenster.de/NAME/
SSH: upload.uni-muenster.de:/www/data/NAME/
Login als: username
Authentifizierung mittels SSH-Public-Keys (über MeinZIV
hochgeladen)
SMB: \\upload.uni-muenster.de\www\NAME\
Login als: uni-muenster\username
Authentifizierung mittels Active Directory
Imperia: https://imperia.uni-muenster.de/imperia/
Login als: username
Authentifizierung mittels Imperia-Passwörtern
Verzeichnisbaum:
/www/data/NAME/ - Wurzelverzeichnis, nur für Infoanbietergruppe
zugreifbar
/www/data/NAME/htdocs/ - »Document Root« (kaum nutzbar)
/www/data/NAME/htdocs/NAME/ - alle angebotenen Inhalte
/www/data/NAME/imperialive/NAME/ - (R/O) per Imperia freigeschaltete
Inhalte
/www/data/NAME/home/USER/ - Unix-Homeverzeichnis (.bashrc,
SSH-Schlüssel)
/www/data/NAME/XYZ/ - frei für Installations- und
Arbeitsdateien
/www/data/NAME/sessions/ - empfohlen für Sitzungsdateien (nicht
/tmp/ verwenden!)
/www/data/NAME.logs/ - Error-Logdateien (live)
Einbindung von Imperia-Bereich (Datei, Verzeichnisbaum) per SSH
durch
ln -sfn /www/data/NAME/imperialive/NAME/BEREICH
/www/data/NAME/htdocs/NAME/BEREICH
Alle Dateien: R/W by Owner, R/W by Group, R/O by Other!
Sonst kann der Apache nicht zugreifen
(dieser läuft
teils als User=apache
, teils als
User=XinfoXX
)
Das Wurzelverzeichnis verhindert unbefugte Zugriffe:
Owner=apache
, Group=X0infoXX
,
Mode=dr-xrws---
Zugriffsrechte werden bei Schreibzugriff via SMB erzwungen, bei SSH leider nicht
Notfalls reparieren: /www/bin/repairwebspace NAME (oder mit MeinZIV)
Innerhalb eines Webspaces keine Rechte-Differenzierung!
Schreibzugriff hängt an Mitgliedschaft in Nutzergruppe
upload.uni-muenster.de
Einzige Login-Methode: Public-Key-Authentifizierung
Public Key wird mit MeinZIV auf Server abgelegt
Unix-Home (mit .bashrc, .ssh/authorized_keys) liegt im Webspace
Nicht als persönliche Ablage gedacht!
Nach einmaliger Überwindung der Einstiegshürde genauso simpel bedienbar wie übliche FTP-Software
Linux/Mac-Software: OpenSSH (ssh, scp usw.)
Windows-Software 1: PuTTY plus Filezilla
Windows-Software 2: SSH Secure Shell Client
oder jede andere SSH-Software
Ausführliche Anleitungen für obige Programme im WWW
Demo: SSH-Zugang mit PuTTY+Filezilla einrichten
\\upload.uni-muenster.de\www (entspricht /www/data/)
Anmelden als uni-muenster\username
Erzwingt automatisch richtige Dateisystemzugriffsrechte
Dafür keine Kommandozeile und keine Symlinks
Achtung bei Steuerdateien .htaccess usw.: CR+LF → LF umwandeln!
Nur aus dem lokalen Netz (oder mit VPN)
Deshalb vielleicht doch besser SSH verwenden? Sie haben die Wahl.
Zugriff auf TSM-Backup (nur per SSH):
restore [-inactive] [-pick] dateiname [neuerdateiname]
(erspart Angabe von -errorlogname=... und -asnode=zivweb)
Zugriff auf Original-Logdateien und einfache Auswertungen:
https://mein-ziv.uni-muenster.de/wwwstat/
Zugriffshäufigkeiten (offen)
Original-Logdateien (geschützt)
Anonymisierung durch Abrufer nach Auswertung gesetzlich vorgeschrieben!
Hinweise auf tatsächlich benutzte kaputte Links (geschützt)
Steuerdateien:
.htaccess für http://www.uni-muenster.de
.htsslaccess für https://www.uni-muenster.de
.htssoaccess für https://sso.uni-muenster.de u. a. SSO
Fallback, falls eine Datei nicht existiert
.htaccess.imperia für https://imperia.uni-muenster.de
(Imperia-Vorschau, beschränkte Einstellmöglichkeiten)
WWW-Zugriffsrechte (s. u.)
Dateinamen von Titelseiten
Eigene Fehlermeldungsseiten
Eigene Umleitungen
Server Side Includes (welche Dateien werden ge-parse-t?)
Zuordnungen
Dateiendungen - MIME-Typen
Dateiendungen - Apache-Handler (CGI, PHP, As-is, ...)
z. B.: AddHandler cgi-script pl
u. v. a. m.
Unix-Zeilenenden (LF), keine Windows-Zeilenenden (CR+LF)
Nicht zu verwechseln mit Dateisystem-Zugriffsrechten
Von Zugangskontrolle per IP-Adresse wird abgeraten.
funktioniert wegen Reverse Proxy auch anders als üblich
Zugangskontrolle per Identitätsnachweis, allgemeiner Fall:
http://www.uni-muenster.de/NNN/ABC/
Kein Zugang, Umleiten zu SSO
https://www.uni-muenster.de/NNN/ABC/
Zugang für Gäste mit manuell vergebenem Gastpasswort
(Auch für Vorlesungsskript-Passwörter o.ä.)
https://sso.uni-muenster.de/NNN/ABC/
https://xsso.uni-muenster.de/NNN/ABC/ usw.
Zugang mit ZIV-Nutzerkennung und Passwort/Zertifikat/usw.
Verteilung mit offener Vorschaltseite (unnötig falls nur ZIV-Nutzer oder nur Gäste)
Verschiedene Alternativen siehe im WWW
Datei .htaccess
RedirectPermanent / https://www.uni-muenster.de/
Hier steckt die Umschaltung auf »Login erforderlich«!
Datei .htsslaccess
AuthName "Nur fuer eingeladene Gaeste"
AuthType Basic
AuthBasicProvider file
AuthUserFile /www/data/NNN/gastzugaenge
Require valid-user
/www/data/NNN/gastzugaenge enthält manuell vergebene Nutzer und Passwörter
Datei .htssoaccess
AuthName "Nur fuer zweifelsfrei der WWU Angehoerige"
AuthTypeBasic
AuthBasicProvider dbm
AuthDBMUserFile /www/data/usersso
AuthDBMGroupFile /www/data/groups
Require group gruppe gruppe nutzer nutzer
pseudogruppe pseudogruppe
Niemals Require user ... oder Require valid-user verwenden!
Ausschließlich für WWW-Autorisierung verfügbar
Nicht in WWU-Benutzerverwaltung, sondern algorithmisch hergeleitet:
an=uni=sicher
zweifelsfrei der
WWU Angehörige*
an=uni=unsicher
wahrscheinlich
der WWU Angehörige
an=uni=stud
Student(in)*
an=uni=mitarb
wiss. oder
nichtwiss. Mitarbeiter(in)*
an=uni=whk
wiss. Hilfskraft*
an=uni=shk
stud. Hilfskraft*
an=uni=lehr
Lehrbeauftragte(r)*
an=uni=emerit
Emeritus/a*
sys=pc-urz
Zugang zu den PC-Pools
(Domäne uni-muenster)
sys=cms-imperia
Zugang zu
Imperia
sys=ras-wwu
Zugang zu den
Einwahlzugängen
sys=intro-wwu
Darf Intro-Karte
bekommen
any=p0
, any=q0
,
any=r0
Mitglied einer Nutzer p0*
,
q0*
, r0*
usw. (* = laut Verwaltungsdaten)
Weitere (Pseudo-) Gruppen bei Bedarf - Fragen Sie uns!
Schutz gegen Amok: Keine normalen Cron-Jobs
Daily-Skripte
/www/data/NNN/cron/daily
wird täglich kurz nach 3 Uhr aufgerufen
Häufigere Aktionen
/www/data/NNN/cron/XYZ.loop
Skripte werden alle 5 Minuten ausgeführt
Aber nur, wenn seit mehr als 5 Minuten beendet
→ nicht mehrere gleichzeitig, maximal alle 10 Minuten
Für seltenere Ausführung: Am Ende: sleep
$((NNN-600))
stündlich: sleep 3000
; zweistündlich:
sleep 6600
In verzeichnisbasierten Webspaces (www.uni-muenster.de/NNN/)
wegen der verschiedenen URLs:
niemals: <a href="http://www.uni-muenster.de/AAA/BBB/CCC">
sondern: <a href="/AAA/BBB/CCC">
niemals: <img src="http://www.uni-muenster.de/AAA/BBB/CCC">
sondern: <img src="/AAA/BBB/CCC">
niemals: <a href="https://sso.uni-muenster.de/perMail">
sondern: <a href="/perMail/"> (mit Schrägstrich!)
schreiben!
Dann funktionieren Links, Bilder und Medien auch mit HTTPS und Single Sign On
(Kein Secure-Insecure-Mix oder Wechsel der Authentifizierungsmethode mehr)
Apache-Handler
*.php wird mit PHP-Interpreter ausgeführt (zzt. PHP 5.3)
*.cgi wird als CGI-Program ausgeführt
Bei Skripten: Hash-Bang-Zeile nötig
Ausführen von *.pl als Perl-Programm:
Erste Zeile: #!/usr/bin/perl (mit LF, nicht CR+LF!)
AddHandler cgi-script pl (in .htaccess & Co.)
Anfragen werden willkürlich auf Server verteilt
Gemeinsames Dateiesystem /www/data/
Sitzungsdaten daher nicht in /tmp/
PHP: ini_set('session.save_path','/www/data/NNN/sessions');
E-Mail-Versand: Envelope-Absender angeben!
PHP: mail($to,$subj,$msg,'','-f user@uni-muenster.de')
Login-Username (auch Single Sign On)
PHP: $_SERVER['REDIRECT_REMOTE_USER']
andere: Umgebungsvariable REMOTE_USER
Abgesprochene Attribute in REMOTE_ATTR
Eigene Kontrolle auf Zugehörigkeit zu (Pseudo-) Gruppe:
PHP: require_once('/www/data/groups.php'); if(is_array($groups)) if(is_array($groups[$user])) if(in_array($grp,$groups[$user])) ...
andere: /www/data/groups.txt lesen
Bei erheblichen Problemen wird auf das Notfallsystem umgeschaltet
Dort laufen keine Skripte oder Handler (PHP, CGI)
(wohl aber Server Side Includes)
Bei Zugriff auf Skripte: ErrSOS.html
Falls andere Seite erwünscht:
Zu Datei XYZ.php eine Notfalldatei XYZ.php-sos.html anlegen.
Zu Datei XYZ.cgi eine Notfalldatei XYZ.cgi-sos.html anlegen.
Beliebiger HTML-Inhalt nach Wahl (aber kein Server Side Include)
Notfallsystem schaut bei Skripten nach solchen Notfalldateien
Vielen Dank für Ihre Aufmerksamkeit!
Haben Sie noch Fragen?
Was darf ich Ihnen vorführen?
http://www.uni-muenster.de/ZIV/Technik/WWW/
© 2011 Rainer Perske und Universität Münster