* [[ProFTPD]]
FTPサーバです。
#contents
** 環境設定
http://www.proftpd.org/からダウンロードしましょう。1.2.10をダウンロードしました。2006/05/02では1.3.0になってました。 --with-modules=mod_tls --with-includes=/usr/include/opensslはftpsを使う場合です。
./configure --with-modules=mod_tls --with-includes=/usr/include/openssl
make
make install
あと/etc/xinetd.dにproftpdをつくって
# default: on
# description: The ProFTPD FTP server
service ftp
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/in.proftpd
log_on_success += HOST PID
log_on_failure += HOST
disable = no
}
HOST:サーバ名
PID:プロセスID
USERID:ユーザID
EXIT:終了を記録
DURATION:接続時間を記録
ここで、
log_on_success += HOST PID USERID EXIT DURATION
log_on_failure += HOST USERID
としているとすごく遅かったので、変更しました。
ではリスタートしましょう。
/etc/init.d/xinetd restart
nmap localhostで確認しておきましょう。また使っているモジュールも確認しておきます。
/usr/local/sbin/proftpd -l
またつながらない等の原因を調べる場合は、
/usr/local/sbin/proftpd -n
で画面にログを出しましょう。
** proftpd.conf
/usr/local/etc/proftpd.confを見ていきます。
-Servertype
inetdとstandaloneがあります。standaloneでは、proftpd が常駐しますので、xinetd.d経由のinetdにしてます。
-DefaultServer on
VirtualHostの設定でない場合デフォルトが使われます。
-Umask 022
ファイルやディレクトリを作ったときのumask値
-ServerIdent on ""
サーバのバージョン等表示させたくない場合。
-DefaultRoot ~
必ず設定しておきましょう。ルートを設定できます。また
DefaultRoot ~ ,!nobody
とするとnobodyグループ以外に適応される。また,(カンマ)でつなげれる。~の後ろのスペースはいります。
-ShowDotFiles off
ドットファイルを表示させない。はずが、エラーになります。どうも変わったようです。
ListOptions "-a"
-RootLogin off
rootログイン不可
-UseReverseDNS off
名前解決しない。
-IdentLookups off
Identを停止することで、レスポンスが向上します。
-TimesGMT off
日本時間に変更
-AllowRetrieveRestart on
レジューム対応
-DeleteAbortedStores on
アップロード中断ファイルの削除
-MaxClientsPerHost 1
同一ホストからは1接続
-MaxStoreFileSize 10 Mb
アップロードファイルの最大値の制限
ここであるグループに制限を増やしたい場合は、
#hogegrp
MaxStoreFileSize 500 Mb group hogegrp
#hogeuser
MaxStoreFileSize 500 Mb user hogeuser
#etc
MaxStoreFileSize 10 Mb
-AuthPAMConfig ftp
PAM認証設定 AuthPAMAuthoritative Onを指定するとworningがでた。
-PathDenyFilter "(\.mpeg)|(\.mpg)|(\.exe)|(\.MPEG)|(\.MPG)|(\.EXE)$"
mpeg,mpg,exeのアップロードを禁止したい。
-Directory
<Directory /*>
AllowOverwrite on
</Directory>
/ディレクトリは書き込みをOKにします。
<Anonymous ~ftp>
Anonymousです。使わない場合はコメントしておきましょう。
<Limit SITE_CHMOD>
DenyAll
</Limit>
属性の制限になります。AllowAllで許可されます。
-MasqueradeAddress グローバルIPもしくはサーバー名
使用ルータがPASVモードに非対応の時に下記も併せて設定してみましょう。~
ルータによってはコメントを
-PassivePorts 4000 4029
最大ポート、最小ポートを指定します。またポートは1024以上を指定します。~
ルータによってはコメントを
- モジュール
-- mod_delay.c
Timing attack対策です。
mkdir /var/proftpd
chown -R nobody:nobody /var/proftpd
としておきproftpd.confに
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
DelayTable /var/proftpd/proftpd.delay
を追加します。
--mod_tls.c
SSL/TLSです。
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
# SSL/TLS接続 offであれば通常も可
TLSRequired off
#サーバー証明書
TLSRSACertificateFile /usr/local/mycerts/server.crt
#サーバー秘密鍵
TLSRSACertificateKeyFile /usr/local/mycerts/server.key
# クライアント証明書
TLSVerifyClient off
</IfModule>
[[SSL>http://hidekazu.dhs1.sst.ne.jp/pukiwiki/pukiwiki.php?SSL]]を参考に~
また[[ソフト>http://hidekazu.dhs1.sst.ne.jp/pukiwiki/pukiwiki.php?%A5%BD%A5%D5%A5%C8]]のSmartFTPでFTP over SSL Explisitにしてます。
また以下はログの設定です。
LogFormat allinfo "%t : %u (%a [%h]) : [%s], %T, %m (%f)"
LogFormat write "%t : %u : %F (%a) : [%s]"
LogFormat read "%t : %u : %F (%a) : [%s]"
LogFormat auth "%t : %u (%a [%h]) : [%s]"
ExtendedLog /var/log/proftpd/all.log ALL allinfo
ExtendedLog /var/log/proftpd/write.log WRITE write
ExtendedLog /var/log/proftpd/read.log READ read
ExtendedLog /var/log/proftpd/auth.log AUTH auth
%h リモートホスト名
%a リモート IP アドレス
%l リモートユーザ名
%p ローカルサーバのポート番号
%v ローカルサーバ名
%P ローカルサーバのプロセス id
%r クライアントから受け取ったフルのコマンドライン
%t 現在のローカルタイム
%T ファイルの送受信にかかった時間(秒)
%s Numeric FTP レスポンスコード
%u ローカルで認証された userid
レスポンスコードはhttp://www.atmarkit.co.jp/fnetwork/rensai/netpro10/ftp-responsecode.htmlを参照してください。
終わりましたら、
/usr/local/sbin/proftpd -t /usr/local/etc/proftpd.conf
(/usr/local/sbin/proftpd -t)
でチェックしておきましょう。Groupでnogroupでエラーと出る場合は、nobodyに変更しておきましょう。また/etc/pam.dのftpをloginで上書きします。では
/etc/init.d/xinetd restart
** SSL/TLS
http://www.aconus.com/~oyaji/ftp/proftpd_ssl.htm~
http://homepage1.nifty.com/yito/anhttpd/faq/ftp.html~
** TIPS
-一覧が見えない~
NLSTでコマンドを送っているソフトはみえないので、LISTが送れるソフトに変えましょう。RFC959に基づく変更です。ffftpはデフォルトでは見えません。
-ログインできるユーザを制限する。~
ユーザの場合は、AllowUser グループの場合は、AllowGroup
<Limit Login>
Order allow,deny
AllowGroup hogeg
AllowUser hogeu1,hogeu2
Deny All
</Limit>
** リンク
http://www.infoscience.co.jp/technical/proftpd/index.html~
http://yamamaya.com/labo/labo2-3.html~
http://www.stackasterisk.jp/tech/systemConstruction/proftpd01_01.jsp~
http://www.miloweb.net/pastbbs/0005/1382.html~
http://www.aconus.com/~oyaji/ftp/proftpd_rpm.htm~
http://sphere.zive.net/server/ftp.htm~
http://landisk.kororo.jp/diary/34_proftpssl.php~
[[FTPの状態およびエラー・コード>http://www.hiteksoftware.com/jp/knowledge/articles/FTP%20status%20code.htm]]~
** 参考書籍