openssh-3.5p1
作成 : 2003/02/11
必要なパッケージ
openssl がインストールされていること。 インストール方法は、openssl-0.9.7aを参照。
zlib がインストールされていること。 インストール方法は、zlib-1.1.4を参照。
特権分離
root 権限で実行されるプロセスは、乗っ取られたときに危険。 root 権限(特権)で動作する親プロセスと、root でないユーザ権限で動作する子プロセスにわける。 クライアントから要求があると、親プロセスは子プロセスを起動する。 このとき、ファイルシステムへのアクセスを /var/empty に制限するため、chroot する。 子プロセスはネットワークデータの処理を行い、親プロセスは認証と子プロセスの監視を行う。
特権分離については、README.privsep を参照。
特権分離ユーザの作成
子プロセスを実行する特権分離ユーザを作成する。 ユーザ名は sshd、chroot されるディレクトリは /var/empty がデフォルトになっている。 configure するときに、--with-privsep-user、--with-privsep-path を指定することで変更できる。 グループ名については、特に指定がない。
# mkdir /var/empty # chmod 755 /var/empty # groupadd sshd # useradd -g sshd -d /var/empty -s /bin/false sshd
openssh-3.5p1 の入手と展開
openssh-3.5p1 のソースを、kddilabs.jp などからもらってくる。 /usr/local/src とかに置いて、展開。
# tar -zxvf openssh-3.5p1.tar.gz
configure
openssh-3.5p1 ディレクトリの中で、configure を実行。
# cd openssh-3.5p1 # ./configure
make
make。
# make
make install
make install。
# make install
/usr/local/sbin と /usr/local/bin にバイナリ、/usr/local/etc に設定ファイルと鍵がインストールされる。
特権分離ユーザを作成していないと、次のようなエラーになる。 ユーザを作成して、再度 make install すればよい。
Privilege separation user sshd does not exist make: [check-config] Error 255 (ignored)
起動スクリプト
/etc/rc.d ディレクトリに sshd を起動させるスクリプトを記述する。 実際に sshd を起動するスクリプトを rc.sshd とする。
#!/bin/sh
# Start/stop/restart the secure shell server:
sshd_start() {
# Create host keys if needed.
if [ ! -r /usr/local/etc/ssh_host_key ]; then
/usr/local/bin/ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N ''
fi
if [ ! -f /usr/local/etc/ssh_host_dsa_key ]; then
/usr/local/bin/ssh-keygen -t dsa -f /usr/local/etc/ssh_host_dsa_key -N ''
fi
if [ ! -f /usr/local/etc/ssh_host_rsa_key ]; then
/usr/local/bin/ssh-keygen -t rsa -f /usr/local/etc/ssh_host_rsa_key -N ''
fi
/usr/local/sbin/sshd
}
sshd_stop() {
killall sshd
}
sshd_restart() {
sshd_stop
sleep 1
sshd_start
}
case "$1" in
'start')
sshd_start
;;
'stop')
sshd_stop
;;
'restart')
sshd_restart
;;
*)
echo "usage $0 start|stop|restart"
esac
rc.M から rc.sshd を実行するようにする。
# Start the OpenSSH SSH daemon: if [ -x /etc/rc.d/rc.sshd ]; then /etc/rc.d/rc.sshd start fi