34

Владимир Иванов - Безопасность Unix-подобных ОС

  • Upload
    yandex

  • View
    217

  • Download
    10

Embed Size (px)

Citation preview

Page 1: Владимир Иванов - Безопасность Unix-подобных ОС
Page 2: Владимир Иванов - Безопасность Unix-подобных ОС

Безопасность UNIX-подобных ОС

Антон Карпов

Page 3: Владимир Иванов - Безопасность Unix-подобных ОС

Почему “UNIX-подобные”?

Page 4: Владимир Иванов - Безопасность 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

Page 5: Владимир Иванов - Безопасность Unix-подобных ОС
Page 6: Владимир Иванов - Безопасность Unix-подобных ОС

6

UNIX — торговая марка The Open Group

*BSD (FreeBSD, NetBSD, OpenBSD); Все дистрибутивы Linux; Многие другие системы;

UNIX-подобные (UNIX-like)

Можно пройти сертификацию у Open Group за право называться UNIX'ом, за деньги ;)

Page 7: Владимир Иванов - Безопасность Unix-подобных ОС

7

Основы работы в UNIX-системах

Все — файл. Унификация доступа Права доступа к объектам системы — права доступа к файлам Двухуровневая модель разграничения привилегий Наличие пользователей и групп

/etc/passwd

/etc/group

/etc/shadow (/etc/master.passwd)

Page 8: Владимир Иванов - Безопасность Unix-подобных ОС

8

/etc/passwd (/etc/shadow)

Password hash: $TYPE$SALT$HASH

crypt(3)

DES: когда деревья были большими $1$ — MD5 $2$ — Blowfish $5$ — SHA-256 $6$ — SHA-512

Page 9: Владимир Иванов - Безопасность Unix-подобных ОС

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 – владелец файла, для группы, в которую входит он сам

Page 10: Владимир Иванов - Безопасность Unix-подобных ОС

10

Основы работы в UNIX-системах

Работа с файлами: чтение/копирование (read), запись/модификация (write), выполнение (execute)

Для каталога:r — возможность просмотра содержимого (чтение метаданных) w — возможность создавать/удалять файлы в каталоге x — возможность доступа к файлам в каталоге

Page 11: Владимир Иванов - Безопасность Unix-подобных ОС

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 – имя файла

Page 12: Владимир Иванов - Безопасность Unix-подобных ОС

12

Биты доступа (DAC)

1 – тип файла [- (file), d (dir), l (link), c (char dev), b (block dev), s (socket), p (FIFO)]2 – права пользователя-владельца файла3 – права группы-владельца файла4 – права остальных пользователей

Проверка доступа - “слева направо”Права пользователя - права процесса

Page 13: Владимир Иванов - Безопасность Unix-подобных ОС

13

Установка битов доступа

u – user

g – group

o – other

a - all

+ –добавить

- – убрать

= – установить

chmod a+w file1

chmod g-rw file2

chmod go=r file3

Page 14: Владимир Иванов - Безопасность Unix-подобных ОС

14

Установка битов доступа

# chmod 754 somefile

1 — бит доступа установлен 0 — бит доступа не установлен

-rwx r-x r-- 111 101 100 754

Файлы

-w- (записывай но не читай)

--x (запускай но не копируй)

Каталоги

--x (“скрытый каталог”)

-wx (“скрытый” с возможностью записи)

Page 15: Владимир Иванов - Безопасность Unix-подобных ОС

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 такое поведение принято по умолчанию.

Page 16: Владимир Иванов - Безопасность Unix-подобных ОС

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/

Page 17: Владимир Иванов - Безопасность Unix-подобных ОС

17

Биты доступа по умолчанию

Процесс может создать объект с любыми атрибутами В общем случае, объект создается со следующими атрибутами:

Владелец (UID) — EUID процессаГруппа (GID) — EGID процесса, либо GID каталога, в котором создается объект (в BSD-системах)Права доступа — согласно umask

Page 18: Владимир Иванов - Безопасность Unix-подобных ОС

18

umask(1)

Задает, какие биты доступа НЕ надо выставлять

000 – 666 для файлов и 777 для каталогов;

027 – 640 для файлов и 750 для каталогов;

Флаг “-p” у cp сохраняет права доступа при копировании. SUID/SGID флаги сбрасываются, если команду запустил не root

При перемещении файла (mv) сохраняются все биты доступа. Но для этого надо иметь бит записи в оба каталога

Page 19: Владимир Иванов - Безопасность Unix-подобных ОС

19

Дополнительные атрибуты

Ограничивают возможность операции с объектами (файлами) append only: для файла — только дописывать (если есть w), для каталога — только создавать в нем файлы; nounlink: запрещает удалять или переименовывать файл/каталогimmutable: для файла — ничего нельзя, кроме чтения/копирования, для каталога — нельзя создавать и удалять файлы, а также переименовывать каталог

Linux: chattr

BSD: chflags

FreeBSD securelevel: запрет сброса флагов, записи в память ядра, загрузки модулей ядра, модификация правил файрвола – даже пользователю root

Page 20: Владимир Иванов - Безопасность Unix-подобных ОС

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)

Page 21: Владимир Иванов - Безопасность Unix-подобных ОС

21

Ограничения классической DAC-модели

Нет возможности дать разным группам пользователей разные права

Управлять группами может только root

Пользователь имеет контроль над своими объектами и может снизить

их безопасность

POSIX ACL

Альтернативные модели безопасности (MAC, RBAC, DTE)

Решения:

Page 22: Владимир Иванов - Безопасность Unix-подобных ОС

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--

Page 23: Владимир Иванов - Безопасность Unix-подобных ОС

23

POSIX Capabilities

CAP_CHOWN

CAP_SETUID

CAP_SETGID

CAP_LINUX_IMMUTABLE

CAP_NET_BIND_SERVICE

Page 24: Владимир Иванов - Безопасность Unix-подобных ОС

24

Linux PAM

Аккаунтинг

Аутентификация

Парольная политика

Контроль сессии

Page 25: Владимир Иванов - Безопасность Unix-подобных ОС

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

Page 26: Владимир Иванов - Безопасность Unix-подобных ОС

26

/etc/syslog.conf

Запись в лог-файл

Передача на удаленный хост (514/UDP)

Передача другой программе

Вывод на консоль

*.err;kern.debug /dev/console security.* /var/log/security

Многие демоны (apache, squid) имеют свою систему протоколирования

Ротация логов — не задача syslogd. Этим занимаются logrotate, newsyslog, etc

Page 27: Владимир Иванов - Безопасность Unix-подобных ОС

27

Общие подходы к обеспечению безопасности

Принцип наименьших привилегий

Принцип разграничения полномочий

Privilege revocation

Privilege separation

1. Используем привилегии для выделения нужных ресурсов (SOCK_RAW, reserved port, utmp...) 2. Отзываем привилегии

1. Создаем объекты, которым нужны привилегии 2. Создаем сокет (socketpair()), порождаем дочерний процесс (fork()) 3. “Потомок” выполняет всю работу, обращаясь к привилегированным “родителям” для выполнения требующих привилегий задач

Page 28: Владимир Иванов - Безопасность Unix-подобных ОС

28

Общие подходы к обеспечению безопасности

chroot(2)

FreeBSD jail

Смена корневой директории (/) для процесса;

Копируем все необходимые для работы сервиса библиотеки и файлы в /path/to/chroot и затем выполняем chroot(“/path/to/chroot”);

Не защищает от действий рута!

Технология частичной виртуализации системы; Создаем образ системы в /path/to/jail, выделяем дополнительный IP-адрес для jail, и запускаем jail на этом адресе;

Фактически, получаем “систему внутри системы”;

Требует определенной настройки сервисов и системы

Page 29: Владимир Иванов - Безопасность Unix-подобных ОС

29

Общие подходы к обеспечению безопасности

sudo

Самая неправильно используемая утилита ;)

Page 30: Владимир Иванов - Безопасность Unix-подобных ОС

30

Задачка из реальной жизни

Все хотят ходить root’ом. Как быть?

Page 31: Владимир Иванов - Безопасность Unix-подобных ОС

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

Page 32: Владимир Иванов - Безопасность Unix-подобных ОС

32

Мандатные модели доступа

В MAC сравниваются метки доступа объектов и уровни доступа субъектов

Субъект (пользователь) не может управлять правами доступа для своих объектов

Обычно дополняет DAC или RBAC

Page 33: Владимир Иванов - Безопасность Unix-подобных ОС

33

Модель Белла-ЛаПадулы (NWD-NRU)

Модель Биба (NWU-NRD)

Заимствована из военного документооборота Субъект имеет право читать только те документы, чей уровень безопасности не

выше его Субъект имеет право заносить информацию (писать) только в те документы, чей

уровень информации не ниже его

Модель конфиденциальности

Дополняет модель Белла-ЛаПадулы Субъект с низким уровнем не может писать в документы с более высоким уровнем Субъект с высоким уровнем не может читать документы с более низким уровнем

Модель целостности

Page 34: Владимир Иванов - Безопасность Unix-подобных ОС

34

MAC vs. DAC

DAC: наделяем субъектов полномочиями осуществлять определенные

операции над определенными объектами

MAC: неявный контроль путем сравнения назначенных меток уровня

доступа