Ich habe einen kleinen SVN-Server, auf dem Debian läuft. Ich habe nicht so hohe Anforderungen an meinen Server, weil es nur ein kleiner SVN-Server ist ... aber ich möchte, dass er sicher ist.
Ich habe gerade meinen Server auf einen neueren und besseren Optiplex umgestellt und mich ein wenig mit dem alten Server befasst. Ich habe es abgenommen, nachdem ich Probleme hatte. Wenn ich die Protokolle überprüfe, ist es voller Brute-Force-Versuche und irgendwie ist es jemandem gelungen, meinen Computer zu betreten. Diese Person hat ein zusätzliches Volume namens "knarkgosse" mit den zwei Verzeichnissen "root" und "swap1" erstellt. Ich weiß nicht genau warum und was sie tun, aber ich möchte sicher verhindern, dass dies erneut geschieht. Ich finde das allerdings etwas seltsam, weil ich mein Passwort alle paar Monate ändere und die Passwörter immer zufällige Buchstaben und Zahlen sind ... nicht einfach zu brachialisieren.
Ich weiß, dass ich Root daran hindern kann, sich anzumelden, Sudoer zu verwenden und den SSH-Port zu ändern. Aber was kann ich noch tun?
Ich habe also ein paar Fragen:
Wie kann ich verhindern, dass ich mich nach x Fehlversuchen 5 Minuten lang anmelde? Oder langsame Versuche nach jedem falschen Versuch?
Gibt es eine Art zentrale Blacklist, mit der sich ein Server verbinden kann? Eine schwarze Liste, die nach IP-Adressen sucht, die "unsicher" sind und auf die niemals Zugriff gewährt werden sollte?
Was kann ich noch tun, um die Sicherheit meines Servers zu gewährleisten?
Wie ich bereits sagte, verwende ich Debian 5 mit Apache (WWW-Daten-Benutzerproblem?), Svn, mysql, php, phpmyadmin, hudson. Es befindet sich in einem Heimnetzwerk mit Portweiterleitung unter 80, 443, 8080, 8180, 23 und 22.
quelle
Antworten:
Fail2ban und Port Knocking sollten die meisten Ihrer Anforderungen erfüllen.
Es wird auch empfohlen, den SSH-Port zu ändern und nur die schlüsselbasierte Authentifizierung zuzulassen.
Es kann argumentiert werden, dass Sie möglicherweise einen Punkt erreichen, an dem die Rendite durch Hinzufügen zusätzlicher Sicherheitsmaßnahmen sinkt, aber es liegt an Ihnen, zu entscheiden, wann Sie "sicher genug" sind.
Es ist auch eine gute Idee, die Root-Anmeldung zu deaktivieren.
quelle
Es gibt keinen Ersatz für sichere Passwörter UND Schlüsselauthentifizierung. That being said, Fail2Ban ist ein großes Werkzeug für die IP - Adressen der Nutzer zu verbieten , die zu oft zu authentifizieren versuchen. Es ist auch als vorgefertigtes Paket für die meisten Distributionen erhältlich. Seien Sie gewarnt, Sie können sich versehentlich verbannen lassen. Vergewissern Sie sich also, dass Sie auch über eine IP-Adresse verfügen, die für die Wiederherstellung auf der weißen Liste steht, oder über einen einfachen Konsolenzugriff ...
Fail2Ban bietet einige gute Beispiele für die Konfiguration aller von Ihnen gestellten Fragen. Es verfügt jedoch nicht über ein universelles Repository für ungültige Adressen. Ich glaube nicht, dass es so ein Repository irgendwo gibt, weil es einfach ist, eine andere IP zu bekommen (dhcp renew / bot-net attacks / etc ...). Ich würde auch die Anmeldung über ssh unter Verwendung von Benutzernamen vom Typ "Administrator" (root / admin / administrator / sysop / etc ..) deaktivieren, da diese am häufigsten verwendet werden.
quelle
Ich habe Brute-Force-Angriffe gestoppt mit:
quelle
Es gibt eine Reihe von guten Vorschlägen, die hier angeboten werden. Ich schlage respektvoll vor, dass drei Dinge dies relativ sicher machen sollten:
UsePAM-Nr
Hoffe das hilft.
quelle
Ich war schon immer ein großer Fan von CSF / LFD, das IP-Adressen von Personen blockieren kann, die versuchen, Bruteforce, Portscan und einige andere Optionen zu nutzen. Es ist im Grunde ein riesiger Perl-Wrapper für IP-Tabellen, aber die Konfigurationsdatei ist nicht schwer zu lesen und die Dokumentation ist nicht schlecht.
quelle
Sie könnten auch in sshguard schauen. Ich habe es nicht benutzt, aber ich habe gute Dinge gehört.
Quellen:
http://isc.sans.edu/diary.html?storyid=9370
http://www.sshguard.net/
http://www.sshguard.net/docs/faqs/
"Sshguard überwacht Server von ihrer Protokollierungsaktivität. Wenn Protokolle übermitteln, dass jemand eine schlechte Sache tut, reagiert sshguard, indem es ihn für eine Weile blockiert. Sshguard hat eine empfindliche Persönlichkeit: Wenn ein ungezogener Typ darauf besteht, Ihren Host zu stören, reagiert er fester und fester. "
quelle
Ich habe einen SSH-Server am Standardport mit dem Internet verbunden und hatte noch nie Probleme.
ich hoffe es hilft!
quelle
Es gibt eine bessere Möglichkeit, dies zu tun: Wenn Sie fail2ban verwenden, müssen Sie eine Anwendung hinzufügen, die auf der Anwendungsebene ausgeführt wird.
Wenn Sie iptables verwenden, ist es effizienter, da es auf Netzwerkebene ausgeführt wird und Sie keine zusätzliche Anwendung installieren müssen.
Verwenden Sie das Modul iptables recent http://www.snowman.net/projects/ipt_recent/
quelle
Eine Option (die zusätzlich zu anderen Sicherheitsmaßnahmen verwendet werden kann) ist, dass sshd einen anderen Port als 22 abhört. Ich habe es nicht selbst ausprobiert, aber gehört, dass Bots weniger reine Brute-Force-Angriffe ausführen.
Ich muss betonen, dass dies keine echte Sicherheit ist, sondern nur die Anzahl der automatisierten Brute-Force-Angriffe verringert. Zu viel Arbeit, um jeden Port zu überprüfen, denke ich.
quelle
telnet
. Oft ist es besser, Ports zu verwenden, die nicht reserviert sind, z. B.> 60k. Unter iana.org/assignments/port-numbers finden Sie eine Liste der reservierten Portnummern.I don't use te[l]net on this machine
- mach weiter so. Obwohl Sie aus verschiedenen Gründen einen Telnet- Client benötigen , gibt es keinen Grund, einen Telnet-Server zu betreiben, wenn Sie über ssh verfügen. Klartext-Passwörter über die Leitung sind falsch .Was hier nicht erwähnt wird und eigentlich sollte, ist die Einschränkung des Zugriffs über eine Firewall. Dies passt nicht zu jeder Situation. Wenn Sie jedoch eine Verbindung mit dem Host von einem konsistenten Standort mit einer statischen IP-Adresse herstellen, können Sie SSH mit Ausnahme dieser IP-Adresse vollständig blockieren. Auf diese Weise wird sichergestellt, dass Eindringlinge nicht eindringen können. Wie ich bereits erwähnte, passt dies nicht immer in jede Situation, insbesondere wenn Ihre IP-Adresse dynamisch ist und sich häufig ändert.
quelle
DenyHosts, http://denyhosts.sourceforge.net/ , ist ein gutes Projekt, mit dem ich Glück hatte. Wenn Sie denyhosts für die Synchronisierung einrichten, werden neue IP-Adressen heruntergeladen, um sie einer Sperrliste hinzuzufügen, die andere Systeme mit denyhosts zwingen musste. Es läuft auch IPs ab, die seit einiger Zeit nicht mehr gewaltsam versucht haben.
Die Authentifizierung mit öffentlichen Schlüsseln und das Deaktivieren der Kennwortprotokollierung ist wahrscheinlich das Beste, was Sie tun können. Besiegt alle Brute-Force-Angriffe.
quelle
Was war für mich effektiv:
Wie bereits gesagt, kein Root-Login, PasswordAuthentication in sshd_config auf no (nur Login mit Schlüsseln) gesetzt
Nur ein oder zwei Benutzer dürfen sich über ssh anmelden und sie haben quasi obskure Namen, die nicht in den üblichen Brute-Force-Tool-Benutzernamenslisten enthalten sind (dh nicht "admin" oder "apache" oder "web" oder " Johnny ")
Restriktive Firewall-Regeln (im Grunde ist alles außer meinem Service-Port und SSH blockiert). Ich beschränke sogar Ping, um die gröberen Scans abzuwehren (sehr zum Ärger meines Partners).
Auf meinem Webhost beschränke ich den Zugriff auf einige bestimmte IP-Adressen - aber dies scheint für Sie keine Option zu sein. Ich kann das auf keinen Fall bei allen unseren Gastgebern machen. Vielleicht möchten Sie sich auch mit "Port-Knocking" befassen.
Und mein Favorit: OSSECs aktives Reaktionsmodul, das eine Reihe von Brute-Force-Bedingungen blockiert und auch bei anderen Fehlern alarmiert. Es erkennt x ungültige Anmeldungen in y Zeit und blockiert dann (über einen iptables-Firewall-Drop-Befehl) für einen bestimmten Zeitraum. Ich sperre jetzt aus Spaß seit ungefähr 12 Stunden. :)
Eine Sache, die ich hier mache, um sicherzustellen, dass ich nicht zu viel von dem Falschen blockiere, ist, dass ich in /etc/ossec.conf die aktive Antwort auf einen hohen Pegel setze (der in der Standardkonfiguration nicht vorhanden ist) und dann Gehen Sie die Datei sshd_rules.xml durch und legen Sie die Regeln, die ich blockieren möchte, auf diese Ebene fest und ändern Sie die Schwellenwerte für Blockierung und Warnung nach Bedarf.
Wenn Sie Apache ausführen, können Sie auch Dinge blockieren, die gegen Apache-Regeln verstoßen. Ich blockiere diese nicht nur wegen des NAT-Problems, ich möchte darüber nachdenken, eine ganze Universität oder so etwas zu blockieren. :) Außerdem können Sie benutzerdefinierte Regeln schreiben, um unter bestimmten Bedingungen in Protokolldateien zu blockieren, was sehr hilfreich sein kann.
quelle