Was ist das GX Website-Sicherheits-Plugin für CMSimple?
Das GX Website-Sicherheits-Plugin ist ein Skript, das versucht, gewisse generelle Sicherheitsprobleme in PHP-Skripts zu bekämpfen.
Es dient der direkten und transparenten Sicherheit in diversen Szenarien, die durch regelmäßige Anfälligkeiten in Skripts enstehen, weil z.B. beim Programmieren nicht genug auf Sicherheit geachtet wurde. Das Plugin versucht, diese Achtlosigkeit zu kompensieren.
Ursprünglich basierte es auf dem Cafe CounterIntelligence PHP Website Security Skript von Mike Parniak.
Es ist ein Plugin für CMSimple.
Wogegen kann das GX Website-Sicherheits-Plugin helfen?
Anfragenüberflutung (HTTP request floods)
Diese Art von Problemen war eine der ersten Anforderungen, die das Skript bekämpfen sollte.
Es gibt Programme, die eine Website mit schnell hintereinander erfolgenden GET oder POST Anforderungen überfluten, um die CPU lahm zu legen, um tausende von Emails zu erstellen, um Datenbanken zu füllen oder um sonstige Dinge zu tun. Es gibt viele Skripts, die so etwas tun können und die meisten Webhoster neigen dazu, Accounts zu sperren, die Ziel eines solchen Angriffs geworden sind. Das Plugin hilft sich vor solchen Angriffen zu schützen.
Anzeigeanfälligkeiten in Skripts
Eine der häufigsten Anfälligkeiten in PHP Skripts.
Benutzer finden eine CGI Variable, die wörtlich angezeigt wird und schicken HTML-Kode (meistens Javascript) damit durch, der z.B. ein Benutzer-Cookie an ihren Webserver schickt. Dann wird diese Information genutzt um ein Login zu stehlen oder Schlimmeres zu tun. Das GX Skript besitzt die Möglichkeit, alle GET, POST bzw. Cookie Daten zu säubern, um alle < > Zeichen in ihre anzeigbare, jedoch nicht ausführbare, Version zu ersetzen. Dies reduziert meistens das Risiko von Anfälligkeiten dieser Art.
Allgemeiner Überflutungs-Schutz (flood protection)
Eine weitere Möglichkeit des Skripts ist es zeitbasierte Überflutungstests für gewisse Funktionen durchzuführen. Das bedeutet, dass man einen eindeutigen Bezeichner (z.B. "messagepost"), einen Zeitwert (z.B. 60 Sekunden) und optional einen Schwellenwert (vorgegeben ist 1) angeben kann und die Funktion dann TRUE zurückgibt wenn sie mehr als <Schwellenwert> mal vom gleichen Benutzer aufgerufen wurde, ohne dass zwischen den Aufrufen die angegebene Zahl von Sekunden lag.
Sperren von IP via .htaccess
Optional (standardmäßig ist dies eingeschaltet) kann das Skript die Datei .htaccess anpassen um IPs von Benutzern zu sperren, die die Website missbraucht haben. Dies reduziert drastisch die CPU-Last und verhindert weitere Versuche, die Website zu missbrauchen.
Damit diese Möglichkeit funktionieren kann, muss das Skript Schreibrechte auf die Datei .htaccess haben (wenn sie existiert).
Anzeige bzw. Stehlen von HTML Quellkode
Das Skript kann automatisch Seiten in Javascript-Funktionen verpacken. Es wird entweder die gängige "Escape"-Technik oder die interne Verschlüsselungsmethode von GXSecurity benutzt, die die Seitendaten zwar nutzbar lassen, aber den Quellkode verstecken. Der Schlüssel wird in einem Cookie gespeichert, das bei jedem Aufruf ändert. Somit erhält der Benutzer das Cookie und die Daten gleichzeitig, kann sie aber nachher nicht mehr entschlüsseln.
Blockieren von IP-Adressen auf schwarzen Listen
Das Skript identifiziert automatisch IP-Adressen, die sich auf so genannten schwarzen Listen befinden und kann diese sperren um zu verhindern, dass bekannte Spammer auf die Website zugreifen und versuchen sie zu hacken.
Blockieren von Besuchern aus benutzerdefinierten Ländern
Websites werden oft von Benutzern besucht, die sich in Ländern befinden, die für Missbrauch von Hackern und/oder Bots bekannt sind.
Das Skript hat die Möglichkeit, Besucher aus diesen Ländern individuell zu sperren.
URL Cracks und Injektionen aufspüren
Das Skript spürt automatisch Angriffe auf, die von URL Cracks bzw. Injektionen ausgehen.
Wie wird das Plugin benutzt?
GXSecurity installieren
Einfach das Plugin in den Plugin-Ordner von CMSimple kopieren. Das war es schon!!!
Ok, wenn etwas geändert und gespeichert werden soll, dann müssen die Rechte gewisser Ordner und Dateien durch chmod angepasst werden. Im Plugin-Ordner gibt es vier Ordner (config, css, languages und log), die mittels chmod in 777 geändert werden müssen. Das Gleiche gitl für die Dateien in diesen Ordnern.
Ferner muss das Plugin mit dem Template verbunden werden. Dazu genügt es einfach die folgenden Linie in die erste Zeile von template.htm zu kopieren:
<?=GXSecurity();?>
GXSecurity konfigurieren
Es gibt eine Reihe von Variablen in der Konfiguration, die man sich ansehen und nach den eigenen Anforderungen anpassen kann.
Variable | Value |
usehtaccessbans | 1 = .htaccess verändern um IPs zu sperren 0 = IPs nicht sperren |
filterGETvars | 1 = HTML Tags in GET Variablen säubern 0 = nicht |
filterCOOKIEvars | 1 = 1 = HTML Tags in COOKIE Variablen säubern 0 = nicht |
filterPOSTvars | 1 = 1 = HTML Tags in POST Variablen säubern 0 = nicht |
extraPOSTprotection | 1 = zusätzlichen POST-Schutz benutzen 0 = nicht |
extraGETprotection | 1 = zusätzlichen GET-Schutz benutzen 0 = nicht (nicht angeraten!) |
checkmultiPOST | 1 = nur die Anzahl von maxmultiPOST sich folgenden POSTs erlauben 0 = nicht drum kümmern |
maxmultiPOST | maximale Anzahl von sich folgenden POSTs, wenn checkmultipost aktiviert ist |
zipcompress | 1 = Seiten mittels der GZIP Bibliothek komprimieren (niedrigere Bandbreite, höhere CPU-Last 0 = nicht |
compresslevel | Komprimierungs-Lever für zipcompress, von 1 (niedrig) bis 9 (Maximum) |
cpuloadmonitor | 1 = Zugriff blockieren wenn eine gewisse Systemlast erreicht ist 0 = nicht |
cpumaxload | maximum 5 Minuten mittlere Systemlast bevor der Zugriff blockiert wird |
gxsessionpath | wenn nicht leer, bezeichnet einen Ordner um die Sitzungsdateien zu speichern |
filterblacklistedIPs | 1 = IPs von schwarzen Listen sperren 0 = nicht |
filtercountries | 1 = Länder aus countryfile sperren 0 = nicht |
crackcheck | 1 = auf Cracks und Injektionen testen 0 = nicht |
countryfile | Name der Datei mit den zu sperrenden Länderkodes |
crackfile | Name der Datei mit den aufzuspürenden Cracks und Injektionen |
badattempts | Anzahl der unerlaubten Zugriffe bevor die IP in .htaccess gesperrt wird oder eine Mitteilung kommt, dass zu viele schnell aufeinander folgende Zugriffe gewesen sind. |
logheader | Kopfzeile der Logfiles |
Alle Optionen, die CPU lastig sind oder Probleme bereiten können, sind standardmäßig abgeschaltet. Durch Ausprobieren kann man am besten die geeignetesten Optionen für die eigene Site herausfinden.
Zu beachten: GZIP-Kodierung / HTML-Verschüsselung
Wenn die eine oder andere Option in Zusammenarbeit mit GXSecurity benutzt werden soll, muss sicher gestellt sein, dass nicht bereits GZIP-Kodierung benutzt wird. Falls dem so ist, muss es in dem anderen Skript ausgeschaltet sein und anstelle dessen in GXSecurity aktiviert werden. Die HTML-Verschüsselung kann nicht benutzt werden wenn ein Skript bereits seinen eigenen GZIP-Buffer hat, da der GZIP-Buffer von dem Verschlüsselungs-Buffer eingesetzt werden muss. GXSecurity vergewissert sich, dass der Benutzer GZIP-Kodierung annehmen kann, bevor sie benutzt wird. GXSecurity's GZIP kann also getrost anstelle des anderen Skripts verwendet werden.
Zu beachten: Säubern von POST-Variabeln
Manche Skipts erlauben das Einfügen von HTML-Kode in Artikeln, Mitteilungen, Signaturen, usw. In diesem Fall muss das Säubern von POST-Variabeln ausgeschaltet sein, damit nicht alle < > Zeichen in ;lt ;gt konvertiert werden. Wenn HTML-Kode jedoch nicht gebraucht wird, sollte das Säubern von POST-Variabeln eingeschaltet werden, da es die Risiken von XSS (Cross-Site Scripting) extrem verringert.
Zu beachten: CPU Monitor
Es ist wahrscheinlich besser diese Option ausgeschaltet zu lassen. Es ist unsicher, ob sie je helfen wird oder ob sie nur einfach alles verlangsamt weil ein externer Befehl ausgeführt werden muss... Benutzung auf eigene Gefahr!
Bekannte Probleme
Damit der interne Editor von CMSimple (OEdit) korrekt mit GXSecurity funktioniert, muss in PHP.INI "session use_trans_sid" auf "OFF" stehen oder die PHP-Variablen müssen durch GXSecurity veränderbar sein. Mehr Informationen dazu findet man hier: http://www.php.net/manual/de/ref.session.php.
Garantie
Es gibt keine Garantie bei der Benutzung des Plugins. Es wird auf eigenes Risiko benutzt und es wird keine Haftung für Datenverluste übernommen, die ggf. durch den Gebrauch von GXSecurity entstehen.
Wo finde ich GXSecurity?
Die aktuelle Version von GXSecurity kann man hier downloaden.
Hilfe und Fragen
Hilfe und Fragen bitte nur im CMSimple-Forum.
Verbesserungsvorschläge für GXSecurity?
Ich bin weder Sicherheits- noch PHP-Experte. Wenn es also Möglichkeiten gibt, das Plugin zu verbessern, würde ich mich über eine Rückmeldung mittels meiner Website freuen.
© 2007 by Gerd Xhonneux, xtc