Sprache auswählen

CGI (Common Gateway Interface) bietet die Möglichkeit, auf einem Server Skripte in beliebigen Programmiersprachen auszuführen und damit Homepages mit bspw. Daten zu füttern. Nachdem wir im vorhergehenden Artikel einen Apache Server eingerichtet haben zeige ich hier, wie man die Ausführung von CGI Skripen in wenigen Schritten scharf schaltet und welche Regeln man beachten sollte, damit man damit auch sicher arbeiten kann.

CGI Skripte auf Apache 2 zulassen

Um CGI Skripte ausführen zu können muss man diese zunächst überhaut einmal zulassen und auch einen Ort definiern, an dem Apache nach den Skripten suchen soll. Dazu muss man die folgende Konfigurationsdatei im Editor bearbeiten. 

sudo nano /etc/apache2/sites-enabled/000-default.conf

Hier fügt man die blau markierten Zeilen ein und speichert die Datei.

Anstelle von /usr/lib/cgi-bin kann man jedes beliebige Verzeichnis angeben. Dies ist der Ort an dem Apache nach den Skirpten sucht. In der zeile AddHandler fügt man die Art von Skripen ein, die ausgeführt werden sollen. Da ich nur Python Skripte ausführen will, steht hier nur .py. Man kann natürlich auch PHP oder Pearl Skirpte etc. ausführbar machen.

Nach einem Neustart des Servers ist die Einrichtung abgeschlossen. Dazu in der Shell das folgende Kommando eingeben

sudo service apache2 restart

Testskript erstellen und ausführen

Zunächst erstellen wir ein einfaches Hallo Welt Skript. Dazu öffnen wir im Editor einen neu Datei in unserm Ordner für die CGI Skripte

sudo nano /usr/lib/cgi-bin/test.py

Das Skript sieht folgendermaßen aus

#!/usr/bin/env python

print('Content-type: text/html\n')
print('Hello world')

Fast fertig. Die Datei benötig noch die richtigen Rechte, um sie ausführen zu können. Für gewöhnlich bekommt root alle Rechte, die Benutzergruppe kann noch lesen und ausführen und alle restlichen Benutzer können das Skript lediglich ausführen. Die Rechte lassen sich ganz einfach anpassen

sudo chmod 755  /usr/lib/cgi-bin/test.py

Den Erfolg der Aktion können wir uns bspw. mit dem Befehl

sudo ls -al  /usr/lib/cgi-bin/test.py

Vorher war die Datei nicht einmal lesbar, nach der Rechteänderung können wir sie lesen und ausführen. Gekennzeichnet durch das x

Damit können wir jetzt den Browser starten und uns das Ergebnis ansehen.

 Einige Hinweise zum sichern Umgang mit CGI Skripten

CGI Skripte sind nichts anderes als ausführbare Programme. Damit kann man mit Ihnen natürlich auch allerlei Unfug anstellen.

Benutzerrechte

Ein wichtiger Grundsatz ist, dass Skripte niemals über eine andere Berechtigung, als 755 verfügen sollten. Stellt man sich vor, dass der Benutzer, der auf den Rechner zugreift auch Schreibrechte in das CGI Verzeichnis besitzt, kann er unsere Skripte überschreiben und beliebigen Schadcode hochladen.

Benutzereingaben

Sollte das CGI Skript Werte von bspw. einem Eingabeformular annehmen und verarbeiten dürfen die Eingaben niemals ungefiltert weiterverarbeitet werden. Ansonsten können leicht Strings, die ausführbare Befehle enthalten weitergegeben werden und so bspw. Datenbanken manipuliert werden.

Passwörter und Benutzernamen

Niemals darf ein Skript Benutzernamen und Passwörter enthalten. Denn über einen simplen Rechtsklick kann man sich den Quellcode der Homepage ansehen und hat damit schon das Tor zum Rechner aufgestoßen.