close

ProFTPD + mod_clamav + Quota 建置備忘

  • 安裝 ProFTPD + mod_clamav 建立具有防毒功能的 ftp server
  • 限制 ftp user 的磁碟空間

環境

安裝 proftpd + mod_clamav

下載 ProFTPD

tar jxf proftpd-*.bz2

cd proftpd-*/modules

wget http://www.uglyboxindustries.com/mod_clamav_new.c

mv mod_clamav_new.c mod_clamav.c

cd ../

./configure --with-modules=mod_clamav

make && make install

建立 ftp user, 設定 quota

#建立 ftp user 帳號密碼
useradd -s /bin/false user1 && passwd user1
useradd -s /bin/false user2 && passwd user2
useradd -s /bin/false user3 && passwd user3

#建立 512MB 虛擬磁區 (for quota)
dd if=/dev/zero of=/opt/ftp.img bs=512K count=1 seek=1024
mkfs.ext2 /opt/ftp.img

#將虛擬磁區掛載到 /var/ftproot, 並讓它支援 quota
mkdir /var/ftproot
mount -o loop,usrquota,grpquota /opt/ftp.img /var/ftproot

#建立使用者 ftp 實體路徑
cd /var/ftproot
mkdir user1 user2 user3
chown user1:user1 user1
chown user2:user2 user2
chown user3:user3 user3
chmod 700 user?

#建立 quota files (aquota.group & aquota.user)
quotacheck -vug /var/ftproot

#設定磁碟空間使用額度: 10MB, 上限 15MB
edquota -u user1 -f /var/ftproot

Disk quotas for user user1 (uid 500):
FileSystem blocks soft hard inodes soft hard
/dev/loop0 0 10240 15360 0 0 0

#將 user1 的 quota 設定複製給其他 user
edquota -p user1 -u user2
edquota -p user1 -u user3

#啟用 quota
quotaon -vug /var/ftproot

Tips:

  • dd 參數亦可使用 bs=1024K count=512 產生 512MB 空間, 但速度不若 bs=512K count=1 seek=1024 來得快
  • 使用 Linux console 計算機計算 quota 額度. 例如: 15MB = expr 1024 \* 15 = 15360

讓每個 user 登入 ftp server 後, root directory 為 /var/ftproot 裡對應自己名稱的資料夾

#在 user 家目錄中建立軟連結
cd ~user1
ln -s /var/ftproot/user1 ftp
cd ~user2
ln -s /var/ftproot/user2 ftp
cd ~user3
ln -s /var/ftproot/user3 ftp

#編輯 proftpd 設定檔
vi /usr/local/etc/proftpd.conf

PassivePorts   60000 65000
IdentLookups   off
UseReverseDNS   off
AllowStoreRestart   on
AuthPAM   off
RequireValidShell   off
DefaultRoot   ~/ftp (重點)
User   nobody
Group   nobody

#啟用防毒功能
<IfModule mod_clamav.c>

ClamAV on
ClamLocalSocket /tmp/clamd.socket

</IfModule>

#啟動 clamd, clamd 的執行身份必須是 root (mod_clamav 0.5 需要 clamd)
clamd

#啟動 proftpd
proftpd

Tips:

  • 匿名使用者 (anonymous) 預設根目錄在 /var/ftp, 若要取消 anonymous 的登入功能, 將 <Anonymous> 全數註解或刪除即可

系統設定

#開放 Passive Ports
iptables -A INPUT -p tcp --dport 60000:65000 -j ACCEPT

#開機自動掛載 ftp.img
vi /etc/fstab

/opt/ftp.img    /var/ftproot    ext2    defaults,loop,usrquota,grpquota    0 0

#開機自動啟動 clamd 與 proftpd
vi /etc/rc.d/rc.local

/usr/local/sbin/clamd
/usr/local/sbin/proftpd


參考資料

延伸閱讀

arrow
arrow
    全站熱搜

    安德森 發表在 痞客邦 留言(0) 人氣()