Cerox |
|
 |
 |
Anmeldedatum: 31.12.2005 |
Beiträge: 782 |
Wohnort: Engelskirchen |
|
|
 |
 |
 |
|
Dieser Thread soll Usern helfen, ihren LAMP-Server abzusichern. Er soll keinesfalls dazu dienen, in andere Systeme einzubrechen!
Hallo zusammen,
hier soll ein Sammelthread entstehen, in den jeder Ratschläge zum Absichern eines LAMP-Server schreiben kann.
Ich fange einfach mal an mit dem was ich bisher gemacht habe; vom Apache und Linux habe ich bisher nur Grundkenntnisse, wodurch die Liste wahrscheinlich auch nicht allzu lang wird. chrootet habe ich den Apache bisher auch noch nicht.
-----------------------------------------------------------------------------------------------------------------------------------------
- Immer möglichst aktuelle Versionen verwenden (am besten selbst Apache, PHP und MySQL kompilieren)
- Apache und MySQL Dämonen nicht als root laufen lassen und den Usern so wenig Rechte wie möglich einräumen
- DirectoryListing grundsätzlich deaktivieren und nur, falls nötig, für bestimmte Verzeichnisse per htaccess oder Directory-Container einschalten:
Code: | Options None
AllowOverride None |
- Admin-Bereiche von PHP-Scripts etc. durch htaccess zusätzlich absichern sofern möglich
- safe_mode aktivieren (php.ini)
- open_basedir (php.ini) setzen, wodurch PHP nur Scripte innerhalb des angegebenen Pfades und in darunter liegenden Verzeichnissen ausführen kann
- session.save_path (php.ini) ändern, wodurch der standardmäßige Ablageort für Sessions geändert werden kann
- upload_tmp_dir -> Damit ändert man das Verzeichnis, in das PHP standardmäßig temporäre Dateien hochlädt.
- disable_functions -> hiermit können in der php.ini bestimmte Funktionen von PHP deaktiviert werden z.B. system, shell_exec oder exec, wodurch Shell-Commands abgesetzt werden könnten. Um Informationen zu verbergen, kann hier auch phpinfo deaktiviert werden.
display_errors = Off setzen, damit Fehler nicht mehr direkt für jeden Benutzer angezeigt werden, wodurch der Pfad zu den htdocs bekannt wäre. Die errors würde ich in einer separaten Datei loggen mit:
Code: | log_errors = On
error_log = /pfad/log_datei |
mod_security
Mit mod_security lässt sich z.B. XSS oder SQL Injection verhindern. Der Angreifer bekommt dann eine 403er Forbidden Meldung oder eigene Meldungen angezeigt ^^
Umfangreiche Regelwerke gibt es auch im Netz, jedoch ist der Seitenaufbau etc. dann oft langsam, weil es einfach zu viele Regeln sind. Es reichen aber auch schon wenige Regeln, um viele Angriffe zu unterbinden.
Eine Regel um <script> Befehle, welche für XSS häufig nötig sind, zu verhindern:
Code: | SecFilterSelective ARGS "<[[:space:]]*script"
SecFilterSelective ARGS "<[[:space:]]*meta" |
Meta habe ich mal hinzugefügt, da man so sonst eine Redirection einrichten könnte.
Oder folgendes um SQL Injection einzuschränken:
Code: | SecFilterSelective ARGS "UNION"
SecFilterSelective ARGS "SELECT" |
Auch INSERT, UPDATE, DELETE etc. könnte man jetzt verbieten, jedoch muss man hier aufpassen und alles testen, da es schnell zu False Positives kommt.
Auch Dateien können so geschützt werden, die aber ohnehin schon durch den safe_mode oder das basedir geschützt wären; schaden kann es dennoch nicht:
Code: | SecFilterSelective ARGS "/etc/passwd"
SecFilterSelective ARGS "/bin/*" |
Viele Vulnerability Scanner oder Bots erkennen einen Webserver anhand der Signatur und scannen dann nach bekannten Sicherheitslücken. Die Signatur kann mit mod_security gefälscht werden; z.B. geben wir einfach mal an, dass wir den IIS verwenden:
Code: | SecServerSignature "Microsoft-IIS/5.2" |
|
|