質問: ftpの危険性について いつも勉強させて頂いております。 現在ftpの危険性について調べているのですが、いまいちピンと来ません。 調べてた結果、私なりに次の様な理由で危険である、と理解したのですが、詳しい方がいらっしゃればご意見いただけますか? インターネットにつながっているパソコンでは、セキュリティソフトやブラウザ、windows update等の様々なインターネットへ接続が必要なサービスが動作している。 それぞれは複数あるポートと呼ばれる入口をそれぞれ専用で使ってインターネットと接続している。このポートは通常ファイアーウォールで守られているため、外部からこのポート経由でpcへアクセスできないようになっている。(1) ftpはポート20,21を使ってデータのやりとりを行っている。例えばサーバーにファイルをftpで転送する場合は、転送の間、自分のpcのポート20,21がファイアーウォール対象外となり、データを転送するが、その間そこを狙われる可能性がある。(2)また、ftpは平文で通信するため、サーバーへ行くまでに経由するpc上でその通信を傍受される可能性がある。(3) 疑問なのが、(1)~(3)です。 (1)について データを送ったりアクセスを試みるとき、ipアドレスを指定するものだと思っていました。これに加えて、ポートスキャンを利用してアクセスできるポートを調べた上で、ポート何番にアクセスしろ、ということができ、そこからアクセスされる可能性があるのでしょうか? (2)について ftpで通信をするときはファイルを送る方、受ける方、どちらもポート20,21を使っているのですか? また、ファイアーウォールが動作していると、ポートにアクセスしようとしてもはじかれる、という理解でいいですか?ファイヤーウォールは中から出る物は許可するが、外から入る物は送り先を判断して許可するかどうか決めているのですか?ftpが危険というのはデータが経由地点で傍受されるのが危険なのか、それともftpの際に使われるポート20,21からアクセスされるのが危険なのですか? (3)について よくパスワードが抜かれることがある、と言われますが、ftpでは一回の通信毎にデータ転送先のサーバーのftpについてのパスワードを平文で送っているからパスワードが抜かれる、ということなのですか?sshでは通信データは暗号化されているから安全である、という理解でよいでしょうか?また、ftpで真に危険なのは、パスワードを抜かれることでその抜いた人がサーバーにそのパスワードを利用してアクセスすること、という理解でいいですか? 質問だらけになってしまって情けないですが、詳しい方いらっしゃったら教えて下さい! よろしくお願いします!
回答: >そのポートからアクセスされることよりも、その通信を傍受されることが危険なんですね。 ftpに限らずtcp/ipにてサービスを公開するためには、必ずポートを空ける必要があるということは理解されていると思います。 従って、そのポートに対するアクセスを禁止することはサービスを公開する以上出来ません。 ただ、無制限にアクセスを許すのではなく要件に合わせて制限をしていくことは重要で、これがファイアウォールの役目になります。 例えば、 ・通信する相手が固定されているのであれば、必要なipアドレスのみftpで使用するポートへのアクセスを許可する。 ・日本国内からのみに制限したい場合は、日本国内に割り当てられたipアドレスのみ許可する。(あまり実施しているのを見ませんが) 不特定の場合は制限のしようがありませんけどね。 また、違ったアプローチとして ftpは制御ポート(ポート21)から通信が始まるので、データポートはこの通信を始めたipアドレスに対応してアクセス出来るようにするという機能もファイアウォールは付いている場合もあります。 これで関係ないipアドレスからftpのデータポートへのアクセスを抑える効果があります。 簡単な例ですが、このようにポートへのアクセスはリスクをより低くするための手法もありますし、サービスを公開する以上必要不可欠なこともありますが、盗聴に関してはプロトコルの仕様に暗号化などが無い以上対策が難しいのでリスクとしては高いと考えます。 >よければパスワードが漏洩した場合のリスク、というのが他にどのようなものがあるのか教えて頂けたら幸いです。 漏えいしたユーザー、パスワードはそのftpサーバのみで使用しているのでない可能性があるということです。 ご自身のことを考えて頂いて、同じユーザー、パスワードで認証しているものが2つや3つあるのでないですか。 案外全てのサービスで異なるユーザー、パスワードを使用している人は少ないんじゃないかな。 このようなリスクを想定するとそのサーバだけに留まらず被害が拡大する可能性があるということがわかるのではないかと思います。