proftpd-1.2.9p インストールメモ #--------------------------------------------------------------------------------------------- # proftpd 概要 #--------------------------------------------------------------------------------------------- 近年FTP サーバーソフトもセキュリティー被害が増大しています。FTP サーバーソフトには、wuftpd やproftpd などありますが、proftpd は利便性、安定性でlinux ユーザーに人気を集めています。 proftpd は従来のFTP サーバーソフトウェアとは下記の点で異なります。 ・Apache ウェブサーバを使った経験のある管理者なら直感的にわかるような、directive とdirective グループを使った単一の設定ファイル ・Apache の「.htaccess」に類似する「.ftpaccess」を使ったディレクトリごとの設定 ・マルチバーチャルFTP サーバとanonymous FTP サーバの簡単な設定 ・システムのロードによってスタンドアローン、または、inetd から走らせることが可能 ・Anonymous FTP のroot ディレクトリに特定のディレクトリ、システムバイナリ、その他のシステム ファイルを必要としない ・SITE EXEC コマンドのような外部のプログラムを実行しない ・unix のパーミッションや user/group のオーナーによってディレクトリやファイルを隠す ・スタンドアローンモードではroot 権限を利用したアタックを防ぐため、特権ユーザのいない設定で走 る ・ロギングとutmp/wtmp をサポートしている。ロギングはwu-ftpd 標準互換で拡張したロギングを利用可 能 ・Shadow password と期限付きアカウントをサポート #--------------------------------------------------------------------------------------------- # proftpd のインストール方法 #--------------------------------------------------------------------------------------------- proftpd 専用のユーザー/グループを作成します。ココで作成している”ftp”ユーザーは通常初期の状態で登録されています。 # groupadd ftpd # useradd -g ftpd -d /usr/local/proftpd -s /bin/false ftp proftpd のソースをインターネットよりダウンロード後、ソースを解凍します。 # su root # cd /usr/local/src # wget proftpd-1.2.7p.tar.gz # tar zxvf proftpd-1.2.7p.tar.gz proftpd を解凍後、ディレクトリに入りインストール作業を行います。 # cd proftpd-1.2.7p # ./configure --prefix=/usr/local/proftpd # make # make install #--------------------------------------------------------------------------------------------- # Passive モードとActive モードについて #--------------------------------------------------------------------------------------------- FTP プロトコルが使用するポートは2 種類あります。一つはコマンド等の制御コードの送信に使われる制御ポート(21 port) もう一つは実データの送信の使われるデータポート(20 port) です。 FTP は上記2 つのポートを使用するが故、従来より度々クラッカーの標的とされていました。そのこと例としてデータポートを狙ったFTP バウンスなどがあります。 FTP プロトコルでは、データを送受信する際の手順は2通りあります。 > Active モードを使ったデータ転送手順 サーバーのデータポート(20 port) よりPORT コマンドで指示されたクライアントIP のポートへデータコネクションを確立した後、データ転送する > Passive モードを使ったデータ転送手順 Active モードとは逆に、クライアントからサーバーの特定ポートへデータコネクションを確立する。この際、クライアント・サーバーのそれぞれのデータポートは任意に決定されます。 一度は聞いたことがあると思いますが、Active モードでは”ルータ・ファイアーウォール越え”ができません。 と言うのも、ルータを用いること自体、FTP するクライアントはNAT(IP マスカレードとも言う) の内部にあると考えられます。つまり、クライアントはルータによってDHCP され、ローカルIP を割り当てられています。 この時、FTP サーバーから接続を開始するActive モードでは、データ転送先のクライアントはFTP サーバーからはルータとして認識されます。NAT 内部のクライアントを特定する術がFTP サーバーにはないのですら・・・。 通常、FTP サーバーとクライアントの間にNAT ルータがある場合はPassive モードを使うと良い所以はここにあります。 #--------------------------------------------------------------------------------------------- # FTP のみの仮想ユーザーについて #--------------------------------------------------------------------------------------------- FTP ユーザーは通常、linux システムユーザーと 1 対 1 の関係にあります。この場合、FTP ユーザーを作成する度にシステムユーザーを消費するのでなにかと都合が悪いので、proftpd ではFTP のみの仮想ユーザーを作成することができ、FTP ユーザーとlinux システムユーザーが 多 対 1 の関係になるよう設定できるのです。 ● 仮想ユーザーを利用するための設定 proftpd で仮想ユーザーによる認証を行うために、proftpd.conf に次の記述を追加します。 ↓ ココから ------------------------------------------------ # PAM による認証を行う #AuthPAMAuthoritative on #AuthPAMConfig ftp # 認証は独自ファイル(仮想ユーザー) で行う AuthUserFile /usr/local/proftpd/etc/ftpd.passwd AuthGroupFile /usr/local/proftpd/etc/ftpd.group AuthOrder mod_auth_file.c ↑ ココまで ------------------------------------------------ ※ 注意 ) PAM による認証は仮想ユーザーによる認証を行う場合は無効としてください。通常、認証方式の優先順位はAuthOrder によって決まるので、AuthOrder にてproftpd の仮想ユーザーによる認証のみを有効としておきます。 ● 仮想ユーザーを登録する 上記、proftpd.conf の設定で、仮想ユーザーによる認証が利用できる状態となりました。そこで、次に貸そうユーザーをproftpd に登録します。登録するには、proftpd のソース一式のうち、/contrib/ ディレクトリに保存されているftpasswd プログラムを利用します。 # cd /usr/local/src/proftpd/contrib/ftpasswd /usr/local/proftpd/bin 上記のようなコマンドでftpasswd プログラムをインストールしてください。インストール後、仮想ユーザーをproftpd に登録します。 # cd /usr/local/proftpd # ./ftpasswd --passwd --file=./etc/ftpd.passwd --name=[ユーザー名] --uid=[ユーザーID] --gid=[グループID] \ --home=[ユーザーホームディレクトリ] --shell=/bin/false # echo '[グループ名]:x:[グループID]:' > ./etc/ftpd.group # chmod 644 ./etc/ftp.* 上記コマンドで以下のファイルが作成されました。 ftp.passwd | 仮想ユーザーをパスワード情報記憶するファイル ftpd.group | 仮想ユーザーのグループ情報を記憶するファイル