CLAMAV - почтовый фильтр и сканер в Samba

Создан: 25.11.2008
Иванов Аркадий

 

Clamav - бесплатная антивирусная система.

 

Установка

  1. Установку делаем из исходников, поскольку есть большая вероятность того, что CLAMAV из дистрибутива не будет работать со свежими обновлениями.
  2. Исходники  живут на http://clamav.sourceforge.net . Их надо скачать.
  3. Предварительно сносим из системы всё, что относится к CLAMAV.
  4. Раскрываем скачанный файл: "tar xzf ...."
  5. Устанавливаем в систему дополнительные пакеты:
    zlib-devel bzip2-devel libcheck-devel libgmp-devel sendmail-devel
  6. Создаём группу и юзера clamav (юзер без shell-а)
    # groupadd clamav
    # useradd -g clamav -s /bin/false clamav
  7. ./configure
  8. make && make install
  9. ldconfig
  10. Всё.

 


Обновление антивирусных баз.
 

За обновление отвечает задача freshclam.

Настройки лежат в /usr/local/etc/freshclam.conf

  1. Закомментируем слово Example в начале файла.
  2. DatabaseDirectory /var/lib/clamav
  3. UpdateLogFile /var/log/freshclam.log

Теперь создадим файл /var/log/freshclam.log :

touch /var/log/freshclam.log
chmod 600 /var/log/freshclam.log
chown clamav /var/log/freshclam.log

 

Обновление баз проще запускать по cron-у. Добавим запись в /etc/crontab, чтобы обновляться 2 раза в день:


35 3,15 * * * root   /usr/local/bin/freshclam  --quiet

 

Простое сканирование.

clamscan -l clamscan.log -r mydirectory
 

Сканирует файлы в каталоге "mydirectory" и в подкаталогах (ключ -r).
Результаты поместит в файл clamscan.log (ключ -l).

Данный раздел не относится к защите "на лету" почты или файлового сервера. Это просто один из способов использования CLAMAV вручную.

 

Запуск демона.

 

clamd - это демон, который делает сканирование по запросу программы клиента. Общение с ним идёт через сетевые запросы.
До его запуска следует отредактировать /usrl/local/etc/clamd.conf. Как минимум следует закомментировать слово "Example".

Затем просто запускаем:

# su - clamav -s /bin/bash -c  "/usr/local/sbin/clamd"

Проверить работоспособность clamd можно клиентской программой:

$ clamdscan  mydirectory

 

Проверка почты на вирусы в Postfix

 

Вытаскиваем с сайта дополнительный модуль к clamav - clamsmtp, который и работает с Postfix, как антивирусный фильтр.
Схема работы:

письмо -> Postfix -> clamsmtpd -> clamd -> clamsmtp(вирус/не вирус) -> Postfix

Я проверял работу clamsmtp версии 1.10.

 

  1. Раскрываем (tar xzf ...)
  2. Конфигурируем (./configure)
  3. make && make install
  4. Копируем файл doc/clamsmtpd.conf в /usr/local/etc/
  5. Редактируем этот файл. Необходимые строчки написаны ниже:
           OutAddress: 127.0.0.1:10026
        Listen: 0.0.0.0:10025
        ClamAddress: /tmp/clamd.socket
        TempDirectory: /tmp
        User: clamav
  6. Запускаем демона: "su - clamav -s /bin/bash -c /usr/local/sbin/clamsmtpd"

Рихтуем настройки Postfix:

 

В файле main.cf:
 

# Антивир. фильтр тела письма
content_filter = scan:127.0.0.1:10025
receive_override_options = no_address_mappings
 

Указали, что Postfix должен направлять содержимое письма программе-фильтру на локальный хост на порт 10025. Контент-фильтром у нас служит clamsmtpd, который как раз и слушает этот порт. Вторая строка указывает, что подстановок почтовых адресов делать не надо.

 

Теперь настройки в master.cf:

# Фильтр контента
scan      unix  -       -       n        -       32      smtp  -o smtp_send_xforward_command=yes


# Вставка почты обратно в postfix из фильтра (этот порт Postfix слушает)
127.0.0.1:10026 inet  n -       n        -       32      smtpd -o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8

 

В случае проблем полезно запустить вручную "clamsmtpd -d 4" и посмотреть протокол.

 

Проверка "на лету" на вирусы в Samba

 

 

Скачиваем по ссылке с сайта Clamav отдельную разработку для Samba - samba-vscan. Я работал с версией 0.3.6c-beta5.

Нужны исходники версии Samba в той системе, где работаешь.
- Для начала rpm --rebuild samba-3.0.30.xxxx.src.rpm и устанавливаем все пакеты, которые нужны для сборки Самбы.
- rpm -i samba-3.0.30.xxxx.rpm

- Взял оттуда samba-3.0.30.tgz

- Раскрыл в /usr/src/samba-3.0.30

-Переходим в каталог /usr/src/samba-3.0.10/source
- # ./autogen.sh
- # ./configure
- # make proto
- раскрываем архив samba-vscan-0.3.6c-beta5 в каталог /usr/src/samba-3.0.30/examples/VFS
- переходим в /usr/src/samba-3.0.30/examples/VFS/samba-vscan-0.3.6c-beta5

- # ./configure
- # make
- копируем получившийся файл vscan-clamav.so в /usr/lib/samba/vfs
- копируем из каталога clamav файл vscan-clamav.conf в каталог /etc/samba
- В /etc/smb.conf для интересующего нас ресурса прописываем проверку "на лету", например, для ресурса "common":


[common]
path = /home/common
vfs object = vscan-clamav
vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
guest ok = yes
read only = no

В файле vscan-clamav.conf рихтуем настройки под нашу систему. Важный параметр - сокет демона clamav:
clamd socket name = /tmp/clamd.socket


Политика к обнаруженным вирусам - в отстойник:
infected file action = quarantine
quarantine directory = /home/viruses

Сделайте полный доступ к /home/viruses, поскольку файлы туда пишутся от всех юзеров, работающих с ресурсом.
 

Работает несколько странно - позволяет записать вирусьё, но считать не даёт, зато скорость не падает.