Como posso bloquear todos os três ports no Ubuntu?

21

Como posso bloquear todas as portas, exceto 1962, 999, 12020?

Uma porta para o SSH e duas outras para um tipo de script. Então, é necessário permitir a saída nessas portas, certo?

Meus iptables:

# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*mangle
:PREROUTING ACCEPT [643521:136954367]
:INPUT ACCEPT [643521:136954367]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
:POSTROUTING ACCEPT [645723:99904505]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*filter
:INPUT ACCEPT [643490:136950781]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
-A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*nat
:PREROUTING ACCEPT [5673:734891]
:POSTROUTING ACCEPT [2816:179474]
:OUTPUT ACCEPT [2816:179474]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012

Desculpe, mas sou um novato de verdade quando se trata dessas coisas e só quero tornar meu servidor mais seguro.

    
por okapa 25.02.2012 / 19:05

2 respostas

24

No começo você deve sempre flush para ter certeza do que já está definido ... nada

iptables -F

Em seguida, defina a política padrão da cadeia INPUT como DROP se o fim for alcançado e nenhuma regra corresponder:

iptables -P INPUT DROP

Para garantir que o loopback não seja afetado, adicione

iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

para permitir todo o tráfego no tráfego lo-if e every incomming para conexões que você estabeleceu. Depois disso adicione todas as regras que você precisa para seus serviços (não se esqueça de abrir o ssh se você precisar dele! Caso contrário, você está fora) :

iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT 

Um pequeno truque que faço para evitar que eu e outras pessoas façam furos acidentais na segurança que finalmente adiciono:

iptables -A INPUT -j DROP

Esta linha corresponde a tudo para a cadeia INPUT e a política não deve receber nada. A vantagem disso é que, mesmo que você adicione uma regra ACCEPT algum dia depois de inicializar seu conjunto de regras, ela nunca será verificada porque tudo foi descartado antes. por isso, garante que você tenha que manter tudo em um só lugar.

Para sua pergunta, a coisa toda fica assim resumida:

iptables -F
iptables -P INPUT DROP
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT 
iptables -A INPUT -j DROP
    
por 25.02.2012 / 19:09
19

Uma resposta de um novato como você :-) Eu precisava proteger meu servidor Ubuntu também, aprender o iptables era uma dor que eu não conseguia aguentar. O UFW (Uncomplicated Firewall) é um programa para tornar a configuração do firewall o mais fácil possível.

  • instale o ufw:

    sudo apt-get install ufw
    
  • desabilite-a imediatamente (eu tive que resgatar a inicialização porque estava bloqueada no meu próprio login SSH):

    sudo ufw disable
    
  • definir "negar" como regra padrão (isso bloqueia todas as portas):

    sudo ufw default deny
    
  • permite as portas de que você precisa:

    sudo ufw allow to 1962
    sudo ufw allow to 999
    sudo ufw allow to 12020
    
    sudo ufw allow from 1962
    sudo ufw allow from 999
    sudo ufw allow from 12020
    
  • se tiver certeza de que as regras acima não quebram sua conexão ssh, ative o ufw:

    sudo ufw enable
    

Os documentos estão bem escritos e fornecem mais exemplos: link

    
por 27.02.2012 / 11:11