Способности
Способности (capabilities) - это привилегии программ совершать какие-либо действия. LIDS позволяет устанавливать и отменять большое количество способностей. LIDS поддерживает способность перезагружать компьютер (CAP_SYS_BOOT), изменять владельца файла (CAP_CHOWN), загружать/выгружать модули ядра (CAP_SYS_MODULE) и многие другие.
Текущие установки способностей хранятся в файле /etc/LIDS/LIDS.cap в формате: [+|-] Номер:Способность. + включает способность, - - отключает, например +22:CAP_SYS_BOOT разрешает перезагрузку, -22:CAP_SYS_BOOT - запрещает. Изменять его можно (да и нужно) с помощью любого текстового редактора. Выключение способности влияет на все программы, кроме тех, которым напрямую указана данная способность с помощью правил доступа LIDSadm. Включение способности влияет на все программы без исключения. Нельзя включить способность у всех программ, а у нескольких выключить. Первоначальное содержимое файла такое:
+0:CAP_CHOWN +1:CAP_DAC_OVERRIDE +2:CAP_DAC_READ_SEARCH +3:CAP_FOWNER +4:CAP_FSETID +5:CAP_KILL +6:CAP_SETGID +7:CAP_SETUID +8:CAP_SETPCAP -9:CAP_LINUX_IMMUTABLE -10:CAP_NET_BIND_SERVICE +11:CAP_NET_BROADCAST -12:CAP_NET_ADMIN -13:CAP_NET_RAW +14:CAP_IPC_LOCK +15:CAP_IPC_OWNER -16:CAP_SYS_MODULE -17:CAP_SYS_RAWIO -18:CAP_SYS_CHROOT +19:CAP_SYS_PTRACE +20:CAP_SYS_PACCT -21:CAP_SYS_ADMIN +22:CAP_SYS_BOOT +23:CAP_SYS_NICE +24:CAP_SYS_RESOURCE +25:CAP_SYS_TIME +26:CAP_SYS_TTY_CONFIG +27:CAP_HIDDEN +28:CAP_INIT_KILL
Остановлюсь поподробней на каждой из них:
CAP_CHOWN
- С помощью этого параметра устанавливается способность программ изменять владельца и группу владельца файла.
CAP_DAC_OVERRIDE
- Включает/отключает способность программ, запускаемых под root'ом, не принимать во внимание режимы доступа к файлам. Например, при включенной данной способности root может открыть и изменить файл, который принадлежит dh и имеет режим доступа 0600, при отключенной данной опции, root не в состоянии будет даже открыть данный файл. Короче говоря, root при отключении данной способности приравнивается к обыкновенному пользователю при доступе к файлам.:)
CAP_DAC_READ_SEARCH
- Включает/ отключает способность программ, запускаемых под root'ом, не принимать во внимание режимы доступа к каталогам (чтение и поиск).
CAP_FOWNER
- Запрещает/разрешает операции с файлами, когда владелец файла должен совпадать с пользователем, совершающим операцию. Например, изменение режима доступа к файлу (chmod). Режим доступа может изменять либо владелец файла, либо root. При отключении этой способности, root уже будет не в состоянии изменить режим доступа.:) То же относится к изменению атрибутов файлов (chattr).
CAP_FSETID
- Запрещает/разрешает установку SUID'ного или SGID'ного бита на чужих файлах (не принадлежащих root'у).
CAP_KILL
Включает/отключает способность root'овых процессов убивать чужие процессы.
CAP_SETGID
Управляет способностью root'овых программ сменять группу, под которой работает программа. Так работает, например, httpd, sendmail, postfix, ftpd, safe_finger и т.д.
CAP_SETUID
- Управляет способностью root'овых программ сменять пользователя, под которым работает программа.
CAP_SETPCAP
- Включает/отключает способность программ менять способности.
CAP_LINUX_IMMUTABLE
- Управляет способностью снимать атрибуты S_IMMUTABLE (chattr -i) и S_APPEND (chattr -a) с файлов. Рекомендуется отключить данную способность.
CAP_NET_BIND_SERVICE
- Включает/отключает способность программ привязываться к порту с номером <1024.
CAP_NET_BROADCAST
- Управляет способностью программ рассылать широковещательные пакеты.
CAP_NET_ADMIN
- Этот параметр управляет большим количеством различных способностей: конфигурирование сетевых интерфейсов, изменение правил firewall'а, изменение таблиц routing'а и многих других, связанных с сетевыми настройками Linux. Рекомендуется отключить данную способность.
CAP_NET_RAW
- Управляет способностью программ использовать сокет-соединения.
CAP_IPC_LOCK
- Управляет способностью root'овых процессов блокировать сегменты разделяемой памяти.
CAP_IPC_OWNER
- Управляет доступом root'овых программ к ресурсам межпроцессорного взаимодействия чужих процессов.
CAP_SYS_MODULE
- Управляет способностью загружать/ выгружать модули ядра. Рекомендуется отключить данную способность.
CAP_SYS_RAWIO
- Управляет доступом на чтение-запись к таким устройствам, как /dev/mem,/dev/kmem,/dev/port, /dev/hd??, /dev/sd??. Рекомендуется отключить данную способность.
CAP_SYS_CHROOT
- Управляет способностью устанавливать корневой каталог для текущего shell'а. Рекомендуется отключить данную способность.
CAP_SYS_PTRACE
- Данный параметр включает/отключает способность программ использовать вызов функции ptrace(), которая позволяет управлять выполнением процессов-потомков процессу-родителю. Для более подробной информации смотри man ptrace.
CAP_SYS_PACCT
- Управляет способностью конфигурировать учет процессов. Для более подробной информации смотри man ac, man lastcomm, man accton, man sa. Рекомендуется отключить данную способность.
CAP_SYS_ADMIN
- Управляет множеством способностей: управление /dev/random, создание новых устройств, конфигурирование дисковых квот, настройка работы klogd, установка имени домена, установка имени хоста, сброс кэша, монтирование/размонтирование дисков, включение/отключение swap-партиции, установка параметров последовательных портов и др. Рекомендуется отключить данную способность.
CAP_SYS_BOOT
- Данный параметр управляет способностью перегружать систему.
CAP_SYS_NICE
- Управляет способностью изменять приоритет чужих процессов. Рекомендуется выключить данную способность.
CAP_SYS_RESOURCE
- Способность изменять лимиты использования ресурсов системы: дисковые квоты, зарезервированное пространство на ext2-партициях, максимальное количество консолей и т.д. Рекомендуется выключить данную способность.
CAP_SYS_TIME
- Управляет способностью изменять системное время. Рекомендуется выключить данную способность.
CAP_SYS_TTY_CONFIG
- Способность изменять настройки tty-устройств.
CAP_HIDDEN
- Способность программ делаться невидимыми в списке процессов. Не влияет на все программы. Рекомендуется включить данную опцию.
CAP_INIT_KILL
- Способность убивать процессы-потомки процесса init.
К таким процессам относятся практически все демоны.
Первоначально можно установить следующие настройки:
+0:CAP_CHOWN +1:CAP_DAC_OVERRIDE +2:CAP_DAC_READ_SEARCH +3:CAP_FOWNER +4:CAP_FSETID +5:CAP_KILL +6:CAP_SETGID +7:CAP_SETUID +8:CAP_SETPCAP +9:CAP_LINUX_IMMUTABLE +10:CAP_NET_BIND_SERVICE +11:CAP_NET_BROADCAST +12:CAP_NET_ADMIN +13:CAP_NET_RAW +14:CAP_IPC_LOCK +15:CAP_IPC_OWNER -16:CAP_SYS_MODULE -17:CAP_SYS_RAWIO +18:CAP_SYS_CHROOT +19:CAP_SYS_PTRACE +20:CAP_SYS_PACCT -21:CAP_SYS_ADMIN +22:CAP_SYS_BOOT +23:CAP_SYS_NICE +24:CAP_SYS_RESOURCE +25:CAP_SYS_TIME +26:CAP_SYS_TTY_CONFIG +27:CAP_HIDDEN +28:CAP_INIT_KILL
Это защитит систему от простейших атак, а остальное меняй на свое усмотрение.
Для первоначальной (в процессе загрузки) инициализации параметров способностей используется команда LIDSadm -I. Обычно ее ставят в какой-нибудь rc-скрипт, после запуска всех демонов. Можно поставить ее в конце /etc/rc.d/rc.local. Таким образом, отключение способностей сработает только после запуска всех необходимых для работы сервера программ. Например, если ты отключил CAP_NET_ADMIN - это никак не повлияет на инициализацию твоих сетевых интерфейсов lo, ethX, pppX и т.д. при начальной загрузке.