![O que o Apache está tentando fazer com a porta 80 que o SELinux está bloqueando?](https://rvso.com/image/760967/O%20que%20o%20Apache%20est%C3%A1%20tentando%20fazer%20com%20a%20porta%2080%20que%20o%20SELinux%20est%C3%A1%20bloqueando%3F.png)
Eu tenho um pequeno servidor web (CentOS 8) que executa um pequeno aplicativo php e mysql. Ele também executa Nagios, BIND e Postfix rodando como um MX secundário.
Tudo parece "funcionar" e nunca notei nenhum problema. Consigo carregar o Nagios e o outro aplicativo php pela porta 443. Se eu carregar os URLs pela porta http/porta 80, o Apache será configurado para redirecionar para 443, e fará isso igualmente bem.
No entanto, o selinux registra rotineiramente o seguinte AVC, indicando algum problema na porta 80:
time->Sat Dec 12 01:55:16 2020
type=AVC msg=audit(1607756116.608:1381369): avc: denied { name_connect } for pid=631936 comm="httpd" dest=80 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0
Olhando /var/log/httpd/error_log
, vejo uma permissão negada correspondente para o mesmo pid ao mesmo tempo:
[Sat Dec 12 01:55:16.608941 2020] [core:warn] [pid 631936] (13)Permission denied: AH00056: connect to listener on [::]:80
Existe uma maneira de rastrear o que exatamente o Apache está tentando fazer e que está sendo bloqueado? Como mencionei, nada parece estar quebrado, então não tentei construir um módulo para permitir isso. Mas eu gostaria de encontrar a causa raiz da mensagem AVC negada aqui e:
- Permita se for inofensivo e realmente deveria ser permitido, OU
- Configure o Apache para parar de tentar fazer tudo o que está tentando fazer
Responder1
A conexão que está sendo feita aqui é o Apache conectando-se a si mesmo: eles são registrados como um internal dummy connection
e são a maneira do Apache deacordando seus processos filhos.
Por padrão, o SELinux não permite que o servidor web faça conexões de rede de saída. Vários booleanos mudarão esse comportamento, mas provavelmente o que você deseja usar para corrigir isso é httpd_graceful_shutdown
aquele que permite ao Apache se conectar a qualquer porta TCP rotulada http_port_t
(80, 81, 443, 488, 8008, 8009, 8443, 9000) e nada outro. Como o nome sugere, isso faz com que o desligamento do Apache não emita avisos espúrios, pois ele também deseja se conectar a si mesmo ao desligar. Ele também eliminará o problema instantâneo e permitirá a conexão fictícia interna.
setsebool -P httpd_graceful_shutdown 1