|
Как проверить, что UCFP работает?
X-Forwarded-For
Настройка squid
Вопросы в support
Многопоточная закачка
Скорость работы
Минимальные требования

Как проверить, что UCFP работает?
Для начала можно просто зайти на любой ftp, если Вы видите красивые иконки и бело-серую разлиновку (См. также Примечания: Собственные наборы иконок для ftp), значит запросы на UCFP поступают.
Примечания:
Если иконок нет совсем, значит неправильно задан параметр [ucfp.common] hostname
Проверить его правильность можно, запросив с рабочей станции http://hostname:12345/err-virus.gif
Если Вы видите на ftp иконки, стандартные для Вашего прокси-сервера, значит, если Вы используете squid, Вам имеет смысл ознакомится с FAQ: Настройка squid, или, в случае использования другого прокси-сервера, каким-либо образом сказать ему, что UCFP является теперь для него parent-ом.
Если с иконками на ftp все в порядке, можно попытаться скачать тестовый вирус:
ftp://ftp.relans.ru/test/eicar.com
http://www.relans.ru/test/eicar.com
Если все работает, то Вы должны увидеть следующее: Infected: EICAR-Test-File /
Также можно помотреть статистику по
telnet localhost listen_port+1
или лог-файл ucfp.log

X-Forwarded-For
Если UCFP работает по схемам №3 и 5, т.е. после прокси-сервера, то подсчет лицензированных IP производится по хэдеру X-Forwarded-For, который обязательно должен быть разрешен (в squid-е по умолчанию разрешены все хэдеры), иначе проверка осуществляться не будет.
Признаком того, что UCFP не получает этот хэдер, является неизвестный ip-адрес клиента в ucfp.log:
[13/03/2005 21:02:46] unknown - 200/GET 213.180.204.8 http://ya.ru/ text/html 1490 no
X-Forwarded-For - это один из хэдеров, в котором прокси передает запрашиваемому серверу IP-адрес клиента.
За этот хэдер X-Forwarded-For в squid.conf отвечают два параметра. Первый это forwarded_for, который может принимать значения on (передавать X-Forwarded-For) и off (не передавать). По умолчанию on. Если у Вас этот параметр в off, то, соответственно, нужно сделать on, и выполнить squid -k reconfigure.
Второй параметр, имеющий отношение к данному хэдеру - anonymize_headers (для squid 2.4) или header_access (для squid 2.5). Версию squid можно посмотреть по squid -v
Для squid 2.4:
В конфигурационном файле squid.conf про anonymize_headers сказано:
# There are two methods of using this option. You may either allow specific headers (thus denying all others), or you may deny specific headers (thus allowing all others).
Что означает: Вы можете разрешить конкретные хэдеры, тем самым запретив все остальные, или наоборот, запретить некоторые, при этом разрешив все остальные.
Если Вы решите пойти по пути разрешения определенных хэдеров и запрета остальных, то не забудьте включить:
anonymize_headers allow X-Forwarded-For
Для squid 2.5:
В конфигурационном файле есть возможность разрешать/запрещать конкретные хэдеры. Таким образом досточно в squid.conf добавить:
header_access X-Forwarded-For allow all
После изменения squid.conf не забудьте выполнить
squid -k reconfigure

Настройка squid
Для того, чтобы направить squid через UCFP необходимо в squid.conf добавить следующую запись:
cache_peer ucfp_ip_listen parent ucfp_port_listen 7 no-query default login=PASS
где,
ucfp_ip_listen - интерфейс, который слушает UCFP (рекомендуется 127.0.0.1)
ucfp_port_listen - порт, который слушает UCFP (по умолчанию 12345)
login=PASS - актуально при работе по схемам №3 и 5 и при использовании squid-ом basic authentification, т.е. для передачи параметров авторизации от squid-а к UCFP. Если авторизация не используется, то параметр необязателен.
Не забудьте выполнить
squid -k recnfigure
Есть два момента:
- squid по умолчанию не передает на parent (т.е. в данном случае на UCFP) запросы к неанонимным ftp серверам
- squid по умолчанию не передает на parent SSL запросы (https), что, в случае антивирусной проверки, и не нужно, т.к. SSL контент проверить нельзя.
Если такое положение дел Вас устраивает, то дальше читать не нужно.
Если же Вы хотите проверять файлы с неанонимных ftp серверов, то необходимо добавить в sduid.conf следующий параметр:
nonhierarchical_direct off
Но при этом squid начнет слать на parent и SSL запросы. В этом нет ничего страшного, т.к. UCFP умеет "прокидывать" https, но будет ненужная нагрузка на сервер. Поэтому мы все же рекомендуем настроить squid на работу по https напрямую. Для этого в squid.conf нужно добавить следующие строки:
acl SSL method CONNECT
always_direct allow SSL

Вопросы в support
Во всех случаях падения или любого другого некорректного поведения UCFP разработчикам понадобится следующая информация:
- диагностические записи о PANIC ("паник-скрин")
- название и версия операционнной системы
- вывод /usr/local/ucfp/bin/ucfp -v
- кусок лог-файла, а лучше весь (в разумных пределах)

Многопоточная закачка
Важно: При использовании многопоточной закачки с check_ranged = no существует вероятность необнаружения вирусов.
Суть многопоточной закачки заключается в следующем: один пользователь (клиент) осуществляет закачку одного файла в несколько потоков (запросов), при этом в каждом потоке скачиваются разные части файла (смещение от начала и количество запрашиваемых байт из файла определяется в хэдере Range запроса, используемом, в частности, при "докачке").
Параметр check_ranged определяет необходимость удержания запросов с хэдером Range, с целью дальнейшей антивирусной проверки полученного файла.
Использование check_ranged = yes исключает пропуск вирусов, но приводит к увеличению трафика, т.к. программы, осуществляющие многопоточную закачку (ReGet, FlashGet и т.п.) в первом потоке не используют хэдер Range, а в остальных запрашивают часть файла с определенного смещения и до конца файла (например Range: bytes=2713652-). Таким образом при использовании 5 потоков лишний трафик составит 200% от размера запрашиваемого файла.
При check_ranged = no данные от запросов с хэдером Range сразу передаются клиенту, что позволяет избежать возникновения лишнего трафика, однако в этом случае при многопоточном запросе zip-архива не производится антивирусная проверка потоков, т.к. для проверки содержимого архива его нужно распаковать. При многопоточном запросе exe-файла есть довольно большая вероятность (но не 100%) того, что KAV обнаружит вирус в одной из частей, и эту часть пользователь не получит, но при этом все остальные части будут успешно скачены.

Скорость работы
Информация по таймингу отображается на первом уровне лога (loglevel = 1).
Скорость проверки в базах данных зависит от использования свопинга (параметр [ucfp.common] db_swap)
На тестовом сервере (Celeron633/256RAM) проверка страницы объемом 1,1Мб (документация по sendmail) с включенным свопингом (db_swap=yes) дает следующие результат:
[28/06/2006 14:22:01] 10.0.0.1 - 200/GET 195.12.77.146 http://ucfp.ru/test.htm text/html 1120436 yes allow CF/KAV
[28/06/2006 14:22:01] DEBUG Query (http://ucfp.ru/test.htm) timing stats: all: 1244 (msec), acl: 0.002611 (sec), CF: 0.382350 (sec), KAV: 0.069595 (sec)
Таким образом потрачено времени:
- на проверку наличия адреса сервера в базах данных - 0.002611 сек
- на анализ контента (на странице более 23600 значимых слов) - 0.382350 сек
- на проверку файла антивирусом - 0.069595 сек
Тот же самый запрос с выключенным свопингом (db_swap=no):
[28/06/2006 15:15:34] 10.0.0.1 - 200/GET 195.12.77.146 http://ucfp.ru/test.htm text/html 1120436 yes allow CF/KAV
[28/06/2006 15:15:34] DEBUG Query (http://ucfp.ru/test.htm) timing stats: all: 697 (msec), acl: 0.001364 (sec), CF: 0.384969 (sec), KAV: 0.063235 (sec)
Таким образом отсутствие свопинга в 2 раза повышает скорость поиска в базах данных, но требует дополнительного объема свободной оперативной памяти (см. раздел "FAQ: Минимальные требования").
Для примера приведем временные параметры анализа средней по объему html-страницы, например yandex.ru (свопинг включен):
[28/06/2006 15:27:13] 10.0.0.1 - 200/GET 213.180.204.11 http://yandex.ru/ text/html 24755 yes allow CF/KAV
[28/06/2006 15:27:13] DEBUG Query (http://yandex.ru/) timing stats: all: 727 (msec), acl: 0.002375 (sec), CF: 0.004563 (sec), KAV: 0.044347 (sec)

Минимальные требования
CPU:
Пиковый прирост использования CPU:
- Linux - 20%
- FreeBSD/OpenBSD - 40%
RAM:
Необходимый объем свободной оперативной памяти зависит от использования свопинга баз данных (параметр [ucfp.common] db_swap):
- db_swap = yes (свопинг включен) - объем зависит только от количества используемых категорий и не зависит от размера баз данных. Для каждой категории требуется примерно 0.7Mb. При использовании всех 31 категорий необходимо 22М свободной оперативной памяти.
- db_swap = no (свопинг выключен) - объем зависит от размера баз данных и на данный момент составляет 72-112Mb в зависимости от типа баз данных.
Для антивирусной проверки необходимо дополнительно 10Mb свободной оперативной памяти.
HDD:
Антивирус Касперского - 8Mb
UCFP (без баз данных) - 7Mb
Базы данных UCFP (на данный момент) - 28-60Mb в зависимости от типа баз данных
При использовании свопинга баз данных необходимо дополнительно 18-30Mb свободного дискового пространства. |