|
Stephanie: непотопляемая OpenBSD
Xakep, номер #047, стр. 047-074-2 # cd ../ldctl && make && make install # cd ../sneekctl && make && make install Осталось только собрать новое ядро. В конфиге ядра /sys/conf/GENERIC появились новые опции, с помощью которых можно включать или выключать те или иные возможности Stephanie: # Stephanie: OpenBSD hardening #option STEPHANIE_VERBOSE # Be verbose (not recommended) # Stephanie: Features option SNEEK # execve() logging option TPE # Trusted Path Execution option PRIVACY # Privacy modifications option SYMLINKS # Restricted symlinks option LDSTRIP # ld.so environment variable stripping option K5 # Binary integrity verification # Stephanie: Sub-options for k5 #option K5_SAVEKMEM # Save kernel memory (half-size chunks) #option K5_SUGIDONLY # Verify integrity of S[UG]IDs only #option K5_STRICT # Access denied if binary not in DB #option K5_VERBOSE # Be very verbose (k5, not recommended) Сейчас мы их трогать не будем, оставим настройки по умолчанию. Компилим: # cd /usr/src/sys/arch/`machine`/conf # config GENERIC # cd ../compile/GENERIC # make clean && make depend && make && make install Все, идем в reboot, чтобы все сделанные в системе изменения заработали. Настройка При загрузке ядра появились новые сообщения: Это означает, что все прошло нормально, система успешно пропатчена. Первое, что бросается в глаза - появление в /var/log/messages таких сообщений: Jul 2 03:16:39 darkstar /bsd: "/usr/bin/w" (1002, 10/2) [26485 (2853)] Это отслеживаются все вызовы execve(). В лог записывается имя выполняемой программы, uid/euid и gid/egid пользователя, а также pid и ppid. С помощью sneekctl можно изменить этот формат, например: # skeenctl set a u После этого в лог будет писаться только имя программы и uid/gid (а также euid/egid, если установлены). Если эти сообщения раздражают, их можно отключить либо пересобрав ядро без option SNEEK, либо добавив в /etc/rc.securelevel строчку: /usr/local/sbin/sneekctl off Сделаем список "доверенных" пользователей, на которых не будут распространяться ограничения. В /etc/rc.securelevel добавляем: for USER in barrent billi do /usr/local/sbin/aclctl -a $USER done Теперь все, кроме barrent и billi (ну, и root, конечно), не смогут видеть чужие процессы с помощью ps, смотреть, кто что делает через w и т.д. Утилита ldctl нужна для управления защитой ld.so. Например, чтобы отключить защиту, надо сделать # ldctl d Механизм TPE (Trusted Path Execution), который включается опцией в ядре "option TPE", не позволяет "недоверенным" пользователям запускать собственные программы, в том числе и эксплойты. Как это работает Напоследок посмотрим, как выглядит теперь наша система глазами "недоверенного" пользователя vasya: Как видно, ничего у него не получается ;-). Стефани отлично справляется с возложенными на нее задачами, что и требовалось доказать. RTFM, мой друг |