FTP の通信内容を覗いてみる

そもそもFTPを使うべきでない - 酔狂人の異説を読んで,そう言えば以前にtcpdump で SMTP/POP の通信内容を覗くみたいな記事を書いた事を思い出したので,同じことを FTP でもやってみます.

やり方は,ターミナルで tcpdump -X tcp とコマンドを打ちこんで tcpdump を起動させた状態で,適当な FTP クライアントを使って通信を行います*1.その結果がこちら.

赤い枠で囲っている箇所が(クライアントが)ユーザ名とパスワードを送信したときの通信内容です.昨今のいんたーねっつで使用するには FTP は少々アグレッシブすぎるようです.

FTP の代替手段

さて.では FTP の代わりに何を使えば良いのかと言うと,ぱっと思いつく限りでは以下の 3 種類でしょうか.

  • FTPS: FTP over SSL/TLS
  • SFTP: SSH File Transfer Protocol
  • SCP: Secure Copy

FTPS はその名の通り,SSL を用いて通信経路を暗号化した上で何も考えずに FTP を使う方法です.HTTPS, SMTPS, POPS など他のプロトコルもこの方法をよく用いるので馴染みやすいでしょうか.ただ,他のプロトコルに比べて少し複雑なため(サーバがうまく対応してなかったりする場合もあり)あまり積極的には使われていないような気がします.私の観測範囲内だけかもしれませんが.

SFTP は,SSH の仕組みを使用しコンピューター間でファイルを安全に転送するプロトコルだそうです.実は良く知りません.私は,最初てっきりこれが SSL 通信版 FTP を指すと思っていたのですが,どうやら別物のようです.

最後の SCP は,SSH を使ってファイル転送を行うプロトコルで個人的には FTP の代替手段としてはこれが一番多く利用されているのではないかと思います.私も大抵は SCP でファイル転送を行っています.クライアントソフトとしては,Windows では WinSCP が使いやすいでしょうか.

基本的には SCP を使っておけば良いと思うのですが,サーバの対応状況などによって多少(どれを使うか)試行錯誤する必要があるかもしれません.後,これは個人的な経験からですが,第三者からの攻撃はポート番号を(well-known ポートに)決め打ちにしている場合がけっこう多いので,内輪だけで利用するような場合はポート番号を変えてしまうと(21 -> 21000 とか),気休め程度ですが多少マシになるかもしれません.

*1:ただし,Network Interface Card (NIC) が複数枚刺さってる場合は,-i オプションでどの NIC の通信内容を取得するのかを指定する必要があります.