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.
Es gibt zwei SSH-Formate:
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
Wenn man IPv6 abschaltet (sysctl.conf per net.ipv6.conf.all.disable_ipv6=1), funktioniert X11Forwarding auch nicht mehr.
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
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
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"