webentwicklung-frage-antwort-db.com.de

Verbessert es die Sicherheit, obskure Portnummern zu verwenden?

Ich habe kürzlich eine Stelle bei einem kleinen Unternehmen angetreten, bei dem der CTO SSH-Dienste lieber an dunklen, hoch nummerierten Ports auf unseren Servern als an dem bekannten Port 22 hostet. Seine Begründung lautet: "Es verhindert 99% aller Script-Kiddy-Angriffe." Ich bin gespannt, ob dies als schlechte Praxis angesehen wird.

Intuitiv erscheint dies sinnvoll. Aber wir sind beide größtenteils Autodidakten, und ich fühle mich unwohl mit der Idee, unsere eigenen Sicherheitsverfahren zu improvisieren, anstatt gut etablierten Konventionen zu folgen. Ich weiß, dass in Allgemeine kryptografische Schemata und Protokolle werden von Expertenteams sorgfältig entworfen, und jedes Detail soll vor Angriffen schützen, egal wie unbedeutend sie auch erscheinen mögen. Ich mache mir Sorgen über die unbeabsichtigten Folgen einer Abweichung von diesen Empfehlungen.

Aber mein Kollege scheint Beweise auf seiner Seite zu haben. Er konnte zeigen, dass wir jeden Tag Dutzende von Angriffen bekommen, die Port 22 versuchen und einfach weitermachen. Ich weiß, dass im Allgemeinen sollten wir Sicherheit durch Dunkelheit vermeiden , aber die Entfernung von diesem gemeinsamen Ziel scheint die meisten Angriffe wirklich zu vereiteln .

Ist das eine gute Praxis oder nicht? Sollten wir bekannte Ports verwenden?

[~ # ~] Nachtrag [~ # ~]

Wir verlassen uns nicht nur auf den dunklen Port. Wir haben viele andere Sicherheitsmaßnahmen getroffen, einschließlich obligatorischer - Hardware-Schlüssel . Ich werde meine Frage klarer formulieren.

Gibt es einen Grund, warum Port 22 speziell für SSH ausgewählt wurde? Ist die Verwendung anderer Ports gefährlich?

91

Verbessert es die Sicherheit, obskure Portnummern zu verwenden?

Wenn Sie bereits Kennwörter mit hoher Entropie oder Authentifizierung mit öffentlichem Schlüssel verwenden, lautet die Antwort "nicht wirklich". Meistens werden Sie nur das Rauschen in Protokollen los.

Ich mache mir Sorgen über die unbeabsichtigten Folgen einer Abweichung von diesen Empfehlungen.

Es hängt davon ab, welcher Port ausgewählt wurde. Unter Linux benötigen standardmäßig alle Ports unter 1024 Root-Zugriff, um sie abzuhören. Wenn Sie einen Port über 1024 verwenden, kann jedes Benutzerkonto ihn abhören, wenn noch kein Prozess abgehört wird.

Warum ist das wichtig? Angenommen, Sie haben ssh so eingestellt, dass es an Port 20,000 Bindet. Wenn jemand den SSH-Prozess auf einem Server stoppen könnte (sagen wir, er hat irgendwie einen Weg gefunden, den Prozess zum Absturz zu bringen) und lokalen Zugriff auf diesen Server hätte, könnte er seinen eigenen SSH-Server auf Port 20,000 Vor dem ausführen Dienst neu gestartet. Jeder, der sich anmeldet, meldet sich dann beim SSH-Server der Bösen an.

Dies ist keine so große Sache wie früher, da heutzutage nur vertrauenswürdige IT-Mitarbeiter Anmeldezugriff auf Server erhalten. Dennoch besteht die Möglichkeit einer Eskalation von Berechtigungen und anderer Unangenehmkeit, wenn ein Angreifer auf Ihrem Server Fuß fasst.

Abgesehen davon, dass sie unter 1024 liegt, hat die Nummer 22 nichts Besonderes. Sie wurde größtenteils gewählt, weil SSH ein Ersatz für Telnet an Port 23 War und 21 Bereits von FTP übernommen wurde. Solange Sie einen Port unter 1024 Auswählen, spielt der Port keine Rolle.

Ist das eine gute Praxis oder nicht? Sollten wir bekannte Ports verwenden?

Ich würde nicht sagen, dass ich es empfehlen kann. Ich würde auch nicht davon abraten. Wie gesagt, es vermeidet viel Rauschen in Protokolldateien, aber die Vorteile sind weitgehend darauf beschränkt.

Alle, die sich für die Hintergrundgeschichte zu SSH interessieren, finden sie unter: https://www.ssh.com/ssh/port

142
Steve Sether

Ja tut es. Die eigentliche Frage ist: Um wie viel?

Warum tut es das? Sie haben bereits grundlegende Sicherheit, sodass Sie sich bei den alltäglichen Bot-Angriffen keine Sorgen machen. Aber es könnte morgen einen 0-Tage geben, und die Angreifer wissen, dass es nicht lange dauern wird, bis ein Patch veröffentlicht ist. Sie bemühen sich also, ihn zu verwenden, und kümmern sich nicht um etwas Kompliziertes - sie treffen einfach so viele Maschinen wie möglich der Standardport. Jede Art von theoretischem SSH-Wurm würde diese Strategie ebenfalls verwenden. Sie wären davor geschützt.

Wie viel zusätzliche Sicherheit bringt Ihnen dies? Es schützt vor diesem und möglicherweise 2-3 anderen spezifischen Szenarien. Jeder gezielte Angriff eines jeden, der kein totaler Idiot ist, wird bestenfalls um einige Minuten verlängert. Es hat nichts mit den Szenarien zu tun, gegen die Sie bereits ausreichend geschützt sind.

Wenn Sie diese Zahlen in Ihre bevorzugte Risikoanalysemethode einfügen, sollten Sie sich etwas relativ Kleines einfallen lassen. Auf der anderen Seite haben Sie den zusätzlichen Aufwand, eine nicht standardmäßige Portnummer festzulegen, zu dokumentieren, sie möglicherweise während einer Fehlerbehebung zu verpassen und Zeit zu verschwenden usw.

Ich vermute, dass Sie mit einer Analyse fast die Gewinnschwelle erreichen würden. Oder mit anderen Worten: Ja, es verbessert zwar die Sicherheit, aber die Mühe lohnt sich nicht, da die Verbesserung sehr gering ist.

57
Tom

Nein, es wird die Sicherheit nicht verbessern . Dies kann die Unordnung im Protokoll verringern, da bei automatisierten Angriffen nur Standardports für z. ssh. Der Port wird jedoch weiterhin als SSH in einem Port-Scan angezeigt und shodan.io .

Diese automatisierten Angriffe zielen normalerweise auf niedrig hängende Früchte mit Standardbenutzernamen wie root, smith usw. und schwachen Passwörtern ab. Wenn sie erfolgreich sind, haben Sie in erster Linie ein Problem.

Wenn Sie ssh so konfigurieren, dass nur die Schlüsselauthentifizierung zugelassen, Root-Anmeldungen nicht zugelassen und vernünftige Kennwörter verwendet werden, fail2ban oder einen ähnlichen Mechanismus zum Blockieren von Straftätern verwenden, sind diese keine echte Bedrohung.

Ich verwende fail2ban, das so konfiguriert ist, dass es nach drei fehlgeschlagenen Versuchen vorübergehend für fünf Minuten und nach 3 * 5 fehlgeschlagenen Versuchen eine Woche lang blockiert. Dies reduziert die Unordnung im Holz und blockiert jeden echten Fortschritt bei einem Brute-Force-Angriff.

Für einen gezielten Angreifer spielt es keine Rolle, welche Port-Inhalte abgehört werden. Es ist nur für automatisierte Angriffe von Bedeutung, die meiner Meinung nach ein vernachlässigbares Risiko darstellen.

31
vidarlo

Durch Ändern des Standardports können Sie sich vor Port-Scan- und Skript-Kiddies schützen, aber Sie sind möglicherweise nicht in der Lage, gezielten Angriffen standzuhalten, bei denen der Angreifer die für die Ports irrelevanten laufenden Dienste identifizieren kann.

Wenn Sie nur von Script-Kiddies wegkommen möchten, kann dies hilfreich sein, aber Sie sind möglicherweise nicht in der Lage, sich vor den restlichen Vorabangriffen zu schützen.

Ich empfehle, den Standardport zu verwenden (kann Ihren Verwaltungsaufwand verringern) und mehrseitige Sicherheitsmaßnahmen einzusetzen, um Angriffe abzuwehren.

Wenn beispielsweise der Standardport verwendet wird, ist die Bereitstellung einer zertifikatbasierten Authentifizierung mit SSH nur für bestimmte vertrauenswürdige Quellen zulässig.

6
Sayan

Ich würde ja sagen, verwenden Sie nicht normale Portnummern, da dies eine Menge automatischer Bots herausfiltert. Aber verlassen Sie sich nicht darauf, da viele Bots, die mir aufgefallen sind, ein Netzwerk/einen Host nach offenen Ports durchsuchen und diese ausprobieren.

Am besten implementieren Sie eine gute Sicherheit auf Ihrem SSH-Port. Deaktivieren Sie die Root-Anmeldung und führen Sie IP-Adressen auf die Whitelist, wenn Sie können. Verwenden Sie keine Kennwörter für Anmeldungen (verwenden Sie Schlüssel). Aktivieren Sie auch eine Benachrichtigung für Anmeldungen. Und richten Sie eine Firewall ein, das ist wichtig.

5
SSLTrust

Das Verschleiern von Ports mit einer solchen hohen Anzahl stoppt nur einfache Bots, die nach bekannten Ports suchen. Script-Kiddies und entschlossene Hacker können den Rest des Portbereichs einfach per Port scannen, um einen Dienst zu finden, sodass Sie nur ein wenig Protokollrauschen stoppen.

Es ist nicht wirklich wichtig, dass der Standardport für diesen Dienst nicht überwacht wird. Die Entwickler dieses Dienstes geben Ihnen die Möglichkeit, ihn auf einem anderen Port auszuführen, und jedes Programm, das mit ihm interagiert, kann angeben, mit welchem ​​Port Sie sprechen möchten.

Ich stimme anderen Beiträgen hier zu, dass vertrauliche Ports wie SSH im privilegierten Portraum unter 1024 aufbewahrt werden sollten.

Ein besserer Weg, um SSH zu verschleiern, das tatsächlich funktioniert, ist ein Port-Klopfen. Dies beinhaltet das Schließen des Ports an iptables, bis eine Folge von Ports "geklopft" wurde, die dann den gewünschten Port öffnen.

ZB können Sie ein Paket an 8000 4545 28882 7878 senden. Sobald Sie die gewünschte Sequenz eingegeben haben, entsperrt iptables Ihren gewünschten Port. Dies stoppt wirklich die Mehrheit der Script-Kiddies und Hacker, da kein Port angekündigt wird. Dies hört jedoch nicht bei Wiederholungsangriffen auf, aber an dem Punkt, an dem Sie größere Probleme haben, müssen Sie sich Sorgen machen.

https://en.wikipedia.org/wiki/Port_knocking .

Eigentlich sollten Sie TCPWrapper verwenden und nur bekannte IP- und Netzwerkbereiche auf Ports wie SSH zugreifen lassen. Müssen Sie IPs aus China auf SSH zugreifen lassen? Oder müssen Entwickler nur über das Office-LAN zugreifen? Wenn sie remote arbeiten, machen Sie sie VPN in das LAN

4
user6858980

Wie von anderen erwähnt, ist die Migration auf einen nicht standardmäßigen Port keine Sicherheitslösung, da Sie nur Angriffe auf naiver Ebene herausfiltern.

Gleichzeitig kann die Migration in Kombination mit anderen Vorsichtsmaßnahmen viel wertvoller sein. Zum Beispiel platzieren Sie einen Honeypot am Standardport (eine Umgebung, die physisch vom Rest Ihres Systems isoliert ist, aber für den Angreifer wie ein legitimes Element aussieht). Wenn Sie dann sehen, dass jemand im Honigtopf kaputt gegangen ist, handelt es sich höchstwahrscheinlich um einen Hacker, sodass Sie ihn automatisch verbieten können.

Und natürlich sollten Sie keine veralteten Softwareversionen mit bekannten Sicherheitslücken verwenden, unabhängig von der Portnummer, an die sie gebunden sind.

4
Yury Schkatula

Nein, das ist nicht der Fall, oder wenn ich genauer sein möchte , ist es der falsche Schutz gegen die Bedrohung .

Machen Sie einen Schritt zurück: Vor welcher Bedrohung wollen wir schützen? Die Bedrohung, vor der wir uns schützen wollen, ist any Person im öffentlichen Internet, die den normalen Authentifizierungsmechanismus umgehen kann. Das ist es, was diese "Script Kiddies" versuchen: mit SSH auf den Server zugreifen, obwohl sie nicht autorisiert sind. Insbesondere möchte Ihr Vorgesetzter verhindern, dass diese Angreifer überhaupt eine SSH-Verbindung herstellen können.

Was ist die Standardtechnologie, um das Herstellen von Netzwerkverbindungen zu verhindern? Eine Firewall. Die Standardantwort auf dieses Problem besteht darin, Port 22 nur für externen Datenverkehr zu blockieren. Das größere Problem hierbei ist, dass SSH für das öffentliche Internet verfügbar ist überhaupt, und die Firewall löst dies vollständig, während der dunkle Port es nur geringfügig verbirgt und die Verbindungen nicht wirklich verhindert. Wenn ein externer Zugriff erforderlich ist, ist die Standardantwort auf das Zulassen dieses autorisierten Zugriffs ein VPN in das Netzwerk. Dies würde beide Skript-Kiddies blockieren und Wissensangreifer, die herausfinden könnten, wie sie den Port finden, den Sie tatsächlich verwenden.

Wenn Sie gegen 1% der Angreifer verlieren, Sie verlieren immer noch. Sie benötigen Schutzmaßnahmen, die gegen 100% der Angreifer wirken. Wenn Sie stattdessen (bisher) erfolgreich 100% der Angreifer blockieren, müssen Sie über einen robusteren Schutz verfügen. Diese anderen Schutzmaßnahmen machen den obskuren Port irrelevant , und wenn dies (hoffentlich) der Fall ist, verwirrt die Verwendung des anderen Ports nur Personen, die weniger vertraut sind Mit den tatsächlichen Sicherheitspraktiken wie Ihnen und wahrscheinlich der Zeitverschwendung von Personen, die versuchen, einen legitimen Zugriff zu erhalten, wenn sie versuchen, eine Verbindung herzustellen (neues System nicht konfiguriert und muss jemanden nach dem richtigen Port fragen, hat der Administrator vergessen, die Person über den nicht standardmäßigen Port zu informieren und die Person muss sie erneut belästigen, um das Problem zu diagnostizieren usw.).

Deshalb spielen wir Harfe über "Sicherheit durch Dunkelheit" und Kerckhoffs Prinzip . Wir sollten vermeiden, uns durch Praktiken abzulenken, die uns nicht wirklich schützen. Wir sollten unsere Zeit und Mühe für tatsächlich funktionierende Schutzmaßnahmen sparen und das falsche Gefühl der "Sicherheit" vermeiden, das uns diese Verschleierungsmethoden geben.

3
jpmc26

Ich möchte hinzufügen, dass Sicherheit letztendlich ein Spiel um Ressourcen auf beiden Seiten ist. Zeit ist eine solche Ressource.

Diese Maßnahme verschwendet die Zeit eines Angreifers, also ist es nicht so schlimm. Sie können sich auch über die Ressourcen von Angreifern informieren, wenn diese noch eine Verbindung zu Ihrem benutzerdefinierten Port herstellen. Vielleicht gibt es ein höheres Interesse, Sie besonders anzusprechen.

Wenn dies jedoch zu einem erheblichen Mehraufwand für Ihre Verwaltungsaufgaben führt, möchten Sie Ihre Zeit möglicherweise an einem anderen Ort investieren. Wenn nicht, dann tu es, aber verlasse dich nicht darauf.

1
Noir