Pomoc Próba zamienienia SSH na OpenSSH.

Ediah

Passing Basics
Beginner
14 Listopad 2013
10
3
3
Poznań
QNAP
TS-x20/TS-x21
Ethernet
1 GbE
Witam!
Dziś chciałem zrobić coś, żeby dało się używać ssh nie tylko na koncie admina. Często używam git, więc ciągłe logowanie się na admina bywa niebezpieczne. Przeczytałem, że można to zrobić za pomocą OpenSSH. Znalazłem ten tutorial. Zaciąłem się na "Stage two". Pod koniec tej części jest napisane "Now open a new terminal and try to login as your non admin user using ssh.".
Próbuje i wychodzi to:
Kod:
# ssh GitJojek@192.168.1.110
ssh: connect to host 192.168.1.110 port 22: Connection refused
#ssh admin@192.168.1.110
ssh: connect to host 192.168.1.110 port 22: Connection refused
Dalej jest napisane "If it does not work then go back to stage two and move through those steps again.". Robie tą część już 3 raz i dalej nic.
Dalej: "[...]Qnap when you reboot will revert back to the old version of ssh."
No to restartuje, bo bardzo nie działa...
Kod:
# ssh admin@192.168.1.110
admin@192.168.1.110's password:
[admin@QNAP ~]# exit
logout
Connection to 192.168.1.110 closed.
# ssh GitJojek@192.168.1.110
GitJojek@192.168.1.110's password:
Permission denied, please try again.
Jest różnica, bo przed zamienieniem ssh na Openshh nawet się nie pytało o hasła do kont non admin. Hasło jest na pewno dobre, bo kopiowane i wklejane.
Kod:
[admin@QNAP ~]# ssh -v
OpenSSH_6.1p1, OpenSSL 1.0.1e 11 Feb 2013

Stąd moje pytania:
1. Czy teraz mam na stałe OpenSSH(nowy pakiet), czy wcześniej też by wyskakiwał taki sam komunikat po wpisaniu 'ssh -v'(stary pakiet)? Przedtem nigdy nie sprawdzałem co zwróci ssh -v.
2. Restart zamienił coś(powinien coś zmienić) czy tylko włączył ponownie usługę?
3. Jeżeli zmienił to tylko konfiguracje SSH/OpenSSH na starą czy powinien zamienić programy, żeby było jak sprzed tutorialu(nie pytanie się o hasło non admin userów)?
4. Czy pozostawienie serwera w obecnym stanie zagraża jakoś funkcjonalności lub bezpieczeństwu? W sumie to SSH na adminie działa, czyli w sumie jest jak wcześniej.
5. Jeżeli jednak pozostawienie spowoduje problemy(pytanie 4) to co zrobić?
 
Rozumiem, że nie jest źle xd
Jutro spróbuję drugi tutorial. Mam nadzieje, że te ogromne skrypty które tam widziałem nie są takie straszne :pOkeeej! Robie... Robie... Zrobiłem tak:
#1 Spojrzałem na to: How To Replace SSH Daemon With OpenSSH - QNAPedia
#2 A w tym artykule jest link do tworzenia autorun: Running Your Own Application at Startup - QNAPedia
W artykule #1 jest podana stara metoda tworzenia autorun, więc posłużyłem się nowszą, łatwiejszą z #2 artykułu - QPKG-based method (new)
Stworzyłem plik /share/MD0_DATA/.qpkg/autorun/login.sh o zawartości skopiowanej z #1 Updated for Firmware 3.4.3 , ponieważ...
Bash:
[admin@QNAP ~]# uname -a                            
Linux QNAP 3.4.6 #1 Thu Jun 12 05:03:03 CST 2014 armv5tel unknown

Bash:
 #!/bin/sh
SLEEP_MAX=600
SSHD=/opt/sbin/sshd
TELNET=/bin/utelnetd
SSHD_CONF=/opt/etc/openssh/sshd_config
SSH_PORT=`/sbin/getcfg LOGIN "SSH Port" -d 22`
DEAFULT_TELNET_PORT=`/sbin/getcfg -f /var/default LOGIN "TELNET Port" -d 13131`
TELNET_PORT=`/sbin/getcfg LOGIN "TELNET Port" -d $DEAFULT_TELNET_PORT`
SSHKEY_CONFIG_DIR=/opt/etc/openssh
BOOT_CONF=`/bin/cat /etc/default_config/BOOT.conf`

generte_ssh_key()
{
    [ -d $SSHKEY_CONFIG_DIR ] || /bin/mkdir $SSHKEY_CONFIG_DIR
    if [ -f /opt/bin/ssh-keygen  ]; then
        if [ ! -f ${SSHKEY_CONFIG_DIR}/ssh_host_rsa_key ] || [ ! -f ${SSHKEY_CONFIG_DIR}/ssh_host_rsa_key.pub ]; then
            /bin/rm -f ${SSHKEY_CONFIG_DIR}/ssh_host_rsa_key*
            /opt/bin/ssh-keygen -t rsa -f ${SSHKEY_CONFIG_DIR}/ssh_host_rsa_key -N ""
            /bin/sync
        fi
        if [ ! -f ${SSHKEY_CONFIG_DIR}/ssh_host_dsa_key ] || [ ! -f ${SSHKEY_CONFIG_DIR}/ssh_host_dsa_key.pub ]; then
            /bin/rm -f ${SSHKEY_CONFIG_DIR}/ssh_host_dsa_key*
            /opt/bin/ssh-keygen -t dsa -f ${SSHKEY_CONFIG_DIR}/ssh_host_dsa_key -N ""
            /bin/sync
        fi
        if [ ! -f ${SSHKEY_CONFIG_DIR}/ssh_host_ecdsa_key ] || [ ! -f ${SSHKEY_CONFIG_DIR}/ssh_host_ecdsa_key.pub ]; then
            /bin/rm -f ${SSHKEY_CONFIG_DIR}/ssh_host_ecdsa_key*
            /opt/bin/ssh-keygen -t ecdsa -f ${SSHKEY_CONFIG_DIR}/ssh_host_ecdsa_key -N ""
            /bin/sync
        fi
    fi

}

update_sshd_config()
{
    ENABLED_SFTP=`/sbin/getcfg LOGIN "SFTP Enable" -u -d TRUE`

    if [ "x${ENABLED_SFTP}" = "xTRUE" ]; then
        /bin/grep "/usr/libexec/sftp-server" ${SSHD_CONF} > /dev/null
        if [ $? != 0 ]; then
            /bin/sed '107i\Subsystem sftp \/usr\/libexec\/sftp-server' ${SSHD_CONF} > ${SSHD_CONF}.tmp
            /bin/cp -f ${SSHD_CONF}.tmp ${SSHD_CONF}
        fi
    else
        /bin/grep "/usr/libexec/sftp-server" ${SSHD_CONF} > /dev/null
        if [ $? = 0 ]; then
            /bin/sed "/\/usr\/libexec\/sftp-server/d" ${SSHD_CONF} > ${SSHD_CONF}.tmp
            /bin/cp -f ${SSHD_CONF}.tmp ${SSHD_CONF}
            /bin/rm ${SSHD_CONF}.tmp
        fi
    fi
}

enable_openssh()
{
    # Check to see if we already copied the old sshd
    if [ ! -e /usr/sbin/sshd_orig ]; then
        mv /usr/sbin/sshd /usr/sbin/sshd_orig
        cp /opt/sbin/sshd /usr/sbin/sshd
    fi
 
    # Finally, replace the current login script if neccessary so further restarts via the web interface work
    /bin/grep "enable_openssh" /etc/init.d/login.sh > /dev/null
    if [ $? != 0 ]; then
        if [ -e $0 ]; then
            cp $0 /etc/init.d/login.sh
        fi
    fi
 
    # Make sure we have a home directory on a persistent drive
    # Note, this will only create the admin home directory
    if [ ! -e "/share/MD0_DATA/home" ]; then
        /bin/mkdir /share/MD0_DATA/home
        /bin/mkdir /share/MD0_DATA/home/admin
        /bin/chmod og-rx /share/MD0_DATA/home/admin
    fi
 
    # Link persistent home directory to referenced home dirs in /etc/passwd
    if [ ! -e "/share/homes" ]; then
        ln -s /share/MD0_DATA/home /share/homes
    fi
}


# Wait $SLEEP seconds or determine if the system is done booting before proceeding
SLEEP_COUNTER=0
while [[ ! -e /tmp/.boot_done && $SLEEP_COUNTER -le $SLEEP_MAX ]]; do
        sleep 1
        let "SLEEP_COUNTER += 1"
done

/sbin/test -f $SSHD || exit 0
/sbin/test -f $TELNET || exit 0
[ -f "/bin/cmp" ] || ln -sf /bin/busybox /bin/cmp

case "$1" in
    start)
    if [ `/sbin/getcfg LOGIN "SSH Enable" -u -d TRUE` = FALSE ]; then
        echo "Starting sshd services: disabled."
    else
        echo -n "Starting sshd services: "
        enable_openssh
        generte_ssh_key
        update_sshd_config
        /sbin/daemon_mgr sshd start "$SSHD -f ${SSHD_CONF} -p $SSH_PORT"
        echo "sshd."
        touch /var/lock/subsys/sshd
    fi

    if [ `/sbin/getcfg LOGIN "TELNET Enable" -u -d FALSE` = FALSE ]; then
        echo "Starting telnet services: disabled."
    else
        echo -n "Starting telnet services: "
        /sbin/daemon_mgr utelnetd start "$TELNET -p $TELNET_PORT &"
        echo "utelnetd."
        touch /var/lock/subsys/utelnetd
    fi

    ;;
    stop)
    echo -n "Shutting down sshd services:"
    /sbin/daemon_mgr sshd stop $SSHD
    /usr/bin/killall sshd
    rm -f /var/lock/subsys/sshd
    echo "sshd"

    echo -n "Shutting down telnet services:"
    /sbin/daemon_mgr utelnetd stop $TELNET
    rm -f /var/lock/subsys/utelnetd
    echo "utelnetd"
    ;;

    restart)
    $0 stop
    $0 start
    ;; 
    *)
        echo "Usage: /etc/init.d/login.sh {start|stop|restart}"
        exit 1
esac

exit 0
Mam nadzieje, że jest ok. :Loser:

[admin@QNAP ~]# chmod +x /share/MD0_DATA/.qpkg/autorun/login.sh

Na końcu pliku /etc/config/qpkg.conf umieściłem:
Bash:
[login]
Name = login
Version = 3.4.3
Author = WikiQnap
Date = 2014-09-29
Shell = /share/MD0_DATA/.qpkg/autorun/login.sh
Install_Path = /share/MD0_DATA/.qpkg/autorun
QPKG_File = login.qpkg
Enable = TRUE

No i na koniec:
[admin@QNAP ~]# deluser guest

Teraz reboot...

Po restarcie nadal można zalogować się tylko na admina
Bash:
# ssh GitJojek@192.168.1.110
GitJojek@192.168.1.110's password:
Permission denied, please try again.
# ssh Jojek@192.168.1.110
Jojek@192.168.1.110's password:
Permission denied, please try again.
# ssh admin@192.168.1.110
admin@192.168.1.110's password:
[admin@QNAP ~]#

Po odznaczeniu Zezwól na połączenia SSH, zastosowaniu zmian oraz zaznaczeniu i zastosowaniu zmian w GUI Ustawienia systemu, Usługi sieciowe, Telnet/SSH mam taki efekt:
Bash:
# ssh GitJojek@192.168.1.110
ssh: connect to host 192.168.1.110 port 22: Connection refused
# ssh Jojek@192.168.1.110
ssh: connect to host 192.168.1.110 port 22: Connection refused
# ssh admin@192.168.1.110
ssh: connect to host 192.168.1.110 port 22: Connection refused

Oczywiście hasła są kopiowane i wklejane.

Jakieś sugestie? :'(Brak choćby najmniejszej pomocy nie jest fajne... Mój problem jest aż tak prosty, że szkoda czasu na odpowiedź? Czy po prostu nikt nie wie?
Zaczynam chyba kopiować dane z NAS, żeby móc postawić system od nowa...