Quais portas devem ser deixadas abertas em um servidor web?

7

Vou tentar implantar meu primeiro aplicativo da web em breve, então minha experiência está em falta. Lembro-me de ler em algum lugar que as varreduras de portas feitas por bots acontecem poucos minutos depois de serem expostas à Internet (talvez seja o tempo necessário para que um sistema Windows 95 seja comprometido, já faz um tempo desde que li o artigo). Este servidor em particular está executando a edição do servidor Ubuntu 9.10 em amd64.

O aplicativo da web em si deve estar totalmente em https, de acordo com essa pergunta Eu apenas perguntei aqui . Além disso, o site tem uma seção de upload de arquivos, agora feita através de http post, e esse arquivo é eventualmente enviado através de uma interface separada (sem fio, infelizmente) para outro computador para lidar com o processamento real.

Assim, na interface de rede real exposta ao mundo, estou pensando que as portas 80 e 443 devem ser expostas e nada mais. Como eu disse antes, 80 deveria redirecionar para 443. Isso é sensato? Há outra coisa que eu não sei, alguma outra porta que eu deveria ter ativo? Os arquivos são movidos para o sistema de processamento usando o DRB Ruby através das portas 9000 e 9001, então eles precisam ser abertos também, mas somente na segunda interface.

Além disso, qual programa de firewall devo usar para lidar com duas interfaces de rede como essa? Existem alguns listados aqui , mas não tenho certeza de qual é o apropriado para servir páginas da Web ou mesmo se este for um caso especial.

    
por mmr 09.02.2010 / 05:28

2 respostas

4

parece correto, se você estiver veiculando apenas https, esse é o que você precisa deixar em aberto. no entanto, somente o aplicativo iniciado com uma conta raiz pode ouvir as portas abaixo de 1024, então você tem duas opções aqui:

  • inicie seu aplicativo ruby como root - não é uma boa ideia
  • está atrás do apache - pode ser melhor, mas depende do que você deseja fazer, isso pode ser apenas uma sobrecarga adicional
  • execute o aplicativo ruby como outro usuário em uma porta diferente, digamos 8443 e tenha o iptables para encaminhar solicitações de 443 para 8443 - isso, eu acho, é o que você quer fazer

abaixo é como você faz o encaminhamento de porta (você pode fazer o mesmo com 80 a 8080, por exemplo):

iptables -t nat -A PREROUTING -i $EXT_IF -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443

diferente disso, não há necessidade de abrir nenhuma outra porta para a internet, apenas certifique-se de deixar o ssh aberto na outra interface, para que você possa acessar e gerenciar o servidor.

como para o aplicativo de firewall, o iptables vem com o Ubuntu e apenas o usa, não há necessidade de nenhuma outra ferramenta sofisticada que eu diga.

    
por 09.02.2010 / 06:54
2

Você está certo em que apenas as portas 80/443 precisam ser expostas. Todo o resto deveria estar fechado. Você precisará do seu firewall para fazer algumas coisas.

  1. Limite de conexão e limite de taxa. Você quer que seu firewall seja capaz de desacelerar as coisas no caso de um ataque DDoS ou tentativas repetidas de bater na porta ou coisas do tipo.
  2. Bloqueie todo o tráfego desnecessário. Isso pode ajudar caso sua máquina seja comprometida, pois a maioria dos bots precisa se conectar a um servidor de comando e controle remoto.
  3. Bloqueia todas as outras portas de entrada. Você deve realmente bloquear todo o resto, apenas no caso de um invasor conseguir instalar algum aplicativo e abrir uma porta de back-door.

Esses são alguns pensamentos. Eu não tenho nenhuma recomendação específica de software. Talvez a leitura do LARTC possa ajudar.

    
por 09.02.2010 / 06:50