[Howto] SSH Login nicht als admin

  • Secure Shell oder SSH bezeichnet sowohl ein Netzwerkprotokoll als auch entsprechende Programme, mit deren Hilfe man auf eine sichere Art und Weise eine verschlüsselte Netzwerkverbindung mit einem entfernten Computer herstellen kann. Die meisten QNAP-Geräte unterstützen diese Verbindungsmöglichkeit vom Werk aus. Bei der werksseitigen Installation vom SSH-Daemon auf den QNAP-Geräten ist es nur dem admin erlaubt sich zu verbinden.


    Da der root/admin jedoch alles auf dem System machen darf, sollte man, gerade wenn das System aus dem Internet erreichbar ist, sehr komplexe und sichere Passwörter wählen, um das System abzusichern. Eine andere Möglichkeit ist jedoch das deaktivieren des Root-Logins / Admin-Logins. Hierzu sollte man wie folgt vorgehen:



    Austauschen des SSH-Daemons
    Der installierte SSH-Daemon scheint von QNAP so modifiziert worden zu sein, dass er nur ein Login als admin zulässt. Um hier flexible zu sein muss Open-SSH installiert werden. Hierzu bedient man sich des ipkg-Systems, um das erforderliche Paket inkl. evtl. Abhängigkeiten zu installieren (vorher als admin via ssh anmelden).


    Code
    [admin@NAS ~] ipkg list | grep opensshopenssh - 5.1p1-1 - a FREE version of the SSH protocol suite of network connectivity tools.openssh-sftp-server - 5.1p1-1 - sftp-server only from a FREE version of the SSH protocol suite of network connectivity tools.[admin@NAS ~] ipkg install


    Der neue SSH-Daemon wird im Verzeichnis /opt/sbin/ installiert und steht nun zur Verfügung. Um das System nun dazu zu bringen, den neuen Daemon zu benutzen wechseln wir in das Verzeichnis /usr/sbin/ und tauschen hier das Ursprungsbinary gegen das von Open-SSH aus (bzw. wir legen einen symbolischen Link an):


    Code
    [admin@NAS sbin]# cd /usr/sbin/[admin@NAS sbin]# ll sshd -rwxr-xr-x    1 admin    administ   275.5k Nov 12 21:27 sshd*[admin@NAS sbin]# mv sshd BACKUP.sshd.orig                          [--sicher ist sicher--][admin@NAS sbin]# ln -s /opt/sbin/sshd sshd[admin@NAS sbin]# ll sshdlrwxrwxrwx    1 admin    administ       14 Nov 27 14:44 sshd -> /opt/sbin/sshd*


    Ab sofort sollte der neue SSH-Daemon von der NAS benutzt werden. Nun müssen wir die notwendigen Anpassungen am Konfigurationsfile vornehmen.



    Anpassungen an der sshd_config
    Das Konfigurationsfile für den SSH-Daemon finden wir im Verzeichnis /etc/ssh/


    Code
    [admin@NAS sbin]# cd /etc/ssh [admin@NAS ssh]# ll sshd_config -rw-r--r--    1 admin    administ     3.0k Nov 27 22:45 sshd_config


    Hier muß die Zeile abgeändert werden in der angegeben ist, dass nur der admin sich verbinden kann und weiterhin sollten wir generell den Root-Zugang abschalten....also ändern wir wie folgt:


    aus der Zeile

    Zitat

    #PermitRootLogin yes


    machen wir

    Zitat

    PermitRootLogin no


    und aus der Zeile

    Zitat

    AllowUsers admin


    machen wir

    Zitat

    AllowUsers user1 user2 user3


    :!:ACHTUNG! Es muss beachten werden, dass die User auch in der passwd existieren, d.h. es müssen gültige Benutzernamen sein!



    sshd_config auch nach Restart
    Da die QNAP-System nach einem Neustart den Ursprungszustand wieder herzustellen versuchen, müssen wir uns die sshd_config an eine Stelle kopieren, die nicht bei einem Restart refreshed wird. Hierzu bieten sich natürlich die Stellen im System an, die wir auch für die Freigaben benutzen. Hierzu legen wir uns z.B. ein root-verzeichnis unter /share/MD0_DATA/ an und benutzen dieses für unsere abgeänderte sshd_config:


    Code
    [admin@NAS ssh]# cd /share/MD0_DATA/[admin@NAS MD0_DATA]# mkdir root[admin@NAS ssh]# cd root[admin@NAS ssh]# cp /etc/ssh/sshd_config .


    Nun müssen wir dem System nur noch klar machen, dass es sich immer unsere abgeänderte sshd_config nehmen soll. Hierzu benutzen wir die autorun.sh-Funktionalität:


    Code
    [admin@NAS MD0_DATA]#  cd /[admin@NAS /]# mount -t ext2 /dev/mtdblock5 /tmp/config[admin@NAS /]# vi /tmp/config/autorun.sh


    Hier tragen wir nun folgende Zeile ein:


    Zitat

    cp /share/MD0_DATA/root/sshd_config /etc/ssh/sshd_config


    und machen die Datei ausführbar:


    Code
    chmod +x /tmp/config/autorun.sh


    anschliessend können wir den Mount-Befehl wieder aufheben.


    Code
    unmount [admin@NAS/]# umount /dev/mtdblock5


    Fertig ! :thumb:
    Nach einem Systemneustart sollte ihr euch nun nur noch als user1, user2 oder user3 anmelden können.


    Viel Spaß beim Umsetzen und natürlich viel Erfolg :)
    Andre





    Hilfe, ich komme gar nicht mehr auf meine QNAP
    Es kann durchaus mal passieren, dass ihr euch mit dem SSH aussperrt, aber das ist kein Grund zu Panik ;)
    In solchen Fällen hilft es im Web-Interface den Telnet-Zugang einzuschalten und sich via Telnet auf die NAS zu bemühen. Hier greift der sshd nicht und somit könnt ihr über diesen Weg eine evtl. fehlerhafte sshd_config wieder bereinigen.




    Kleine Zusatzinformation

    • Ihr sollte euch überlegen ggf. das sudo-Package zu installieren, dann könnt ihr root-Befehle auch als einfacher User ausführen, doch das ist ein anderes Thema ;)
    • Falls ihr mal als "normaler" User angemeldet seid und kurzfristig doch admin werden wollt, so könnt ihr einfach den Befehl login benutzen:


      Code
      [agrahl@NAS ~]$ whoami
      agrahl
      [agrahl@NAS ~]$ login admin
      Password: 
      [admin@NAS ~]# whoami
      admin


    • Zu Infozwecken habe ich mal meine sshd_config angehängt
  • ACHTUNG !!! ACHTUNG !!! ACHTUNG !!!


    Ich habe gerade ein Update auf 2.1.4 Build 0318 durchgeführt und musste leider feststellen, dass nun eine Gefahr mit meiner Anleitung besteht. Seit der neuen Version funktioniert der Befehl "login" nicht mehr als nicht Root-User, was zur Folge hat, dass man keine Befehle mehr als "admin" ausführen kann, wenn man den Admin in der sshd_config abstellt :shock:


    ...ich suche gerade nach einer Lösung ... leidert funktioniert der Umweg über "sudo" auch nicht ... ich halte euch auf dem Laufenden.


    CU
    Andre

  • Die Lösung !


    Es sieht so aus, als hätte ich eine Lösung gefunden :D Die Lösung ist vielleicht mal wieder nichts 100 %-tig schön, aber dennoch funktioniert sie :thumb: Man muss nur das SUID-Datei Attribut auf die Datei "login" setzen. Hierzu gehen wir wie folgt vor:


    Code
    [user@linux ~] ssh admin@NAS[admin@NAS ~]# cd /bin/[admin@NAS bin]# ll loginlrwxrwxrwx    1 admin    administ        7 Mar 18 08:00 login -> busybox*[admin@NAS bin]# chmod u+s login


    Um das ganze nun noch dauerhaft zu machen (also auch verfügbar nach einem Neustart), sollte man den entsprechenden Eintrag in der "autorun.sh" hinterlegen. Also z.B.:


    Code
    cp /share/MD0_DATA/root/sshd_config /etc/ssh/sshd_config
    /bin/chmod u+s /bin/login


    (wobei die erste Zeile ja bereits oben beschrieben wurde)


    ACHTUNG! Erst nachdem das SUID-Bit gesetzt wurde, sollte man die oben beschriebene Anleitung ausführen und den admin im sshd abschalten.


    Also bei mir scheint es zu funktionieren :D


    Bis denn
    Andre

  • Hi,
    ganz neu, doch ein paar Anmerkungen:
    Benutze die TS-509, wo evtl. einige Dinge anders sind.


    Problem 1:
    sshd wird nach dem Reboot mit dem Orginal überschrieben
    --> In der autorun.sh (bei der TS-509 muss /dev/sdx6 gemountet werden) eintragen:

    Code
    # added for ssh                                                                 cp /share/MD0_DATA/root/sshd_config /etc/ssh/sshd_config                        mv /usr/sbin/sshd /usr/sbin/BACKUP.sshd.orig                                    ln -s /opt/sbin/sshd /usr/sbin/sshd                                             /bin/chmod u+s /bin/login                                                       /usr/bin/killall sshd                                                           sleep 3                                                                         /usr/sbin/sshd -f /etc/ssh/sshd_config -p 22


    Wichtig: sshd muss neu gestartet werden und nach dem Boot muss man etwas mit dem login warten


    Problem 2:
    sudo funktioniert durchaus, wenn man bedenkt, dass es keinen User root gibt --> sudo -u admin ...
    Eleganter ist es, den sudoers file (z.B. via visudo) so anzupassen, dass per default der User admin benutzt wird:

    Code
    # Defaults specification                                                        
    Defaults    runas_default=admin


    Vielleicht hilft es jemanden,
    Gruss
    Burkhardt

  • Habe ein TS-639pro. Das Block-Device scheint bei mir nicht zu existieren:


    [~] # mount -t ext2 /dev/mtdblock5 /tmp/config
    mount: /dev/mtdblock5 is not a valid block device
    [~] #



    Was soll ich tun ?


    Danke


    Gruß qmeb

  • Ich habe das jetzt soweit nach Anleitung gemacht, bekomme aber immer noch beim Versuch mich als nicht-admin anzumelden:


    Connection closed by 192.168.2.5


    Meine autorun.sh sieht so aus:


    extern Verlinkte Information entfernt!


    Meine /etc/ssh/sshd_config ist die originale qnap config zu der ich nur einen weitere erlaubten Benutzer hinzugefügt habe.


    :?:


    EDIT:


    Okay. Jetzt funktioniert's.


    ln -s /opt/sbin/sshd /usr/sbin/sshd


    funktioniert nicht, wenn die Datei existiert. Man muss sie also erst mit mv umbenennen

    2 Mal editiert, zuletzt von Eraser-EMC2- () aus folgendem Grund: Doppelte Beiträge, bitte bei solchen Fällen den vorhandenen Beitrag editieren/erweitern

  • mein TS 219P hat offensichtlich schon OpenSSH drauf


    Code
    # cat /etc/ssh/sshd_config |grep Open#       $OpenBSD: sshd_config,v 1.74 2006/07/19 13:07:10 dtucker Exp $# OpenSSH is to specify options with their default value where


    habe trotzdem ein neues mit ipkg installiert.


    Auch hier musste ich wie oben beschrieben den ssdh killen und neustarten.
    Hierbei ist es praktisch den telnet zugang zu verwenden.


    eleganter waere in autorun.sh:

    Code
    /etc/init.d/login.sh restart


    Ausserdem habe ich mir ein script zum automatischen editieren der autorun.sh (aus dem Forum) bereitgelegt, das habe ich sehr oft benoetigt:

    Code
    /usr/bin/viauto.sh


    Den vim und uemacs kann man uebrigens derzeit total vergessen.
    Tipp: Der sshd braucht sehr lange zum starten, wenn der Login nach reboot nicht direkt klappt, einfach nochmal 2 Minuten warten.


    Den Admin habe ich aus der AllowUser liste nicht rausgenommen. Danke fuer die Anleitung!

  • Alle Tips sehr schön, aber es gibt keinen Grund, warum ich/man den originalen QNAP-sshd ersetzen müsste.
    # ssh -V
    OpenSSH_5.3p1, OpenSSL 0.9.8e 23 Feb 2007


    Datei sshd_config editieren, sshd restarten, gut ist.
    Hilfreich 1: die Änderung(en) in der Config-Datei via autorun.sh persistent machen.
    Hilfreich 2: während der Config-Änderungen telnet erlauben, man weiss ja nie.

  • Hallo,


    tja ich habe die /etc/ssh/sshd_config editiert und die Zeile erweitert
    alt:

    Code
    AllowUsers admin


    neu:

    Code
    AllowUsers admin user1


    Danach habe ich mit

    Code
    /usr/bin/killall sshd


    alle sshd abgeschossen und gewartet bis der sshd wieder neu gestartet war. Nur leider kann ich mich immer noch nicht als user1 anmelden. Woran liegts?



    Gruß
    tjamaker

  • Hallo,


    Ich habe es irgendwie geschafft, dass sich mein sshd nicht mehr von selbst startet. Ich habe ihn mit


    Code
    killall sshd


    abgeschossen. Ich war in einer ssh-Sitzung drin und bin logischerweise rausgeflogen. Dachte mir, dass er nach ner kurzen Zeit wieder von selbst startet. Tat er aber nicht. Kann ich den sshd manuell über Telnert starten und stoppen?


    Danke schon mal

  • Hi,


    wie sieht es nach einem Neustart aus? Spätestens dann sollte der sshd wieder am Start sein.
    Oder hast Du evtl. noch etwas anderes eingegeben? Weil nur mit diesem Befehl macht man den sshd nicht kaputt.



    Gruß
    tjamaker

  • Ja, nach nem Neustart läuft er eh wieder an. Ich hab mich per Ferne ausgenockt und wollte nur wissen wie ich ihn per Telnet manuell starten kann. Welchen Befehl gibts denn dafür?

  • Hallo,


    nachdem die Anleitung schon etwas älter ist, wollte ich mich nochmal erkundigen.
    Ist es nun notwendig den sshd zu ersetzen oder kann der vorhandene verwendet werden?
    Ich habe die FW 3.7.3.


    Meine autorun.sh

    Code
    /bin/sed -i -e 's/AllowUsers\ admin/AllowUsers\ admin\ user1\ user2/g' /etc/ssh/sshd_config
    /etc/init.d/login.sh restart


    Ich bevorzuge immer das Editieren von Konfigdateien um bei einem Update nicht neue Parameter zu löschen.
    Die Konfigdatei schaut nach dem Reboot auch so aus, wie ich das möchte, aber ich kann mich weiterhin nur als admin einloggen.


    Danke und Gruß

  • Hallo,


    um meine Frage selbst zu beantworten: Ich habe es nicht geschafft, den vorinstallierten SSHD mit einer geänderten sshd_config zum laufen zu bekommen. Das Configfile wurde zwar geladen, aber es war anderen Usern nach wie vor nicht möglich sich einzuloggen. Somit habe ich nun doch den openssh samt sftp-server installiert und es hat sofort funktioniert.

  • mir ist ncoh was aufgefallen, mit dem openssh aus ipkg funktiernt das sperren von falschen logins nciht mehr, auch wird ncihts im "systemverbindungsprotokolle" angeziegt vom openssh.

  • Hallo, ich wollte auf meinen TS-251A open ssh installieren.
    ich scheitere schon beim ersten Punkt.


    Code
    [~] # ipkg list
    -sh: ipkg: command not found