Назад | Перейти на главную страницу

Проблемы с SELinux при запуске сценария Expect от fail2ban

У меня есть сценарий Expect, который отлично работает, если я запускаю его вручную, но не работает при запуске как действие из Fail2ban. Сообщение об ошибке выглядит следующим образом:

spawn /usr/bin/telnet 192.168.242.1
The system has no more ptys.  Ask your system administrator to create more.
    while executing
"spawn /usr/bin/telnet $hostname"

С соответствующим сообщением в audit.log:

type=AVC msg=audit(1407894085.867:54862): avc:  denied  { read write } for  pid=14748 comm="ciscoacl.exp" name="ptmx" dev=devtmpfs ino=5288 scontext=unconfined_u:system_r:fail2ban_t:s0 tcontext=system_u:object_r:ptmx_t:s0 tclass=chr_file

Скрипт работает от имени пользователя root (подтверждается запуском whoami из сценария), поэтому я не ожидал, что у меня не будет никаких проблем. Что я могу сделать, чтобы это исправить? (Нет, я не хочу отключать SELinux!)

Я не думаю, что сам сценарий имеет значение здесь, но при необходимости могу опубликовать его.

Вам нужно будет создать собственную политику с помощью audit2allow, чтобы позволить fail2ban читать запись в chr_file. Вероятно, это будет выглядеть так:

require {
        type ptmx_t;
        type fail2ban_t;
        class chr_file { read write };
}

#============= fail2ban_t ==============
allow fail2ban_t ptmx_t:chr_file { read write };

Вы уверены, что больше нет отрицаний?