| Webmaster-Security Fragen zur richtigen Serverkonfiguration oder Absicherung dynamischer Scripte gehören hier hinein. |
Diskussion: [PHP] Setup Fragen im Forum Webmaster-Security, in der Kategorie Security Area; Hallo! Ich habe mir neulich einen Webserver und PHP server gemacht und hab dazu ein paar Fragen. Aber hier erstmal ...
![]() |
| | #1 (permalink) |
| Registriert seit: 02.01.07 ![]() Likes: 0 | Hallo! Ich habe mir neulich einen Webserver und PHP server gemacht und hab dazu ein paar Fragen. Aber hier erstmal die Server: -apache_2.2.4-win32-x86-no_ssl -php-5.2.1 über win32 installer Meine erste Frage ist, welche Ports ich denn nun öffnen muss, um vom Internet aus auf den Server zu gelangen. Über (localhost) und locale IP funktioniert der Server. Hab schon Probiert, die Ports 80 und 443 TCP/UDP zu öffnen, trotzdem reagiert der Server nicht =( Meine zweite Frage ist, ob dieser Zugriff auch sicher ist? Ich hab gelesen, man sollte den PHP server mit Installer installiert nicht online stellen, da er Sicherheitsrisiken birgt. Kann ich die jetzt manuell noch ausbessern? Oder habt ihr spezielle Sicherheitstips? Oder muss ich den Server letztendlich nochmal manuell aufsetzen? Danke im Vorraus |
| | |
| | #2 (permalink) |
![]() Registriert seit: 06.01.07 ![]() Likes: 0 | naja Grundsätzlich ist ein Apache mit PHP auf Windowsservern keine gute Idee... Abgesehen davon soltest du dir die php.ini mal durchschauen... und -open_basedir (enthällt allerdings eine kleine Sicherheitslücke) -upload_tmp_dir -session.save_path -disable_functions -cgi_exec_dir solltest du dir mal genauer anschauen... php_safe_mode kannste knicken da es einfach Schrott ist^^ Ist in der nächsten php-version auch sehr wahrscheinlich nichtmehr implementiert... Desweitern musst du Die Apache-Config studieren... Es ist extremst wichtig dass du diese korrekt einstellst um Sicherheitslücken zu schließen am Anfang der Config nach "ServerRoot" würde ich erst mal ein <Directory /> Order Allow,Deny Deny from All </Directory> setzen um egenerell erst mal jeglichen Zugriff zu verbieten... und ganz wichtig: Lass den Apache nicht in der root-Gruppe laufen! Zur Erreichbarkeit: Such ma in der Config den Eintrag "Listen" diesen Port (TCP) musst du in deienr Firewall Freigeben (standartmäßig 80). Eventuell steht dieser Eintrag auch in der "ports.conf" im Config-Verzeichnis 443 ist nur für SSL zuständig, was du allerdings nicht installiert hast |
| | |
| HaBOT | |
| |
| | #3 (permalink) | |
| Registriert seit: 23.03.05 ![]() Likes: 19 | Zitat:
Code: Listen *:80 Ansonsten könnte man auch noch probieren, die Routerfirewall auszustellen. Allerdings sollte sowas keine dauerhafte Lösung sein ... | |
| | |
| | #4 (permalink) | |
| Themenstarter Registriert seit: 02.01.07 ![]() Likes: 0 | thx erstmal ![]() Zitat:
Listen *:80 funktioniert auch nicht. Der server macht zwar keine Probleme beim Neustart, aber was geändert hat sich nicht. Vorher stand es auf Listen 80 Merkwürdig dabei ist: Auch Listen 192.168.2.23:80 funktioniert. (also über lokal) Listen 84.1x2.x2x.139:80 (also extern, ip zensiert ^^) funktioniert nicht. "the request operation has failed" beim neustart. Mag scheinbar keine externen IP's... | |
| | |
| | #5 (permalink) | |
| Guest Likes: | Zitat:
Wie hast du denn versucht auf den Server zuzugreifen? Übers eigene Netzwerk ( http://Netzwerk-IP:80/index.html ) oder z.b. über DynDNS ( http://deine_id.no-ip.org:80 )? Eine andere Fehlerquelle könnte sein, dass der Port schon belegt ist. Also einfach mal 81 statt 80 nutzen und darauf zugreiffen. Ein beliebtes Programm ist z.b. Miranda ( Client für ICQ, MSN,... ) Zur Sicherheit: Wie keksinat0r schon genannt hat: Passe die PHP.ini und andere Configdateien an, schränke den Benutzer auf ein bestimmtes Verzeichnis ein ( der open_basedir-Bug sollte meines Wissens bereits behoben sein... ),.. Gegen SQL Injections, XSS-Attacken, usw kannst du dich auch mittels mod_secure schützen. Du musst dich damit auseinandersetzen, damit dein System am Ende auch wirklich sicher ist. Wenn man hier dir einfach nur irgendwelche Einträge nennt wird dein System nach wenigen Monaten wieder zu den unsicheren gehören | |
|
| | #6 (permalink) |
![]() Registriert seit: 06.01.07 ![]() Likes: 0 | Es ist nunmal eine Tatsache dass Windowsserver idR unsicherer sind als UNIX-Server... Und wenn man unter UNIX seine Benutzer und Rechte nicht angemessen verteilt ist man selbst schuld... Und nein: Die Basedir-Lücke ist in PHP5 noch nicht volständig behoben, es wurde lediglich erschwert ihn auszunutzen. Dieser Bug hängt nämlich direkt mit der Art und Weise wie PHP mit Dateien umgeht zusammen... Erst in PHP6 wird dieser Bug voraussichtlich vollständig behoben sein... (was ja nichtmehr so lange dauern wird )zum Thema Apache-User: Das war ein Denkfehler Meinerseits... Wie man unter Windows entsprechende Benutzer anlegt und den Apache diese nutzen lässt weis ich nicht... Ich bin bei Servern eben UNIX gewohnt... Dort einfach den Benutzer anlegen und dann in der apache.conf / httpd.conf User benutzer Group gruppe eintragen... |
| | |
| | #7 (permalink) |
| Themenstarter Registriert seit: 02.01.07 ![]() Likes: 0 | Ich will mir keine Windows-serverfestung/Hochsicherheitstrakt machen, sondern nur eine ausreichende Sicherheit haben. Das ist sicher auch unter windows möglich und mehr will ich auch gar nicht ![]() @fetzer Hast du so ne Wahrsagerkugel neben dem PC stehen? Hab tatsächlich Miranda mit ICQ und MSN am laufen. Hab mal auf Port 81 gewechselt, bzw miranda ausgemacht. Hat aber auch keinen Erfolg gehabt. >.>Wahrscheinlich muss man irgendwo einstellen, dass apache auch auf Zugriffe durch die externe IP reagieren soll. Oder das in der Host Datei von Windows umstellen. Und ich hab nicht über DynDNS sondern über die tatsächliche externe IP verbunden. Ich hab mal wegen der Gruppe nachgeguckt, da steht: Syntax: User Unix-User-ID Wie mach ich das nun in windows? Das Ganze nach Schema User benutzer Group gruppe in die Config zu schreiben mag apache nicht. Btw glaube ich apache is standartmäßig als user "nobody" eingelogt und hat kaum Rechte. Nur mal rein nach der Logik: Haben nicht alle PC's hinter dem router die gleiche externe IP? |
| | |
| | #8 (permalink) |
![]() Registriert seit: 06.01.07 ![]() Likes: 0 | Wie ich bereits oben beschrieben habe weis ich nicht ob du unter Windows überhaupt ein solches Gruppensystem anlegen kannst. Meines wissens nach aber eben nicht, und das ist eines der Probleme wenn du Windows-Server benutzt... Wie es bei der Server-Version aussieht weis ich auch nicht, da ich diese noch nicht benutzt habe... Wie dem auch sei, versuch ma in deinem Router den 80/81 er Port auf deinen Server zu leiten. -> Portforwarding. |
| | |
| | #9 (permalink) | |||
| Guest Likes: | Zitat:
![]() Aber zu behaupten, dass Windows einfach unsicherer ist als Linux, ist einfach nur naiv. Das ist eine Behauptung, aufgestellt von Linux-Beführwortern, genauso wie von MS die These aufgestellt wird, dass Windows letztendlich doch günstiger sei. Aber ich glaube, das gehört in einen anderen Thread und nicht hier dazwischen Zitat:
![]() Egal. Kannst du nichtmal deine httpd.conf posten ( bitte über http://phpfi.com/ verlinken o.ä. )? Zitat:
Hier mal noch das Tutorial vom BSI zu einer Apache-Installation: http://www.bsi.bund.de/gshb/deutsch/m/m04193.htm | |||
|
| | #10 (permalink) |
| Themenstarter Registriert seit: 02.01.07 ![]() Likes: 0 | Ich habe mir jetzt das Kapitel "Sichere Installation unter Windows" durchgelesen, aber dort steht auch nicht drinn, wie ich Apache denn jetzt den Benutzer "apache" oder die Usergruppe zuweise. Hier die Config Datei: http://phpfi.com/220446 Hier ein Bild vom router Setup: ![]() Die Erreichbarkeit soll aber erstmal Priorität haben. Mir nützt kein sicherer Sevrer, wenn eh niemand ihn erreichen kann... Edit: Es funktioniert. Das mit den Ports läuft, es hat nich funktioniert, weil ich von meinem eigenen PC aus auf die externe IP zugegriffen hab.Jetzt hab ich mal den Port 81 geöffnet und nem Freund über ICQ meine IP gegeben. Der konnte auf meine html zugreifen. ![]() Nun also wieder zum User Problem. |
| | |
| | #11 (permalink) | ||
![]() Registriert seit: 06.01.07 ![]() Likes: 0 | Zitat:
Da hilft nur das starten des Service mit einem eingeschränkten Benutzerkonto, wobei man da immer noch genug Unfug anstellen kann... (soviel zum Thema Sicherheit) Zitat:
Wenn dein Server nicht entsprechend abgesichert ist kann man theoretisch von außen dein gesamtes Netz lahmlegen... PHP ist eine sehr "mächtige" Scriptsprache mit der man auch jede Menge Unfug anstellen kann... (Unter Windowsservern die nicht entsprechend abgesichert sind kann man zum Beispiel ganz einfach diverse Dateien auf deiner Platte bearbeiten, so zum Beispiel auch Systemrelevante Dateien wie zB deine boot.ini, diverse Systembibliotheken, und und und... - noch mehr zum Thema Sicehrheit )ps: poste auch mal deine php.ini. | ||
| | |
| | #12 (permalink) |
| Themenstarter Registriert seit: 02.01.07 ![]() Likes: 0 | Bei <a href="http://phpfi.com/220446" target="_blank">http://phpfi.com/ [/url]konnte ich die ini nicht hochladen. Ist zu groß. Also hab ich ne .txt draus gemacht und sie hier im Forum hochgeladen. Also als Admin einen Apache/PHP Server starten ist keine gute Idee? Man wird die Rechte doch wohl irgendwie beschränken können?! |
| | |
| | #13 (permalink) |
| Moderator ![]() | Naja, die ganze php.ini ist auch nicht interessant. Entscheidend ist, dass du möglichst spartanisch bleibst. Wichtig sind die Direktiven vom Kaliber register_globals, allow_url_fopen, magic_quotes_gpc und was man sonst noch so an Hinweisen im Abschnitt zur Sicherheit von PHP in der Doku findet. Ansonsten sollte man einfach sicher programmieren: alle Variablen initialisieren und Benutzereingaben grundsätzlich prüfen und ggf. escapen. Damit ist mehr geholfen als mit ein paar PHP-Einstellungen. |
| | |
| | #14 (permalink) |
![]() Registriert seit: 06.01.07 ![]() Likes: 0 | Inwiefern man unter Windows Benutzer zB in Verzeichnisse "ensperren" kann weis ich nicht, allerdings kannst du PHP-Scripte auf bestimmte Verzeichnisse einschränken. Die wichtigsten Funktionen hierfür sind: open_basedir und disable_functions mit open_basedir legst du fest wo PHP-Scripte ausgeführt werden dürfen, idR ist dies das Site_Root, also zB C:\website\user1\ so können Scripte in diesem Verzeichnis User1 nur in eben diesem Verzeichnis arbeiten und auf nichts außerhalb des Verzeichnisses zugreifen (abgesehen von dem Bug). Allerdings benötigt PHP auch seine lib's (Programm Bibliotheken). Wo die bei XAMPP (ich denke mal du benutzt dies) abgelegt sind weis ich nicht, aber Google dafür bestimmt. Also musst du zusätzlich noch dieses Verzeichniss freigeben. also zum Beispiel: open_basedir = C:\webserver\user1\;lib-Verzeichnis\ zu beachten sind die \ am Ende, somit hat der User nur Zugriff auf Ordner Dateien innerhalb dieses Ordners, nicht aber auf den Ordner selbst... ähnlich verhällt es sich mit cgi_exec_dir, nur eben für CGI-Scripte -> Google mit disable_functions kannst du bestimmte PHP-Funktionen Deaktivieren, sodass selbst wenn jemand in deinen PHP-Scripten eine Lücke findet durch die er Scripte auf dem Server ausführen könnte nicht allzu großen Schaden anrichten kann... ich hab auf meinem Webserver zb folgende Einstellung: disable_functions = symlink,debug_backtrace,pfsockopen,proc_open,proc_ nice,proc_terminate,proc_close,proc_get_status,she ll_exec,exec,passthru,system,popen,highlight_file, diskfreespace,disk_free_space,disk_total_space,sho w_source,php_uname,ini_alter,ini_restore,ini_set,g etrusage,get_current_user,set_time_limit,getmyuid, getmypid,dl,leak Das allerdings muss jeder für sich selbst entscheiden welche Funktionen hier deaktiviert werden... session.save_path, upload_tmp_dir und sind idR nur für den Multi-Userbetrieb wichtig. register_globals, magic_quotes_gpc und co sind in PHP5 standartmäßig schon deaktiviert und das sollte möglichst auch so bleiben schau dir am besten mal die Einstellugnen von Funpic an: http://phpinfo.funpic.de Und schau nach was die so eingestellt haben. phpinfo.* ist übrigens eine bereits mehr oder weniger zum Standard gewordene Subdomain um eben diese Informationen zu bekommen, sollte also auch bei diversen anderen Hosts funktionieren -- Dann muss ich nochmals sagen, studier wirklich die Configs und lern PHP, CGI und den Apache mit allem drum und dran erst mal richtig kennen um eines Tages keine bösen Überraschungen zu bekommen... Vor kurzem bekam ich auf meinem Server eine Hackerattacke ab... ~125MB Logfile ist daraus geworden, mehr aber nicht, da mein Server entsprechend abgesichert ist ![]() PS: ich sollte so spät keine Beiträge im HaBo mehr schreiben... ich muss alle meine Posts mindestens 3 mal wegen Schreibfehlern editieren... |
| | |
| | #15 (permalink) |
| Themenstarter Registriert seit: 02.01.07 ![]() Likes: 0 | Also register_globals kenn ich schon. Is auch auf off, habe mir vorgenommen alles mit $_POST, $_GET und $_REQUEST zu machen. Bei disable_functions muss ich mich wohl mal durch die ganzen Funktionen wühlen. (vorher hatte ich nichts deaktiviert O.o) Ich hab bei der Gelegenheit auf disable_classes gesehen. Gibt es dafür auch empfehlenswerte Einstellungen, oder können alle Klassen bleiben? In den Rest muss ich mich auch nochmal einlesen. Danke für die Hilfe |
| | |
![]() |
| | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| X-Setup | boppy | Windows | 10 | 26.08.07 12:08 |
| Setup-Generator | NMK | Downloads | 6 | 08.04.06 13:07 |
| Einfaches Adressbuch in C++ , Fragen über Fragen ... :) | TeeKayo2 | Code Kitchen | 9 | 22.10.05 17:06 |
| DNS Setup mit Mandrake 10.1 | Bad Seed | Linux/UNIX | 5 | 03.12.04 14:51 |
| Setup | Dark_Eagle | Die Problemzone | 2 | 27.03.04 00:23 |