Многие пользователи считают Ubuntu попсовой, а Ubuntu Server не серьёзным. Многие забывают, что Ubuntu Server поддерживается 5 лет, а папа Debian 5.0 был на рынке 3 года - с 2009 по 2012 г.
По ценам поддержки - Ubuntu Server по сравнению с Red Hat можно и нужно сказать - достался вам даром, даже если вы закажете круглосуточную поддержку 24х7х365.
Посмотрите какие решения в плане безопасности внедрены во все версии Ubuntu и делают её безопасной и надёжной.
Возможности
Матрица возможностей безопасности
По умолчанию |
Доступно |
Не задействовано |
Возможность | 8.04 LTS (Hardy Heron) | 10.04 LTS (Lucid Lynx) | 11.04 (Natty Narwhal) | 11.10 (Oneiric Ocelot) | 12.04 LTS (Precise Pangolin) | 12.10 (Quantal Quetzal) |
Нет открытых портов | policy | policy | policy | policy | policy | policy |
Хеш пароля | md5 | sha512 | sha512 | sha512 | sha512 | sha512 |
SYN cookies | -- | kernel & sysctl | kernel & sysctl | kernel & sysctl | kernel & sysctl | kernel & sysctl |
Возможности файловой системы | -- | kernel | kernel | kernel | kernel | kernel |
Конфигурируемый файрвол | ufw | ufw | ufw | ufw | ufw | ufw |
PR_SET_SECCOMP | kernel | kernel | kernel | kernel | kernel | kernel |
AppArmor | 2.1 | 2.5 | 2.6.1 | 2.7.0~beta1 | 2.7.0 | 2.7.0 |
SELinux | universe | universe | universe | universe | universe | universe |
SMACK | -- | kernel | kernel | kernel | kernel | kernel |
Шифрованный LVM | alt installer | alt installer | alt installer | alt installer | alt installer | alt installer |
eCryptfs | -- | ~/Private or ~, filenames | ~/Private or ~, filenames | ~/Private or ~, filenames | ~/Private or ~, filenames | ~/Private or ~, filenames |
Защита стека | gcc patch | gcc patch | gcc patch | gcc patch | gcc patch | gcc patch |
Защита кучи | glibc | glibc | glibc | glibc | glibc | glibc |
Обфусцированный указатель | glibc | glibc | glibc | glibc | glibc | glibc |
Стек ASLR | kernel | kernel | kernel | kernel | kernel | kernel |
Libs/mmap ASLR | kernel | kernel | kernel | kernel | kernel | kernel |
Exec ASLR | kernel (-mm patch) | kernel | kernel | kernel | kernel | kernel |
brk ASLR | kernel (exec ASLR) | kernel | kernel | kernel | kernel | kernel |
VDSO ASLR | kernel | kernel | kernel | kernel | kernel | kernel |
Сборка с PIE | -- | package list | package list | package list | package list | package list |
Сборка с Fortify Source | -- | gcc patch | gcc patch | gcc patch | gcc patch | gcc patch |
Сборка с RELRO | -- | gcc patch | gcc patch | gcc patch | gcc patch | gcc patch |
Сборка с BIND_NOW | -- | package list | package list | package list | package list | package list |
Non-Executable Memory | PAE only | PAE, ia32 partial-NX-emulation | PAE, ia32 partial-NX-emulation | PAE, ia32 partial-NX-emulation | PAE, ia32 partial-NX-emulation | PAE, ia32 partial-NX-emulation |
Защита /proc/$pid/maps | kernel & sysctl | kernel | kernel | kernel | kernel | kernel |
Ограничения символьных ссылок | -- | -- | kernel | kernel | kernel | kernel |
Ограничения жёстких ссылок | -- | -- | kernel | kernel | kernel | kernel |
ptrace scope | -- | -- | kernel | kernel | kernel | kernel |
Защита 0-address | kernel & sysctl | kernel | kernel | kernel | kernel | kernel |
Защита /dev/mem | kernel (-mm patch) | kernel | kernel | kernel | kernel | kernel |
Отключён /dev/kmem | kernel (-mm patch) | kernel | kernel | kernel | kernel | kernel |
Блокировка загрузки модулей | drop CAP_SYS_MODULES | sysctl | sysctl | sysctl | sysctl | sysctl |
Секция данных только для чтения | kernel | kernel | kernel | kernel | kernel | kernel |
Защита стека ядра | -- | kernel | kernel | kernel | kernel | kernel |
Модуль RO/NX | -- | -- | kernel | kernel | kernel | kernel |
Kernel Address Display Restriction | -- | -- | kernel | kernel | kernel | kernel |
Чёрных список редких протоколов | -- | -- | kernel | kernel | kernel | kernel |
Фильтрация системных вызовов | -- | -- | -- | kernel | kernel | kernel |
Конфигурация
Нет открытых портов
Установленная по умолчанию Ubuntu не имеет открытых портов, доступных извне в сети. Исключение из этого правила только для сервисов сетевой инфраструктуры, такие как DHCP клиент и mDNS (Avahi/ZeroConf).
Когда устанавливается Ubuntu Server, администратор может установить дополнительные сетевые сервисы, например веб-сервер Apache. Но по умолчанию, на только что установленной системе, если сделать
netstat -an --inet | grep LISTEN | grep -v 127.0.0.1, то можно легко убедиться, что в Ubuntu без надобности не открываются порты для доступа из сетей к системе.
Хеш пароля
Системный пароль, используемый для входа в Ubuntu сохраняется в /etc/shadow. Давным-давно хеш пароля в DES сохранялся в /etc/passwd. Но современные Linux уже с давних пор хранят хеши в /etc/shadow и первое время использовался хеш основанный на MD5 с солью (salted MD5-based hashes crypt id 1). Так как у одинаковых паролей были одинаковые хеши без применения соли, то внедрение соли позволяло улучшить безопасность и усложнить взлом паролей множества пользователей системы.
Сейчас MD5 считается не надёжным и с ростом вычислительных возможностей компьютеров, с Ubuntu 8.10 применяется хеш SHA-512 с солью (salted SHA-512 based password hashes crypt id 6). Это делает взлом грубой силой с помощью перебора всех вариантов - невероятно сложным и долгим.
Подробнее man crypt.
Используйте test-glibc-security.py для тестов.
SYN cookies
Когда систему переполняют новыми сетевыми соединениями, механизм SYN cookie помогает снизить урон от SYN-flood атак.
Используйте для тестов test-kernel-security.py.
Подсистемы
Возможности файловой системы
Необходимость в setuid приложениях, которые работают с правами выше, чем тот кто их запустил, может быть уменьшена с применением возможностей файловых систем, таких как xattrs. Такие возможности снижают риск злоупотреблений над потенциально опасными setuid приложениями.
Ядро Linux поддерживает поддержку и есть инструментарий libcap2-bin для использования файловых возможностей типа xattrs для усиления безопасности setuid приложений.
Используйте для тестов test-kernel-security.py.
Конфигурируемый файрвол
ufw это фронтенд для iptables, который установлен и используется в Ubuntu, но включить его пользователь должен самостоятельно. UFW призван обеспечить лёгкий в использовании интерфейс для людей не знакомых с концепциями файрвола iptables, с его цепочками и таблицами.
В то же время UFW упрощает сложные команды iptables, чтобы помочь администратору, который знает что он делает.
UFW является помощником и основой уже для графических фронтендов.
Используйте для тестов ufw tests.
PR_SET_SECCOMP
Установка SECCOMP фильтров для процесса означает, что процесс будет ограничен определёнными системными вызовами.
Если злоумышленник вздумает кукловодить программой, то программа будет закрыта, вместо нанесения урона системе.
Используйте для тестов test-kernel-security.py.
Мандатное управление доступом (Mandatory Access Control - MAC)
Мандатное управление доступом использует LSM хуки ядра.
AppArmor
AppArmor это система мандатного управления доступом, основанная на пути к файлу.
Примеры готовых профилей можно найти в пакете apparmor-profiles. Программы, чьи профили по умолчанию находятся в строгом enforce режиме, можно видеть в таблице.
пакет/программа | 8.04 LTS | 9.04 | 9.10 | 10.04 LTS | 10.10 | 11.04 | 11.10 | 12.04 LTS | 12.10 |
Cups (cupsd) | да | да | да | да | да | да | да | да | да |
OpenLDAP (slapd) | да | да | да | да | да | да | да | да | да |
MySQL (mysqld) | да | да | да | да | да | да | да | да | да |
Bind (named) | да | да | да | да | да | да | да | да | да |
ClamAV (clamd,freshclam) | -- | да | да | да | да | да | да | да | да |
gdm-guest-session | -- | да | да | да | да | да | да | да | да |
tcpdump | -- | да | да | да | да | да | да | да | да |
ISC Dhcpd (dhcpd3) | -- | да | да | да | да | да | да | да | да |
ISC Dhcp client (dhclient3) | -- | да | да | да | да | да | да | да | да |
Evince | -- | -- | да | да | да | да | да | да | да |
NTP (ntpd) | -- | -- | да | да | да | да | да | да | да |
Firefox (firefox-3.5/firefox) | -- | -- | да | да | да | да | да | да | да |
Libvirt (libvirtd и kvm/qemu guests) | -- | -- | да | да | да | да | да | да | да |
Apache (apache2) | -- | -- | да | да | да | да | да | да | да |
Telepathy | -- | -- | -- | -- | -- | -- | да | да | да |
Lightdm guest session | -- | -- | -- | -- | -- | -- | да | да | да |
juju | -- | -- | -- | -- | -- | -- | -- | да | да |
rsyslog | -- | -- | -- | -- | -- | -- | -- | да | да |
quassel-core | -- | -- | -- | -- | -- | -- | -- | да | да |
LXC | -- | -- | -- | -- | -- | -- | -- | да | да |
Используйте test-apparmor.py и test-kernel-security.py для тестов.
SELinux
SELinux - система мандатного управления доступом, основанная на понятие inode - индексного дескриптора файловой системы.
Установка пакета selinux сделает нужные изменения и корректировки во время загрузки ПК.
Используйте для тестов test-kernel-security.py.
SMACK
SMACK - гибкая система мандатного управления доступом, основанная на понятие inode - индексного дескриптора файловой системы.
Используйте для тестов test-kernel-security.py.
Шифрование файловых систем
Шифрование LVM
Пользователи с помощью Alternate установщика могут установить Ubuntu на шифрованный LVM (Logical Volume Manage - Менеджер логических томов), который все разделы зашифрует, включая раздел подкачки swap.
eCryptfs
Шифрованные папки были впервые реализованы в Ubuntu 8.10 как безопасное место хранения важной информации пользователя.
Установщик диска Alternate и Server позволяет настроить шифрованные папки для первого пользователя.
В Ubuntu 9.04 поддержка шифрования папок была расширена и пользователь мог зашифровать всю домашнюю папку. Шифрование домашней папки поддерживается в Alternate установщике и Desktop установщике через параметр user-setup/encrypt-home=true.
Усиление безопасности пользовательского пространства
Множество возможностей по безопасности реализуются через флаги компиляции при построении пакетов программ и ядра.
Защита стека
Флаг gcc -fstack-protector обеспечивает защиту от переполнения стека, помещая маленькое случайное число в качестве маркера. Этот метод усложняет переполнение стека различными эксплойтами.
Не большое количество программ плохо работают, если собраны с данным параметром и для них -fstack-protector отключен.
Используйте для тестов test-gcc-security.py.
Защита кучи
GNU C Library защита кучи (автоматически ptmalloc и в ручную) обеспечивает защиту corrupted-list/unlink/double-free/overflow в менеджере памяти glibc.
Это предотвращает возможность выполнения произвольного кода через переполнение памяти кучи, тем самым повредив структуру области кучи.
Эта защита развивалась со временем, добавляя всё больше и больше вариантов защиты. В текущем состоянии glibc 2.10 успешно противостоит даже трудно уловимым условиям атаки.
Используйте тесты test-glibc-security.py.
Обфусцированный указатель
Некоторые указатели glibc обфусцированны через PTR_MANGLE/PTR_UNMANGLE макросы внутри в glibc, предотвращая от перезаписи указатели во время исполнения.
Используйте тесты test-glibc-security.py.
Случайное размещение в адресном пространстве. Address Space Layout Randomisation (ASLR)
ASLR реализован в ядре и загрузчик ELF размещает в случайных адресах важнейшие структуры: стек, кучу, общие библиотеки и другое.
Это усложняет предсказание адресов, когда злоумышленник пытается использовать эксплойты.
ASLR изменяется глобально через /proc/sys/kernel/randomize_va_space. До Ubuntu 8.10 значение было "1" (включено). В поздних релиза, который включает brk ASLR, значение выставлено в "2" (включено с brk ASLR).
Используйте тесты test-kernel-security.py.
Стек ASLR
Результаты каждого выполнения программы размещаются в разных участках стека. Трудно найти в памяти и атаковать программу, добавляя злонамеренную нагрузку.
Защита доступна с ядра 2.6.15 (Ubuntu 6.06).
Libs/mmap ASLR
Библиотеки загружаются динамически в различные участки памяти, что делает сложным для атакующего поиск точки возврата.
Защита доступна с ядра 2.6.15 (Ubuntu 6.06).
Exec ASLR
Программы, собранные с параметром "-fPIE -pie", загружаются в разные участки памяти. Это усложняет атаку или прыжок по адресу для проведения атаки, приводящей к изменению памяти.
Защита доступна с ядра 2.6.25 (Ubuntu 8.04 LTS).
brk ASLR
Подобно exec ASLR, brk ASLR регулирует адреса памяти между exec и brk для маленьких запросов на выделение памяти. Рандомизация brk смещения exec памяти была добавлена в ядро 2.6.26 (Ubuntu 8.10).
VDSO ASLR
Каждый раз запуск программы размещает результаты в различных vdso. Впервые появилось в ядре 2.6.18 (x86, PPC) и 2.6.22 (x86_64), но не был включён в Ubuntu 6.10 из-за COMPAT_VDSO, который удалили в Ubuntu 8.04 LTS.
Защищает от jump-into-syscall атак.
Только x86 поддерживалось glibc 2.6. glibc 2.7 (Ubuntu 8.04 LTS) уже поддерживало x86_64 ASLR vdso.
Тем кому необходимо древнее статичное pre-libc6 vdso могут использовать "vdso=2" как параметр ядра и получить снова COMPAT_VDSO.
Сборка с PIE
Все программы, которые собраны с Position Independent Executables (PIE) параметром "-fPIE -pie" могут воспользоваться защитой exec ASLR.
Это защищает от "return-to-text" атак и делает бесполезными обычные атаки, рассчитанные на изменение памяти.
Из-за PIE наблюдается большое падение производительности (5-10%) на архитектурах с небольшим количеством регистров общего назначения (типа x86).
Поэтому PIE используется для небольшого количества критически важных в плане безопасности пакетов.
PIE для x86_64 не имеет проблем с падением производительности, поэтому используется для всех пакетов, но требует лучшего тестирования.
Пакет | 8.04 LTS | 9.04 | 9.10 | 10.04 LTS | 10.10 | 11.04 | 11.10 |
openssh | да | да | да | да | да | да | да |
apache2 | -- | да | да | да | да | да | да |
bind9 | -- | да | да | да | да | да | да |
openldap | -- | да | да | да | да | да | да |
postfix | -- | да | да | да | да | да | да |
cups | -- | да | да | да | да | да | да |
postgresql-8.3 | -- | да | да | да | да | да | да |
samba | -- | да | да | да | да | да | да |
dovecot | -- | да | да | да | да | да | да |
dhcp3 | -- | да | да | да | да | да | да |
ntp | -- | -- | да | да | да | да | да |
amavisd-new | -- | -- | да | да | да | да | да |
squid | -- | -- | да | да | да | да | да |
cyrus-sasl2 | -- | -- | да | да | да | да | да |
exim4 | -- | -- | да | да | да | да | да |
nagios3 | -- | -- | да | да | да | да | да |
nagios-plugins | -- | -- | да | да | да | да | да |
xinetd | -- | -- | да | да | да | да | да |
ipsec-tools | -- | -- | да | да | да | да | да |
mysql-dfsg-5.1 | -- | -- | да | да | да | да | да |
evince | -- | -- | -- | да | да | да | да |
firefox | -- | -- | -- | да | да | да | да |
gnome-control-center | -- | -- | -- | -- | -- | да | да |
tiff | -- | -- | -- | -- | -- | да | да |
totem | -- | -- | -- | -- | -- | да | да |
qemu-kvm | -- | -- | -- | -- | -- | -- | да |
pidgin | -- | -- | -- | -- | -- | -- | да |
Используйте тесты test-built-binaries.py.
Сборка с Fortify Source
Программы, собранные с параметром "-D_FORTIFY_SOURCE=2" (и -O1 или выше), включают несколько защит в режиме компиляции и исполнения в glibc:
- заменяются вызовы "sprintf", "strcpy" с их неопределёнными границами на родственные функции с ограниченным N, когда размер буфера известен заранее. Это защищает от переполнения памяти (memory overflows).
- прекращение атаки через формат строки "%n", когда строка находится в сегменте памяти с доступом на запись.
- требуют проверку кодов возврата важнейших функций и аргументов (например для system, write, open).
- требуют явного указания маски при создании файла.
Используйте тесты test-gcc-security.py.
Сборка с RELRO
Ужесточение для ELF программ по борьбе с перезаписью памяти загрузчика. Уменьшает вероятность атаки GOT-overwrite-style.
Используйте тесты test-gcc-security.py.
Сборка с BIND_NOW
Помечает ELF программы для разрешения динамических символов на этапе старта, вместо по требованию (on-demand), так же известное как "immediate binding".
Это делает GOT полностью доступной только для чтения, в сочетании с параметром RELRO.
Используйте тесты test-built-binaries.py.
Non-Executable Memory
Современные процессоры защищают от исполнения кода области памяти данных (кучу, стек).
Эта технология известна как Non-eXecute (NX) или eXecute-Disable (XD). Защита уменьшает возможности злоумышленника по размещению произвольного кода.
Защита требует "PAE", которая так же позволяет адресовать выше 3 Гб ОЗУ. 64битные и 32битные -server и -generic-pae ядра уже собраны с PAE.
Начиная с Ubuntu 9.10, защита частично эмулируется на 32битных ядрах для процессоров, которые не поддерживают аппаратно NX.
После загрузки можно увидеть степень поддержки NX защиты:
- Аппаратная:
[ 0.000000] NX (Execute Disable) protection: active
- Эмуляция:
[ 0.000000] Using x86 segment limits to approximate NX protection
Если вы не видите упоминаний о NX, то проверьте свои BIOS настройки. Начиная с Ubuntu 11.04, BIOS настройки для NX игнорируются ядром.
Ubuntu 9.04 и ранее | ||||
CPU поддерживает NX | CPU не поддерживает NX | |||
В BIOS включён NX | В BIOS отключён NX | |||
i386 | -386, -generic ядро (non-PAE) | nx не поддерживается | nx не поддерживается | nx не поддерживается |
-server ядро (PAE) | настоящий nx | nx не поддерживается | nx не поддерживается | |
amd64 | любое ядро (PAE) | настоящий nx | nx не поддерживается | nx не поддерживается |
Ubuntu 9.10 до 10.10 | ||||
CPU поддерживает NX | CPU не поддерживает NX | |||
В BIOS включён NX | В BIOS не включён NX | |||
i386 | -386, -generic ядро (non-PAE) | nx-эмуляция | nx-эмуляция | nx-эмуляция |
-server, -generic-pae ядро (PAE) | настоящий nx | nx-эмуляция | nx-эмуляция | |
amd64 | любое ядро (PAE) | настоящий nx | nx не поддерживается | nx не поддерживается |
Ubuntu 11.04 и старше | ||||
CPU поддерживает NX | CPU не поддерживает NX | |||
i386 | -386, -generic ядро (non-PAE) | nx-эмуляция | nx-эмуляция | |
-server, -generic-pae ядро (PAE) | настоящий nx | nx-эмуляция | ||
amd64 | любое ядро (PAE) | настоящий nx | nx не поддерживается |
Используйте тесты test-kernel-security.py.
Защита /proc/$pid/maps
Когда работает ASLR, текущие карты памяти процессов становятся очень ценными для атакующего. Файл карт доступен на чтение только самому процессу и владельцу процесса.
Доступно, начиная с ядра 2.6.22.
Используйте тесты test-kernel-security.py.
Ограничения символьных ссылок
Symlink - Symbolic link, символическая ссылка, симлинк, символьная ссылка. Старый класс уязвимостей основанных на философии Time-of-Check-to-Time-of-Use (ToCToU), наиболее часто встречается в доступных для всех на запись каталогах типа /tmp/.
Наиболее распространённый способ использования данного дефекта, вынудить root'а использовать символьную ссылку, созданную злоумышленником, чтобы с правами root выполнить злонамеренное действие.
Начиная с Ubuntu 10.10, по символическим ссылкам в каталогах типа /tmp нельзя пройти, если "идущий по ссылке" и владелец каталога не совпадают с владельцем символической ссылки.
Данный механизм контролируется механизмом Yama /proc/sys/kernel/yama/protected_sticky_symlinks. Yama разработана в Canonical.
Используйте тесты test-kernel-security.py.
Ограничения жёстких ссылок
Жёсткими ссылками можно злоупотреблять таким же образом, как описано выше про символические ссылки, но жёсткие ссылки не ограничены каталогами, доступными всем на запись.
Если /etc/ и /home/ каталоги располагаются на одном разделе, обычный пользователь может создать жёсткую ссылку на файл с хешами паролей /etc/shadow в своей домашней папке. Разумеется, если некоторый файл недоступен на чтение либо запись для какого-либо пользователя, жесткая ссылка на данный файл будет иметь те же права и поэтому также будет недоступна этому пользователю. Однако, используя жесткие ссылки, злоумышленник может "подсунуть" такой файл приложению, которое имеет права на доступ к нему.
Yama позволяет заблокировать эту атаку, запретив создание жестких ссылок пользователям, не имеющим прав на доступ к исходным файлам.
Поведение контролируется /proc/sys/kernel/yama/protected_nonaccess_hardlinks Yama.
ptrace scope
Без использования соответствующей защиты Yama, любой процесс с привилегией CAP_SYS_PTRACE может обращаться к памяти всех процессов с тем же UID'ом. При использовании Yama, можно ограничить область доступа только памятью, принадлежащей потомкам такого процесса.
В Ubuntu 10.10 и старше, пользователи не могут отлаживать процессы с помощью ptrace, если они не его потомки.
Поведение контролируется /proc/sys/kernel/yama/ptrace_scope Yama.
Используйте тесты test-kernel-security.py.
Усиление защиты ядра
Включённые защитные механизмы ядра для усложнения атак.
Защита 0-address
Так как ядро и пользовательское пространство делят виртуальные адреса памяти, "NULL" память должна быть защищена и "пользовательская" память не может начинаться с адреса 0, тем самым предотвращая разыменование адресов ядра - атака "NULL dereference".
Защита доступна с ядра 2.6.22 через параметр sysctl "mmap_min_addr". С Ubuntu 9.04 mmap_min_addr встроен в ядро - адрес 64k для x86, 32k для ARM.
Используйте тесты test-kernel-security.py.
Защита /dev/mem
Некоторым приложениям, типа Xorg, требуется прямой доступ к физической памяти в пользовательском пространстве. Специальный файл /dev/mem обеспечивает такой доступ.
В прошлом, можно было просматривать и изменять память ядра через этот файл, если атакующий получил root права.
Опция CONFIG_STRICT_DEVMEM была введена, чтобы блокировать такие попытки (первоначально опция назвалась CONFIG_NONPROMISC_DEVMEM).
Используйте тесты test-kernel-security.py.
Отключён /dev/kmem
Для современного пользователя /dev/kmem не актуален, так как в большинстве своём использовался злоумышленниками для загрузки руткитов.
Теперь CONFIG_DEVKMEM установлен "n".
Файл /dev/kmem существует в релизах от Ubuntu 8.04 LTS до Ubuntu 9.04, но в ядре ни с чем не был связан и не используется.
Используйте тесты test-kernel-security.py.
Блокировка загрузки модулей
В Ubuntu 8.04 LTS и ранее, можно было удалить возможность CAP_SYS_MODULES и тем самым запретить загрузку новых модулей ядра.
Это был ещё один уровень защиты, чтобы не загружать руткиты при старте скомпрометированной системы.
В ядре 2.6.25 (Ubuntu 8.10) этот функционал исчез. Начиная с Ubuntu 9.10, теперь снова можно блокировать модули, установив в "1" /proc/sys/kernel/modules_disabled.
Используйте тесты test-kernel-security.py.
Секция данных только для чтения
Пометка секции данных ядра меткой "только для чтения" гарантирует блокировку изменений. Это помогает защититься от некоторых руткитов. Включается через опцию CONFIG_DEBUG_RODATA.
Используйте тесты test-kernel-security.py.
Защита стека ядра
Как и защита ELF программ в пользовательском пространстве, ядро может защитить свой внутренний стек через параметр CONFIG_CC_STACKPROTECTOR.
Используйте тесты test-kernel-security.py.
Модуль RO/NX
Эта возможность расширяет CONFIG_DEBUG_RODATA, включая ограничения для загруженных модулей ядра. Это помогает противостоять эксплойтам. Включается через параметр CONFIG_DEBUG_MODULE_RONX.
Используйте тесты test-kernel-security.py.
Kernel Address Display Restriction
Когда злоумышленники пытаются разработать эксплойт, работающий везде, используя уязвимости ядра, им необходимо знать расположение внутренних структур ядра.
Адреса ядра, как важная информация, недоступны для обычных пользователей.
Начиная с Ubuntu 11.04, /proc/sys/kernel/kptr_restrict выставлен в "1" и блокирует утечки информации об адресах ядра.
Кроме того, различные файлы и каталоги сделаны для чтения только для root
/boot/vmlinuz*, /boot/System.map*, /sys/kernel/debug/, /proc/slabinfo
Используйте тесты test-kernel-security.py.
Чёрных список редких протоколов
Обычно ядро позволяет всем сетевым протоколам автоматически загружаться по требованию через MODULE_ALIAS_NETPROTO(PF_...) макросы.
Поскольку многие из этих протоколов устаревшие, редкостные, да и малопригодные для обычного пользователя Ubuntu и могут содержать неизвестные уязвимости, то они в чёрном списке, начиная с Ubuntu 11.04.
В чёрном списке: ax25, netrom, x25, rose, decnet, econet, rds и af_802154.
Если любой из этих протоколов нужен, то может быть загружен через modprobe или редактируя /etc/modprobe.d/blacklist-rare-network.conf.
Используйте тесты test-kernel-security.py.
Фильтрация системных вызовов
Программы могут фильтровать вызовы ядра, используя seccomp_filter.
Это делается в контейнерах или песочницах, чтобы ещё больше ограничить потенциально ненадёжное ПО.
Используйте тесты test-kernel-security.py.
Итог
После прочитанного, видно, что в Canonical к безопасности Ubuntu относятся серьёзно. Два проекта, AppArmor и Yama, уже давно связаны с Ubuntu и помогают усилить защиту. Ubuntu по умолчанию не открывает лишние порты-двери в сети и не ждёт подключений-приключений на свою голову. Для ключевых программ, работающих с сетью, созданы профили AppArmor, которые держат программы в узде.
Ваш компьютер будет в безопасности с Ubuntu!
Похожие материалы:
Правила AppArmor
Зачем мне Ubuntu?
Ubuntu более безопасна с seccomp фильтрами
Защита сервера
Немає коментарів:
Дописати коментар