Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
SSH / SSL
- Krypto-Algorithmen sicher designen von Dan J. Bernstein → Dan Bernstein fordert Algorithmen, bei denen man weniger falsch machen kann.
-
-
-
- dafür muß auf dem FreeBSD-Server folgendes eingestellt werden:
vi /etc/ssh/sshd_config- login:
PubkeyAuthentication yes - login:
PasswordAuthentication yes - Sicherheit:
PermitEmptyPasswords no - Sicherheit:
ChallengeResponseAuthentication no - Sicherheit:
UsePAM no
-
-
ssh-keygen -t rsa -b 16384ssh-keygen -o -t ed25519 -a 256echo 'eval $(ssh-agent)' » ~/.bashrcecho "ssh-add" » ~/.bashrc
> ssh -o "StrictHostKeyChecking=no" user@host
TLS-Ciphers anzeigen
# openssl ciphers -v | fgrep TLSv1.2 | sed 's/.*/ &/' ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD DHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=DH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384 ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384 DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256 ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256 DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256 RSA-PSK-AES256-GCM-SHA384 TLSv1.2 Kx=RSAPSK Au=RSA Enc=AESGCM(256) Mac=AEAD DHE-PSK-AES256-GCM-SHA384 TLSv1.2 Kx=DHEPSK Au=PSK Enc=AESGCM(256) Mac=AEAD RSA-PSK-CHACHA20-POLY1305 TLSv1.2 Kx=RSAPSK Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD DHE-PSK-CHACHA20-POLY1305 TLSv1.2 Kx=DHEPSK Au=PSK Enc=CHACHA20/POLY1305(256) Mac=AEAD ECDHE-PSK-CHACHA20-POLY1305 TLSv1.2 Kx=ECDHEPSK Au=PSK Enc=CHACHA20/POLY1305(256) Mac=AEAD AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD PSK-AES256-GCM-SHA384 TLSv1.2 Kx=PSK Au=PSK Enc=AESGCM(256) Mac=AEAD PSK-CHACHA20-POLY1305 TLSv1.2 Kx=PSK Au=PSK Enc=CHACHA20/POLY1305(256) Mac=AEAD RSA-PSK-AES128-GCM-SHA256 TLSv1.2 Kx=RSAPSK Au=RSA Enc=AESGCM(128) Mac=AEAD DHE-PSK-AES128-GCM-SHA256 TLSv1.2 Kx=DHEPSK Au=PSK Enc=AESGCM(128) Mac=AEAD AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD PSK-AES128-GCM-SHA256 TLSv1.2 Kx=PSK Au=PSK Enc=AESGCM(128) Mac=AEAD AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256 AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256
# openssl ciphers -v | fgrep TLSv1.3 | sed 's/.*/ &/' TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
Von SSH und SCP unterstützte Ciphers anzeigen
# man ssh_config
# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.5 LTS Release: 18.04 Codename: bionic
# ssh -V OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
# ssh -Q cipher 3des-cbc aes128-cbc aes192-cbc aes256-cbc rijndael-cbc@lysator.liu.se aes128-ctr aes192-ctr aes256-ctr aes128-gcm@openssh.com aes256-gcm@openssh.com chacha20-poly1305@openssh.com
Beispiel:
# ssh -c rijndael-cbc@lysator.liu.se,aes256-cbc,aes256-ctr user@host
SSH Config
Beispiel Konfiguration, die nur Ed25519 erlaubt
- ~/.ssh/config
#https://man.openbsd.org/ssh #https://man.openbsd.org/ssh_config #ssh -Q help HOST * #ssh -Q sig CASignatureAlgorithms ssh-ed25519,sk-ssh-ed25519@openssh.com #ssh -Q kex KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org #ssh -Q mac MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256 #ssh -Q cipher #ssh -Q cipher-auth Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes256-cbc,aes256-ctr #ssh -Q key HostKeyAlgorithms rsa,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,ssh-ed25519,sk-ssh-ed25519@openssh.com
alle 30s ein Nullpaket (keep-alive) an den Server senden (hier bis zu 30 Mal)
- ~/.ssh/config
HOST * ServerAliveInterval 30 ServerAliveCountMax 30
Für den Host example.com einen anderen Standard-Port verwenden (hier: 2222)
- ~/.ssh/config
HOST example.com Port 2222
SSHD Config
- /etc/ssh/sshd_config
#Port 22 ListenAddress 0.0.0.0:22 ListenAddress [::]:22 ListenAddress [::]:23
- /etc/ssh/sshd_config
# root login only with key PermitRootLogin prohibit-password # root login allowed PermitRootLogin yes PubkeyAuthentication yes PasswordAuthentication yes PermitEmptyPasswords no ChallengeResponseAuthentication no UsePAM no X11Forwarding yes PrintMotd yes PrintLastLog yes
- /etc/ssh/sshd_config
# omit '-u 0022' to use default umask # Ubuntu Subsystem sftp /usr/lib/openssh/sftp-server -u 0022 #FreeBSD Subsystem sftp /usr/libexec/sftp-server -u 0022
Deprecated option
# The ServerKeyBits option only applies to SSH protocol version 1.
# Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 30: Deprecated option UsePrivilegeSeparation # Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 33: Deprecated option KeyRegenerationInterval # Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 36: Deprecated option ServerKeyBits # Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 64: Deprecated option RSAAuthentication # Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 77: Deprecated option RhostsRSAAuthentication # Aug 13 13:49:12 sshserver01 sshd[3969]: reprocess config line 64: Deprecated option RSAAuthentication # Aug 13 13:49:12 sshserver01 sshd[3969]: reprocess config line 77: Deprecated option RhostsRSAAuthentication
Schwäche von Diffie-Hellman für TLS
-
-
- Apache HTTP Server (mod_ssl)
- nginx
- Microsoft IIS
- Lighttpd
- Apache Tomcat
- Postfix SMTP
- Sendmail
- Dovecot
- HAProxy
- Amazon Elastic Beanstalk
- OpenSSH
-
Generating a Unique DH Group
> openssl dhparam -out dhparams.pem 4096
ab Apache 2.4.8 und OpenSSL 1.0.2:
SSLOpenSSLConfCmd DHParameters "/pfad/zum/dhparams.pem"
Lighttpd:
> vi /etc/lighttpd/lighttpd.conf ... ssl.dh-file="/pfad/zum/dhparams.pem" ...
allgemeines
SSL/TLS
TLS hat soviele Probleme, man sollte es mind. in der Version 1.2 einsetzen!
Verschlüsselungsverfahren
- Serpent - ist der sicherste;
- Twofish - ist der zweitsicherste;
- Rijndael - ist weniger sicher als Serpent oder Twofish, es ist seit dem 02. Oktober 2000 der DES-Nachfolger und somit der US-Standard "AES" (Advanced Encryption Standard);
Blockverschlüsselung
- EBC - jeder Block wird mit dem selben Schlüssel verschlüsselt (das ist nicht sehr schlau)
- CBC - jeder Block wird mit einem eigenen Schlüssel verschlüsselt
OpenSSH ab Version 6.6 (ab Ubuntu 14.04 LTS)
elliptische Kurven
Zur Zeit kann SSH nur den Ellyptischen-Kurven-Algorithmus ED25519, der ED448 und E-521 werden sicher später noch kommen.
Die DSA-Schlüssel sind alle NSA-optimiert und somit als unsicher anzusehen.
Auch von den Schlüsseln mit elliptischen Kurven wird vermutet, dass sie NSA-optimiert sind.
RSA mit großer Schlüssellänge ist z.Z. die sicherste Alternative.
der ED25519-Schlüssel hat eine feste Länge von 256 Bit, hier wird die Option "-b" ignoriert:
> ssh-keygen -t ed25519 -a 1024
aus einem privaten Schlüssel einen öffentlichen generieren:
> ssh-keygen -y -f ~/.ssh/id_ed25519 > ~/.ssh/id_ed25519.pub
Die Option -a beschreibt, mit wieviel Rotationen die Passphrase verschlüsselt wird.
Je größer diese Anzahl ist, desto stärker ist die Passphrase gegen Brut-Force-Angriffe gesichert aber desto langsammer ist auch der Verbindungsaufbau.
Die Zeit, die zum generieren des Schlüssels benötigt wird, die Zeit fällt auch bei einem Verbindungsaufbau mit dem generierten Schlüssel an.
Also wenn das generieren eines Schlüssels mit 65536 Runden ca. 10 Minuten dauert, dann wird der Vebindungsaufbau mit diesem Schlüssel von diesem Rechner (Intel Core i7-2620M 2.70GHz) aus, auch ca. 10 Minuten benötigen!
In soeinem Fall sollte man die Anzahl der Runden auf einen Wert reduzieren, bei dem die Zeit zum generieren bzw. für den Verbindungsaufbau, in einem verträglichen Zeitrahmen liegt.
Auf einem Rechner mit einer "Intel Core i7-2620M 2.70GHz"-CPU, dauert der Login mit einem ED25519-Schlüssel mit 1024 Runden, ca. 10 Sekunden und mit 65536 Runden ca. 10 Minuten.
Die DSA-Schlüssel sind alle NSA-optimiert und somit als unsicher anzusehen. Auch von den Schlüsseln mit elliptischen Kurven wird vermutet, dass sie NSA-optimiert sind. Weiterhin gilt die Einschränkung, dass bei den Algorithmen, die auf elliptischen Kurven basieren, die Schlüssellänge nicht konfigurierbar ist. Auch wenn von RSA nicht vermutet wird, das es NSA-optimiert ist, so arbeitet RSA doch deterministisch und ist deshalb unter Umständen für bestimmte Angriffe anfällig. In der Praxis wird RSA daher mit dem "Optimal Asymmetric Encryption Padding" kombiniert. Daraus ergibt sich, dass ein RSA-Algorithmus, der Padding verwendet, grundsätzlich als sicherer einzustufen ist als alle anderen genannten Algorithmen.
Ein 160 Bit langer Schüssel, der auf elliptischen Kurven basieren (ECDH), gilt als ähnlich sicher wie ein 1024 Bit langer RSA-Schlüssel (RSA/DH):
160 Bit ECDH - 1024 Bit RSA/DH 224 Bit ECDH - 2048 Bit RSA/DH 256 Bit ECDH - 3072 Bit RSA/DH 384 Bit ECDH - 7680 Bit RSA/DH
ECDH-Schlüssel eignet sich daher besonders dann, wenn die Speicher- oder Rechenkapazität begrenzt ist, z. B. in Smartcards oder anderen eingebetteten Systemen.
OpenSSH bis Version 6.5 (bis Ubuntu 12.04 LTS)
einen eigenen RSA-Schlüssel generieren:
> ssh-keygen -t rsa -b 8192
aus einem privaten Schlüssel einen öffentlichen generieren:
> ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Verbindungen mit TTL
so werden alle SSH-Verbindungen nach 300 Sekunden (5 Minuten) "nichts tun" automatisch getrennt:
> vi /etc/ssh/sshd_config
ClientAliveInterval 300 ClientAliveCountMax 0
so bleiben alle SSH-Verbindungen solange offen, wie der Rechner eingeschaltet ist:
> vi /etc/ssh/sshd_config
#ClientAliveInterval 300 #ClientAliveCountMax 0
Nicht vergessen, nach einer Änderung an dieser Konfigurationsdatei den SSH-Dienst neu zu starten.
ChRoot mit SSH/BASH
Benutzer anlegen:
# useradd -m -c "BESCHREIBUNG" fritz # mkdir -p /home/fritz/arbeit
SSH-Schlüssel anlegen:
# su - fritz # ssh-keygen -t rsa -b 4096 # exit
Die Rechte für die ChRoot-Funktion passend setzen:
# chown -R 0:0 /home/fritz # chown -R fritz:fritz /home/fritz/.ssh # chown -R fritz:fritz /home/fritz/.bash* # chown -R fritz:fritz /home/fritz/arbeit
Binärdateien in die ChRoot-Umgebung kopieren:
# tar cvzf bash.tgz /bin/ /lib/ /lib64/ /usr/bin/ ; tar xzf bash.tgz -C /home/fritz/
das "/dev" in der ChRoot-Umgebung anlegen:
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
/etc/ssh/sshd_config
ganz unten an die Datei anhängen:
...
Match user fritz
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
SSHD neu starten:
> /etc/init.d/ssh restart
ChRoot mit SCP/SFTP
Benutzer anlegen:
# useradd -m -c "BESCHREIBUNG" -g sftpgruppe fritz # mkdir -p /home/fritz/arbeit # chown -R fritz:0 /home/fritz # chown 0:0 /home/fritz # chown -R fritz:sftpgruppe /home/fritz/arbeit # chmod 0775 /home/fritz/arbeit
Benutzer anlegen:
# chown -R fritz /home/fritz # userdel -r fritz
/etc/ssh/sshd_config
ganz unten an die Konfigurationsdatei anhängen:
Match user fritz
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -l VERBOSE
unerwünschte Wartezeit (wegen IPv6) vor dem Login
Die neuen SSH-Versionen versuchen erst per IPv6 eine Verbindung aufzubauen, erst wenn das nicht geht, versuchen sie es per IPv4.
Mit dieser Option verwendet SSH-Client nur noch IPv4:
# vi /etc/ssh/ssh_config ... AddressFamily inet ...
Damit der SSHD auch nur mit IPv4 arbeitet:
# vi /etc/ssh/sshd_config ... AddressFamily inet ...
OpenSSH 5.5p1 aus den Quellen bauen
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.
Agent admitted failure to sign using the key.
Problem
Es ist kein automatischer Login möglich, obwohl alle relevanten Verzeichniss- und Dateirechte richtig gesetzt sind:
fratz@client:~$ ssh fritz@server Agent admitted failure to sign using the key. Password:
Lösung
Schlüssel bei Seite legen:
fratz@client:~$ mv .ssh/id_rsa .ssh/id_rsa.bak fratz@client:~$ mv .ssh/id_rsa.pub .ssh/id_rsa.pub.bak
einmal kurz mit Passwort einloggen:
fratz@client:~$ ssh fritz@server Password: fritz@server:~$ fritz@server:~$ exit logout Connection to server closed.
Schlüssel wieder hervor holen:
fratz@client:~$ mv .ssh/id_rsa.bak .ssh/id_rsa fratz@client:~$ mv .ssh/id_rsa.pub.bak .ssh/id_rsa.pub
jetzt geht der passwortlose Login wieder:
fratz@client:~$ ssh fritz@server fritz@server:~$
konvertieren zwischen OpenSSH, SSH2/RFC4716 und RSA/PAM
Hier einmal beispielhaft alle Konvertierungsvarianten, die mir eingefallen sind bzw. die bei mir funktioniert haben.
-e→ exportSSH2/RFC4716(ist der Standard)-i→ importSSH2/RFC4716(ist der Standard)-m→ FormateRFC4716(für SSH2)-m→ FormatePAM(für RSA)
OPENSSH PRIVATE KEY + OPENSSH PUBLIC KEY - generieren:
> ssh-keygen -t rsa -b 4096 Enter file in which to save the key (/home/fritz/.ssh/id_rsa):
OPENSSH PRIVATE KEY + OPENSSH PUBLIC KEY - generieren:
> ssh-keygen -t rsa -m RFC4716 -b 4096 Enter file in which to save the key (/home/fritz/.ssh/id_rsa): /home/fritz/.ssh/id_rsa_rfc4716
RSA PRIVATE KEY + OPENSSH PUBLIC KEY - generieren:
> ssh-keygen -t rsa -m PEM -b 4096 Enter file in which to save the key (/home/fritz/.ssh/id_rsa): /home/fritz/.ssh/id_rsa_pem
OPENSSH KEY in SSH2 PUBLIC KEY konvertieren:
> ssh-keygen -e -f .ssh/id_rsa > .ssh/SSH2_PUBLIC_KEY.pub > ssh-keygen -e -f .ssh/id_rsa.pub > .ssh/SSH2_PUBLIC_KEY.pub
OPENSSH KEY in SSH2 PUBLIC KEY konvertieren:
> ssh-keygen -e -m RFC4716 -f .ssh/id_rsa > .ssh/SSH2_PUBLIC_KEY_-_RFC4716.pub > ssh-keygen -e -m RFC4716 -f .ssh/id_rsa.pub > .ssh/SSH2_PUBLIC_KEY_-_RFC4716.pub
OPENSSH KEY in RSA PUBLIC KEY konvertieren:
> ssh-keygen -e -m PEM -f .ssh/id_rsa > .ssh/RSA_PUBLIC_KEY_-_PEM.pub > ssh-keygen -e -m PEM -f .ssh/id_rsa.pub > .ssh/RSA_PUBLIC_KEY_-_PEM.pub
SSH2 KEY in OPENSSH PUBLIC KEY konvertieren:
> ssh-keygen -i -f .ssh/SSH2_PUBLIC_KEY_-_RFC4716.pub > .ssh/id_rsa.pub
SSH2 KEY in OPENSSH PUBLIC KEY konvertieren:
> ssh-keygen -i -m RFC4716 -f SSH2_PUBLIC_KEY_-_RFC4716.pub > .ssh/id_rsa.pub
RSA KEY in OPENSSH PUBLIC KEY konvertieren:
> ssh-keygen -i -m PEM -f SSH2_PUBLIC_KEY_-_RFC4716.pub > .ssh/id_rsa.pub
automatische Passwortübergabe mit sshpass
Wenn man auf dem Zielsystem keinen eigenen Schlüssel liegen hat oder wegen der Verzeichnisrechte eine Pub-Key-Auth nicht funktionieren würde, dann kann man das einloggen mit sshpass trotzdem automatisieren:
> sshpass -p geheim ssh 192.168.0.100 'df -h'
installation mit FreeBSD 13:
> pkg install security/sshpass
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"
