Linuxのほとんどのディストリビューションが標準のFTPとしてWu-ftpdを採用している。しかし、Wu-ftpdは結構頻繁にセキュリティホールが見つかっており、セキュリティ面での脆さが指摘されている。したがって、今回セキュリティ面に強いと定評である
Proftpd をインストールしたのでインストール方法を紹介する。
1.ソースのありか
小生がインストールした時点では、1.2.2rc3が最新だったのでこれを使用した。そろそろ、1.2.2の正式版が出るはずだ。ソースは、
ここ で入手しよう!
2.インストール(展開・コンパイル)
ダウンロードしたソースを展開する。
$ tar -zxvf proftpd-1.2.2rc3.tar.gz
次に、展開したディレクトリに移動し、configureを実行する。ここでインストール先を変更したい場合は、"--prefix"を指定する。デフォルトでは、/usr/local以下にインストールされる。
$ cd proftpd-1.2.2rc3
$ ./configure
エラーなしで、終了したらmakeし、rootになってインストールする。
$ make
$ su
password **********
# make install
エラーが出なければ、これでインストール完了!
3.設定と起動
メインプログラムファイルproftpdと、別名ファイルのin.proftpdが/usr/local以下のsbinにインストールされている。
また、etcディレクトリにproftpd.confファイルがインストールされている。このファイルを、カスタマイズする。その他のファイルを含め、ディレクトリ構造とファイルを以下に示す。
/usr/local/proftpd
メインプログラム
/usr/local/sbin/inproftpd
proftpdへのシンボルリンク
/usr/local/etc/proftpd.conf
設定ファイル
/usr/local/bin
補助プログラム類
/usr/local/man
マニュアル類
■ とりあえず起動してみる
起動は、rootになって実行する。
$ su -
password **********
# /usr/local/sbin/proftpd
これでProftpdが起動する。しかし、RedHat系のディストリビューションの場合、以下のようなエラーが出る。
- no such group 'nogroup'
- Fatal : Group: Unknown 'nogroup'.
設定ファイルが設定しているnogroupが無いというエラーである。Proftpdは、proftpd.confファイルにデフォルトで'nogroup'が設定されている。したがって、これを変更する必要がある。
# vi /usr/local/etc/proftpd.conf
# Set the user and group that
the server normally runs at.
User
nobody
Group
nogroup ← これを
nobody に訂正する
これで、起動してもエラーは出ないはずである。
proftpd.conf編集後サンプルはこちら ↓
#
This is a basic ProFTPD configuration file
#
# It establishes a single server and a single anonymous
login.
# It assumes that you have a user/group "nobody" and "ftp"
# for normal operation and anon.
ServerName
"Welcome ProFTPD yh Server"
#ServerType
inetd
ServerType
standalone
DefaultServer
on
DefaultRoot
~ !root
# Port 21 is
the standard FTP port.
Port 21
# Umask 022 is
a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
# Use localtime
TimesGMT FALSE
# To prevent DoS attacks, set the maximum number of child
processes
# to 30. If you need to allow more than 30 concurrent
connections
# at once, simply increase this value. Note that this
ONLY works
# in standalone mode, in inetd mode you should use an
inetd server
# that allows you to limit maximum number of processes
per service
# (such as xinetd)
MaxInstances 30
# Set the user and group that the server normally runs
at.
User nobody
Group
nobody
# Normally, we want files to be overwriteable.
<Directory /*>
AllowOverwrite on
</Directory>
# A basic anonymous
configuration, no upload directories.
#<Anonymous ~ftp>
#User ftp
#Group ftp
# We want clients to be able to login with "anonymous"
as well as "ftp"
#UserAlias anonymous ftp
# Limit the maximum number of anonymous logins
#MaxClients 10
# do not require shells listed in /etc/shells (user ftp
do not have shell...)
RequireValidShell no
# We want 'welcome.msg' displayed at login, and '.message'
displayed
# in each newly chdired directory.
#DisplayLogin welcome.msg
#DisplayFirstChdir .message
# Limit WRITE everywhere in the anonymous chroot
#<Limit WRITE>
#DenyAll
#</Limit>
#</Anonymous>
|
4.inetdデーモンからの起動
小生は、inetdデーモンからProftpdを起動している。参考に、この方法も説明する。
まず、inetd.confファイルに以下を追加する。
# vi /etc/inetd.conf
ftp stream
tcp nowait root
/usr/sbin/tcpd /usr/local/sbin/in.proftpd
tcpdを使うのでもちろん、wapperの設定も出来る。さらに、従来の、in.ftpdがinetd.confファイル中にある場合は、コメントすること。次に、proftpd.confファイルを編集する。
# vi /usr/local/etc/proftpd.conf
ServerName
"ProFTPD Custam" ← これは好きに変更してかまわない
ServerType
inetd
← このように inetd に訂正する
これで設定は、完了!inetdにシグナルを与える。
# killall -HUP inetd
これで、Proftpdが起動される。
さあ、FTPクライアントで接続してみよう!
注:セキュリティ的に必要のないサービスは止めて置いた方がよいでしょう。proftpd.confファイルの<Anonymous
~ftp>から</Anonymous>迄の行を全て「#」でコメントする。削除してもかまわないが、後の設定の参考になるかと思うので残しておく。
5.ディレクトリアクセス制限
FTPでアクセスする場合、ユーザ別でのアクセス制限をかけたくなるであろう!
もちろん、Proftpもその手の制限は簡単に出来る。例として、以下のような条件でアクセス制限をかけてみる。
例1) home以下のusersグループのメンバーにはホーム以下の各メンバーディレクトリ以外のアクセスは禁止。また、rootグループのメンバーについては全てのディレクトリのアクセスを許可する。
DefaultRoot ~users,
!root
例2) rootグループ以外は上位ディレクトリアクセス禁止。
DefaultRoot
~ !root
← 注:チルダとビックリマークの間のスペースが微妙に大切なので注意のこと(コネクト出来なくなります)!
これらのような記述をproftpd.confのDefaultServerの下あたりに記述すれば良い。
6.運用中のワーニング
FreeBSDにproftpをインストールして、運用していたところ以下のワーニングが出た。ただし、Linuxでは基本的にワーニングとならない。
Nov 27 23:17:20 note proftpd[222]:
no modules loaded for `ftpd' service
/var/log/messagesの中身に現れたワーニングである。これは、あくまでもワーニングなので気にしない人は何も対策する必要はないのだが、
俺にとっては、かなりうざったい! 何れにしても、同FTPサーバへloginする時にはき出されるものでFTPを頻繁に使う方には対策を取った方が良いだろう。このメッセージが出る原因は、どうも/etc/pam.confに有るようだ。proftpdはPAMが使える状態で有ればこれを使って認証を許可する。したがって、この中のpam.confのFTPセクションの記述の整合性が合わなくなるために起こる問題のようだ。対策は、比較的簡単で/etc/pam.confへ以下のような記述を追加編集する。既にあるFTPセクションの記述は、コメントにする。
# Same requirement for ftpd
as login
ftpd auth requisite pam_unix.so try_first_pass
ftpd account requisite pam_unix.so try_first_pass
ftpd session required pam_permit.so
追加編集が終わったら、FTPサーバにloginして試して欲しい。
# tail -f /var/log/messages
でログをリアルタイム出力にしてftpコマンドを発行して、メッセージの出力状況を確認しながらテストすると解りやすい。
以上
|