Преминете към основното съдържание

Конектор за обекта

rmm-connector.exe работи като Windows услугата RMMConnector на един присъединен към домейна сървър за всеки обект. Изходен код: entrosity-axis-connector/ (пакети ldap, adsync, push, wol, account, vertex), който споделя entrosity-shared-go/agentkit с агента.

Инсталиране​

msiexec /i rmm-connector.msi /qn ENROLLMENT_TOKEN=<token> SERVER_URL=<url> [SERVICE_ACCOUNT=DOMAIN\user SERVICE_PASSWORD=<pw>]
СвойствоЗначение
ENROLLMENT_TOKENТокен за регистриране от вид конектор (от Active Directory → Download connector).
SERVER_URLПубличният URL адрес на сървъра.
SERVICE_ACCOUNT, SERVICE_PASSWORDНезадължителен домейн акаунт за услугата; MSI пакетът му дава правото „Log on as a service“ и достъп до директорията с данни.

MSI пакетът инсталира една Windows услуга – RMMConnector (показвано име Entrosity Axis Site Connector; записът в Add/Remove Programs е със същото име). Тя работи като LocalSystem, освен ако не е зададен SERVICE_ACCOUNT. След като я стартира, MSI пакетът настройва услугата да се рестартира 30 секунди след всеки от първите ѝ три неуспеха, като броячът се нулира след едно денонощие (sc.exe failure). Тази стъпка се изпълнява по възможност и никога не връща инсталацията назад.

Регистрирането се извършва по време на инсталацията само ако машината още не е регистрирана. Ако в %ProgramData%\RMM Connector вече има съхранени идентификационни данни, в журнала на инсталацията пише already enrolled и съхраненият ключ се запазва. Ако този ключ вече не се приема, конекторът продължава да не успява да се свърже (401 за /api/connector/v1/ws в журнала на сървъра). За да отстраните това, регистрирайте машината отново с нов токен за конектор и рестартирайте услугата:

"C:\Program Files\RMM Connector\rmm-connector.exe" enroll --server <url> --token <token> --force
sc start RMMConnector

/qn скрива грешките на инсталатора. За отстраняване на проблеми добавете /l*v C:\connector-install.log и потърсете Return value 3. Подробният журнал съдържа токена за регистриране, затова го изтрийте след това.

Команден ред​

rmm-connector <command> [flags]

run run the connector (foreground, or as a service under the SCM)
--server URL --token T enroll first if not enrolled yet
enroll enroll this machine: --server URL --token T [--force]
status show enrollment state
install install the Windows service
uninstall remove the Windows service
prepare-service-account --account DOMAIN\user
grant "Log on as a service" and data directory access (MSI)
vertex guard show|accept|set|reset
the local Entrosity Vertex write guard (elevated prompt)
version print the version

RMM_CONNECTOR_DATA_DIR задава друга директория с данни (по подразбиране %ProgramData%\RMM Connector); RMM_LOG_LEVEL задава нивото на журналиране. Журнали: %ProgramData%\RMM Connector\logs\connector.log.

Възможности и ленти​

Конекторът обявява ldap, winrm, wol, а при компилации за Windows и smb и vertex. Задачите се изпълняват в отделни ленти, така че едно дълго push инсталиране не блокира синхронизацията:

ЛентаЗадачиПаралелност
LDAPadsync.run, ldap.test, ldap.ousпоследователно
pushpush_agent2 задачи, всяка с concurrency цели (по подразбиране 5)
wakewake–
updateupdate_agent–
vertexvertex.op (промени на Entrosity Vertex)последователно, по ред
vertex-readvertex.read (четения на Entrosity Vertex)2

LDAP синхронизация​

  • Свързване чрез LDAPS или StartTLS със системните коренни сертификати плюс незадължителния CA от конфигурацията; проверката се пропуска само при skip_tls_verify.
  • Simple bind, след това странично (paged) търсене в поддървото (по 500 на страница) с (&(objectCategory=computer)<filter>); включване/изключване на OU по суфикс на DN.
  • Компютрите се изпращат на порции от най-много 1000; последната порция има complete: true и общия брой. Порциите са идемпотентни според поредния си номер и може да пристигат в разбъркан ред.

Push инсталиране на агента​

Конекторът изтегля MSI пакета веднъж за задача (до 4 опита с нарастващо изчакване при мрежови грешки и HTTP 5xx; SHA-256 се проверява). Сървърът предоставя най-новото публикувано stable издание на агента чрез неговия версиониран обект, така че издание, публикувано по време на push инсталирането, не променя файла. Ако DNS на конектора не може да разреши името на хоста за файлове, грешката го казва (download_failed).

За всяка цел, с времево ограничение от 10 минути:

  1. разрешаване на името (FQDN, иначе краткото име) → connecting;
  2. първо SMB (TCP 445, компилации за Windows). Всички SMB стъпки се изпълняват в нишка, която имперсонира net only влизане с push акаунта (като runas /netonly), защото собствената идентичност на конектора (LocalSystem, т.е. компютърният акаунт в мрежата) не е администратор на целите, а RPC на отдалечения мениджър на услуги използва TCP в текущите версии на Windows. Свързване към \\host\ADMIN$ (конфликтна съществуваща връзка, грешка 1219, се прекъсва и опитът се повтаря) и отваряне на отдалечения мениджър на услуги. Съществуваща услуга RMMAgent → success (already_installed); останала услуга RMMPush се премахва;
  3. копиране на MSI пакета в ADMIN$\Temp\rmm-agent.msi → copying;
  4. създаване и стартиране на временна услуга RMMPush, която изпълнява cmd /c start "" msiexec /i … /qn ENROLLMENT_TOKEN=… SERVER_URL=… /l*v C:\Windows\Temp\rmm-agent-install.log → installing;
  5. периодично проверяване на журнала на инсталатора (UTF-16 или ANSI) за Installation success or error status и на мениджъра на услуги за RMMAgent: код на изход 0, 3010 или 1641 и налична услуга → success; друг код на изход → msiexec_failed със значението му и последните 25 реда от журнала (с редактирани токени за регистриране). Услугата, MSI пакетът и журналът се премахват.

WinRM се използва, когато порт 445 е затворен (или при компилации, различни от Windows), както и като резервен вариант, когато SMB се провали, преди нещо да е стартирано (ADMIN$ е изключен, мениджърът на услуги е недостъпен: copy_failed или unreachable). Той се свързва през HTTPS 5986, иначе през HTTP 5985 с NTLM шифроване на съобщенията, и изпълнява всяка команда в една отдалечена обвивка, една по една (никога със stdin: едновременното подаване на stdin и изчитане на изхода поврежда шифрования поток). MSI пакетът се добавя като base64 редове от по 7800 знака, декодира се с certutil -decode и се сравнява с certutil -hashfile … SHA256; след това msiexec се изпълнява както по-горе.

Токенът за регистриране при push, идентификационните данни и връзката към MSI пакета се добавят към задачата едва при доставянето ѝ.

Wake-on-LAN​

wake изпраща magic пакети за до 16 MAC адреса през всеки IPv4 интерфейс, към ограничения и насочения broadcast адрес, на UDP портове 9 и 7.

Entrosity Vertex​

На домейн контролер конекторът изпълнява операциите с Active Directory на Entrosity Vertex: задачи vertex.op и vertex.read (Протокол на Vertex). За всяка задача той взема AD акаунта и паролите от Vertex през Axis (POST /api/connector/v1/vertex/jobs/{jobID}/secrets, веднъж за задача), стартира Windows PowerShell 5.1 с вграден скрипт, който отваря PowerShell сесия към същата машина като този AD акаунт, и връща големите резултати на части (POST …/vertex/jobs/{jobID}/chunks). Изисквания към домейн контролера: Подготовка на домейн контролера.

Промените изискват локалната защита – vertex-guard.json в директорията с данни, която се променя само от локален администратор, от команден ред с администраторски права:

rmm-connector vertex guard show
rmm-connector vertex guard accept [--ou "<DN>" ...] [--yes]
rmm-connector vertex guard set [--user|--group|--ou|--gpo|--pso on|off] [--deletes on|off] [--max-writes-per-minute N]
rmm-connector vertex guard reset

accept --ou (може да се повтаря) приема дадените управлявани OU предварително, преди Vertex да е изпратил задача; те трябва да са точно управляваните OU от настройките на Vertex. Без --ou accept приема управляваните OU, които Vertex е изпратил с последната си промяна (защитата се създава, като чакаща, от първата промяна). set превключва класовете промени, изтриването и лимита в минута (по подразбиране 1000, от 1 до 2000; новата защита позволява потребители, групи и OU), а reset оттегля приемането. Собственик на файла трябва да е групата Administrators и само SYSTEM и Administrators да могат да го променят, иначе той се пренебрегва. Подробности: Локалната защита на конектора.

Присъствие​

Конекторът е онлайн от своето hello, докато сокетът му не се затвори (конекторите работят на сървъри, така че прекъсването се вижда веднага) или след 3 минути мълчание.

Разработка срещу Samba AD​

LDAP частта работи и на macOS и Linux. Вижте Среда за разработка → Стартиране на конектора.