SSH / SSL

OpenSSH

Seit der Version 5.4 kann open SSH mit seinem sftp-Server auch die umask setzen, allerdings hat die Version 5.4 wohl ein paar Sicherheitsprobleme, woraufhin recht schnell die Version 5.5 veröffentlicht wurde.

Hier zeige ich Beispielhaft, wie man sich auf einem Ubuntu 9.04 ein aktuelles OpenSSH 5.5p1 (openssh-5.5p1.tar.gz) aus den Quellen selber baut.

konvertieren zwischen SSH und OpenSSH

Es gibt zwei SSH-Formate:

  1. RFC 4716 SSH Public Key File Format (für kommerzielle SSH-Anwendung)
  2. OpenSSH compatible Key File Format (Linux-Standard)

SSH → OpenSSH:

# ssh-keygen -i -f id_rsa_-_ssh.pub > id_rsa_-_openssh.pub

OpenSSH → SSH:

# ssh-keygen -e -f id_rsa_-_openssh.pub > id_rsa_-_ssh.pub

Bug

Wenn man IPv6 abschaltet (sysctl.conf per net.ipv6.conf.all.disable_ipv6=1), funktioniert X11Forwarding auch nicht mehr.

Vorbereitungen

Als erstes alle Pakete installieren die zum bauen gebraucht werden:

# aptitude -y install build-essential install zlib1g-dev pam-dev libwrap0-dev libcurl4-openssl-dev libpam-dev wget

hier ist die Baustelle:

# cd /usr/src/

jetzt saugen wir uns die Quellen (siehe http://openssh.org/de/portable.html):

# wget ftp://ftp-stud.fht-esslingen.de/pub/OpenBSD/OpenSSH/portable/openssh-5.5p1.tar.gz

Quellen auspacken:

# tar xzf openssh-5.5p1.tar.gz -C /usr/src/

ins Quellverzeichnis wechseln:

# cd openssh-5.5p1

bauen

Dann die Optionen lesen, um die richtigen auszuwählen:

# ./configure --help

Jetzt die gewünschten Optionen setzen:

# ./configure --prefix=/opt/openssh_5.5p1 --with-tcp-wrappers --with-ssl-engine --with-pam --with-mantype=man --with-privsep-path=/var/run/sshd

Am Ende sollte dann soetwas in der Art stehen:

OpenSSH has been configured with the following options:
                     User binaries: /opt/openssh_5.5p1/bin
                   System binaries: /opt/openssh_5.5p1/sbin
               Configuration files: /opt/openssh_5.5p1/etc
                   Askpass program: /opt/openssh_5.5p1/libexec/ssh-askpass
                      Manual pages: /opt/openssh_5.5p1/share/man/manX
                          PID file: /var/run
  Privilege separation chroot path: /var/run/sshd
            sshd default user PATH: /usr/bin:/bin:/usr/sbin:/sbin:/opt/openssh_5.5p1/bin
                    Manpage format: man
                       PAM support: yes
                   OSF SIA support: no
                 KerberosV support: no
                   SELinux support: no
                 Smartcard support: 
                     S/KEY support: no
              TCP Wrappers support: yes
              MD5 password support: no
                   libedit support: no
  Solaris process contract support: no
       IP address in $DISPLAY hack: no
           Translate v4 in v6 hack: yes
                  BSD Auth support: no
              Random number source: OpenSSL internal ONLY
              Host: x86_64-unknown-linux-gnu
          Compiler: gcc
    Compiler flags: -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wno-pointer-sign -Wformat-security -fno-strict-aliasing -fno-builtin-memset -fstack-protector-all -std=gnu99 
Preprocessor flags: 
      Linker flags:  -fstack-protector-all
         Libraries: -lcrypto -ldl -lutil -lz -lnsl  -lcrypt -lresolv
         +for sshd:  -lwrap -lpam

Sicherheitshalber erstmal sauber machen:

# make clean

Wenn alles ohne Fehler durchgelaufen ist, geht es mit dem eigentlichen bauen weiter. Sonst muss natürlich erst der Fehler behoben werden, meist fehlt nur ein *-dev-Paket, welches man mit aptitude schnell nachinstallieren kann.

# make

Ist das auch ohne Fehler durchgelaufen, dann kann man jetzt installieren:

# make install

Anpassungen im System

Zum Schluss muss nur noch das Start-/Stop-Script angepasst werden:

# vi /etc/init.d/ssh

In der alten Datei gibt es unter anderem diese Zeilen:

set -e
# /etc/init.d/ssh: start and stop the OpenBSD "secure shell(tm)" daemon
test -x /usr/sbin/sshd || exit 0
( /usr/sbin/sshd -\? 2>&1 | grep -q OpenSSH ) 2>/dev/null || exit 0
umask 022

Das ändern wir in:

set -e
#SSHD="/usr/sbin/sshd"
SSHD="/opt/openssh_5.5p1/sbin/sshd"
# /etc/init.d/ssh: start and stop the OpenBSD "secure shell(tm)" daemon
test -x ${SSHD} || exit 0
( ${SSHD} -\? 2>&1 | grep -q OpenSSH ) 2>/dev/null || exit 0
export PATH="/opt/openssh_5.5p1/bin:$PATH"
umask 022

Im Rest der Datei muss jetzt nur noch

/usr/sbin/sshd

gegen

${SSHD}

ausgetauscht werden.

Jetzt kann man ganz einfach zwischen der alten Version un der neuen Version umschalten.

neue Version (selbst gebaute Version) aktivieren:

#SSHD="/usr/sbin/sshd"
SSHD="/opt/openssh_5.5p1/sbin/sshd"

alte Version (Betriebssystem-Version) aktivieren:

SSHD="/usr/sbin/sshd"
#SSHD="/opt/openssh_5.5p1/sbin/sshd"
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki