SSHサーバー(OpenSSH)のインストール
概要:SSHサーバー(OpenSSH)は、Telnet同様にクライアントからサーバーへリモート接続して、遠隔地からサーバーを操作することができるサーバーである。
ただし、Telnetが暗号化しないでそのままデータを送受信するのに対して、SSHでは通信内容を暗号化するため、盗聴されても問題ない。 1. OpenSSHサーバーのパッケージ作成 # yum -y install pam-devel ← opensshのRPM作成に必要なパッケージをインストール # cd /tmp/work # wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-5.3p1.tar.gz ← opensshダウンロード 注:最新版のURLはダウンロードページ [http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/]で確認すること。 # tar zxvf openssh-5.3p1.tar.gz ← openssh展開 # vi openssh-5.3p1/contrib/redhat/openssh.spec ← specファイル編集 # Do we want to disable building of x11-askpass? (1=yes 0=no) %define no_x11_askpass 0 ↓ %define no_x11_askpass 1 ← x11_askpassの無効化 # Do we want to disable building of gnome-askpass? (1=yes 0=no) %define no_gnome_askpass 0 ↓ %define no_gnome_askpass 1 ← gnome_askpassの無効化 %configure \ configure --without-zlib-version-check \ ← 追加(zlibのバージョンチェック無効化) --sysconfdir=%{_sysconfdir}/ssh \ # rm -rf openssh-5.3p1/contrib/aix/ ← RedHat以外のディレクトリを削除 # rm -rf openssh-5.3p1/contrib/hpux/ ← 〃 # rm -rf openssh-5.3p1/contrib/caldera/ ← 〃 # rm -rf openssh-5.3p1/contrib/suse/ ← 〃 # rm -rf openssh-5.3p1/contrib/cygwin/ ← 〃 # rm -rf openssh-5.3p1/contrib/solaris/ ← 〃 # rm openssh-5.3p1.tar.gz ← 既存圧縮ファイルの削除 # tar czvf openssh-5.3p1.tar.gz openssh-5.3p1/ ← openssh展開先ディレクトリ再圧縮 # rm -rf openssh-5.3p1 ← openssh展開先ディレクトリ削除 # rpmbuild -tb --clean openssh-5.3p1.tar.gz ← RPMパッケージ作成 エラー: ビルド依存性の失敗: openssl-devel は openssh-5.3p1-1.i386 に必要とされています krb5-devel は openssh-5.3p1-1.i386 に必要とされています rpmbuildで上記のようなエラーがでた場合はrpmbuildのビルド依存性の失敗を参照。 # yum -y install openssl-devel ← krb5-devel は openssl-develを導入する時に導入される。 # rm -f openssh-5.3p1.tar.gz ← 作成した圧縮ファイルの削除 2. SSHサーバーアンインストール # /etc/rc.d/init.d/sshd stop ← SSHサーバー停止 sshdを停止中: [ OK ] # yum -y remove openssh ← openssh関連パッケージアンインストール 3. SSHサーバーインストール # rpm -Uvh /usr/src/redhat/RPMS/i386/openssh-5.3p1-1.i386.rpm ← 作成したopensshのRPMパッケージをインストール Preparing... ########################################### [100%] 1:openssh ########################################### [100%] # rpm -Uvh /usr/src/redhat/RPMS/i386/openssh-server-5.3p1-1.i386.rpm ← 作成したopenssh-serverのRPMパッケージをインストール # rpm -Uvh /usr/src/redhat/RPMS/i386/openssh-clients-5.3p1-1.i386.rpm ← 作成したopenssh-clientsのRPMパッケージをインストール # rm -f /usr/src/redhat/RPMS/i386/openssh-* ← 作成したRPMを削除 4. SSHサーバー起動スクリプト修正 # vi /etc/rc.d/init.d/sshd ← SSHサーバー起動スクリプト修正
start() { # Create keys if necessary do_rsa1_keygen do_rsa_keygen do_dsa_keygen echo -n $"Starting $prog:" #initlog -c "$SSHD $OPTIONS" && success || failure ← 行頭に#を追加してコメントアウト $SSHD $OPTIONS && success || failure ← 追加 RETVAL=$? [ "$RETVAL" = 0 ] && touch /var/lock/subsys/sshd echo } 5. SSHサーバー起動 # /etc/rc.d/init.d/sshd start ← SSHサーバー起動 sshd を起動中: [ OK ] # chkconfig sshd on ← SSHサーバー自動起動設定 # chkconfig --list sshd ← SSHサーバー自動起動設定確認 sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off ← ランレベル2~5のonを確認 以下はTera Termから操作を行う。 6. SSH鍵方式ログイン設定 7. SSHサーバー設定 # vi /etc/ssh/sshd_config ← SSHサーバー設定ファイル編集
#Protocol 2,1 ↓ Protocol 2 ← SSH2のみで接続を許可 #SyslogFacility AUTH ↓ SyslogFacility AUTHPRIV ← ログを/var/log/secureに記録する※CentOSデフォルトに合わせる #PermitRootLogin yes ↓ PermitRootLogin no ← rootでのログインを禁止 #PasswordAuthentication yes ↓ PasswordAuthentication no ← パスワードでのログインを禁止(鍵方式によるログインのみ許可) #PermitEmptyPasswords no ↓ PermitEmptyPasswords no ← パスワードなしでのログインを禁止 8. chroot設定 # usermod -G wheel centos ← 管理者ユーザー(例:centos)をwheelグループに追加 # vi /etc/ssh/sshd_config ← SSHサーバー設定ファイル編集 以下を最終行へ追加 Match Group *,!wheel ChrootDirectory /home/%u/./ 9. SSHサーバー設定反映 # /etc/rc.d/init.d/sshd reload ← SSHサーバー再起動
sshd を再読み込み中: [ OK ]
注:これ以降鍵方式によるログインしか出来なくなる。 10. chrootユーザー作成 [chroot設定時のみ]
11. SSHアクセス制限 Invalid user fluffy from xxx.xxx.xxx.xxx Invalid user admin from xxx.xxx.xxx.xxx Invalid user test from xxx.xxx.xxx.xxx Invalid user guest from xxx.xxx.xxx.xxx Invalid user webmaster from xxx.xxx.xxx.xxx Invalid user mysql from xxx.xxx.xxx.xxx Invalid user oracle from xxx.xxx.xxx.xxx # echo "sshd:127.0.0.1" >> /etc/hosts.allow ← サーバー自身からのsshへのアクセスを許可 # echo "sshd: 192.168.1." >> /etc/hosts.allow ← 内部(例:192.168.1.XXXからのsshアクセスを許可) # echo "sshd: .ppp.asahi-net.or.jp" >> /etc/hosts.allow ← 外部(例:xxx.ppp.asahi-net.or.jpからのsshアクセスを許可) # echo "sshd: ALL" >> /etc/hosts.deny ← sshへの全てのアクセスを禁止 注:上記では、内部(例:192.168.1.XXX)と外部(例:xxx.ppp.asahi-net.or.jp)からのみ、SSHへのアクセスを許可している。 Last-modified: 2014-05-03 (土) 19:43:07 (3639d)
|