Por que é ruim ter portas abertas?

35

Aqui está algo que sempre me confundiu. Por que é ruim ter portas abertas no seu computador? Supondo que você não tenha um vírus em seu computador ou algum outro programa que esteja ouvindo uma porta que possa realmente fazer alguma coisa, por que isso importa se uma porta está aberta? Se alguma pessoa mal intencionada começar a enviar pacotes para uma porta, mas nada estiver lá para receber os dados e fazer algo com ela, por que isso importa? Um computador não apenas executa arbitrariamente quaisquer dados que recebe. Eu entendo que inundar um computador com pacotes pode fazer com que ele falhe porque ele simplesmente não consegue lidar com a quantidade de dados, mas estou considerando apenas os problemas de segurança que realmente alteram os arquivos no computador.

Atualizar

Obrigado pelas respostas até agora. Eu entendo agora que uma porta sendo aberta na verdade significa que há um programa que pode ser explorado escutando 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, então, um desses arquivos precisaria ser executado. Parece que seria incrivelmente difícil permitir acidentalmente.

    
por aireq 13.12.2009 / 01:12

8 respostas

36

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

A razão pela qual é de má forma ter todas as portas abertas para todos os lugares é que expõe os serviços que estão escutando nessas portas para explorar. É por isso que existem firewalls, para limitar o que é permitido conectar-se a certas 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 criar um software que não é explorável:

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

Execução de código arbitrário / remoto é um risco enorme, como você apontou. Infelizmente, estouro de buffer e outras falhas de segurança que 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.

    
por 13.12.2009 / 01:29
9

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

Thanks for the replies so far. I understand now, that a port being open actually means there is a program that can be exploited listening on that port. But why is it so hard to write software that can't be exploited? To do any real harm to a computer wouldn't a program have to allow one or more files to be uploaded, and then one of those files would need to be executed. It seems like that would be incredibly hard to allow accidentally.

É muito difícil escrever softwares que não podem ser explorados!

Eu li o livro Construindo Software Seguro e Uma das coisas discutidas foi explorar os overflows de pilha. Havia dois fatos muito assustadores lá:

  • Para um programa ter um erro de estouro de pilha explorável é muito fácil de fazer, 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 tem que tomar medidas especiais para ser seguro.
  • A exploração que um hacker precisa usar é curta - muito curta. Era menos da metade de uma página de linguagem assembly, que se traduz em 100 ou mais (palpite) bytes de código de máquina. Esse código de exploração é suficiente para fornecer ao shell hacker (prompt de comando) acesso à sua máquina. Não é necessário nenhum upload e execução de arquivos grandes - apenas um minúsculo 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 um par de 100 bytes em seu buffer, seu computador será pwned. Felizmente, o conhecimento sobre bugs de estouro de pilha é um conhecimento bastante comum agora, mas eles ainda aparecem. Há 5 anos e mais este era um problema muito mais frequente.

Voltando à sua pergunta original, você deve evitar as 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 então é outra porta aberta. Se você tem um firewall que está bloqueando tudo, exceto que você tenha especificamente permitido, você também bloquearia esse shell remoto (embora um hacker ainda possa fazer outras coisas desagradáveis em seu computador, então não seja complacente!)

    
por 13.12.2009 / 23:20
6

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

    
por 13.12.2009 / 01:27
6
  • Porta aberta: Quando alguém pergunta, o computador responde que há um serviço escutando nessa porta. Isso significa que qualquer coisa que chegar a essa porta será processada por um programa (um serviço) em execução nesse computador.
  • Porta fechada: Quando alguém pergunta, o computador responde que não há serviços ouvindo nessa porta. O akser saberá que há um computador respondendo no endereço.
  • Porta invisível: Quando alguém pergunta, não recebe resposta. O ponto é esconder se há um computador no endereço em tudo. Pode não ser muito eficaz, já que joschi aparece nos comentários.

Se você tiver uma porta aberta, estará seguro, desde que o programa que processa a entrada não tenha explorações disponíveis. Mas exploits são encontrados o tempo todo, e é bom saber que há muitas verificações de portas percorrendo a rede, procurando por alvos.

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

Do ponto de vista da segurança, qualquer porta aberta é um grande buraco, já que 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.

    
por 13.12.2009 / 12:51
3

Assuming you don't have a virus on your computer or some other program listening to a port that may actually do something why does it matter if a port is open? If some malicious person starts sending packets to a port, but nothing is there to receive the data and do something with it why does it matter?

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

não é seguro do que remediar ... aqui está bom ler para você em makeuseof.com:

Tecnologia explicada: Open Portas do roteador & Suas implicações de segurança

    
por 13.12.2009 / 01:27
1

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

Se você tem apps ouvindo apenas as portas 9, 21 e 80, e seu firewall bloqueia o acesso a essas três portas, tecnicamente você não tem portas abertas. IOW, a porta 25, por exemplo, não está aberta porque nada está escutando.

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

    
por 13.12.2009 / 01:33
0

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

    
por 13.12.2009 / 04:33
-2

Digamos que as portas abertas são como janela aberta e porta aberta, mas quando as 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 Editado sem asinine Portas abertas são como janela aberta mas na internet há uma porta aberta Eu acho que também portas fechadas são janelas fechadas sem ela não podemos conectar ou navegar Eu acho que assim como HTTP e SSH ou FTP sem ela nós não podemos conectar porque é um cliente é apenas conexão TCP

Eu não sou especialista em segurança

    
por 19.01.2017 / 14:49