Astra linux блокировка usb

Astra Linux Special Edition 1.5 ⬝ Разграничение доступа к USB-носителям

При создании нескольких правил с одним идентификатором (например только ID_SERIAL) для одного носителя под разными уровнями udev будет обрабатывать только одно из этих правил.

Для запрета монтирования всех USB-носителей, кроме разрешенных, потребуется вывести пользователей из групп floppy и fuse.

Группа fuse так же используется для подключения samba ресурсов. Если предполагается использование samba ресурсов, используйте другой способ запрета монтирования, например: для запрета монтирования USB-носителей с файловой системой ntfs необходимо снять suid бит с /bin/ntfs-3g.

В более поздних версиях Astra Linux группа fuse не используется. Порядок работы с конфиденциальной информацией на USB-носителях для этих версий см. в статье Съемные носители в Astra Linux.

Мандатное разграничение доступа возможно только на файловых системах, поддерживающих расширенные атрибуты. Для USB-носителей это файловые системы Ext2/Ext3/Ext4.

Для создания правила и разграничения доступа к носителю запустить fly-admin-smc (Политика безопасности), открыть закладку «Доступ к устройствам», ЛКМ «Устройства и Правила» и ЛКМ «+» («Создать» в верхней панели»).

После появления окна подключения и информации подключить заранее созданный носитель (см. ниже). После определения устройства нажать на название носителя (пример на снимке 1)

В свойствах устройства выставить флаг в чек-бокс «Включено», ввести имя носителя в поле «Наименование» (снимок 2)

Перейти в закладку «Общие», выставить флаги (разграничить доступ) в чек-боксах владельца, группы и остальных, выставить в выпадающих меню пользователя и группу (снимок 3)

Нажать «Применить» (зеленая галочка на панели инструментов)

Для того, чтобы изменения ограничений мандатного доступа вступили в силу, следует переподключить носитель.
Для того, чтобы можно было получить доступ к носителю после перезагрузки компьютера следует переподключить носитель.

Дискреционная настройка носителя

Для корректного монтирования EXT-раздела в ОС Astra Linux необходимо изменить владельца носителя, права доступа и ACL. Для этого требуется смонтировать носитель и поменять владельца. Порядок действий:

    Создать временный каталог:

Создание правил для многоуровневого флеш-накопителя

  1. Создать на накопителе несколько Ext2 разделов;
  2. Задать метки разделам(Label), например: ns, dsp, sec, ss;
  3. Зарегистрировать правило для каждого раздела, используя ID_SERIAL_SHORT и ID_FS_UUID, установить мандатный уровень, дискретные права пользователя и группы;
  4. После регистрации правил установить дискретные права доступа на корневой каталог каждого раздела, как указано выше.
Читайте также:  List all listening ports in linux

Источник

Записки эникейщика

Идея такая: создать в udev правило, которое будет блокировать все флешки, серийник которых не внесён в правило.
1. Идем в /etc/udev/rules.d
2. Создаем файл 99-rem-unauth-usb.rules (имя файла можете и сами придумать, но соблюдайте правила udev)
3. Пишем в файл:

ACTION!="add", GOTO="dont_remove_usb" ENV!="usb", GOTO="dont_remove_usb" ENV!="disk", GOTO="dont_remove_usb" ENV=="008D7DC64", GOTO="dont_remove_usb" ENV=="usb", RUN+="/bin/sh -c 'echo 1 > /sys$DEVPATH/device/delete'" LABEL="dont_remove_usb" 
  1. Если действие не add, то выходим (выходим путем отсылки интерпретатора командой GOTO к метке, расположенной в самом конце файла)
  2. Если подключается устройство не usb, то выходим
  3. Если подключенное usb устройство не типа disk, то выходим. Это важный нюанс, т.к. без этой опции отключается вся usb переферия — клавиатуры, мышки и т.д. Во всяком случае, на тестовой реальной машине было так. А вот в VirtualBox этот эффект не проявлялся.
  4. Собственно проверка на серийник. Как его узнать, напишу ниже. Если параметр ID_SERIAL_SHORT у usb устройства равен указанному, то выходим — эту флешку вставлять в машину можно
  5. Что же делать, если правило всё еще выполняется? Учитывая все проверки выше, это означает, что к машине подключили usb накопитель, серийник которого не прошел проверку. А это значит, что его нужно отключить. Делается это путем записывания 1 в файл sys/путь к usb устройству/device/delete. После этого флешка отключается. На тестах это выглядело как отключение питания от флешки — на ней гас светодиодный индикатор работы.
  6. Отметка, куда будет перемещен интерпретатор, если ему передать это командой GOTO

Как получить серийный номер usb накопителя?

Для этого используется команда udevadm info с параметрами -q (запрос какой информации выводить) и -n (имя устройства). В результате команда должна получить вид:

udevadm info -q all -n /dev/sdb

-q all выведет всю информацию об устройстве. В качестве альтернативы вместо all можно использовать property.
-n /dev/sdb задает имя устройства.
Будьте с этим внимательны! У вас вместо sdb может быть sdd, sdc или что-то еще! Проверяйте, какому именно устройству присвоено sd*. Посмотреть это можно командой fdisk -l
Далее в выводе команды вас интересует значение параметра ID_SERIAL_SHORT. Это и есть серийник флешки. Его и надо подставлять в правило. Само собой, разрешенных флешек может быть несколько, просто копируйте строку, где проверяется серийник, и подставляйте в неё нужное значение.

Читайте также:  Linux generic depends on linux image generic

Да, в выводе команды udevadm info присутствует параметр ID_SERIAL, но у меня по нему флеш накопители система фильтровать отказалась.

Источник

Общий обзор доступных параметров идентификации

В данный обзор не включены параметры устройств, относящиеся к их подключению к ОС. Такие параметры нежелательно применять для идентификации устройств, так как они:

  • могут повторяться для разных устройств (присвоение имени sdX);
  • могут зависеть от порядка подключения устройств (присвоение имен sdX);
  • могут изменяться при изменении аппаратной конфигурации;
  • с высокой вероятностью будут отличаться на разных доменных компьютерах, имеющих разную аппаратную конфигурацию.

Далее под термином «носитель» («съемный носитель», «дисковый носитель») по умолчанию подразумевается носитель информации типа накопитель на жестких магнитных дисках, накопитель SSD, USB-flash. Особенности применения иных носителей (сменных носителей, таких, как CD, DVD, SD-карты) оговорены в тексте.

Все параметры подключенного устройства можно получить командой:

Выполнить мониторинг событий, происходящих при операциях с устройствами , можно командой:

    Операции назначения мандатных атрибутов выполняются при подключении дикового или сменного носителя:

      для всех носителей применяется операция «добавление носителя»:

    при этом операции подключения выполняются раздельно для самого носителя и для всех находящихся на этом носителе дисковых разделов.

    при этом правила МРД Parsec, применяемые для реализации учета съемных носителей, работают с дисковыми разделами.

    Для идентификации сменных носителей типа CD/DVD-диск и SD-карта применимы только параметры «ID_FS_LABEL» и «ID_FS_LABEL_ENC».

    1. Для съемных устройств типа «диск» (также применимы к устройствам типа «дисковый раздел», которыми наследуются от устройства «диск»):
      1. ENV==»SanDisk»
      2. ENV==»0781″
      3. ENV==»SanDisk\\x20″
      4. ENV==»Cruzer_Glide»
      5. ENV==»5575″
      6. ENV==»Cruzer\\x20Glide\\x20\\x20\\x20\\x20″
      7. ENV==»SanDisk_Cruzer_Glide_XXXXXXXXXXXXXXXXXX-0:0″
      8. ENV==»XXXXXXXXXXXXXXXXXX»
      1. «ENV==»FLASH128G2»
      2. «ENV==»FLASH128G2»
      3. «ENV=1»
      4. «ENV==»vfat»
      5. «ENV==»filesystem»
      6. «ENV==»0047-C44D»
      7. «ENV==»0047-C44D»
      8. «ENV==»FAT32»
      9. «ENV=1»

      Рекомендации по выбору параметров идентификации

      1. Основным минимальным параметром идентификации съемного носителя является его серийный номер (ID_SERIAL или ID_SERIAL_SHORT). Для сменных носителей идентифицирующими являются только параметры ID_FS_LABEL и ID_FS_LABEL_ENC;

      Следует помнить, что все параметры файловой системы подделать гораздо проще, чем параметры физического носителя, поэтому предпочтительно придерживаться политики «один носитель — один дисковый раздел».

      1. Метку файловой системы (ID_FS_LABEL);
      2. Универсальный идентификатор файловой системы UUID (ID_FS_UUID);
      3. Номер раздела на носителе (ID_PART_ENTRY_NUMBER>.

      Параметры дисковых разделов, описывающие файловую систему (ID_FS_TYPE и ID_FS_VERSION) могут быть использованы для создания правил монтирования с учетом кодировок (известная проблема: правило монтирования, по умолчанию заданное в файле etc/fstab.pdac для устройства /dev/sd* несовместимо с устройствами с файловой системой ext4).

      Ограничение портов подключения устройств

      Для программного запрета подключать учтенные устройства к незарегистрированным портам можно использовать параметр DE VPATH в правилах вида:

      ENV!="/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/*", GOTO="END"

      где в качестве аргумента указывается префикс пути к подключенному устройству. Обратите внимание на последний символ — ‘*’, обеспечивающий возможность сравнения неполных строк.

      Следует помнить, что на разных машинах пути подключения могут быть разными, а при изменении аппаратной конфигурации пути подключения могут изменяться.
      Также нельзя гарантировать, что пути подключения останутся неизменными после перезагрузки, так как устройства при загрузке ОС могут определяться в разном порядке.

      Примерный шаблон правила udev

      Автоматически создаваемые локальные правила Parsec находятся в каталоге /etc/udev/rules.d/.
      Автоматически создаваемые доменные правила Parsec находятся в каталоге /run/udev/rules.d/.

      Идентификация дискового раздела по серийному номеру устройств и UUID:

      # отсекаются ненужные устройства - вероятность несовпадения серийника выше, правило сработает чаще ENV!="SanDisk_Cruzer_Glide_ХХХХХХХХХХХХХ-0:0", GOTO="END" ENV!="0047-C44D", GOTO="END" # отсекаются ненужные события ACTION!="add", GOTO="END" ENV!="block", GOTO="END" ENV!="partition", GOTO="END" # настройка правил Parsec OWNER="luser", GROUP="root", MODE="740", PDPL="0:0:0x0:0x0!:", AUDIT="o:0x0:0x0" ENV=="?*", SYMLINK+="%k_$env", RUN+="/bin/ln -f /dev/%k /dev/%k_$env" LABEL="END"

      Запрет подключения USB-устройств

      Автоматическое удаление всех USB-устройств

      Для полного запрета подключения USB-устройств создать правило udev, например, в файле /etc/udev/rules.d/99-local.rules:

      ACTION!="add", GOTO="DONE" ENV!="usb", GOTO="DONE" RUN="/bin/sh -c 'echo 1 >/sys$devpath/remove'", RUN="/usr/bin/logger -s 'Astra mount: remove device %E %E %E'" LABEL="DONE"

      Это правило отключает все USB-устройства (диски и дисковые разделы) немедленно после их подключения.

      Автоматическая деавторизация всех USB-устройств

      Для запрета использования USB-устройств создать правило udev, например, в файле /etc/udev/rules.d/99-local.rules:

      ACTION!="add", GOTO="DONE" ENV!="usb", GOTO="DONE" RUN="/bin/sh -c 'echo 0 >/sys$devpath/authorized'", RUN="/usr/bin/logger -s 'Astra mount: deauth device %E %E %E'" LABEL="DONE"

      Это правило запрещает использовать все USB-устройства немедленно после их подключения.

      Селективное удаление USB-устройств

      1. Создать сценарий для удаления устройства, например:
        1. Создать файл /usr/sbin/astra-mount со следующим содержимым:
        #!/bin/bash l="/usr/bin/logger -s -t \"Astra-mount:\"" path="/sys$1" while true ; do if [[ "$path" == "/sys/devices" ]] ; then $l "Remove option not found" exit 1 fi if [ -f "$path/remove" ] ; then $l "Removing $path/remove" echo 1 > "$path/remove" || $l "Can not remove $path/remove" break fi path=`dirname "$path"` done
        1. Получает в качестве единственного аргумента путь к устройству;
        2. Последовательно ищет по полученному пути к устройству родительское устройство, поддерживающее операцию удаления;
        3. Выполняет операцию удаления;

        ACTION=="add", ENV=="usb", ENV=="disk", RUN+="/usr/sbin/astra-mount $devpath"

        Источник

Оцените статью
Adblock
detector