SSH + 鍵認証

自宅 Linux さんのセキュリティ設定メモ。

SSH 編。
公開, 秘密鍵をつくってパスワードによるログインを止める。
SSH ブルートフォースアタック対策の一環。
参考:総当たり攻撃

環境:
サーバ CentOS 5.2 ( IP 192.168.11.30 )
クライアント iMac 10.5.6

クライアント:鍵を作成。

  
$ ssh-keygen -t dsa  
Generating public/private dsa key pair.  
Enter file in which to save the key (/Users/name/.ssh/id_dsa): /Users/name/.ssh/linux_dsa   
Enter passphrase (empty for no passphrase): ちゃんと入力する。  
Enter same passphrase again: もちろんここも。  

クライアント:公開鍵と秘密鍵が作られたことを確認。

  
$ cd ~/.ssh  
$ ls  
linux_dsa linux_dsa.pub  

クライアント:SSH 時に認証される秘密鍵のありかを設定。

  
$ cd ~/.ssh  
$ vi config  
Host 192.168.11.30  
IdentityFile ~/.ssh/linux_dsa  

クライアント:公開鍵をサーバにコピー

  
$ scp linux_dsa.pub 192.168.11.30:  

サーバー:ログインして、認証ファイルを作る

  
$ ssh 192.168.11.30   # サーバにログイン  
$ mkdir .ssh  
$ cat linux_dsa.pub >> .ssh/authorized_keys  
$ rm linux_dsa.pub  
$ chmod 600 .ssh/authorized_keys  
$ chmod 700 .ssh  

サーバー:root になって、SSH の設定を変更

  
$ su -  
# vi /etc/ssh/sshd_config  
PermitRootLogin no  # ルートでログインさせない。  
PasswordAuthentication no  # パスワードでログインさせない(鍵認証のみ)  
PermitEmptyPasswords no  # 空パスワードを許さない  
  
# /etc/init.d/sshd reload  
sshd を再読み込み中:                                       [  OK  ]  

サーバー:ローカルPCからのみ SSH 接続を許可

  
# vi /etc/hosts.allow  
sshd: 127.0.0.1  # ループバックを許可  
sshd: 192.168.11.  # ローカルPCを許可  
  
# vi /etc/hosts.deny   
sshd: ALL  # 基本全員を無許可  

クライアント:SSH 接続を試す

  
$ ssh 192.168.11.30  

接続できたら成功なり。

参考:SSHサーバー構築