LINUX.ORG.RU

простейшая selinux политика

 


0

3

Пользователь с типом user_t хочет открывать файл /var/log/dmesg с типом var_log_t. Для этого в файле dmesgread.te создается политика следующего вида:

odule dmesgread 1.0;

require {
        type var_log_t;
        type user_t;
        class file open
        class file read
        class file getattr;
}

#============= user_t ==============
allow user_t var_log_t:file {open read getattr};
Применяю
# semodule -i  dmesgread.pp
Применяется подозрительно долго. Но попытка открыть /var/log/dmesg заканчивается Permission denied. В /var/log/audit/audit.log вижу вот такое
type=AVC msg=audit(1386355300.812:358): avc:  denied  { open } for  pid=9683 comm="cat" name="dmesg" dev=sda2 ino=786454 scontext=user_u:user_r:user_t:s0 tcontext=system_u:object_r:var_log_t:s0 tclass=file
type=SYSCALL msg=audit(1386355300.812:358): arch=40000003 syscall=5 success=no exit=-13 a0=bf99c901 a1=8000 a2=0 a3=1 items=0 ppid=2774 pid=9683 auid=502 uid=502 gid=502 euid=502 suid=502 fsuid=502 egid=502 sgid=502 fsgid=502 tty=tty2 ses=2 comm="cat" exe="/bin/cat" subj=user_u:user_r:user_t:s0 key=(null)

Т е проблема с операцией open, хотя политикой она разрешена. В режиме permissive все открывается нормально. ЧЯНД?

★★★

Для этого в файле dmesgread.te создается политика следующего вида:

Как компилируешь в модуль, появляются ли ошибки?

semodule -i dmesgread.pp

Ошибок нет? Что говорит

semodule -l | grep -i dmesg
?

router ★★★★★
()
Ответ на: комментарий от LIKAN

Тогда может лог старый? Попробуй его стереть

: > /var/log/audit/audit.log

и посмотреть что появится в логе при следующей попытке доступа к файлу.

Кстати, так как ты компилировал dmesgread.te в dmesgread.pp ?

router ★★★★★
()
Ответ на: комментарий от router

Лог новый, эти записи появляются именно сразу после попытки доступа к файлу, через некоторое время ниже появляются другие записи. Я пользуюсь вот этим

# semodule -i  dmesgread.pp
Я так понимаю, оно по дефолту берет файл dmesgread.te.

LIKAN ★★★
() автор топика
Ответ на: комментарий от LIKAN

Это не «ок». Ты правишь исходник, не компилируешь его, а загружаешь другой модуль, который просто лежит в том же каталоге

router ★★★★★
()
Ответ на: комментарий от router

Для проверки просто убери dmesgread.pp в другой каталог, сразу увидишь ошибку при запуске semodule

Компилировать так:

Установи dev пакет для selinux, затем компилируй с помощью Makefile из этого пакета

Для debian/ubuntu

apt-get install selinux-policy-dev
make NAME=dmesgread -f /usr/share/doc/selinux-policy-dev/examples/Makefile

router ★★★★★
()

Пользователь с типом user_t хочет открывать файл /var/log/dmesg

Получается имитация дискретного контроля доступа через мандатный. Зачем для этого selinux, если это делается через POSIX ACL?

В /var/log/audit/audit.log вижу вот такое

Там упоминается команда /bin/cat, вероятно это не спроста. Стоит глянуть выхлоп

audit2allow -m abcdef < /var/log/audit/audit.log
и сделать выводы.

shahid ★★★★★
()
Ответ на: комментарий от router

спасибо, понял свою ошибку.

LIKAN ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.