Wie wird ein Linux-, Apache-, MySQL-, PHP-Server (oder sogar Perl) für die Produktion gesichert?
Welche anderen (möglicherweise nicht so offensichtlichen) Schritte sollten außer dem Festlegen des MySQL-Passworts und des Root-Passworts für Linux unternommen werden?
Welche Schritte kann ich auch unternehmen, wenn ich extra paranoid sein würde, was normalerweise nicht notwendig ist?
Dies ist für eine grundlegende Verwendung an einem einzelnen Standort vorgesehen, muss jedoch sicher sein.
Antworten:
Diese Empfehlungen sind mir ein Rätsel und sollen nicht umfassend sein.
Schauen Sie sich Bastille an, eine Reihe von Skripten, die Best Practices unter Linux implementieren.
Senden Sie keine Authentifizierungsdaten über Klartextprotokolle. Deaktivieren Sie beispielsweise FTP. Wenn Sie Authentifizierungsdaten über Apache senden, verwenden Sie SSL.
Deaktivieren und entfernen Sie unnötige Software einschließlich der GUI-Oberfläche.
Überprüfen Sie alle Dateien mit gesetztem SUID-Bit und entfernen Sie sie. (Dies wird die Fähigkeiten von Nicht-Wurzeln stark einschränken. Verstehen Sie die Auswirkungen auf jede einzelne Änderung.)
Überprüfen Sie öffentliche beschreibbare Verzeichnisse und entfernen Sie das beschreibbare Bit. (Lass / tmp in Ruhe.)
Vermeiden Sie es, einen Daemon als Root auszuführen.
Informieren Sie sich ausführlich über alle Mehrbenutzersoftware, die Sockets abhört, auf bewährte Sicherheitsmethoden.
Das Vermeiden des Hinzufügens von Benutzern zum System ist einer der besten Ansätze. Mehrbenutzersysteme erfordern mehr Liebe zum Detail.
Kennwortstandards erzwingen. Zum Beispiel: mindestens 10 Zeichen, nicht alphanumerische Zeichen, mit Buchstaben und Zahlen. Dies soll das brutale Forcen im Falle einer Kompromittierung der Kennwortdatei erschweren. Erzwingen Sie dies über das System.
Sperren Sie Benutzer nach 5 fehlgeschlagenen Authentifizierungsversuchen mit einer Sperrung von mindestens 10 Minuten. Pflegen Sie einen Kennwortverlauf, damit Benutzer die letzten 5 Kennwörter nicht verwenden können.
Wenn Sie eine größere Umgebung haben, ist die Verwendung der Netzwerksegregation mit mehreren Subnetzen zur Risikodämmung unbedingt erforderlich. In einer kleineren Umgebung wird empfohlen, eine Firewall auf dem lokalen System auszuführen, um die Gefährdung zu begrenzen. Zum Beispiel nur SSH für Ihre IP zulassen. tcpwrapper können auch für eine zusätzliche Schicht verwendet werden. (/etc/hosts.allow, /etc/hosts.deny)
Und natürlich die gesamte Software auf dem neuesten Stand halten. Besonders öffentlich zugängliche Dämonen.
Mit SSH:
without-password
(nur Schlüsselpaar)Mit Apache:
Mit MySQL:
Ich würde empfehlen, die Optimierung von php.ini speziell auf Sicherheit zu untersuchen. Standardmäßig ist die Software riskanter.
Bastille
quelle
Hier ist ein guter Artikel, den Sie als Basis für Ihr Setup verwenden und entsprechend Ihrer Verteilung ändern können: http://it.toolbox.com/blogs/rayheffer/how-to-build-a-secure-lamp-web- Server-mit-Centos-5-36786
quelle
Die Defense Information Security Agency verfügt über eine Reihe von Sicherheitschecklisten , die ein guter Ausgangspunkt sind. Noch besser ist es, die Gründe für jeden Eintrag zu verstehen, aber das ist keine schnelle Antwort. Ich würde empfehlen, dass Sie sich die Enclave-, Network-, Unix- und Webserver- STIGs ansehen .
quelle