SSHサーバー構築(OpenSSH)

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 ← ダウンロードしたファイルを削除


2017-5-8

コメントを残す