Iptables mais louco que o Batman [RESOLVIDO]

13. Re: Iptables mais louco que o Batman [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 15/08/2014 - 18:00h

Várias coisas podem estar acontecendo. Verifique cada uma delas.

1 - Quando você pára o Firewall você não está limpando todas as tabelas, inclusive a NAT que é a que faz o redirecionamento para o SQUID.

2 - Você pode ter configurado seu proxy manualmente nos PC's. Nesse caso nem precisa da regra para redirecionamento (Se realmente não for usar proxy transparente)

3 - Ao iniciar o firewall todas as portas especificadas são redirecionadas para o Squid, porém o mesmo não está em modo transparente, nem configurado para tratar DNS, FTP, etc.


Fiz algumas mudanças que julguei necessárias. Analise como ficou.

#!/bin/sh
#ip-guardian

echo ""
uname -s -r -m -o
echo ""
echo " FIREWALL RAFITEC -- Firewall Iptables"
echo ""


firewall_start(){

echo ""
echo " Iniciando as Regras do Firewall .............................................."
echo ""

echo " Ativando o IP forward ................................................. [ OK ]"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo " Protegendo contra Pings ( ignorando ) ................................. [ OK ]"
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo " Protegendo contra IP spoofing ......................................... [ OK ]"
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo " Protegendo contra diversos ataques .................................... [ OK ]"
echo 1 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo " Protegendo contra bogus responses ..................................... [ OK ]"
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo " Protegendo contra IP synflood ......................................... [ OK ]"
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

echo " Protegendo contra ICMP Broadcasting ................................... [ OK ]"
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo " Protegendo contra alteracao de rota ................................... [ OK ]"
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

echo " Protegendo contra Pings da Morte ...................................... [ OK ]"
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT


echo " Definindo Politica Padrao ...................................................."
echo ""
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

echo " Limpando Regras Anteriores ............................................ [ OK ]"
echo ""
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -t raw -F

echo " Redirecionando portas para o SQUID (Proxy Transparente) ............... [ OK ]"
iptables -t nat -A PREROUTING -i eth1 -m multiport -p tcp --dports 21,80,443,53 -j REDIRECT --to-port 3128

echo " Compartilhando a internet via IPTABLES .................................[ OK ]"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


echo " Liberando acesso FTP, HTTP, HTTPS, DNS, através do SQUID ........... [ OK ]"
iptables -A INPUT -p tcp -i eth1 -m multiport --dports 21,80,443,53 -j ACCEPT


# Lembre de configurar o FTP e especificar os endereços DNS dentro do squid.conf

echo " Liberando acesso NTP ............................................... [ OK ]"
iptables -A FORWARD -p tcp -i eth1 --dport 123 -j ACCEPT

echo " Liberando acesso a E-MAIL ............................................. [ OK ]"
iptables -A FORWARD -p tcp -i eth1 -m multiport --dports 25,110,143,465,587,993,995 -j ACCEPT

# Veja as portas de E-mail em http://scuderiaserver.com.br/2012/05/configurando-programas-de-email/

echo " Protegendo contra traceroute .......................................... [ OK ]"
iptables -A INPUT -p udp --dport 33435:33525 -j LOG --log-prefix "_BLOCKED_: "
iptables -A INPUT -p udp --dport 33435:33525 -j DROP

echo " Protegendo contra portscanners, ping of death, ataques DoS, etc. ...... [ OK ]"
iptables -A INPUT -m state --state INVALID -j LOG --log-prefix "_BLOCKED_: "
iptables -A INPUT -m state --state INVALID -j DROP

echo " Liberando conexao SSH ..................................................[ OK ]"
iptables -A INPUT -p tcp -m tcp --dport 22 -i eth0 -j ACCEPT

echo " Fechando portas UDP 1:1024 ............................................ [ OK ]"
iptables -A INPUT -p udp --dport 1:1024 -j LOG --log-prefix "_BLOCKED_UDP_: "
iptables -A INPUT -p udp --dport 1:1024 -j DROP

echo " Permitindo respostas a conexoes iniciadas pela maquina ................ [ OK ]"
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

echo " Permitindo respostas a conexoes iniciadas pela rede ................ [ OK ]"
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT


echo " Liberando a interface de loopback ..................................... [ OK ]"
iptables -A INPUT -i lo -j ACCEPT

echo " Bloqueando qualquer conexao que nao tenha sido permitida acima ........ [ OK ]"
iptables -A INPUT -p tcp --syn -j LOG --log-prefix "_BLOCKED_: "
iptables -A INPUT -p tcp --syn -j DROP

echo " Firewall em operacao .................................................. [ OK ]"


sleep 1

}

firewall_stop(){

iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -t raw -F


}

case "$1" in

"start")
firewall_start
;;

"stop")
firewall_stop
echo " Desativando todas as Regras do Firewall ................................ [ OK ]"
echo " firewall disabled "
sleep 1
;;

status)
echo -e " ============================== Table Filter ============================ ";
iptables -t filter -vnL
echo -e " ============================== Table Nat ============================= ";
iptables -t nat -vnL
echo -e " ============================== Table Mangle =========================== ";
iptables -t mangle -vnL
echo -e " ============================== Table Raw ============================ ";
iptables -t raw -vnL
;;

"restart")
echo " Reativando todas as Regras do Firewall ................................ [ OK ]"
sleep 1
firewall_stop; firewall_start
;;

*)
iptables -vnL




  


14. Re: Iptables mais louco que o Batman [RESOLVIDO]

Wiliam Pegoraro
wiliampegoraro

(usa Outra)

Enviado em 18/08/2014 - 10:05h

n4t4n escreveu:

Várias coisas podem estar acontecendo. Verifique cada uma delas.

1 - Quando você pára o Firewall você não está limpando todas as tabelas, inclusive a NAT que é a que faz o redirecionamento para o SQUID.

2 - Você pode ter configurado seu proxy manualmente nos PC's. Nesse caso nem precisa da regra para redirecionamento (Se realmente não for usar proxy transparente)

3 - Ao iniciar o firewall todas as portas especificadas são redirecionadas para o Squid, porém o mesmo não está em modo transparente, nem configurado para tratar DNS, FTP, etc.


Fiz algumas mudanças que julguei necessárias. Analise como ficou.

#!/bin/sh
#ip-guardian

echo ""
uname -s -r -m -o
echo ""
echo " FIREWALL RAFITEC -- Firewall Iptables"
echo ""


firewall_start(){

echo ""
echo " Iniciando as Regras do Firewall .............................................."
echo ""

echo " Ativando o IP forward ................................................. [ OK ]"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo " Protegendo contra Pings ( ignorando ) ................................. [ OK ]"
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo " Protegendo contra IP spoofing ......................................... [ OK ]"
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo " Protegendo contra diversos ataques .................................... [ OK ]"
echo 1 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo " Protegendo contra bogus responses ..................................... [ OK ]"
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo " Protegendo contra IP synflood ......................................... [ OK ]"
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

echo " Protegendo contra ICMP Broadcasting ................................... [ OK ]"
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo " Protegendo contra alteracao de rota ................................... [ OK ]"
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

echo " Protegendo contra Pings da Morte ...................................... [ OK ]"
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT


echo " Definindo Politica Padrao ...................................................."
echo ""
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

echo " Limpando Regras Anteriores ............................................ [ OK ]"
echo ""
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -t raw -F

echo " Redirecionando portas para o SQUID (Proxy Transparente) ............... [ OK ]"
iptables -t nat -A PREROUTING -i eth1 -m multiport -p tcp --dports 21,80,443,53 -j REDIRECT --to-port 3128

echo " Compartilhando a internet via IPTABLES .................................[ OK ]"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


echo " Liberando acesso FTP, HTTP, HTTPS, DNS, através do SQUID ........... [ OK ]"
iptables -A INPUT -p tcp -i eth1 -m multiport --dports 21,80,443,53 -j ACCEPT


# Lembre de configurar o FTP e especificar os endereços DNS dentro do squid.conf

echo " Liberando acesso NTP ............................................... [ OK ]"
iptables -A FORWARD -p tcp -i eth1 --dport 123 -j ACCEPT

echo " Liberando acesso a E-MAIL ............................................. [ OK ]"
iptables -A FORWARD -p tcp -i eth1 -m multiport --dports 25,110,143,465,587,993,995 -j ACCEPT

# Veja as portas de E-mail em http://scuderiaserver.com.br/2012/05/configurando-programas-de-email/

echo " Protegendo contra traceroute .......................................... [ OK ]"
iptables -A INPUT -p udp --dport 33435:33525 -j LOG --log-prefix "_BLOCKED_: "
iptables -A INPUT -p udp --dport 33435:33525 -j DROP

echo " Protegendo contra portscanners, ping of death, ataques DoS, etc. ...... [ OK ]"
iptables -A INPUT -m state --state INVALID -j LOG --log-prefix "_BLOCKED_: "
iptables -A INPUT -m state --state INVALID -j DROP

echo " Liberando conexao SSH ..................................................[ OK ]"
iptables -A INPUT -p tcp -m tcp --dport 22 -i eth0 -j ACCEPT

echo " Fechando portas UDP 1:1024 ............................................ [ OK ]"
iptables -A INPUT -p udp --dport 1:1024 -j LOG --log-prefix "_BLOCKED_UDP_: "
iptables -A INPUT -p udp --dport 1:1024 -j DROP

echo " Permitindo respostas a conexoes iniciadas pela maquina ................ [ OK ]"
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

echo " Permitindo respostas a conexoes iniciadas pela rede ................ [ OK ]"
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT


echo " Liberando a interface de loopback ..................................... [ OK ]"
iptables -A INPUT -i lo -j ACCEPT

echo " Bloqueando qualquer conexao que nao tenha sido permitida acima ........ [ OK ]"
iptables -A INPUT -p tcp --syn -j LOG --log-prefix "_BLOCKED_: "
iptables -A INPUT -p tcp --syn -j DROP

echo " Firewall em operacao .................................................. [ OK ]"


sleep 1

}

firewall_stop(){

iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -t raw -F


}

case "$1" in

"start")
firewall_start
;;

"stop")
firewall_stop
echo " Desativando todas as Regras do Firewall ................................ [ OK ]"
echo " firewall disabled "
sleep 1
;;

status)
echo -e " ============================== Table Filter ============================ ";
iptables -t filter -vnL
echo -e " ============================== Table Nat ============================= ";
iptables -t nat -vnL
echo -e " ============================== Table Mangle =========================== ";
iptables -t mangle -vnL
echo -e " ============================== Table Raw ============================ ";
iptables -t raw -vnL
;;

"restart")
echo " Reativando todas as Regras do Firewall ................................ [ OK ]"
sleep 1
firewall_stop; firewall_start
;;

*)
iptables -vnL




Muito obrigado pela sua ajuda n4t4n!!

Mas o problema persistiu, inclusive o ping para www.google.com.br, quando eu paro (stop) o firewall, o ping funciona perfeitamente, mas ao dar o start, ele para o ping, e automaticamente a internet também, aparecendo o sinal de exclamação na conexao de rede da estação com windows 7

para voce entender, esse servidor será instalado em uma filial, preciso que seja bloqueado tudo, e liberado apenas o acesso a alguns sites, e liberado apenas algumas portas.

Mais uma vez, obrigado pela sua ajuda




15. Re: Iptables mais louco que o Batman [RESOLVIDO]

Pedro
px

(usa Debian)

Enviado em 18/08/2014 - 11:31h

wiliampegoraro escreveu:

Devo comentar essa linha? Ou melhora-la?

Cuidado pra não deixar sua rede lenta com esse limite
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT




Remove isto, só serve para atrasar sua rede toda.

Isso aqui no seu script ta desativando o ping:

echo " Protegendo contra Pings ( ignorando ) ................................. [ OK ]"
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all


16. Re: Iptables mais louco que o Batman [RESOLVIDO]

Wiliam Pegoraro
wiliampegoraro

(usa Outra)

Enviado em 18/08/2014 - 11:46h

px escreveu:

wiliampegoraro escreveu:

Devo comentar essa linha? Ou melhora-la?

Cuidado pra não deixar sua rede lenta com esse limite
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT




Remove isto, só serve para atrasar sua rede toda.

Isso aqui no seu script ta desativando o ping:

echo " Protegendo contra Pings ( ignorando ) ................................. [ OK ]"
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all



removi amigo, o problema está em quando eu paro o firewall, a internet funciona, quando eu dou start, a internet não funciona mais



17. Re: Iptables mais louco que o Batman [RESOLVIDO]

Pedro
px

(usa Debian)

Enviado em 18/08/2014 - 21:16h

wiliampegoraro escreveu:

removi amigo, o problema está em quando eu paro o firewall, a internet funciona, quando eu dou start, a internet não funciona mais


Então posta seu script de iptables atual para dar uma olhada ai.


18. Re: Iptables mais louco que o Batman [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 18/08/2014 - 21:19h

Opa Willian, que grave.

Redirecionamos as portas para o Squid, mas não a liberamos na chain INPUT. Dê um tapa na cara e adicione-a (Acabei de fazer isto).

iptables -I INPUT -i eth1 -p tcp --dport 3128 -j ACCEPT

Quando está desse jeito precisamos isolar cada elemento para encontrarmos o vilão. Caso ainda esteja sem funcionar, páre o Firewall e manda o resultado dos comandos:

iptables -vnL

iptables -vnL -t nat



19. Re: Iptables mais louco que o Batman [RESOLVIDO]

Wiliam Pegoraro
wiliampegoraro

(usa Outra)

Enviado em 19/08/2014 - 17:09h

n4t4n escreveu:

Opa Willian, que grave.

Redirecionamos as portas para o Squid, mas não a liberamos na chain INPUT. Dê um tapa na cara e adicione-a (Acabei de fazer isto).

iptables -I INPUT -i eth1 -p tcp --dport 3128 -j ACCEPT

Quando está desse jeito precisamos isolar cada elemento para encontrarmos o vilão. Caso ainda esteja sem funcionar, páre o Firewall e manda o resultado dos comandos:

iptables -vnL

iptables -vnL -t nat


saoskaoskaokoskaooaska essa do tapa na cara foi ótima kkkkkkkkk

fiz o que me pedi n4t4n, mas o problema persisiu

/etc/init.d/firewall stop -> internet funciona -> ping funciona -> squid funciona
/etc/init.d/firewall start -> internet NÃO funciona -> ping NÃO funciona -> squid nã funciona

E essa regra que já estava no firewall, deixo assim?
echo " Redirecionando portas para o SQUID (Proxy Transparente) ............... [ OK ]"
iptables -t nat -A PREROUTING -i eth1 -m multiport -p tcp --dports 21,80,443,53 -j REDIRECT --to-port 3128


Não seria um problema com meus comandos de iniciar e parar o firewall?



Segue abaixo a resposta dos comandos que me pediu


root@proxy:~# iptables -vnL
Chain INPUT (policy ACCEPT 32741 packets, 11M bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 19 packets, 1663 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 55 packets, 13916 bytes)
pkts bytes target prot opt in out source destination




root@proxy:~# iptables -vnL -t nat
Chain PREROUTING (policy ACCEPT 408 packets, 36775 bytes)
pkts bytes target prot opt in out source destination
7 364 REDIRECT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 multiport dports 21,80,443,53 redir ports 3128

Chain POSTROUTING (policy ACCEPT 1 packets, 241 bytes)
pkts bytes target prot opt in out source destination
14 1048 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT 8 packets, 842 bytes)
pkts bytes target prot opt in out source destination



20. Re: Iptables mais louco que o Batman [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 21/08/2014 - 10:24h

Eu havia colocado alguns códigos de negrito ( ), mas isso era só pro site. Se tiver copiado pro seu arquivo remova todos os  e . 


As regras de parar o Firewall que deixei são suficientes para limpar as regras do iptables.

Quando você faz iptables -t nat -F não deve haver nenhuma regra na sua tabela nat, portanto o resultado do comando que lhe pedi era pra estar sem regra alguma na tabela nat. Era pra aparecer do mesmo jeito da tabela filter.

Você não colocou essas regras de compartilhamento de internet em outro script?
Faça o seguinte teste: Reinicie a máquina do Firewall e veja o status da tabela nat. Não deve haver nada lá.

Depois mude seu script para redirecionar apenas a porta 80 para o squid. Habilite as demais na chain FORWARD.


21. Re: Iptables mais louco que o Batman [RESOLVIDO]

Wiliam Pegoraro
wiliampegoraro

(usa Outra)

Enviado em 21/08/2014 - 13:17h

n4t4n escreveu:

Eu havia colocado alguns códigos de negrito ( ), mas isso era só pro site. Se tiver copiado pro seu arquivo remova todos os  e . 


As regras de parar o Firewall que deixei são suficientes para limpar as regras do iptables.

Quando você faz iptables -t nat -F não deve haver nenhuma regra na sua tabela nat, portanto o resultado do comando que lhe pedi era pra estar sem regra alguma na tabela nat. Era pra aparecer do mesmo jeito da tabela filter.

Você não colocou essas regras de compartilhamento de internet em outro script?
Faça o seguinte teste: Reinicie a máquina do Firewall e veja o status da tabela nat. Não deve haver nada lá.

Depois mude seu script para redirecionar apenas a porta 80 para o squid. Habilite as demais na chain FORWARD.


N4t4n, estou pensando em fazer o seguinte, formatar essa maquina, configurar a rede e botar o script que me passou, o que acha? Ou tem algo a mais que devo fazer após formatar?

Confesso que não tenho muito conhecimento, mas estou me esforçando kkkk




22. Re: Iptables mais louco que o Batman [RESOLVIDO]

Wiliam Pegoraro
wiliampegoraro

(usa Outra)

Enviado em 22/08/2014 - 10:49h

n4t4n escreveu:

Eu havia colocado alguns códigos de negrito ( ), mas isso era só pro site. Se tiver copiado pro seu arquivo remova todos os  e . 


As regras de parar o Firewall que deixei são suficientes para limpar as regras do iptables.

Quando você faz iptables -t nat -F não deve haver nenhuma regra na sua tabela nat, portanto o resultado do comando que lhe pedi era pra estar sem regra alguma na tabela nat. Era pra aparecer do mesmo jeito da tabela filter.

Você não colocou essas regras de compartilhamento de internet em outro script?
Faça o seguinte teste: Reinicie a máquina do Firewall e veja o status da tabela nat. Não deve haver nada lá.

Depois mude seu script para redirecionar apenas a porta 80 para o squid. Habilite as demais na chain FORWARD.


Formatei, botei o script e adivinha!!

Mesmo problema :(


Será que meu squid não está bugado?




23. Re: Iptables mais louco que o Batman [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 22/08/2014 - 16:52h

Descobri onde está o erro.

Você iniciou um case, mas não o fechou. Feche o script com um esac no final do arquivo e faça o teste.

Merecemos outro tapa. rsrsrs. Eu não havia percebido isso.


24. Re: Iptables mais louco que o Batman [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 26/08/2014 - 11:24h

wiliampegoraro escreveu:

soaksoaksoaksoaksaos mas assim ta loco kkkkk

mas esse esac eu coloco no fim do start?



Não. Na última linha do arquivo






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts