Red Hat Linuxなど多くのディストリビューションにはwu-ftpdというFTPサーバがインストールされているが、これには様々なセキュリティホールが発見されてて、あまりよくないらしい。
そこで、ProFTPD
というFTPサーバをインストールすることにした。なお、作業環境はRed Hat Linux 7.2J
である。
1.wu-ftpdがインストールされているかどうかの確認
wu-ftpdがインストールされているかどうかを調べ、インストールされているかどうかを確認する。
# rpm -q wu-ftpd 2.wu-ftpdのアンインストール
wu-ftpdを削除しようとすると、anonftpが関連付けられているためできないというメッセージが出る。そこで、先にanonFTPを削除してからwu-ftpdを削除する。
# rpm -e anonftp
# rpm -e wu-ftpd
ProFTPDのソースをダウンロードして
/usr/local/srcにコピーし、展開する。
$ cd /usr/local/src
$ tar xvfz proftpd-1.2.4.tar.gz
configureによりMakeファイルを作成する。
$ cd proftpd-1.2.4
$ ./configure --sysconfdir=/etc/proftpd --localstatedir=/var
makeを行う前に、
config.hを次のように編集する。
$ vi config.h
#ifndef PID_FILE_PATH
#define PID_FILE_PATH "/var/run/proftpd.pid"
#endif /* PID_FILE_PATH */コンパイルする。
$ make
コンパイルが正常に行えたら、インストールを行う。
$ make install
proftpd.confを開き、次のように編集する。
$ vi /etc/proftpd/proftpd.conf ServerName "Rina Server"←任意ServerType standalone DefaultServer onDefaultRoot ~ !wheel←追加# PAM←追加AuthPAMAuthoritative onAuthPAMConfig ftpUser nobody Groupnobody←変更# A basic anonymous configuration, no upload directories.#<Anonymous ~ftp>←以下、全てコメントアウト#User ftp#Group ftp ・ ・ ・##</Anonymous>
Red Hat Linuxでは認証にPAMを使用しているため、FTPユーザをPAMで認証させるための設定を行う。
/etc/pam.dに
ftpファイルを作成する。
$ vi /etc/pam.d/ftp 以下の行を入力し、保存する。
#%PAM-1.0 auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib/security/pam_pwdb.so shadow nullok account required /lib/security/pam_pwdb.so session required /lib/security/pam_pwdb.so
/etc/ftpusersファイルを作成する。
$ vi /etc/ftpusers 接続させないユーザを列挙する。
root
bin
daemon
adm
sync
shutdown
halt
operator
nobody
/etc/rc.d/init.d/に起動スクリプトを作成する。
$ vi /etc/rc.d/init.d/proftpd 以下のスクリプトを入力し、保存する。
#!/bin/sh # # chkconfig: 345 85 15 # description: ProFTPD Server # # Source function library. . /etc/rc.d/init.d/functions if [ ! -f /etc/sysconfig/network ]; then exit 0 fi . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x /usr/local/sbin/proftpd -a -f /etc/proftpd/proftpd.conf ] || exit 0 RETVAL=0 # See how we were called. case "$1" in start) echo -n "Starting proftpd: " daemon /usr/local/sbin/proftpd RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/proftpd ;; stop) echo -n "Stopping proftpd: " killproc proftpd RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/proftpd ;; status) status proftpd ;; restart) killall -HUP proftpd ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 esac exit $RETVAL作成後、実行権を与える。
$ chmod 755 /etc/rc.d/init.d/proftpd ランレベルごとのシンボリック・リンクを作成する。
$ chkconfig --add proftpd
ProFTPDの起動は次のように行う。
$ /etc/rc.d/init.d/proftpd startまた、停止は次のように行う。
$ /etc/rc.d/init.d/proftpd stop
これで、Windowsマシンからftpソフトを使って今までと同様に接続できるはず。でも動いているのはwu-ftpdじゃなくてProFTPDである。