公開日: 2012年8月10日 12:21:48
最終更新: 2012年9月22日 13:31:36

OpenSSHのバナーを隠す

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 に解凍しています。)

ftp://ftp.kddlabs.co.jp/OpenBSD/OpenSSH/portable/openssh-6.0p1.tar.gz
$ tar -zxvf openssh-6.0p1.tar.gz -C /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