Антивирус CLAMAV


Установка производилась на ubuntu server 10.10. Самба была установлена ранее Первичный контроллер домена (PDC): Samba + OpenLDAP + Quota .  Ставим:
 
sudo su
 
apt-get install clamav clamav-daemon clamfs
 
# пакет clamav содержит утилиту командной строки, clamav-daemon - демон для работы в фоне, ClamFS – основанная на FUSE файловая система, в которой при доступе к данным, выполняется антивирусная проверка средствами ClamAV.
 
Обновляем базу:
 
freshclam
 
# freshclam - инструмент для обновления информации о вирусах через Интернет.
 
ClamAV ничего проверять в режиме реального времени не умеет, поэтому и будем использовать виртуальную файловую систему clamfs. Алгоритм такой:
- Создать папку для clamfs
- Смонтировать в нее все расшаренные каталоги
- Изменить в конфиге самбы пути к необходимым для расшаривания папкам, так как они у нас будут смонтированы в папку clamfs.
 
mkdir /clamfs
 
Я буду монтировать дирректорию /home , поэтому создаю одноименную папку:
 
mkdir /clamfs/home
 
Установим права на папку /clamfs и вложенные подпапки:
 
sudo chmod -R 777 /clamfs
 
(В ней ничего хранить не будем, там будут только смонтированные папки, на которые доступ уже ограничен, поэтому ставим на нее полный доступ)
Заготовка конфигурационного файла находится в /usr/share/doc/clamfs/clamfs-sample.xml.gz, перейдем в данный каталог, распакуем файл и скопируем его в /etc/clamav под именем clamfs.xml:
 
cd /usr/share/doc/clamfs/

 
sudo gunzip clamfs-sample.xml.gz

 
sudo cp /usr/share/doc/clamfs/clamfs-sample.xml /etc/clamav/clamfs.xml
 
Откроем clamfs.xml:
 
nano /etc/clamav/clamfs.xml
 
найдем опцию File system settings, раскомментим и изменим ее следующим образом:
 
<filesystem root="/home" mountpoint="/clamfs/home" public="yes" nonempty="yes" />
 
Если есть аналогичная запись в конфиге, но имеющая путь к папке tmp, ее нужно закомментить (комментарии в .xml файле выглядят так: <!-- коммент --> ).
Теперь изменим параметр отвечающий за запись логов, по умолчанию ClamFS пишет логи в syslog, что неудобно, лучше если все события будут записываться в отдельный лог. Найдем и закомментируем строку (должно выглядеть следующим образом):
 
<!-- <log method="syslog" /> -->
 
И раскомментируем строку ниже:
 
<log method="file" filename="/var/log/clamav/clamfs.log" verbose="no" />
 
запускаем clamd и clamfs:
 
/etc/init.d/clamav-daemon start

clamfs /etc/clamav/clamfs.xml
 
Проверяем, каталог /home должен смонтироваться в /clamfs/home .
Добавим в автозапуск:
 
nano /etc/rc.local
 
Перед Edit0 добавляем:
 
clamfs /etc/clamav/clamfs.xml
 
Теперь изменим пути в самбе:
 
nano /etc/samba/smb.conf
 
Для примера, у меня в самбе был прописан путь к папке /home/share , я изменил его на /clamfs/home/share . И аналогично с другими расшаренными папками.
Перезапускаем Samba:
 
/etc/init.d/smbd restart
 
Скачиваем с сайта http://www.eicar.org/anti_virus_test_file.htm тестовые файлы (не забыв выключить антивирус), помещаем их в общую папку на сервере и пробуем получить к ним доступ. ClamAV сразу пресекает наши попытки открыть или скопировать куда либо. Но сам зараженный файл остается на сервере. Чтобы это исправить создаем каталог, который будет карантином:
 
mkdir /home/quarantine
 
Даем полные права на доступ к ней (доступ будет ограничиваться самбой):
 
chmod 777 /home/quarantine
 
Теперь создадим в /etc/samba/smb.conf следующую секцию:
 
[quarantine]

path = clamfs/home/quarantine

read only = No

valid user = @o_it

guest ok = no
 
Т.е папка quarantine доступна только пользователям, входящим в группу o_it, которая была создана при настройке самбы в роли контроллера домена. Либо просто укажите нужную группу, либо поставьте вместо группы имя пользователя, без собаки.
Опять перезапускаем самбу:
 
sudo /etc/init.d/smbd restart
 
Теперь создадим скрипт, который будет проверять в установленное время расшаренные каталоги на вирусы и перемещать вирусы в карантин.
Я создаю его в папке, где лежат все мои скрипты, измените путь на свой.
 
mkdir /home/scripts/clamav
touch /home/scripts/clamav/clamav.sh
chmod +x /home/scripts/clamav/clamav.sh
nano /home/scripts/clamav/clamav.sh
 
Пишем туда проверку всех расшаренных папок за исключением карантина:
 
#!/bin/bash

/usr/bin/clamscan -r /home/share --move=/home/quarantine

/usr/bin/clamscan -r /home/o_it --move=/home/quarantine

/usr/bin/clamscan -r /home/o_prodag --move=/home/quarantine

/usr/bin/clamscan -r /home/o_logist --move=/home/quarantine

/usr/bin/clamscan -r /home/o_buh --move=/home/quarantine

/usr/bin/clamscan -r /home/o_administraciya --move=/home/quarantine

/usr/bin/clamscan -r /home/dst --move=/home/quarantine
 
Сохраняем и добавляем в cron - менеджер запуска по рассписанию:
 
crontab -u root -e
 
И вносим в конец строчку:
 
0 1 * * * /home/scripts/clamav/clamav.sh
 
Скрипт будет запускаться каждый день в час ночи, будет производиться проверка указанных в скрипте папок и найденные зараженные файлы будут копироваться в папку /home/quarantine .

Dec. 8, 2010