TL; DR : Sim, os dados podem ser enviados para uma porta sem escuta do seu computador, mas é inútil. E isso não pode ser feito fora de sua casa / escritório / swhool / o que for.
Há dois aspectos para isso:
-
Sua LAN não é roteada da Internet. Nenhuma LAN é. Se eu tentasse enviar dados para um endereço IP de LAN aleatório, como
10.42.17.172
, esses dados não encontrariam seu destino porque os roteadores da Internet diriam literalmente "Ei, eu não recebi pagamento por isso!" e colocá-lo no lixo. A única maneira pela qual os dados podem ser roteados para um IP da LAN é se esse IP estiver na mesma LAN >> do remetente. -
Os dados enviados para uma porta sem escuta são descartados ou explicitamente recusados . Por padrão, se você enviar dados para uma porta que não esteja ouvindo, o seu computador informará educadamente que não se importa. Outras configurações podem tê-lo esnobe (como
iptables -P INPUT DROP
).
A única maneira que isso pode causar danos é se um invasor tiver como alvo uma vulnerabilidade conhecida do seu sistema operacional, em relação à manipulação de pacotes IP de entrada indesejados.
EDIT : Como apontado por Sander Steffman, isso não é verdade para todas as LANs. Eu generalizei para uma LAN o que realmente se aplica ao intervalo de IP privado . Uma LAN que não use esses IPs será encaminhada para a Internet, isso é o que permite que os servidores da Web façam seu trabalho (eles estão na LAN do datacenter, mas ainda podem ser acessados pela Internet).
A maior parte do software em um computador doméstico (como o avast! ou o Firefox) não escutará uma porta (ou apenas permitirá conexões do mesmo computador) para acessar um recurso de rede, e usará portas aleatoriamente atribuídas pelo sistema operacional. Enviar dados mal-intencionados dessa maneira é mais difícil para terceiros, já que eles terão que se passar pelo recurso com o qual você está se comunicando.
As portas de escuta aguardam por conexões de entrada, que podem vir de qualquer lugar. Eles são criados por programas severos como Apache ou SSHD. No entanto, eles só funcionarão se os dados que receberem forem os dados esperados, ou seja, se eu usar o protocolo correto. Se eu tentar me comunicar com o Apache usando o protocolo SSH, não receberei nada de útil. Programas bem feitos recusarão corretamente dados errados.