TNG vor Hackern schützen

Hilfe beim Installieren und Konfigurieren von TNG
Antworten
Benutzeravatar
Thomas
Site Admin
Beiträge: 1845
Registriert: 06.05.2002 11:22
Wohnort: Stuttgart
Kontaktdaten:

TNG vor Hackern schützen

Beitrag von Thomas »

Es gab wohl schon einige erfolgreiche Angriffe auf TNG. :evil:

Die Analysen dieser Angriffe haben bislang zwei Schwachstellen ergeben:

1. die PHP-Einstellung register_globals darf nicht auf on stehen, sonst haben Hacker leichtes Spiel

2. in älteren Versionen von TNG als 6.1 gibt es auch mit register_globals=off eine Schwachstelle in globallib.php.
Bei der Version 6.1 ist dieser Fehler bereits behoben.

Punkt 1 kann man mit TNG leicht überprüfen.
In TNG unter "Verwaltung / Einstellung und Konfiguration / System-Überprüfung" den Button "Starte PHP-Überprüfung" klicken.
Auf der ausgegebenen Seite nach "register_globals" suchen und prüfen, ob dort off steht.
Falls "on" eingestellt ist, muss man eine Datei php.ini in jedes Verzeichnis setzen, in dem php-Code enthalten ist.
Die Datei php.ini kann mit einem Texteditor erstellt werden und enthält eine Zeile mit diesem Inhalt: "register_globals = off".
Eventuell hilft auch eine Anfrage beim Provider mit der Bitte, diese Variable pauschal auf off zu setzen, dann hat man zukünftig Ruhe.

Bei Punkt 2 muss man die Datei globallib.php anpassen.

Diesen Teil

Code: Alles auswählen

if( $_GET && is_array( $_GET ) ) {
foreach( $_GET as $key=>$value ) {
${$key} = $value;
}
}
if( $_POST && is_array( $_POST ) ) {
foreach( $_POST as $key=>$value ) {
${$key} = $value;
}
}
bitte ersetzen mit diesem Teil:

Code: Alles auswählen

if( $_GET && is_array( $_GET ) ) {
foreach( $_GET as $key=>$value ) {
if($key == 'cms' || $key == 'lang' || $key == 'mylanguage') die("sorry!");
${$key} = $value;
}
}
if( $_POST && is_array( $_POST ) ) {
foreach( $_POST as $key=>$value ) {
if($key == 'cms' || $key == 'lang' || $key == 'mylanguage') die("sorry!");
${$key} = $value;
}
}
Damit werden die übergebenen Variablen schärfer geprüft und ggf. wird die Routine hart beendet, bevor Hacker mit ihren Tricks durchkommen.

Gruß
Thomas
Viele Grüße
Thomas
Benutzeravatar
Thomas
Site Admin
Beiträge: 1845
Registriert: 06.05.2002 11:22
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von Thomas »

Anscheinend suchen Hacker mittels Googles "in-URL" nach TNG-Installationen und finden daher potentielle Ziel eher, die TNG in einem gleichnamigen Ordner installiert haben.

Ich habe deshalb gerade meinen TNG-Ordner umbenannt.
Natürlich hagelte es dann erstmal jede Menge Fehlermeldungen :lol:

in der Datei config.php auf dem Server muss dann der rootpath und die tngdomain entsprechend dem neuen Verzeichnisnamen korrigiert werden.
Und schon läuft wieder alles. :D

Gruß
Thomas
Viele Grüße
Thomas
Benutzeravatar
Thomas
Site Admin
Beiträge: 1845
Registriert: 06.05.2002 11:22
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von Thomas »

Noch ein Sicherheitshinweis.

Nach der Installation von TNG sollten aus Sicherheitsgründen auf dem Server unbedingt die 4 folgenden Dateien gelöscht werden.

historytemplate.php
readme.html
tnginstall.php
appendix.html

Wer die Dateien noch nicht gelöscht hat, sollte das schnellstens nachholen. :)

Gruß
Thomas
Viele Grüße
Thomas
Stefan24
Mitglied
Beiträge: 6
Registriert: 17.01.2009 16:07

Beitrag von Stefan24 »

Hallo,

ich habe jetzt von meinem Provider folgende Antwort bekommen:

die Anpassung von PHP-Einstellungen können Sie selbst vornehmen. Legen Sie hierzu eine Datei php.ini in dem Verzeichnis an, in dem sich das
PHP-Skript befindet, für das die geänderten Einstellungen gelten sollen.
Bitte beachten Sie, dass die Einstellungen nicht automatisch auch für
Unterverzeichnisse gelten, bitte legen Sie daher ggf. entsprechende
Kopien der php.ini an.

Die php.ini besteht aus beliebig vielen Einträgen der Form "variable =
wert" in jeweils einer Zeile. Eine einfache php.ini könnte
beispielsweise so aussehen:

register_globals = off
upload_max_filesize = 50M
allow_url_fopen = off


Durch das Anlegen einer eigenen php.ini werden einige
Standardeinstellungen unseres Servers ignoriert. Wenn Sie sichergehen
möchten, dass sich Ihre PHP-Konfiguration nur in dem Punkt
unterscheidet, den Sie ändern möchten, fügen Sie Ihrer php.ini bitte
folgende Einträge hinzu:

memory_limit = 32M
upload_max_filesize = 20M
max_execution_time = 10
browscap = /usr/local/lib/browscap.ini
register_globals = on
error_reporting = (E_ALL & ~E_NOTICE & ~E_WARNING)
url_rewriter.tags =
"a=href,area=href,frame=src,form=fakeentry,fieldse t="

Die aktuell gültigen Einstellungen können Sie überprüfen, indem Sie in
Ihr PHP-Skript den Befehl "phpinfo();" einfügen. Eine selbst angelegte
php.ini ist automatisch für PHP4 und PHP5 gültig.

In dem Beitrag von Thomas Grebe stand ja, dass es reicht, wenn man register_globals auf off setzt. Was würdet Ihr Experten empfehlen ? Die einfache Version oder die vom Provider ?
Muss ich die php.ini-Datei jetzt in alle Unterordner (Dokuments, Media, Sprachordner... reinkopieren ?

Danke für Eure Hilfe

Stefan
Benutzeravatar
Thomas
Site Admin
Beiträge: 1845
Registriert: 06.05.2002 11:22
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von Thomas »

Hallo Stefan,

Du kannst Dir z.B. die "offizielle" php.ini Deines Providers in Dein Stammverzeichnis kopieren und daran die benötigten Änderungen durchführen.
Über ein php-Skript kannst Du dann in jedes Unterverzeichnis einen "Symbolic Link" auf diese php.ini anlegen. So werden Anpassungen an dieser einen Datei in allen Unterverzeichnissen angewendet.
Ich hatte per Google-Suche mal ein passendes Skript gefunden, kann es aber jetzt gerade nicht mehr finden.
Viele Grüße
Thomas
Antworten