OpenSSH ソースインストール
えーと。
telnet でポートを指定して接続すると、そのポートで稼働中のサーバがバージョン 情報などの「バナー」を返してきます。
$ telnet localhost 22 Trying ::1... Connected to localhost. Escape character is '^]'. SSH-2.0-OpenSSH_5.3
セキュリティ対策でもなく、chroot でもなく。ただただセキュリティ部から「OpenSSH のバージョンが最新ではない」などといちゃもん付けられるのが嫌で、OpenSSH をソースからコンパイルしなおし、バナーを隠すことにしました。
OpenSSH のソースインストール
まず OpenBSD のミラーサイトから OpenSSH のソースをダウンロードして適当なところへ解凍します。 (ここでは /usr/src に解凍しています。)
バナーの変更
OpenSSH のバナー表示を変更するため、/usr/src/openssh-6.0p1/version.h ファイルを書き換えます。
バージョンがわからなくならないように、 SSH_RELEASE にバージョンを記述しておきます。
/* $OpenBSD: version.h,v 1.64 2012/02/09 20:00:18 markus Exp $ */
#define SSH_VERSION "unknown"
#define SSH_PORTABLE "unknown"
#define SSH_RELEASE "OpenSSH_6.0p1"
openssh のコンパイル
configure のオプションに TCP Wrapper 及び PAM の有効化を指定します。インストールするディレクトリは「–prefix」で指定できます。
※ zlib、openssl、pam ライブラリがインストールされている必要があります。
configure でエラーが出る場合は yum でインストールします。
$ yum -y install zlib-devel openssl-devel pam-devel
$ ./configure --prefix=/usr/local/openssh --with-tcp-wrapper --with-pam
$ make && make install
インストール後の設定
シンボリックリンクの作成
インストールが完了したら、実行ファイルへのシンボリックリンクを /usr/bin/ に作成します。
# オリジナルをバックアップ $ cd /usr/bin/ $ rename ssh rpm-ssh ./ssh* $ mv scp rpm-scp $ mv sftp rpm-sftp $ mv slogin rpm-slogin # 新しい OpenSSH へシンボリックリンクを作成 $ ln -s /usr/local/openssh/bin/* /usr/bin/
起動スクリプトの設定
起動スクリプトのサンプルを /etc/rc.d/init.d/ へコピーします。 サンプルはソースディレクトリの contrib/redhat/sshd.init です。
$ cd /usr/src/openssh/contrib/redhat $ cp sshd.init /etc/rc.d/init.d/sshd
以下のコマンドで起動スクリプト内のコマンドパスを、ソースインストール版のものに修正します。
$ sed -i 's/\/etc\/ssh/\/usr\/local\/openssh\//g' /etc/rc.d/init.d/sshd $ sed -i 's/\/usr\/sbin/\/usr\/local\/openssh\/sbin/g' /etc/rc.d/init.d/sshd
PAM 認証用ファイルの設定
こちらはサンプルファイルは使わず、デフォルトのままとしました。
PAM 認証の有効化
/usr/local/openssh/etc/sshd_config を編集し、PAM 認証を有効化します。
# UsePAM no ↓ UsePAM yes
OpenSSH の起動
OpenSSH を起動スクリプトで起動します。
$ /etc/rc.d/init.d/sshd start # 最初の起動時にホストキーが生成されます。 SSH RSA1 ホストキーを作成中: [ OK ] SSH RSA2 ホストキーを作成中: [ OK ] SSH DSA2ホストキーを作成中: [ OK ] sshd 起動中: [ OK ]
問題なく起動したら、chkconfig コマンドで OS 起動時に OpenSSH サーバを起動するよう設定します。
$ chkconfig --add sshd $ chkconfig sshd on