Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
/home/01mer/labs/systr/proga, pid: 395(0)[0], policy:
/home/01mer/labs/systr/proga, filters: 13, syscall: netbsd-execve(59),
filename: /bin/sh, argv:
#
Как мы видим, попытка запустить модифицированную программу провалилась.
Автоматизируем создание правил
Доверить автоматическое создание правил systrace допустимо только в том случае, когда есть уверенность на 99,9% в том, что мы запускаем. Во всех остальных случаях рекомендуется создавать правила в интерактивном режиме. Рассмотрим пример:
# systrace -t /home/01mer/labs/systr/newproga
Ключ -t указывает, чтобы интерактивное создание правил проходило в текстовом режиме. Если у вас на машине установлены x-windows, вы можете воспользоваться xsystrace.
/home/01mer/labs/systr/newproga, pid: 729(0)[0], policy:
/home/01mer/labs/systr/newproga, filters: 0, syscall: netbsd-mmap(197), args: 32
Answer:
Тут systrace ожидает от нас ввода permit, в случае если мы желаем разрешить системный вызов или deny для запрета. Конечно, интерактивное создание правил – процесс достаточно трудоемкий и занимает много времени, но полученный результат того стоит. Вы будете точно знать, когда и какие системные вызовы использует программа.
Дополнительные «полезности»
В синтаксисе правил вы можете использовать необязательные опции протоколирования.
Например:
netbsd-fsread: filename eq "/lib/libc.so.12.114.1" then permit log
параметр log указывает systrace протоколировать каждое обращение к указанному фильтру.
По умолчанию протоколируются лишь попытки выполнить системные вызовы, о которых нет ни слова в правилах. Для протоколирования systrace использует syslogd. А это значит, что мы можем немного поправить /etc/syslog.conf, чтобы все сообщения от systrace размещались в отдельном файле.
При желании даже можно написать маленький парсер для получаемых логов. Но это уже по желанию, все в ваших руках.
Нельзя не отметить еще одну необязательную опцию – errorcode. С её помощью мы можем указать, какая ошибка будет возвращаться при обращении к запрещенному системному вызову.
Например:
netbsd-fswrite: filename eq "/some/where/file" then deny[EIO]
В данном случае при попытке записи в файл системному вызову будет возвращена ошибка – input/outpu error. Для ознакомления с полным списком errno-кодов возврата вы можете прочитать man errno.
Заключение
Мы рассмотрели простой пример использования systrace. Изложенных сведений вам будет достаточно и для создания более сложных собственных правил для различных программ. Применение политик ограничения системных вызовов для конкретных программ поможет вам существенно повысить степень защиты ОС в целом.