Upload
yandex
View
217
Download
10
Embed Size (px)
Citation preview
Безопасность UNIX-подобных ОС
Антон Карпов
Почему “UNIX-подобные”?
4
AT&T UNIX (SysV)
1971: Первая редакция UNIX ... 1973: Третья и четвертая редакции UNIX ... 1979: Девятая редакция UNIX 1983: UNIX SysV
Berkeley UNIX (BSD)
1978: 2BSD 1979: 3BSD 1980: 4BSD 1986: 4.2BSD & 4.3BSD 1989: Networking Release 1 1991: Networking Release 2 1994: 4.4BSD-lite 1995: 4.4BSD-lite2
1960-е: MIT, Bell Labs, General Electric -> MULTICS
1970: Ken Thompson, Dennis Ritchie (AT&T Bell Labs) -> UNIX
1977: Bill Joy (University of California, Berkeley) -> BSD
6
UNIX — торговая марка The Open Group
*BSD (FreeBSD, NetBSD, OpenBSD); Все дистрибутивы Linux; Многие другие системы;
UNIX-подобные (UNIX-like)
Можно пройти сертификацию у Open Group за право называться UNIX'ом, за деньги ;)
7
Основы работы в UNIX-системах
Все — файл. Унификация доступа Права доступа к объектам системы — права доступа к файлам Двухуровневая модель разграничения привилегий Наличие пользователей и групп
/etc/passwd
/etc/group
/etc/shadow (/etc/master.passwd)
8
/etc/passwd (/etc/shadow)
Password hash: $TYPE$SALT$HASH
crypt(3)
DES: когда деревья были большими $1$ — MD5 $2$ — Blowfish $5$ — SHA-256 $6$ — SHA-512
9
Основы работы в UNIX-системах
Атрибуты файла: владелец, группа, все остальные (UID/GID) Атрибуты процесса (EUID/EGID) Иерархическая файловая система Жесткие и символьные ссылки
chown – change ownerchgrp – change groupchmod – change models – list filescd – change directoryrm – remove filemv – move (rename) file
Использование chown, chgrp:
В BSD – только root
В SysV – владелец файла, для группы, в которую входит он сам
10
Основы работы в UNIX-системах
Работа с файлами: чтение/копирование (read), запись/модификация (write), выполнение (execute)
Для каталога:r — возможность просмотра содержимого (чтение метаданных) w — возможность создавать/удалять файлы в каталоге x — возможность доступа к файлам в каталоге
11
Основы работы в UNIX-системах
-rw-r--r-- 1 tokza wheel 8480 Nov 14 00:47 file.txt
1 2 3 4 5 6 7
1 – права доступа (владельца, группы, остальных)2 – количество жестких ссылок3 – владелец файла4 – группа-владелец файла5 – размер файла, в байтах6 – дата последней модификации файла7 – имя файла
12
Биты доступа (DAC)
1 – тип файла [- (file), d (dir), l (link), c (char dev), b (block dev), s (socket), p (FIFO)]2 – права пользователя-владельца файла3 – права группы-владельца файла4 – права остальных пользователей
Проверка доступа - “слева направо”Права пользователя - права процесса
13
Установка битов доступа
u – user
g – group
o – other
a - all
+ –добавить
- – убрать
= – установить
chmod a+w file1
chmod g-rw file2
chmod go=r file3
14
Установка битов доступа
# chmod 754 somefile
1 — бит доступа установлен 0 — бит доступа не установлен
-rwx r-x r-- 111 101 100 754
Файлы
-w- (записывай но не читай)
--x (запускай но не копируй)
Каталоги
--x (“скрытый каталог”)
-wx (“скрытый” с возможностью записи)
15
Дополнительные биты доступаSUID (Set User ID) SGID (Set Group ID) Sticky
-r-s r-x r-x – если установлен “x” для владельца;
-r-S r-x r-x – если НЕ установлен “x” для владельца;
-r-x r-s r-x – если установлен “x” для группы;
-r-x r-S r-x – если НЕ установлен “x” для группы;
SUID на каталог – нет смысла.
SGID на каталог – файлам, создаваемым в каталоге, назначается группа-владелец каталога, а не группа процесса, создавшего файл. В BSD такое поведение принято по умолчанию.
16
Sticky bit
drwx r-x r-t – если установлен “x” для остальных;
drwx r-x r-T – если НЕ установлен “x” для остальных;
Цифровой формат записи
4000 – SUID
2000 – SGID
1000 – Sticky
chmod 4755 file2
chmod 2750 file3
chmod 1777 dir2/
17
Биты доступа по умолчанию
Процесс может создать объект с любыми атрибутами В общем случае, объект создается со следующими атрибутами:
Владелец (UID) — EUID процессаГруппа (GID) — EGID процесса, либо GID каталога, в котором создается объект (в BSD-системах)Права доступа — согласно umask
18
umask(1)
Задает, какие биты доступа НЕ надо выставлять
000 – 666 для файлов и 777 для каталогов;
027 – 640 для файлов и 750 для каталогов;
Флаг “-p” у cp сохраняет права доступа при копировании. SUID/SGID флаги сбрасываются, если команду запустил не root
При перемещении файла (mv) сохраняются все биты доступа. Но для этого надо иметь бит записи в оба каталога
19
Дополнительные атрибуты
Ограничивают возможность операции с объектами (файлами) append only: для файла — только дописывать (если есть w), для каталога — только создавать в нем файлы; nounlink: запрещает удалять или переименовывать файл/каталогimmutable: для файла — ничего нельзя, кроме чтения/копирования, для каталога — нельзя создавать и удалять файлы, а также переименовывать каталог
Linux: chattr
BSD: chflags
FreeBSD securelevel: запрет сброса флагов, записи в память ядра, загрузки модулей ядра, модификация правил файрвола – даже пользователю root
20
Опасность ссылок
Symlink attack1. ln -s /etc/config /tmp/tempfile2. open(“/tmp/tempfile”, O_RDWR)3. /etc/config модифицирован
Hardlink attack1. ln /sbin/suidprog /home/attacker/suidprog2. Найдена уязвивость в /sbin/suidprog3. Админ: rm /sbin/suidprog4. ./exploit /home/attacker/suidprog
mktemp наше все!
Разделяем файловые системы (hardlink работают в пределах одной FS)
21
Ограничения классической DAC-модели
Нет возможности дать разным группам пользователей разные права
Управлять группами может только root
Пользователь имеет контроль над своими объектами и может снизить
их безопасность
POSIX ACL
Альтернативные модели безопасности (MAC, RBAC, DTE)
Решения:
22
POSIX ACL
Дает возможность гранулировано выставлять права на объекты для
каждого пользователя/группы в системе
Требует поддержки от файловой системы
$ setfacl –m group:mygroup:rw- myfile1
$ setfacl –m user:toxa:rwx myfile2
$ getfacl myfile2# file: myfile2# owner: root # group: root user::rw- user:toxa:rwx group::r-- group:mygroup:rw- mask::rw- other::r--
23
POSIX Capabilities
CAP_CHOWN
CAP_SETUID
CAP_SETGID
CAP_LINUX_IMMUTABLE
CAP_NET_BIND_SERVICE
24
Linux PAM
Аккаунтинг
Аутентификация
Парольная политика
Контроль сессии
25
Протоколирование событий: syslog
ps -waxu (ps -ef) – увидим много процессов
/var/log/ (/var/adm/) – логи их работы
syslogd – читает сокет /dev/log (/var/run/log)
16 подсистем (facilities): auth, authpriv, console, cron, daemon, ftp, kern, lpr, mark, mail, news, ntp, security, syslog, user, uucp
8 классов приоритетов: debug, info, notice, warning, err, crit, alert, emerg
26
/etc/syslog.conf
Запись в лог-файл
Передача на удаленный хост (514/UDP)
Передача другой программе
Вывод на консоль
*.err;kern.debug /dev/console security.* /var/log/security
Многие демоны (apache, squid) имеют свою систему протоколирования
Ротация логов — не задача syslogd. Этим занимаются logrotate, newsyslog, etc
27
Общие подходы к обеспечению безопасности
Принцип наименьших привилегий
Принцип разграничения полномочий
Privilege revocation
Privilege separation
1. Используем привилегии для выделения нужных ресурсов (SOCK_RAW, reserved port, utmp...) 2. Отзываем привилегии
1. Создаем объекты, которым нужны привилегии 2. Создаем сокет (socketpair()), порождаем дочерний процесс (fork()) 3. “Потомок” выполняет всю работу, обращаясь к привилегированным “родителям” для выполнения требующих привилегий задач
28
Общие подходы к обеспечению безопасности
chroot(2)
FreeBSD jail
Смена корневой директории (/) для процесса;
Копируем все необходимые для работы сервиса библиотеки и файлы в /path/to/chroot и затем выполняем chroot(“/path/to/chroot”);
Не защищает от действий рута!
Технология частичной виртуализации системы; Создаем образ системы в /path/to/jail, выделяем дополнительный IP-адрес для jail, и запускаем jail на этом адресе;
Фактически, получаем “систему внутри системы”;
Требует определенной настройки сервисов и системы
29
Общие подходы к обеспечению безопасности
sudo
Самая неправильно используемая утилита ;)
30
Задачка из реальной жизни
Все хотят ходить root’ом. Как быть?
31
Генераторы случайных чисел в UNIX
/dev/random
/dev/urandom
arc4random(3)
Linux getrandom()
#ifdef __linux__
call_msg.rm_xid = getpid() ^ now.tv_sec ^ now.tv_usec;
#else
call_msg.rm_xid = arc4random();
#endif
32
Мандатные модели доступа
В MAC сравниваются метки доступа объектов и уровни доступа субъектов
Субъект (пользователь) не может управлять правами доступа для своих объектов
Обычно дополняет DAC или RBAC
33
Модель Белла-ЛаПадулы (NWD-NRU)
Модель Биба (NWU-NRD)
Заимствована из военного документооборота Субъект имеет право читать только те документы, чей уровень безопасности не
выше его Субъект имеет право заносить информацию (писать) только в те документы, чей
уровень информации не ниже его
Модель конфиденциальности
Дополняет модель Белла-ЛаПадулы Субъект с низким уровнем не может писать в документы с более высоким уровнем Субъект с высоким уровнем не может читать документы с более низким уровнем
Модель целостности
34
MAC vs. DAC
DAC: наделяем субъектов полномочиями осуществлять определенные
операции над определенными объектами
MAC: неявный контроль путем сравнения назначенных меток уровня
доступа