我在 Fedora 23 上运行 Asterisk,并使用语音邮件 IMAP 模块将语音邮件存储到 Gmail。当 SELinux 处于强制模式时,它会阻止 Asterisk 连接到 Gmail。以下是来自 /var/log/audit/audit.log 的错误消息:
type=AVC msg=audit(1460344333.315:70807): avc: denied { name_connect } for pid=823 comm="asterisk" dest=993 scontext=system_u:system_r:asterisk_t:s0 tcontext=system_u:object_r:pop_port_t:s0 tclass=tcp_socket permissive=0
因此,我不得不将 SELinux 置于宽容模式。如何修复 SELinux 以停止阻止 Asterisk 建立出站连接?
答案1
您需要创建自定义 SELinux 策略并将其应用于您的系统。看起来 asterisk 无法在 993 端口上打开 tcp_socket,因此策略可能是:
#cat asterpolicy.te
module asterpolicy 1.0
require {
type asterisk_t
type pop_port_t;
class tcp_socket name_connect;
}
#============= asterisk_t ==============
allow asterisk_t pop_port_t:tcp_socket name_connect;
之后编译并启用你的策略
checkmodule -M -m asterpolicy.te -o asterpolicy.mod
semodule_package -o asterpolicy.pp -m asterpolicy.mod
semodule -i asterpolicy.pp
如果你仍然遇到 SELinux 问题 - 尝试审计为什么看看哪些类型的违规会被拒绝,并制定自定义政策audit2allow。
PS:首先,我错过了字符串
module asterpolicy 1.0
因此,更新了它。