SELinux 在运行 fail2ban 的 Expect 脚本时出现问题

SELinux 在运行 fail2ban 的 Expect 脚本时出现问题

我有一个 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!)

我认为脚本本身在这里没有什么区别,但如果需要的话我可以发布它。

答案1

您必须使用 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 };

你确定没有其他拒绝吗?

相关内容