Sichere PHP-Konfiguration

Sicherheit den Webservers, Servers und rund um das phpBB
Gesperrt
Twins

Sichere PHP-Konfiguration

Beitrag von Twins » Mo 18.Jun, 2007 14:09

Hallo,

ich habe für mein Forum einen neuen vServer und habe jetzt endlich vollen Rootzugriff (vorher hatte nur mein Freund den Root).
Da mir die Sicherheit des Servers und des Forums sehr wichtig istz, habe ich einige Fragen zur sicheren PHP-Konfiguration.

Mein Orion-Board ist auf dem aktuellsten Stand, genau so wie alle darin enthaltenen MODs, da ich diese regelmäßig auf Updates prüfe.
Auch die Serversoftware ist auf den neusten Stand (PHP 5.2.3).

Ich habe vor, diese Sachen an der php.ini zu verändern:

Code: Alles auswählen

register_globals = Off
allow_url_fopen = Off
allow_url_include = Off
magic_quotes_runtime = Off
expose_php = Off
magic_quotes_sybase = Off
register_long_array = Off
Gibt es sonst noch irgendetwas, was ich unbedingt deaktivieren/aktivieren sollte?

Bringt mir das Setzen von safe_mode und open_basedir was? Und wie genau verwende ich diese zwei Befehle?

Mit safe_mode = On sollen ja einife Befehle (wie z.B. exec, system und mkdir) eingeschränkt werden.
In wie fern beeinflusst das die Funktionalität meines Forums?

Vielen dank für eure Hilfe!

Viele Grüße,
Twins

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29107
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus » Mo 18.Jun, 2007 14:19

open_base_dir ist zu vernachlässigen, aber safe_mod = On dringend zu empfehlen.
Damit werden klar einige Befehle nicht mehr so direkt ausführbar, aber in der Regel zeugen solche Scripte auch von einer schlechten Umsetzung der betreffenden Aufgabe.
Ansonsten wäre in der php.ini alles weitere je nach Bedarf einzustellen, weitere Sicherheitsfeatures, bzw. nötige/wichtige Einstellungen sind mit so erst einmal nicht im Gedächtnis.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

Twins

Beitrag von Twins » Mo 18.Jun, 2007 14:25

Aber mein Oriuon funktioniert bei safe_mode = On noch, oder?
Habe mal irgendwo gelesen, das phpBB mit PHP5 und angeschalteten Safe Mode Probleme bekommen kann.

Auf den jetzigen Server ist open_basedir gesetzt und zwar auf /var/www/web2/, dort liegt auch das Forum.
Was genau macht open_basedir überhaupt?

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29107
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus » Mo 18.Jun, 2007 15:02

Das Orion ist auf safe_mode = ON erstellt worden ;)

open_basedir legt dagegen fest, wo PHP arbeiten, bzw. schreiben darf.
Also das Verzeichnis, in dem die Scripte laufen. In der Regel wäre das der Webspace, also der Root des Webservers, daher bliebe open_basedir auf NULL ("leer"m bzw., ungesetzt).
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

Twins

Beitrag von Twins » Mo 18.Jun, 2007 19:45

Okay, ich hoffe, das mein vServer dann einigermaßen sicher ist, da ich dort nur das nötigste drauf habe (nur Sachen, die ich auch umbedingt brauche) und diese sind auch alle auf den aktuellen Stand.

Vielen dank für deine Hilfe!! :D

EDIT
habe noch eine Frage, was denkt ihr über die Einstellung display_errors = Off?
Habe auf einer Seite über Linux/Webserver und deren Sicherheit gelesen, das man display_errors in der php.ini abschalten sollte.
Zuletzt geändert von Twins am Sa 30.Jun, 2007 18:38, insgesamt 1-mal geändert.

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29107
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus » Sa 30.Jun, 2007 19:18

Naja, das phpBB schaltet bereits alle "unwichtigen" Meldungen ab (ist in der common.php geregelt), wenn aber display_errors bereits in der php.ini deaktiviert wird, kann man im Falle von Fehlern diese nur sehr schwer finden...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

Twins

Beitrag von Twins » Mo 02.Jul, 2007 10:55

Thx für deine Antwort.

Habe auf Goggle mehrere Seiten gefunden, welche eine weitere Absicherung über disable_functions in der php.ini beschreiben.

Ich habe jetzt mal einige Funktionen dort eingetragen, nur jetzt kann ich im ACP beim Ctracker nicht mehr den Dateiscanner und Prüfsummenscanner verwendet, starete einen Scan und bei der Auflistung aller Ergebnisse bekomme ich eine leere Liste.

Da habe ich wohl eine Funktionen gesperrt, welche das prüfen der Dateien verhindert. Welche Funktion ist das genau? Was soll ich bei disable_functions aus der php.ini verwerden?

Code: Alles auswählen

disable_functions = exec, shell_exec, proc_open, proc_nice, escapeshellarg, escapeshellcmd, passthru, system, popen, pfsockopen, link, getmyuid, disk_free_space, ini_alter, ini_get_all, ini_restore, ini_set, proc_open, symlink, imap_mail, set_time_limit, dl

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29107
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus » Mo 02.Jul, 2007 12:05

Jetzt weiß ich nicht, welche Basis-Funktion die Datei-Funktionen von PHP benötigen, direkt hast Du davon jedenfalls keine gesperrt.
Am ehesten würde ich jetzt auf passthru tippen.
Einfach mal deaktivieren und testen.

BTW: proc_open hast Du zweimal angegeben...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

Twins

Beitrag von Twins » Mo 02.Jul, 2007 18:26

Habe proc_open und passthru rausgenommen und dann neugestartet.
Leider geht es immer noch nicht.
Hab mal die Mailfunktion wegen imap_mail gestet, diese funktioniert einwandfrei.

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29107
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus » Mo 02.Jul, 2007 18:38

Dann muss ich wirklich passen.
Da kannst Du letztlich nur noch jede einzelne abgeschaltete Funktion ausklammern und testen.

BTW: Neustart reicht nur der Webserver, den Server selber muss man nicht neu starten...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

Twins

Beitrag von Twins » Fr 06.Jul, 2007 18:43

EDIT
das Problem mit dem Ctacker-Scannern hat sich erledigt, lag am safe_mode, sobald ich diesen auf off gestellt habe, ging alles wieder. Schalte ich den safe_mode = On, dann kann ich den Prüfsummencanner bzw. Dateiscanner nicht mehr nutzen.

Dann sichere ich meine Dateien jetzt ab und aktiviere den safe_mode danach wieder.
Außerdem habe ich weitere Funktionen per php.ini gesperrt.

EDIT 2
ich habe noch eine Frage:
habe drei Verzeichnisse, welche von außen erreichbar sind (Forum) und MySQLDumper bzw. phpMyAdmin (natürlich mit HTACCESS-Passwort gesichert).

Ich möchte jetzt open_basedir auf diese Verzeichnise setzen:

Code: Alles auswählen

open_basedir = /var/www/ordner1:/var/www/ordner2:/var/www/ordner3
Jetzt meine zwei Fragen:

1.) Muss ich open_basedir auch auf /var/www/logfiles setzen? Dort liegen die Logs von Lighttpd und andere Error bzw. Access Logs. Wenn ich dort open_basedir setze, ist das ein Sicherheitsrisiko? Oder gehen die Logs auch, wenn PHP dort nicht schreiben darf?

2.) Muss ich open_basedir auf /var/www/ordner1 oder /var/www/ordner1/ setzen? Also hat das Slash hinten da irgendeine Bedeutung?
Zuletzt geändert von Twins am Sa 21.Jul, 2007 17:53, insgesamt 2-mal geändert.

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29107
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus » Sa 21.Jul, 2007 19:41

Öhm, open_basedir ist ein "Basisverzeichnis", von wo aus PHP Scripte arbeiten, bzw. suchen.
Also kann man mit open_basedir keine Verzeichnisse ausserhalb der PHP-Einzugsrechte, sprich im Linux-Root-Baum, setzen, da PHP dort eh nicht hin kommt.
Im schlimmsten Fall würde damit sogar der Webserver abstürzen!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

Twins

Beitrag von Twins » So 22.Jul, 2007 08:46

Okay, thx.

Habe noch eine letze Frage:
macht es Sinn, den SSH-Port von 22 auf einen höhreren zu verlegen?

Auf diversen Seiten habe ich gelesen, dass es BruteForce Attacken gegen den Shell gibt, welche sich aber immer gegen den Port 22 richten. Und wenn man diesen in einen höhreren Bereich legt, dann ist man vor Einbrüchen sicherer.

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29107
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus » So 22.Jul, 2007 09:04

Öhm, SSH ist per default auf Port 22 festgenagelt.

Kleiner Exkurs:
Hinter einem Port verbirgt sich immer auch ein definierter Speicherbereich in einem Computer, so daß man bei Nutzung mehrerer Ports (auch durch andere Anwendungen!) schnell Datensalat bekommen kann, wenn verschiedene Protokolle gleiche Ports verwenden.

Vor Umstellung auf einen anderen Port muss daher sichergestellt werden, daß kein User andere Dienste auf dem neuen Port laufen hat. Ansonsten funktionieren beide Dienste nicht mehr korrekt.
Jetzt kann man zwar googlen, um die Standard-Ports diverser Protokolle zu kennen und um diese herumzuschippern, aber man kennt eben nicht alle Ports, die irgend jemand halt benutzen kann.

Dazu:
Keine noch so hohe Verschlüsselung und Absicherung ist im Internet sicher genug, um alle Hacker draussen zu behalten. Es gilt dabei immer nur der Grundsatz: Je schwerer, desto weniger oft müssen z. B. Schlüssel oder Passwörter geändert werden.
Daher ist die Panik, das SSH auf Port 22, da bekannt, unsicherer ist, als auf einem anderen Port, zwar berechtigt, aber mit einem wachen Auge auf Seiten des Webmasters und der User ist das zu vernachlässigen.

Und btw: Würdest Du freiwillig auf einer Internetseite so brisante Inhalte abstellen, die einen persönlich oder unternehmerisch hoher Schaden zugefügt werden könnte? Lohnt es sich also für Hacker, die eigene Seite anzugreifen? ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

Twins

Beitrag von Twins » So 22.Jul, 2007 11:45

Ich denke, mein Shell-Passwort ist stark genug, um solche Attacken ins leere gehen zu lassen.

Ah, thx für die Aufklährung! :)

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29107
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus » So 22.Jul, 2007 12:07

Keine Ursache.
Solche Dinge muss man eben berücksichtigen, wenn man von Standard abweichen will.
Und sofern man nicht sicher ist, besser auch nichts ändern.
So umgeht man dann den meisten Ärger, der oft grösser ist, als daß die Sicherheit wirklich und wesentlich verbessert wurde.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

Gesperrt