4. 4
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
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
5.
6. 6
UNIX — торговая марка The Open Group
*BSD (FreeBSD, NetBSD, OpenBSD);
Все дистрибутивы Linux;
Многие другие системы;
UNIX-подобные (UNIX-like)
Можно пройти сертификацию у Open Group за право
называться UNIX'ом, за деньги ;)
7. 7
Основы работы в UNIX-системах
Все — файл. Унификация доступа
Права доступа к объектам системы — права доступа к файлам
Двухуровневая модель разграничения привилегий
Наличие пользователей и групп
/etc/passwd
/etc/group
/etc/shadow (/etc/master.passwd)
8. 8
/etc/passwd (/etc/shadow)
crypt(3)
Password hash: $TYPE$SALT$HASH
DES: когда деревья были большими
$1$ — MD5
$2$ — Blowfish
$5$ — SHA-256
$6$ — SHA-512
9. 9
Основы работы в UNIX-системах
Атрибуты файла: владелец, группа, все остальные (UID/GID)
Атрибуты процесса (EUID/EGID)
Иерархическая файловая система
Жесткие и символьные ссылки
chown – change owner
chgrp – change group
chmod – change mode
ls – list files
cd – change directory
rm – remove file
mv – move (rename) file
Использование chown, chgrp:
В BSD – только root
В SysV – владелец файла, для
группы, в которую входит он сам
10. 10
Основы работы в UNIX-системах
Работа с файлами: чтение/копирование (read), запись/
модификация (write), выполнение (execute)
Для каталога:
r — возможность просмотра содержимого (чтение метаданных)
w — возможность создавать/удалять файлы в каталоге
x — возможность доступа к файлам в каталоге
11. 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. 12
Биты доступа (DAC)
1 – тип файла [- (file), d (dir), l (link), c (char dev), b (block dev), s (socket), p (FIFO)]
2 – права пользователя-владельца файла
3 – права группы-владельца файла
4 – права остальных пользователей
Проверка доступа - “слева направо”
Права пользователя - права процесса
13. 13
Установка битов доступа
u – user
g – group
o – other
a - all
+ –добавить
- – убрать
= – установить
chmod a+w file1
chmod g-rw file2
chmod go=r file3
14. 14
Установка битов доступа
1 — бит доступа установлен
0 — бит доступа не установлен
-rwx r-x r-- 111 101 100 754
# chmod 754 somefile
Файлы
-w- (записывай но не читай)
--x (запускай но не копируй)
Каталоги
--x (“скрытый каталог”)
-wx (“скрытый” с возможностью записи)
15. 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. 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. 17
Биты доступа по умолчанию
Процесс может создать объект с любыми атрибутами
В общем случае, объект создается со следующими атрибутами:
Владелец (UID) — EUID процесса
Группа (GID) — EGID процесса, либо GID каталога, в котором
создается объект (в BSD-системах)
Права доступа — согласно umask
18. 18
umask(1)
Задает, какие биты доступа НЕ надо выставлять
000 – 666 для файлов и 777 для каталогов;
027 – 640 для файлов и 750 для каталогов;
Флаг “-p” у cp сохраняет права доступа при копировании. SUID/
SGID флаги сбрасываются, если команду запустил не root
При перемещении файла (mv) сохраняются все биты доступа. Но
для этого надо иметь бит записи в оба каталога
19. 19
Дополнительные атрибуты
Ограничивают возможность операции с объектами (файлами)
append only: для файла — только дописывать (если есть w),
для каталога — только создавать в нем файлы;
nounlink: запрещает удалять или переименовывать файл/
каталог
immutable: для файла — ничего нельзя, кроме чтения/
копирования, для каталога — нельзя создавать и удалять
файлы, а также переименовывать каталог
Linux: chattr
BSD: chflags
FreeBSD securelevel: запрет сброса флагов, записи в
память ядра, загрузки модулей ядра, модификация
правил файрвола – даже пользователю root
20. 20
Опасность ссылок
Symlink attack
1. ln -s /etc/config /tmp/tempfile
2. open(“/tmp/tempfile”, O_RDWR)
3. /etc/config модифицирован
Hardlink attack
1. ln /sbin/suidprog /home/attacker/suidprog
2. Найдена уязвивость в /sbin/suidprog
3. Админ: rm /sbin/suidprog
4. ./exploit /home/attacker/suidprog
mktemp наше все!
Разделяем файловые системы (hardlink работают в пределах одной FS)
21. 21
Ограничения классической DAC-модели
Нет возможности дать разным группам пользователей разные права
Управлять группами может только root
Пользователь имеет контроль над своими объектами и может снизить
их безопасность
Решения:
POSIX ACL
Альтернативные модели безопасности (MAC, RBAC, DTE)
22. 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--
26. 26
/etc/syslog.conf
Запись в лог-файл
Передача на удаленный хост (514/UDP)
Передача другой программе
Вывод на консоль
*.err;kern.debug /dev/console
security.* /var/log/security
Многие демоны (apache, squid) имеют свою систему протоколирования
Ротация логов — не задача syslogd. Этим занимаются logrotate, newsyslog, etc
27. 27
Общие подходы к обеспечению
безопасности
Принцип наименьших привилегий
Принцип разграничения полномочий
Privilege revocation
1. Используем привилегии для выделения нужных ресурсов (SOCK_RAW, reserved port, utmp...)
2. Отзываем привилегии
Privilege separation
1. Создаем объекты, которым нужны привилегии
2. Создаем сокет (socketpair()), порождаем дочерний процесс (fork())
3. “Потомок” выполняет всю работу, обращаясь к привилегированным “родителям” для
выполнения требующих привилегий задач
28. 28
Общие подходы к обеспечению
безопасности
chroot(2)
Смена корневой директории (/) для процесса;
Копируем все необходимые для работы сервиса библиотеки и файлы в /path/to/chroot и
затем выполняем chroot(“/path/to/chroot”);
Не защищает от действий рута!
FreeBSD jail
Технология частичной виртуализации системы;
Создаем образ системы в /path/to/jail, выделяем дополнительный IP-адрес для jail, и
запускаем jail на этом адресе;
Фактически, получаем “систему внутри системы”;
Требует определенной настройки сервисов и системы
29. 29
Общие подходы к обеспечению
безопасности
sudo
Самая неправильно используемая утилита ;)
30. 30
Задачка из реальной жизни
Все хотят ходить root’ом. Как быть?
31. 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. 32
Мандатные модели доступа
В MAC сравниваются метки доступа объектов и уровни доступа субъектов
Субъект (пользователь) не может управлять правами доступа для своих объектов
Обычно дополняет DAC или RBAC
33. 33
Модель Белла-ЛаПадулы (NWD-NRU)
Заимствована из военного документооборота
Субъект имеет право читать только те документы, чей уровень безопасности не
выше его
Субъект имеет право заносить информацию (писать) только в те документы, чей
уровень информации не ниже его
Модель конфиденциальности
Модель Биба (NWU-NRD)
Дополняет модель Белла-ЛаПадулы
Субъект с низким уровнем не может писать в документы с более высоким уровнем
Субъект с высоким уровнем не может читать документы с более низким уровнем
Модель целостности
34. 34
MAC vs. DAC
DAC: наделяем субъектов полномочиями осуществлять определенные
операции над определенными объектами
MAC: неявный контроль путем сравнения назначенных меток уровня
доступа