OpenSSH

今日はOpenSSH。暗号化通信ね。まぁTELNETは平文で送られるからやめようねってことで。

まずはインストールの確認
#rpm -qa | grep ^openssh ⇒ 先頭がopensshのrpmパッケージの検索。

アップグレードされてたら
#rpm -Fvh /ディレクトリ/openss* ⇒ Fvh 新しいバージョンだったら上書き。
依存ファイルもあるので、openss*で複数インストール。

OpenSSHサーバーの起動
#/etc/init.d/sshd start

設定ファイル
/etc/ssh/sshd_config ⇒ SSHサーバー用
可能であれば、#port_22を変更するのがいい。
自動的にポート22へ接続しようとするツールがよくあるので。

/etc/ssh/ssh_config ⇒ クライアント用
ファイル変更後はサーバーリスタート。

SSHサーバーに接続
$ssh ユーザー名@接続先ホスト
ex
$ssh test@abc.net
ポートが変更されている場合、
$ssh -p ポート test@abc.net

ホスト認証
最初の接続時、接続先ホストを承認するか聞かれるので、yes。
そうすると、ホストから認証鍵が~/.ssh/known_hostsファイルに保存される。

ホスト認証の次はユーザー認証
/etc/passwd(/etc/shadow/)に保存されているパスワードを使って認証する。
つまりホストにはあらかじめ接続するユーザーを作成していなければいけない。

SSHサーバーへのアクセス制限

/etc/hosts.allow
/etc/hosts.deny
へ記述。
SSHサーバー自体はアクセス制限の機能を持っていないので、ファイルで管理する。

ex.
/etc/hosts.allow
sshd : 172.16.1.1/255.255.0.0 とか
sshd : abc.net とか
sshd : 192. とか
sshd : 127. とか ← ローカルを許可
まとめて
sshd : 172.16.1.1/255.255.0.0,abc.net,192.,127. とか

/etc/hosts.deny
sshd:all とか
ALL:ALL

注意、denyファイルに該当しなければ許可されてしまうので、全部拒否した方が無難。

公開鍵認証

クライアントに公開鍵と秘密鍵を作成する。
$ssh-keygen -t dsa ⇒ dsa方式で鍵作成
$ssh-keygen -t rsa ⇒ rsa方式で鍵作成
保存先など、特に指定しなければ
パスフレーズを聞いてくるので、忘れないように入力。
認証のとき、秘密鍵を有効にする際に使われます。
で成功すると
~/.ssh/id_dsa ⇒ 秘密鍵
~/.ssh/id_dsa_pub 公開鍵
が作成される。

注意 id_dsaのパーミッションパーミッション600で作成されるが、まちがって削除しないように400に変更しておくといい。

次に、なんらかの方法でサーバーに公開鍵を保存する。
最初に接続できた時点で、scpやsftpなどを使ったり、フロッピーやUSBで直接サーバーに持っていく。
通常はログインするユーザーのホームディレクトリ以下に/.ssh/をパーミッション700で作成し、保存する。
んで、
$ cat ~/.ssh/id_isa_pub >> ~/.ssh/authorized_keys2
で追加していく。このファイルも664⇒644にしておくといい。

次回接続すると、パスフレーズを聞いてくるので、先ほど入力したフレーズを入力して認証。
成功すれば接続完了。

公開鍵認証の方が手間はかかるが、ホストのなりすましを防ぐことができていい。