The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Запрещение загрузки модулей Linux-ядра"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Запрещение загрузки модулей Linux-ядра"  +/
Сообщение от auto_tips (??) on 03-Апр-11, 04:30 
Повысить безопасность серверов и защитить их от внедрения руткитов в системах на базе Linux-ядра младше 2.6.25 (например, CentOS/RHEL 5) можно используя режим Capability Bounding, включаемый через файл /proc/sys/kernel/cap-bound. Capability Bounding действует на все процессы, если какой-то из Capability-режимов запрещен через /proc/sys/kernel/cap-bound, то использовать данную возможность не сможет ни один процесс, независимо от его привилегий. Используя данный режим можно блокировать для пользователя root возможность загрузки модулей ядра, изменения правил пакетного фильтра, использования raw-сокетов, изменения владельца файлов, монтирования разделов и других системных действий.


Посмотреть текущее состояние режима можно командой:

   cat /proc/sys/kernel/cap-bound

а для установки нового значения, можно использовать команду:

  echo значение > /proc/sys/kernel/cap-bound

Значение содержит шестнадцатеричное или десятичное представление битовой маски, кодирующей устанавливаемые флаги.

Например, установив режим CAP_SYS_MODULE (для установки нужно очистить бит номер 16):

   echo $((1 << 16)) > /proc/sys/kernel/cap-bound

или в шестнадцатеричном виде:

echo 0xFFFEFFFF > /proc/sys/kernel/cap-bound

будет заблокирована загрузка любых модулей ядра.

Попытка загрузить или выгрузить модуль приведет к выводу ошибки.

   modprobe ide_cd

приведет к выводу ошибки:

   FATAL: Error inserting ide_cd (/lib/modules/2.6.18-194.3.1.el5/kernel/drivers/ide/ide-cd.ko): Operation not permitted

Изменять /proc/sys/kernel/cap-bound нужно с большой осторожностью, так как установка неверного значения может привести к неработоспособности системы. Установленный флаг уже не может быть изменен, т.е. злоумышленник не может записать 0xFFFFFFFF и отменить установку маски 0xFFFEFFFF.


Список других Capability-режимов можно посмотреть в файле /usr/src/linux/include/linux/capability.h:

   grep '#define CAP' /usr/src/linux/include/linux/capability.h


   #define CAP_CHOWN            0
   #define CAP_DAC_OVERRIDE     1
   #define CAP_DAC_READ_SEARCH  2
   #define CAP_FOWNER           3
   #define CAP_FSETID           4
   #define CAP_KILL             5
   #define CAP_SETGID           6
   #define CAP_SETUID           7
   #define CAP_SETPCAP          8
   #define CAP_LINUX_IMMUTABLE  9
   #define CAP_NET_BIND_SERVICE 10
   #define CAP_NET_BROADCAST    11
   #define CAP_NET_ADMIN        12
   #define CAP_NET_RAW          13
   #define CAP_IPC_LOCK         14
   #define CAP_IPC_OWNER        15
   #define CAP_SYS_MODULE       16
   #define CAP_SYS_RAWIO        17
   #define CAP_SYS_CHROOT       18
   #define CAP_SYS_PTRACE       19
   #define CAP_SYS_PACCT        20
   #define CAP_SYS_ADMIN        21
   #define CAP_SYS_BOOT         22
   #define CAP_SYS_NICE         23
   #define CAP_SYS_RESOURCE     24
   #define CAP_SYS_TIME         25
   #define CAP_SYS_TTY_CONFIG   26
   #define CAP_MKNOD            27
   #define CAP_LEASE            28
   #define CAP_AUDIT_WRITE      29
   #define CAP_AUDIT_CONTROL    30
   #define CAP_SETFCAP         31
   #define CAP_MAC_OVERRIDE     32
   #define CAP_MAC_ADMIN        33
  
Описание можно найти в стандартном системном руководстве:

   man 7 capabilities

Возможность /proc/sys/kernel/cap-bound работает только для Linux-ядер до версии 2.6.25. Начиная с ядра 2.6.25 прекращена поддержка глобального общесистемного Capability Bounding, маску можно указывать с использованием системного вызова prctl только для отдельных нитей (установка Capability Bounding для процесса, отражается и на всех его потомках).

Для блокирования загрузки модулей в более новых ядрах следует использовать файл /proc/sys/kernel/modules_disabled (для запрета загрузки модулей в него достаточно записать 1).


URL: http://www.cyberciti.biz/tips/linux-advanced-hardening.html
Обсуждается: https://www.opennet.ru/tips/info/2554.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


2. "Запрещение загрузки модулей Linux-ядра"  +/
Сообщение от Аноним (??) on 03-Апр-11, 04:31 
Что мешает злопыхателю или гадкому процессу изменить значения, если есть рут? А если его нет, то модули не получится загрузить в любом случае.
Тем более ядра 2.6.25 - редкая древность.
Единственная надежда, что хаксор не знает о такой возможности. Но при наличии рута можно много лазеек в системе оставить и без модулей. Это все с точки зрения проникновения, но других причин для такой предосторожности не вижу.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Запрещение загрузки модулей Linux-ядра"  +/
Сообщение от anonymous (??) on 03-Апр-11, 08:37 
как-бы в новости написано, что после установки флага его нельзя сбросить (можно только дальше ставить ограничения).

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

но в целом согласен - система только для ловли попыток нсд.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Запрещение загрузки модулей Linux-ядра"  –1 +/
Сообщение от User294 (ok) on 03-Апр-11, 13:19 
> судя по флагам даже ребут можно перехватывать

В системе с открытыми сорцами вы в принципе можете перехватить все что хотите. Если есть реальное желание - можно очень неслабо доставить хацкерам, немного (или много) изменив работу сисколов и/или системных утилит. Попутно выслав алерт админу, когда ничего не подозревающий хацкер попробует юзать систему "как обычно". А приколитесь, хаксор не сможет например вытереть свои следы в невидимых ему логах. И он не сможет убить невидимые ему процессы ;).

При этом хаксоры по сути попадут в окружение где УЖЕ запихан руткит. Только вот он играет против них, на стороне админа. Вышибить клин клином в общем то вполне валидный подход. Кто первый встал, того и тапки. У админа в этом плане есть некое преимущество :)

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "Запрещение загрузки модулей Linux-ядра"  +/
Сообщение от deadless (ok) on 04-Апр-11, 21:51 
>немного (или много) изменив работу сисколов и/или системных утилит

бугога, а User294 будет стоять рядом и гарантировать работу всех остальных честных модулей, которым забыли сказать что работа сислока децл изменилась.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "Запрещение загрузки модулей Linux-ядра"  +/
Сообщение от 1 (??) on 05-Апр-11, 09:32 
он такой, он всем свечку держит
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "Запрещение загрузки модулей Linux-ядра"  +/
Сообщение от анон on 07-Апр-11, 12:03 
>работа сислока децл изменилась

Кого-кого работа? Сислока?

Вы хоть немного понимаете смысл слов, которыми пытаетесь оперировать?

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

4. "Запрещение загрузки модулей Linux-ядра"  +/
Сообщение от dry (ok) on 03-Апр-11, 10:21 
либо я что-то не понимаю, но
(1 << 16) != 0xFFFEFFFF

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Запрещение загрузки модулей Linux-ядра"  +/
Сообщение от nobody (??) on 03-Апр-11, 16:19 
и в-правду

echo $((0xFFFEFFFF))
4294901759

echo $((1 << 16))
65536

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

9. "Запрещение загрузки модулей Linux-ядра"  +/
Сообщение от pavlinux (ok) on 05-Апр-11, 14:28 
(0xFFFFFFFF & ~0xFFFEFFFF) = 1 << 16

от сюда получаем:

0xFFFFFFFF | (1<<16) = 0xFFFFFFFF | 0xFFFEFFFF

маска

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру