Estou executando o Ubuntu Xenial 16.04 no AWS EC2, instalei o SELinux e mudei seu modo para Enforcing
. Eu configurei o tipo selinux ssh_port_t
para a porta 22
. Embora eu tenha criado o encaminhamento de porta via ssh, descobri que o túnel não funcionava corretamente.
No arquivo de log /var/log/syslog
, o resultado é
kernel: [ 311.860046] audit: type=1400 audit(1519664302.158:506): avc: denied { getattr } for pid=1367 comm="sshd" path="/run/resolvconf/resolv.conf" dev="tmpfs" ino=267 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:init_var_run_t:s0 tclass=file permissive=0
O SELinux proibiu o comando sshd
para acessar o arquivo /run/resolvconf/resolv.conf
, este arquivo é um link de /etc/resolv.conf
$ readlink -f /etc/resolv.conf
/run/resolvconf/resolv.conf
$ ls -Z /etc/resolv.conf
unconfined_u:object_r:etc_t:SystemLow /etc/resolv.conf
$ ls -Z /run/resolvconf/resolv.conf
system_u:object_r:init_var_run_t:SystemLow /run/resolvconf/resolv.conf
O arquivo do tipo /run/resolvconf/resolv.conf
é init_var_run_t
, tentei alterá-lo para o tipo default_t
, var_run_t
, sshd_var_run_t
via comando
# sudo semanage fcontext -a -t $TYPE /var/run/resolvconf/resolv.conf
sudo semanage fcontext -m -t $TYPE /var/run/resolvconf/resolv.conf
sudo restorecon -F -R /run/resolvconf/resolv.conf
Quando eu mudei para sshd_var_run_t
, o túnel funciona. Mas outro utilitário também precisa usar o arquivo /run/resolvconf/resolv.conf
, por exemplo. chronyd
, esta solução não está bem.
Se eu alterar o modo SELinux para permissivo , o túnel funcionou bem, o SELinux acabou de registrar a informação no log do sistema.
Mas minha exigência é fazer o sistema funcionar bem no modo Enforcing
. Como devo lidar com o arquivo /run/resolvconf/resolv.conf
ou o que devo fazer para resolver o problema?