АНДРЕЙ АВРАМЕНКО
DansGuardian + ClamAV: фильтруем веб-содержимое и строим антивирусную защиту
Сегодня многие компании все больше внимания уделяют информационной безопасности. Для ее обеспечения, по данным исследования IDC, российские пользователи затратили почти 42$ млн. на специализированное программное обеспечение. Но существуют и бесплатные продукты, не уступающие коммерческим по функциональности.
Я думаю, ни для кого не секрет, что большая часть вирусов попадает на компьютеры локальной сети из Интернета. Конечно, проверку на вирусы можно проводить и на локальной машине, но централизованная фильтрация трафика гораздо проще в обслуживании и позволяет экономить ресурсы компьютеров локальной сети.
DansGuardian – фильтр веб-содержимого для ОС Linux, FreeBSD, OpenBSD, NetBSD, Mac OS X, HP-UX и Solaris, использует прокси-серверы squid или oops. Он фильтрует содержимое несколькими методами: по фразам, картинкам и URL. В отличие от некоторых других фильтров, он не использует «черный лист» URL, который надо постоянно обновлять (да и к тому же Интернет большой, все не перечислишь).
Проект постоянно дорабатывается, имеется коммерческая версия под названием SmoothGuardian. В ней есть несколько дополнительных возможностей: блокировка лицензионной музыки, удаление рекламы, многоязыковая поддержка фраз фильтрования, генерация стандартных отчетов, таких как самые популярные сайты, пользователи и сайты, заблокированные чаще всего, позволяет блокировать «по часам», т.е. блокировка происходит в определенное время, и другое.
Я буду использовать именно бесплатную версию, так как ее конфигурирование считается более сложным.
Я устанавливал dansguardian на ОС Linux Alt Master 2.4:
- Версия dansguardian – 2.8.0.3 (версия антивирусного патча 6.3.8).
- Версия squid – 2.5.STABLE9.
- Версия clamav – 0.86.1.
- Версия libesmtp – 1.0.3r1.
Dansguardian не является редиректором (как, например, squidGuard), хотя многие первоначально думают именно так. Это прокси-сервер, и он использует squid как веб-браузер. Для того чтобы пользователи не использовали squid напрямую, необходимо в конфигурационном файле firewall указать перенаправление с порта squid на порт dansguardian. Либо установить dansguardian на порт 3128, а squid перенести на какой-либо другой, открыв доступ только с 127.0.0.1
Для начала установим СlamAV. Скачать его можно с официального сайта http://www.clamav.net.
./configure
make
make install
Конфигурирование clamav не займет много времени. Просто немного подредактируйте clamd.conf.
Dansguardian требует библиотеку libesmtp для отправки сообщений системному администратору. Скачать ее можно с http://www.stafford.uklinux.net/libesmtp.
Устанавливается просто:
./configure –-prefix=/usr
make
make install
Пропатчивать dansguardian для поддержки firewall не нужно, скачать его с поддержкой антивируса можно с http://www.harvest.com.br/asp/afn/dg.nsf.
./configure
--sysconfdir=/etc/dansguardian/
--cgidir=/var/www/cgi-bin/
--runas_usr=squid
--runas_grp=squid
make
make instal
Далее следует настроить dansguardian. Конфигурационный файл /etc/dansguardian/dansguardian.conf оснащен отличными комментариями, так что, я думаю, не будет затруднений в конфигурировании:
reportinglevel = 3
languagedir = '/etc/dansguardian/languages'
# К сожалению, русского языка в списке нет. Я сделал перевод и в ближайшее время отправлю автору.
# Вы можете скачать архив с сайта журнала http://www.samag.ru, раздел «Исходный код». Чтобы установить язык,
# необходимо разархивировать файл в папку /etc/dansguardian/languages и в конфигурационном файле указать:
language = 'russian'
# Что записывать в лог
# 0 = none 1 = just denied 2 = all text based
# 3 = all requests
loglevel = 2
# Протоколировать, если страница была передана пользователю
logexceptionhits = on
# формат ведения лога
# 1 = DansGuardian format 2 = CSV-style format
# 3 = Squid Log File Format 4 = Tab delimited
logfileformat = 1
# Местонахождение лог-файла
loglocation = '/var/log/dansguardian/access.log'
# Сетевые опции
# IP-адрес, на котором слушает dansguardian
filterip =
filterport = 8080
# IP-адрес и порт прокси-сервера (squid или oops)
proxyip = 127.0.0.1
proxyport = 3128
# URL, на который произойдет переадресация при блокировке
accessdeniedaddress = 'http://YOURSERVER.YOURDOMAIN/cgi-bin/dansguardian.pl'
nonstandarddelimiter = on
# Заменять запрещенную картинку какой-нибудь своей
usecustombannedimage = 1
custombannedimagefile = '/etc/dansguardian/transparent1x1.gif'
# Создать фильтр для группы пользователей.
# Dansguardian будет автоматически смотреть в файл dansguardianfN.conf, где N – номер группы
filtergroups = 1
# Чтобы поставить пользователей в соответствие с группами, отредактируйте файл filtergrouplist
filtergroupslist = '/etc/dansguardian/filtergroupslistv
# Местоположение файлов аутентификации
bannediplist = '/etc/dansguardian/bannediplist'
exceptioniplist = '/etc/dansguardian/exceptioniplist'
banneduserlist = '/etc/dansguardian/banneduserlist'
exceptionuserlist = '/etc/dansguardian/exceptionuserlist'
# Записывать в лог найденные причины блокировки.
showweightedfound = on
# 0 = off – не использовать
# 1 = on, normal – использовать в стандартном режиме
# 2 = on, singular – записывать каждый аргумент, но только один раз для страницы
weightedphrasemode = 2
urlcachenumber = 2000
urlcacheage = 900
# Фильтрация содержимого по фразам
# 0 – фильтрация html вместе с мета-тэгами
# 1 - удаление многочисленных пробелов и html-тэгов перед фильтрацией
# 2 – оба метода
phrasefiltermode = 2
preservecase = 0
# Перекодировка в hex для фильтрования документов с различными кодировками
hexdecodecontent = 0
# Использовать алгоритм «Quick Search», в отличие от алгоритма DFA. Алгоритм DFA позволяет работать быстрее,
# но его текущая версия не совсем совместима с 16-битными символами. Если вы хотите использовать 16-битные символы,
# включите эту опцию.
forcequicksearch = 0
reverseaddresslookups = off
reverseclientiplookups = off
# Создавать файлы bannedsitelist и bannedurllist со списком запрещенных сайтов и URL
createlistcachefiles = on
# Максимальный размер передаваемого от клиента файла в байтах
# 0 – блокировать
# -1 – не блокировать или размер файла
maxuploadsize = -1
maxcontentfiltersize = 256
# Методы аутентификации пользователя на прокси-сервере
usernameidmethodproxyauth = on
# **На данный момент не работает**
usernameidmethodntlm = off
usernameidmethodident = off
preemptivebanning = on
# Добавлять заголовки X-Forwarded-For: <IP-адрес клиента>
forwardedfor = off
usexforwardedfor = off
logconnectionhandlingerrors = on
# Опции дочерних процессов
# Максимальное количество процессов
maxchildren = 120
# Первоначальное количество процессов
minchildren = 8
# Количество процессов, которые должны быть готовы к соединению
minsparechildren = 4
preforkchildren = 6
# Максимальное количество бездействующих процессов
maxsparechildren = 32
# Максимальное количество сайтов, обработанных процессом
maxagechildren = 500
# Опции коммуникации между процессами
ipcfilename = '/tmp/.dguardianipc'
urlipcfilename = '/tmp/.dguardianurlipc'
# PID filename
pidfilename = '/var/run/dansguardian.pid'
nodaemon = off
nologger = off
# Пользователь и группа, с чьими правами запускается dansguardian
daemonuser = 'squid'
daemongroup = 'squid'
softrestart = off
# Антивирусные настройки
# --------------------
# Включить проверку на вирусы
virusscan = on
# Способ проверки clamdscan, clamav или kav
virusengine = 'clamav'
# Максимальное количество информации, переданной клиенту, если файл содержит вирус
tricklelength = 32768
firsttrickledelay = 30
followingtrickledelay = 60
# Список типов MIME, не проверяемых на вирусы
exceptionvirusmimetypelist = '/etc/dansguardian/exceptionvirusmimetypelist'
# Максимальный размер содержимого для проверки,
# если 0 – не ограничено
maxcontentscansize = 0
# Файлы с определенными расширениями не будут проверяться
exceptionvirusextensionlist = '/etc/dansguardian/exceptionvirusextensionlist'
# Временная директория, в которую сохраняется файл для проверки
downloaddir = '/tmp/dgvirus'
# В директории /etc/dansguardian содержатся несколько файлов, в которых можно вписывать исключения,
# т.е. информация с данных сайтов, url, ip или по запросам данных пользователей не будет фильтроваться.
virusscanexceptions = on
urlcachecleanonly = on
virusscannertimeout = 60
# Использование почтового оповещения
notify = 0
# Настройки CLAMDSCAN
# --------------------
# Сокет демона clamd (указывается в clamd.conf)
localsocket = '/tmp/clamd'
# Настройки CLAMAV
# --------------------
clmaxfiles = 1500
clmaxreclevel = 3
clmaxfilesize = 10485760
Конфигурационный файл squid менять не будем. Будем считать, что squid настроен и нормально функционирует, за исключением того случая, если вы хотите установить Dansguardian на порт 3128. Тогда необходимо изменить порт в конфигурационном файле squid.
Теперь необходимо настроить firewall на перенаправление. В Linux это делается примерно так:
iptables -t nat -A PREROUTING --dst x.x.x.x -p tcp --dport 3128 -j DNAT --to-destination x.x.x.x:8080
x.x.x.x поменяйте на IP интерфейса, который смотрит в сторону локальной сети.
Ну вот и все. Теперь при скачивании файла, содержащего вирус, у вас в этом файле появится сообщение о вирусе. Конечно, не очень удобно, но зато безопасно. Лучшим вариантом теперь, наверное, будет не сохранять файлы на диск, а сразу открывать, тогда не будет недоразумений.
К недостаткам dansguardian относится отсутствие русификации, т.е. происходит фильтрация по английским фразам (придется самим придумывать фразы для фильтра). При проверке больших файлов также придется подождать. Dansguardian использует больше ресурсов сервера, по сравнению с редиректорами, что тоже нельзя отнести к плюсам.
В заключение хотел бы сказать, что необходимо отредактировать файлы, находящиеся в каталоге /etc/dansguardian, на которые есть ссылки из основного конфигурационного файла, так как при тестировании, например, выяснилось, что по умолчанию он блокирует zip-архивы. Программа должна быть настроена под политику безопасности организации, то есть если организация позволяет скачивать музыку, то какой смысл блокировать mp3-файлы.
В целом у меня о программе сложилось хорошее впечатление. Простая в установке, несложная в настройке, она имеет достаточно обширные возможности. Хотелось бы, чтобы данный проект и дальше развивался, позволяя системным администраторам защищать локальную сеть от нежелательных данных.
Ссылки:
- Введение в dansguardian и руководство по детальной инсталляции dansguardian: www.dansguardian.org.
- Информация о продукте SmoothGuardian: www.smoothwall.net.