Задача: Нужно ранее опубликованную заметку по развертыванию Nod32 Mirror сервера вынести в интернет конечно не для всеобщего доступа, а обрести возможность подключения к нему из различных мест: «Дом», «Работа», «Коллеги», «Друзья».

К примеру у Вас есть собственный домен и хостинг при нем и вы имеете к нему доступ. Если все так, то ниже мой набор шагов которые я применил дабы вынести сервис обновления для Nod32 на свой ресурс вида: http://IP&DNS:PORT/, т.е. http://nod.ekzorchik.ru:38000

Шаг №1: Подключаемся к своему VPS серверу:

ekzorchik@navy:~$ nano ~/.bashrc

alias srv-vps='sshpass -p <PASSWORD> ssh -o "StrictHostKeyChecking no" ekzorchik@<IP> -p <PORT>'

ekzorchik@navy:~$

ekzorchik@navy:~$ source ~/.bashrc

ekzorchik@navy:~$ srv-vps

Шаг №2: Скачиваю пакет nod32-update-mirror

ekzorchik@srv-vps:~$ wget https://github.com/tarampampam/nod32-update-mirror/archive/master.zip

ekzorchik@srv-vps:~$ unzip master.zip

ekzorchik@srv-vps:~$ rm master.zip

ekzorchik@srv-vps:~$ mv nod32-update-mirror-master/ nod32

Шаг №3: Создаю структуру каталогов для поддомена или домена:

ekzorchik@srv-vps:~$ sudo mkdir /var/www/html/nod

ekzorchik@srv-vps:~$ sudo cp -r nod32/nginx/html/* /var/www/html/nod/

ekzorchik@srv-vps:~$ mkdir nod

ekzorchik@srv-vps:~$ cp -r nod32/src/include/ ~/nod/

ekzorchik@srv-vps:~$ cp nod32/src/nod32-mirror.sh ~/nod

ekzorchik@srv-vps:~$ chmod +x ~/nod/nod32-mirror.sh

ekzorchik@srv-vps:~$ cp nod32/src/settings.conf ~/nod

ekzorchik@srv-vps:~$ rm -Rf nod32/

Шаг №4: Привожу настройки конфигурационного файла:

ekzorchik@srv-vps:~$ nano nod/settings.conf

export NOD32MIRROR_DEBUG_MODE=0;

export NOD32MIRROR_USE_FREE_KEY=0;

export NOD32MIRROR_MIRROR_DIR="/var/www/html/nod";

export NOD32MIRROR_SERVER_0='http://update.eset.com:80/eset_upd/ <LOGIN> <PASSWORD>';

export NOD32MIRROR_LANGUAGES='1033 1049';

export NOD32MIRROR_VERSIONS='pcu 5';

export NOD32MIRROR_LOG_PATH="/var/log/nod32/nod32mirror.log";

export NOD32MIRROR_CURL_BIN='false';

export NOD32MIRROR_TEST_URI='http://update.eset.com:80/v8-rel-sta/mod_010_smon_1036/em010_32_l0.nup';

export NOD32MIRROR_TIMESTAMP_FILE_NAME='lastevent.txt';

export NOD32MIRROR_VERSION_FILE_NAME='version.txt';

Шаг №5: Выкачиваю обновления для пятой версии:

ekzorchik@srv-vps:~$ sudo ~/nod/nod32-mirror.sh -u

ekzorchik@srv-vps:~$ sudo chown -R www-data:www-data /var/www/html/nod/

Шаг №6: У меня на данном VPS используется Web-сервис nginx, а значит на нем и настрою доступ к URL на доступ к nod32:

ekzorchik@srv-vps:~$ sudo nano /etc/nginx/sites-available/nod.ekzorchik.ru
server {
    if ($host = nod.ekzorchik.ru) {
        return 301 http://$host$request_uri;
    } 

  listen 38000;
  server_name nod.ekzorchik.ru;
  return 301 http://$host$request_uri;

}


server {
	server_name nod.ekzorchik.ru;
	root /var/www/html/nod;
	charset utf-8;
	index index.html;

	 if ($http_user_agent ~* ^(Wget|aria2|NOD32view|perl|php|curl|Google|Yandex|Yahoo)|(Mirror|spider|bot|Parser|RSS|grab)) {
                        return 403;
         }
	
	 location ~* ^.+.(htaccess|htpasswd|pl|cqi|sh|sql|conf|tmp)$ {
                        return 403;
         }


	location / {
              autoindex  on;
	      auth_basic "Restricted Content";
	      auth_basic_user_file /var/www/html/nod/.htpasswd;
         }

}
ekzorchik@srv-vps:~$ sudo ln -s /etc/nginx/sites-available/nod.ekzorchik.ru /etc/nginx/sites-enabled/nod.ekzorchik.ru

ekzorchik@srv-vps:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
ekzorchik@srv-vps:~$
ekzorchik@srv-vps:~$ sudo systemctl restart nginx && sudo systemctl status nginx | head -n5
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-01-19 19:37:03 MSK; 22ms ago
  Process: 14983 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=2)
  Process: 3247 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS)
ekzorchik@srv-vps:~$

Шаг №7: Защищаю доступ к корню поддомена nod.ekzorchik.ru связкой логина и пароля, а корень — это возможность скачивания обновлений:

ekzorchik@srv-bionic:~$ sudo sh -c "echo -n 'ekzorchik:' >> /var/www/html/nod/.htpasswd"

ekzorchik@srv-vps:~$ openssl passwd -apr1

Password: <PASSWORD>

Verifying - Password: <PASSWORD>

$apr1$p880XUG8$IW.9MKrvipGknXnLudvGb.

ekzorchik@srv-vps:~$

ekzorchik@srv-vps:~$ sudo nano /var/www/html/nod/.htpasswd

ekzorchik:$apr1$p880XXG8$IW.9MKrvipGqnXnLudvGb.

ekzorchik@srv-vps:~$ sudo chown -R www-data:www-data /var/www/html/nod/

Шаг №8: Создаю задачу в планировщик на обновление каждый час в 15 минут файлов обновлений и после правка прав на каталог /var/www/html/nod:

ekzorchik@srv-vps:~$ sudo crontab -e

15 * * * * sudo /home/ekzorchik/nod/nod32-mirror.sh -u > /dev/null 2>&1

15 * * * * sudo chown -R www-data:www-data /var/www/html/nod > /dev/null 2>&1

ekzorchik@srv-vps:~$ sudo nano /etc/rsyslog.d/50-default.conf

cron.* /var/log/cron.log

ekzorchik@srv-vps:~$ sudo service rsyslog restart

ekzorchik@srv-vps:~$ sudo service cron restart

ekzorchik@srv-vps:~$ sudo grep --color -i cron /var/log/cron.log

Шаг №9: Но у меня на блоге еще работает брандмауэр и мне нужно для порта 38000 открыть доступ:

ekzorchik@srv-vps:~$ sudo ufw allow 38000/tcp

Rule added

ekzorchik@srv-vps:~$ sudo ufw reload

Firewall reloaded

Шаг №10: Проверяю, что доступ на Web-адрес с браузера:

http://nod.ekzorchik.ru:38000 — авторизуюсь и вижу при наведении на иконку по центру с надписью дату и время последнего обновления, а также версию базы.

Обновления скачаны

Шаг №11: Прописываю настройки обновления на рабочей станции где у меня установлен антивирус Eset Endpoint Antivirus, версия 5.0.2271.3 и он успешно скачивает обновления.

Работает. Итого если делаешь что-то, как для себя, то и работает на славу. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.