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がめっちゃ便利です。 ていうか、コレを使っとき。 これらは、以下でダウンロード可能。 まっ、簡単に説明すると、
  1. Tera Term Proをインストール
  2. TTSSHをインストール(インストールというより、解凍してTera Term Proをインストールしたフォルダにコピー)
  3. 各日本語化ファイルをTeraTermとTTSSHをインストールしたフォルダーにコピー
  4. あとは、ttssh.exe から起動させて、秘密鍵(identity)を登録する([設定]→[SSH認証]→[RSA鍵を使う]を選択、以下画像より) TTSSH認証設定
てな感じ。 秘密鍵(identity)は、先ほど ssh-keygen で作ったヤツを ftp なりでクライアントPCに置いときましょう。 詳しい設定は、こちらのページが参考になるでしょう。 あとは、ttssh.exe から起動して、SSH認証画面が出てくるので、ユーザ名と鍵を作るときに入力したパスフレーズでログインできましゅ。(下記画面) TTSSH認証画面 はい、これでバッチリです。 もう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転送]を選び、ポート転送を行なうポートを編集しましょう。 で、実際編集した結果はこんな感じ。 TTSSHポート転送の設定 ローカルの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 の管理人としての面目を保っています。(笑)

管理人の戯言トップ | ホームに戻る |

webmaster@ashiyu.net