SSHサーバー構築(OpenSSH)

最終更新日: 2014.02.19

<<トップページ <<新着情報 <<サイト内検索 <<CentOSで自宅サーバー構築 <<Scientific Linuxで自宅サーバー構築

■概要

SSHサーバーは、Telnet同様にクライアントからサーバーへリモート接続して、遠隔地からサーバーを操作することができるようにするためのサーバー。
ただし、Telnetが暗号化しないでそのままデータを送受信するのに対して、SSHでは通信内容を暗号化するため、通信内容を盗み見られても問題ない。
ここでは、内部からだけではなく外部からも安全にサーバーにリモート接続できるようにするため、鍵方式によるログインのみを許可することにより、クラッカーによるパスワードアタックで不正にSSHサーバーへログインされてしまわないようにする。
また、SSHサーバーへの接続方式にはSSH1とSSH2があるが(SSH1とSSH2の違いについて)、より安全なSSH2による接続のみ許可することとする。
さらに、SSHログインしたユーザーが自身のホームディレクトリ以外を参照できないようにする。

なお、SSHサーバーを外部に開放せず、内部ユーザーも信頼できる場合は、SSHサーバーの設定はデフォルトのままで、パスワード方式によるログイン方式でもよい。


■管理者ユーザー鍵方式ログイン設定

SSHサーバーを鍵方式によるログイン方式のみ許可するように設定する前に、管理者ユーザーを鍵方式ログインできるようにする⇒WindowsからSSHサーバーへリモート接続(Poderosa鍵方式ログイン編)参照

■SSHサーバー設定

(1)SSHサーバー設定
[root@fedora ~]# vi /etc/ssh/sshd_config ← SSHサーバー設定ファイル編集
#Protocol 2,1
↓
Protocol 2 ← SSH2のみで接続を許可

#PermitRootLogin yes
↓
PermitRootLogin no ← rootでのログインを禁止

#PasswordAuthentication yes
↓
PasswordAuthentication no ← パスワードでのログインを禁止(鍵方式によるログインのみ許可)

#PermitEmptyPasswords no
↓
PermitEmptyPasswords no ← パスワードなしでのログインを禁止

(2)chroot設定
管理者用ユーザー(wheelグループ所属ユーザー)を除いて、一般ユーザーが自身のホームディレクトリ以外を参照できないようにする。
[root@fedora ~]# usermod -G wheel fedora ← 管理者ユーザー(例:fedora)をwheelグループに追加

[root@fedora ~]# vi /etc/ssh/sshd_config ← SSHサーバー設定ファイル編集
以下を最終行へ追加
Match Group *,!wheel
        ChrootDirectory /home/%u/./

■SSHサーバー再起動

(1)SSHサーバー再起動
[root@fedora ~]# /etc/rc.d/init.d/sshd restart ← SSHサーバー再起動
sshdを停止中:                                              [  OK  ]
sshdを起動中:                                              [  OK  ]

(2)ポート22番のOPEN
ルーター側の設定でポート22番をOPENする。
※ルーターの設定は各ルーターのマニュアルまたはメーカー別ルーターポート開放手順を参照

ポートチェック【外部からポート開放確認】で「host名」にサーバー名(例:fedorasrv.com)、「port番号」に22と入力して「ポートチェック」ボタン押下し、「ホスト=fedorasrv.com ポート=22 にアクセスできました。」と表示されることを確認。

■chrootユーザー作成※chroot設定時のみ

(1)chrootユーザー作成スクリプト作成
[root@fedora ~]# mkdir -p ~/bin ← chrootユーザー作成スクリプト格納ディレクトリ作成

[root@fedora ~]# vi ~/bin/chroot-useradd ← chrootユーザー作成スクリプト作成※


[root@fedora ~]# chmod u+x ~/bin/chroot-useradd ← chrootユーザー環境作成スクリプトに実行権限付加

(2)chrootユーザー作成
ホームディレクトリより上層へのアクセスを禁止するユーザー(ここではfedorauserとする)の作成
[root@fedora ~]# chroot-useradd fedorauser ← ユーザー作成
Changing password for user fedorauser.
新しいUNIX パスワード: ← ユーザーパスワード応答
新しいUNIX パスワードを再入力してください: ← ユーザーパスワード応答(確認)
passwd: all authentication tokens updated successfully.

■chrootユーザー鍵方式接続設定※chroot設定時のみ

chrootユーザー用の鍵ペア作成、公開鍵セットアップを行う。⇒WindowsからSSHサーバーへリモート接続(Poderosa鍵方式ログイン編)参照

■chrootユーザー確認※chroot設定時のみ

chrootユーザーでSSHサーバーにログインする。
-bash-3.2$ pwd ← ホームディレクトリが/(ルート)になっているかpwdで確認
/ ← ホームディレクトリが/(ルート)になっている(これ以上、上層へ移動できない)

-bash-3.2$ su - ← rootになれるか確認
-bash: su: command not found ← rootになれない

■SSHアクセス制限

SSHでは、ユーザー名とパスワードをランダムにかえてログインを連続試行してくる攻撃ツールが出回っているため、サーバーを一定期間運営していると以下のようなログが大量に記録されるようになる。
当サイトではパスワードによる認証は許可していないのでログインされてしまうことはないが、ログが大量に記録されて煩わしいので、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

[root@fedora ~]# echo sshd:127.0.0.1 >> /etc/hosts.allow ← サーバー自身からのsshへのアクセスを許可

[root@fedora ~]# echo "sshd: 192.168.1." >> /etc/hosts.allow ← 内部(例:192.168.1.XXXからのsshアクセスを許可)

[root@fedora ~]# echo "sshd: .ppp.asahi-net.or.jp"  >> /etc/hosts.allow ← 外部(例:xxx.ppp.asahi-net.or.jpからのsshアクセスを許可)

[root@fedora ~]# echo "sshd: ALL" >> /etc/hosts.deny ← sshへの全てのアクセスを禁止
※上記では、内部(例:192.168.1.XXX)と外部(例:xxx.ppp.asahi-net.or.jp)からのみ、SSHへのアクセスを許可している




▲このページのトップへ戻る

LPIロゴ Copyright© 2004-2017 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします