Массовое создание станций в DrWeb ES
Как создать много станций на антивирусном сервере DrWeb Enterprise Suite? Техподдержка «доктора» порадовала и пообещала: «Будет!». Но нам ждать некогда. Антивирус нужен здесь и сейчас на 200 компьютерах. Поэтому читаем, как я это сделал:
В моём случае необходимость создания станций на сервере продиктована несколькими причинами:
- управление антивирусным сервером DrWeb ES осуществляется другим подразделением университета;
- подтверждение станций осуществляется вручную человеком из этого подразделения;
- в процессе ручного подтверждения некоторые станции «пропадают» (как я понял проблема в том, что если комп выключен на момент подтверждения, то он не будет отображаться в списке неподтверждённых);
- антивирус устанавливается скриптом, хочется чтобы он сразу автоматически подтверждался;
- хочется использовать свои идентификаторы, а не сгенерированные рандомные;
- хочется повторно использовать те же самые идентификаторы станций.
Для начала устанавливаем инструменты:
- linux - без комментариев;
- epiphany-browser - смотреть cookie после подключения к серверу;
- wireshark - смотреть HTTP POST-данные отправляемые браузером при создании станции;
- curl - повторять отправку HTTP POST-данных много раз.
Итак, приступим:
- запускаем Epiphany и очищаем в нём все cookie (Edit - Personal Data - Cookies - Clear All);
- заходим с его помощью в административный интерфейс антивирусного сервера (например: http://drweb.kasatkin.org:9080/esuite/index.ds);
- снова открываем настройки cookie и ищем там куки с именем sess_uid, с помощью кнопки Properties копируем Content этого куки. Аналогично поступаем с куки drwadmin;
- сохраняем эти данные на будущее в таком виде:
"drwadmin=7e1a9bf4-bdf7-4632-b233-6bbfb369e287; sess_uid=D4HCcTgNAa2xSTvlShT1"
- запускаем Wireshark от имени root и стартуем перехват пакетов (устанавливаем максимальный размер перехватываемого пакета побольше);
- создаём тестовую станцию в веб-интерфейсе DrWeb;
- сворачиваем окно Epiphany и на протяжении всего процесса не закрываем его, чтобы не потерять cookie;
- в Wireshark останавливаем перехват пакетов;
- ищем строку примерно такого вида:
HTTP POST http://drweb.kasatkin.org:9080/esuite/network/index.ds?new_station=1 HTTP/1.1 (application/x-www-form-urlencoded)
- жмём на этой строке правой кнопкой мыши и выбираем «Follow TCP stream» - откроется красивое окошко, в котором красным выделен искомый нами HTTP POST;
- копируем строку после «Content-Length: 486». В моём случае она выглядела так:
stid=IDHERE&name=HOSTNAMEHERE&password=PASSWORDHERE&confirmation=PASSWORDHERE&descr=&stationplIP=&stationminIP=&stationplIPv6=&stationminIPv6=&stationplIPX=&stationminIPX=&organization=&department=&country=&countryISO=&province=&city=&street=&floor=&room=&LatitudeDegree=0&LatitudeMinutes=0&LatitudeSeconds=0&LongitudeDegree=0&LongitudeMinutes=0&LongitudeSeconds=0&sGroups=20e27d73-d21d-b211-a788-85419c46f0e6&sGroups=c1eeef66-6bcc-471b-829a-42cdecff6170&prGroup=c1eeef66-6bcc-471b-829a-42cdecff6170
- как видно из строки я создавал тестовую станцию HOSTNAMEHERE с идентификатором IDHERE и паролем PASSWORDHERE;
- создаём bash-скриптик:
- create_stations.sh
#!/bin/bash ID=$1 NAME=$2 DPASSW=blaPASSWORDbla COOKIE="drwadmin=7e1a9bf4-bdf7-4632-b233-6bbfb369e287; sess_uid=D4HCcTgNAa2xSTvlShT1" MAINURL="http://drweb.kasatkin.org:9080/esuite/network/index.ds?new_station=1" /usr/bin/curl --cookie "$COOKIE" --data "stid=${ID}&name=${NAME}&password=${DPASSW}&confirmation=${DPASSW}&descr=&stationplIP=&stationminIP=&stationplIPv6=&stationminIPv6=&stationplIPX=&stationminIPX=&organization=&department=&country=&countryISO=&province=&city=&street=&floor=&room=&LatitudeDegree=0&LatitudeMinutes=0&LatitudeSeconds=0&LongitudeDegree=0&LongitudeMinutes=0&LongitudeSeconds=0&sGroups=20e27d73-d21d-b211-a788-85419c46f0e6&sGroups=c1eeef66-6bcc-471b-829a-42cdecff6170&prGroup=c1eeef66-6bcc-471b-829a-42cdecff6170" "$MAINURL"
Допиливаем его на свой вкус и цвет и запускаем его в цикле столько, сколько нам хочется, например так:
for i in `seq 1 21`; do ./create_stations.sh IDHERE_${i} HOSTNAMEHERE_${i} && sleep 1; done;
В результате создастся 21 станция с идентификаторами вида IDHERE_xx, именами вида HOSTNAMEHERE_xx и одинаковым на всех паролем blaPASSWORDbla.
Далее можно устанавливать антивирус примерно так:
drwinst.exe -id=IDHERE_xx -key=drwcsd.pub -pwd=blaPASSWORDbla -regagent drweb.kasatkin.org
Для того, чтобы повторить процесс в следующий раз надо будет заново зайти в админку DrWeb-а и получить новые значения cookie.