Моя схема аудита:
Задача: Хочу получить логи кто работает через 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
смотрю что она представляется из себя:
Учетная запись 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.