POKUS
Portal für Kurs und Studienplanung
Ein Projekt von
Rene Rippert & Stefan Liske unter der Leitung von Prof. Dr. Andreas Schwill
Gliederung
Motivation/Ziele
Vorarbeit
Rechnersystem
Implementierung
Fazit
Zukunftsaussichten
Motivation
viele unterschiedliche (elektronische) Einschreibesysteme
Einschreibung in die Veranstaltungen an verschieden Orten zu unterschiedlichen Zeiten
Belastung der Lehrstühle und der Sekretariate
Ziele von POKUS
Vereinheitlichung der Einschreibung an einem Ort für alle Veranstaltungen
Entlastung der Lehrstühle und der Sekretariate
Übersichtlichkeit und
Informationsaustausch über ein System
Kommunikative Vorarbeit
Informationsbeschaffung durch Befragungen bei Studenten
Verständnis der Einschreibestrukturen
durch Nachfragen bei Fr. Vogel, Hr. Haße, Fr. Ziethlow, Fr. Pamperin, Fr. Mix
Vergleich von anderen Einschreibesystemen
Rechnersystem (1)
Systeminformationen
PHP 3 mit PHPLib
Datenbank MySQL
Betriebssystem Linux
Web-Server Apache
Rechnersystem (2)
Systeminformationen
Intel Pentium III 700 MHz
16 GB Festplattenkapazität
256 MB Hauptspeicher
100 MBit Anbindung an die Haiti-Domain
System: SuSE Linux 8.1
Rechnersystem (3)
Programmierung in PHP 3 mit PHPLib
Probleme bei mehreren Linux Distributionen den Apache mit PHP 3 und PHPLib zu
installieren
Umstieg auf SuSE 8.1 Minimalinstallation und PHP 4 mit eingebautem
Sessionmanagment
Rechnersystem (4)
Installation aller zur Konfiguration nötiger Elemente über RPM
Apache 1.3.26 mit OpenSSL und PHP 4
MySQL 3.23.52
Webmin 1.070 zur besseren Konfiguration von MySQL
OpenSSH 3.4p1
Rechnersystem (5)
Konfiguration des Apache Web-Servers
Einrichten eines Web Zertifikats
openssl genrsa -out server.key 1024
Mit diesem Aufruf wird ein Schlüssel erzeugt
openssl req -new -key server.key -out server.csr
Hiermit wird ein Requestfile für einen CA erstellt
openssl x509 -req -days 182 -in server.csr -signkey server.key -out server.crt
Nun wurden wir zum CA und erzeugten ein Zertifikat (unbeglaubigt) und lassen es für 182 Tage gültig (1 Semester)
Nun mussten das Keyfile (server.key) und das Zertifikat (server.crt) in die jeweiligen Verzeichnisse gespielt werden
Rechnersystem (6)
Konfiguration des Apache Web-Servers
Einrichten der Virtual Host
<VirtualHost pokus.haiti.cs.uni-potsdam.de:443>
SSLEngine on
SSLCipherSuite …:+High:+Medium:+SSLv2:…
SSLCertificateFile /etc/httpd/ssl.crt/server.crt SSLCertificateKeyFile …/ssl.key/server.key
<Directory “/srv/wwwsecure“>
Options –Indexes order deny,allow deny from all allow from 141.89
</Directory>
</VirtualHost>
Rechnersystem (7)
Konfiguration des Apache Web-Servers
Starten des Apache Webservers über apachectl startssl
Nach der Abfrage der im Certificate genutzten Phrase wir der Web-Server gestartet und öffnet lauschend die Ports http:80 und https:443
Der Zugriff auf sensible Bereiche wurde durch .ht******- Dateien geschützt
AuthType Basic
AuthName „Nur Authorisierte User erlaubt."
AuthUserFile /srv/…/password.file Require user rippert stefan
Rechnersystem (8)
Konfiguration von OpenSSL
Öffnen der Datei /etc/ssh/sshd_config
Ändern des Eintrages PermitRootLogin auf no somit kann sich der Root nicht in das System per ssh einloggen
Öffnen der Datei /etc/hosts.allow
Nun wurde folgendes in dieser Datei verändert
sshd : 141.89.59.159 : allow
sshd : ALL : deny
Öffnen der Datei /etc/hosts.deny
sshd : ALL : deny
Rechnersystem (9)
Konfiguration von MySQL
Nutzung von Webmin
Löschung der durch die Standartinstallation erzeugten MySQL User
Root User hat nur Lokal zugriff auf die DB
Einrichten eines neuen Users ohne Globale Privilegien
Einrichten einer neuen Datenbank und Vergabe der Rechte für diese Datenbank an den eben eingerichteten User
Jeglicher Zugriff auf die Datenbank nur über den Lokalhost
Rechnersystem (10)
Sessionmanagement von PHP
Nutzung von Serverseitigen Cookies
Problem: jeder Nutzer, der eine neue Instanz des Web- Browsers öffnet erhält vom System einen neuen
Sessioncookie im /tmp Verzeichnis
Alte Cookies werden nur nach Neustart des Apache Web- Servers gelöscht
Lösung: Perlscript zum löschen der Sessioncookies
Aufrufen dieses Skriptes alle 30 Minuten durch einen Cronjob
1 * * * * /usr/bin/perl –w \
/srv/killsession/sessionkiller.pl
Administrative Sicherheit
SSL:
Vertraulichkeit von Nachrichten
Integrität von Nachrichten
MySQL:
Zugriff auf die Datenbank nur lokal möglicht
Genau ein User für die Pokus DB ohne globale Privilegien
SSH:
Zugriff nur über eine bestimmte IP möglich
kein direkter Rootzugriff
Implementierung
SW-Techniken
Möglichkeiten/Features
Software-Sicherheit („security“)
Software-Sicherheit („safety“)
SW-Techniken
PHP 4.2 (und höher), MySQL, Apache
Perl 5.6.xxx, Adobe Distiller (lokal für Listen)
Session-Management
SQL
eMail-Modul für PHP
Möglichkeiten/Features
Eintragung in Vorlesungsverzeichnissicht
Terminauswahl
Änderung, Austragung für Veranstaltungen
Stundenplan
Informationen per e-Mail
An alle bzw. an Auswahl
Babylon-Account-Verlängerung (Fr. Mix)
Einschreibe-, Kurslisten (CVS, PDF) (Sekretariate)
Beschränkung der Termine
Software-Sicherheit („security“)
SSL nutzend
Vertraulichkeit, Integrität
Benutzerregistrierung
Identifikation und Authentifizierung
Session-Management
Zuordnung der Benutzer nach Login
(HTTP ist verbindungslos)
Eigene zusätzliche „MSI“
Unterscheidung der Browser-Instanzen
Benutzerrollen via „.htaccess“ (Student, Admin)
Rechtezuteilung auf primitivem Niveau
Software-Sicherheit („safety“)
Kontrolle der Formulareingaben
Korrektur
Plausibilitätstest, Filter via regulärer Ausdrücke
Selektionsfelder
Vorgabe für Immatrikulationssemester u.ä.
Zwischenabfrage für Aktionsausführung
FAZIT
Hilfe/Informationen von vielen Seiten
Akzeptanz bei Lehrstühlen und Studenten
Umsetzung vieler Vorschläge
Erfolgreiche Durchführung ;-)
Kooperation mit Fr. Mix (Babylon-Account)
Aussichten
Es fehlen noch die Dokumentationen (mit Abnahme des Projekts)
Verbesserungen der Administration
Änderung der allgemeinen Oberfläche
DB-Logik überarbeiten
(min. eine Verbesserung notwendig)
Eintragung von Kursen via Interface (Hr. Severin)