ftpd デーモン
目的
インターネット FTP プロトコルにサーバー機能を持たせます。
構文
/usr/sbin/ftpd [ -d ] [ -D DataConnTimeOut ] [-e][ -f ] [ -ff ] [ -k ] [ -l] [ -U ] [ -t TimeOut ] [ -T MaxTimeOut ] [ -s ] [ -u OctalVal ] [-q [-C]] [-c] [-H]
説明
/usr/sbin/ftpd デーモンは、 DARPA インターネット・ファイル転送プロトコル (FTP) サーバー・プロセスです。 ftpd デーモンは、伝送制御プロトコル (TCP) を使用して、/etc/services ファイル内の、ftp コマンド・サービス仕様で指定されたポート上で listen します。
ftpd デーモンの変更は、System Management Interface Tool (SMIT) またはシステム・リソース・コントローラー (SRC) を使用して、/etc/inetd.conf ファイルまたは /etc/services ファイルを編集することによって行うことができます。 ftpd をコマンド・ラインに入力することはお勧めしません。/etc/inetd.conf ファイル内で コメントが解除されていれば ftpd デーモンはデフォルトで始動します。
inetd デーモンは、/etc/inetd.conf ファイルと /etc/services ファイルから情報を取り出します。
/etc/inetd.conf または /etc/services ファイルを変更する場合は、refresh -s inetd または kill -1InetdPID コマンドを実行して、inetd デーモンにその構成ファイルへの変更を通知します。
ftpd デーモンは、ファイル名を csh コマンドの規則に従って拡張します。このコマンドを使用すると、* (アスタリスク)、?(疑問符)、[ ] (左大括弧と右大括弧)、{ } (左中括弧と右中括弧)、~ (ティルド) のようなメタキャラクターを使用できます。
ftpaccess.ctl File
/etc/ftpaccess.ctl ファイルでは、allow:、 deny:、readonly:、writeonly:、 readwrite:、useronly:、grouponly: 、herald: および/または motd: で始まる行が 検索されます。 その他の行は無視されます。ファイルが無い場合には、すべてのホストに対して FTP アクセスが許可されます。 allow: および deny: 行は、ホストのアクセスを制限します。readonly: 、writeonly: および readwrite: 行は、 FTP の読み取り (get) および書き込み (put) を制限します。 useronly: および grouponly: 行は、無名ユーザーを定義します。 herald: および motd: 行は、ログイン前およびログイン後の複数行メッセージに関する指定を行います。
keyword: value, value, ...キーワードごとに 1 つ以上の値を指定することができます。同じキーワードのものを複数行指定できます。/etc/ftpaccess.ctl の行
は 1024 文字までに制限されています。1024 を超える文字は無視されます。allow: host, host, ...
deny: host, host, ...allow: 行が指定されている場合、
すべての allow: 行にリストされているホストのみが FTP アクセスを許可されます。他のすべてのホストは FTP アクセスを拒否されます。allow: 行が無い場合には、deny: 行に指定されている
ホストを除くすべてのホストが FTP アクセスを許可されます。ホストは、ホスト名または IP アドレスのいずれかで指定します。
readonly: dirname, dirname, ...
writeonly: dirname, dirname, ...
readwrite: dirname, dirname, ...readonly: 行は
読み取り専用ディレクトリーをリストし、writeonly: 行は書き込み専用
ディレクトリーをリストします。書き込み専用ディレクトリーでは読み取りアクセスは拒否され、
読み取り専用ディレクトリーでは書き込みアクセスは拒否されます。readwrite: 行が指定されている場合を除いて、他のすべてのディレクトリー
はアクセスを認可されます。readwrite: 行が指定されていると、readwrite: 行および/または readonly: 行にリスト
されているディレクトリーのみが読み取りのアクセスを認可されます。
同様に、readwrite: 行および/または
writeonly: 行にリストされているディレクトリーのみが書き込みのアクセスを認可されます。また、これらの行に「ALL」あるいは「NONE」という値を指定できます。
useronly: username, username, ...
puseronly: username, username, ...
grouponly: groupname, groupname, ...
pgrouponly: groupname, groupname, ...username は
/etc/passwd にあり、groupname は /etc/group にあります。useronly: および puseronly: 行は、無名ユーザーを
定義します。grouponly: および pgrouponly: 行は
、無名ユーザーのグループを定義します。これらの無名ユーザーは、ftp 操作が各自のホーム・ディレクトリーに限定されているという点でユーザー「anonymous」に似ています。useronly: および grouponly: 行は、パスワードで保護されない無名ユーザーを定義します。これはユーザー「anonymous」に似ています。puseronly: および pgrouponly: 行は、パスワードで保護される無名ユーザーを定義します。herald: path
motd: on|offパスは、ログイン前に表示される複数行の herald が入っているファイルの絶対パス名です。motd: 行の値が 'on' である場合は、$HOME/motd
ファイルに、ログイン後に表示される複数行のメッセージが入っています。ユーザーが定義済み無名ユーザーである場合は、/etc/motd
ファイルに、ログイン後に表示される複数行のメッセージが入っています。(/etc/motd は、無名ユーザーの chroot が実行されるホーム・ディレクトリーです。)
motd: 行のデフォルトは off です。標準オペレーティング・システムの認証メソッドが現行認証メソッドである場合
- ユーザーは、パスワード・データベース /etc/security/passwd に、 パスワードを入れておく必要があります。(ユーザーのパスワードが null でない場合、クライアント・プロセスでそのパスワードを指定しなければなりません。)
- ユーザー名は、 /etc/ftpusers ファイル名に存在するものは、 無効です。
- ユーザーの login shell は、/etc/security/login.cfg ファイルのシェル属性に存在するものでなければなりません。
- ユーザー名が
anonymous、ftpまたは /etc/ftpaccess.ctl ファイルに定義されている無名ユーザーである場合は、 無名の FTP アカウントをパスワード・ファイルに定義する必要があります。この場合、クライアント・プロセスはどのパスワードでもログインできます。 規則では、パスワードにはクライアント・ホストの名前を使います。ftpd デーモンは特別措置を講じてクライアント・プロセスが無名のアカウントへアクセスするのを制限します。
Kerberos 5 が現行認証メソッドである場合
以下の条件がすべて満たされた場合にのみ、ftpd デーモンはアクセスを認めます。
- ftp クライアントのローカル・ユーザーに、現行 DCE 認証がある。
- ローカルおよびリモートの両システムが、 AUTH コマンドをサポートしている。
- リモート・システムが DCE 認証を、 リモート・アカウントにアクセスするのに十分なものとして受け入れる。詳しくは、kvalid_user 機能のセクションを参照してください。
トランスポート層セキュリティーのサポート
ftpd デーモンは、RFC 4217 で定義されているトランスポート層セキュリティー (TLS) をサポートします。TLS は、クライアントとサーバー間で安全な通信を行うための暗号プロトコルです。
このインプリメンテーションの主な目的は、暗号化を使用して制御とデータ接続を保護するためです。クライアントは、他の方法で認証されなければなりません。サポートされている方法は、標準認証メソッドのみです。
TLS セッションを開始するための要求を受信すると、ftpd デーモンは /etc/ftpd.cnf ファイルの読み取りを行い、TLS セッションのセットアップに使用される以下の構成パラメーターをロードします。
| 項目 | 説明 |
|---|---|
| CRL_PATH | CRL_PATH パラメーターは、証明書取り消しリスト・ファイルへのパスを提供します。このファイルは PEM フォーマットでなければなりません。これを指定すると、クライアントが提供するデジタル証明書が証明書取り消しリストと照合されます。ftp クライアントがデジタル証明書を使用していない場合は、接続が失敗します。クライアントがデジタル証明書を提供している一方で、その証明書が取り消されている場合は、TLS セッションが失敗します。このパラメーターを指定しない場合は、クライアントはデジタル証明書を提供する必要はありません。 |
| CA_PATH | CA_PATH パラメーターは、認証局ファイルへのパスを提供します。このファイルは PEM フォーマットでなければなりません。これを指定すると、クライアント証明書が認証局と照合されます。クライアントがデジタル証明書を提供しない場合は、接続が失敗します。クライアントがデジタル証明書を提供している一方で、その証明書がセキュリティー機関によって署名されていない場合は、TLS セッションが失敗します。このパラメーターを指定しない場合は、クライアントはデジタル証明書を提供する必要はありません。 |
| CIPHER_LIST | CIPHER_LIST パラメーターを指定すると、このリストが TLS セッション中に使用されます。これを指定しないと、デフォルトの暗号リストが使用されます。 |
| DEPTH | CA_PATH 構成パラメーターを指定すると、デジタル証明書階層内の ftp クライアントが提供する証明書を検証するために DEPTH 値が使用されます。これを指定しないと、デフォルト値の 9 が使用されます。 |
| CERTIFICATE | CERTIFICATE パラメーターは、PEM フォーマットの有効なデジタル証明書チェーン・ファイルへのパスを提供します。このファイルは TLS セッションで使用されます。このパラメーターは、TLS セッションを開始するために指定する必要があります。このパラメーターを指定しないと、ftpd サーバーはすべての TLS 要求を拒否します。 |
| CERTIFICATE_PRIVATE_KEY | CERTIFICATE_PRIVATE_KEY パラメーターは、PEM フォーマットの証明書の秘密鍵へのパスを提供します。これは TLS セッション中に使用されます。このパラメーターは、TLS セッションを開始するために指定する必要があります。このパラメーターを指定しないと、ftpd サーバーはすべての TLS 要求を拒否します。 |
| DH_PARAMETERS_DIR | DH_PARAMETERS_DIR パラメーターは、PEM フォーマットの Diffie Helman パラメーターを含むディレクトリーへのパスを提供します。 このディレクトリーには、PEM フォーマットの Diffie Helman パラメーターを含むファイルが複数入ります。ftpd デーモンは、必要に応じて、使用するパラメーターを検索します。 |
TLS をサポートするには、AIX® Web Download Pack Programs Web サイトから最新バージョンの OpenSSL ツールをインストールする必要があります。
ファイル転送プロトコル・サブツリーのガイドライン
無名 FTP ユーザーの処理では、サーバーは FTP ユーザー・アカウントのホーム・ディレクトリーで chroot コマンドを実行します。セキュリティーを強化するために、FTP サブツリーの構成時に次の規則を実行します。
| 項目 | 説明 |
|---|---|
| ~ftp | ホーム・ディレクトリーを root の所有とし、モードを r-xr-xr-x (555) にする。 |
| ~ftp/bin | このディレクトリーを root ユーザーの所有とし、他のユーザーからの書き込みができないようにする。リスト・コマンドをサポートするために、このディレクトリー内には ls プログラムがなければなりません。また、このプログラムはモード 111 を持つ必要があります。 |
| ~ftp/etc | このディレクトリーを root ユーザーの所有とし、他のユーザーからの書き込みができないようにする。 |
| ~ftp/pub | このディレクトリーのモードを 777 とし、FTP の所有とします。ユーザーはこのディレクトリー内の無名のアカウントを介してアクセス可能になるようなファイルを配置します。 |
- ~user
- ホーム・ディレクトリーを root の所有とし、モードを
r-xr-xr-x(555) にする。 - ~user/bin
- このディレクトリーを root ユーザーの所有とし、他のユーザーからの書き込みができないようにする。 リスト・コマンドをサポートするために、このディレクトリー内には ls プログラムがなければなりません。また、このプログラムはモード 111 を持つ必要があります。
- ~user/etc
- このディレクトリーを root ユーザーの所有とし、他のユーザーからの書き込みができないようにする。
- ~user/pub
- このディレクトリーのモードを 777 とし、ユーザーの所有とする。ユーザーはこのディレクトリー内の
無名のアカウントを介してアクセス可能になるようなファイルを配置します。
サーバーは特権ポート番号付きのソケットを作成するために、root ユーザーとして実行されなければなりません。サーバーはログイン済みの実効ユーザー ID を保持し、ソケットにアドレスをバインドするときだけ root ユーザーに変わります。
サポートされるファイル転送プロトコル要求
ftpd デーモンは現在次の FTP 要求をサポートしています。
| 項目 | 説明 |
|---|---|
| ABOR | 前のコマンドを終了させる。 |
| ACCT | アカウントを指定する (無視される)。 |
| ADAT | 認証/セキュリティー・データを指定します。 |
| ALLO | 保存域を割り当てる (中は空白)。 |
| APPE | ファイルに追加する。 |
| AUTH | 認証/セキュリティー・メカニズムを指定します。 |
| CCC | コマンド・チャネル・クリアを指定します。 |
| CDUP | 現在の作業ディレクトリーの親ディレクトリーに変更する。 |
| CWD | 作業ディレクトリーを変更する。 |
| DELE | ファイルを削除する。 |
| ENC | プライバシー保護コマンドを指定します。 |
| HELP | ヘルプ情報を提供する。 |
| 項目 | 説明 |
|---|---|
| LIST | ディレクトリーにリスト・ファイルを提供する (ls -lA コマンドと同じ)。 |
| MKD | ディレクトリーを作成する。 |
| MDTM | ファイルを最後に変更した時刻を明示する。 |
| MIC | 保全性保護コマンドを指定します。 |
| MODE | データ転送モードを指定する。 |
| NLST | ディレクトリーにリスト・ファイルを提供する (ls コマンドと同じ)。 |
| NOOP | 何もしない。 |
| PASS | パスワードを指定する。 |
| PASV | サーバーからサーバーへの転送の準備をする。 |
| PBSZ | 保護バッファー・サイズを指定します。 |
| PORT | データ接続ポートを指定する。 |
| PROT | データ・チャネル保護レベルを指定します。 |
| PWD | 現在の作業ディレクトリーを印刷する。 |
| QUIT | セッションを終了する。 |
| RETR | ファイルを検索する。 |
| RMD | ディレクトリーを除去する。 |
| RNFR | 改名前のファイル名を指定する。 |
| RNTO | 改名後のファイル名を指定する。 |
| SITE | SITE 要求では、次の非標準コマンドまたは UNIX 固有コマンドがサポートされます。
|
| SIZE | 現行ファイルのサイズを戻す。 |
| STAT | サーバーの状況を戻す。 |
| STOR | ファイルを格納する。 |
| STOU | 固有のファイル名を使用してファイルを格納する。 |
| STRU | データ転送の構造をファイル構造として指定する。 |
| SYST | サーバー・システムのオペレーティング・システム・タイプを明示する。 |
| TYPE | データ転送タイプを Type パラメーターで指定する。 |
| USER | ユーザー名を指定する。 |
| XCUP | 現在の作業ディレクトリーの親ディレクトリーに変更する (通常は使用しない)。 |
| XCWD | 現行ディレクトリーを変更する (通常は使用しない)。 |
| XMKD | ディレクトリーを作成する (通常は使用しない)。 |
| XPWD | 現在の作業ディレクトリーを表示する (通常は使用しない)。 |
| XRMD | ディレクトリーを除去する (通常は使用しない)。 |
インターネット RFC 959 に定義された残りの FTP 要求は、認識されますが実行はされません。MDTM および SIZE 要求は RFC 959 で指定されていませんが、次の改訂版 FTP RFC に登場する予定です。
STAT 要求がデータ転送中に受信されて、Telnet IP シグナルおよび SYNCH シグナルの後に来る場合には、転送状況は再実行されます。
ftpd デーモンは System Management Interface Tool (SMIT) を使うか、または /etc/inetd.conf ファイルを変更して制御します。ftpd をコマンド・ラインに入力することはお勧めしません。
システム・リソース・コントローラーによる ftpd デーモンの操作
ftpd デーモンは、inetd デーモンのサブサーバーです。ftpd デーモンは tcpip SRC サブシステム・グループのメンバーです。このデーモンは、/etc/inetd.conf ファイルのデフォルトで使用可能になり、以下の SRC コマンドで操作できます。
フラグ
| 項目 | 説明 |
|---|---|
| -C | send_file コマンドを使用して送信される 発信ファイルをネットワーク・バッファー・キャッシュ (NBC) に入れなければならないことを 指定します。このフラグは、-q フラグが指定されていなければ指定できません。このフラグは、ファイルがバイナリー・モードで保護されずに送信される場合にのみ適用されます。 |
| -c | ホスト名のリバース・ルックアップを抑制します。 |
| -d | ftpd デーモンの動作についてのデバッグ情報を
syslogd デーモンに送信します。-d フラグを指定する場合には、/etc/syslog.conf ファイルを編集して次のエントリーを追加する必要があります。
注: syslogd デーモンの
debug レベルには、info レベルのメッセージが含まれます。
/etc/syslog.conf ファイルを編集しないと、メッセージはなにも生成されません。/etc/syslog.conf ファイルを変更した後、 refresh -s syslogd コマンドまたは、 kill-1SyslogdPID コマンドを実行して、 syslogd デーモンに、構成ファイルに加えた変更内容を通知してください。 デバッグ・レベルの詳細については、/etc/syslog.conf ファイルを参照してください。 |
| -D DataConnTimeOut | ftpd デーモンがデータ接続を保持する最大秒数を指定します。デフォルト値は 300 秒です。待機時間を無限にする場合にはこの値を 0 に指定します。DataConnTimeOut パラメーターの値は 0 から MAXINT までの範囲で指定できます。 |
| -e | TLS 対応のクライアントのみがサーバーとの接続を確立できるようにします。 |
| -f | クライアントがサーバーに特定ポートに戻る接続を要求した場合は、 特権ポートの確認を使用不可にします。デフォルトでは、ftpd ではクライアントは、 セキュリティー上の用心から特権ポートへの接続を要求することはできません。 |
| -ff | クライアントがサーバーに、特定のクライアント・ポートに戻る接続を要求した場合は、 特権ポートと、制御接続に使用されるアドレスと一致する IP アドレスの、 両方の確認を使用不可にします。このフラグを使用すると、クライアントがサーバーに、 代替ホストまたは代替インターフェースにデータを送信するよう要求できるようになります。デフォルトでは、ftpd はこのアクションを、 セキュリティー上の用心から許可しません。 |
| -H | FILE_Rename、FS_Rmdir、および FILE_Unlink の各イベントの監査ロギングをオンにします (これらのイベントが root ユーザーに対して有効にされている場合)。 |
| -k | データ転送ソケット上の sys/socket.h ファイルに定義された SO_KEEPALIVE オプションを設定して、イベント TCP/IP がハングした場合にデータ転送が タイムアウトになるようにします。アイドル状態の間隔時間は、 no コマンドの、 tcp_keepidle オプションと、 tcp_keepintvl オプションで指定された、 システム全体に関する値に依存します。このフラグがないと、ftpd データ転送はタイムアウトになりません。 |
| -l | ftpd デーモンの動作についてのロギング情報を
syslogd デーモンに送信します。-l フラグを指定した場合、/etc/syslog.conf ファイルを編集して、次のエントリーを追加しなければなりません。/etc/syslog.conf ファイルを編集しないと、メッセージはなにも生成されません。/etc/syslog.conf ファイルを変更した後、 refresh -s syslogd コマンドまたは、 kill-1SyslogdPID コマンドを実行して、 syslogd デーモンに、構成ファイルに加えた変更内容を通知してください。 デバッグ・レベルの詳細については、/etc/syslog.conf ファイルを参照してください。 |
| -q | ネットワーク上のファイルの送信に send_file サブルーチンを使用しなければならないことを指定します。このフラグは、ファイルがバイナリー・モードで保護されずに送信される場合にのみ適用されます。 |
| -t TimeOut | TimeOut 変数で指定された秒数後にアクティブでないセッションをログアウトします。デフォルトのリミットは 15 分 (900 秒) です。タイムアウトはデータ接続と制御接続の両方に適用されます。 |
| -T MaxTimeOut | MaxTimeOut 変数で指定された最大秒数後にアクティブでないクライアント・セッションをログアウトします。デフォルトのリミットは 2 時間 (7200 秒) です。 |
| -s | ソケット・レベルのデバッグをオンにします。 |
| -u OctalVal | ftpd デーモンの umask を設定します。OctalVal 変数は、umask を定義する 8 進数として指定しなければなりません。デフォルトの umask は 027 という 8 進数で、これは rw-r--- というファイル許可になります。 |
| -U | 転送中にファイルをアンロックしたままにします。このフラグが /usr/sbin/ftpd と 一緒に指定されている場合には、転送中でもファイルをオープンできます。 |
セキュリティー
ftpd デーモンは、サービス名が ftp の PAM 使用可能なアプリケーションです。認証に PAM を使用するようにシステム全体の構成を設定するには、root ユーザーとして /etc/security/login.cfg の usw スタンザにある auth_type 属性の値を PAM_AUTH に変更します。
#
# AIX ftp configuration
#
ftp auth required /usr/lib/security/pam_aix
ftp account required /usr/lib/security/pam_aix
ftp session required /usr/lib/security/pam_aix例
- ftpd デーモンを始動するには、次のように入力します。
-t フラグを指定して startsrc コマンドを実行すると、ftpd サブサーバーが始動されます。サブサーバーを指定するには、-t フラグを使用しなければなりません。このフラグを使用しないと、コマンドは正常に実行されません。startsrc -t ftp - ftpd デーモンを停止するには、通常、次のように入力します。
-t フラグを指定して stopsrc コマンドを実行すると、ftpd サブサーバーが停止されます。stopsrc コマンドを使用すると、保留中のすべての接続を始められ、既存の接続をすべて完了させ、新たな接続が始められるのを防ぐことができます。サブサーバーを指定するには、-t フラグを使用しなければなりません。このフラグを使用しないと、コマンドは正常に実行されません。stopsrc -t ftp - ftpd デーモンとすべての ftpd 接続を強制的に停止させるには、次のように入力します。
-t フラグと -f フラグを指定して stopsrc コマンドを実行すると、ftpd サブサーバーが強制的に停止されます。また、保留中のすべての接続と既存の接続が即座に終了します。stopsrc -f -t ftp - ftpd デーモンについての簡略状況報告を表示するには、次のように入力します。
-t フラグを指定した lssrc コマンドは、デーモンの名前、プロセス ID、および状態 (アクティブまたは非アクティブ) を戻します。サブサーバーを指定するには、-t フラグを使用しなければなりません。 このフラグを使用しないと、コマンドは正常に実行されません。lssrc -t ftp
ファイル
| 項目 | 説明 |
|---|---|
| /etc/locks/ftpd | インターロックおよびプロセス ID (PID) ストレージが入っています。 |
| /etc/group | グループ用のパスワードが入っています。 |
| /etc/passwd | ユーザー用のパスワードが入っています。 |
| /etc/security/login.cfg | ログインおよびユーザー認証のための構成情報が入っています。 |
| /etc/security/passwd | 暗号化されたパスワードが入っています。 |
| /etc/syslog.conf | syslogd デーモンの構成情報が入っています。 |
| /usr/samples/tcpip/anon.ftp | 無名の FTP アカウントを設定するためのシェル・スクリプト例が入っています。このファイルにはその使い方の説明も入っています。 |
| /etc/ftpd.cnf | TLS サポート用の構成パラメーターが入っています。 |