SysCP – das Open Source System Control Panel für LAMP Server

Was ist SysCP?

Hinweis:

Es gibt seit dem 1. Februar 2010 einen offiziellen Fork von SysCP mit dem Namen Froxlor. Da SysCP als Projekt faktisch tot ist, empfehle ich unbedingt auf den Fork zu wechseln oder diesem zumindest genauer anzusehen. Eine grobe Beschreibung zum neuen Projekt finden Sie im offiziellen Froxlor Release-Announcement.

SysCP ist ein unter der GPL veröffentlichtes System Control Panel für LAMP Server. Das gesamte System basiert auf PHP und MySQL, über das alle Dinge abgewickelt werden. Bekannte Daemons wie Postfix, Dovecot, Courier sowie ProFTP werden dabei über ihre MySQL Backends bedient, welche jeweils als zusätzliches Plugin nachinstalliert werden können.

SysCP arbeitet im Gegensatz zu proprietären Panels wie Confixx oder Plesk mit virtuellen Benutzern, was weniger Systemänderungen und -eingriffe benötigt. Nicht nur das Frontend, sondern auch der Cronjob ist in PHP geschrieben, das macht SysCP sehr portabel. Der Cronjob selbst generiert und verwaltet dabei die Konfigurationsdateien für Bind, Apache und lighttpd. Diese können nämlich nicht in einer MySQL Datenbank abgebildet werden.

Die Vorgeschichte

Als ich ihm Rahmen meiner Ausbildung im Jahre 2004 das erste Mal so richtig Kontakt mit Serversystemen hatte, kam in mir das Verlangen auf selbst einmal solch ein System zu betreuen. So schaute ich mich nach diversen Überlegungen und Gesprächen mit meinen damaligen Geschäftskollegen nach einem Anbieter um. Als ich diesen also gefunden hatte war die Enttäuschung groß, da dieser Anbieter mir überhaupt nicht das verkauft hatte, was er eigentlich versprochen hatte, nämlich einen eigenen virtuellen Server mit vollem root Zugang.

Nach relativ kurzer Nutzungszeit dieses gebuchten Reselling-Accounts und diversen anderen Eskapaten entschloss ich mich ein weiteres mal nach einem neuen Anbieter zu suchen. Durch den tollen Tipp eines guten Freundes stieß ich somit auf die Firma Vollmar aus Nürnberg, die mich bis heute nicht ein einziges Mal enttäuscht hat. Die Entscheidung, zu wechseln, war daher sehr gut. Als ich also den virtuellen Server Anfang 2005 bestellt und etwas eingerichtet hatte, begann ich für mich selbst, als auch ein paar Freunde Webseiten zu hosten. Alles basierte auf privater und freundschaftlicher Basis und lief prima, denn das damals vorinstallierte Control Panel SysCP funktionierte perfekt.

Mit der Zeit erkannt ich allerdings, dass mir die von SysCP bereitgestellten Funktionen nicht ausreichen würden. Etwas verärgert nahm ich die Mängel hin und plante Mitte 2006 die ersten Änderungen an SysCP vorzunehmen. Allerdings blieb es dann vorerst bei den Plänen, denn die gute liebe Zeit war zum damaligen Zeitpunkt etwas rar. Erst mehr als ein Jahr später, nämlich Ende 2007/Anfang 2008 begann ich mich wieder mehr mit der Technik hinter SysCP zu befassen. Der Erstkontakt mit den Entwickler via IRC war sehr positiv und freundlich, was mich dann dazu veranlasst hat dem Projekt als Entwickler beizutreten.

Was bisher umgesetzt wurde

Einige meiner Erweiterungen für SysCP haben es in den Trunk und somit später in die Releases geschafft. Das Feedback dazu ist überwiegend positiv – was die anderen Entwickler und mich natürlich sehr freut. Zu meinen bisherigen Erweiterungen zählen die im folgenden aufgeführten Dinge.

FastCGI/mod_fcgid Erweiterung

Als ich am Anfang meiner Web-Entwicklerzeit von meinem guten Freund Marcell auf Cross Site Scripting (XSS) und Local File Inclusion (LFI) Sicherheitslücken auf meinen eigenen Webseiten aufmerksam gemacht wurde, stieg mein Interesse für IT-Sicherheit schlagartig an. Immerhin ist das Thema nicht nur für einen selbst, sondern auch für andere Projekte in der Zukunft von Relevanz. Immer wieder hört oder liest man, dass ein Produkt, egal in welcher Form, angreifbar ist. In der darauf folgenden Zeit beschäftigte ich mich daher stärker mit IT-Sicherheit und wie man sichere Programme schreibt.

Mit dem so neu angeeigneten Wissen über unsichere Programme und Skripte, wollte ich meinen eigenen Server gegen Angriffe aller Art bestmöglich schützen, sofern denn einmal ein Programm fehlerhaft sein sollte. So kam eigentlich nur das Betreiben von PHP über FastCGI/mod_fcgid in Frage. Dabei bekommt jeder SysCP Kunde eine eigene virtuelle User-Id unter der dann später jeder PHP Prozess ausgeführt wird. Damit ist es also möglich jedem Apache vHost eine eigene PHP Konfiguration, als auch einen eigenen System User zuzuweisen. Dies macht einen Hack eines vHosts gegenüber anderen Kunden fast (aber nicht ganz) unschädlich, da dieser durch die veränderten Rechte andere Dateien und Verzeichnisse nicht ändern kann.

Die bis zu meinem Projektbeitritt bestehende FastCGI Implementierung war allerdings sehr schlecht umgesetzt und zudem sehr beschränkt im Funktionsumfang. Es gab keine Möglichkeit Änderungen von der Administraionsoberfläche aus vorzunehmen, also musste man doch wieder via SSH Sitzung an die Sache ran gehen, um Änderungen vorzunehmen. Diesem Problem begegnete ich mit einer umfangreichen Erweiterung für SysCP, die es nun ermöglicht all diese Einstellungen vom Panel aus vorzunehmen.

Zu den neuen Dingen gehört das Editieren von PHP Konfigurationen vom Panel aus, sowie die Zuweisung einer solchen Konfiguration zu einer Domain oder Subdomain. Flo, der Projektinitiator selbst, erweiterte dies noch ein weiteres Mal, so dass jetzt noch mehr Optionen zur Verfügung stehen (Anzahl der PHP Prozesse pro Domain, Anzahl der maximalen Requests per Domain und Parsen von anderen Dateiendungen als .php). Mit der Version 1.4.3, welche demnächst veröffentlicht werden soll, wird diese Erweiterung nicht nur Apache 2, sondern auch lighttpd unterstützen.

Autoresponder

Eine Erweiterung, die eigentlich kaum noch aus dem täglichen Arbeitsleben wegzudenken ist, entstand ebenso aus meiner Arbeit. So übernahm ich den Code von goldfish, einem freien Autoresponder und modifizierte ihn stark, um mit dem restlichen SysCP System zu funktionieren. Leider musste ich feststellen, dass der damalige Code stark fehlerbehaftet war, logische Fehler enthielt und auch gegen bestehende Standards der RFC verstoßen hatte. Die Fehler konnten allerdings rasch beseitigt werden und somit gelangte auch diese Arbeit in das Release der Version 1.4.

Der Autoresponder selbst ist ein Cronscript, welches in regelmäßigen Abständen die Postfächer nach neuen Nachrichten durchsucht, für die ein Autoresponder konfiguriert wurde. Findet das Skript eine solche E-Mail, wird diese entsprechend geparst und eine Antwort E-Mail generiert. Dabei werden Header von Spamassassin oder Maillinglisten beachtet, um unnötige Mailbomben zu verhindern. Es wäre nämlich sehr unschön wenn sich zwei breitbandig angebundene Mailserver gegenseitig mit E-Mails bombardieren würden, die beiderseits fehlerhaft implementierte Autoresponder nutzen würden.

APS Installer

Die von mir größte Arbeit an SysCP ist mit Abstand der APS Installer. Dies ist ein System bzw. ein Modul für SysCP, welches den von Parallels bzw. Plesk definierten APS Standard implementiert. Dieser Standard legt fest wie populäre Webanwendungen wie Foren, Wikis oder CMS Systeme automatisiert installiert werden können. Dabei muss der eigentliche Nutzer keinerlei Kenntnis von Servern oder dem Betreuen von Webseiten haben, denn er muss lediglich stark abstrahierte Installationswizards durch klicken.

Ich habe diese Erweiterung für SysCP geschrieben, da ein solches System nicht mehr aus der Hostingbranche wegzudenken ist. Anbieter gehen immer stärker dazu über Software-as-a-Service anzubieten. Die aktuelle Implementierung für die APS API der Version 1.0 unterstützt bereits viele Features. So ist es unter gewissen Voraussetzungen möglich bis zu 180 Webanwendungen automatisiert zu installieren – es werden allerdings stetig mehr und mehr. Aufgrund dessen, dass dieser Standard auch in kommerziellen Web Panels wie Plesk 9 eingesetzt wird ist Parallels seinen Kunden dazu verpflichtet auch in Zukunft neue Paketversionen anzubieten. Dies kommt dann natürlich auch der Open-Source Gemeinde, also auch den SysCP Usern zugute.

Die Implementation lässt noch sehr viel Freiraum offen was Erweiterungen angeht. So wird es also noch viele Erweiterungen geben, unter anderem auch die Implementierung der APS API in Version 1.1, die wiederrum neue Features beinhaltet. Man kann also gespannt sein was noch alles kommen wird.

Neues Design für die Webseite

Während des SysCP Meetings im Juni 2008 stellten wir fest, dass das aktuelle Design für SysCP und der Webseite schon stark angerostet war und mehr an Web 1.0, als an ein modernes Administrationstool erinnert. Aus dieser Feststellung heraus habe ich mich dazu bereit erklärt ein neues Design für die SysCP Webseite zu erstellen. Das Resultat davon ist heute auf der SysCP Webseite als einheitliche CI zu sehen. Alle Unterseiten wurden von Florian Aders so umgebaut, dass alles gleich aussieht und sich die Besucher der Seite schnell zurecht finden. Vor der Umstellung gab es keine richtigen Unterseiten auf denen SysCP als Produkt vorgestellt und beworben wurde. Auch dieses Problem wurde aus dem Weg geräumt: So ist die Startseite nun attraktiv ausgestaltet und enthält Links zu wichtigen Informationen rund um SysCP, schließlich soll das Projekt noch mehr Anhänger, Nutzer und Entwickler finden.

Fazit

SysCP ist ein sehr fortschritliches und modernes Administrationstool für LAMP Server, das es lohnt zu testen und zu nutzen. SysCP kann sich sehr gut mit kommerziellen Produkten wie Confixx oder Plesk messen, wenn auch dort ganz andere Funktionen zur Verfügung stehen und die Zielgruppe eine andere ist. Ich persönlich würde für eigene Server SysCP immer den Vorzug geben, schließlich ist es Open-Source und damit kostenlos in der Nutzung und fehlt mal eine Funktion kann man die sehr schnell nachpflegen oder einbauen.

Dennoch muss ich auch etwas Kritik als Entwickler loswerden, die auch nur solche wiederrum betrifft. Für Anwender oder SysCP Nutzer habe ich hier nichts anzumerken. Mit der Zeit musst ich leider feststellen, dass alle Vorgänge innerhalb des Projektes sehr träge sind und keine richten Vorgaben existieren. Die Dokumentation ist nahezu überhaupt nicht vorhanden und da wo es sie gibt ist sie nicht ausreichend oder total veraltet. Dies betrifft nicht nur den Code, sondern auch Installationsanleitungen oder Handbücher.

Codetechnisch betrachtet hinkt SysCP stark des aktuellen State-of-the-art nach. Darüber hinaus werden neue Probleme geschaffen ohne dass alte behoben werden bzw. die eigentlichen Probleme werden von der Projektführung nicht erkannt. (Vielleicht wollen diese Probleme auch nicht gesehen werden!?) Das ärgert mich sehr und hat mich dazu veranlasst etwas von der Entwicklung zurück zu treten. Wer mehr dazu erfahren möchte, kann mich gerne anschreiben. Nichts desto trotz ist SysCP eine super Software und kann nur weiterempfohlen werden.