BPF для мониторинга Linux
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабынан сөз тіркестері  BPF для мониторинга Linux

Кирилл Аншаков
Кирилл Аншаковдәйексөз келтірді2 ай бұрын
Все точки трассировки в вашей системе определены в каталоге /sys/kernel/debug/tracing/events.
Комментарий жазу
Кирилл Аншаков
Кирилл Аншаковдәйексөз келтірді2 ай бұрын
если вы хотите проверить аргументы, когда ядро создает системный вызов exec, то подключаете программу в начале вызова. В этом случае нужно прописать заголовок раздела SEC("kprobe/sys_exec"). Если же хотите проверить возвращаемое значение системного вызова exec, требуется написать в заголовке раздела SEC("kretprobe/sys_exec").
Комментарий жазу
Кирилл Аншаков
Кирилл Аншаковдәйексөз келтірді2 ай бұрын
Программы типа BPF_PROG_TYPE_SOCKET_FILTER были добавлены в ядро Linux в числе первых. Привязывая программу BPF к открытому сокету, вы получа­ете доступ ко всем пакетам, проходящим через него.
Комментарий жазу
Кирилл Аншаков
Кирилл Аншаковдәйексөз келтірді2 ай бұрын
большинство BPF-программ могут быть загружены в ядро только пользователем с правами root.
Комментарий жазу
Кирилл Аншаков
Кирилл Аншаковдәйексөз келтірді2 ай бұрын
программу BPF, нужно загрузить ее в ядро. Как уже упоминалось, для этого используем специальный помощник, который предоставляется ядром, чтобы освободить стандартный шаблон компиляции и загрузки программы. Этот помощник называется load_bpf_file, он берет двоичный файл и пытается загрузить его в ядро.
Комментарий жазу
Кирилл Аншаков
Кирилл Аншаковдәйексөз келтірді2 ай бұрын
Мы применим bpf_trace_printk для печати сообщений в журнале трассировки ядра, который находится в папке /sys/kernel/debug/tracing/trace_pipe.
Комментарий жазу
Кирилл Аншаков
Кирилл Аншаковдәйексөз келтірді2 ай бұрын
Мы используем атрибут SEC, чтобы сообщить виртуальной машине BPF, когда хотим запустить программу. В данном случае мы запустим программу BPF, когда будет обнаружена точка трассировки в системном вызове execve. Точки трассировки — это статические метки в двоичном коде ядра, которые позволяют разработчикам вводить код для проверки работы ядра
Комментарий жазу
Кирилл Аншаков
Кирилл Аншаковдәйексөз келтірді2 ай бұрын
Самый распространенный способ написания BPF-программ — использование подмножества C, скомпилированного с помощью LLVM. LLVM — это компилятор общего назначения, который может генерировать различные типы байт-кода.
Комментарий жазу
Кирилл Аншаков
Кирилл Аншаковдәйексөз келтірді2 ай бұрын
Виртуальная машина BPF способна выполнять инструкции в ответ на события, выдаваемые ядром
Комментарий жазу
Кирилл Аншаков
Кирилл Аншаковдәйексөз келтірді2 ай бұрын
написать собственные сценарии инициализации, которые загружают программы BPF при запуске вашей системы.
Комментарий жазу