Как я могу запретить sudoer изменить главный ключ LUKS?

Оказывается, что указание компоновщику эмулировать elf_i386 привело к тому, что я ищу, правда не понимаю зачем. А именно, вызовите компоновщик с помощью:

$ ld -melf_i386 [...]

Файлы, созданные с помощью и без -melf_i386, в основном похожи:

with.elf:    ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped, with debug_info
without.elf: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped, with debug_info

За исключением того, что их размеры сильно различаются:

$ ls -l *.elf
-rwxr-xr-x 1 user user   10948 May 24 11:56 with.elf
-rwxr-xr-x 1 user user 1055428 May 24 11:56 without.elf

Насколько я могу судить, выходные файлы в остальном точно одинаковы:

$ readelf -S with.elf
There are 12 section headers, starting at offset 0x28e4:

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .text             PROGBITS        00100000 001000 000205 00  AX  0   0  4
  [ 2] .eh_frame         PROGBITS        00100208 001208 0000b8 00   A  0   0  4
  [ 3] .bss              NOBITS          001002c0 0012c0 3ef000 00  WA  0   0  4
  [ 4] .debug_info       PROGBITS        00000000 0012c0 0007bf 00      0   0  1
  [ 5] .debug_abbrev     PROGBITS        00000000 001a7f 0002c9 00      0   0  1
  [ 6] .debug_aranges    PROGBITS        00000000 001d48 000060 00      0   0  1
  [ 7] .debug_line       PROGBITS        00000000 001da8 00023c 00      0   0  1
  [ 8] .debug_str        PROGBITS        00000000 001fe4 0004bd 01  MS  0   0  1
  [ 9] .symtab           SYMTAB          00000000 0024a4 000280 10     10  22  4
  [10] .strtab           STRTAB          00000000 002724 00014e 00      0   0  1
  [11] .shstrtab         STRTAB          00000000 002872 000070 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
  L (link order), O (extra OS processing required), G (group), T (TLS),
  C (compressed), x (unknown), o (OS specific), E (exclude),
  p (processor specific)

Просто обратите внимание, что поле «смещение» немного отличается

$ readelf -S without.elf
There are 12 section headers, starting at offset 0x1018e4:

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .text             PROGBITS        00100000 100000 000205 00  AX  0   0  4
  [ 2] .eh_frame         PROGBITS        00100208 100208 0000b8 00   A  0   0  4
  [ 3] .bss              NOBITS          001002c0 1002c0 3ef000 00  WA  0   0  4
  [ 4] .debug_info       PROGBITS        00000000 1002c0 0007bf 00      0   0  1
  [ 5] .debug_abbrev     PROGBITS        00000000 100a7f 0002c9 00      0   0  1
  [ 6] .debug_aranges    PROGBITS        00000000 100d48 000060 00      0   0  1
  [ 7] .debug_line       PROGBITS        00000000 100da8 00023c 00      0   0  1
  [ 8] .debug_str        PROGBITS        00000000 100fe4 0004bd 01  MS  0   0  1
  [ 9] .symtab           SYMTAB          00000000 1014a4 000280 10     10  22  4
  [10] .strtab           STRTAB          00000000 101724 00014e 00      0   0  1
  [11] .shstrtab         STRTAB          00000000 101872 000070 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
  L (link order), O (extra OS processing required), G (group), T (TLS),
  C (compressed), x (unknown), o (OS specific), E (exclude),
  p (processor specific)
0
02.03.2017, 08:41
2 ответа

Вы проводите ложную дихотомию между «входом в систему как root» и «наличием доступа sudo». Не следует думать об этом как о совершенно разных вещах. Если вы не доверяете своим пользователям root-доступ, не позволяйте им использовать sudo! Блокировка только команды sudo su в любом случае бессмысленна, существует sudo -s для получения оболочки root или вы можете sudo bash . Или есть миллион других способов.

Обычно вы не можете создать черный список того, что не могут делать пользователи sudo. Вы потерпите неудачу, поскольку это не должно было работать таким образом. Как только у вас будет доступ к горстке вещей, таких как PID 1, система станет вашей.

Вы можете занести в белый список определенные процессы. Убедитесь, что эти процессы также недоступны для записи пользователем, и убедитесь, что они не принимают вводимые пользователем данные или аргументы таким образом, чтобы разрешить выполнение произвольных команд. Остерегайтесь: многие распространенные инструменты unix так или иначе позволяют выполнять произвольные команды. Хороший метод, если им нужен только доступ sudo для выполнения одной задачи, - создать сценарий оболочки, который выполняет только эту задачу, не принимает аргументов и позволяет пользователю выполнять этот сценарий от имени пользователя root.

4
28.01.2020, 02:19

Если под мастер-ключом вы имеете в виду ключ, используемый для шифрования контента, его нельзя изменить без перезаписи контейнера LUKS: разблокируйте для доступа к данным, резервного копирования данных, воссоздайте контейнер LUKS и восстановите из резервной копии.

Если то, что вы подразумеваете под мастер-ключом , является просто одной из парольных фраз, используемых для разблокировки контейнера LUKS, то да, их можно изменить, но сначала вы должны знать существующую парольную фразу.

Короче говоря, если вы не хотите, чтобы другой пользователь мог использовать ключи LUKS, не сообщайте ему / ей парольную фразу. Вам не нужно ничего делать с sudo. И, конечно же, сделайте внешнюю резервную копию заголовка LUKS, чтобы вы могли восстановить его, если он когда-либо был поврежден или подделан.

0
28.01.2020, 02:19

Теги

Похожие вопросы