Я использую Asterisk в Fedora 23 и использую модуль 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 не блокировал исходящее соединение?
Вам необходимо создать собственную политику SELinux и применить ее в своей системе. Похоже, что звездочка не может открыть tcp_socket на порту 993, поэтому политика может быть такой:
#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 - попробуйте audit2why чтобы узнать, какие нарушения были бы отклонены, и создать собственные политики с audit2allow.
PS: Во-первых, я пропустил строку с
module asterpolicy 1.0
Итак, обновил его.