26.SSHで暗号化通信♪(2003/01/19)
26.1.Telnetいらずの環境作り
えー、いきなりですが、前回(2003/1/5)の設定のお話に、少し追加事項があります。
hostsの設定とresolv.conf の設定。
一応、追加しときました。(忘れてたんで)
さて、本題。
Telnetってのは、特に暗号化されることもなく、入力した内容が平文で流れているので、危険極まりないです。
そこで、何処ぞの偉い人は考えました。
暗号化じゃ!!と。(すいません、勝手に推測しています)
SSHは、パスワードやデータを暗号化して流すので、安全(なはず)です。
では、実際に設定しましょう。
Vineにはあらかじめインストールされているので、インストール作業は不必要です。
SSHの設定は、/etc/ssh/sshd_config をいじりませう。
というわけで、設定を変更したところをば。
〜/etc/ssh/sshd_config〜
AllowUsers hoge ← ユーザ hoge にだけ接続を許可
MaxStartups 2:50:5 ← SSHデーモンへの認証要求数を意味する。
この設定では、”2”つまでの接続要求を受け付け、
それ以降の要求を”50”%の割合で拒否し、
さらに要求が増え続けて”5”つを超えると以降すべてを拒否するという意味
PermitRootLogin no ← rootでのログインを拒否
PasswordAuthentication no ← ユーザパスワードでのログインを拒否
PermitEmptyPasswords no ← パスワードが設定されていないユーザの空パスワードでのログインを拒否
|
こんなところでしょうか?
とりあえず、赤字で簡単に説明。
アッ、ちなみに許可しているユーザは hoge なんかじゃないですよぉ〜。
んじゃ、次。
設定が終わったら、鍵を作りましょう。
PasswordAuthentication no でユーザパスワードでのログインを拒否しているので、RSA鍵がないとログインできません。
作り方は、自分のユーザでログインして、
$ ssh-keygen
でOK。
オプションを入れろ!みたいなことを言われたら、
$ ssh-keygen -t rsa1
としましょう。
今回はSSH2ではなくSSH1なので、rsa1で鍵を作ります。
$ ssh-keygen -t rsa1
Enter file in which to save the key (/home/hogehoge/.ssh/identity): ← 秘密鍵のファイル名を設定(そのままEnterでOK)
Enter passphrase: ← パスフレーズ入力
Enter the same passphrase again: ← 再度パスフレーズ入力
|
この後は、public key がどーだこーだと言われて、公開鍵(identity.pub)と秘密鍵(identity)が作成されたとの表示が出ます。
で、RSA認証を行なうために、公開鍵を ~/.ssh/authorized_keys へ登録しませう。
$ cat ~/.ssh/identity.pub > ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
|
はい、サーバ側の準備完了です。
次は、クライアント側の準備です。
SSHクライアントはTera Term Pro+TTSSHがめっちゃ便利です。
ていうか、コレを使っとき。
これらは、以下でダウンロード可能。
まっ、簡単に説明すると、
- Tera Term Proをインストール
- TTSSHをインストール(インストールというより、解凍してTera Term Proをインストールしたフォルダにコピー)
- 各日本語化ファイルをTeraTermとTTSSHをインストールしたフォルダーにコピー
- あとは、ttssh.exe から起動させて、秘密鍵(identity)を登録する([設定]→[SSH認証]→[RSA鍵を使う]を選択、以下画像より)
てな感じ。
秘密鍵(identity)は、先ほど ssh-keygen で作ったヤツを ftp なりでクライアントPCに置いときましょう。
詳しい設定は、こちらのページが参考になるでしょう。
あとは、ttssh.exe から起動して、SSH認証画面が出てくるので、ユーザ名と鍵を作るときに入力したパスフレーズでログインできましゅ。(下記画面)
はい、これでバッチリです。
もうTelnetなんて要りませんね。
サービスを止めちゃいましょう。
Vineでは、Telnetは tcp_wrapper で監視されているので、/etc/inetd.conf のTelnetの行を#でコメントアウトしませう。
後は、忘れずに inetd を再起動させときましょう。
26.2.ポートフォワーディングで、FTPやPOPも暗号化♪
正直、これが本題です。
出張すると決まった以上、外部から更新することになります。
かといって、FTPポートを開けるのは、非常に恐いです。(ていうか、嫌です)
メールも、webmaster宛のメールの確認はやりたいです。
しかし、セキュリティの問題もあり、開けるポートはSSHオンリーにしたい、と。
ポートフォワーディングを使うと、SSHのコネクションを使ってFTPやPOPも暗号化通信できるようになります。
で、このポートフォワーディングなんだけど、SSHサーバと接続されてないと使えません。
なので、Tera Term Pro + TTSSH で接続されているときに可能になります。
んじゃ、サーバ側の設定から。
FTPサーバはProftpd なんで、/etc/proftpd.conf を編集しませう。
編集といっても、PASVモードで使用するポートを限定するための編集だす。
〜/etc/proftpd.conf〜
AllowForeignAddress On
PassivePorts 10021 10025
|
このような記述を追加することで、全ての外部ホストからの接続で 10021 - 10025までのポートしかPASVモードで利用しないことになります。
この 10021 - 10025 というポートは適当なんだけど、既にサービスで使われていないようなポートを選ぶことがキモです。
次は、hostsファイルの設定。
サーバの正式名が hogehoge.co.jp ならば、
127.0.0.1 hogehoge.co.jp
があるかどうかを確認。
つまりサーバ側で hogehoge.co.jp = 127.0.0.1 と見えるかどうか、ってこと。
ウチは、ashiyu.no-ip.com なんで、以下のように設定。
〜/etc/hosts〜
127.0.0.1 localhost ashiyu.no-ip.com
192.168.1.2 junkserver junkserver
|
127.0.0.1 で localhost も追加してるのは、LAN内でもサービスを使用するため。
これ、ちょっと前に家に帰ったとき、プリンタ使えなくて困ったのよ。(というわけで、必須)
それにしても、イマイチ、hostsファイルの設定って訳分からないのよね…。
んじゃ、最後。
SSHをtcp_wrapper 経由で起動させていると、hosts.deny と hosts.allow ファイルでアクセス制限することができます。
hosts.deny に、
ALL:ALL
で、外部からの接続すべてを禁止し、hosts.allow に、
sshd: .***.co.jp
で、.***.co.jp からの接続のみを許可。
あっ、ちなみにオレはやってないよ。(爆)
tcp_wrapper 経由で起動させちゃうと、クライアントからの接続要求があったときに鍵を生成するため、loginに時間がかかっちゃうもん。
実際、Vineでは、デフォルト状態だとsshdをデーモンプロセスで起動するようになってるしね。
まっ、心配性な人、ヒットマンに狙われている人はきっちりしといたほうがいいかも。
では、クライアント側の設定をば。
これ、簡単に書いてますけど、実際はこのクライアント側の設定のせいで、しばらくポートフォワーディングによるFTP接続が出来んかった。
要は、10021 - 10025 までのポートしかPASVモードで使用しないので、そのポートをashiyu.no-ip.com にフォワードするようにしてたんだけど、
実際は、21ポートもフォワードさせないと、うまく動かないのよね。
それがわかるまで、WinSCP を使ってしのいでました。(ToT)
それじゃ、TTSSHの設定なんだけど、[設定]→[SSH転送]を選び、ポート転送を行なうポートを編集しましょう。
で、実際編集した結果はこんな感じ。
ローカルの10021 - 10025ポートと21ポートをashiyu.no-ip.com の同ポートへ転送。(FTP)
ローカルの110ポートと25ポートをashiyu.no-ip.com の同ポートへ転送。(POP、SMTP)
これで、メールもFTPもSSH経由で通信できるようになります。
イェイ、イェイ♪
あとは、FTPソフトとメールソフトの設定なんだけど、FTPソフトはPASVモードが設定できるヤツが必要です。
フリーだと、FFFTP が素敵です。(ぶっちゃけ、素敵すぎます)
[PASVモードを使う] にチェックを入れ、[ポート番号]は21番、[ホスト名]はlocalhost に設定します。
メールソフトも同様に、[POP3サーバ]と[SMTPサーバ]はそれぞれlocalhostに設定すれば、あとはデフォルトでOK。
さぁ、出来たかな?
こうやって、血の滲むような設定のおかげで、ashiyu.no-ip.com の管理人としての面目を保っています。(笑)
管理人の戯言トップ |
ホームに戻る |