SSHサーバーは、Telnet同様にクライアントからサーバーへリモート接続して、遠隔地からサーバーを操作することができるようにするためのサーバー。
ただし、Telnetが暗号化しないでそのままデータを送受信するのに対して、SSHでは通信内容を暗号化するため、通信内容を盗み見られても問題ない。
ここでは、内部からだけではなく外部からも安全にサーバーにリモート接続できるようにするため、鍵方式によるログインのみを許可することにより、クラッカーによるパスワードアタックで不正にSSHサーバーへログインされてしまわないようにする。
また、SSHサーバーへの接続方式にはSSH1とSSH2があるが、より安全なSSH2による接続のみ許可することとする。
さらに、SSHログインしたユーザーが自身のホームディレクトリ以外を参照できないようにする。
なお、SSHサーバーを外部に開放せず、内部ユーザーも信頼できる場合は、SSHサーバーの設定はデフォルトのままで、パスワード方式によるログイン方式でもよい。
(1)Telnetサーバーインストール
OpenSSHをインストールするのにSSHサーバーを削除する必要があるが、SSHサーバーを削除してしまうとWindowsからリモート接続できなくなってしまうので、代替手段として一時的にTelnetでWindowsからリモート接続できるようにする。
[root @ホスト名 ~]# yum -y install telnet-server ← Telnetサーバーインストール
[root @ホスト名 ~]# chkconfig telnet on ← Telnetサーバー有効化
[root @ホスト名 ~]# /etc/rc.d/init.d/xinetd restart ← Xinetd再起動(Telnetサーバー起動)
(2)Telnetサーバーへログイン
TeraTermでTelnetサーバーへログインする。
「ホスト」⇒サーバーIPアドレス
「サービス」⇒Telnet
「OK」ボタン押下
login: ← ユーザー名応答
Password: ← パスワード応答(表示はされない)
[一般ユーザー名 @ホスト名 ~]# ← Telnetでログインした
[一般ユーザー名 @ホスト名 ~]# su – ← rootにスイッチ
Password: ← rootパスワード応答(表示はされない)
[root @ホスト名 ~]# ← rootになった
※Telnetサーバーへはrootで直接ログインできないので、管理者用の一般ユーザーでログインしてrootにスイッチする
(3)SSHサーバーアンインストール
OpenSSHを新規にインストールするため、既にインストールされて起動しているSSHサーバーをアンインストールする。
[root @ホスト名 ~]# /etc/rc.d/init.d/sshd stop ← SSHサーバー停止
[root @ホスト名 ~]# yum -y remove openssh ← openssh関連パッケージアンインストール
(4)SSHサーバーインストール
CentOS標準のOpenSSHはバージョンが古くchroot機能が含まれていないため、本家からソースを入手してRPMパッケージを作成してインストールする。
[root @ホスト名 ~]# yum -y install pam-devel ← opensshのRPM作成に必要なパッケージをインストール
[root @ホスト名 ~]# wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-5.3p1.tar.gz ← opensshダウンロード
※最新版のURLではありません。
[root @ホスト名 ~]# tar zxvf openssh-5.3p1.tar.gz ← openssh展開
[root @ホスト名 ~]# vi openssh-5.3p1/contrib/redhat/openssh.spec ← specファイル編集
%define no_x11_askpass 0
↓
%define no_x11_askpass 1 ← x11_askpassの無効化
%define no_gnome_askpass 0
↓
%define no_gnome_askpass 1 ← gnome_askpassの無効化
%configure ¥
Configure –without-zlib-version-check ¥ ← 追加(zlibのバージョンチェック無効化)
–sysconfdir=%{_sysconfdir}/ssh ¥
[root @ホスト名 ~]# rm -rf openssh-5.3p1/contrib/aix/ ← RedHat以外のディレクトリを削除
[root @ホスト名 ~]# rm -rf openssh-5.3p1/contrib/hpux/ ← RedHat以外のディレクトリを削除
[root @ホスト名 ~]# rm -rf openssh-5.3p1/contrib/caldera/ ← RedHat以外のディレクトリを削除
[root @ホスト名 ~]# rm -rf openssh-5.3p1/contrib/suse/ ← RedHat以外のディレクトリを削除
[root @ホスト名 ~]# rm -rf openssh-5.3p1/contrib/cygwin/ ← RedHat以外のディレクトリを削除
[root @ホスト名 ~]# rm -rf openssh-5.3p1/contrib/solaris/ ← RedHat以外のディレクトリを削除
[root @ホスト名 ~]# tar czvf openssh-5.3p1.tar.gz openssh-5.3p1/ ← openssh展開先ディレクトリ再圧縮
[root @ホスト名 ~]# rm -rf openssh-5.3p1 ← openssh展開先ディレクトリ削除
[root @ホスト名 ~]# rpmbuild -tb –clean openssh-5.3p1.tar.gz ← RPMパッケージ作成
※rpmbuildが「ビルド依存性の失敗」で異常終了した場合
[root @ホスト名 ~]# rpmbuild -tb –clean courier-authlib-0.60.2.tar.bz2
エラー: ビルド依存性の失敗:
openldap-devel は courier-authlib-0.60.2-1.fc8.i386 に必要とされています
rpmbuildで上記のようなエラーメッセージが出力された場合は、該当RPMを作成するのに必要なパッケージがインストールされていないことが原因なので、不足しているパッケージをyumでインストールしてからrpmbuildを再実行する。
上記例の場合はcourier-authlibのRPM作成に必要なopenldap-develがインストールされていないことを示しているので、yum -y install openldap-develでopenldap-develをインストールしてから
rpmbuildを再実行すればよい
[root @ホスト名 ~]# rpm -Uvh /usr/src/redhat/RPMS/i386/openssh-5.3p1-1.i386.rpm ← 作成したopensshのRPMパッケージをインストール
[root @ホスト名 ~]# rmp -Uvh /usr/src/redhat/RPMS/i386/openssh-server-5.3p1-1.i386.rpm ← 作成したopenssh-serverのRPMパッケージをインストール
[root @ホスト名 ~]# rpm -Uvh /usr/src/redhat/RPMS/i386/openssh-clients-5.3p1-1.i386.rpm ← 作成したopenssh-clientsのRPMパッケージをインストール
[root @ホスト名 ~]# rm -f /usr/src/redhat/RPMS/i386/openssh-* ← 作成したRPMを削除
[root @ホスト名 ~]# rm -f openssh-5.3p1.tar.gz ← ダウンロードしたファイルを削除