事情があって「PasswordAuthentication yes」なんて設定のサーバがある。おまけに「Port 22」。
最近のブルートフォースアタックの傾向を見ていると、1度アタックを掛けたらIP変えてなんていうパターンばかり。
これだと、BruteForceBlockerを入れていてもキャッチしてくれない。
BruteForceBlockerの名誉のために言っておくと、1回のアタック失敗でフィルタリングしてしまうことも可能。
だけれど、これだとTypoでこっちが引っかかる恐れがありましてね。嫌な時代だなぁとぼやきつつ、いい加減鍵認証にしないと駄目かなと言う事で、FreeBSDでssh鍵認証するメモ。
鍵の生成
先に認証用の鍵をFreeBSD側で作成しておく。
FreeBSD側にログインして「ssl-keygen」を実行。
%ssh-keygen -t "rsa"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/アカウント/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): パスフレーズ
Enter same passphrase again: パスフレーズ再入力
Your identification has been saved in /home/アカウント/.ssh/id_rsa.
Your public key has been saved in /home/アカウント/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx アカウント@hogehoge.jp
The key's randomart image is:
+--[ RSA 2048]----+
| |
| . |
| o . |
| . oE. . |
|=. .. . S |
|*+. . . |
|=o+. . |
|.+=.+ |
|.+.+ o. |
+-----------------+
%
鍵は「/home/アカウント/.ssh」に作成されている。
- id_rsa – 秘密鍵
- id_rsa.pub – 公開鍵
このうち、公開鍵はsshの鍵ファイルに入れておく。
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
「authorized_keys」ファイルには他の公開鍵を記述する事もあるので、”>>”(追記)でリダイレクトすること。
「id_rsa」については、クライアント側にコピーしておく。
sshdの設定その1
FreeBSDのsshdに関する設定ファイルは「/etc/ssh」にあるsshd_config。
一応変更点のみ
#Port 22
Protocol 2
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
RhostsRSAAuthentication no
HostbasedAuthentication no
IgnoreRhosts yes
#PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
この時点では「PasswordAuthentication」をコメントアウトしておく。こうしておけばとりあえずパスワード認証も通る。
なるべくならポート番号も変えておくほうが無難。変更する場合はpf等の設定も予め変更しておく。
※環境によっては必要最低限のポートしかあいてない事があるので、迂闊にポート番号を変更すると困る事もあるので注意。
sshd_configの編集が終わったら
/etc/rc.d/sshd restart
してsshdを再起動する。
秘密鍵の取り込み(PuTTY Key Generatorを使用)
FreeBSDで生成した秘密鍵をPuTTYで使用するには、「PuTTY Key Generator(PUTTYGEN.EXE)」を使用する。
※PUTTYGEN.EXEはPUTTY.EXEと同じフォルダにあるはず。
PuTTY Key Generatorを起動すると上記のようなウィンドウが表示される。
ここで「Load(読込)」ボタンをクリックして、FreeBSDで作成した秘密鍵を読み込む。
読み込んだときに
このようなメッセージが表示される場合がある。
自環境ではPuTTYごった煮版(putty-0.60-JP_Y-2007-08-06)を使用したときに上記メッセージが表示されたが、この場合は新しいPUTTYGEN.EXEをダウンロードして使用すれば良い。
読み込みに成功すると
パスフレーズの入力を求められる。
FreeBSDで鍵を生成する時に入力したパスフレーズをセットして「OK」ボタンをクリックする。
パスフレーズが正しいければPuTTY Key Generatorのメイン画面が表示されるので「Save private key(秘密鍵の保存)」をクリックして秘密鍵を保存する。
「Key comment(鍵のコメント)」は適当に変更しても構わない。鍵認証が行われる際に表示されるのでわかりやすい名称に変更しておくと良いかもしれない。
PuTTYで鍵認証を使用する
PuTTYで鍵認証を行うように設定を行う。
PuTTY設定画面のカテゴリ内で「Connection→SSH→Auth(接続→SSH→認証)」を選択する。
「Private key file for authentication(認証のためのプライベートキーファイル)」の場所の「Browse(参照)」ボタンをクリックして先程PuTTY Key Generatorで作成した暗号鍵ファイルを指定する。
この状態でFreeBSD側に接続した際、コンソール上で
login as: アカウント
Authenticating with public key "imported-openssh-key"
Passphrase for key "imported-openssh-key": パスフレーズ
のようなやり取りが出来れば鍵認証が出来ている事になる。
sshdの設定その2
鍵認証が可能になったことが確認できたらパスワード認証を中止する。
再度sshd_configを編集し、「PasswordAuthentication no」のコメントアウトを外して、
/etc/rc.d/sshd restart
してsshdを再起動する。
sshdの再起動後、PuTTYからパスワード認証でアクセスして
のように拒絶されれば設定はOK。
WinSCPの設定
先程PuTTY Key Generatorで作成した秘密鍵はWinSCPでも使用できる。
WinSCPログイン画面の「秘密鍵」の部分で作成した秘密鍵を設定する。
ログインすると
のようにパスフレーズの入力を求められるようになる。
…
秘密鍵がないとログインできない環境になって、ログをにらおちする楽しみが減って残念。
おまけにり面倒だし(汗)。
コメント