openssh-3.5p1

[サーバの実験室 Slackware]

作成 : 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

[サーバの実験室 slackware]