condicionais do OpenBSD httpd.conf

4

Observação: essa pergunta é sobre o servidor HTTP integrado do OpenBSD chamado httpd e sua configuração. Não se aplica a nenhum outro servidor da Web.

É possível fazer configurações condicionais de tempo de execução do novo servidor http do OpenBSD httpd ? Um exemplo ingênuo seria

server "myserver.com" {
  if $REMOTE_ADDR == "127.0.0.1" block drop
}

para proibir o acesso local.

Outro exemplo, talvez mais relevante e esclarecedor, seria no caso de eu estar implementando uma interface para um serviço remoto que é executado em um local específico, então eu me beneficiaria de algo como

remote_service1_ip = "192.168.0.1"
server "myserver.com" {
  location "/remote_service1_api/" {
    if $REMOTE_ADDR != $remote_service1_ip block drop
  }
}

Se isso for possível, qual é a maneira correta de fazer isso?

Mais geralmente - há várias macros predefinidas na man -page de OpenBSD- httpd.conf conforme descrito no block :

$DOCUMENT_URI
    The request path.
$QUERY_STRING
    The optional query string of the request.
$REMOTE_ADDR
    The IP address of the connected client.
$REMOTE_PORT
    The TCP source port of the connected client.
$REMOTE_USER
    The remote user for HTTP authentication.
$REQUEST_URI
    The request path and optional query string.
$SERVER_ADDR
    The configured IP address of the server.
$SERVER_PORT
    The configured TCP server port of the server.
$SERVER_NAME
    The name of the server.
%n
    The capture index n of a string that was captured by the enclosing location match option.

e gostaria de saber como usá-los. Usar $REMOTE_ADDR em um contexto de redirecionamento parece um pouco bobo para mim, e eu acho que deve haver algo mais para usá-los, mas não consigo encontrar ou entender qualquer caso de uso na documentação.

    
por Bex 08.04.2016 / 15:00

1 resposta

4

enquanto httpd suporta o uso de patterns no contexto de algumas palavras-chave ( alias match , location match , server match ) a funcionalidade que você está procurando não está implementada em httpd .

vejo duas maneiras de perceber suas intenções:

  1. crosspost na lista de e-mail openbsd-misc - um dos autores de httpd pode buscá-lo lá
  2. use o pf para o firewall. Eu recomendo strongmente este caminho por várias razões, incluindo
    • grau superior de proteção contra tipos de ataques de negação de serviço, pois o aplicativo ( httpd ) não precisa receber nenhuma carga
    • pacotes de clientes podem ser inspecionados e bloqueados em um nível global ( IP ) - ou seja, um cliente de inundação pode não se conectar à ssh port

na minha opinião, pf pode ser uma coisa muito gratificante de se aprender.

Além disso, eu suspeito que uma possível resposta a um post correspondente no openbsd-misc seja semelhante à minha recomendação:)

    
por 12.04.2016 / 02:47