В предыдущей статье мы изучили на практике способ обхода блокировки консоли (astra-console-lock) операционной системы Astra Linux 1.7 для запуска произвольных shell-команд.
Сегодня я предлагаю разобрать данный механизм за пределами команды astra-console-lock, так как по сути это всего лишь вершина айсберга.
Итак, после запуска команды astra-console-lock enable автоматически производится несколько действий:
1. В каталоге /etc/systemd/system создаётся юнит systemd — astra-console-lock.service, его задача запускать astra-console-lock каждый раз после старта системы;
2. Если отсутствует, создаётся группа astra-console и в неё автоматически включаются члены группы astra-admin;
3. В файл /etc/security/access.conf добавляется строчка:
-:ALL EXCEPT astra-console :LOCAL
Собственно, в этой строчке «магия», которая не пускает Вас войти в учётную запись с использованием комбинаций клавиш F1-6 + Alt + Ctrl .
Изучив файл /etc/security/access.conf , Вы увидите подробное описание работы таблицы управления доступом входа в систему (Login access control table в оригинале). Если смотреть ещё глубже, указанная таблица — это часть механизма pam_access.so.
Итак, знак минус в начале строки — это «запретить», ALL — всем, EXCEPT кроме astra-console — группа -исключение, LOCAL — правило будет действовать только для локальных пользователей.
4. Оставшаяся часть «магии» ограничивается правами доступа — для всех терминалов и псевдотерминалов, размещённых в каталоге /dev/ , назначается группа astra-console, а каталог /dev/pts становится доступен только для владельца и группы astra-console.
Таким образом, после настройки пользователи не смогут использовать консоль ни в графическом режиме, ни с помощью комбинаций клавиш F1-6 + Alt + Ctrl.
Данный механизм не блокирует запуск скриптов, а просто ограничивает ввод произвольных команд. Для блокировки запуска скриптов нужно блокировать интерпретаторы в совокупности с запретом исполняемого бита
Выводы:
Данный механизм создаёт группу astra-console, настраивает pam_access.so (изменяя его конфигурационный файл access.conf), ограничивает права доступа к терминалам и псевдотерминалам.
Указанную настройку возможно провести на любом другом дистрибутиве Linux и она будет работать аналогичным образом (что и рекомендую сделать).