如何将ClamAV(通过mod_clamav)集成到ProFTPd中进行病毒扫描在Ubuntu 10.04

本教程解释如何将ClamAV集成到ProFTPd中 在Ubuntu 10.04系统上进行病毒扫描。这是通过mod_clamav实现的。 ...

本教程将介绍如何将ClamAV集成到ProFTPd中,用于在Ubuntu 10.04系统上进行病毒扫描。 这是通过mod_clamav实现的。 最后,每当通过ProFTPd上传文件时,ClamAV将检查文件,如果是恶意软件,将其删除。

我不会保证这将为您工作!

1初步说明

您应该在Ubuntu 10.04服务器上运行ProFTPd工作。

因为我们将使用root权限运行本教程中的所有步骤,我们可以使用字符串sudo来为本教程中的所有命令添加所有命令,也可以通过键入来成为root

sudo su

2安装ClamAV

ClamAV可以安装如下:

aptitude install clamav clamav-daemon libclamav-dev

现在我们必须重新配置ClamAV,以便Clamd使用TCP连接而不是本地的Unix套接字。 强烈建议在使用ProFTPd( DefaultRoot〜 )的Chroot功能时避免使用Unix套接字连接。 原因是如果mod_clamav需要连接到Clamd,则在chroot环境中Unix套接字不可用。

dpkg-reconfigure clamav-base

...并回答以下问题(接受所有其他问题的默认值):

套接字类型: < - TCP
TCP端口clamd将监听: < - 3310
IP地址clamd将监听: < - 127.0.0.1

然后重新启动Clamd和freshclam:

/etc/init.d/clamav-daemon restart
/etc/init.d/clamav-freshclam restart

现在跑

netstat -tap | grep clamd

...你应该看到Clamd是通过TCP监听本地主机的:

root@server1:~# netstat -tap | grep clamd
tcp        0      0 localhost.localdom:3310 *:*                     LISTEN      7911/clamd
root@server1:~#

3重建ProFTPd

不幸的是mod_clamav默认不是ProFTPd的一部分,并且没有Ubuntu的mod_clamav包,所以我们必须用mod_clamav重建ProFTPd。 我将使用ProFTPd的Ubuntu源代码包,并使用mod_clamav支持构建新的ProFTPd .deb软件包。

首先我们安装重建ProFTPd所需的所有软件包:

aptitude build-dep proftpd-dfsg

我们还需要以下软件包:

aptitude install libpam-dev dpkg-dev libmysqlclient-dev debhelper libpq-dev libldap2-dev libwrap0-dev libcap2-dev autotools-dev libncurses5-dev dpatch libacl1-dev libattr1-dev unixodbc-dev libsqlite3-dev

现在我们将ProFTPd源码包下载到/ usr / src中

cd /usr/src
apt-get source proftpd-dfsg

接下来我们将mod_clamav下载到/ usr / src并解压缩:

wget --no-check-certificate https://secure.thrallingpenguin.com/redmine/attachments/download/1/mod_clamav-0.11rc.tar.gz
tar xzvf mod_clamav-0.11rc.tar.gz

然后我们将mod_clamav-0.11rc / mod_clamav。*文件复制到proftpd-dfsg-1.3.2c / contrib目录 ...

cp mod_clamav-0.11rc/mod_clamav.* proftpd-dfsg-1.3.2c/contrib

...并修补ProFTPd源:

cd proftpd-dfsg-1.3.2c
patch -p1 < ../mod_clamav-0.11rc/proftpd.patch

接下来我们必须编辑debian / rules

vi debian/rules

搜索CONF_ARGS部分并添加--with-modules = mod_clamav给它:

[...]
CONF_ARGS := --prefix=/usr \
             --with-includes=$(shell pg_config --includedir):$(shell mysql_config --include|sed -e 's/-I//') \
             --mandir=/usr/share/man --sysconfdir=/etc/$(NAME) --localstatedir=/var/run --libexecdir=/usr/lib/$(NAME) \
             --enable-sendfile --enable-facl --enable-dso --enable-autoshadow --enable-ctrls --with-modules=mod_readme \
             --enable-ipv6 --enable-nls --with-modules=mod_clamav
[...]

现在我们可以重建ProFTPd:

dpkg-buildpackage

现在我们去一个目录,这就是新的.deb包的创建地方:

cd ..

命令

ls -l

显示可用包:

root@server1:/usr/src# ls -l
total 7500
drwxr-xr-x 24 root root    4096 2010-04-29 14:00 linux-headers-2.6.32-21
drwxr-xr-x  7 root root    4096 2010-04-29 14:00 linux-headers-2.6.32-21-server
drwxr-xr-x  2  501  501    4096 2009-04-20 10:22 mod_clamav-0.11rc
-rw-r--r--  1 root src     5115 2010-10-04 17:21 mod_clamav-0.11rc.tar.gz
-rw-r--r--  1 root src   930578 2010-10-04 17:38 proftpd-basic_1.3.2c-1_amd64.deb
-rw-r--r--  1 root src   630168 2010-10-04 17:38 proftpd-dev_1.3.2c-1_amd64.deb
drwxr-xr-x 14 root root    4096 2010-10-04 17:37 proftpd-dfsg-1.3.2c
-rw-r--r--  1 root src     4522 2010-10-04 17:38 proftpd-dfsg_1.3.2c-1_amd64.changes
-rw-r--r--  1 root src    98674 2010-10-04 17:30 proftpd-dfsg_1.3.2c-1.diff.gz
-rw-r--r--  1 root src     1138 2010-10-04 17:30 proftpd-dfsg_1.3.2c-1.dsc
-rw-r--r--  1 root src  3018899 2009-12-22 07:05 proftpd-dfsg_1.3.2c.orig.tar.gz
-rw-r--r--  1 root src  1408070 2010-10-04 17:38 proftpd-doc_1.3.2c-1_all.deb
-rw-r--r--  1 root src   315326 2010-10-04 17:38 proftpd-mod-ldap_1.3.2c-1_amd64.deb
-rw-r--r--  1 root src   305076 2010-10-04 17:38 proftpd-mod-mysql_1.3.2c-1_amd64.deb
-rw-r--r--  1 root src   306848 2010-10-04 17:38 proftpd-mod-odbc_1.3.2c-1_amd64.deb
-rw-r--r--  1 root src   304762 2010-10-04 17:38 proftpd-mod-pgsql_1.3.2c-1_amd64.deb
-rw-r--r--  1 root src   304634 2010-10-04 17:38 proftpd-mod-sqlite_1.3.2c-1_amd64.deb
root@server1:/usr/src#

我们可以安装新的ProFTPd .deb软件包,如下所示:

dpkg -i proftpd*.deb

4配置ProFTPd

现在我们必须将ProFTPd配置为在上传文件时使用mod_clamav。 打开/etc/proftpd/proftpd.conf ...

vi /etc/proftpd/proftpd.conf

...并添加节

<IfModule mod_clamav.c>
   ClamAV on
   ClamServer 127.0.0.1
   ClamPort 3310
</IfModule>

在某处,例如在下面

<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>

部分:

[...]
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>

<IfModule mod_clamav.c>
   ClamAV on
   ClamServer 127.0.0.1
   ClamPort 3310
</IfModule>

#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf
[...]

重启ProFTPd:

/etc/init.d/proftpd restart

现在检查mod_clamav是否通过运行加载:

proftpd -vv

mod_clamav应该在输出中列出:

root@server1:~# proftpd -vv
ProFTPD Version: 1.3.2c (maint)
  Scoreboard Version: 01040002
  Built: Mon Oct 4 17:34:10 CEST 2010

Loaded modules:
  mod_ifsession/1.0
  mod_dynmasq/0.2.1
  mod_wrap2_file/1.2
  mod_wrap2/2.0.6
  mod_ban/0.5.3
  mod_load/1.0.1
  mod_rewrite/0.7
  mod_wrap.c
  mod_quotatab_radius.c
  mod_quotatab_file.c
  mod_quotatab/1.3.0
  mod_radius/0.9
  mod_tls/2.2.2
  mod_ctrls_admin/0.9.5
  mod_lang/0.9
  mod_ctrls/0.9.4
  mod_cap/1.0
  mod_clamav.c
  mod_auth_pam/1.1
  mod_ident/1.0
  mod_dso/0.4
  mod_facts/0.1
  mod_delay/0.6
  mod_site.c
  mod_log.c
  mod_ls.c
  mod_auth.c
  mod_auth_file/0.8.3
  mod_auth_unix.c
  mod_xfer.c
  mod_core.c
root@server1:~#

而已! 现在每当有人尝试通过ProFTPd将恶意软件上传到您的服务器时,“坏”文件将被删除。 您可以通过从http://www.eicar.org/anti_virus_test_file.htm下载Eicar测试病毒来测试 。 尝试将其上传到您的ProFTPd服务器,如果一切正常,应该删除它: