FAQ

Как проверить, что 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

Есть два момента:

  1. squid по умолчанию не передает на parent (т.е. в данном случае на UCFP) запросы к неанонимным ftp серверам

  2. 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 свободного дискового пространства.