Symantec под nix
Мне тут попался на глаза свой же отчёт на тему "применимость продуктов symantec под nix".
Общее заключение: бесполезен и сделан исключительно под linux "для галочки".
AutoProtect работать не будет из-за древности ядерных модулей
Общая процедура установки, подразумеваемая install.sh:
для определённых версий ядер - устанавливаются готовые модули из sepap-legacy.deb
1) Cмотрим версии этих модулей и год выпуска соотв ядра (из /opt/Symantec/autoprotect):
- 2.6.18 - 2006
- 2.6.22 - 2007
- 2.6.24 - 2008
- 2.6.26 - 2008
- 2.6.31 - 2009
- 2.6.32 - 2009
Сейчас актуальные версии - 3.14+ (3.2 LTS, считается старым)
Смотрим упоминания конкретных дистрибутивов (из /etc/init.d/autoprotect):
- RHEL 3-4 (актуальные версии - 6 -> 7)
- Ubuntu 7.10-13.04 (актуальные версии - 14-15)
- Debian 4-6 (актуальные версии - 7, в апреле-мае выйдет 8)
2) если ничего не подошло из того что выше (поразительно), предлагается собрать модуль руками
Смотрим исходники из src/ap-kernelmodule.tar.bz2. В большинстве из них есть такой заголовок:
// PROPRIETARY/CONFIDENTIAL. Use of this product is subject to license terms.
// Copyright (C) 2005 Symantec Corporation. All rights reserved.
Год как бы намекает, когда оно в последний раз активно разрабатывалось. Более того, этот "модуль" постоянно будет огребать от изменения ядерных интерфейсов, поскольку стабильность их не гарантируется, а в ядро его не примут из-за лицензии.
LiveUpdate тоже не работает без хаков
Смотрим в install.sh в корне архива. Вот например функция, проверяющей наличие java-интерпретатора:
javaVersionCheck()
И сразу же следом идёт вторая функция, с говорящим названием и комментарием:
#return 0 for success, 1 for not.
sunJavaCheck()
Начнём с того, что Sun'а как такового, нет с 2009 года, его купил oracle. И проверки в теле функции (переделаны в вид "проверка" -> "результат", для лучшего восприятия):
- ibm -> 1
- openjdk -> 1
- sun java -> 0
- other -> 1
Окей, нам нужна непременно sun-java, то есть "от oracle" ...которую запрещают распространять в составе дистрибутивов linux: тыц
Опыты показывают, что запустить таки можно, по крайней мере оно запускается, но как будет работать - хз. Пикантной подробностью является то, что в процессе обновления оно отжирает 350-400 метров виртуальной памяти. Тупо на обновление баз.
P.S. Я склонен думать, что эту часть они писали сами - этот чугунно-неповоротливый энтерпрайзный стиль, жаба и xml.
И наконец клиент для антивируса
В самом бинарнике попадаются отдельные вещи типа:
# забытая отладка, "детский" уровень дебага форкающегося приложения
I am My Parent
I am My Child
#
# захардкоженные пути
/etc/symc-defutils.conf
/var/log/
/var/run/
/etc/Symantec.conf
/opt/Symantec/symantec_antivirus
#
# и даже целые команды! это в бинарнике, который использует boost
# из libsep-util.so
grep -i Linux /proc/version
grep processor /proc/cpuinfo | wc -l
grep 'cpu MHz' /proc/cpuinfo | awk '{ print $4 }'
grep 'model name' /proc/cpuinfo | head -n 1 | awk '{ $1 = " ";$2 = " ";$3 = " "; print }'
grep 'MemTotal' /proc/meminfo | awk '{print $2}'
grep 'MemFree' /proc/meminfo | awk '{print $2}'
netstat -rn|grep '^\(default\|0.0.0.0\)'|head -1|awk '{print $2}'
# из smcd
grep 'ProductVersion=' '%s' | sed 's/ProductVersion=//g'
Вобщем, чтобы это cломать, мне нужно просто переименовать 'Symantec' в 'symantec' и всё.