В этом руководстве мы расскажем вам, как интегрировать ClamAV в PureFTPd для поиска вирусов в операционной системе CentOS 7. Каждый раз, когда вы будете загружать файл через PureFTPd, ClamAV будет проверять файл на предмет содержания вируса или вредоносного ПО и в случае обнаружения, и удалять этот файл.
У Вас должна стоять рабочая установка PureFTPd на вашем CentOS 7 — сервере, например, как показано в этом гиде, как установить PureFTPd и MySQL на виртуальный хостинг в системе CentOS 7 (включая квотирования и управлением пропускной способностью).
ClamAV не доступен в официальных репозиториях CentOS, поэтому мы включаем репозиторий Epel (если вы еще не сделали этого. Начните с импорта ключей RPM GPK.
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
Затем мы включаем репозиторий Epel на нашей системе CentOS, как много пакетов, которые мы собираемся установить в ходе этого урока не доступны в официальном CentOS 7 хранилище:
yum -y install epel-release
yum -y install yum-priorities
Редактировать /etc/yum.repos.d/epel.repo…
nano /etc/yum.repos.d/epel.repo
… И добавьте строку priority = 10 в разделе [EPEL]:
[epel] name=Extra Packages for Enterprise Linux 7 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 [...]
Затем мы обновляем наши существующие пакеты в системе:
yum update
После этого мы можем установить ClamAV следующим образом :
yum -y clamav clamav-server clamav-data clamav-update clamav-filesystem clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
Редактируем файл /etc/freshclam.conf и закомментируем строку примера:
nano /etc/freshclam.conf
путем добавления # перед строкой Пример:
..... # Комментарий или удалить строку ниже. # Пример ....
Затем отредактируйте файл /etc/clamd.d/scan.conf:
nano /etc/clamd.d/scan.conf
и закомментируйте строку Пример, как мы делали это в файле выше и удалите # перед LocalSocket.
..... # Комментарий или удалить строку ниже. # Пример .... LocalSocket /var/run/clamd.scan/clamd.sock ....
Далее мы создаем ссылку для запуска в системе clamd и запустим его:
systemctl enable clamd@.service freshclam
Затем запустите службу ClamAV:
systemctl start clamd@.service
Вы можете проверить состояние демона ClamAV с помощью следующей команды:
systemctl status clamd@scan
Результат должен быть таким:
[root@сервер system]# systemctl status clamd@scan ? clamd@scan.service - Generic clamav scanner daemon Loaded: loaded (/usr/lib/systemd/system/clamd@scan.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2016-08-14 18:30:21 CEST; 1min 40s ago Main PID: 10955 (clamd) CGroup: /system.slice/system-clamd.slice/clamd@scan.service ??10945 /usr/sbin/clamd -c /etc/clamd.d/scan.conf --nofork=yes Apr 09 12:14:10 сервер.пример.ру clamd[10955]: HTML support enabled. Apr 09 12:14:10 сервер.пример.ру clamd[10955]: XMLDOCS support enabled. Apr 09 12:14:10 сервер.пример.ру clamd[10955]: HWP3 support enabled. Apr 09 12:14:10 сервер.пример.ру clamd[10955]: Self checking every 600 seconds. Apr 09 12:14:10 сервер.пример.ру clamd[10955]: PDF support enabled. Apr 09 12:14:10 сервер.пример.ру clamd[10955]: SWF support enabled. Apr 09 12:14:10 сервер.пример.ру clamd[10955]: HTML support enabled. Apr 09 12:14:10 сервер.пример.ру clamd[10955]: XMLDOCS support enabled. Apr 09 12:14:10 сервер.пример.ру clamd[10955]: HWP3 support enabled. Apr 09 12:14:10 сервер.пример.ру clamd[10955]: Self checking every 600 seconds.
Во- первых, откроем /etc/pure-ftpd/pure-ftpd.conf и установим CallUploadScript на параметр yes:
nano /etc/pure-ftpd/pure-ftpd.conf
[...] # If your pure-ftpd has been compiled with pure-uploadscript support, # this will make pure-ftpd write info about new uploads to # /var/run/pure-ftpd.upload.pipe so pure-uploadscript can read it and # spawn a script to handle the upload. # Don't enable this option if you don't actually use pure-uploadscript. CallUploadScript yes [...]
Далее мы создадим исполняющий файл /etc/pure-ftpd/clamav_check.sh (который будет вызывать /usr/bin/clamdscan в случае загрузки файла через PureFTPd) …
nano /etc/pure-ftpd/clamav_check.sh
#!/bin/sh /usr/bin/clamdscan --fdpass --remove --quiet --no-summary -c /etc/clamd.d/scan.conf "$1"
… И сделаем его исполняемым:
chmod 755 /etc/pure-ftpd/clamav_check.sh
Теперь мы запустим скрипт pure-uploadscript как демон — он будет вызывать наш скрипт /etc/pure-ftpd/clamav_check.sh в случае загрузки файла через PureFTPd:
pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh
Конечно, мы хотим запускать демон в автоматическом режиме, при запуске системы — поэтому мы отредоктируем /etc/rc.local …
nano /etc/rc.local
… И добавим строку /usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh к нему примерно такого содержания:
#!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. /usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh touch /var/lock/subsys/local
Наконец, мы перезапустить PureFTPd:
systemctl restart clamd@.service
Вот и все! Теперь каждый раз, когда кто-то будет пытаться загрузить вредоносные программы на ваш сервер через PureFTPd, будет молча удалять вредоносный файл (с).
Этот учебник доступен как готовый к использованию в виртуальной машине в формате OVA / OVF для абонентов Howtoforge. Формат VM совместим с VMWare и Virtualbox и других инструментов, которые могут импортировать этот формат. Вы можете найти ссылку для загрузки в меню справа вверху. Нажмите на имя файла, чтобы начать загрузку.
Детали входа в систему виртуальной машины:
Username: root
Password: AndreyEx_root
Username: root
Password: AndreyEx_root
Пожалуйста, измените пароли после первой загрузки.