Como configurar o CentOS Iptables sem ficar bloqueado

5

Estou tentando aplicar essas regras de firewall:

/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -P INPUT DROP
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
/sbin/iptables -A INPUT -m state --state INVALID -j DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
/sbin/iptables -A OUTPUT -m state --state INVALID -j DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -p tcp ! --syn -j REJECT --reject-with tcp-reset
/sbin/iptables -A FORWARD -m state --state INVALID -j DROP
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/sbin/iptables -A FORWARD -i lo -o lo -j ACCEPT
/sbin/iptables -t mangle -F
/sbin/iptables -t mangle -X
/sbin/iptables -t mangle -Z
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
/sbin/iptables -t nat -Z
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 12443 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 11443 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 11444 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 8447 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 8443 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 8880 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 21 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 22 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 587 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 465 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 995 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 143 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 993 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 106 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 5432 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 9008 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 9080 -j DROP

/sbin/iptables -A INPUT -p udp --dport 137 -j DROP
/sbin/iptables -A INPUT -p udp --dport 138 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 139 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 445 -j DROP

/sbin/iptables -A INPUT -p udp --dport 1194 -j DROP




/sbin/iptables -A INPUT -p tcp --dport 26 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 53 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 2095 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 2096 -j ACCEPT

/sbin/iptables -A INPUT -p udp --dport 465 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 26 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 37 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 43 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 113 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 465 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 873 -j ACCEPT

/sbin/iptables -A OUTPUT -p tcp --dport 2089 -j ACCEPT

/sbin/iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

/sbin/iptables -A OUTPUT -p udp --dport 465 -j ACCEPT

/sbin/iptables -A OUTPUT -p udp --dport 873 -j ACCEPT




/sbin/iptables -A INPUT -p icmp --icmp-type 8/0 -j DROP

/sbin/iptables -A INPUT -j DROP

/sbin/iptables -A OUTPUT -j ACCEPT

/sbin/iptables -A FORWARD -j DROP

No entanto, quando copio e colo na linha de comando, fico bloqueado do servidor (claro, já que as regras estão sendo aplicadas linha por linha). Como aplico essas regras de uma só vez desde / sbin / iptables -P INPUT DROP é executado primeiro, mas a linha para permitir o acesso ao shell vem depois (eu removi isso para proteger o meu IP.

    
por cappuccino 13.08.2011 / 18:10

5 respostas

4

Eu não estaria tentando executá-los, colando-os no terminal. Eu scp-los e executá-los a partir de um único script (poderia ser apenas um script bash com todos eles colados em.

Com apenas a quantidade de dados que você tem lá, eu tive situações em que colá-los em um terminal ssh na verdade levou a uma perda de dados (como em algumas linhas que foram perdidas). em algo assim, isso realmente não é uma boa ideia. Obviamente, a probabilidade de isso acontecer depende da qualidade do link e da largura de banda.

Além disso, se você estiver brincando com o iptables e estiver com medo de se trancar, configure um script para limpar o iptables (ou configure-o para algo que esteja feliz) e, em seguida, defina um cron job para executá-lo. , ou tem outra janela aberta enquanto você está aplicando as regras e apenas "dormir 100 & ./cleariptables" ou algo para esse efeito. Ctrl + c quando novas regras foram bem sucedidas e você tem certeza que ainda pode se logar. Sempre tente fazer uma nova conexão ssh você pode ter bloqueado novas conexões ssh e a atual está apenas funcionando como já está estabelecido

    
por 13.08.2011 / 19:23
3

Tente mover o /sbin/iptables -P INPUT DROP para o final do arquivo. Se isso não funcionar, salve as regras em um arquivo e use o comando iptables-restore.

sudo iptables-restore </file/you/created

Depois disso, salve suas regras em / etc / sysconfig / iptables

sudo /sbin/service iptables save

para que eles sejam carregados quando o sistema for iniciado em seguida.

Se a restauração do iptables não funcionar, salvar as regras manualmente em /etc/sysconfig/iptables e reiniciar o serviço funcionará

sudo /sbin/service iptables restart

O arquivo de entrada para o iptables-restore pode ser

*filter
-F
-X
-Z
-P INPUT DROP
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
-A INPUT -m state --state INVALID -j DROP
# Add the rest of your INPUT/OUTPUT/FORWARD rules before the commit
COMMIT
*mangle 
-X
-F
-Z
-P PREROUTING ACCEPT
#Add the rest of the mangle rules
COMMIT
*nat
-X
#add the rest of your nat rules
COMMIT
    
por 13.08.2011 / 18:58
2

Outra maneira de não ser bloqueado é carregar suas novas regras, dormir por x segundos e testar durante o sono e, em seguida, carregar as regras antigas que funcionaram caso suas novas regras não funcionem.

# load_new_rules; sleep 120; load_old_rules

Uma boa maneira de não se bloquear quando estiver trabalhando em um firewall remoto ao qual você não tem acesso ao console remoto.

    
por 13.08.2011 / 22:36
1

Em outra caixa linux, configure via console todas as regras e políticas do iptables. Salve-o em um arquivo usando o comando iptables-save. Copie o arquivo para a sua máquina remota e aplique usando:

iptables-apply -t 300 name-of-file

o 300 é o tempo limite. O iptables-apply aplicará todas as regras do arquivo, aguardará sua confirmação e, se não houver confirmação em 300 segundos, restaurará as regras e políticas anteriores.

    
por 13.08.2011 / 21:33
1

Aqui está o que eu faço:

1.) Nunca salve as regras do iptables "serviço iptables salvar" então se você alguma vez se bloquear, uma reinicialização não carregará as mesmas regras ruins novamente antes que você tenha uma chance de reconectar e corrigir o problema. Isso, obviamente, exigirá uma carga manual de suas regras após cada reinicialização. Uma abordagem alternativa seria seguir em frente e salvar as regras, mas não configurar o serviço iptables para iniciar na inicialização do sistema e depois iniciar manualmente o serviço após cada reinicialização.

2.) Adicione algumas regras perto da parte superior do conjunto de regras para sempre aceitar conexões de alguns intervalos de host que sejam semi-seguros (sua casa / escritório) para que as seguintes regras adicionadas nunca o bloqueiem:

iptables -A INPUT -s 83.225.0.0/16 -j ACCEPT
iptables -A INPUT -s 75.102.0.0/16 -j ACCEPT
iptables -A INPUT -s 37.122.0.0/16 -j ACCEPT
    
por 12.01.2014 / 18:26

Tags