Por que é ruim ter portas abertas?


36

Aqui está algo que sempre me deixou perplexo. Por que é ruim ter portas abertas no seu computador? Supondo que você não tenha um vírus no seu computador ou algum outro programa que esteja ouvindo uma porta que possa realmente fazer algo, por que importa se uma porta está aberta? Se uma pessoa mal-intencionada começa a enviar pacotes para uma porta, mas não há nada para receber os dados e fazer algo com eles, por que isso importa? Um computador não executa arbitrariamente quaisquer dados que recebe. Entendo que inundar um computador com pacotes pode causar um travamento, porque simplesmente não pode lidar com a quantidade de dados, mas só estou considerando problemas de segurança que realmente alteram os arquivos no computador.

Atualizar

Obrigado pelas respostas até agora. Entendo agora que uma porta aberta realmente significa que existe um programa que pode ser explorado ouvindo nessa porta. Mas por que é tão difícil escrever software que não pode ser explorado? Para causar algum dano real a um computador, um programa não teria que permitir o upload de um ou mais arquivos e, em seguida, um desses arquivos precisaria ser executado. Parece que isso seria incrivelmente difícil de permitir acidentalmente.

Respostas:


36

Uma porta não está aberta se algo não estiver escutando uma conexão nela.

A razão pela qual é péssimo ter todas as portas abertas para todos os lugares é que ela expõe os serviços que estão escutando nessas portas a explorações. É por isso que existem firewalls, para limitar o que é permitido conectar a determinadas portas, para reduzir a área de superfície exposta pelos serviços.


EDITAR

Para responder à sua pergunta sobre por que as pessoas não podem simplesmente escrever software que não é explorável:

Isso é bastante fácil para programas simples, mas muitos programas que exigem um soquete são complexos. Como tal, eles têm muitos componentes, muitos dos quais nem mesmo são escritos pelo desenvolvedor (bibliotecas incluídas). Você não pode confiar em outras pessoas para manter sua rede segura quando existem métodos de proteção que você pode usar, como firewalls.

A execução arbitrária / remota de código é um risco enorme, como você apontou. Infelizmente, os estouros de buffer e outras falhas de segurança que permitem isso são comuns. Olhe para qualquer atualização de segurança da Microsoft e aposto que ela corrige a execução remota de código ou a elevação de privilégios, e a MS é uma empresa enorme, com centenas de desenvolvedores e bilhões de dólares.


4
Apenas acrescentando: Se você, por exemplo, saber que um serviço tem um bug que pode ser usado para código infiltrado ou o que quer e você realmente ver que este serviço está sendo executado, este é um convite aberto;)
Felix

9

Em relação à atualização que você escreveu:

Obrigado pelas respostas até agora. Entendo agora que uma porta aberta realmente significa que existe um programa que pode ser explorado ouvindo nessa porta. Mas por que é tão difícil escrever software que não pode ser explorado? Para causar algum dano real a um computador, um programa não teria que permitir o upload de um ou mais arquivos e, em seguida, um desses arquivos precisaria ser executado. Parece que isso seria incrivelmente difícil de permitir acidentalmente.

É muito difícil escrever um software que não possa ser explorado!

Eu li o livro Building Secure Software e uma das coisas discutidas foi explorar o excesso de pilha. Havia dois fatos muito assustadores lá:

  • Para um programa ter um bug de estouro de pilha explorável, é muito fácil, especialmente quando o programa é escrito em C. Na linguagem de programação C, muitas funções não são seguras por padrão e o programador precisa saber para evitar as funções vulneráveis. , ou precisa executar ações especiais para estar seguro.
  • A exploração que um hacker precisa usar é curta - muito curta. Era menos de meia página da linguagem assembly, que se traduz em 100 bytes (suposição) de código de máquina. Esse código de exploração é suficiente para conceder ao shell do hacker (prompt de comando) acesso à sua máquina. Não é necessário fazer upload e execução de arquivos grandes - apenas um pequeno pedaço de código que pode ser inserido no meio de dados legítimos.

Portanto, se um hacker puder encontrar um programa que (a) tenha um bug de estouro de pilha que seja (b) explorável em uma rede e (c) tenha alguns 100 bytes de reserva em seu buffer, o computador estará conectado. Felizmente, o conhecimento sobre erros de estouro de pilha é um conhecimento bastante comum agora, mas eles ainda aparecem. Há cinco anos e mais, esse era um problema muito mais frequente.

Voltando à sua pergunta original, você deve evitar portas abertas para evitar qualquer acidente com um bug explorável em um programa. Agora você tem um segundo motivo: o shell remoto que um hacker usaria é outra porta aberta. Se você tem um firewall que está bloqueando tudo, exceto o permitido especificamente, também bloqueia esse shell remoto (embora um hacker ainda possa fazer outras coisas desagradáveis ​​ao seu computador, portanto, não seja complacente!)


2
IIRC, Donald Knuth acabado de matematicamente provando que um dos programas mais pequenos, escreveu ele estava livre de bugs, e levou anos-homem (?)
RCIX

7
  • Porta aberta: quando alguém pergunta, o computador responde que há um serviço escutando nessa porta. Isso significa que qualquer coisa que chegue a essa porta será processada por um programa (um serviço) em execução no computador.
  • Porta fechada: quando alguém pergunta, o computador responde que não há serviços escutando nessa porta. O akser saberá que há um computador respondendo no endereço.
  • Porta secreta: quando alguém pergunta, não recebe resposta. O ponto é ocultar se houver um computador no endereço. Pode não ser muito eficaz, como joschi descreve nos comentários.

Se você tiver uma porta aberta, estará seguro, desde que o programa que processa o material recebido não tenha explorações disponíveis. Mas as explorações são encontradas o tempo todo, e é bom saber que existem muitas varreduras de portas viajando pela rede, procurando alvos.

As portas fechadas ainda respondem ao akser, portanto, o possível invasor pode continuar verificando outras portas. Então, novamente, é assim que a internet é específica para funcionar. Embora as portas furtivas tentem não fornecer informações ao invasor em potencial, em teoria elas quebram a especificação.

Do ponto de vista da segurança, qualquer porta aberta é um enorme buraco, pois o código está sendo usado para processar dados externos. O que um firewall (ou um roteador NAT) faz é garantir que nenhum tráfego de entrada chegue ao seu computador, mesmo que o sistema tenha algumas portas abertas. Dessa forma, eles efetivamente fecham todas as portas.


1
Sua definição de "porto secreto" é uma ilusão. Na verdade, um invasor sabe que existe um computador se não receber nenhuma resposta. Se não houvesse computador nesse endereço IP específico, o roteador anterior enviaria uma mensagem sobre isso. Com "portas stealth" que não acontecer ...
Joschi

@joschi: Bem, é um conceito que eu já vi pela internet, então acho que é bom defini-lo. Você faz uma boa observação, no entanto. Eu editei a resposta para refletir seu comentário. Pelo menos faz o IP de destino parecer estar atrás de um roteador NAT, eu acho. Eu nunca fui fã do conceito: se você tem portas abertas, verifique se eles estão executando um serviço seguro. E se você não tem portas abertas, não há problema em dizer à rede que você existe. Discrição cheira a hype de segurança para mim.
Ilari Kajaste 13/12/2009

Joschi: nem todos os roteadores fazem isso. muitos roteadores simplesmente encaminham às cegas para endereços IP onde não há sistema. as tentativas de conexão atingem o tempo limite simplesmente porque o cliente se cansa de tentar fazer um handshake de três vias.
22410 as

6

Na verdade, até onde eu sei, uma porta aberta significa que um programa está ouvindo. Portanto, há algum tipo de serviço processando os dados.


3

Supondo que você não tenha um vírus no seu computador ou algum outro programa que esteja ouvindo uma porta que possa realmente fazer algo, por que importa se uma porta está aberta? Se uma pessoa mal-intencionada começa a enviar pacotes para uma porta, mas não há nada para receber os dados e fazer algo com eles, por que isso importa?

Suposição é a mãe de todos os efeitos :)

bastante seguro do que remediar ... aqui está uma boa leitura para você em makeuseof.com:

Tecnologia explicada: portas de roteador abertas e suas implicações de segurança


uma boa leitura curta.
DaveParillo

1

Não sou exportador de segurança, mas fiz uma pequena pesquisa ... Uma porta "aberta" é uma porta configurada para aceitar uma conexão TCP de entrada.

Se você tiver aplicativos ouvindo apenas nas portas 9, 21 e 80 e seu firewall bloquear o acesso a essas três portas, tecnicamente não haverá portas abertas. IOW, porta 25, por exemplo, não está aberta porque nada está escutando nela.

Para responder à sua pergunta: A razão pela qual é ruim ter portas abertas no computador é porque essas portas podem ser facilmente descobertas e, uma vez descobertas, essas portas agora são suscetíveis a vulnerabilidades dos aplicativos de escuta.


Sua definição do que é uma porta está incorreta. Uma porta não está limitada ao TCP, por qualquer meio.
21413 MDMarra

1
Suponho que não se deva acreditar em TUDO que lê na net :) 5 dos 6 principais resultados do Google declaram explicitamente "TCP" em sua definição. google.com/…
Shoeless

Não, eles dizem TCP / IP. Grande diferença. TCP / IP inclui UDP
MDMarra 13/12/2009

1
O ICMP não usa uma porta, é um protocolo de camada 3 incluído no conjunto de protocolos IP.
MDMarra

1
A única razão pela qual digo isso é que é muito importante em referência aos firewalls (sobre os quais isso se refere indiretamente). O TCP é stateful e, portanto, as conexões são lembradas, onde o UDP não é. Muitas vezes, isso significa que as portas devem estar abertas para o tráfego UDP de retorno iniciado internamente, onde isso não precisa acontecer nas conexões TCP estabelecidas internamente.
214 MDMarra

0

Pela mesma razão que você fecha e tranca suas portas e janelas em casa.


3
Eu tranco minhas portas e janelas porque está frio lá fora. o que essa pergunta tem a ver com isolamento?
quack quixote

2
Suas portas e janelas não isolam se estiverem fechadas? O parafuso extra realmente fornece muito mais isolamento.
Dentrasi

Bom ponto, mas vale a pena notar que nem todos trancam suas portas e janelas em casa. Pode ser "Nem todo mundo quer proteger sua propriedade" ou "Nem todo mundo gosta de viver em uma cultura de medo", dependendo do seu ponto de vista.
Ilari Kajaste

-2

Digamos apenas que portas abertas são como janelas e portas abertas, mas quando suas janelas estão abertas, um ladrão ou um rato e uma aranha podem entrar # por favor, diga-me se eu sou burro ou asinino Edited no asinine Portas abertas são como janelas abertas, mas na internet existe uma porta aberta eu acho que também porta fechada são janelas fechadas sem ele não podemos conectar ou navegar acho que como HTTP e SSH ou FTP sem ele não podemos conectar porque é um cliente é apenas conexão TCP

Não sou especialista em segurança


Portas abertas são necessárias para oferecer serviços. Apenas um dentre um zilhão de exemplos possíveis: o Gmail usa uma porta aberta (443 para o site deles usando HTTPS). Mas ele pede que você efetue login antes de mostrar qualquer coisa.
Arjan #
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.