トップページ -> インストール,設定,利用 -> Linux で各種サーバを設定,運用 -> SSH サーバの設定
[サイトマップへ], [サイト内検索へ]

SSH サーバの設定

グローバルIPにつなぐマシンで ssh を使うときなどは、セキュリティ上の設定が絶 対に必要です。そのための必須といえる設定項目を下記にまとめています。

rlogin, rsh, telnet, ftp などは、パスワードが暗号化されずにネットワークを流れる ので使用しない」という習慣を付けた方がよいです。 rlogin, rsh, telnet, ftp の機能は ssh で代用できますし、パスワードが暗号化されずに 流れるという心配はなくなります。 さらに、SSH の公開鍵暗号の機能を使うと、パスワードが ネットワークを流れることなくログインできるようになり、より安心です。

設定内容

設定内容は次の通り、案を定める

事前に調べておく事項

  1. 自分のホームディレクトリ

    (以下、ホームディレクトリは「$HOME」のように書く)


iptables に関する参考情報

Ubuntu の場合の設定例

sudo ufw enable
sudo ufw allow 22
sudo ufw allow 80
sudo ufw default DENY
sudo ufw limit ssh

ユーザ名、グループ名での制限

  1. グループ名での制限を行うために、 /etc/ssh/sshd_config に「AllowGroups ...」の行を追加します。
    vi /etc/ssh/sshd_config
    ----
    AllowGroups wheel
    
  2. ユーザ名での制限

    ユーザ名での制限を行うために、 /etc/ssh/sshd_config に「AllowUsers ...」の行を追加します。

    vi /etc/ssh/sshd_config
    ----
    AllowUsers hoge1 hoge2
    
  3. /etc/group

    /etc/group の設定を忘れない。 /etc/group の wheel の行に、ログインさせたいユーザ hoge1, hoge2 が含まれるように設定する

    vi /etc/group
    

IP アドレスでの制限

PAM 制御で、 SSH を使えるIP アドレスでの制限を行ないます。 (PAM 制御で、ユーザ名、グループ名での制限も書くことはできますが、ユー ザ名、グループ名については sshd_config ファイルで設定することにしています)。

  1. /etc/pam.d/sshdファイル

    まず、pam_access.so ファイルを探します

    echo /lib*/security/pam_access.so
    

    見つかったら、そのファイル名を使って、「account required /libほにゃらら/security/pam_access.so」という 1行を、/etc/pam.d/sshd に書きます。

    vi /etc/pam.d/sshd
     # 次のような1行を追加
    ----
      # 32 ビットのマシンでは次のようになります。
    account required /lib/security/pam_access.so
      # 64 ビットのマシンでは次のようになります。
    account required /lib64/security/pam_access.so
      # どちらか 1行を書くことになります。
    
  2. /etc/security/access.conf

    ログイン許可をするユーザ名, IP アドレスの範囲を記述する (IP アドレス, ネットワークアドレスを書くときは、末尾に 「.」 が必要なので「127.0.0.1.」は間違いではない)

    vi /etc/security/access.conf
     # 次のように記述する
    -:ALL:ALL EXCEPT LOCAL 127.0.0.1. XXX.YYY. AAA.BBB.CCC.
    +:ALL:LOCAL 127.0.0.1. XXX.YYY. AAA.BBB.CCC.
    

パージョン 2 でのみ接続を許可

バージョン1 での接続ができないように設定する方法です。

vi /etc/ssh/sshd_config
 # 「# Protocol ..」とある行を探し、次のように書き直す(# は付けない).
Protocol 2

/etc/hosts.allow

TCP wrapper の設定ファイルである /etc/hosts.allow を確認します。

ネットワークアドレスの末尾に付ける「.」は忘れないようにしましょう)。

【設定例】

ALL: LOCAL XXX.YYY.: ALLOW
sshd: LOCAL XXX.YYY. AAA.BBB.CCC.: ALLOW
gdm: LOCAL XXX.YYY. AAA.BBB.CCC.: ALLOW
ALL: ALL: DENY

動作チェック

以上の設定の後、念のため「ログインできるか?」のチェックなどをしておきましょう。 チェックするために、SSH サーバマシンでは、以下の手順で、sshd (=SSH サーバ) を再起動します。 (sshd_config ファイルを再度読み込ませるため)

/etc/rc.d/init.d/sshd restart

この後、クライアントマシンからログインできることの確認を行ないます。


(オプション) PAM 制御以外の方法でユーザ名, IP アドレスでの制限

個々のIPアドレスでの制限を行ないたい場合には、 /etc/ssh/sshd_config に「ListenAddress ...」の行を追加します。 IPアドレスの「範囲」は書けません。

vi /etc/ssh/sshd_config
----
ListenAddress 127.0.0.1
ListenAddress XXX.YYY.ZZZ.WWW

公開鍵暗号方式

公開鍵暗号方式による認証を行なうように設定します。

要するに、1度、SSH サーバマシンでの設定を済ませておけば、 あとは、各ユーザは、 自分のマシン(SSH サーバマシンでは無い)で、次の2コマンドを実 行するだけ(接続したい相手のマシンが複数あるときは、2行目だ けを複数回繰り返す)で、公開鍵暗号方式が使えるようになります。 是非、一般ユーザにも宣伝しましょう。

ssh-keygen -t rsa
cat .ssh/id_rsa.pub | ssh <自分のユーザ名>@<接続したい相手のマシン名またはIPアドレス> 'cat >>$HOME/.ssh/authorized_keys'

詳細を以下、説明します。

たとえ暗号化されているといっても、パスワードが毎回ネットワークを流れるのは心配,という問題があります. 前もって,公開鍵を作って,接続したい SSHサーバマシンに登録しておき, この公開鍵を使って認証するという公開鍵暗号方式を使うと,「パスワードが ネットワークを流れることなくログイン」ができます.

なお、以下の手順は、バージョン2 だけを使う場合(つまり、バージョン1を使う人 はいない)の手順です。 なお、バージョン2 は、DSA 暗号方式になり、バージョン1 の RSA 暗号方式 よりは安全だとされています

SSH サーバマシンでの設定

  1. /etc/ssh/sshd_config

    sshd の設定ファイル /etc/ssh/sshd_config について、下記の設定を行なう

    まず、HostKey の行を、次のように記述します。

    vi /etc/ssh/sshd_config
     # 次のような行を含むこと(先頭に「#」が付いていたら外す) 
    ----
    HostKey /etc/ssh/ssh_host_dsa_key
    

    次に、RSA 公開鍵暗号方式を使えるように設定します。

    1. PubkeyAuthentication: DSA の公開鍵暗号方式 → yes
      DSA の公開鍵暗号方式を使う
    2. RSAAuthentication: RSA の公開鍵暗号方式 → no
      バージョン1の抑止
    vi /etc/ssh/sshd_config
     # PubkeyAuthentication の行を yes
     # RSAAuthentication の行を no
    
  2. sshd の再起動

    Cent OS ならば、

    /etc/rc.d/init.d/sshd restart
    

    これで、SSHサーバマ シンでの設定は終了です。

ユーザマシンでの設定

以下の操作は、各ユーザが、自分のマシンで、一般ユーザの権限で実行します。


(参考) SSHとは

rlogin, rcp などは、パスワードが平文で送られるだけでなく、下記の問題が ある。

SSH をインストールすると,これらr系のコマンドは,より secure なものに置き換える. 但し,ユーザの .ssh 以下が読めたり,書き換えられると,ssh での防御が破られる.過信はしないこと.


まとめ

公開サーバであっても、ssh でリモートからログインできるように設定するこ とは多いですが、 グローバルIPを持つマシンは、常に外部からの攻撃を受けますので、ssh 関係 の設定を適切に行う必要があります。


本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.

問い合わせ先: 金子邦彦(かねこ くにひこ) [image]