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 Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 2 Motivation viele unterschiedliche (elektronische) Einschreibesysteme Einschreibung in die Veranstaltungen an verschieden Orten zu unterschiedlichen Zeiten Belastung der Lehrstühle und der Sekretariate Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 3 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 Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 4 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 Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 5 Rechnersystem (1) Systeminformationen PHP 3 mit PHPLib Datenbank MySQL Betriebssystem Linux Web-Server Apache Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 6 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 Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 7 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 Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 8 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 Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 9 Rechnersystem (5) Konfiguration des Apache Web-Servers Einrichten eines Web Zertifikats openssl genrsa -out server.key 1024 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 Mit diesem Aufruf wird ein Schlüssel erzeugt 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 Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 10 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> Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 11 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 Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 12 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 Potsdam, den 24. April 2003 sshd : ALL : deny Stefan Liske, Rene Rippert 13 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 Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 14 Rechnersystem (10) Sessionmanagement von PHP Nutzung von Serverseitigen Cookies Problem: jeder Nutzer, der eine neue Instanz des WebBrowsers öffnet erhält vom System einen neuen Sessioncookie im /tmp Verzeichnis Alte Cookies werden nur nach Neustart des Apache WebServers 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 Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 15 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 kein direkter Rootzugriff Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert IP möglich 16 Implementierung SW-Techniken Möglichkeiten/Features Software-Sicherheit („security“) Software-Sicherheit („safety“) Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 17 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 Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 18 Möglichkeiten/Features Eintragung in Vorlesungsverzeichnissicht Änderung, Austragung für Veranstaltungen Stundenplan Informationen per e-Mail Terminauswahl An alle bzw. an Auswahl Babylon-Account-Verlängerung (Fr. Mix) Einschreibe-, Kurslisten (CVS, PDF) (Sekretariate) Beschränkung der Termine Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 19 Software-Sicherheit („security“) SSL nutzend Benutzerregistrierung Zuordnung der Benutzer nach Login (HTTP ist verbindungslos) Eigene zusätzliche „MSI“ Identifikation und Authentifizierung Session-Management Vertraulichkeit, Integrität Unterscheidung der Browser-Instanzen Benutzerrollen via „.htaccess“ (Student, Admin) Rechtezuteilung auf primitivem Niveau Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 20 Software-Sicherheit („safety“) Kontrolle der Formulareingaben Korrektur Plausibilitätstest, Selektionsfelder Vorgabe Filter via regulärer Ausdrücke für Immatrikulationssemester u.ä. Zwischenabfrage für Aktionsausführung Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 21 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) Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 22 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) Potsdam, den 24. April 2003 Stefan Liske, Rene Rippert 23 ENDE