Login
Newsletter
Werbung

Thema: Pro-Linux: Anleitung zum Absichern des SSH-Ports

29 Kommentar(e) || Alle anzeigen ||  RSS
Kommentare von Lesern spiegeln nicht unbedingt die Meinung der Redaktion wider.
0
Von MichaelK am So, 4. Oktober 2009 um 23:36 #
Hallo,

weiterhin ist es mit NetFilter (iptables) möglich zu häufige Verbindungsversuche innerhalb einer Zeitspanne zu Port 22 (oder auf welchen der Dienst läuft) mit Hilfe des Recent-Moduls zurückzuweisen:


  1. modprobe ipt_recent
  2. modprobe nf_conntrack
  3. iptables -A INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
  4. iptables -A INPUT -p tcp --dport 22 -i eth0 -m state --state ESTABLISHED -m recent --update --seconds 60 --hitcount 5 -j REJECT --reject-with tcp-reset

Gruß
MichaelK

[
| Versenden | Drucken ]
  • 0
    Von Sven am Mo, 5. Oktober 2009 um 00:03 #
    > iptables -A INPUT -p tcp --dport 22 -i eth0 -m state --state ESTABLISHED -m recent --update --seconds 60 --hitcount 5 -j REJECT --reject-with tcp-reset

    Danke für den Tipp, das --update hate bei mir gefehlt.

    [
    | Versenden | Drucken ]
0
Von Andreas Schneider am Mo, 5. Oktober 2009 um 00:11 #
Ich denke es ist kein Problem, wenn sich auch der root per SSH einloggen darf. Mit der Option

PermitRootLogin without-password

geht es allerdings nur über public key. Das sollte sicher genug sein. Ausser man hat keine key mit passphrase und lässt ihn sich stehlen.

[
| Versenden | Drucken ]
  • 0
    Von N00by am Mo, 5. Oktober 2009 um 09:06 #

    Wie sieht das denn aus, wenn man immer wieder neue Installationen von Distros auf dem heimischen Rechner ausprobiert, womit
    die Schlüssel sich ja ändern, und dann mit diesen Schlüsseln sich auf dem entfernten Server - bei einem Root-Server Hoster -,
    wo ja immer das gleiche läuft, somit sich dort die Schlüssel sich nie ändern, versucht sich einzuloggen?

    Das habe ich nie verstanden. Es wäre genial, wenn mir mal jemand das erklären würde, bitte.

    Ich sehe schon irgendwie, wieso man Permitroot auf no setzen sollte, aber wie bekomme ich es hin, dass meine Schlüssel sich von
    Distro zu Distro sich nie ändern?

    [
    | Versenden | Drucken ]
    • 0
      Von gttt am Mo, 5. Oktober 2009 um 09:19 #
      Man kopiert die Schlüssel vor dem Neuinstallieren weg (oder hat sie eh in einem Backup drin) und kopiert sie nach Installation wieder an die richtige Stelle. Damit behält der Rechner seine Identität.

      ls -l /etc/ssh/*key*

      [
      | Versenden | Drucken ]
0
Von nano am Mo, 5. Oktober 2009 um 00:32 #
Wenn man die möglichkeit hat, sich nur von einer festen IP aus auf seinen Server einloggen zu können, dann kann man in der /etc/hosts.deny erstmal alle anderen hosts sperren, und in der hosts.allow genau die IP erlauben, von wo man kommt. Sollte schon mal deutlich sicherer werden.

Da auch jemand das direkte root-login hier angesprochen hat: Es ist nun wirklich nicht schwer, sich erst als user einzuloggen, und dann mit su root zu werden, dafür hat der angreifer einen Zielpunkt weniger.

[
| Versenden | Drucken ]
  • 0
    Von volltroll.de aka brain am Mo, 5. Oktober 2009 um 08:42 #
    "Da auch jemand das direkte root-login hier angesprochen hat: Es ist nun wirklich nicht schwer, sich erst als user einzuloggen, und dann mit su root zu werden, dafür hat der angreifer einen Zielpunkt weniger."

    Nicht wirklich. root gibts auf jeder Linux/Unixkiste, die normalen Nutzer muss man erstmal finden.

    [
    | Versenden | Drucken ]
    • 0
      Von this am Mo, 5. Oktober 2009 um 09:42 #
      Wenn jeder Admin sein eigenes Login bekommt, muss man den Nutzer nicht erst finden, zudem kann man später auch nachvollziehen, wer sich wann eingeloggt hat, loggen sich alle als root ein (am besten noch über nen router) sieht jedes Login gleich aus und es kann nicht mehr unterschieden werden, wer jetzt Mist gebaut hat.

      Dies bedingt natürlich höheren Konfigurationsaufwand bei neuen Admins, resp. neuen Servern, aber die ssh public-keys muss man ja auch für jeden Admin eintragen....

      Meiner Meinung nach der sauberste Weg...

      [
      | Versenden | Drucken ]
      • 0
        Von Michael am Mo, 5. Oktober 2009 um 19:36 #
        Da hast du ihn wohl falsch verstanden und er zuvor auch dich.

        Du meintest ja: Lieber erstmal als user anmelden und dann mit su zum root machen.
        Er meinte: Als root direkt anmelden ist doof, da jeder weiß, dass Linux-Kisten einen root Account haben. Darum lieber mit nem usernamen anmelden - den kennen die Angreifer eher nicht und somit müssen sie username UND passwort erraten.

        Also meint ihr beide für mein Verständnis das gleiche. ^^

        [
        | Versenden | Drucken ]
0
Von anonymous am Mo, 5. Oktober 2009 um 00:50 #
DenyHosts hat der Redakteur auch erwähnt. Ist ein Python-Script und läuft schon seit Jahren absolut problemlos auf den Servern in der Firma, die direkt mit dem Inet verbunden sind. Das hat mich dazu bewogen, fail2ban erst mal nicht zu verwenden obwohl ichs auch interessant finde und fail2ban nicht nur SSH absichern kann.

Der iptables Eintrag oben im Kommentar hatte nen Nachteil und habe das schnell verworfen. Weiß jetzt nicht mehr was, ist schon Jahre her.

[
| Versenden | Drucken ]
  • 0
    Von Andreas am Mo, 5. Oktober 2009 um 03:28 #
    DenyHosts ist mir zu umfangreich. Je umfangreicher eine Software ist, desto mehr potenzielle Fehler besitzt sie. Zudem bringen die ganzen Zusatzfunktionen wie die zentrale Sperrliste kaum einen Sicherheitsgewinn. Ich habe seit 2006 eine eigene Lösung am Rennen und wenn ich über die bisher geblockten Loginversuche Auswertungen fahre dann sehe ich, dass es nur äußerst selten vorkommt, dass eine IP ein zweites mal geblockt werden musste.

    Einige der Features sind auch einfach nur gefährlich, wie die unterschiedliche Behandlung existierender und nicht existierender User in dem diesen beispielsweise eine unterschiedliche Anzahl von Loginversuchen bis zur Blockierung gewährt werden. Nicht umsonst macht SSH selbst keinen Unterschied, ob sich ein existierender oder nicht existierender User versucht einzuloggen. Denn durch einen Unterschied verrät man dem Angreifer, bei welchen Usern es sich wirklich lohnt dranzubleiben. Das groteske daran ist, dass man diese Information völlig ohne Not an den Angreifer weitergibt, denn bei nicht existierenden Usern ist sowieso nichts zu holen, es geht also kein Sicherheitsgewinn einher, wenn man diese schneller blockt. In Zeiten von Botnetzen ist der gezielte Angriff mit unterschiedlichsten IP-Adressen und die anschließende Auswertung auch kein Problem mehr.

    Viel nützlicher ist dagegen eine Portscan-Auswertung. Viele Angreifer öffnen zuerst eine Verbindung auf Port 22 um festzustellen ob dieser erreichbar ist und schließen sie dann wieder. Erst danach erfolgt der eigentliche Angriff. Geht einem Angriff deshalb ein Portscan voraus, kann man die Anzahl der möglichen Loginversuche herabsetzen, ohne etwas über das eigene System zu verraten.

    > Der iptables Eintrag oben im Kommentar hatte nen Nachteil und habe das schnell verworfen. Weiß jetzt
    > nicht mehr was, ist schon Jahre her.

    Sie blockieren unabhängig von der IP-Adresse des Angreifers und sperren damit alle Nutzer gleichermaßen aus. Man kann sie deshalb hauptsächlich als zusätzlichen Schutz nutzen, um massenweise Anfragen in kürzester Zeit zu blockieren, womit Angreifer versuchen bis zur Reaktionszeit von DenyHosts und Co. möglichst viele Anfragen zu platzieren. Als alleiniger Schutz sind sie oftmals weniger gut geeignet.

    [
    | Versenden | Drucken ]
    • 0
      Von Sven am Mo, 5. Oktober 2009 um 10:15 #
      Eine sehr interessante Variante ist es, mittels des randomwait netfilter Moduls für alle kritischen Ports eine zufällige Wartezeit für Verbindungstyp NEW einzustellen. Macht die Auswertung gleich viel spannender.
      [
      | Versenden | Drucken ]
0
Von nano am Mo, 5. Oktober 2009 um 01:06 #
Der Artikel bezieht sich auf die Gefahren die durch BruteForce und Wörterbuch-Attacken kommen. Das dürfte sicherlich auch die größte Gefahr sein, aber ich frage mich dennoch, in wie weit die Gefahr besteht, dass sshd über bugs und exploits angegriffen wird und fällt, und wie häufig so etwas vorkommt.

Hat jemand auch schon mit so etwas Erfahrung, oder zuverlässige Informationen?

[
| Versenden | Drucken ]
  • 0
    Von Blubber,vorsicht,Obama,42,Frei am Mo, 5. Oktober 2009 um 05:07 #
    In solchen Fällen ist es am sinnvollsten die Existenz des sshd Servers zu verschleiern.
    Z.B. in dem man diesen auf einer anderen höheren Portnummer laufen läßt.

    Dann wäre ein erst bekannt gewordener Exploit zwar nach wie vor durchaus gefährlich, aber die Wahrscheinlichkeit das der eigene Rechner gehackt wird sinkt.
    Denn wer macht sich schon die Mühe und scannt alle 65K Ports irgendeines unbestimmten Rechners ab nur um festzustellen ob darauf sshd läuft?

    [
    | Versenden | Drucken ]
    • 0
      Von 7bf am Mo, 5. Oktober 2009 um 14:16 #
      ist immer meine erste Änderung die ich an einem neuem Server durchführe. Alleine damit laufen
      99% aller Angreifer schonmal ins leere was schon erstaunlich ist. Netter Nebeneffekts sind auch wesentlich
      kleinere Logdateien ;)
      [
      | Versenden | Drucken ]
mehr ssh
0
Von mm am Mo, 5. Oktober 2009 um 01:40 #
reicht es auch aus ssh zu deinstallieren oder den dienst zu deaktivieren?
die meisten benutzen doch kein ssh.
[
| Versenden | Drucken ]
  • 0
    Von Shuttle am Mo, 5. Oktober 2009 um 07:54 #
    Nun, selbstverständlich kann man SSH deinstallieren, darum geht es aber nicht.

    Manch Serververwalter braucht durchaus SSH um seine Server betreuen zu können.
    Nicht jeder Server steht zu Hause oder auf der Arbeit...

    [
    | Versenden | Drucken ]
    0
    Von ThorstenS am Mo, 5. Oktober 2009 um 13:14 #
    hä?
    Ohne SSH kann ich meine Server nicht erreichen. Das ist für mich der fundamentalste Dienste überhaupt.

    Ich lasse den sshd auf einem nicht Standardport lauschen und erlaube nur einem bestimmten User einen ssh-login und auch nur über einen key.
    In den letzten 9 Jahren ist noch keiner in meine Rechner eingedrungen *Holz klopf*.

    [
    | Versenden | Drucken ]
0
Von Ravenbird am Mo, 5. Oktober 2009 um 07:36 #
Der normale Heimanwender wird auf seinen heimischen Linuxsystem nur im aller seltensten Falle einen SSH Server benötigen. Deshalb dürfte es für ihn der einfachste Weg sein diesen zu deinstallieren so er überhaupt in der Standardinstallation mit auf die Platte gekommen ist. Hier auf Ubuntu ist das z. B. nicht der Fall und ich denke das auch andere Distributionen genauso vorgehen.

Warum sollte man einen Server laufen lassen den man nicht benötigt? Falls er doch benötigt wird ist eine entsprechende Absicherung freilich absolut anzuraten.

[
| Versenden | Drucken ]
  • 0
    Von soriac am Mo, 5. Oktober 2009 um 09:04 #
    Wobei es für den Heimanwender auch nur dann uninteressant ist, wenn er nur eine einzige Linux-Büchse in seinem Haushalt hat. Sobald es auch nur irgend wie vernetzt zur Sache geht, ist meine Erfahrung, möchte man über kurz oder lang die Möglichkeit haben, sich "mal eben" auf der anderen anzumelden, um die paar Schritte ins Nachbarzimmer oder Keller zu sparen. Allerdings kann man für ein Heim-Intranet rumdiskutieren, ob man sich dort üerhaupt grosse Gedanken um die Sicherheit zu machen braucht, für den Heimgebrauch wäre sogar telnet sicher genug :-)
    [
    | Versenden | Drucken ]
    0
    Von Erdie am Mo, 5. Oktober 2009 um 09:32 #
    Reicht es nicht, ein halbwegs sicheres Passwort zu verwenden? Wenn das Passwort test123 oder der eigene Name etc. ist, braucht man sich auch nicht zu wundern, dass es jemand errät.
    [
    | Versenden | Drucken ]
0
Von Thorsten Schnebeck am Mo, 5. Oktober 2009 um 09:05 #
Moin,

ich lasse den Dämon nur auf Port 22 meines OpenVPN-Netzes lauschen.
Sicher gibt es da das Risiko, dass bei Ausfall des VPN-Dienstes kein Root-Zugriff mehr möglich ist, dafür gäbe aber z.B. bei Strato die Möglichkeit des Remote-Teminal-Logins. Allerdings hatte ich noch nie in den letzten Jahren ein Versagen von OpenVPN.

sshd_config:
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
ListenAddress 10.1.1.1
Protocol 2

root@master:# netstat -ln | grep 22
tcp 0 0 10.1.1.1:22 0.0.0.0:* LISTEN

Übrigens sind root access-Angriffe auf Port 22 gerade sehr aktuell:
http://www.dshield.org/diary.html?storyid=7213

Bye

Thorsten

[
| Versenden | Drucken ]
  • 0
    Von Michael am Mo, 5. Oktober 2009 um 19:46 #
    Damit hat man das Problem aber nur verschoben. Jetzt ist dein VPN-Server der Angriffspunkt. Allerdings haste dadurch ne zusätzliche Hürde geschaffen, da man, sobald man ins VPN reinkommt, ja immer noch den sshd vor sich hat.
    [
    | Versenden | Drucken ]
0
Von Niels am Mo, 5. Oktober 2009 um 10:42 #
Moin,
ich finde den Artikel sehr interessant. Bei dem Abschnitt Fail2ban habe ich allerdings meine Zweifel. Wenn ich einstelle, dass man sich nur per Schlüssel authentifizieren kann, habe ich bislang noch in keiner Log-Datei einen Eintrag gefunden, wenn es schief geht. Benutze Debian. Hat da einer eine Anleitung für?
[
| Versenden | Drucken ]
0
Von vicbrother am Mo, 5. Oktober 2009 um 13:57 #
Wer einen eigenen Server unterhält, kennt die Situation zur Genüge. Das Netz scheint von bösen Buben und Crackern voll zu sein, denn auch nicht publik gemachte Server geraten zunehmend in die Schusslinie von zwielichtigen Gestalten.

Puh, wie gut dass die CDU nun an der Macht ist. Bald wird es keine bösen Buben, Cracker und zwielichtige Gestalten im Internet mehr geben - wenn selbst Linux-Fan das Internet als Böse beschreiben, dann muss die Poltik doch endlich was tun.

[
| Versenden | Drucken ]
0
Von Stoppschild am Di, 6. Oktober 2009 um 02:29 #
Denn mit einem Stoppschild weiß jeder, daß er in den SSH Server nicht rein darf und hält draußen an.
[
| Versenden | Drucken ]
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung