Verhindern Sie, dass SSH seine Versionsnummer bekannt gibt

13

Der Server, den ich benutze, ist Ubuntu 10.10. Aus Sicherheitsgründen möchte ich das Banner bearbeiten, das der Server an den Client sendet.

Wenn ich über Port 22 zu meinem Host telnete, wird mir die genaue Version von SSH angezeigt, die ich verwende (SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4). Bei MySQL und Cyrus ist die Situation dieselbe.

Irgendwelche Vorschläge? Zumindest für SSH?

Vielen Dank

Lerikun
quelle
5
Ich hoffe, Sie erkennen auch, dass es mehr als nur das Entfernen dieser Banner erfordert, um die Sicherheit Ihres Servers zu gewährleisten.
Ben Pilbrow
10
Diese Informationen sind größtenteils irrelevant. Bots werden Hacks ausprobieren, die mit älteren Versionen funktionieren, unabhängig davon, welche Versionsinformationen Ihr Server bereitstellt. Feindliche Benutzer, die Ihren Server in böswilliger Absicht angreifen, sorgen sich am wenigsten. Unvorsichtige Benutzer sind in der Regel viel gefährlicher.
Chris S
Ben, ich glaube zu wissen, wonach ich frage. Und ich weiß, wie man einen NIX-Server schützt, danke. Chris, im Dunkeln zu stöbern ist auch gut. Unabhängig von Schnauben, iptables fail2bans etc.
Lerikun
Solange Sie wissen, dass dies eine von vielen Aufgaben ist, ist das in Ordnung. Ich wollte nicht, dass du weggehst, weil du denkst, dein System sei super sicher, das ist alles.
Ben Pilbrow
Wie Auticracy betonte, möchte ich zumindest "Debian-3ubuntu4" verstecken.
Lerikun

Antworten:

17

Fast überall sind identifizierende Banner Teil des kompilierten Codes und haben keine Konfigurationsoptionen, um sie zu ändern oder zu unterdrücken. Sie müssen diese Softwareteile neu kompilieren.

Jeff Ferland
quelle
Vielen Dank. Die einzig wirklich nützliche Antwort hier. Was ist mit TCP Wrapper, sie fügen nur ein Banner hinzu, verstecken aber nicht die tatsächlichen Informationen?
Lerikun
6
Es wird nicht nur in kompiliert, sondern auch von Clients verwendet, um kompatible Verbindungsebenen zu bestimmen.
Jeremy Bouse
31

Während es unglaublich schwierig ist, die Versionsnummer Ihres SSH-Daemons zu verbergen, können Sie die Linux-Version (Debian-3ubuntu4) einfach verbergen.

Fügen Sie die folgende Zeile hinzu /etc/ssh/sshd_config

DebianBanner no

Und starten Sie Ihren SSH-Daemon neu: /etc/init.d/ssh restartoderservice ssh restart

Harrison Powers
quelle
7
Danke, das funktioniert einwandfrei! Ich bin damit einverstanden, dass das Entfernen von Versionsinformationen Sicherheit durch Unbekanntheit bedeutet und möglicherweise mehr Probleme verursacht, die dadurch behoben werden. Mit Debian kündigt OpenSSH jedoch nicht nur seine eigene Version an, sondern auch die Version und den spezifischen Geschmack des Betriebssystems - dh "SSH-2.0-OpenSSH_6.7p1 Raspbian-5 + deb8u3". Herzlichen Glückwunsch, ohne jede Art von Authentifizierung wissen Sie jetzt, dass Sie mit einem RaspberryPi mit Raspbian sprechen, und Ihr nächster offensichtlicher Schritt wäre, zu versuchen, eine Verbindung als "pi" mit dem Standardkennwort herzustellen. IMHO verrät dies WEG zu vielen Infos beim ersten Date.
Saustrup,
Genial, eines der besten versteckten Juwelen, die hier gefunden wurden.
Rui F Ribeiro
19

Das Ausblenden dieser Dateien sichert Ihren Server nicht. Es gibt noch viele weitere Möglichkeiten, Fingerabdrücke von dem zu erstellen, was auf Ihrem System ausgeführt wird. Insbesondere für SSH ist die Versionsankündigung Teil des Protokolls und erforderlich.

http://www.snailbook.com/faq/version-string.auto.html

Bahamat
quelle
Je weniger Leute von Ihrem System erfahren ... Sie können anderer Meinung sein. Was ist mit anderen Dienstleistungen? Ich spreche allgemein über Cyrus (IMAP / POP3) und MySQL und andere. Und wenn es zwei Admins gibt - muss ich mich nicht an das Protokoll halten ?!
Lerikun
3
@lerikun: Es geht nicht darum, es mit gruseligen Hackern zu teilen. Es geht darum, dass SSH keine Verbindung herstellen kann, weil es nicht weiß, welches Protokoll verwendet werden soll. SSHD muss anmelden.
Satanicpuppy
9
"Je weniger Leute über Ihr System Bescheid wissen, desto besser". Ja sicher, das ist eine Aussage, die gut klingt, aber nicht viel bewirkt, wie "Wenn ich im Lotto gewinne, werde ich ...". Sicherheit durch Dunkelheit ist bestenfalls mangelhafte Sicherheit.
Rob Moir
1
Robert, das ist eine Aussage, die viel bedeutet. Warum befindet sich der Safe in einem dunklen Raum, den niemand sehen kann? ... Keine Ursache. Ich frage nicht, wie ich meinen Server sichern soll. Ich denke, meine Frage war klar. Ja, Autokratie, ich möchte diese zumindest loswerden.
Lerikun
2
Für das, was es wert ist, ist Robert Moir völlig richtig.
Sirex
8

Ich bin mir ziemlich sicher, dass Sie die Versionsankündigung nicht ändern können.

Die besten Möglichkeiten zum Sichern von sshd sind:

  1. Ändern Sie die Standardportnummer.
  2. Root-Anmeldungen verbieten.
  3. Erzwinge Protokoll 2 (vorausgesetzt, es wird nicht standardmäßig ausgeführt).
  4. Whitelist die Server, auf denen SSH erlaubt ist.

Die ersten drei können durch Ändern von / etc / sshd_config durchgeführt werden

Die vierte hängt davon ab, welche Firewall-Software Sie verwenden.

Satanicpuppy
quelle
1/2/3 schon erledigt. mit Zertifikaten keine Passwörter. Fail2ban (IMAP, POP, SMTP, VPN, WEB) und Denyhosts (SSH) Die Frage betrifft die Versionsankündigungen für andere Dienste.
Lerikun
6

Wie oben gesagt, ist das Ändern einer Versionsnummer

  1. Schwer zu machen
  2. Sicherheit durch Dunkelheit
  3. Nicht flexibel

Ich schlage vor, Port Knocking zu implementieren. Es ist eine ziemlich einfache Technik, um alles zu verbergen, was auf Ihrem Server läuft.

Hier ist eine gute Implementierung: http://www.zeroflux.org/projects/knock

So habe ich es auf meinen Servern (andere Nummern) implementiert, um SSH nur für die Personen zu öffnen, die das Geheimnis kennen:

[openSSH]
    sequence = 300,4000,32
    seq_timeout = 5
    command = /opencloseport.sh %IP% 2305
    tcpflags = syn

Dies ergibt ein Fenster von 5 Sekunden, in dem die 3 SYN-Pakete in der richtigen Reihenfolge empfangen werden müssen. Wählen Sie Ports, die weit voneinander entfernt und nicht sequentiell sind. Auf diese Weise kann ein Portscanner den Hafen nicht versehentlich öffnen. Diese Ports müssen nicht von iptables geöffnet werden.

Das Skript, das ich aufrufe, ist dieses. Es öffnet einen bestimmten Port für 5 Sekunden für die IP, die die SYN-Pakete sendet.

#!/bin/bash
/sbin/iptables -I INPUT -s $1 -p tcp --dport $2  -j ACCEPT
sleep 5
/sbin/iptables -D INPUT -s $1 -p tcp --dport $2  -j ACCEPT

Es kann sehr schmerzhaft sein, die SYN-Pakete zu senden, daher verwende ich das Skript, um eine Verbindung zum SSH meiner Server herzustellen:

#!/bin/bash
knock $1 $2
knock $1 $3
knock $1 $4
ssh $5@$1 -p $6

(Es ist ziemlich offensichtlich, was hier passiert ...)

Nachdem die Verbindung hergestellt wurde, kann der Port geschlossen werden. Tipp: Verwenden Sie die Schlüsselauthentifizierung. Andernfalls müssen Sie sehr schnell sein, um Ihr Passwort einzugeben.

Bart De Vos
quelle