Ordnungsgemäße .htpasswd-Nutzung
Unter der Annahme einer kleinen (Seiten < 5) Ort, was ist die richtige Verwendung von .htaccess
und .htpassword
? Kürzlich sah ich ein tutorial von Nettuts+, wo dieses Beispiel-code wurde gegeben:
.htaccess
AuthName "Login title"
AuthType Basic
AuthUserFile /path/to/.htpasswd
require valid-user
.htpasswd (erstellt mit htpasswd -c <file> <username>
Befehl)
username:encrypted-version-of-password
Ich bin auch neugierig, wie die tatsächliche Höhe der Sicherheit dieser stellt: können es einfach umgangen werden? Wenn der Apache standardmäßig nicht erlauben Benutzern den Zugriff auf eine der beiden Dateien direkt, müssen Sie außerhalb des öffentlichen Verzeichnis? Gibt es irgendwelche speed-Auswirkungen?
InformationsquelleAutor Whymarrh | 2012-09-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
, Welche Sicherheitsstufe bringt das?
.htpasswd nicht viel Sicherheit von selbst. Es stellt einen login-Mechanismus, und der Apache wird nicht reagieren, ohne die richtigen Anmeldeinformationen, aber wenn nicht GESONDERT konfiguriert, nichts über die exchange ist verschlüsselt (oder gar verschleiert). Zum Beispiel hören die
GET
Anfrage mit Wireshark gibt Ihnen einen schönen Blick auf all die Header gesendet werden sollen, durch den AUFTRAGGEBER, einschließlich:"
d3BhbG1lcjp0ZXN0dGVzdA==
" nur der base64-kodierte form von "wpalmer:testtest
". In diesen Tagen, um einen hacker (oder mehr wahrscheinlich ein virus) sitzen an einem öffentlichen WiFi-Verbindung, und melden Sie alle Anfragen, die mit denAuthorization:
für später bereit. Im Allgemeinen senden, die eine Authentifizierung Informationen über eine unverschlüsselte HTTP-Verbindung wird als eine schlechte Idee, auch wenn Sie über einen Draht oder sichere WLAN-end-to-end. Es würde zum Beispiel nicht den Anforderungen von PCI-Compliance wenn Sie die Speicherung von Kundendaten, Zahlungsinformationen, etc. hinter der.htpasswd
sperren.Https auf die Mischung, und Sie vollständig zu eliminieren das spezielle problem, aber...
.htpasswd
- Authentifizierung gemäß der Implementierung von Apache httpd nicht bieten jede form der rate-Begrenzung oder brute-force-Schutz. Sie können so viele gleichzeitige versuche, ein Passwort zu erraten, denn Apache ist bereit zu dienen, simultan-Seiten, und Apache antwortet mit Erfolg/Misserfolg, so bald wie möglich. Sie können so etwas wie Fail2Ban, um die Anzahl der fehlgeschlagenen versuche, die gemacht werden können, bevor der client blockiert ist, aus Gesprächen auf dem server, aber das wird nicht unbedingt nützliche Schutz gegen Botnets, die automatisch die Ziel-server über Tausende von eindeutigen IP-Adressen. Dies kann dazu führen, die Entscheidung der "verlasse ich mich anfällig für Passwort-versuche von botnets, oder verlasse ich mich anfällig für denial-of-service-Attacken, wenn das gesamte Konto gesperrt ist-nach unten, die aufgrund von Fehlern von mehreren clients?"Diese Anstellwinkel begrenzt werden kann durch das hinzufügen von IP-basierten Einschränkungen im
.htaccess
- Datei, so dass verbindungen nur von bestimmten Adressen. Je nachdem, wie Sie arbeiten, das kann lästig sein, aber es auch schränkt die Arten von Bedrohungen, die Sie anfällig für. Würden Sie immer noch in Gefahr sein, von jemandem, die speziell auf Ihre Website oder eine Infektion auf einem Teil der Netzwerk-Infrastruktur. Abhängig von der Art der Inhalte, die Sie schützen, dies kann sein "gut genug". Ein Beispiel für diese Art der Einschränkung ist:Dies bedeutet, kurz gesagt, "lassen Sie nur verbindungen vom lokalen host". Line-by-line, es bedeutet:
Order deny,allow
definiert die Reihenfolge, in der die Regeln abgearbeitet werden, mit dem letzten Spiel Vorrang haben.Deny from all
beginnen Sie, indem unter der Annahme, dass alle clients verweigertAllow from 127.0.0.1
wenn der client hat die IP -127.0.0.1
, dann ist es erlaubtTeilweise IP-basierte Beschränkungen wird auch schützen Sie bis zu dem Punkt, wo HTTPS betrachtet werden kann, optional. Angreifer /Viren können immer noch Ihre Anmeldeinformationen, aber es ist schwieriger für Sie, um diese Anmeldeinformationen auf der Seite selbst. Wieder, dies wäre nicht PCI-konform, und es wäre nicht geeignet für "wichtige" Informationen, aber es gibt einige Situationen, für die diese kann als "gut genug". Werden Sie sich bewusst, dass viele Menschen re-Anmeldeinformationen verwenden, die über mehrere Standorte, so versagt zu schützen, login-Daten gilt allgemein als sehr gefährlich für die Benutzer, auch wenn die Seite selbst ist geschützt.
Schließlich die
.htaccess
- Datei selbst ist ein bisschen einer Verbindlichkeit. Siehe dazu die Antwort zu "müssen Sie außerhalb des öffentlichen Verzeichnis?" für weitere details.Kann es einfach umgangen werden?
Nicht. Es gibt keinen Grund zu erwarten, dass der server, wenn Sie richtig konfiguriert ist, würde jemals scheitern zu erfordern login-Daten Zugriff auf die geschützten Inhalte. Während die HTTP-Basic-Authentifizierung hat seine Fehler, Apache httpd ist sehr robust und ist eines der am meisten gründlich getestet Stücke von software in der Welt. Wenn Sie sagen, Apache, HTTP-Basic-authentication ist erforderlich, um Zugriff auf bestimmte Inhalte, es notwendig.
Wenn der Apache standardmäßig nicht erlauben Benutzern den Zugriff auf eine der beiden Dateien direkt, müssen Sie außerhalb des öffentlichen Verzeichnis?
Gibt es ein paar Punkte zu diesem. Zunächst führt der Apache nicht standardmäßig verhindert den Zugang zu diesen Dateien. Viele Distributionen von Apache httpd erste Konfiguration, die verhindert, dass der Zugriff (mit "Deny from all" - Regeln), je nach distribution,
.htaccess
/.htpasswd
Dateien.ht*
Dateien, oder.*
- Dateien. Es ist sehr Häufig, aber es gibt viele Gründe, warum dies möglicherweise nicht der Fall. Sie können hinzufügen, eine Regel selbst zu blockieren, diese Dateien, wenn Sie nicht bereits gesperrt:Zweitens, es sollte darauf hingewiesen werden, dass die Art und Weise
.htaccess
Dateien arbeiten, Sie werden verarbeitet, wenn das Verzeichnis, in dem Sie sich befinden, ist abgestimmt. Das heißt:.htpasswd
werden kann woanders, aber.htaccess
muss im selben Verzeichnis sein. Das heißt, finden Sie unter der "speed-Auswirkungen" für ein bisschen mehr detail.So, wie Sie sein können, gesperrt, so einfach ist, warum halten
.htpasswd
außerhalb des öffentlichen Verzeichnis? Denn Fehler passieren, und die.htpasswd
- Datei ist eine große Verantwortung. Auch wenn Sie mit HTTPS, die Exposition von Ihrem.htpasswd
- Datei bedeutet, dass Ihre Passwörter leicht zu knacken per brute-force-Angriffe. In diesen Tagen, Verbraucher-grade-GPUs machen kann Millionen von Passwort Vermutungen pro Sekunde. Dies kann sogar "starke" Passwörter fallen in vergleichsweise wenig Zeit. Wieder, dieses argument in der Regel nur für einen gezielten Angriff, aber die Tatsache bleibt, dass wenn ein Angreifer Ihre.htpasswd
- Datei und will den Zugriff auf Ihr system, in diesen Tagen, Sie können so leicht tun. Sehen Speed-Hashing auf Coding Horror für eine relativ aktuelle (April 2012) übersicht über den Stand der Dinge.In diesem Sinne, die Möglichkeit, versehentlich (vorübergehend) auszusetzen Ihren
.htaccess
Datei Wert ist, verschieben Sie es irgendwo, dass sollte man nie selbst angeschaut, wenn httpd ist auf der Suche nach Inhalten, zu dienen. Ja, es sind noch änderungen an der Konfiguration, die aussetzen könnte, wenn es "one level up" anstelle von "in dem öffentlichen Verzeichnis", aber diese änderungen sind sehr viel weniger wahrscheinlich passieren, aus versehen.Gibt es irgendwelche speed-Auswirkungen?
Einige.
First off, die Verwendung von
.htaccess
Dateien verlangsamt die Dinge etwas. Genauer gesagt, dieAllowOverride all
Richtlinie bewirkt, dass eine Menge Potenzial verlangsamen. Dies veranlaßt den Apache zu suchen .htaccess-Dateien in jedem Verzeichnis und jeder Elternteil ein Verzeichnis zugegriffen wird (bis zu und einschließlich derDocumentRoot
). Dies bedeutet, dass die Abfrage das Dateisystem für eine Datei (oder Aktualisierungen für die Datei), für jede Anforderung. Im Vergleich zu den alternativen, potenziell nie schlagen das Dateisystem, das ist schon ein Unterschied.Also, warum
.htaccess
überhaupt? Es gibt viele Gründe, die es "Wert ist":.htaccess
geändert werden kann, ohne den server neu starten. In der Tat, das ist, was macht es so langsam Apache überprüft, ob änderungen oder das Vorhandensein eines.htaccess
- Datei bei jeder Anfrage, so dass änderungen sofort angewendet werden..htaccess
nehmen sich das Verzeichnis nicht auf dem server. Dies macht es viel weniger Haftung als die änderung derhttpd.conf
Datei..htaccess
geändert werden kann, auch wenn Sie nur-schreiben-Zugriff auf ein einziges Verzeichnis. Dies macht es ideal für shared-hosting-Umgebungen. Sie benötigen keinerlei Zugriff aufhttpd.conf
überhaupt, oder den Zugriff auf den server neu starten..htaccess
halten können Regeln für den Zugriff neben den Dateien, die Sie gemeint sind, zu bewirken. Das macht Sie viel leichter zu finden, und nur hält die Dinge mehr organisiert.Nicht verwenden möchten
.htaccess
, auch in Anbetracht all der oben genannten? Eine Regel, die gilt für.htaccess
können direkt Hinzugefügt werdenhttpd.conf
oder eine Datei enthalten.Was
.htpasswd
? Das hängt davon ab, wie viele Benutzer Sie haben. Es ist Datei-basiert, und das absolute minimum in Bezug auf die Umsetzung. Von Die docs, die für httpd 2.2:Kurz
.htpasswd
langsam ist. Wenn Sie nur eine Handvoll von Benutzern, die sich authentifizieren müssen, werden Sie nie bemerken, aber es ist noch ein anderer Aspekt.Zusammenfassung
Sicherung einen admin-Bereich mit
.htpasswd
ist nicht für alle Situationen ideal. In seiner Einfachheit, kann es sich lohnen, die Risiken und Probleme, mit denen Sicherheit und Leistung sind nicht die höchsten Prioritäten. Für viele Situationen, mit ein wenig Feintuning, es kann als "gut genug". Was als "gut genug" ist ein Urteil Anruf für Sie zu machen.InformationsquelleAutor