| [System Environment] | |||||||||||||
tftpサービスを起動する
|
|||||||||||||
|
|||||||||||||
| 解説 |
| [本TIPSに対する注意事項] |
|
2006年12月13日、マイクロソフトからセキュリティ更新プログラムMS06-077が公開された。これは本TIPSで解説しているtftpd.exeに関する脆弱性に対処するためものである。そのため本TIPSの方法でtftpdサービスをインストールした後は、MS06-077のセキュリティ対策を施す必要がある。またすでに本TIPSの方法に基づいてこのサービスを利用している場合も、同様の対策を行う必要がある。詳細については、稿末の解説を参照していただきたい。 |
tftp(Trivial File Transfer Protocol)プロトコルは、UDPを使った簡易ファイル転送プロトコルである(プロトコルはRFC1350で定義されている)。TCPを使った通常のFTPプロトコルと比べると、低機能だが、非常に「軽量な」プロトコルだ(ネットワークでは、機能がシンプルで制御が容易なものを軽量と呼ぶことが多い)。tftpはユーザーが直接使うことはほとんどないが、システム起動時のブートストラップ用プロトコルとして使われることが多い。システム起動時には、TCPのような複雑で高度な制御が必要なプロトコルを実装・利用することは困難だからだ。
tftpは、Windows Server OSのRIS(リモート・インストール・サービス)やPXE(Preboot eXecution Environment。ブート前実行環境)でも利用されているし、一般的にはディスクレス・コンピュータのブート用途などで利用されている。これらの環境では、BOOTPやDHCPで各コンピュータの構成情報を取得し、さらにtftpで実際のOSコードなどをサーバからダウンロードしてシステムを起動している。
Windows Server OSではRISを導入するとtftpdサービスが利用できるようになるが、RISを使わない場合でも、単独でtftpdサービスを導入することも可能である。本TIPSではこの方法について解説する。
■セキュリティ対策に対する追記
冒頭でも述べているように、RISのtftpdサービスに対して、現在ではセキュリティ修正プログラムが提供されている。以下の方法でtftpdサービスを手動で導入すると、このセキュリティ修正プログラムの適用対象外となる。可能ならRISサービスを導入し、tftpdサービスだけを利用する、といった運用方法も検討していただきたい(これならば適用対象となる)。
| 操作方法 |
tftpdサービスをセットアップするには、管理者としてログオンし、以下の操作を行う。
手順1―tftpd.exeファイルを用意する
tftpdのサーバ・プログラムであるtfptd.exeファイルは、デフォルトでは%windir%\system32\dllcacheの下に置かれているので、これを手動で%windir%\system32フォルダへコピーする。%windir%はWindows OSのシステム・アファイルが置かれているフォルダであり、Windows 2000ではC:\WINNT、Windows Server 2003ではC:\Windowsがデフォルトとなっている。
C:\>cd C:\WINDOWS\system32……ファイルをコピーする |
手順2―サービスとして登録する
次はtftpd.exeをサービスとしてシステムに登録し、OS起動時に自動的にサービスが開始されるように設定する。このためには、sc.exeというコマンド・ツールを利用する。
sc.exeは、コマンド・ラインからサービスを制御するためのツールであり、Windows XPやWindows Server 2003には標準で含まれている。Windows 2000 Serverの場合はリソースキットに含まれているので、リソースキットをインストールするか、Windows XPやWindows Server 2003を使ってリモートから操作すればよい。scコマンドの一般的なフォーマットは「sc コマンド名 パラメータ…」であるが、リモートのコンピュータを指定する場合は「sc \\サーバ名 コマンド名 パラメータ…」とする。
tftpd.exeを「tftpd」というサービス名でシステムに登録するには、次のコマンド(sc createコマンド)を実行する。
C:\>sc \\servername create tftpd binPath= c:\windows\system32\tftpd.exe |
ここで、「\\servername」は対象となるサーバ名の指定であるが、ローカルのコンピュータの場合はこの部分は省略してもよい。
「tftpd」はサービス名、「binPath= c:\windows\system32\tftpd.exe」は登録するプログラムのパス名の指定である(パス名に空白文字が含まれている場合は引用符で囲む。また「binPath=」の直後には空白を入れること)。
手順3―サービスの確認と開始
tftpdサービスを登録したら、その内容を確認し、システム起動時に自動的に開始するように設定する。このためにはscコマンドを使うか、[管理ツール]の[サービス]を利用する。サービスの開始/停止には、sc start/sc stopコマンドだけでなく、net start/net stopコマンドも利用できる 。
C:\>sc \\servername query tftpd …サービスの確認 |
サービスの管理ツールを使う場合は、以下の設定を行う。
![]() |
|||||||||
| tftpdサービスの設定 | |||||||||
| 作成したばかりのサービスは自動開始になっていないので、設定を変更する。 | |||||||||
|
手順4―tftpdフォルダの作成
tftpdはデフォルトでは、システム・ドライブの「\tftpdroot」フォルダ(c:\tftpdroot)をファイル転送のルートとして利用する。そのため、このフォルダを作成しておく必要がある。
C:\>mkdir c:\tftpdroot |
クライアントからtftpコマンドでファイルをputするとこの中に書き込まれ、getする場合はこの中のファイルしかアクセスすることはできない。tftpプロトコルにはユーザー認証がないので、FTPと違って、ファイルやフォルダごとに個別のアクセス権限を付けることはできない。だが、tftpd.exeではレジストリを設定することにより、いくらかのアクセス制限やログ・ファイルの設定などを行うことができる(後述)。
手順5―動作確認
tftpのクライアント・プログラムであるtftp.exeは、ServerでないWindows OSにも搭載されているので、これを使って動作を確認する。
ファイルの取得
tftpサーバからファイルをダウンロードするには、次のようなコマンドを実行する。
C:\>tftp server get testfile.data local-testfile.data |
これは、サーバ上のtestfile.dataというファイルをローカルへ転送するコマンドである。ローカル側のファイル名(local-testfile.data)を省略すると、同じ名前のファイルがローカル側に作成される。ワイルド・カードは使用できないし、サーバ側のファイル名の一覧を取得することもできない。
ファイルの送信
逆に、tftpサーバへ送信するには、putを使う。
C:\>tftp server put testfile.data dest-testfile.data |
これは、ローカル側のtestfile.dataというファイルをtftpサーバへdest-testfile.dataという名前で保存するコマンドである(サーバ側のファイル名は省略可能)。
いずれも、デフォルトではアスキー・モードで転送されるが(行末コードの変換が行われる)、バイナリ・モードで転送するには、「tftp -i server get testfile.data」「tftp -i server put testfile.data」というふうに、先頭に「-i」オプションを指定する。
送信機能の禁止
デフォルトでは、tftpサーバに対する送信(put、アップロード)が許可されているが、tftpでは認証機能がないため、不正なアップロードでファイルが破壊されたり、上書きされたりする可能がある。またWindows 2000 Serverの場合は、セキュリティ情報MS06-077で示されるように、脆弱性が悪用される危険性もある。そのため、必要がなければ送信機能は無効にしておくのがよい。システムのブートやRISなどの用途ではtftpでアップロードできる必要はない。具体的な禁止方法については最後の部分を参照していただきたい。
tftpd.exeの設定変更
tftpd.exeは、レジストリを変更することにより、接続可能IPアドレスの制限や、書き込み(クライアントからサーバへの転送)の禁止など、いくつかのアクセス制限やログ・設定などを行うことができる。詳細については、tftpd -?で表示されるヘルプ・メッセージを参考にしていただきたい。ただしこのメッセージはWindows Server 2003では表示されないので、以下にWindows 2000 Server上での実行結果を掲載しておく。
C:\>tftpd -? |
セキュリティ更新プログラムMS06-077に対する措置
2006年12月13日、マイクロソフトからセキュリティ更新プログラムMS06-077が公開された。これは本TIPSで解説しているtftpd.exeに関する脆弱性に対処するためのものである。そのため本TIPSの方法でtftpdサービスを手動でインストールした後は、MS06-077のセキュリティ対策を施す必要がある。またすでに本TIPSの方法に基づいてこのサービスを利用している場合も、同様の対策を行う必要がある(Windows 2000 Serverだけでなく、Windows Server 2003の場合も行うこと)。
RISサービスをWindows 2000 Serve上にインストールすると、本TIPSでも解説しているtftpd.exeを使ったtftpdサービスが導入されるが、このtftpサーバの機能に問題がある。tftpには認証機能がないため、すでに存在するファイルに対するアップロード要求の場合には、認証されずに上書きされてしまう。その結果、不正なファイルがクライアントへtftpでダウンロードされ、利用される可能性がある。これを防ぐため、MS06-077の更新プログラムでは、tftpdサービスに対するアップロード(tftpのクライアントから本tftpdサービスに対するput転送)を禁止し、ダウンロードのみ(クライアントから見るとgetのみ)を許可するようにレジストリを設定する。
MS06-077のタイトルは「RISサービス」となっているが、対象は、RISサービスを構成するコンポーネントの1つであるtftpd.exeである。ただしMS06-077の修正プログラムではこのファイルそのものはいっさい更新せず、tftpdサービスが参照するレジストリのみを更新する。デフォルトではtftpdではファイルの送受信が可能になっているが、レジストリを変更して、クライアントからのアップロード(クライアントからのputによる書き込み)を禁止している。これにより、不正なファイルを含め、すべてのアップロードが禁止される。ダウンロードしかできなくなるが、通常のリモート・ブートの用途ではダウンロードしか行わないので、このような対処方法でも問題ないだろう。
Windows Server 2003の場合は少し事情が異なっている。(1)RISサービスのインストール時に該当するレジストリが自動的に設定されるので、デフォルトでアップロードは禁止されている。(2)レジストリを解除してアップロードを許可しても、すでに存在するファイルへの上書きはエラーとなる。これらの理由により、Windows 2000 Serverの場合よりも問題は少ない。だが手動でtftpdサービスをセットアップした場合にはレジストリ・エントリは存在しないので、アップロード可になっている(ただし上書きはできない)。安全性を考えると、アップロードは常時禁止とすることが望ましい。
MS06-077のインストールのための前提条件
MS06-077はレジストリを変更するだけの更新プログラムであるが、実行時に、RISサービスがすでにインストール済みかどうかを確認する。そしてRISサービスがインストールされていなければ実行を中止する。本TIPSでは、RISサービスをインストールせず、tftpd.exeを直接サービスとして登録、実行しているが、このような環境ではMS06-077は何も実行されない。また自動更新やWindows Update、Microsoft Update、MBSAなどでも、このようなケースでは何も検出されない。
そのため、本TIPSの方法で手動でtftpd.exeを登録した場合は、MS06-077に示されている回避策(「TFTP サービスを読み取り専用に設定する」)を、自分自身で行う必要がある。以下にその方法を示す。
回避策:tftpに対するファイル・アップロードの禁止
■手順1―レジストリの設定
MS06-077の脆弱性を回避するには、該当Webページで指示されている回避策を、ユーザー自身が手動で行う。これは修正プログラムが行っている処理と同じものである。具体的には、以下のレジストリ・キーと値を新規追加し、その値を空の文字列に設定する。これにより、tftpサーバに対するアップロード(put)ができなくなる。
| [注意] |
|
レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリ・エディタの操作は慎重に行うとともに、あくまで御自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本Windows Server Insider編集部では責任を負いかねます。ご了承ください。 |
| 項目 | 内容 |
| キー | HKEY_LOCAL_MACHINEの System\CurrentControlSet\Services\TFTPD\Parameters |
| 値の名前 | Masters |
| 型 |
REG_SZ |
| 値の内容 | (空の文字列) |
|
tftpでアップロード禁止にするための設定 |
|
| Mastersは、本来はアップロードを許可するクライアント(コンピュータ名)のリストを記述するために使われる。これを空文字列に設定することにより、すべてのクライアントからのアップロードが禁止される。なおMS06-077のWebページの回避策の記述では、DWORD型のMastersという値を新規作成し値を0にする、となっている。この方法でもアップロードは禁止できるようであるが、実際のMS06-077のセキュリティ更新プログラムでは、REG_SZ型の値を作成しているので、ここではその方法を記述しておく。Windows Server 2003の場合は、RISサービス導入時に自動的にこの値(REG_SZ型の空文字列値)が作成されるが、手動でtftpdサービスを導入した場合には存在しないので、必ず作成して、アップロードを禁止しておくこと。 | |
■手順2―tftpdサービスの再起動
レジストリの設定が済んだら、有効化するために、tftpdサービスを再起動する。[サービス]管理ツールで再起動してもよいし、次のようなコマンドを使って再起動してもよい。
C:\>net stop tftpd …サービスの停止 |
設定の確認
以上で設定は終了である。クライアントからtftpでファイルをputし、アクセスが拒否されることを確認する。![]()
C:\>tftp sysserver01 put sample.txt …ファイルの書き込み(アップロード) |
|
||||||||||||||||||||||||||||
| 更新履歴 | ||
|
| 「Windows TIPS」 |
TechTargetジャパン
- クライアントでも利用可能になるHyper-V 3.0とは? (2012/2/9)
Windows 8では、従来のWindows Virtual PCに代わって新しくHyper-V 3.0がクライアント向けにも導入される。その概要を解説 - 第303話 ペアプロ2 (2012/2/7)
あっ、またまたいつぞやの幽霊が! …っと思ったら、何だ倉井さんかぁ…。はぁー、驚いた… - Excelで郵便番号変換ウィザードを活用する (2012/2/3)
Excelで管理している顧客名簿などで、不足している郵便番号や住所を入力するのは意外と面倒。郵便番号変換ウィザードを使えば、これらの入力が簡単になる - PCをシンクライアント化するWindows Thin PCとは? (2012/2/2)
VDI向けにシンクライアントがほしいけど専用機を買う余裕はない… Windows Thin PCなら既存PCを低コストでシンクライアント化できる。まずは概要を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


