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

なかなか使える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 ';
$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などのテストウィルスをアップロードしてみると、
きちんと処理が行われているはずです。

タグ

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
半角で
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。
ももーい に投稿