Iptables mais louco que o Batman [RESOLVIDO]

1. Iptables mais louco que o Batman [RESOLVIDO]

Wiliam Pegoraro
wiliampegoraro

(usa Outra)

Enviado em 15/08/2014 - 11:35h

Bom dia, nesta não tão animada sexta-feira pra mim, estou com um problema estranho, e não consigo encontrar uma solução.

Distribuição: Debian 6

Internet: eth0
Lan: eth1

Quando eu paro meu iptables (/etc/init.d/firewall stop) INTERNET FUNCIONA

Quando eu inicio meu firewall (/etc/init.d/firewall start) INTERNET NÃO FUNCIONA


Segue meu iptables !!!!!!



#!/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 " Definindo Politica Padrao ...................................................."
echo ""

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

echo " Limpando as Regras Anteriores ......................................... [ OK ]"
echo ""

iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -t raw -F

echo " Ativando o Proxy Transparente SQUID ................................... [ OK ]"
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 443 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

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

iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

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 " 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 " Compartilhando a internet via IPTABLES .................................[ OK ]"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


echo " Redirecionando portas DNS e NTP para o SQUID .......................... [ OK ]"
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 53 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 123 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

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 apenas respostas a conexoes iniciadas pela maquina ......... [ OK ]"
iptables -A INPUT -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 -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

}

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 -L -n
echo -e " ============================== Table Nat ============================= ";
iptables -t nat -L -n
echo -e " ============================== Table Mangle =========================== ";
iptables -t mangle -L -n
echo -e " ============================== Table Raw ============================ ";
iptables -t raw -L -n
;;

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

*)
iptables -L -n

esac



  


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

Natanael Henrique
natanaelhenrique

(usa Arch Linux)

Enviado em 15/08/2014 - 14:37h

Se eth0 é a interface da INTERNET, então você está redirecionando o tráfego vindo da INTERNET para o squid e não o da LAN

Se eth0 é a internet então você deveria fazer o MASQUERADE nessa interface, e não em ppp0. Afinal, quem é ppp0? Outro link de internet?


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

Wiliam Pegoraro
wiliampegoraro

(usa Outra)

Enviado em 15/08/2014 - 14:40h

Boa tarde amigo!

A eth0 recebe a internet e a eth1 vai para um switch que distribui para as computadores da rede.


Como eu deveria proceder?

Abraço


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

Natanael Henrique
natanaelhenrique

(usa Arch Linux)

Enviado em 15/08/2014 - 15:01h

Boa tarde. Você deve deixar as seguintes regras assim:


iptables -P FORWARD DROP

echo " Ativando o Proxy Transparente SQUID ................................... [ OK ]"
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

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

iptables -t nat -A PREROUTING -i eth1 -p udp --dport 53 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth1 -p udp --dport 123 -j REDIRECT --to-port 3128

echo " Liberando conexao SSH ..................................................[ OK ] "
Essa daqui está certa se você quer acessar seu servidor através da internet.

iptables -A INPUT -p tcp -m tcp --dport 22 -i eth0 -j ACCEPT

se quiser acessar via rede local terá que adicionar a seguinte regra

iptables -A INPUT -p tcp -m tcp --dport 22 -i eth1 -j ACCEPT


Aproveite pra remover os demais MASQUERADES, se for o caso. Se você só tem internet através da eth0 então basta uma regra de MASQUERADE

Observer também que você adotou uma política padrão de DROP para a chain FORWARD. Isso significa q todo o tráfego está bloqueado, a não ser que você tenha explicitamente liberado. Significa dizer que ainda precisa liberar o acesso às portas de serviços necessárias.


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

Wiliam Pegoraro
wiliampegoraro

(usa Outra)

Enviado em 15/08/2014 - 15:05h

E isto que está em meu firewall está incorreto?

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP


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

Natanael Henrique
natanaelhenrique

(usa Arch Linux)

Enviado em 15/08/2014 - 15:12h

wiliampegoraro escreveu:

E isto que está em meu firewall está incorreto?

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP


Não.

Coloquei só o que achei que precisa mudar. O restante continua.

As políticas padrões nas chains da tabela filter deve ser mesmo especificadas.

Eu até diria pra você deixar sua política padrão INPUT como DROP, e então você especifica quem vai ter acesso ao servidor. Do modo como está se você não delimitar no SQUID para escutar somente a rede local, seu proxy pode ser usado a partir da internet. Basta configurar pra usar seu endereço e porta do Squid. Já se você coloca a política da chain INPUT como DROP você pode especificar que somente a rede vai ter acesso, como no exemplo abaixo.

iptables -t filter -A INPUT -i eth1 -s 192.168.sua.rede/24 -p tcp --dport 3128 -j ACCEPT

Com essa regra você especifica que somente o tráfego que entra pela eth1 E da rede 192.168.sua.rede/24 pode acessar o SQUID.

Mesma coisa pra SSH, Apache e o que mais você tiver.


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

Wiliam Pegoraro
wiliampegoraro

(usa Outra)

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

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



Estou confuso pois se a internet entra pela eth0, o tráfego não deveria ser direcionado da eth0 para 3128?


A conexão SSH será acessada somente pela eth0 mesmo, vou acessar sempre de fora.










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

Natanael Henrique
natanaelhenrique

(usa Arch Linux)

Enviado em 15/08/2014 - 15:45h

Melhorá-la. Imagine que você tenha 10 computadores na rede e que cada um deles faça um pedido de conexão (uma página WEB, por exemplo). Isso significa que o Firewal irá demorar 10 segundos para atendê-los, pois só permite a passagem de 1 pedido de nova conexão por segundo. Veja como fica quando você tiver 60 PC's: 1 Minuto para atender a todos, sem falar que a primeira máquina terá que esperar esse tempo para então poder ser atendida em um novo pedido, mesmo que você tenha link de sobra.

Não tem medida certa para esse limite. Depende do tamanho da sua rede, tipo de acesso necessário.

Não. O link de internet chega através da eth0, então o firewall é um cliente desse link, porém servidor para a rede.

O Firewall está configurado com IP (Geralmente um IP Público), máscara, DNS e tal, para acessar a internet através daquele link.

Os demais pedidos de acesso à internet serão feitos ao Firewall, que redirecionará para o Squid. Esses pedidos estão vindo da rede local, através da interface eth1. Por isso a regra daquele jeito.


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

Wiliam Pegoraro
wiliampegoraro

(usa Outra)

Enviado em 15/08/2014 - 15:49h

como voce deixaria a regra para uma rede com 30 computadores? para acessar sistemas de recursos humanos, sites de bancos, etc.


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

Natanael Henrique
natanaelhenrique

(usa Arch Linux)

Enviado em 15/08/2014 - 16:12h

wiliampegoraro escreveu:

como voce deixaria a regra para uma rede com 30 computadores? para acessar sistemas de recursos humanos, sites de bancos, etc.


Não tem como prever quantas conexões serão necessárias para cada computador. Uma só página que se abre há vários pedidos de nova conexão. Instala o IPTRAF e dá uma visualizada na rede, pra vc ter uma idéia.

No caso todos os pedidos de conexão na porta 80 e 443 não estão passando pela FORWARD, pois estão sendo REdirecionadas para o Firewall (chain INPUT), mas qualquer pedido de conexão FTP, SMTP, POP, RSYNC, e outros serviços que não usam a porta 80 e 443 estariam passando por essa regra.

Em suma, se fosse eu, tiraria o limit, e especificaria cada serviço necessário (dá um trabalho de início).


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

Wiliam Pegoraro
wiliampegoraro

(usa Outra)

Enviado em 15/08/2014 - 16:29h

Fiz o que me disse, mas o problema persiste, inclusive quando eu paro o iptables (/etc/init.d/firewall stop) ao acessar um site bloqueado pelo squid, o squid apresenta a pagina de bloqueio normalmente, mas ao iniciar o firewall a internet para e o squid automaticamente tambem.



#!/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 " Definindo Politica Padrao ...................................................."
echo ""

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

echo " Limpando as Regras Anteriores ......................................... [ OK ]"
echo ""

iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -t raw -F

echo " Ativando o Proxy Transparente SQUID ................................... [ OK ]"
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT --to-port 3128


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


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 " 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 apenas respostas a conexoes iniciadas pela maquina ......... [ OK ]"
iptables -A INPUT -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 -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

}

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 -L -n
echo -e " ============================== Table Nat ============================= ";
iptables -t nat -L -n
echo -e " ============================== Table Mangle =========================== ";
iptables -t mangle -L -n
echo -e " ============================== Table Raw ============================ ";
iptables -t raw -L -n
;;

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

*)
iptables -L -n

esac


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

Perfil removido
removido

(usa Nenhuma)

Enviado em 15/08/2014 - 17:56h

cara o Debian usa o UDEV para dar os nomes para as interfaces...

As vezes ele pira e chama eth0 de eth1 e vice-versa...

Para saber se está certo pega o MAC ADDRESS de cada placa de rede e compara com o arquivo em

/etc/udev/rules/70-persistent-net.rules

Se tiver trocado precisa parar o servico de rede, o udev, remover o conteudo desse arquivo
e depois rebootar...

aí depois ajusta de acordo com o que UDEV enxerga... não adianta forçar...pois isso é o PLUG-AND-PLAY funcionando.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts