セキュリティ基礎コース6/8
FTPの設定について
注意 本シナリオはセキュリティ対策の促進を目的とするものです。本シナリオで学んだことを別の目的で悪用することはしないでください。
こちらでは「FTPの設定ミスに起因する攻撃」を体験するにあたり、前提となるFTPというプロトコルについて学習していきます。
こちらでの学習を通じて、FTPの概要とその脆弱性について理解を深めていきましょう。
FTPとは
FTPとは「File Transfer Protocol(ファイルトランスファープロトコル)」の略称です。
コンピュータネットワーク上のクライアントPCとサーバの間(クライアントサーバモデル)でファイル転送を行うための通信プロトコルです。
Webサイトをアップロードする際や、ファイルをダウンロードする際に使用します。
FTPによるアップロード・ダウンロードは、OSに組み込まれた「FTPクライアントソフト」と呼ばれるソフトウェアを介して、FTPサーバに対して実行します。
FTPを実行する際のポート番号は20番(データ転送コネクション用)と21番(制御コネクション用)を使用します。
FTPサーバの起動と各種コマンド
プロトコルの実行にはftp
コマンドを指定します。コマンドを叩くとFTPが起動し、FTPサーバが操作できる状態になります。
ftp [オプション]
またftpコマンドの後ろにFTPサーバのアドレスを指定し、目的のFTPサーバへ起動と同時に接続する事も可能です。
ftp [オプション] FTPサーバアドレス
オプション | 概要 |
---|---|
-v | FTPサーバの処理後のメッセージを表示する |
-i | 複数ファイルをアップロードする際の確認メッセージを表示しない |
FTPサーバへのログインについては、「ユーザ名とパスワード」の組み合わせを使用します。
ただしFTPサーバを提供するホストが匿名で接続できるanonymous
アクセスを提供することができるため、これが提供されている場合はユーザ名としてanonymous
を指定(パスワードは任意)して接続することができます。
FTPサーバとの接続に成功したら、FTP用のコマンドによるサーバの操作が可能になります。Linuxコマンドと同様の結果を得られるコマンドもあります。コマンドと概要の紹介は下記の通りです。
コマンド | 概要 |
---|---|
open | FTPサーバに接続する。 |
close | FTPサーバとの接続を切断する。 |
quit | ftpの起動を終了する。 |
ls | FTPサーバ内のディレクトリやファイルを一覧で表示する。 |
asc | アスキーモードでファイルを取り扱う。 |
bin | バイナリモードでファイルを取り扱う。 |
put | FTPサーバへファイルをアップロードする。 |
get | FTPサーバからファイルをダウンロードする。 |
mput | FTPサーバへ複数ファイルをアップロードする。 |
mget | FTPサーバから複数ファイルをダウンロードする。 |
mkdir | FTPサーバ内でディレクトリファイルを作成する。 |
chmod | FTPサーバ内のファイルの実行権限を変更する。 |
FTPのセキュリティ脆弱性
ここからは、本シナリオのテーマである「FTPのセキュリティ脆弱性」について概要をご紹介します。
FTPには多くの脆弱性が指摘されています。
これはインターネット黎明期から存在する古いプロトコルであるが故に、セキュア(安全)なプロトコルとして設計されていないことに起因します。
例えば、FTPでは、通信内容を暗号化することができません。
ユーザ名・パスワード・コマンド・データ等、全ての情報が平文(=暗号化されていないデータ)で送信されるため、通信経路上でパケットを捕らえることによって容易に内容を盗み見ることが可能となります。
その他にも幾多の脆弱性が指摘されています。下記にRFC2577で挙げられているいくつかの脆弱性をご紹介します。
脆弱性 | 概要 |
---|---|
総当たり攻撃 | 暗号解読方法の一つで、可能な組み合わせを全て試す方法。別名はブルートフォース攻撃。 |
FTPバウンス攻撃 | FTPサーバを踏み台(中継点)にして別のホストを攻撃する方法。 |
Port Stealing | 偽装したフレームをL2スイッチに送りMACアドレス情報を書き換えて情報を盗む攻撃。 |
スプーフィング攻撃 | 不正データにより攻撃用プログラムを別のプログラムに見せかけて実行する攻撃。 |
DoS攻撃 | サーバやネットワークリソース(資源)に意図的に過剰な負荷をかけ可用性を侵害する攻撃。 |
これらの脆弱性に対しては、より安全性が高く設計された(セキュアなバージョンの)プロトコルを使用することが推奨されています。
FTPに代替する安全性の高い(セキュアな)プロトコルを下記にご紹介します。
プロトコル名 | 概要 |
---|---|
FTPS | FTPで送受信するデータをTLS/SSLで暗号化する通信プロトコル。 |
SFTP | SSHの拡張プロトコルとして設計された、信頼性の高いファイル転送プロトコル。 |
SCP | SFTP同様、SSHの機能を使ってセキュアなファイル転送を行うプロトコル。 |
SSH | 暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。 |
まとめ
今回はFTPとその脆弱性について概要を学びました。
FTPとその脆弱性についてより深く知りたくなった方は、こちらで取り上げた用語についてぜひ調べてみて下さい。
それでは環境を軌道し、FTPの脆弱性に起因する攻撃を実際に体験してみましょう。
問題を解くためには、十分な画面サイズのPC環境をご利用下さい。