fallocate vs dd для swapfile?

Потенциальные атаки

Потенциальные атаки

Это самый простой способ получить несанкционированный доступ к системе Linux, чтобы загрузить сервер в однопользовательский режим потому что по умолчанию не требуется пароль root для доступа к корневому уровню. Доступ к однопользовательскому настрою можно получить, задействуя питание машины и прерывая процесс загрузки. Для загрузки в однопользовательский режим, когда используется загрузчик GRUB, выполните следующее: прервите процесс загрузки, нажмите e, чтобы отредактировать файл конфигурации загрузки, добавьте в строку, начинающуюся с Linux, одну из двух s, S, 1 or systemd. unit=[rescue.target, emergency.target, rescue], чтобы изменить аргумент, передаваемый ядру во время загрузки для загрузки в режим одиночного пользователя, затем нажмите ctrl + x.

Защита от однопользовательского режима

Защита от однопользовательского режима

Когда корень отредактирует файл /etc/sysconfig/init, затем нажмите строка SINGLE=/sbin/sushell изменит значение TO sulogin.

Для системы на основе systemd

Необходимо настроить целевую конфигурацию для запроса пароля root. Цели находятся в /lib/systemd/system, файлы, которые нуждаются в изменении, - emergency.service и rescue.service. Измените начальную строку ExecStart=-/bin/sh –c “/usr/sbin/sushell; ……” и измените /usr/sbin/sushell на /usr/sbin/sulogin как на emergency.service, так и на rescue.service.

Для системы на базе systemd

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

Root Password

] По умолчанию в некоторых дистрибутивах Linux нет корневых наборов паролей, это можно проверить, выполнив команду head -1 /etc/shadow, и если второй столбец, используя двоеточие в качестве разделителя, является восклицательным знаком, тогда пароль не установлен. Если пароль root не установлен, то независимо от того, установлена ​​ли система для запроса пароля для режима одиночного пользователя или нет, он просто загрузит доступ root.

Root Password [ ! d19]

Небезопасные загрузчики могут привести к тому, что загрузчик полностью обойдется, а оболочка будет использоваться для получения прямого доступа к корневому уровню в системе. Это делается путем прерывания процесса загрузки GRUB и добавления init=/bin/bas к началу строки linux16. Это скажет ядру использовать bash вместо init.

Защита от загрузки загрузчика загрузкой

Загрузочный загрузчик GRUB можно защитить паролем, разместив конфигурацию в файле /etc/grub.d/ 40_custom, потому что этот файл не будет затронут обновлениями и обновлениями для загрузчика. В /etc/grub.d/40_custom добавьте set superusers=”admin”, затем пароль admin после этого сохраните и выйдите из файла и запустите следующую команду grub2-mkpasswd-… (разрешите выполнение вкладки, чтобы завершить эту команду, чтобы запустить системный совместимый скрипт), выход этой команды из grub2 , В конце строки password admin в /etc/grub.d/40_custom необходимо добавить в конец строки. После этого файл grub необходимо перекомпилировать, выполнив команду grub2-mkconfig –o /boot/grub2/grub.cfg для centos или update-grub¬ на debian.

Защита от загрузки загрузчика загрузкой

Затем сохраните изменения и перезагрузите, чтобы подтвердить, что изменения повлияли, если изменение было успешным при загрузке и желании изменить (! d27)

Защита от атаки на восстановление

Эти меры могут помочь в защите, однако, если на диске используется восстановление Linux функция на диске может использоваться для монтирования файловой системы и изменения настройки GRUB с диска. Для защиты от любых съемных носителей с более низким приоритетом загрузки, чем загрузочный диск и пароль, защищают меню настроек BIOS и загрузки, чтобы остановить кого-то, у кого нет доступа, изменяющего порядок загрузки и загрузки на диск для внесения изменений в систему.

10
задан 19 March 2018 в 17:41

6 ответов

  • 1
    В man-странице mkswap также сказано: Чтобы настроить файл подкачки, необходимо создать этот файл перед его инициализацией с помощью mkswap, например. используя команду, подобную fallocate --length 8GiB swapfile, я смущен. – stumblebee 19 March 2018 в 18:00
  • 2
    @stumblebee, и это будет отлично работать в файловых системах, которые не поддерживают предварительно выделенные файлы, где fallocate будет по существу работать как dd, но не на ext4, который по умолчанию является и, по сути, наиболее часто используемой файловой системой Linux. – muru 19 March 2018 в 18:05
  • 3
    Я немного смущен, почему fallocate будет проблемой. Кажется, ну, выделите пространство. (Как говорится на лейбле.) И делать fallocate -l 1g /swaptest && mkswap /swaptest && swapon /swaptest на ext4 ни о чем не жалуется. truncate -l 1g будет отличаться, поскольку он просто устанавливает размер файла, но не выделяет никаких блоков. – ilkkachu 20 March 2018 в 01:26
  • 4
    На странице man fallocate(1): для файловых систем, поддерживающих системный вызов fallocate, предварительное выделение выполняется быстро путем выделения блоков и маркировки их как неинициализированных, ... – Will Crawford 20 March 2018 в 03:43
  • 5
    @ilkkachu кто-то воспроизвел проблему на xfs, по крайней мере: bugzilla.redhat.com/show_bug.cgi?id=1129205 – muru 20 March 2018 в 04:01

Из справочной страницы mkswap:

Note that a swap file must not contain any holes. Using cp(1) to create the file is not acceptable. Neither is use of fallocate(1) on file systems that support preallocated files, such as XFS or ext4, or on copy-on-write filesystems like btrfs. It is recommended to use dd(1) and /dev/zero in these cases. Please read notes from swapon(8) before adding a swap file to copy-on-write filesystems.

И из man [] mkswap:

You should not use swapon on a file with holes. This can be seen in the system log as swapon: swapfile has holes. The swap file implementation in the kernel expects to be able to write to the file directly, without the assistance of the filesystem. This is a problem on preallocated files (e.g. fallocate(1)) on filesystems like XFS or ext4, and on copy-on-write filesystems like btrfs.

Отсюда следует, что fallocate может быть быстрее, чем dd, он не подходит для создания файлов подкачки и не поддерживается инструментами, связанными с swap.

12
ответ дан 17 July 2018 в 18:31

Из справочной страницы mkswap:

Note that a swap file must not contain any holes. Using cp(1) to create the file is not acceptable. Neither is use of fallocate(1) on file systems that support preallocated files, such as XFS or ext4, or on copy-on-write filesystems like btrfs. It is recommended to use dd(1) and /dev/zero in these cases. Please read notes from swapon(8) before adding a swap file to copy-on-write filesystems.

И из man [] mkswap:

You should not use swapon on a file with holes. This can be seen in the system log as swapon: swapfile has holes. The swap file implementation in the kernel expects to be able to write to the file directly, without the assistance of the filesystem. This is a problem on preallocated files (e.g. fallocate(1)) on filesystems like XFS or ext4, and on copy-on-write filesystems like btrfs.

Отсюда следует, что fallocate может быть быстрее, чем dd, он не подходит для создания файлов подкачки и не поддерживается инструментами, связанными с swap.

12
ответ дан 23 July 2018 в 19:19

Fallocate быстрее, с fallocate manpage:

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

fallocate(1)

2
ответ дан 22 May 2018 в 12:29

Fallocate быстрее, с fallocate manpage:

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

fallocate(1)

2
ответ дан 17 July 2018 в 18:31

Fallocate быстрее, с fallocate manpage:

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

fallocate(1)

2
ответ дан 23 July 2018 в 19:19

Другие вопросы по тегам:

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