Невинные SSH'алости в сетях
Andrushock
Xakep, номер #057, стр. 057-078-2
<Щепетильная установка Step by Step>
Последняя версия OpenSSH может быть получена либо с официального ftp-сервера, либо с ближайшего к тебе миррора. Маленькая буква "р" в названии архива означает не "patch", как можно с уверенностью предположить, а "portable" - переносимая версия, предназначенная для операционных систем, отличных от OpenBSD. Для установки OpenSSH потребуется, помимо компилятора и стандартных средств разработки, библиотека zlib и пакет OpenSSL. Для установки OpenSSH проделай следующие действия в консоли:
$ wget ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-3.6.1p2.tar.gz
$ tar zxvf openssh-3.6.1p2.tar.gz
$ cd openssh-3.6.1p2
# env CFLAGS="-O2 -pipe" ./configure --prefix=/usr --sysconfdir=/etc/ssh \
--mandir=/usr/share/man --libexecdir=/usr/lib/misc --with-privsep-path=/var/empty \
--with-privsep-user=sshd --with-md5-passwords --without-tcpwrappers --without-pam \
--with-ipv4-default --without-4in6 --with-ipaddr-display
Если ты предварительно включил в ядро и компилер поддержку ProPolice aka Stack Protector с целью предотвращения атак срыва стека (stack smashing attack) или используешь Trusted Debian (где это сделано за тебя), то чтобы получить некоторый прирост в производительности работы всех программ из пакета OpenSSH, перед сборкой через переменные окружения добавь к опциями компилятора параметр "-fno-stack-protector".
Итак, сценарий configure выдаст отчет со всеми заданными параметрами компиляции и с указанием месторасположения инсталлируемых файлов:
MD5 password support: yes
IP address in $DISPLAY hack: yes
Use IPv4 by default hack: yes
Random number source: OpenSSL internal ONLY
Сompiler flags: -O2 -pipe -Wall -Wpointer-arith -Wno-uninitialized
Libraries: -ldl -lutil -lz -lnsl -lcrypto
Для обеспечения поддержки PAM (Pluggable Authentication Modules - подгружаемые модули аутентификации; в системе должны быть установлены пакеты pam и pam-devel) на этапе конфигурирования скрипту необходимо передать дополнительный аргумент --with-pam, после чего список подключаемых при сборке библиотек будет выглядеть следующим образом: -lpam -ldl -lutil -lz -lnsl -lcrypto
# nice make
# make install
После выполнения последней цели команды make утилита ssh-keygen автоматически сгенерирует ключи RSA1 для работы по протоколу SSH1, а также RSA и DSA для SSH2.
Далее создаем группу и учетную запись для специального пользователя, с привилегиями которого будет выполняться большинство функций демона sshd. Механизм Privilege Separation (разделение привилегий), разработанный Нильсом Провосом (Niels Provos), как раз служит для уменьшения количества кода, выполняемого от имени суперпользователя, и снижает риск получения root привилегий при взломе privsep службы. Первые реализации не позволяли использовать в portable варианте Privilege Separation вместе с включенной компрессией передаваемых данных, однако это ограничение было снято в последних версиях OpenSSH.