Если по каким-либо причинам вам необходимо обеспечить работу OpenVPN на 5000 порту (использовался ранее в OpenVPN) при включенном SELinux, то прийдется вручную создавать модуль SELinux.
Допустим мы:
1. Установили OpenVPN, прописали port 5000 в /etc/openvpn/server.conf
2. Добавили правила в /etc/sysconfig/iptables
-A INPUT -m state --state new -m udp -p udp --dport 5000 -j ACCEPT
3. Добавили правило в SELinux
# semanage port -a -t openvpn_port_t -p udp 5000
/usr/sbin/semanage: Port upd/5000 already defined
4. При запуске OpenVPN
# service openvpn start
получили [FAILED]
в логе openvpn.log увидели
TCP/UDP: Socket bind failed on local address [undef]:5000: Permission denied
в /var/log/audit/audit.log наблюдаем строчку
type=AVC msg=audit(xxxxx): avc:denied { name_bind } for pid=xxx comm="openvpn" src=5000 scontext=unconfined_u:system_r:openvpn_t:s0 tcontext=system_u:object_r:commplex_port_t:s0 tclass=udp_socket
Что делаем? Модуль правил для SELinux.
1. Копируем выше обозначенную строчку из audit.log в файл OPENVPN5000.audit
2.
# cat OPENVPN5000.audit | audit2allow -m audit > OPENVPN5000.te
# cat OPENVPN5000.te
module audit 1.0;
require {
type openvpn_t;
type commplex_port_t;
class udp_socket name_bind;
}
#=========== openvpn_t ==============
allow openvpn_t commplex_port_t:udp_socket name-bind;
3. Проверяем и собираем модуль
# checkmodule -M -m -o OPENVPN5000.mod OPENVPN5000.te
4. Упаковываем модуль
# semodule_package -o OPENVPN5000.pp -m OPENVPN5000.mod
5. Загружаем упакованный модуль
# semodule -i OPENVPN5000.pp
Вот теперь можно успешно перезапусить OpenVPN на 5000 порту
# service openvpn restart
Erlang закончился
4 недели назад
Комментариев нет:
Отправить комментарий