В данной статье я расскажу, про настройку прокси сервера
squid-3.0.STABLE7 для проверки трафика на вирусы.
Для реализации, нам понядобится пакеты:
Прокси сервер.
squid ставим через
yum install squid версия squid-3.0.STABLEX
Демон c-icap, качаем с
от сюда или качаем tar.gz архив и собираем ручками.
Из rpm пакетов нам нужно следующие:
c-icap
c-icap-server
c-icap-modules
c_icap-devel
Антивирус, устанавливаем через
yum install или собираем свежую версию из архива clamav.xxx.tar.gz
clamav
clamav-update
clamav-data
clamav-server
clamav-devel
clamav-lib
После установки пакетов переходим к настройкам.
Для начала нам нужно настройить
clamav и freshclam
Для это отредоктируем нужные нам файлы.
vi /etc/clamd.conf
Я подправил, только нужные мне строки.
cat /etc/clamd.conf | grep -v "#" | sed -e '/^ *$/d'
LogFile /var/log/clamd.log
TemporaryDirectory /var/tmp
DatabaseDirectory /var/lib/clamav
LocalSocket /tmp/clamd.socket
User clamav
После переходим к конфигурационному файлу
freshclam.conf
vi /etc/freshclam.conf
cat /etc/freshclam.conf | grep -v "#" | sed -e '/^ *$/d'
DatabaseDirectory /var/lib/clamav
UpdateLogFile /var/log/freshclam.log
DatabaseOwner clamav
DatabaseMirror database.clamav.net
Как видно, я просто использовал конфиги по умолчанию. Конфигурационные файлы, хорошо документированны.
Проверим работу
freshclam
Если все ок, выдолжны увидеть следующие.
ClamAV update process started at Tue Sep 16 17:52:44 2008
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.93.3 Recommended version: 0.94
DON'T PANIC! Read
http://www.clamav.net/support/faq
main.cld is up to date (version: 48, sigs: 399264, f-level: 35, builder: sven)
connect_error: getsockopt(SO_ERROR): fd=4 error=111: Connection refused
Can't connect to port 80 of host database.clamav.net (IP: 217.20.175.83)
Trying host database.clamav.net (217.147.29.149)...
Downloading daily-8244.cdiff [100%]
Downloading daily-8245.cdiff [100%]
Downloading daily-8246.cdiff [100%]
Downloading daily-8247.cdiff [100%]
Downloading daily-8248.cdiff [100%]
Downloading daily-8249.cdiff [100%]
Downloading daily-8250.cdiff [100%]
Downloading daily-8251.cdiff [100%]
Downloading daily-8252.cdiff [100%]
Downloading daily-8253.cdiff [100%]
Downloading daily-8254.cdiff [100%]
Downloading daily-8255.cdiff [100%]
Downloading daily-8256.cdiff [100%]
Downloading daily-8257.cdiff [100%]
Downloading daily-8258.cdiff [100%]
Downloading daily-8259.cdiff [100%]
Downloading daily-8260.cdiff [100%]
daily.cld updated (version: 8260, sigs: 26537, f-level: 35, builder: neo)
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Current functionality level = 33, recommended = 35
DON'T PANIC! Read
http://www.clamav.net/support/faq
Database updated (425801 signatures) from database.clamav.net (IP: 217.147.29.149)
Перейдем к настройке
c-icap.
Для этого откроем
mcedit /etc/c-icap.conf
Мой конфиг выглядит вот так.
cat /etc/c-icap.conf | grep -v "#" | sed -e '/^ *$/d'
PidFile /var/run/icapd/icapd.pid
CommandsSocket /var/run/icapd/icapd.ctl
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 600
StartServers 3
MaxServers 10
MinSpareThreads 10
MaxSpareThreads 20
ThreadsPerChild 10
MaxRequestsPerChild 0
Port 1344
User nobody
Group nobody
TmpDir /var/tmp
MaxMemObject 131072
ServerLog /var/log/icapd/server.log
AccessLog /var/log/icapd/access.log
ModulesDir /usr/lib/c_icap
Module logger sys_logger.so
Module perl_handler perl_handler.so
sys_logger.Prefix "C-ICAP:"
sys_logger.Facility local1
Logger file_logger
acl localnet_respmod src 192.168.1.0/255.255.255.0 type respmod
acl localnet src 192.168.1.0/255.255.255.0
icap_access allow localnet_respmod
icap_access allow localnet
icap_access deny externalnet
ServicesDir /usr/lib/c_icap
Service echo_module srv_echo.so
Service url_check_module srv_url_check.so
Service antivirus_module srv_clamav.so
ServiceAlias avscan srv_clamav?allow204=on&sizelimit=off&mode=simple
srv_clamav.ScanFileTypes TEXT DATA EXECUTABLE ARCHIVE GIF JPEG MSOFFICE
srv_clamav.SendPercentData 5
srv_clamav.StartSendPercentDataAfter 2M
srv_clamav.MaxObjectSize 5M
srv_clamav.ClamAvTmpDir /var/tmp
srv_clamav.ClamAvMaxFilesInArchive 0
srv_clamav.ClamAvMaxFileSizeInArchive 20M
srv_clamav.ClamAvMaxRecLevel 5
srv_clamav.VirSaveDir /var/infected/
srv_clamav.VirHTTPServer "http://localhost/cgi-bin/get_file.pl?usename=%f&remove=1&file="
srv_clamav.VirUpdateTime 15
srv_clamav.VirScanFileTypes ARCHIVE EXECUTABLE
Собственно, конфиг стандартный я сменил только пользователя на nobody и пару строк, от того конфига что нашел через
гугл
Нам ужно сменить владельца на каталоги
mkdir /var/infected/ -
выможете указать другой каталог, не забудьте смнеить его в конфиге.
chown nobody.nobody /var/infected/
chown -R nobody.nobody /var/log/icapd/
Запустим
icapd сервис.
service icapd start
При старте он может выдавать рекомендации, об обновлении баз и самого антивируса, это не страшно.
Проверим работает наш icapd
ps aux | grep icapd
Должно быть, примерно так.
nobody 11591 0.0 2.5 55840 53036 pts/1 S 18:05 0:00 icapd
nobody 11592 0.0 2.5 168528 52816 pts/1 Sl 18:05 0:00 icapd
nobody 11595 0.0 2.5 168528 52816 pts/1 Sl 18:05 0:00 icapd
nobody 11613 0.0 2.5 168528 52816 pts/1 Sl 18:05 0:00 icapd
root 11632 0.0 0.0 4148 768 pts/1 S+ 18:07 0:00 grep icapd
или так
netstat -apn | grep 1344
Должно быть, примерно так.
tcp 0 0 0.0.0.0:1344 0.0.0.0:* LISTEN 11591/icapd
Переходим к настройкам
squid.
mcedit /etc/squid/squid.conf
Мой конфиг, выглядит примерно вот так.
cat /etc/squid/squid.conf | grep -v "#" | sed -e '/^ *$/d'
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access deny all
icp_access allow localnet
icp_access deny all
htcp_access allow localnet
htcp_access deny all
http_port 192.168.1.1:3128 transparent
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern (cgi-bin|?) 0 0% 0
refresh_pattern . 0 20% 4320
cache_mgr admin@z-tec.ru
cache_effective_user nobody
visible_hostname lupicha.ru
icp_port 3130
icap_enable on
icap_preview_enable on
icap_preview_size 128
icap_send_client_ip on
icap_service service_avi respmod_precache 0 icap://localhost:1344/srv_clamav
icap_class class_antivirus service_avi
icap_access class_antivirus allow all
dns_nameservers 217.150.34.129 80.79.64.210
coredump_dir /var/spool/squid
Сменим владельца на директорию кэша и логов.
chown -R nobody.nobody /var/log/squid/
chown -R nobody.nobody /var/spool/squid/
Запустим сквид с параметром
squid -z
Если нет ошибок, то стартуем сквид.
Можно врежиме отладки, можно сразу как демон.
Врежиме отладки
squid -NCd1
Как демон
service squid start
Проверим
увидим примерно следующие.
root 11658 0.0 0.1 10880 2364 ? Ss 18:22 0:00 squid -D
nobody 11660 0.6 0.4 14676 9020 ? S 18:22 0:00 (squid) -D
root 11665 0.0 0.0 4148 768 pts/1 S+ 18:22 0:00 grep squid
или так
netstat -apn | grep 3128
Теперь осталось самое простое, проврерить ловит squid вирусы или нет.
Зайдем на
Сюда
И по пробовать скачть вирус.
У меня поймал, но я качал по http не https.
Я увидел следующие.
VIRUS FOUND
You try to upload/download a file that contain the virus
Eicar-Test-Signature
This message generated by C-ICAP/060708rc1 srvClamAV/antivirus module
За основу для написания, этого маленького faq я взял следующие статьи.
www.nixp.ru
Проблема решена. Тему можно закрыть
c-icap-060708-6.fc8sl.src.rpm пакет от Sergeil
c-icap-060708-6.fc9.src.rpm
c_icap-060708-6.fc9.i686.rpm
c-icap-server-060708-6.fc9.i686.rpm
c-icap-client-060708-6.fc9.i686.rpm
c-icap-modules-060708-6.fc9.i686.rpm
c_icap-devel-060708-6.fc9.i686.rpm
c-icap-debuginfo-060708-6.fc9.i686.rpm
c-icap.spec
c-icap.conf