В началоHardened Gentoo → Настройка
Gentoo-doc HOME Пред.: УстановкаВ началоУровень выше: Hardened GentooСлед.: Впечатления

3. Настройка

Настройка Hardened состоит из двух частей: настройка ядра, и настройка ролей (RBAC или SELinux). Пример настройки ядра 2.6.20 я сейчас покажу. А RBAC/SELinux я пока не настраивал.

Думаю, будет нагляднее всего привести настройки так, как они выглядят в make menuconfig - это за одно позволит оценить "на глаз" возможности PaX и GrSecurity тем, кто с ними до сих пор не сталкивался.

Между разными версиями ядра они немного меняются, но не значительно.

PaX --->
. [*] Enable various PaX features
....... PaX Control --->
......... [ ] Support soft mode
......... [*] Use legacy ELF header marking
......... [*] Use ELF program header marking
............. MAC system integration (none) --->
....... Non-executable pages --->
......... [*] Enforce non-executable pages
......... [*] . Segmentation based non-executable pages
......... [ ] Emulate trampolines
......... [*] Restrict mprotect()
......... [ ] . Disallow ELF text relocations
......... [ ] Enforce non-executable kernel pages
....... Address Space Layout Randomization --->
......... [*] Address Space Layout Randomization
......... [*] . Randomize kernel stack base
......... [*] . Randomize user stack base
......... [*] . Randomize mmap() base
..... Miscellaneous hardening features --->
....... [ ] Sanitize all freed memory
....... [*] Prevent invalid userland pointer dereference
Grsecurity --->
. Security Level (Custom) --->
. Address Space Protection --->
... [*] Deny writing to /dev/kmem, /dev/mem, and /dev/port
... [ ] Disable privileged I/O
... [*] Remove addresses from /proc//[smaps|maps|stat]
... [*] Deter exploit bruteforcing
... [*] Runtime module disabling
... [*] Hide kernel symbols
. Role Based Access Control Options --->
... [*] Hide kernel processes
... (3) Maximum tries before password lockout
... (30) Time to wait after max password tries, in seconds
. Filesystem Protections --->
... [*] Proc restrictions
... [*] . Restrict /proc to user only
... [*] Additional restrictions
... [*] Linking restrictions
... [*] FIFO restrictions
... [*] Chroot jail restrictions
... [*] . Deny mounts
... [*] . Deny double-chroots
... [*] . Deny pivot_root in chroot
... [*] . Enforce chdir("/") on all chroots
... [*] . Deny (f)chmod +s
... [*] . Deny fchdir out of chroot
... [*] . Deny mknod
... [*] . Deny shmat() out of chroot
... [*] . Deny access to abstract AF_UNIX sockets out of chroot
... [*] . Protect outside processes... [*] . Restrict priority changes
... [*] . Deny sysctl writes
... [*] . Capability restrictions
. Kernel Auditing --->
... [ ] Single group for auditing
... [ ] Exec logging
... [*] Resource logging
... [ ] Log execs within chroot
... [ ] Chdir logging
... [*] (Un)Mount logging
... [ ] IPC logging
... [*] Signal logging
... [*] Fork failure logging
... [ ] Time change logging
... [*] /proc//ipaddr support
... [ ] ELF text relocations logging (READ HELP)
. Executable Protections --->
... [*] Enforce RLIMIT_NPROC on execs
... [*] Destroy unused shared memory
... [*] Dmesg(8) restriction
... [ ] Trusted Path Execution (TPE)
. Network Protections --->
... [*] Larger entropy pools
... [ ] Socket restrictions
. Sysctl support --->
... [*] Sysctl support
... [*] . Turn on features by default
. Logging Options --->
... (10) Seconds in between log messages (minimum)
... (4) Number of messages in a burst (maximum)
[ ] Enable access key retention support
[ ] Enable different security models            
        

Абсолютное большинство этих фич работает прозрачно для пользователя. Но есть пара, которые вы можете заметить: во-первых обычные пользователи перестанут видеть процессы других пользователей, а во-вторых они потеряют доступ к некоторым файлам в /proc/, из-за чего вывод команд ifconfig, route, etc. запущенных обычными пользователями станет значительно скромнее.

Надо отметить, что большая часть этих фич может управляться через sysctl. Что, как правило, плохо. А что хорошего в том, что хакер ломает систему наполовину, получает возможность отключить эти защиты через sysctl, после чего доламывает её уже окончательно? К счастью, есть возможность заблокировать изменение настроек GrSecurity через sysctl. Для этого нужно добавить в /etc/sysctl.conf:

kernel.grsecurity.disable_modules = 1

kernel.grsecurity.grsec_lock = 1

Где первая команда запрещает подгрузку модулей ядра (лучше всего на серверах поддержку модулей даже не включать в ядре, но если это не возможно, то теперь есть выход: подгрузить нужные модули при загрузке системы, а потом с помощью kernel.grsecurity.disable_modules запретить подгрузку модулей - чтобы никто случайно руткит не подгрузил :)), а вторая запрещает изменение любых настроек GrSecurity.

Недостаток этого в том, что если вам нужно будет таки подгрузить модуль или отключить часть фич GrSecurity (например, защиту chroot для сборки нового Gentoo), то придётся редактировать /etc/sysctl.conf и перегружаться.

Собственно, настройка на этом окончена.

В качестве резюме, приведу полный набор команд, которые отконвертируют ваш Gentoo в Hardened:

emerge hardened-sources6# Теперь настройте это ядро (пока не включая фичи# hardened), скомпилируйте и перегрузитесь в него.ln -snf ../usr/portage/profiles/hardened/x86/2.6/ /etc/make.profile# Уберите все флаги оптимизации из CFLAGS в /etc/make.conf# и установите -O2.# Пример: CFLAGS="-march=pentium-m -O2 -pipe"# Очистите ваш $PKGDIR (обычно /usr/portage/packages/) для# ускорения времени пересборки системы используя# опции -b и -k команды emerge.emerge -C linux-headersemerge linux-headers glibc binutils gcc-config gcc# Проделайте все дополнительные операции, которые могут# требоваться при обновлении gcc (см. GCC Upgrade Guide).emerge -b glibc binutils gcc portageemerge -bke systememerge -ke worldglsa-check -l | grep '\[N\]'# Ручками обновите пакеты, которые мог выдать glsa-check.emerge -a --depcleanemerge -uDNa worldemerge paxtest paxctl gradmrevdep-rebuilddispatch-conf# Теперь включите в ядре все фичи Hardened,# соберите его и перегрузитесь.

Пред.: УстановкаВ началоУровень выше: Hardened GentooСлед.: Впечатления
В началоHardened Gentoo → Настройка