... 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