TS-119 SFTP aktivieren und verbinden?

  • Hallo,


    leider habe ich keine Antwort auf meine frage gefunden, von daher versuche ich mal
    mein Problem zu schildern, evtl. hat ja jemand eine Lösung parat?


    Habe auf meinem TS-119 firmware version: 3.1.0 Build 0627T
    unter den Eintsellungen "FTP" und "FTP with SSL/TLS (Explicit)" und
    ausserdem noch das "Telnet - Allow SSH connection" aktiviert.


    Jedoch bekomme ich mit keinem User zugriff per SFTP.
    Ist auch egal ob ich es Unter Winodws mit Winscp, putty
    oder unter Linux mit einem Dateimanager versuche.


    Der einzugste SFTP-Zurigff den ich erfolgreich hinbekomme habe
    ist unter Linux (mit dem Krusader) die anmeldung als admin.
    Bei den anderen User bekommt man immer nur eine Fehlermeldung
    "unbekannter Fehler".....

  • Hallo EgLe,


    ich verwende den SFTP über openSSH. Vielleicht wäre das eine Alternative für Dich!? Die Vorteile sind: chroot-jail (bestimmte Benutzer werden in einem Verzeichnis gefangen), die Tatsache, dass die Admin-Anmeldung unterbunden werden kann sowie die Authentifizierung der Benutzeranmeldung über Public-Private-Keys (Brute-Force-Angriffe sind damit ausgeschlossen).


    Wenn Du mehr Infos brauchst, dann melde Dich einfach.
    Gruß
    creg

  • Hallo,


    ja da wäre ich echt Dankbar, den wie gesagt, bekomme nur als Benutzer Admin
    zugriff auf den Qnap per SFTP ;(


    Habe dann auch den FTPS ausprobiert, aber das Protokoll wird ja nicht gerade
    von sehr vielen Deiteimanager Unterstützt.


    Habe ja auch einige Freunde die ich auf die der Box zugreifen lassen will.
    Aber mit SFTP geht halt nett, und mit FTPS gibt als Probleme, das scheint
    doch ein erheblicher Mehraufwand für Windowsuser zu sein, sich richtig
    die OpenSSL einzubinden und dann kann das nicht jedes Tool.


    SFTP wäre mir also wohl am besten.
    Intern in meinem eigenen Netzwerk löse ich das ja mittels NFS.


    Mein Problem ist leider nur das ich fast kein Englisch kann und für die Thematik
    beim Qnap kaum was gefunden habe, und wenn doch dann nur in Englisch :?


    Wäre Dir also echt Dankbar wenn das klappen würde :D

  • Hallo EgLe,


    (der Weg ist zwar lang - aber dafür lohnend.)


    1. Installiere die aktuelle openssh-Version über ipkg (ich denke, das ist die 5.2..)
    Melde Dich hierzu als Admin über Putty auf Deiner Box an und führe aus:


    ipkg update
    ipkg install openssh


    (noch ein Tipp: Wenn Du nur testen willst, ob ein Paket vorhanden/installierbar ist, dann ergänze den install-Befehl um die option -test am Ende des gesamten Befehls: Bsp: ipkg install openssh -test)


    2. Erstelle einen neuen Benutzer für den Chroot-Zugriff (das ist der Gefängnis-Benutzer, welcher in seinem Home-Verzeichnis gefangen werden soll). Dies machst Du am besten über die Web-Oberfläche Deines NAS.


    Ich nenne ihn hier "usr-freund"


    3. Jetzt braucht der neue Benutzer ein Homeverzeichnis.
    Hierzu editierst Du die /etc/passwd - Datei.
    Ich verwende das Urtier "vi".
    (Ich denke hier ist die erste wirkliche Hürde, da viele den vi nicht bedienen können. Also als eine alternative Lösung empfiehlt sich hier "vim" oder "nano". Diesen kannst Du über ipkg install vim (analog: ipkg install nano) nachinstallieren.)


    (jetzt aber mit vi oder vim weiter)


    vi /etc/passwd
    (analog: vim /etc/passwd)


    (so sollte dies aussehen.Die unterstrichene Stelle ist momentan zu ändern)
    usr-freund:x:502:100:Linux User,,,:/home/usr-freund:/bin/sh


    (jetzt wird das Home-Verzeichnis in Form eines SymLinks (also einer Verknüpfung) angelegt)


    cd /home
    ln -s /share/HDA_DATA/home/usr-freund /home/usr-freund


    (Du musst Dir vorstellen, dass das eigentliche Home-Verzeichnis unter /share/HDA_DATA/home/usr-freund und nicht unter /home/usr-freund liegt. Sollte das eigentliche Home-Verzeichnis bei Dir anderswo liegen, dann musst Du das entsprechen anpassen)


    4. sshd_config-Datei vorbereiten


    (erstelle zuerst unter /share/HDA_DATA/ das Verzeichnis custom)


    mkdir /share/HDA_DATA/custom


    (und kopiere anschließend die sshd_config-Datei dahin)


    cp /etc/ssh/sshd_config /share/HDA_DATA/custom/sshd_config


    5. Vorbereitung der sshd_config für den ersten Test


    (Editiere die sshd_config)
    vi /share/HDA_DATA/custom/sshd_config


    (und such die folgende Stelle AllowUsers. Anschließend ergänze/änder den darin entahltenen Wert um admin usr-freund. Jetzt dürfen sich die Benutzer admin und usr-freund über putty an Deinem System anmelden)


    (.. Speichern nicht vergessen!)


    6. Ersetzen des qnap eigenen ssh-daemons auf den openssh-daemon


    mount -t ext2 /dev/mtdblock5 /tmp/config
    cd /tmp/config/


    (Folgende Zeilen in das autorun.sh-Skript einfügen)

    # --------------------------
    # SSH restarten
    # --------------------------
    #Replace QNAP's bogus SSHD daemon that won't allow users to login
    #This is a three step process
    #
    #Step 1. Stop current daemon
    #Step 2. Replace with ours
    #step 3. Restart our daemon
    SSH=/usr/sbin/sshd
    /sbin/daemon_mgr sshd stop $SSH
    /usr/bin/killall sshd
    rm -f /var/lock/subsys/sshd
    cp /share/HDA_DATA/custom/sshd_config /etc/ssh/sshd_config
    SSH_PORT=`/sbin/getcfg LOGIN "SSH Port" -d 22`
    /sbin/daemon_mgr sshd start "$SSH -f /etc/ssh/sshd_config -p $SSH_PORT"


    (jetzt wollen wir das Skript noch ausführbar machen und alles Demontieren)



    chmod +x autorun.sh
    cd /
    umount /dev/mtdblock5


    7. (den alten) SSHD auf den neuen ändern


    cp /mnt/ext/usr/sbin/sshd /mnt/ext/usr/sbin/org.sshd
    rm /mnt/ext/usr/sbin/sshd
    cp /opt/sbin/sshd /mnt/ext/usr/sbin/sshd


    8. Neustart des Systems (und Testanmeldung mit den Benutzern admin und usr-freund)


    reboot


    (Nach dem Neustart verwendest Du am besten Putty für Deinen Test)


    Wenn alles richtig funktioniert - können wir weiter machen..


    Viel Erfolg


    Gruß
    creg

  • Hallo creg,


    Zitat von "creg"


    (der Weg ist zwar lang - aber dafür lohnend.)


    Hmm, das freut mich zu lesen und vielen Dank für deine Hilfe :D



    Zitat von "creg"


    1. Installiere die aktuelle openssh-Version über ipkg (ich denke, das ist die 5.2..)


    Hier gab es das erste kleiner Problem, ist aber gelöst.
    http://forum.qnapclub.de/viewtopic.php?f=71&t=4557

    Code
    [~] # ipkg install opensshInstalling openssh (5.2p1-2) to root...



    Zitat von "creg"


    2. Erstelle einen neuen Benutzer für den Chroot-Zugriff


    Das war eine der wohl leichteren Aufgaben ist auch kein Problem...


    Zitat von "creg"


    3. Jetzt braucht der neue Benutzer ein Homeverzeichnis.
    Hierzu editierst Du die /etc/passwd - Datei.


    Hmm, das ist schon etwas schwerer, ich als Mouse verwöhnter Bengeln
    kann nicht mit Vi oder Vim umgehen, aber daszu nehme ich mein Krusader
    mit SFTP-Adminzugang und mache das direkt mit dem eingebauten Editor meines Dateimanager ;)
    (verwende ja Kubuntu-Linux als Basissystem)


    Hmm, okay ich sehe dabei auch folgendes:


    /etc/passwd ist ein Symlink der auf /etc/config/passwd zeigt.
    Das verzeichnis /etc/config ist auch nur ein Symlink das auf /mnt/HDA_ROOT/.config zeigt.
    In /mnt/HDA_ROOT/.config finde ich also die echte passwd


    Ist aber erledigt:

    Code
    admin:x:0:0:administrators:/root:/bin/shguest:x:65534:65534:guest:/tmp:/bin/shtest-user:x:500:100:Linux User,,,:/home/test-user:/bin/sh


    Zitat von "creg"


    (jetzt wird das Home-Verzeichnis in Form eines SymLinks (also einer Verknüpfung) angelegt)


    cd /home
    ln -s /home/usr-freund /share/HDA_DATA/home/usr-freund


    (Du musst Dir vorstellen, dass das eigentliche Home-Verzeichnis unter /share/HDA_DATA/home/usr-freund und nicht unter /home/usr-freund liegt. Sollte das eigentliche Home-Verzeichnis bei Dir anderswo liegen, dann musst Du das entsprechen anpassen)


    Hmm, das mit den Symlink versteh ich ja da ich schon etwas wenig Übung mit Linux habe (besitze auch Dreamboxen).
    Aber ich finde nirgends Irgendwelche Homeverzeichnise der angelegnten User, das bedeutet ja ich müsste
    ja erstmal ein Reales verzeichnis erstellen, bevor ich in /home einen Symlink erstellen kann.


    Kann das sein das es keine Realen Home-Verzeichnisse der angelegten User gibt?
    Hmm, also wenn ich nun das reale Homeverzeichnis auf /share/HDA_DATA/home erstelle,
    sollte ich dann dieses wohl für alle Sichtbar machen (chmod 755 oder chmod 777) ?


    Das User Home Verzeichnis selbst /share/HDA_DATA/home/test-user sollte dann wohl nur für
    den entsprechenden User selbst die vollen Rechte haben?


    Wenn ich den Gedanken weiter Spinne....
    Da ich keine Realen Homeverzeichnise meiner angelegten User finde könnte ich ja auch gleich
    direkt in /home die entsprechende Verzeichnise anlegen, da das /home ja nur ein Symlink auf
    /mnt/ext/home ist. Hmm, das scheint aber wohl im Flashspeicher zu liegen?
    Da ich hier keinen weiteren Symlink entdecke....


    Okay einen Gedanken weiter....
    Unter einem Normalen (PC-Linux) hatte ich am Anfang bei extremen Problemen schon dies getestet:


    Da ist es so das wenn ich das entsprechende Homeverzeichnis löschte es nach einem Neustart selbst
    wieder im Grundausgang erstellt wird wie bei einem neu angelegten User.
    Wenn ich also in der /etc/passwd gleich dies eintrage:

    Code
    [code]admin:x:0:0:administrators:/root:/bin/sh
    guest:x:65534:65534:guest:/tmp:/bin/sh
    test-user:x:500:100:Linux User,,,:/share/HDA_DATA/home/test-user:/bin/sh


    Erstellt mir die Qnap bei einem Reboot dann evtl. gleich selbst das entsprechende
    Homeverzeichnis auf der Platte oder wären dann alle Daten weg, da ich ja nicht weiß
    was die beim Reboot wieder evtl. alles Überschreibt???

  • Hallo EgLe,


    (wir sind bei Punkt 3. Also dem Erstellen eines Benutzers mit seinem Home-Verzeichnis)


    Zitat

    Aber ich finde nirgends Irgendwelche Homeverzeichnise der angelegnten User, das bedeutet ja ich müsste
    ja erstmal ein Reales verzeichnis erstellen, bevor ich in /home einen Symlink erstellen kann.


    Ja, das ist richtig. Erstelle aber bitte das Verzeichnis nicht unter /home/usr-freund.
    Denn wie Du es selbst schon erkannst hast würde dies im Flash liegen. Zwar wird Deine Box das Verzeichnis nicht löschen aber Du bekommst Probleme beim Upload von Daten in dieses Verzeichnis.
    Im Klartext bedeutet das, dass kleine Uploads funktionieren würden. Bei größeren Uploads wird dagegen der Uploadvorgang unregelmäßig unterbrochen (bei meinem Test war das nach ca. 3 MB).


    Weiterhin würdest Du erfahrungsgemäß Probleme mit dem Jail (Chroot) bekommen, wenn Du das Homverzeichnis nicht Verlinkst. Deshalb ist Dein Vorschlag zwar gedanklich korrekt aber in der Umsetzung aufgrund der Einschränkungen der Chroot-Umgebung nicht umsetzbar..


    Code
    test-user:x:500:100:Linux User,,,:/share/HDA_DATA/home/test-user:/bin/sh


    Denn in einem Jail (Chroot) muss das Root-Verzeichnis komplett dem Root-User (admin) gehören und darf nur bestimmte Berechtigungen enthalten. Dies ist bei /share/HDA_DATA/.. aber nicht der Fall. Ergo: Du würdest keine Verbindung zustande bringen.


    Ich weiß, dass das alles etwas tricky ist.


    1. Erstelle das Homeverzeichnis manuell unter /share/HDA_DATA/home/usr-freund


    Code
    mkdir /share/HDA_DATA/home/usr-freund


    2. Setze folgende Berechtigung auf dieses Verzeichnis


    Code
    chmod 755


    Code
    chown admin usr-freund


    Code
    chgrp administrators usr-freund


    Zitat

    drwxr-xr-x 6 admin administ 4.0k Jul 31 23:17 usr-freund


    3. Der Benutzer selbst hat keine Berechtigung (außer lesen) auf das Home-Rootsverzeichnis. Er bekommt eine eigene Ablage, wo er alles machen darf.


    (Bsp.)

    Zitat

    drwxr-xr-x 6 usr-freund administ 4.0k Aug 1 17:33 ablage/


    4. Jetzt brauchst Du nur noch Deinen SymLink und der ist unter /home/usr-freund und zeigt auf /share/HDA_DATA/home/usr-freund.


    Code
    ln -s  /share/HDA_DATA/home/usr-freund /home/usr-freund


    Zitat

    lrwxrwxrwx 1 admin administ 32 Jul 22 20:37 usr-freund -> /share/HDA_DATA/home/usr-freund/


    5. Und jetzt verbleibt nur noch die Passwd-Datei, die dann ungefähr so aussehen müsste:
    (eine andere Shell, wäre vielleicht sinnvoller als die /bin/sh -> ist aber momentan irrelevant)


    Zitat

    ...
    usr-freund:x:502:100:Linux User,,,:/home/usr-freund:/bin/sh
    ...

  • Hallo creg,


    nochmals vielen Dank.
    Habe das Verzeichnis angelegt und die Konfigs nun soweit editiert.
    Bin nun bei Punkt 6 angekommen...


    Zitat von "creg"


    6. Ersetzen des qnap eigenen ssh-daemons auf den openssh-daemon


    mount -t ext2 /dev/mtdblock5 /tmp/config
    cd /tmp/config/


    (Folgende Zeilen in das autorun.sh-Skript einfügen)


    Hmm, nun such ich verzweifelt eine autorun.sh.....


    Code
    [/] # mount -t ext2 /dev/mtdblock5 /tmp/config
    [/] # cd /tmp/config/
    [/tmp/config] # ls
    BOOT_COUNT            lost+found/
    board_level_test.cfg  uLinux.conf
    [/tmp/config] #


    Hier gibt es keine und in /etc und in /etc/init.d auch keine habe auch in den andere
    Verzeichnise keine entdecken können :-/


    Muss ich diese erst selbst anlegen, und wenn ja wo soll die liegen?



    Gruß EgLe

  • Hallo EgLe,


    ja, wenn sie nicht da ist, musst Du sie selbst in dem gemounteten Verzeichnis (/tmp/config) anlegen.


    Zitat


    touch autorun.sh
    chmod +x autorun.sh

  • Hallo creg,


    so habe die ganzen Schritte nun durch und neu gebootet.


    der Zugriff über den Terminal per ssh funktioniert mit dem User "admin".
    Mit den beiden anderen Testuser funktioniert dies leider nicht :(


    Kann zumindest mit den Usern eine Verbindung zum NAS herstellen,
    aber bekomme dann immer die Meldung:

    Code
    egle@AMD64-X2-6000:~$ ssh test-user@192.168.0.5 -vOpenSSH_4.7p1 Debian-8ubuntu1.2, OpenSSL 0.9.8g 19 Oct 2007debug1: Reading configuration data /etc/ssh/ssh_configdebug1: Applying options for *debug1: Connecting to 192.168.0.5 [192.168.0.5] port 22.debug1: Connection established.debug1: identity file /home/egle/.ssh/identity type -1debug1: identity file /home/egle/.ssh/id_rsa type -1debug1: identity file /home/egle/.ssh/id_dsa type -1debug1: Remote protocol version 2.0, remote software version OpenSSH_5.2debug1: match: OpenSSH_5.2 pat OpenSSH*debug1: Enabling compatibility mode for protocol 2.0debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2debug1: SSH2_MSG_KEXINIT sentdebug1: SSH2_MSG_KEXINIT receiveddebug1: kex: server->client aes128-cbc hmac-md5 nonedebug1: kex: client->server aes128-cbc hmac-md5 nonedebug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sentdebug1: expecting SSH2_MSG_KEX_DH_GEX_GROUPdebug1: SSH2_MSG_KEX_DH_GEX_INIT sentdebug1: expecting SSH2_MSG_KEX_DH_GEX_REPLYdebug1: Host '192.168.0.5' is known and matches the RSA host key.debug1: Found key in /home/egle/.ssh/known_hosts:1debug1: ssh_rsa_verify: signature correctdebug1: SSH2_MSG_NEWKEYS sentdebug1: expecting SSH2_MSG_NEWKEYSdebug1: SSH2_MSG_NEWKEYS receiveddebug1: SSH2_MSG_SERVICE_REQUEST sentdebug1: SSH2_MSG_SERVICE_ACCEPT receiveddebug1: Authentications that can continue: publickey,password,keyboard-interactivedebug1: Next authentication method: publickeydebug1: Trying private key: /home/egle/.ssh/identitydebug1: Trying private key: /home/egle/.ssh/id_rsadebug1: Trying private key: /home/egle/.ssh/id_dsadebug1: Next authentication method: keyboard-interactivedebug1: Authentications that can continue: publickey,password,keyboard-interactivedebug1: Next authentication method: passwordtest-user@192.168.0.5's password:debug1: Authentications that can continue: publickey,password,keyboard-interactivePermission denied, please try again.test-user@192.168.0.5's password:debug1: Authentications that can continue: publickey,password,keyboard-interactivePermission denied, please try again.test-user@192.168.0.5's password:debug1: Authentications that can continue: publickey,password,keyboard-interactivedebug1: No more authentication methods to try.Permission denied (publickey,password,keyboard-interactive).egle@AMD64-X2-6000:~$



    In der /share/HDA_DATA/custom/sshd_config habe ich die Allowuser
    so eingetragen, hoffe das dies stimmt?


    Code
    AllowUsers admin test-user


    Denke das aber aber irgendwo noch was mit den Rechten nicht stimmt.
    Da ja diese Ausgabe wohl von Bedeutung ist:

    Code
    test-user@192.168.0.5's password:
    Permission denied, please try again.
  • Hallo EgLe,


    kannst Du noch die sshd_config posten?! (und ein ps -ef oder ps)
    Ich nehme an, dass Du die Einstellungen in der autorun.sh alle erledigt hast?!


    Was mich ein bißchen wundert, ist dieser Eintrag:


    Zitat

    OpenSSH_4.7p1


    Es sollte schon ein neueres Paket (5.2..) verfügbar sein - dies wäre wichtig für das Chroot-Jail.


    Gruß
    creg

  • Hallo creg,


    also hier ist die ssh_config aus /share/HDA_DATA/custom:

    Code
    #	$OpenBSD: sshd_config,v 1.74 2006/07/19 13:07:10 dtucker Exp $# This is the sshd server system-wide configuration file.  See# sshd_config(5) for more information.# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin# The strategy used for options in the default sshd_config shipped with# OpenSSH is to specify options with their default value where# possible, but leave them commented.  Uncommented options change a# default value.#Port 22#Protocol 2,1Protocol 2#AddressFamily any#ListenAddress 0.0.0.0#ListenAddress ::# HostKey for protocol version 1#HostKey /etc/ssh/ssh_host_key# HostKeys for protocol version 2HostKey /etc/ssh/ssh_host_rsa_keyHostKey /etc/ssh/ssh_host_dsa_key# Lifetime and size of ephemeral version 1 server key#KeyRegenerationInterval 1h#ServerKeyBits 768# Logging# obsoletes QuietMode and FascistLogging#SyslogFacility AUTH#LogLevel INFO# Authentication:#LoginGraceTime 2m#PermitRootLogin yes#StrictModes yes#MaxAuthTries 6#RSAAuthentication yes#PubkeyAuthentication yes#AuthorizedKeysFile	.ssh/authorized_keys# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts#RhostsRSAAuthentication no# similar for protocol version 2#HostbasedAuthentication no# Change to yes if you don't trust ~/.ssh/known_hosts for# RhostsRSAAuthentication and HostbasedAuthentication#IgnoreUserKnownHosts no# Don't read the user's ~/.rhosts and ~/.shosts files#IgnoreRhosts yes# To disable tunneled clear text passwords, change to no here!#PasswordAuthentication yes#PermitEmptyPasswords no# Change to no to disable s/key passwords#ChallengeResponseAuthentication yes# Kerberos options#KerberosAuthentication no#KerberosOrLocalPasswd yes#KerberosTicketCleanup yes#KerberosGetAFSToken no# GSSAPI options#GSSAPIAuthentication no#GSSAPICleanupCredentials yes# Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and# PasswordAuthentication.  Depending on your PAM configuration,# PAM authentication via ChallengeResponseAuthentication may bypass# the setting of "PermitRootLogin without-password".# If you just want the PAM account and session checks to run without# PAM authentication, then enable this but set PasswordAuthentication# and ChallengeResponseAuthentication to 'no'.#UsePAM no#AllowTcpForwarding yes#GatewayPorts no#X11Forwarding no#X11DisplayOffset 10#X11UseLocalhost yes#PrintMotd yes#PrintLastLog yes#TCPKeepAlive yes#UseLogin noUsePrivilegeSeparation no#PermitUserEnvironment no#Compression delayed#ClientAliveInterval 0#ClientAliveCountMax 3#UseDNS yes#PidFile /var/run/sshd.pid#MaxStartups 10#PermitTunnel no# no default banner path#Banner /some/path# override default of no subsystemsSubsystem	sftp	/usr/libexec/sftp-serverAllowUsers admin test-user# Example of overriding settings on a per-user basis#Match User anoncvs#	X11Forwarding no#	AllowTcpForwarding no#	ForceCommand cvs server


    Hmm, habe aber nun selbst nochmals alles von Anfang an durchgeschaut.
    Dabei nun nach dem

    Code
    mount -t ext2 /dev/mtdblock5 /tmp/configcd /tmp/config/


    Eben festgestellt, das die autorun.sh selsamerweise nicht ausführbar war,
    warum weiß ich nicht, hatte zwischendurch mehrere reboot gemacht....
    So also wieder neu ausführbar gemacht mittels

    Code
    chmod +x autorun.sh


    Und nun klappt das ganze auch :D


    Code
    egle@AMD64-X2-6000:~$ ssh test-user@192.168.0.5 -vOpenSSH_4.7p1 Debian-8ubuntu1.2, OpenSSL 0.9.8g 19 Oct 2007debug1: Reading configuration data /etc/ssh/ssh_configdebug1: Applying options for *debug1: Connecting to 192.168.0.5 [192.168.0.5] port 22.debug1: Connection established.debug1: identity file /home/egle/.ssh/identity type -1debug1: identity file /home/egle/.ssh/id_rsa type -1debug1: identity file /home/egle/.ssh/id_dsa type -1debug1: Remote protocol version 2.0, remote software version OpenSSH_5.2debug1: match: OpenSSH_5.2 pat OpenSSH*debug1: Enabling compatibility mode for protocol 2.0debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2debug1: SSH2_MSG_KEXINIT sentdebug1: SSH2_MSG_KEXINIT receiveddebug1: kex: server->client aes128-cbc hmac-md5 nonedebug1: kex: client->server aes128-cbc hmac-md5 nonedebug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sentdebug1: expecting SSH2_MSG_KEX_DH_GEX_GROUPdebug1: SSH2_MSG_KEX_DH_GEX_INIT sentdebug1: expecting SSH2_MSG_KEX_DH_GEX_REPLYdebug1: Host '192.168.0.5' is known and matches the RSA host key.debug1: Found key in /home/egle/.ssh/known_hosts:1debug1: ssh_rsa_verify: signature correctdebug1: SSH2_MSG_NEWKEYS sentdebug1: expecting SSH2_MSG_NEWKEYSdebug1: SSH2_MSG_NEWKEYS receiveddebug1: SSH2_MSG_SERVICE_REQUEST sentdebug1: SSH2_MSG_SERVICE_ACCEPT receiveddebug1: Authentications that can continue: publickey,password,keyboard-interactivedebug1: Next authentication method: publickeydebug1: Trying private key: /home/egle/.ssh/identitydebug1: Trying private key: /home/egle/.ssh/id_rsadebug1: Trying private key: /home/egle/.ssh/id_dsadebug1: Next authentication method: keyboard-interactivedebug1: Authentications that can continue: publickey,password,keyboard-interactivedebug1: Next authentication method: passwordtest-user@192.168.0.5's password:debug1: Authentication succeeded (password).debug1: channel 0: new [client-session]debug1: Entering interactive session.debug1: Sending environment.debug1: Sending env LANG = de_DE.UTF-8[test-user@QNAP-TS119 ~]$


    Hmm, ich denke die OpenSSH_4.7p1 Debian-8ubuntu1.2, OpenSSL 0.9.8g 19 Oct 2007
    wird die von meinem Kubuntu-Linux Hardy 8.04 sein, steht ja eigentlich da: 8ubuntu1.2


    Von dem Befehl ps sehe ich zumindest nicht welches OpenSSH aus läuft???



    Aber der erste Teil scheint also abgeschlossen zu sein :thumb:


    PS: Der SFTP-Zugriff mit dem Dateimanager funktioniert nun auch,
    nur kann man da natürlich nun überall nun rumschauen, denke wohl das der zweite Teil
    dann darum geht die Verzeichnisrechte einzuschränken :)

  • Hallo EgLe,


    das PS-Listing und die sshd_conf wollte ich nur sehen, weil Du Dich anfangs nicht anmelden konntest.
    Das Problem ist aber jetzt beseitigt und nun können wir weiter machen.


    1. Die Chroot-Umgebung
    Die Chroot-Umgebung wird innerhalb der sshd_config festgelegt (in einer sog. Direktive).
    Hinzu kommt die Notwendigkeit, den internen sftp von openSSH zu benutzen. Andernsfalls müssten wir sehr viele Dateien für die Erstellung der Umgebung in das User-Home kopieren. Und das wollen wir nicht.


    Ändere bitte Deine sshd_config (analog der unteren Darstellung).
    Und lade anschließend das Tool WinSCP herunter. Dann probier Deinen ersten Test. (Dieser sollte nicht funktionieren. Aber keine Sorge.)


    Code
    Subsystem    sftp    internal-sftp
    AllowUsers admin test-user
    
    
    Match User test-user
            ForceCommand internal-sftp
           ChrootDirectory /home/test-user
            AllowTcpForwarding no
            X11Forwarding no
  • Hallo creg,


    habe die ssh_config in /share/HDA_DATA/custom nach deinen Angaben editiert und gespeichert.


    Habe dann mit dem "test-user" eine SFTP-Verbindung zum TS-119 gemacht.
    Diese funktionierte aber auch....
    Nur komme ich nun hier raus:

    Code
    sftp://test-user@192.168.0.5:22/


    Im Verzeichnis in dem ich gerade bin sehe ich einen Symlink auf ein Verzeichnis "test-user"
    das auf /share/HDA_DATA/home/test-user verweist, aber ich habe keine Möglichkeit aus dem vorgegebenen
    Verzeichnis herraus zu kommen, auch nicht mal wenn ich versuche in den Symlink zu gehen.
    Bin also darin gefangen!


    Dann habe ich es mal per Terminal probiert :)



    So hier bleibt die Ausgabe dann stehen, und kann da auch nichts machen ausser eben mittels exit beenden :)

  • Hallo EgLe,


    probier doch mal die Verbindung mit WinSCP - denn dies stellt für normale Benutzer (also ohne Unix-Kenntnisse) den einfachsten Weg dar.
    Poste dann mal die Berechtigungen auf das User-Home (falls noch nicht geschehen) und dann können wir uns um Private-Public-Keys kümmern - damit keiner den Server mit Brute Force hackt.


    Lade schon einmal das Tool "Puttygen" herunter.
    (weil momentan alle Authehtifizierungen über Passwörter laufen.)


    Hier noch ein Screenshot von einem meiner Tests. Beachte, dass der Testbenutzer ausschließlich den vollen Zugriff auf seine Ablage (hier mit dem Namen "ablage" innerhalb des Jails) hat. Außerhalb von "ablage" hat er nur Leserechte.
    Also der Besitzer des Homes = admin. Die berechtigte Gruppe = administrators


    Gruß
    creg

  • Hallo creg,


    so habe mal ein jungfreuliches Windows gebootet zum testen.
    Das Ergebnis ist wie unter Linux gleich.
    Habe mal noch ein paar User angelegt zum testen.


    Und mit dem Winscp und putty nun versucht mich anzumelden.


    Ergebnis: anmeldung geht ist user ist aber gefangen, und kann nichts machen....


    Die rechte des Verzeichnis sieht man ja im Screenshot von Winscp müttse 755 oder sogar 777 sein...



    Falls wir das nicht bis heute Abend abgeschlossen haben, kann ich erst ab Sonntag oder Montag weitermachen.
    Fahre heute Abend so gegen 19:30 Uhr in einen Kurzurlaub und kann da nicht mehr Online kommen :D


    Gruß EgLe

  • Hallo EgLe,


    das mit dem Jail funktioniert richtig - wenn ich Dich richtig verstanden habe.
    Das Problem besteht aber darin, dass Du mit Deinem Benutzer nichts machen kannst.
    Das ist, wenn ich die Screenshots richtig deute, auch korrekt.


    Denn...
    Du musst ein Unterverzeichnis unterhalb von Root, d.h. des eigentlichen Homes anlegen.
    Nur auf dieses Verzeichnis bekommt der Benutzer dann den vollen Zugriff. Sehr wichtig!


    Die Berechtigungen des Root-Verzeichnisses muessen 755 sein. Der Benutzer admin muss hier der owner sein. (siehe hierzu mein letztes Posting).
    Bei meinem letzten Screenshot war dies das Verzeichnis "ablage". Auf das Verzeichnis (Root) "\" dagegen hat der Benutzer nur Leserechte (755) - und nicht mehr.


    Ich bin momentan auch unterwegs und komme nur gelegentlich an einen Internet-PC. Deshalb wird sich das etwas verzoegern.
    Ich versuche aber, wenn es moeglich ist, in den Thread zu schauen.


    Gruss
    creg

  • Hallo creg,


    so bin zurück von meinem Urlaub ;)


    Habe nun mal nach deinen Anweisungen ein wenig experimentiert....
    Das ganze sieht ja im gesamten so aus:


    Ich hatte/habe ja per Webinterface einige User und Gruppen angelegt und denen auch
    gewisse schreib und Leserechte vergeben.


    Wenn möglich würde ich denen das ganze auch als SFTP so einrichten.


    Habe jetzt mal mit dem "user" monika der der Gruppe freunde angehört
    im Homeverzeichnis einen Ordner test erstellt.


    diesem habe ich dann folgende rechte eingerichtet:


    Code
    mkdir testchown -R monika:freunde testchmod 755 test


    es ist nun so das der Benutzer monika in diesem Ordner nun auch
    vollen zugriff Lese und schreibrechte hat und auch selbst nun per SFTP
    darin eigene Ordner usw. erstellen kann.


    Vom restlichen System ist er aber voll abgeschnitten...


    Das ist also schon mal Super :D



    Über das Webinterface der Qnap hatte ich ja schon z.B. einen Ordner Audio
    im Verzeichnis /share/HDA_DATA/Qmultimedia/Audio erstellt.
    Das Webinterface hatte mir ja so wie ich es dort verlangte auch einen Symlink Audio
    unter /share/Audio erstellt damit man beim einloggen per Https eben das Audio-Verzeichnis gleich sieht.


    Nun habe ich versucht im Homeverzeichnis /home/monika einen Symlink
    auf das Audio zu legen, einmal auf den Symlink /share/Audio und
    auch einmal probiert mit dem realen Pfad /share/HDA_DATA/Qmultimedia/Audio.


    So bei einem SFTP-Zugriff des Users monika sieht man nun zwar den Symlink
    im Homeverzeichnis doch kann man darauf nicht zugreifen.
    Bekomme egal wie ich es mache immer diese Meldung im DateiManager:

    Code
    sftp://monika@192.168.0.5:22/audio kann nicht gelesen werden.


    Gibt es dafür eine logische Erklärung?

  • Hallo EgLe,


    Zitat

    Gibt es dafür eine logische Erklärung?


    Ich denke, dass das Problem in der Arbeitsweise des FTP liegt. Wuerdest Du bspw. in einem Verzeichnis ausserhalb des Jails auf ".." doppelklicken (siehe im WinSCP-Fenster), dann wuerdest Du das gelinkte Verzeichnis verlassen koennen. Der Sinn des Jails waere also in Frage gestellt. Der Benutzer koennte sich uberall bewegen. :(


    Aber das Problem duerfte so zu loesen sein:


    Erstelle im Homeverzeichnis ein Verzeichnis: z.B. Audio
    Auf dieses Verzeichnis hat sowohl der Admin als auch Monika Zugriff.
    Anschliessend montierst Du das Verzeichnis /share/HDA_DATA/Qmultimedia/Audio auf das im Homeverzeichnis erstellte Audio-Verzeichnis.


    Ungefaehr so:

    Code
    mount --bind /share/HDA_DATA/Qmultimedia/Audio /home/Monika/Audio


    Leider kann ich die Sache nicht ausprobieren, weil ich in Hongkong in einem Internetcafe sitze. Ich bin aber fest davon ueberzeugt, dass das Problem so oder aehnlich zu loesen ist.
    Falls das mit dem Verzeichnis /home/Monika/Audio nicht gehen sollte, weil das in Wirklichkeit nur ein Symlink ist, dann nimm den richtigen Pfad.


    Das Montieren kannst Du auch automatisch ueber die autorun.sh erledigen.
    Dort einfach den Befehl erstellen.


    Zum Demontieren verwende umount:

    Code
    umount /home/Monika/Audio


    Wenn Du das erledigt hast, sollten wir uns auf die Public-Private-Key-Geschichte konzentrieren. Denn erst dann wird Dein Server gegen Brute-Force-Attacken sicher.


    Gruss
    creg

  • Hast du den Symlink auch groß geschrieben (Audio) ?
    Bei Linux mußt du auf die Groß- und Kleinschreibung beachten,
    also

    Code
    sftp://monika@192.168.0.5:22/Audio kann nicht gelesen werden.
  • Hallo Eraser-EMC2,


    Zitat von "Eraser-EMC2-"

    Hast du den Symlink auch groß geschrieben (Audio) ?
    Bei Linux mußt du auf die Groß- und Kleinschreibung beachten,...


    Ja habe ich, geht nicht und wurde ja oben soweit auch geschildert warum (Jail)
    Wenn man sich normal als Admin anmeldet funktioniert dann auch der Symlink ;)



    Hallo creg,


    Danke für deinen weiteren wichtigen Hinweis.

    Code
    mount --bind /share/HDA_DATA/Qmultimedia/Audio /home/monika/Media/Audio


    Ist genau was ich brauche und funktioniert damit perfect :D


    Habe das ganze und ein Paar mounts mehr in die autorun.sh geschrieben
    und die Qnap dann mttels reboot neu gestartet.


    Geht alles einwandfrei, Also der User monika macht jetzt genau was er soll :thumb:
    Wenn ich nun bei Dir in HongKong wäre würde ich Dir glatt ein Essen und Bier bezahlen :mrgreen:


    Doch eine klitze kleine Frage (bestätigung) habe ich noch bevor wir mit der Verschlüsselung weitermachen....
    Damit andere da evtl. auch besser durchsteigen.


    Diese Betrifft mehrere User anlegen und einrichten:


    1. /mnt/HDA_ROOT/.config/passwd


    wenn man da nun mehrere User anlegt nach deinem Beispiel müsste die ja dann so aussehen:

    Code
    admin:x:0:0:administrators:/root:/bin/shguest:x:65534:65534:guest:/tmp:/bin/shrainer:x:500:100:Linux User,,,:/home/rainer:/bin/shjochen:x:501:100:Linux User,,,:/home/jochen:/bin/shalex:x:502:100:Linux User,,,:/home/alex:/bin/shegle:x:503:100:Linux User,,,:/home/egle:/bin/shwerner:x:504:100:Linux User,,,:/home/werner:/bin/shmonika:x:505:100:Linux User,,,:/home/monika:/bin/sh


    Das denke ich sollte ja wohl richtig sein?



    2. /share/HDA_DATA/custom/sshd_config


    In der /share/HDA_DATA/custom/sshd_config habe ich die Allowuser
    so eingetragen, hoffe das dies stimmt?

    Code
    Subsystem    sftp    internal-sftpAllowUsers admin egle monika rainer alex jochen werner


    So danach wurde für jeden User einen Match-Eintrag geschrieben

    Code
    Match User monika        ForceCommand internal-sftp       ChrootDirectory /home/monika        AllowTcpForwarding no        X11Forwarding noMatch User rainer        ForceCommand internal-sftp       ChrootDirectory /home/rainer        AllowTcpForwarding no        X11Forwarding noMatch User alex        ForceCommand internal-sftp       ChrootDirectory /home/alex        AllowTcpForwarding no        X11Forwarding noMatch User jochen        ForceCommand internal-sftp       ChrootDirectory /home/jochen        AllowTcpForwarding no        X11Forwarding no


    Denke das sollte dann wohl auch so sein?


    3. Symlinks für User-Homeverzeichnisse anlegen


    Code
    cd /homeln -s /share/HDA_DATA/home/alex alexln -s /share/HDA_DATA/home/jochen jochenln -s /share/HDA_DATA/home/rainer rainer....



    4. Verzeichnisse innerhalb der User anlegen wie im Beispiel User "monika"
    ggf. mittels mount --bind bereits erstellte Verzeichnisse außerhalb der Jail einbinden.


    Verzeichnisse erstellen und rechte einrichten:

    Code
    mkdir  Mediamkdir Publicchown -R monika:freunde Mediachown -R monika:freunde Publicchmod 755 Mediachmod 755 Public


    Danch können die entsprechende User mittels SFTP auf deren Verzeichnisse zugreifen
    und haben aber nur die Möglichkeit innerhalb von Media und [/B]Public[/B] sich
    zu bewegen und auch nur dort können Sie zugreifen.


    Um den mount --bind zu benutzen muss erst die autorun.sh gemountet werden:

    Code
    mount -t ext2 /dev/mtdblock5 /tmp/config


    Nun kann in /tmp/config die autorun.sh editiert werden.

    Code
    # Für monikamount --bind /share/HDA_DATA/Qmultimedia/Audio /home/monika/Media/Audiomount --bind /share/HDA_DATA/Qmultimedia/HDTV-Movie /home/monika/Media/Filme/HDTVmount --bind /share/HDA_DATA/Qmultimedia/Video /home/monika/Media/Filme/Videomount --bind /share/HDA_DATA/Qmultimedia/dreambox /home/monika/Media/Filme/Dreamboxmount --bind /share/HDA_DATA/Bilder /home/monika/Media/Bildermount --bind /share/HDA_DATA/Public /home/monika/Public# Für rainermount --bind /share/HDA_DATA/Qmultimedia/Audio /home/rainer/Media/Audiomount --bind /share/HDA_DATA/Qmultimedia/Video /home/rainer/Media/Filme/Videomount --bind /share/HDA_DATA/Public /home/rainer/Public# Für alexmount --bind /share/HDA_DATA/Qmultimedia/Audio /home/alex/Media/Audiomount --bind /share/HDA_DATA/Qmultimedia/Video /home/alex/Media/Filme/Videomount --bind /share/HDA_DATA/Public /home/alex/Public# Für jochenmount --bind /share/HDA_DATA/Qmultimedia/Audio /home/jochen/Media/Audiomount --bind /share/HDA_DATA/Qmultimedia/Video /home/jochen/Media/Filme/Videomount --bind /share/HDA_DATA/Public /home/jochen/Public


    Danach dann das ganze wieder unmounten mittels:

    Code
    cd /
    umount /dev/mtdblock5


    So habe soweit alles für die ganzen User eingerichtet abgespeichert und neu gebootet.
    Also das ganze funktioniert auch, denke wir können mit der Public-Private-Key-Geschichte weitermachen :thumb:


    PS: meinen Usernamen habe ich aber nicht in einer Jail gesteckt, damit ich überall zugriff habe...


    Gruß EgLe