Хочу адаптировать ранее опубликованные заметки к единому списку пошаговых действия, через которые я получу небольшую проверку системы Ubuntu 18.04 Server на наличии вирусов которые она может получить если пользователь загружает файлы на нее: к примеру если это Samba ресурс, блог, вики. Плюс с учетом политической ситуации отношения к России все блокируется для нас и как выйти и получать доступ к сервисам с учетом этого минуя вводимые ограничения. Благодаря данной заметке я адаптировался, а Вы? И на ее основе уже не только clamav будет получать свежие обновления, но и любая другая консольная утилита систем Ubuntu.

Шаг №1: Дабы получать доступ к ресурсам, которые заблокированы будет использовать связку 3proxy + Tor.

О том, как практически поднять связку 3proxy + Tor читать здесь: Как развернуть 3proxy на Ubuntu 18.04

Что самое интересное на момент 18.03 все в заметке работало и не один раз, а сейчас не нужен параметр pidfile и не работает ограничение доступа с определенного(ых) адресов. Разберу чуть позже что поменялось.

sudo apt-get install -y git curl tor make gcc
cd /opt
sudo git clone https://github.com/z3APA3A/3proxy.git
cd 3proxy/
sudo ln -s Makefile.Linux Makefile
sudo make
sudo make install
cd ~/

sudo cp /etc/3proxy/3proxy.cfg /etc/3proxy/3proxy.cfg.backup

sudo nano /etc/3proxy/3proxy.cfg
#!/bin/3proxy
daemon
#pidfile /var/run/3proxy/3proxy.pid
#id 3proxy
setgid 1001
setuid 1001
nserver 8.8.8.8
nserver 8.8.4.4
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
daemon
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
fakeresolve
#allow * $"/etc/3proxy/allow.txt"
allow *
#socks -p1080 –a
##перенаправляем запросы на порт Tor
parent 1000 socks5+ 127.0.0.1 9050
maxconn 50
socks -a -n -p50000 -i172.33.33.155 -e127.0.0.1


sudo useradd 3proxy
sudo passwd 3proxy
id 3proxy
uid=1001(3proxy) gid=1001(3proxy) groups=1001(3proxy)
sudo rm -Rf /var/log/3proxy
sudo mkdir /var/log/3proxy
sudo mkdir /var/run/3proxy
sudo chown -R 3proxy:3proxy /var/log/3proxy/ 
sudo chown -R root:root /var/run/3proxy

sudo nano /lib/systemd/system/3proxy.service

[Unit]
Description=3Proxy SOCKS5 Daemon
After=network-online.target

[Service]
Type=simple
ExecStart=/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/usr/bin/killall 3proxy
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

sudo systemctl enable 3proxy 

ekzorchik@srv-bionic:~$ sudo systemctl stop 3proxy && sudo systemctl start 3proxy && sudo systemctl status 3proxy && sudo netstat -tulpn | grep 3proxy
● 3proxy.service - 3Proxy SOCKS5 Daemon
   Loaded: loaded (/lib/systemd/system/3proxy.service; enabled; vendor preset: enabled)
   Active: active (exited) since Fri 2022-03-18 12:01:40 MSK; 11ms ago
  Process: 2773 ExecStop=/usr/bin/killall 3proxy (code=exited, status=0/SUCCESS)
  Process: 2777 ExecStart=/bin/3proxy /etc/3proxy/3proxy.cfg (code=exited, status=0/SUCCESS)
 Main PID: 2777 (code=exited, status=0/SUCCESS)
    Tasks: 2 (limit: 2333)
   CGroup: /system.slice/3proxy.service
           └─2779 /bin/3proxy /etc/3proxy/3proxy.cfg

Mar 18 12:01:40 srv-bionic systemd[1]: Started 3Proxy SOCKS5 Daemon.
tcp        0      0 172.33.33.155:50000     0.0.0.0:*               LISTEN      2779/3proxy
ekzorchik@srv-bionic:~$

На заметку: от 27.12.2022

ekzorchik@mail:~$ sudo /bin/3proxy /etc/3proxy/3proxy.cfg
/var/log/3proxy/3proxy.log.2022.12.27: Permission denied
Command: 'log' failed with code 1, line 12
ekzorchik@mail:~$ sudo chmod -R 774 /var/log/3proxy/
ekzorchik@mail:~$ sudo chown -R 3proxy:3proxy /var/log/3proxy/
ekzorchik@mail:~$ sudo ls -l /var/log/ | grep 3proxy
drwxrwxr--  2 3proxy     3proxy            4096 Dec 27 11:36 3proxy
ekzorchik@mail:~$
ekzorchik@mail:~$ sudo systemctl start 3proxy
ekzorchik@mail:~$ ps aux | grep 3proxy
3proxy   11827  0.0  0.2  77440  4500 ?        Ssl  11:47   0:00 /bin/3proxy /etc/3proxy/3proxy.cfg
ekzorch+ 11847  0.0  0.0  15656  1104 pts/0    R+   11:48   0:00 grep --color=auto 3proxy
ekzorchik@mail:~$ sudo netstat -tulpn | grep :50000
tcp        0      0 172.33.2.14:50000       0.0.0.0:*               LISTEN      11827/3proxy
ekzorchik@mail:~$

Если Вы вносили изменения в /lib/systemd/system/3proxy.service, то для их активации нужна команда ниже:

sudo systemctl daemon-reload

Проверяю, что сервис 3proxy работает:

curl -x socks5://172.33.33.155:50000 ipecho.net/plain ; echo
199.249.230.69

Шаг №2: Устанавливаю из дефолтных репозитариев Ubuntu 18.04 Server пакеты для антивирусной защиты:

ekzorchik@srv-bionic:~$ sudo apt-get install -y clamav clamav-daemon clamav-freshclam clamfs

установленная версия:

ekzorchik@srv-bionic:~$ clamscan --version
ClamAV 0.103.5

Шаг №3: Обновляем текущую антивирусную базу до самого актуального состояния:

ekzorchik@srv-bionic:~$ sudo freshclam
Thu Mar 17 15:47:40 2022 -> ClamAV update process started at Thu Mar 17 15:47:40 2022
Thu Mar 17 15:47:40 2022 -> ^FreshClam previously received error code 429 or 403 from the ClamAV Content Delivery Network (CDN).
Thu Mar 17 15:47:40 2022 -> This means that you have been rate limited or blocked by the CDN.
Thu Mar 17 15:47:40 2022 ->  1. Verify that you're running a supported ClamAV version.
Thu Mar 17 15:47:40 2022 ->     See https://docs.clamav.net/faq/faq-eol.html for details.
Thu Mar 17 15:47:40 2022 ->  2. Run FreshClam no more than once an hour to check for updates.
Thu Mar 17 15:47:40 2022 ->     FreshClam should check DNS first to see if an update is needed.
Thu Mar 17 15:47:40 2022 ->  3. If you have more than 10 hosts on your network attempting to download,
Thu Mar 17 15:47:40 2022 ->     it is recommended that you set up a private mirror on your network using
Thu Mar 17 15:47:40 2022 ->     cvdupdate (https://pypi.org/project/cvdupdate/) to save bandwidth on the
Thu Mar 17 15:47:40 2022 ->     CDN and your own network.
Thu Mar 17 15:47:40 2022 ->  4. Please do not open a ticket asking for an exemption from the rate limit,
Thu Mar 17 15:47:40 2022 ->     it will not be granted.
Thu Mar 17 15:47:40 2022 -> ^You are still on cool-down until after: 2022-03-18 15:45:01
ekzorchik@srv-bionic:~$

судя по выводу я как гражданин, находящийся в России заблокирован CDN на доступ к серверам обновления.

Шаг №4: Значит нужно задействовать связку 3Proxy + Tor для выкачивания антивирусных баз:

ekzorchik@srv-bionic:~$ curl -v -x socks5://172.33.33.155:50000 "http://database.clamav.net/main.cvd" --output main.cvd
ekzorchik@srv-bionic:~$ file main.cvd
main.cvd: Clam AntiVirus database 16 Sep 2021 08-32 -0400, version62, gzipped
ekzorchik@srv-bionic:~$ ls -lh main.cvd
-rw-rw-r-- 1 ekzorchik ekzorchik 163M Mar 17 16:06 main.cvd
ekzorchik@srv-bionic:~$ 

как вижу антивирусный файл базы скачивается через tor, значит я могу написать примитивный скрипт для выкачивания актуальных баз данных и подключенных баз от maldet:

ekzorchik@srv-bionic:~$ nano clamavupdate

#!/bin/bash
rm -Rf /tmp/clamav
mkdir /tmp/clamav
cd /tmp/clamav

curl -v -x socks5://172.33.33.155:50000 "http://database.clamav.net/main.cvd" --output main.cvd
curl -v -x socks5://172.33.33.155:50000 "http://database.clamav.net/daily.cvd" --output daily.cvd
curl -v -x socks5://172.33.33.155:50000 "http://database.clamav.net/bytecode.cvd" --output bytecode.cvd

curl -v -x socks5://172.33.33.155:50000 "http://www.rfxn.com/downloads/rfxn.ndb" --output rfxn.ndb
curl -v -x socks5://172.33.33.155:50000 "http://www.rfxn.com/downloads/rfxn.hdb" --output rfxn.hdb



mv -f daily.cvd /var/lib/clamav/
mv -f main.cvd /var/lib/clamav/
mv -f bytecode.cvd /var/lib/clamav/
mv -f rfxn.ndb /var/lib/clamav/
mv -f rfxn.hdb /var/lib/clamav/

chown -R clamav:clamav /var/lib/clamav/

/etc/init.d/clamav-freshclam restart
#Current Version now"
echo `freshclam --version`

ekzorchik@srv-bionic:~$ chmod +x clamavupdate
ekzorchik@srv-bionic:~$ sudo ./clamavupdate
ClamAV 0.103.5/26485/Fri Mar 18 11:26:47 2022

Скрипт рабочий. И скачиваются обновления.

ekzorchik@srv-bionic:~$ sudo ls /var/lib/clamav/
bytecode.cvd  daily.cvd  freshclam.dat  main.cvd

Шаг №5: Настраиваем задание на получение самых последних баз раз в 6 часов:

ekzorchik@srv-bionic:~$ sudo crontab –e
* */6 * * *  root /home/ekzorchik/clamavupdate > /dev/null 2>&1

Шаг №6: Теперь нужно изменить работу инструмента под названием freshclam чтобы он не обращался к получению актуального состояние баз данных сигнатур:

ekzorchik@srv-bionic:~$ sudo systemctl disable clamav-freshclam.service
ekzorchik@srv-bionic:~$ sudo killall freshclam
ekzorchik@srv-bionic:~$ sudo systemctl start clamav-daemon.service

Шаг №7: Чтобы просканировать всю систему полностью и файлы (и директории) на других файловых системах, попросту говоря смонтированных сетевых ресурсах:

ekzorchik@srv-bionic:~$ sudo clamscan / --recursive=yes --cross-fs=yes

Шаг №8: Если же не хочется смотреть на консоль, когда антивирус проходит по всем файлам, то можно задать специальную опцию с целью показа только тех файлов, которые имеют место быть зараженными:

ekzorchik@srv-bionic:~$ sudo clamscan / -i --recursive=yes --cross-fs=yes

Шаг №9: Проверить конкретный файл:

ekzorchik@srv-bionic:~$ cat /etc/passwd | clamscan -

stdin: OK

----------- SCAN SUMMARY -----------
Known viruses: 8623303
Engine version: 0.103.5
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 23.231 sec (0 m 23 s)
Start Date: 2022:03:18 14:16:03
End Date:   2022:03:18 14:16:26

Вообще все что написано в заметке "Антивирус Clamav на защите работы системы Ubuntu" актуально и по сей день.

Дабы не загромождать заметку, завершусь, если что будет интересное, то вернусь и дополню. На этом пока все, с уважением автор блога Олло Александр aka ekzorchik.