Pure-FTPdのインストール

サーバー運用がかなり厳しいので寄付をしてくれる人がいたらこちら
メインPCもボロボロになってきたので、ついにほしいものリスト公開

この情報は古い可能性があります!

なかなか使えるpure-ftpdをSSL対応(SSLの暗号化は認証だけらしい)で
インストールしてClamAVと連携させてアップロードされたら
ウィルスチェックしてウィルスがあったらそのファイルのアクセス権を
剥奪+メールにてお知らせをやってみます。

ものすごい久しぶりにバージョンがあがってました。

HP: http://www.pureftpd.org/

インストール

cd /usr/local/src
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.22.tar.bz2
tar jxvf pure-ftpd-1.0.22.tar.bz2
cd pure-ftpd-1.0.22
(Apacheで作成した証明書を流用)
cat /usr/local/apache2/conf/ssl.key/server.key > /usr/share/ssl/certs/pure-ftpd.pem
cat /usr/local/aapche2/conf/ssl.crt/server.crt >> /usr/share/ssl/certs/pure-ftpd.pem

./configure \
--with-tls \
--with-altlog \
--with-pam \
--with-cookie \
--with-throttling \
--with-ratios \
--with-quotas \
--with-ftpwho \
--with-largefile \
--with-welcomemsg \
--with-uploadscript \
--with-virtualhosts \
--with-virtualchroot \
--with-diraliases \
--with-peruserlimits \
--with-certfile=/usr/share/ssl/certs/pure-ftpd.pem

make
make install

cp contrib/redhat.init /etc/init.d/pure-ftpd
chmod 755 /etc/init.d/pure-ftpd
chkconfig --add pure-ftpd

cp configuration-file/pure-ftpd.conf /etc
cp configuration-file/pure-config.pl /usr/local/sbin
chmod 755 /usr/local/sbin/pure-config.pl

設定ファイル

/etc/pure-ftpd.conf
変更というか現状の設定です。
コメントアウトされた部分は省略してあります。

#全員chrootにするか?
ChrootEveryone yes
#このグループIDはchroot対象外
TrustedGID xxx
BrokenClientsCompatibility yes
#最大クライアント数
MaxClientsNumber 50
#デーモンで起動するか
Daemonize yes
#1IPアドレスあたりの最大接続数
MaxClientsPerIP 4
#詳細ログをとるか?
VerboseLog yes
#.xxxファイルのようなドットから始まるファイルを見せるか?
DisplayDotFiles no
#Anonymousだけ?
AnonymousOnly no
#Anonymousは拒否するか?
NoAnonymous no
SyslogFacility local2
#逆引きをしない?
DontResolve no
#最大アイドルタイム
MaxIdleTime 3
LimitRecursion 2000 8
#Anonymousはディレクトリを作れる?
AnonymousCanCreateDirs no
#最大負荷(マシン上でこれを超えると何も出来なくなるらしい?)
MaxLoad 1
#あんちわれず
AntiWarez yes
AnonymousBandwidth 1000000
Umask 133:022
#これ以下のユーザIDはログインできない
MinUID 300
AllowUserFXP no
AllowAnonymousFXP no
ProhibitDotFilesWrite yes
ProhibitDotFilesRead yes
AutoRename no
AnonymousCantUpload yes
AltLog clf:/var/log/pureftpd.log
PIDFile /var/run/pure-ftpd.pid
CallUploadScript yes
MaxDiskUsage 100
CustomerProof yes
#SSLの使い方(0使わない1両方使える2SSLのみ許可)
TLS 1
IPV4Only yes

そしてちょこっと起動スクリプトを改造

/etc/init.d/pure-ftpd

# Path to the pure-ftp binaries.
prog=pure-config.pl
uprog=pure-uploadscript
vprog=/usr/local/bin/wrapper.pl
fullpath=/usr/local/sbin/$prog
vfullpath=/usr/local/sbin/$uprog

#start()内の適当な場所に
echo -n $"Starting $uprog: "
$vfullpath -r $vprog 2>&1 >/dev/null &
RETVAL=$?
echo
#stop()内の適当な場所に
echo -n $"Stopping $uprog: "
kill -9 `cat /var/run/pure-uploadscript.pid`
RETVAL=$?
echo

次にアップロードされたときに使うスクリプトを用意します。

/usr/local/bin/wrapper.pl

#!/usr/bin/perl -w

$clamscan='/usr/local/bin/clamscan';
$sendmail='/usr/sbin/sendmail';
$admin=' webmaster@momo-i.org このメールアドレスは、スパムロボットから保護されています。アドレスを確認するにはJavaScriptを有効にしてください ';
$file=$ARGV[0];

if ($file eq "") { exit 1; }

if ($clamscan ne "") {
chop($output = `$clamscan --stdout --lha --tar --unzip --unrar --arj --jar --tgz $file`);
$errval = $?;
if ($errval == 0) { # no error, no virus
exit 0;
} elsif ($errval == 256) { # detect virus
chmod(0000,"$file");
chown 0, 0, $file;
@virusname = ($output =~ /.*: (.+) FOUND/g);
open MAIL, ("|$sendmail -t");
print MAIL "To: $admin\n";
print MAIL "Subject: [pureftpd: Alert] Virus FOUND from $file\n\n";
print MAIL "Virus name: @virusname\n\n";
print MAIL "$output\n";
close MAIL;
} else {
exit 1;
}
}

最後に起動です。

/etc/init.d/pure-ftpd start

後は実際にeicarなどのテストウィルスをアップロードしてみると、
きちんと処理が行われているはずです。

Tags: 

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
CAPTCHA
また変更しました
Fill in the blank.