PuTTY を使ったセキュリティ構築法 (お勧め)
FreeBSDでは標準でSSHが導入されている。そのため、ftpd,telnetd,rlogindは起動しない設定がディフォルト値となっている。
これらをr系コマンドと呼び、これを使わず、セキュリティ対策が施されている、s系コマンドを推奨している。
ここでは、SSHを使い、telnet,ftpの実現を試みる。
セキュリティ構築の基本方針を次のように定めた。
- SSH(Secure SHell)とRSA認証を前提とする。
- telnet,rlogin,ftp はデーモンを起動しない。
- SSHを使った接続とする。22 port のみ公開する。
- リモートホストは、UNIX・Windowsとする。
- プレーンテキストでの認証は拒否する。
- 公開鍵は、サーバーでする。
- 鍵ファイルを利用者に渡す手法とする。
標準的なtelnet,ftp はSSHに対応していない。そのためSSH対応のTOOLを用意する必要がある。PuTTY(Free
Win32 Telnet/SSH)が有名である。ここではPuTTYを導入する手順について解説する。
導入するTOOLのリストを示す。
セキュリティを構築するには、サーバー側で行う作業意と、クライアント側で行う作業が必要となる。
最初にサーバー側の設定を行い、その後クライアント側の設定となる。ここでは、その作業の流れを記す。
- SSHサーバの設定をする。
プレーンテキストによる認証拒否などの設定を行う。
- 公開鍵を作成する。
User単位で鍵を作成する。
- 公開鍵を利用者に渡す。
メール(?)などで鍵ファイルを利用者に渡す。
- client側の設定をする。
Tera Term Pro,WinSCP2 などの設定と利用
SSHサーバーの設定は、/etc/ssh/sshd_config で行う。管理者権限で設定を行う。今回は
特に、loginパスワード認証・空のパスワードを禁止・RSA認証を使用に重点を置いた。
Protocol 2 | SSHプロトコル2での接続に限る |
PermitRootLogin no | rootユーザーからのログインを禁止する |
ChallengeResponseAuthentication no | PasswordAuthentication,PermitRootLoginの効果に影響する。
Default は yes のため、これを指定しないと、鍵なしでのログインが可能となってしまうので要注意 |
RSAAuthentication yes | RSA認証を使用できるようにする(SSH1) |
PubkeyAuthentication yes | 公開鍵方式の認証を使用できるようにする(SSH2) |
RhostAuthentication no | rhosts、/etc/hosts.equivの設定を無視する(SSH1) |
IgnoreRhosts yes | rhosts、shostsの設定を無視する(SSH1) |
RhostsRSAAuthentication no | RSAホスト間の認証で.rhosts、/etc/hosts.equivを無視する(SSH2) |
HostbasedAuthentication no | RSAホスト間の認証で.rhostsを無視する(SSH2) |
PermitEmptyPasswords no | 空のパスワードを禁止する |
PasswordAuthentication no | loginパスワード認証を使用しない |
設定が完了したら、rootになってSSHデーモンのsshdを再起動する。
FreeBSD# /etc/rc.d/sshd restart
公開鍵は、ログインユーザー単位で行う。
RSA タイプにrsa を指定するとプロトコルバージョン2を使うこととなる。セキュリティを考えると
このタイプのほうが望ましい。
#su mickey
$ ssh-keygen -t "rsa" [Enter]
Generating public/private rsa1 key pair
Enter file in which to save the key (/home/mickey/.ssh/identity): [Enter]
Created directory '/home/mickey/.ssh
Enter passphrase (empty for no passphrase):*********** [Enter]
Enter same passphrase again:*********** [Enter]
Your identification has been saved in /home/mickey/.ssh/id_rsa
Your public key has been saved in /home/mickey/.ssh/id_rsa.pub
The key fingerprint is:
9b:a9:81:24:7a:df:4c:55:c3:83:96:6a:ed:ce:a9:2e mickey@FreeBSD.micnet.or.jp
$ cd .ssh [Enter]
$ mv id_rsa.pub authorized_keys [Enter]
この場合は、id_rsa というファイルが private 鍵となる。
private 鍵を、ログインユーザーに渡す。
その際、属性をUID,GIDともに読み書きの権限を与える。
メールや、FDなどで直接Windows クライアントに渡す。
サーバーで作成した鍵をPuTTY に取り込むまでを記す。
Step_01 PuTTY のインストール
A Windows-style installer (x86 only) for everything putty-0.53b-installer.exe
をダウンロードし、インストールする。標準的なインストールで特に問題は発生しないため、ここでは説明をしない。
Step_02 private 鍵のインストール
入手したprivate 鍵を、 PuTTY をインストールしたディレクトリにコピーする。
筆者の場合、その下にディレクトリを作成し、鍵の管理を行っている。
Step_03 private 鍵の取り込み
PuTTYgen を起動し、[Load] ボタンを押す。
ファイルの種類に All Files を指定し、サーバーで作成された鍵を指定する。
鍵のパスワードフレーズを聞かれるので、パスワードを入力する。
入力し終えたら、[OK] ボタンを押す。
特に必要はないが、SSH2RSA ボタンを選択する。(気持ちの問題)
[Save private Key] ボタンを押す。
ファイル名を指定し、保存ボタンを押す。
PuTTYgen を終了する。