Схема взаимодействия через Aspia Console с хостами Aspia Host

Моя схема аудита:

Схема взаимодействия через Aspia Console с хостами Aspia Host

Задача: Хочу получить логи кто работает через Aspia Console с компьютерами офисных сотрудников.

Ввиду того, что многие программисты нашей компании работают на удаленке, порой им для удаленной помощи нужен инструмент. Я против использования AnyDesk, так что пусть они подключаются к офисным сотрудникам (явно указанным), так как отдел системных администраторов, т.е. по аналогии, но для этого я явно на тех рабочих станциях создаю учетную запись программиста и установив Aspia Host предоставляю доступ. Но с обязательным запросом при подключении, что-такой-то хочет к Вам подключиться: Принять или отказать. Но если я для одного программиста по задаче для бухгалтерии такое сделал, то после он ябы сказал охамел, так как этих пользователей оказалось уже более 10.

У меня для сотрудников, которые подключаются по удаленке используется механизм Remote Desktop Gateway (с двойной аутентификацией) на офисный компьютер и ведется логирование, я могу снять логи за месяц, а вот через данный инструмент, как снимать логи?

Хорошая задумка в итоге вылилась в практическую заметку.

Шаг №1: Подключаюсь по SSH к хосту, на котором развернуты сервис aspia relay & aspia router, как это сделано смотри заметки: "Внедряем Aspia версии 2.5.2 на Ubuntu 22.04" или "Внедряем замену TeamViewer — Это Aspia"  и смотрю что представляется из себя база router.db3:

ekzorchik@srv-remote:~$ sudo find / -name aspia
/var/lib/aspia
/etc/aspia
ekzorchik@srv-remote:~$ ls /var/lib/aspia/
router.db3
ekzorchik@srv-remote:~$ file /var/lib/aspia/router.db3
/var/lib/aspia/router.db3: SQLite 3.x database, last written using SQLite version 3037001
ekzorchik@srv-remote:~$

в базе видно только какие пользователи заведены в Aspia Console на srv-remote.ekzorchik.ru

скачал базу router.db3 к себе на компьютер и через утилиту DB Browser for SQLite смотрю что она представляется из себя:

Содержимое router.db3 через DB Browser for SQLite

  • Учетная запись admin - выключена у меня
  • Учетная запись support - это административная запись для всех под которой отдел IT подключается ко всем и имеет полные права
  • test - для одного тестировщика
  • klisun - для программиста который на удаленке который охамел.

Шаг №2: Если необходимо настроить постоянное сохранение логов, потребуется отдельно это настроить:

На заметку: По умолчанию journald перезаписывает свои журналы логов при каждой перезагрузке, и вызов journalctl выведет журнал логов начиная с текущей загрузки системы.

ekzorchik@srv-remote:~$ sudo mkdir /var/log/journal
mkdir: cannot create directory ‘/var/log/journal’: File exists
ekzorchik@srv-remote:~$ sudo systemd-tmpfiles --create --prefix /var/log/journal/

Максимальный объем журнала можно скорректировать, раскомментировав и отредактировав следующий параметр в файле конфигурации journald:

ekzorchik@srv-remote:~$ sudo nano /etc/systemd/journald.conf
[Journal]
SystemMaxUse=1024M
ekzorchik@srv-remote:~$ sudo systemctl restart systemd-journald

Шаг №3: Вычитал из документации к сервису Aspia, что можно добавить параметр ведения расширенных логов, вношу изменения в сервис:

В документации говорится про ключ расширенного логирования

ekzorchik@srv-remote:~# nano /etc/systemd/system/multi-user.target.wants/aspia-router.service
[Unit]
Description=Aspia Router
Before=runlevel2.target runlevel3.target runlevel4.target runlevel5.target shutdown.target
After=network-online.target network.service ntp.service
Conflicts=shutdown.target

[Service]
WorkingDirectory=/usr/bin
Environment=ASPIA_LOG_LEVEL=0
#Environment=SVC=aspia-router
User=root
Group=root
Restart=always
ExecStart=/usr/bin/aspia_router
RestartSec=5000ms

[Install]
WantedBy=multi-user.target
ekzorchik@srv-remote:~# systemctl daemon-reload
ekzorchik@srv-remote:~# systemctl restart aspia-router.service && systemctl restart aspia-relay.service
ekzorchik@srv-remote:~# systemctl list-units --type=service | grep aspia
  aspia-relay.service                  loaded active running Aspia Relay
  aspia-router.service                 loaded active running Aspia Router
ekzorchik@srv-remote:~#

Шаг №4: Смотрим логи в режиме реального времени, когда я подключаюсь через Aspia Console к Aspia Host что формируется:

ekzorchik@srv-remote:~# journalctl -u aspia-router.service -f
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.219313 140180372862912 I server_authenticator.cc:275 onClientHello] Received: ClientHello
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.219341 140180372862912 I server_authenticator.cc:284 onClientHello] Encryption: UNKNOWN
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.219355 140180372862912 I server_authenticator.cc:285 onClientHello] Identify: IDENTIFY_SRP
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.219372 140180372862912 I server_authenticator.cc:363 onClientHello] Both sides have hardware support AES. Using AES256 GCM
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.219382 140180372862912 I server_authenticator.cc:379 onClientHello] Sending: ServerHello
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.219571 140180372862912 I server_authenticator.cc:223 onWritten] Sended: ServerHello
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.222074 140180372862912 I server_authenticator.cc:385 onIdentify] Received: Identify
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.222120 140180372862912 I server_authenticator.cc:401 onIdentify] Username: 'support'
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.222619 140180372862912 I server_authenticator.cc:424 onIdentify] User 'support' found (enabled: 1)
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.231716 140180372862912 I server_authenticator.cc:485 onIdentify] Sending: ServerKeyExchange
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.231831 140180372862912 I server_authenticator.cc:255 onWritten] Sended: ServerKeyExchange
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.298267 140180372862912 I server_authenticator.cc:491 onClientKeyExchange] Received: ClientKeyExchange
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.315097 140180372862912 I authenticator.cc:205 onSessionKeyChanged] Session key changed
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.315266 140180372862912 I server_authenticator.cc:563 doSessionChallenge] Sending: SessionChallenge
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.315400 140180372862912 I server_authenticator.cc:262 onWritten] Sended: SessionChallenge
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.318077 140180372862912 I server_authenticator.cc:569 onSessionResponse] Received: SessionResponse
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.318120 140180372862912 I server_authenticator.cc:583 onSessionResponse] Client Session Type: 2
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.318132 140180372862912 I server_authenticator.cc:584 onSessionResponse] Client Version: 2.4.0.4038
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.318142 140180372862912 I server_authenticator.cc:585 onSessionResponse] Client Name: SRV-W10X64A
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.318151 140180372862912 I server_authenticator.cc:586 onSessionResponse] Client OS: Windows 10 Pro Education
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.318160 140180372862912 I server_authenticator.cc:587 onSessionResponse] Client CPU Cores: 12
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.318170 140180372862912 I authenticator.cc:149 finish] Authenticator finished with code: SUCCESS (onSessionResponse@server_authenticator.cc:604)
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.318198 140180372862912 I server.cc:319 onNewSession] New session: ROUTER_SESSION_CLIENT (WAN-IP)
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.318243 140180372862912 I session_client.cc:73 readConnectionRequest] New connection request (host_id: 170)

Шаг №5: Теперь нужно как-то сформировать удобочитаемый лог, а точнее меня интересуют строки где встречается имя пользователя, WAN-IP кто подключается, к id хоста к которому идет подключение:

ekzorchik@srv-remote:~$ journalctl -u aspia-router.service --since today | grep -E 'Username|ROUTER_SESSION_CLIENT|host_id'
Jun 30 15:16:13 ekzorchik.ru aspia_router[625484]: 15:16:13.810704 139701045901248 I server_authenticator.cc:401 onIdentify] Username: 'support'
Jun 30 15:16:28 ekzorchik.ru aspia_router[625484]: 15:16:28.203868 139701045901248 I server_authenticator.cc:401 onIdentify] Username: 'support'
Jun 30 15:16:28 ekzorchik.ru aspia_router[625484]: 15:16:28.302510 139701045901248 I server.cc:319 onNewSession] New session: ROUTER_SESSION_CLIENT (WAN-IP)
Jun 30 15:16:28 ekzorchik.ru aspia_router[625484]: 15:16:28.302557 139701045901248 I session_client.cc:73 readConnectionRequest] New connection request (host_id: 170)
Jun 30 15:17:03 ekzorchik.ru aspia_router[625484]: 15:17:03.202161 139701045901248 I server_authenticator.cc:401 onIdentify] Username: 'support'
Jun 30 15:17:03 ekzorchik.ru aspia_router[625484]: 15:17:03.311913 139701045901248 I server.cc:319 onNewSession] New session: ROUTER_SESSION_CLIENT (WAN-IP)
Jun 30 15:17:03 ekzorchik.ru aspia_router[625484]: 15:17:03.311967 139701045901248 I session_client.cc:73 readConnectionRequest] New connection request (host_id: 170)
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.222120 140180372862912 I server_authenticator.cc:401 onIdentify] Username: 'support'
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.318198 140180372862912 I server.cc:319 onNewSession] New session: ROUTER_SESSION_CLIENT (WAN-IP)
Jun 30 15:28:43 ekzorchik.ru aspia_router[626161]: 15:28:43.318243 140180372862912 I session_client.cc:73 readConnectionRequest] New connection request (host_id: 170)
ekzorchik@srv-remote:~$

Шаг №6: Получить лог на определенную дату:

ekzorchik@srv-remote:~$ journalctl -u aspia-router.service --since "2023-06-30" | grep -E 'Username|ROUTER_SESSION_CLIENT|host_id'

Шаг №7: Из выше настроенно напрашивается вывод, что можно кстати запускать в 23:59 команду и сохранять результат в текстовый файл за текущую дату дабы потом анализировать или просто хранить логи за месяц, как пример.

Итого. Данными шагами выше я получил что хотел, а именно с какого внешнего IP адреса происходило подключение из Aspia Console к Aspia Host, под какой учетной записью "Username" и к какому Aspia Host ID. Ну а далее уже можно сделать вывод что по "Username" принадлежит конкретному программисту.

На заметку: Будут какие-либо дополнения обязательно отражу из в данной заметке.

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