Ajuda com iptables para redirecionamento
Boa noite a todos.
Como sou novo aqui, estou há algumas horas lendo todo o fórum.
Inclusive não encontrei em local algum minhas dúvidas.
Sou iniciante nesse ramo, e a pedido de um amigo estou a desenvolver um script iptables de redirecionamento para ele.
Espero muito a ajuda de vocês.
São 3 clouds
cloud-A - Onde roda o script firewall
cloud-B - Onde recebe as conexões
cloud-C - Painel gerenciamento clientes
Todos são ips fixo
Estarei colando meu scritp e fazendo as observações das minhas dúvidas.
#!/bin/bash
echo 'Limpando todas as regras e liberando todo o trafego'
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Ignora pings
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe iptable_nat
iptables -t nat -F
iptables -F
iptables -F FORWARD
Com esta regra a baixo eu recebo a mensagem: iptables: No chain/target/match by that name.
Mas se eu comento a regra, para tudo de funcionar.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp --dport 22 -i eth0 -j ACCEPT
Com essas regras a baixo, eu gostaria que apenas o cloud-C pudesse ser direcionado para o cloud-B nestas portas.
Teste e também não obtive sucesso.
#iptables -A INPUT -p tcp -s cloud-C --dport 55050 -j ACCEPT
#iptables -A INPUT -p tcp -s cloud-C --dport 55051 -j ACCEPT
# Proteções diversas contra portscanners, ping of death, ataques DoS, etc.
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
iptables -A FORWARD -m unclean -j DROP
# Direcionamento Cabo1
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 31250 -j DNAT --to-destination cloud-B:31250
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 23050 -j DNAT --to-destination cloud-B:31250
# Direcionamento Cabo2
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 32005 -j DNAT --to-destination cloud-B:32005
# Direcionamento para o Painel
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 55051 -j DNAT --to-destination cloud-B:55051
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 55050 -j DNAT --to-destination cloud-B:55050
iptables -A FORWARD -p udp -s cloud-A --dport 53 -j ACCEPT
# Ignora qualquer pacote de entrada, vindo de qualquer endereço, a menos que especificado o contrário acima. Bloqueia tudo.
iptables -A INPUT -p tcp --syn -j DROP
echo 'Firewall iniciado'
echo 'Listar regras Redirecionamentos'
iptables -t nat -L
Agradeço a atenção de todos.
Grande abraço
Re: Ajuda com iptables para redirecionamento
Re: Ajuda com iptables para redirecionamento
Olá Cesardovalle!
No seu caso para bloquear todo o acesso nas portas 55050 e 550501 com excessão do cloud-C:
iptables -A INPUT -p tcp -s cloud-C! --dport 55050 -j DROP
iptables -A INPUT -p tcp -s cloud-C! --dport 55051 -j DROP
iptables -A INPUT -p tcp -s cloud-C! --dport 55050 -m conntrack --ctstate NEW,ESTABLISHED -j DROP
iptables -A INPUT -p tcp -s cloud-C! --dport 55051 -m conntrack --ctstate NEW,ESTABLISHED -j DROP
Mano, agora sobre esse erro aí...: "No chain/target/match by that name"... Olha que o teu comando está correto, então pode ser pau na compilação do módulo iptables. Se foi vc que compilou o kernel, então comeu bola na hora de selecionar os items do Netfilter Configuration.
Você precisa descobrir qual parte da regra está causando essa mensagem de erro. É provavelmente a parte do estado -t nat, mas não necessariamente. Há várias extensões para iptables e netfilter que devem ser compiladas no kernel do Linux. Você pode determinar qual parte está faltando, pedindo ao iptables às informações de ajuda na extensão que está testando. Aqui estão algumas maneiras de testar às extensões:
iptables -t nat -h
iptables -m state -h
iptables -p icmp -h
iptables -j DROP -h
Se você obter uma saída de ajuda que inclua informações sobre a extensão na parte inferior da saída, significa que foi compilado corretamente. Se não, então você precisará recompilar novamente o kernel com suporte à extensão do netfilter/iptables.