• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Logging Strategie

Anusha

Mitglied
Hi,

ich wollte mal fragen, wie Ihr in euren Webapplikationen moegliche Angriffe mitloggt, und diese gegebenenfalls unterbindet

Was ist eigentlich sinnvoll zu speichern und wie?

Es gibt ja in der php.ini die Moeglichkeit PHP Fehler in ein error_log zu speichern.
Ist es sinnvoll dort alles zu speichern? Oder eher nur Sachen die mindestens in der
Kategorie E_WARNING sind.

Wie geht ihr vor bei offensichtlich gezielt manipulierten Eingaben. Beispielsweise
beim Entdecken einer sql Injection. Sollte man die IP gleich sperren und mail an admin
rausschicken, oder nur eine Fehlermeldung anzeigen?

Eine generelle Frage is auch, ob es sinnvoll ist error_logs in einer Datenbank zu speichern.
Wie geht man vor wenn gerade die Datenbankverbindung es ist, die nicht hergestellt werden kann?
Bei Verwendung des suhosin patches gibts es die Moeglichkeit SQL Fehler mitzuloggen,
hat damit schon wer Erfahrungen gesammelt?

Was mich auch noch interessiert ist die Verwendung des Intrusion Detection Systems
PHPIDS. Ich habe das als zusaetzlichen Schutz eingebunden und es wird jedesmal eine
email gesendet wenn es anschlaegt.
Jetzt stellt sich mir aber auch hier die Frage, wie man damit umgeht, FALLS es etwas enteckt. Manchmal sind auch voellig legale Cookies, wie zum Beispiel von Facebook dafuer verwantwortlich dass ein Angriff erkannt wird.
Wenn jedesmal rigoros geblockt wird kann es sein dass auch unwissende user ausgeschlossen werden...

Was macht ihr bei Zugriff auf Dateien, auf die normal nicht direkt zugegriffen werden soll?
Ich setzt momentan einfach den 404 header. Ist es sinnvoll auch das mitzuloggen und gegebenenfalls ne mail zu senden?

Generell stellt sich die Frage fuer mich, welche Aktionen sind es Wert, den Zugriff sofort zu unterbinden und den Admin zu informieren?
Bei mir war der Fall, dass jemand versucht hat unzaehlige skripte per url einzubinden (wahrscheinlich per skript) und ich hunderte mails von Angriffsversuchen im Postfach hatte...
 
Werbung:
Was haben denn Anwendungsfehler aus der error_log mit Angriffen zu tun? error_log ist sicher nicht verkehrt, beim Entdecken von Angriffen ist diese aber eher zweitrangig, da Fehler in einer vernünftig getesteten Anwendung selten auftreten.

Statt dich vor SQL-Injections zu schützen, solltest du versuche diese gar nicht erst zu ermöglichen (durch richtiges Escapen). Wie will man auch vernünftig SQL-Injections filtern, wenn diese gar nicht zwangsläufig mit einem Keyword beginnen?

Die error_log in die Datenbank zu speichern erscheint mir nicht sinnvoll.

SQL-Fehler solltest du wie PHP-Fehler behandelt und bei Auftreten eine Ausnahme werfen und diese entsprechend behandeln.

Dateien die man nicht direkt aufrufen soll, müsse einfach aus dem DOCUMENT_ROOT heraus.
 
Und was ist zum Beispiel, wenn man aus dem Document_Root nicht raus kann?

Und es geht mir nicht ums escapen/validieren... Sondern lediglich darum zu wissen, was in der Anwendung passiert.

Sag mir eine Software, die 100% sicher ist???
Schon klar, dass alle Eingaben, escaped/validiert werden muessen, und das nach bestem Gewissen. Aber es gibt immer irgendwelche Luecken....

Und FALLS doch mal was passiert ist es doch schick zu wissen, WAS passiert ist im nachhinein.
Oder ich finde es auch interessant zu wissen, wie man evtl. angegriffen wird.
Und ausserdem hab ich keine Lust irgendwen nach belieben rumprobieren zu lassen, wie man vielleicht doch auf nicht geplantem Wege ans Ziel kommt.....

Wenns nach dir geht, dann sind doch saemtliche logging-mechanismen voellig fuer den **** weil man ja alles escapen/validieren soll.

Und zu deiner Frage: "Was haben Anwendungsfehler aus der error_log mit Angriffen zu tun?" Ich kann mir gut vorstellen, dass gerade dass der Sinn von errror_logs ist...
Angriffe zu erkennen, die Fehler verursachen??? Fuer was sollte man sonst error_logs haben? Im Entwicklungsstadium hat man doch eh display_erros auf "on" und error_reporting auf E_ALL

Auch anfragen, die zu Fehlerhaften sql Abfragen fuehren sind denkbar und schon klar muss dann ne Exception geworfen werden oder irgendwas anderes gemacht werden.
Die Frage ist aber, wie man das am Besten protokolliert?
 
Werbung:
Und was ist zum Beispiel, wenn man aus dem Document_Root nicht raus kann?
Dann .htaccess mit „deny from all“, während in einem Ordner der Zugriff erlaubt wird. Dann musst du nur noch den Pfad aus der index.php umbiegen.

Sag mir eine Software, die 100% sicher ist???
Schon klar, dass alle Eingaben, escaped/validiert werden muessen, und das nach bestem Gewissen. Aber es gibt immer irgendwelche Luecken....
Sicher gibt's die. Du willst aber mehr Arbeit in Qualitätssicherung und Automatisierte Tests stecken. Das wäre mit Sicherheit auch die sinnvollere Lösung, denn es erlaubt dir darüber Hinaus Fehler während der Entwicklung zu erkennen, selbst wenn diese keine Lücken sind.

Und FALLS doch mal was passiert ist es doch schick zu wissen, WAS passiert ist im nachhinein.
Das muss dann auf Applikationsebene geschehen. Eine error.log für Ausnahmen die geworfen werden, eine access.log vom Apache schreiben lassen und man hat eigentlich schon ausreichend Daten um einen Angriff „auszuwerten“ bzw. Fehler in der weiteren Entwicklung zu erkennen und abzustellen. Wie diese genau behandelt werde, kommt auf das Projekt an. Man könnte diese per FTP abholen, per E-Mail versenden oder gleich in einen Bugtracker als neuen Bug übertragen, damit dieser gleich bearbeitet werden kann etc.

Ich würde vorschlagen, dass du dir automatisierte Tests für potenzielle Attacken konzipierst und mit diesen deine Anwendungen testest. Da gibt's bestimmt sogar schon Frameworks für.

Siehe auch:
Gehört alles zur Agilen Softwareentwicklung und ist vor allem organisatorischer Natur. Das erlaubt dir die hohe Qualität deiner Software sicherzustellen und auf Änderungen schnell zu reagieren.
 
vielen Dank crash fuer deine Links und Stichworte ;)

Der Schritt von einfachem Schreiben von Webanwendungen hin zu durchdachtem Software Design und Qualitaetssicherung
ist doch steiniger als gedacht, vor allem wenn man alles in Eigenregie lernt und nie mit "Profis" zusammenarbeitet.

Aber es ist noch kein Meister vom Himmel gefallen und wird schon werden ;)

Ich würde vorschlagen, dass du dir automatisierte Tests für potenzielle Attacken konzipierst und mit diesen deine Anwendungen testest. Da gibt's bestimmt sogar schon Frameworks für.

Meinst du damit sowas in der Art?

Tool hilft bei Schwachstellensuche in Webanwendungen | heise Security
 
Ja genau sowas. Aber zuverlässiger sind eben Tests und die Schulung der Mitarbeiter (bzw. man selbst) zu diesem Thema.
 
Werbung:
Zurück
Oben