Ligando serviços ao host local e usando túneis SSH - os pedidos podem ser forjados?

2

Dado um servidor web típico, com Apache2, scripts PHP comuns e um servidor DNS, seria suficiente, do ponto de vista da segurança, ligar interfaces de administração como o phpmyadmin ao localhost e acessá-lo via túneis SSH?

Ou alguém, quem sabe por exemplo. que o phpmyadmin (ou qualquer outro script comumente disponível) está escutando em uma certa porta no localhost facilmente forjar pedidos que seriam executados se nenhuma outra autenticação estivesse presente?

  1. Em outras palavras: alguém em algum lugar da Internet poderia forjar uma requisição facilmente, para que o servidor aceitasse, pensando que ela era originária de 127.0.0.1 se o servidor estivesse ouvindo apenas 127.0.0.1?
  2. Se houvesse um risco, poderia ser de alguma forma tratado em um nível inferior ao da aplicação, por exemplo. usando iptables ? A idéia é que, se alguém encontrasse uma fraqueza em um script php ou apache, a rede ainda bloquearia essa solicitação porque ela não chegaria por meio de um túnel SSH?
por Martin 17.06.2012 / 15:15

2 respostas

1

... could somebody from somewhere in the internet easily forge a request, so that the webserver would accept it, thinking it originated from 127.0.0.1 if the server is listening on 127.0.0.1 only?

É possível, mas extremamente improvável. Pense desta forma: Quando um processo está escutando uma porta com destino a 127.0.0.1, um pacote IP de entrada só chegará ao processo se o endereço de destino do pacote for 127.0.0.1. A menos que o invasor tenha subvertido todos os roteadores entre ele e seu servidor, não há como um pacote desses ser roteado para o servidor, já que o 127.0.0.1 normalmente não é um endereço roteável.

Mas suponha que o impensável aconteça, e um pacote forjado para 127.0.0.1 chegue ao seu servidor. Nesse caso, o pacote teria que ter chegado em uma interface de rede que não é a interface de loopback ( lo ). Como, por convenção, todos os pacotes legítimos destinados a 127.0.0.0/8 devem chegar à interface lo , é fácil identificar e bloquear pacotes forjados para 127.0.0.0/8 com uma regra simples de iptables :

-A INPUT -d 127.0.0.0/8 ! -i lo -j DROP 
    
por 17.06.2012 / 19:22
3

Se você alterou o endereço de ligação de um processo para 127.0.0.1, isso deve ser suficiente para impedir qualquer acesso remoto de qualquer outra máquina. Se você tentar se conectar, receberá conexão recusada . Isso aparecerá (da perspectiva das máquinas remotas) exatamente como o processo está parado e a porta está fechada.

Para maior segurança, você pode adicionar regra (s) de iptables para bloquear essas portas de endereços remotos. Isso impedirá que você acidentalmente ative o acesso remoto alterando a configuração (por engano ou após uma atualização).

    
por 17.06.2012 / 15:33