monit, acesso http com quatro tipos de credenciais diferentes, um usando o PAM

0

monit 5.25.2

Estas são as nossas configurações de credenciais:

set httpd port 2812
allow localhost
allow guest:guest read-only
allow @wheel
allow cleartext /opt/monit/htpasswd

Fundamentação:

  • localhost para ativar monit status
  • guest: guest para ativar o acesso à web, somente leitura, para todos, como guest
  • @wheel para ativar o acesso web, completo, para os usuários locais, grupo roda
  • cleartext para ativar o acesso à web, completo, para um par de usuários que não estão no host

Eu leio os documentos e tento "embaralhar" as configurações (suspiro), mas não consigo entender como consertar o problema usual: apenas um desses dois usos está funcionando:

  • da linha de comando, status monit
  • acesso à web a partir de um PC cliente (o endereço IP não é o próprio host)

UPDATE

Eu me deparei com duas questões:

  • permitir localhost

Sem ele, todos os clientes que o pc pode acessar, mas monit status não funciona.

Usando 'allow localhost', ele bloqueia os clientes, então temos que especificar também:

allow 10.0.0.0/8

IMHO isso não está claro nos documentos.

  • testes do cliente pc ... cuidado com as credenciais

Tentando acessar o monit do PC, o navegador armazena as credenciais em cache ... para que esses testes possam ser enganosos.

UPDATE

Eu encontrei o problema:

strace -s 512 -e connect,write /opt/monit/bin/monit status  2>&1 |more

connect(4, {sa_family=AF_INET, sin_port=htons(2812), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)

write(4, "POST /_status HTTP/1.0\r\nContent-Type: application/x-www-form-urlencoded\r\nCookie: securitytoken=88521284dfbc7acea0521e16e11356d1\r\nContent-Length: 58\r\n\
r\nformat=text&securitytoken=88521284dfbc7acea0521e16e11356d1", 209) = 209

write(2, "You are not authorized to access monit..."

Por que ele envia o cookie: securitytoken =?

Na configuração que definimos

allow guest:guest read-only

Se eu fizer a solicitação HTTP com as credenciais guest , funcionará:

"GET /_status?format=text HTTP/1.0\r\nAuthorization:Basic Z3Vlc3Q6Z3Vlc3Q=\r\n\r\n"
    
por Massimo 11.09.2018 / 16:57

1 resposta

0

Eu abro um ticket e os desenvolvedores descobriram que é um bug.

Eles estão trabalhando nisso.

link

    
por 12.09.2018 / 11:43