[Knowledge] SFTP ? FTPS ?

知り合いから相談を受けたのでちょっと・・・

----------
FTP
File Transfer Protocol(ファイル・トランスファー・プロトコル、略称:FTP)
を知らない人はあまり居ないかもしれませんが、そのセキュア転送に関してはIT企業でも混乱している様子ですので・・・

----------
SFTP
SFTPは SSH File Transfer Protocolの略称で、実はFTPではありません。
例えば、SourceForgeには
Windows用SCP/SFTPクライアント「WinSCP」で安全なファイル転送
最近では、セキュリティ向上のためファイル転送にFTPではなく、SCPやSFTPを推奨しているサイトも多い。
と記述されていますが、ここに大きな陥穽が潜んでいます。

SSHを外部に開くということは、Windows リモートデスクトップを外部に開放するのと同じということを理解していますか?

SFTPは、要するに SSH -- Secure Shellの仕組みを使ったファイル転送であって、旧 rcpコマンドのセキュア版(別名 scp)です。Portは TCP/22を使用します。

逆に言えば、SFTP/SCPを使用したいということになれば、DMZからWANにPort22をピアスすることになり、これはSSH辞書攻撃などに晒されることになります。
もちろん、id_rsa/dsa の鍵+パスフレーズをきちんと管理し、一般のshell modeを許可しない方法で開けるのであれば、セキュリティ的には問題がないレベルですが、往々にしてそうはなっていません。
※SCPの場合、認証鍵の作成の際に no-pty オプションを使用することにより、端末の割り当てを明示的に禁止することが可能・・・・かも
SSHD (8) -- AUTHORIZED_KEYS ファイルの形式(※注1)

また、SSHログインとFTPログインのユーザ情報(Credential)は同じになってしまうため、一部ユーザのためだけに FTP を許可したりすると、そこから SSHで侵入、完全に制御を奪われてしまうというケースが多々あるものと推測されています。

----------
FTPS (FTP over SSL/TLS) (※TLSは以降省略します)
FTPSは、従来のFTPで送受信するデータを SSLで暗号化するプロトコルで、SSHを使用する SFTP や SCP とは全く別のものです。 制御通信は Port21を使用し、実際のデータ送受信は、複数のポートをランダムに使用する PASVモードが一般的です。

FTPSには更に2つのモードがあります。
Explicit
 サーバ接続時は非SSLで接続し、ハンドシェイクが完了した後SSL通信に移行
Implicit
 最初からクライアントがSSLハンドシェイクを要求する

一見、Implicitのほうがセキュアに思えますが、Implicitの場合は、基本的にサーバ側のプロトコルに完全合致した設定を理解できる FTPS クライアントが必須となります。またTCP/990や989 を使用することもあるため、環境に依存することが多く、大抵すんなりとは動きません。ExplicitでもAUTHハンドシェイク完了後のID/PASS応答はSSLとなるため、どうしてもサーバ情報を秘匿したい場合以外は問題ないと考えています。

尚、PASVでの動作が前提となる場合、PASV用のポートに対してもケアが必要になります(特にNAT越えの場合)
※PORTモード(データ転送 : Port 20) はあまりお奨めしません。

----------
結論
いずれにせよ、現在FTP で何も考えずにデータ転送をしている環境が大きく変更されることは間違いありません。しかし、インシデントはたった1回で致命傷になります。

今回のGumblar、ガンブラー™の蔓延は、セキュリティを見直す又とないチャンスです。

これを他山の石とし、社内のセキュリティ・ポリシーを再度見直し、クライアントに対してFTP通信の危険性を説き、Web全体のセキュリティの向上を目指す一助になれば、これに勝る幸いはありません。

参考:
FTP, FTPS, SFTP -- 更新日:2005.05.07
FTPの暗号化の種類
FTPサーバ(vsftpd)の構築(RedHat系編)
Fedora/CentOS - FTPサーバの構築(vsFTPD)

※注1
ssh scp sftp の正しい自動実行方法
via:
_ ssh scp sftp の正しい自動実行方法
あと、これも時々目にする勘違いだけど、「no-pty」は仮想端末とれなくなるだけで、シェルが取れなくなるわけじゃないので、仮想端末取らないで「ssh remotehost '/bin/sh' < 悪のスクリプト」とかやるだけの話。
という感じで、実際にはカナリ頭痛のタネ系の問題が多いことも事実です。

------------------------------------------------------------
追記:
ah様より、
restricted shell for scp/sftpってのぢゃだめ?
と、教えていただきました。

ありがとうございます。

rsshは実は使ったことがなかったので、今回勉強のため VMに入れてみます。
特に chroot が可能なのは初めて知りましたので、うまくいけば FTPSよりも楽かもしれません。
が、
相談してきた人は、IIS だったことに気が付いたのは内緒にしておきます(爆)
※正確には、運用中のサーバの中に 2003/IISのものが混じってる


あと、
企業のセキュリティ・ポリシーとして 22番を外向きに開けるのはどうか?と思うぞ?
という意見も頂きました。
ま・・やっぱりそうですよね・・・

------------------------------------------------------------
rssh homepage(日本語訳)
RSSH.CONF
chrootpath

rssh (実際には補助プログラム)が chroot() システムコールを呼んで、指定されたディレクトリにファイルシステムのルートディレクトリを変更する。例えば、
chrootpath=/usr/chroot
は仮想的なファイルシステムのルートを /usr/chroot に変更し、ファイルシステムの /usr/chroot の下以外にユーザがアクセスできないようにし、 /usr/chroot がルートディレクトリとして見えるようにする。 chroot jail を適切に設定するように注意すること。どのようにしたらよいかのヒントについては、rssh ソースとともに配布される CHROOT ファイルを見ること。また chroot(2) の man ページも参照すること。
もし(/etc/password で指定される)ユーザのホームディレクトリが、このキーワードで示されるパス以下であれば、ユーザはホームディレクトリへと chdir される。そうでなければ、chroot jail の / へと chdir される。
rsshによるセキュアなファイル転送

EoF

4 Responses to “[Knowledge] SFTP ? FTPS ?”

  1. ah Says:

    restricted shell for scp/sftpってのぢゃだめ?


  2. gnome Says:

    こんばんわ
    ありがとうございます。

    rsshですね。
    確か BSD系で動かなかったような気もしたのですが、ちょっと調べておきます。

    「SFTPを開けてくれ」といきなり言われたシス管な人の悲鳴の軽減になればいいのですが・・・


  3. 通りすがり Says:

    rssh+IP制限がベストって感じなんでしょうか?
    (画像認証難しいです。。。)


  4. gnome Says:

    おはようございます。
    IP制限は必須でしょうね、相手に固定IPを取ってもらわなければなりませんが、そういうことを通す面でも今回の騒ぎはいい機会です(笑)

    画像認証:
    ご・・ごめんなさい

    今でもspam blocked カウンタが上がってるので・・・


Leave a Reply

*
画像に書かれた文字を入力してください

スパム対策用画像
ログインすると画像認証なしで投稿できます

ホットワード SFTP FTPS padding margin 日曜日