(最終更新日時:2009-02-21 08:24:13)
オープンソースのFTPデーモンである
ProFTPD をFTPサーバーとしてインストールします。
ダウンロード
| ・ | Candidate: 1.3.2rc4 bz2 | : | proftpd-1.3.2rc4.tar.bz2 |
インストール
/usr/local/srcディレクトリでアーカイブを展開し、コンパイルおよびインストールを行います。
$ cd /usr/local/src
$ tar xjvf ダウンロード先/proftpd-1.3.2rc4.tar.bz2
$ cd proftpd-1.3.2rc4
$ ./configure \
> --with-modules=mod_tls SSL/TLSを有効にします
$ make
$ su ここからはrootで行います
# #---(checkinstallでRPMファイルを作成し、インストールします)---
# /usr/sbin/checkinstall --exclude=/selinux -R --fstrans=no -y
# rpm -Uhv /usr/src/redhat/RPMS/i386/proftpd-1.3.2rc4-1.i386.rpm
# #---(checkinstallを使用されない場合は、make install でインストールします)---
# make install
FTPサーバディレクトリ構成
インストール後のFTPサーバディレクトリは以下になります。(抜粋)
赤字のディレクトリは作成してください。()内はパーミッションです。
/var/proftpd/ … FTPサーバトップディレクトリ
┣ etc/ (755) … 認証用ファイルディレクトリ
┗ ssl/ (755) … SSL用ファイルディレクトリ
/var/log/ … ログディレクトリ
┗ proftpd/ (755) … FTPサーバログディレクトリ
設定
ProFTPDの設定ファイルを編集します。
# vi /usr/local/etc/proftpd.conf
:
ServerName "System House ACT FTP Server"
# FTP Server接続時に表示されるServer名です
ServerType inetd
# xinetdによる起動にします
:
# Don't use IPv6 support by default.
#UseIPv6 off
# IPv6未サポートでインストールしていますので、コメントアウトします
# IPv6サポートは、インストール時に --enable-ipv6 オプションが必要です
:
Group nobody
# 認証されるまでの接続groupです
:
#DefaultRoot ~
DefaultRoot ~
# ホームディレクトリ以外へのアクセスを禁止します
:
# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD>
DenyAll
AllowGroup サイト内ファイルの属性変更を許可するグループ
</Limit>
# 認証は専用グループ/ユーザーファイルを作成して行います
AuthUserFile /var/proftpd/etc/ftpd.passwd
AuthGroupFile /var/proftpd/etc/ftpd.group
AuthOrder mod_auth_file.c
# リモートユーザ名の確認にidentプロトコルを使用しません
IdentLookups off
# 時刻表示にローカルタイムを使用します
TimesGMT off
# リストに全ファイルを表示します
ListOptions -a
# カスタムフォーマットでログ出力を行います
LogFormat auth "[%{%d/%b/%Y %T}t] %u %a[%P] - %h"
LogFormat info "[%{%d/%b/%Y %T}t] %u %a[%P] \"%r\" %s"
LogFormat read "[%{%d/%b/%Y %T}t] %u %a[%P] %f -> %b"
LogFormat write "[%{%d/%b/%Y %T}t] %u %a[%P] %f <- %b"
ExtendedLog /var/log/proftpd/access.log AUTH auth
ExtendedLog /var/log/proftpd/access.log INFO info
ExtendedLog /var/log/proftpd/access.log DIRS info
ExtendedLog /var/log/proftpd/access.log MISC info
ExtendedLog /var/log/proftpd/access.log READ read
ExtendedLog /var/log/proftpd/access.log WRITE write
# "Timing attack"対策を有効にします
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
DelayTable /var/proftpd/proftpd.delay
# PASV接続用のポートを制限します
PassivePorts 12200 12229
# アクセス制限を行います
<Limit LOGIN>
DenyALL
AllowGroup ログインを許可するグループ ftpgroup
</Limit>
:
<Anonymous ~ftp> # AnonymousFTPの運用を行わない場合は
: # 全項目コメントアウトするか削除します
</Anonymous>
認証用のグループとユーザを作成します。
# mkdir -p /var/proftpd/etc
# cd /usr/local/src/proftpd-1.3.2rc2/contrib
# ./ftpasswd \
> --group \ グループを作成します
> --file=/var/proftpd/etc/ftpd.group \ グループファイルを指定します
> --name=ftpgroup \ 作成するグループ名を指定します
> --gid=2000 作成するグループのgidを指定します
# ./ftpasswd \
> --passwd \ ユーザを作成します
> --file=/var/proftpd/etc/ftpd.passwd \ ユーザファイルを指定します
> --name=ftpuser \ 作成するユーザ名を指定します
> --uid=2000 \ 作成するユーザのuidを指定します
> --gid=2000 \ 作成するユーザのgidを指定します
> --home=/home/www/vhosts/system-act.com/www/ftpuser \ 作成するユーザのホームディレクトリを指定します
> --shell=/sbin/nologin FTP専用ユーザで作成します
SSL/TLS設定
OpenSSL運用 を参考にサーバー証明書とサーバー秘密鍵を生成し、FTPサーバーに設定します。
# mkdir /home/ssl/server/ftp サーバー証明書の生成・保管場所を作成します
# cd /home/ssl/server/ftp
:
(サーバー証明書とサーバー秘密鍵を生成)
:
# mkdir /var/proftpd/ssl サーバー証明書をサーバーに設定します
# chmod 755 /var/proftpd/ssl
# cp /home/ssl/server/ftp/server.{crt,key} /var/proftpd/ssl/
ProFTPDの設定ファイルにSSL/TLS設定を追加します。
# vi /usr/local/etc/proftpd.conf
:
# SSL/TLS設定を行います
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
# SSL/TLS接続を強制しません
TLSRequired off
# サーバー証明書とサーバー秘密鍵を指定します
TLSRSACertificateFile /var/proftpd/ssl/server.crt
TLSRSACertificateKeyFile /var/proftpd/ssl/server.key
# クライアント証明書を必要としません
TLSVerifyClient off
</IfModule>
:
起動
xinetdの設定ファイルを作成します。
# vi /etc/xinetd.d/ftp
# default: on
# description: The ProFTPD FTP server serves FTP connections. It uses \
# normal, unencrypted usernames and passwords for authentication.
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/in.proftpd
log_on_success += HOST PID
log_on_failure += HOST
}
iptablesの設定ファイルを編集し、外部からFTPが使用できるようにします。
# vi /etc/sysconfig/iptables-config
:
IPTABLES_MODULES="ip_conntrack_ftp"
:
# service iptables restart
ファイアーウォール
iptables の設定を追加します。
# vi /usr/local/sbin/firewall.sh
:
# --- (INPUTチェイン) ---
:
# FTP接続を許可
iptables -A INPUT -i $EXTIF -p tcp --dport 21 -j CHK-SYNFLOOD
:
# --- (OUTPUTチェイン) ---
:
# FTP接続を許可
iptables -A OUTPUT -o $EXTIF -p tcp --sport 21 -m state --state ESTABLISHED,RELATED -j ACCEPT
:
# firewall.sh 設定を反映させます
xinetdを再起動します。
# service xinetd restart
logrotateへ追加
ログファイルを logrotate の対象にするため、logrotate の設定ファイルを作成します。
vi /etc/logrotate.d/proftpd
/var/log/proftpd/access.log {
missingok
}
Copyright © 2004-2010 System House ACT. All Rights Reserved.