Debian Lenny에서 바이러스 스캔을 위해 ClamAV(mod_clamav를 통해)를 ProFTPd에 통합하는 방법

Debian Lenny에서 바이러스 스캔을 위해 ClamAV(mod_clamav를 통해)를 ProFTPd에 통합하는 방법

2022-10-20 last update

8 minutes reading security ftp debian
이 튜토리얼은 Debian Lenny 시스템에서 바이러스 스캔을 위해 ClamAV를 ProFTPd에 통합하는 방법을 설명합니다. 이것은 mod_clamav 을 통해 달성됩니다. 결국 ClamAV는 ProFTPd를 통해 파일이 업로드될 때마다 해당 파일을 확인하여 악성코드일 경우 삭제합니다.
나는 이것이 당신에게 효과가 있다는 어떤 보장도 하지 않습니다!

1 서문


Debian Lenny 서버에 작동하는 ProFTPd 설정이 있어야 합니다.

2 ClamAV 설치


ClamAV는 다음과 같이 설치할 수 있습니다.
aptitude install clamav clamav-daemon libclamav-dev
이제 Clamd가 로컬 Unix 소켓 대신 TCP 연결을 사용하도록 ClamAV를 재구성해야 합니다. ProFTPd의 Chroot 기능(DefaultRoot ~)을 사용할 때 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를 통해 localhost에서 수신 대기 중임을 확인해야 합니다.
server1:~# netstat -tap | grep clamd
tcp        0      0 localhost.localdom:3310 *:*                     LISTEN      29430/clamd
server1:~#

3 ProFTPd 재구축


불행히도 mod_clamav는 기본적으로 ProFTPd의 일부가 아니며 mod_clamav용 데비안 패키지가 없으므로 mod_clamav로 ProFTPd를 다시 빌드해야 합니다. ProFTPd의 데비안 소스 패키지를 사용하고 mod_clamav를 지원하는 새로운 ProFTPd .deb 패키지를 빌드합니다.
먼저 ProFTPd를 다시 빌드하는 데 필요한 모든 패키지를 설치합니다.
aptitude build-dep proftpd
다음 패키지도 필요합니다(어떤 이유로 이전 명령으로 설치되지 않는...):
aptitude install libpam-dev
이제 ProFTPd 소스 패키지를/usr/src에 다운로드합니다.
cd /usr/src
apt-get source proftpd
다음으로 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.1/contrib 디렉토리에 복사합니다...
cp mod_clamav-0.11rc/mod_clamav.* proftpd-dfsg-1.3.1/contrib
... ProFTPd 소스 패치:
cd proftpd-dfsg-1.3.1
patch -p1 < ../mod_clamav-0.11rc/proftpd.patch
다음으로 데비안/규칙을 수정해야 합니다.
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
사용 가능한 패키지를 보여줍니다.
server1:/usr/src# ls -l
total 5472
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-01 03:28 mod_clamav-0.11rc.tar.gz
-rw-r--r--  1 root src   195066 2010-10-01 03:32 proftpd_1.3.1-17lenny4_all.deb
-rw-r--r--  1 root src   690228 2010-10-01 03:32 proftpd-basic_1.3.1-17lenny4_i386.deb
drwxr-xr-x 13 root root    4096 2010-10-01 03:32 proftpd-dfsg-1.3.1
-rw-r--r--  1 root src   107998 2010-10-01 03:29 proftpd-dfsg_1.3.1-17lenny4.diff.gz
-rw-r--r--  1 root src     1103 2010-10-01 03:29 proftpd-dfsg_1.3.1-17lenny4.dsc
-rw-r--r--  1 root src     3305 2010-10-01 03:32 proftpd-dfsg_1.3.1-17lenny4_i386.changes
-rw-r--r--  1 root src  2662056 2007-10-16 01:02 proftpd-dfsg_1.3.1.orig.tar.gz
-rw-r--r--  1 root src  1255660 2010-10-01 03:32 proftpd-doc_1.3.1-17lenny4_all.deb
-rw-r--r--  1 root src   213004 2010-10-01 03:32 proftpd-mod-ldap_1.3.1-17lenny4_i386.deb
-rw-r--r--  1 root src   203562 2010-10-01 03:32 proftpd-mod-mysql_1.3.1-17lenny4_i386.deb
-rw-r--r--  1 root src   203512 2010-10-01 03:32 proftpd-mod-pgsql_1.3.1-17lenny4_i386.deb
server1:/usr/src#
다음과 같이 새로운 ProFTPd .deb 패키지를 설치할 수 있습니다.
dpkg -i proftpd*.deb

4 ProFTPd 구성


이제 파일이 업로드될 때마다 mod_clamav를 사용하도록 ProFTPd를 구성해야 합니다./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는 출력에 나열되어야 합니다.
server1:~# proftpd -vv
 - ProFTPD Version: 1.3.1 (stable)
 -   Scoreboard Version: 01040002
 -   Built: Fri Oct 1 03:31:03 CEST 2010
 -     Module: mod_core.c
 -     Module: mod_xfer.c
 -     Module: mod_auth_unix.c
 -     Module: mod_auth_file/0.8.3
 -     Module: mod_auth.c
 -     Module: mod_ls.c
 -     Module: mod_log.c
 -     Module: mod_site.c
 -     Module: mod_delay/0.6
 -     Module: mod_dso/0.4
 -     Module: mod_auth_pam/1.0.1
 -     Module: mod_clamav.c
 -     Module: mod_cap/1.0
 -     Module: mod_ctrls/0.9.4
 -     Module: mod_lang/0.8
server1:~#
그게 다야! 이제 누군가 ProFTPd를 통해 서버에 맬웨어를 업로드하려고 할 때마다 "잘못된"파일이 삭제됩니다. http://www.eicar.org/anti_virus_test_file.htm에서 Eicar 테스트 바이러스를 다운로드하여 테스트할 수 있습니다. ProFTPd 서버에 업로드하려고 시도하고 모든 것이 잘되면 삭제해야 합니다.


5 링크


  • ProFTPd: http://www.proftpd.org/
  • mod_clamav: http://www.thrallingpenguin.com/resources/mod_clamav.htm
  • ClamAV: http://www.clamav.net/
  • 데비안: http://www.debian.org/