Por Favor :( estou ficando louco com iptables
Por favor, já li varios e varios tutoriais mas nao sei o que esta errado.
Configuracao :
Slackware 10.1
eth0 : 192.168.254.1/24 ( ligado ao router velox 192.168.254.254 )
eth1 : 10.0.10.254/24 ( ligado a rede interna )
gateway do servidor : 192.168.254.254
em resolv.conf coloquei nameserver 200.149.55.142 / 200.165.132.154
O roteamento ip_forward esta ativado já na inicializacao ( rc.inet2 )
fiz um script 'simples assim'para o firewall :
iptables -P INPUT ACCEPT
iptables -F INPUT
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -t nat -F
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -j LOG
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
No servidor consigo pingar as duas redes. As estacoes da rede interna sao windows e coloquei assim :
IP : 10.0.10.n ( <> 254 ) mask : 255.255.255.0
Gateway : 10.0.10.254 DNS : os mesmos do servidor , tentei tambem com 192.168.254.254
O que ocorre : ao abrir o navegador e digitar qualquer site aparece na barra de status que o site foi encontrado e fica tentando indefinidamente abrir o site mas nao aparece nada.
Ao pingar www.cade.com.br aparece como resposta o ip do cade mas há uma grande perda de pacotes. Alterei o script para :
iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
e tambem assim fica igual ao descrito acima, também tentei
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.254.1 e também nao funciona . alguma luz ??? Por favor
Por Favor :( estou ficando louco com iptables
Amigo o problema está bem claro, você está tentando fazer um acesso mas não liberou as portas necessárias.
Quando você digitou:
iptables -P FORWARD DROP
você bloqueou todo o acesso que passe pelo firewall
daí para funcionar algo você tem que liberar primeiro.
Experimenta trocar o código mostrado acima por:
iptables -P FORWARD ACCEPT
Falows
Por Favor :( estou ficando louco com iptables
ja fiz isso e tb nao funciona
Por Favor :( estou ficando louco com iptables
Então você está com problemas de rotas. Posta aí o retorno do comando route -n.
Por Favor :( estou ficando louco com iptables
luis usei o seu script ( reiniciei a maquina primeiro ) e também nao funcionou
Por Favor :( estou ficando louco com iptables
caro maverick, estou reinstalando o slack , vou sair da versao 10.1 e voltar para a 10, também estou trocando as placas realteck 8139 por outras ( 3com / Digital ) que estavam em outra maquina funcionando.
Quando escolhi os pacotes na instalacao vi um pacote iproute2 creio que esse pacote deve ser o responsavel por rotas.
O slack 10 ja vem com o modulo iptables compilado no kernell de forma que nao é preciso carrega-lo e em mais de 10 tutoriais sobre o assunto, segundo entendi , estando o ip_forward ativado e no slack é o rc.ip_forward que faz echo 1>/proc/sys/net/ipv4/ip_forward , a principio bastaria 2 linhas para que o compatilhamento com a internet funcionasse que é o :
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o interface_ligada_ao router(eth0) -j MASQUERADE
queria saber com certeza, esquecendo a segurança, basta isso e navega ?
Por Favor :( estou ficando louco com iptables
caro maverick, estou reinstalando o slack , vou sair da versao 10.1 e voltar para a 10, também estou trocando as placas realteck 8139 por outras ( 3com / Digital ) que estavam em outra maquina funcionando.
Quando escolhi os pacotes na instalacao vi um pacote iproute2 creio que esse pacote deve ser o responsavel por rotas.
O slack 10 ja vem com o modulo iptables compilado no kernell de forma que nao é preciso carrega-lo e em mais de 10 tutoriais sobre o assunto, segundo entendi , estando o ip_forward ativado e no slack é o rc.ip_forward que faz echo 1>/proc/sys/net/ipv4/ip_forward , a principio bastaria 2 linhas para que o compatilhamento com a internet funcionasse que é o :
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o interface_ligada_ao router(eth0) -j MASQUERADE
queria saber com certeza, esquecendo a segurança, basta isso e navega ?
Por Favor :( estou ficando louco com iptables
Resolvi o problema, :P
Nao funcionava pois as placas de rede estavam compartilhando irq com outros perifericos, desabilitei os outros perifericos e funcionou.
O mais estranho era que elas respondiam ao ping sem problemas.
Mas queria uma ajuda se possivel , tenho o script abaixo, funcionando, e preciso que a rede 10.0.10.0/24 tenha acesso ao servidor 10.0.10.254 a vários servicos como telnet / ftp / samba que nao esta ocorrendo e que a maquina 10.0.10.83 nao tenha acesso ao messenger e a um site em especifico 200.234.200.9, alguem poderia me ajudar ?
Agradeço desde já. Obrigado
#!/bin/bash
# ----------------------------------------------------------------
# Scrip para firewall
# ----------------------------------------------------------------
echo "Carregando o firewall..."
# Definindo as variaveis
REDEINT="10.0.10.0/24"
# IPDNSPROVEDOR="192.168.254.254"
ENT="eth1"
SAI="eth0"
# carregando os modulos
modprobe iptable_nat
# limpando as tabelas
iptables -F
iptables -t nat -F
# Protege contra os "Ping of Death"
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
# Protege contra os ataques do tipo "Syn-flood, DoS, etc"
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
# Permitir repassamento (NAT,DNAT,SNAT) de pacotes etabilizados e os relatados ...
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Logar os pacotes mortos por inatividade ...
iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG
# Protege contra port scanners avançados (Ex.: nmap)
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
# Protege contra pacotes que podem procurar e obter informações da rede interna ...
iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
# Protege contra todos os pacotes danificados e ou suspeitos ...
iptables -A FORWARD -m unclean -j DROP
# Bloqueando tracertroute
iptables -A INPUT -p udp -s 0/0 -i $ENT --dport 33435:33525 -j DROP
# Protecoes contra ataques
iptables -A INPUT -m state --state INVALID -j DROP
# Performance - Setando acesso a web com delay minimo
iptables -t mangle -A OUTPUT -o $ENT -p tcp --dport 53 -j TOS --set-tos Minimize-Delay
iptables -t mangle -A OUTPUT -o $ENT -p tcp --dport 80 -j TOS --set-tos Minimize-Delay
# Deixa passar as portas UDP do servidores DNS, e Rejeitar o restante
#iptables -A INPUT -i $ENT -p udp -s $IPDNSPROVEDOR -j ACCEPT
#iptables -A INPUT -i $ENT -p udp -s $IPDNSPROVEDOR -j ACCEPT
iptables -A INPUT -i $ENT -p udp -j ACCEPT
# Bloqueia qualquer tentativa de conexao de fora para dentro por TCP
iptables -A INPUT -i $ENT -p tcp --syn -j DROP
# Mesmo assim fechar todas as portas abaixo de 32000
iptables -A INPUT -i $ENT -p tcp --dport :32000 -j DROP
# Responde pacotes icmp especificados e rejeita o restante
iptables -A INPUT -i $ENT -p icmp --icmp-type host-unreachable -j ACCEPT
iptables -A INPUT -i $ENT -p icmp --icmp-type source-quench -j ACCEPT
iptables -A INPUT -i $ENT -p icmp -j REJECT --reject-with icmp-host-unreachable
# Rejeita o Kazaa (não testado ainda)
#$iptables -A FORWARD -p tcp -m string --string X-Kazaa-Username: -j REJECT --reject-with tcp-reset
# libera acesso interno da rede
iptables -A INPUT -p tcp --syn -s $REDEINT -j ACCEPT
iptables -A OUTPUT -p tcp --syn -s $REDEINT -j ACCEPT
iptables -A FORWARD -p tcp --syn -s $REDEINT -j ACCEPT
# libera o loopback
iptables -A OUTPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
# libera conexoes de fora pra dentro
iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT
#$iptables -A INPUT -p tcp --destination-port 443 -j ACCEPT
#$iptables -A INPUT -p tcp --destination-port 20 -j ACCEPT
#$iptables -A INPUT -p tcp --destination-port 21 -j ACCEPT
#$iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT
#libera conexoes de dentro pra fora:
iptables -A OUTPUT -p tcp --destination-port 80 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 3306 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 22 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 20 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 21 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 86 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 5190 -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 443 -j ACCEPT
# libera o bittorrent - (não testado)
# troque o X.X.X.X pelo IP da máquina correspondente
#$iptables -A INPUT -p tcp --destination-port 1214 -j ACCEPT
#$iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 1214 -j DNAT --to-dest X.X.X.X
#$iptables -A FORWARD -p tcp -i ppp0 --dport 1214 -d X.X.X.X -j ACCEPT
#$iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 1214 -j DNAT --to-dest X.X.X.X
#$iptables -A FORWARD -p udp -i ppp0 --dport 1214 -d X.X.X.X -j ACCEPT
# faz o icq receber arquivos - (não testado)
# troque o X.X.X.X pelo IP da máquina correspondente
#$iptables -A INPUT -p tcp --destination-port 2000:3000 -j ACCEPT
#$iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 2000:3000 -j DNAT --to-dest X.X.X.X
#$iptables -A FORWARD -p tcp -i ppp0 --dport 2000:3000 -d X.X.X.X -j ACCEPT
#$iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 2000:3000 -j DNAT --to-dest X.X.X.X
#$iptables -A FORWARD -p udp -i ppp0 --dport 2000:3000 -d X.X.X.X -j ACCEPT
# compartilha a web na rede interna
iptables -t nat -A POSTROUTING -s $REDEINT -o $SAI -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# bloqueia o resto
iptables -A INPUT -p tcp --syn -j DROP
iptables -A OUTPUT -p tcp --syn -j DROP
iptables -A FORWARD -p tcp --syn -j DROP
# bloqueia ping
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
# ----------------------------------------------------------------
echo "Firewall carregado..."
Por Favor :( estou ficando louco com iptables
Cara de boa isso é muito facil de fazer. Axo que devia dar uma pesquisada primeiro e depois postar aqui suas duvidas.
Por Favor :( estou ficando louco com iptables
Carinha, dá uma olhada no script que postei no tópico, na seção:
## Secao para lidar com port forwarding ##
Basta descomentar a linha do $IPC (que é para porta 80), colocando o endereço do destino. Para os outros serviços, basta copiar e colar.
Meu script tem função para bloquear/liberar/forward. Dá uma olhadinha nos comentários. Podem existir funções úteis para você. :good:
[]'s
Luis Falcão
Por Favor :( estou ficando louco com iptables
Caro Suport 3, realmente isso parece muito fácil mas depois de 4 dias apanhando, achando-me uma besta pois como fala na rede , "qualquer uma faz um comparilhamento de internet" e depois acabar descobrindo que nao funcionava por causa de compartilhamento de IRQ de placa !!! e isso eu descobri por acaso no google ao ver uma postagem de um sofredor que nao conseguia colocar a quinta placa no firewall e ai descobri uma tal ACPI ( nao tem nada a ver com CPMI/CPI/CPMF :@: ), ai nesse ponto eu acho que :
iptables -A INPUT -s 10.0.10.10/24 -p tcp --dport 20:2000 -j ACCEPT para acesso local de uma máquina ao server e
iptables -A FORWARD -s 10.0.10.0/24 -d 200.234.200.9 -j DROP para nao acessar um site em especifico é fácil realmente, mas em que ponto do script é que é o caso ?!? pois algumas regras nao compreendo e nao posso mais parar a Internet o serviço ficou muito atrasado
Por Favor :( estou ficando louco com iptables
vc disse que queria que a rede 10.0.10.0/24 tenha acesso ao servidor 10.0.10.254. Parace que eles estão na mesma rede intão não tem nada a ver com o firewall. Se vc esta tentando fazer uma DMZ ela não esta certa. alguem da internet acessa esse servidor ??? intão não tem porque ele estar atras de um firewall. Se acessar vc tem que refazer a topologia da sua rede.
internet................................rede interna
-------------| firewall |--------------|
.....................................................|
.....................................................|
...............10.0.10.254................|...........................10.0.10.0/24
.................| servidor |----------| switch |-------------rede interna
Viu o servidor não passa pelo firewall...o desenho de cima é sem DM e niguem acessa esse servidor pela internet.
Se alguem acessar o seu servidor pel ainternet ai vc vai ter que colocar outra paca de rede no seu firewall e fazer isso:
internet........................................rede interna
--------------| firewall |------------------|
............................|...............................|
............................|...............................|
............................|...............................|
...................192.168.1.254...............|
.....................| servidor |.....................|...........................10.0.10.0/24
....................................................| switch|---------------rede interna
No desenho desconsidere os pontos. Ta vendo que o servidor esta ligado ao firewall e pra que a rede interna acessar o servidor tem que passar pelo firewall..Essa alternatica é muito mais segura.
Esplica melhor ende ta esse servidor:
heheh gostei de desenhar :D
estranho que vc tenha problemas em bloquear algo ja que vc ta usando
as politicas
ptables -A INPUT -p tcp --syn -j DROP
iptables -A OUTPUT -p tcp --syn -j DROP
iptables -A FORWARD -p tcp --syn -j DROP
mas enfim:
Para bloquear o MSN da 10.0.10.83:
Host que não acessam MSN
# maquinas que NÂO acessão MSN
$NO_MSN= "10.0.10.83"
for HOSTS in $NO_MSN; do
iptables -A FORWARD -p tcp -i $ENT -s $HOSTS -o $SAI --dport 1863 -j DROP
iptables -t nat -A POSTROUTING -p tcp -s $HOSTS -o $SAI --dport 1863 -j SNAT --to $IP_NET
done
maquinas que É PERMITIDO MSN
# coloque entre " " as maquinas que acessão MSN
$YES_MSN= ""
for HOSTS in $YES_MSN; do
iptables -A FORWARD -p tcp -i $ENT -s $HOSTS -o $SAI --dport 1863 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp -s $HOSTS -o $SAI --dport 1863 -j SNAT --to $IP_NET
done
Ufa. :good:
Por Favor :( estou ficando louco com iptables
Obrigado pela resposta mas cheguei a bloquear a porta 1863 e mesmo assim o infeliz do MSN abre e o webmsn nem esta ai.
Como preciso bloquear alguns sites pelo dominio, instalei o squid e a velocidade das paginas aumentou em muito.
mas criei as seguintes regras
acl LAN 10.0.10.0/24 192.168.254.0/24
acl site1 dstdomain arquivosex.com
acl site2 loginnet.passport.com
acl site3 webmessenger.msn.com
http_access allow LAN
http_access deny site1
http_access deny site2
http_access deny site3
http_access deny all
e mesmo assim o site e o msn continua a funcionar, poderiam me ajudar
Quanto a questao do acesso ao servidor bastou eu fazer
iptables -A INPUT -s 10.0.10.0/24 -p tcp --dport 20:2000 -j ACCEPT e ai as maquinas conseguiram acessar o http/ftp/telnet/swat que roda na maquina que é firewal e agora proxy também.
Por Favor :( estou ficando louco com iptables
Vc redirecionou a porta 80 para a porta do squid ???? 3128 ou 8080 ???
Axo que vc não esta usando o squid ainda.
Por Favor :( estou ficando louco com iptables
Por Favor :( estou ficando louco com iptables
Caro Suport3, limitei-me a instalar o squid e alterar o squid.conf se na instalacao o script de instalacao nao direcionou, nao deve estar. Deixei na porta padrao creio que 3128.
Como é feito isso ou testo se esta havendo direcionamento para o proxy ?
Engraçado é que toda vez que entro em um site o led do hd do server acende e na segunda vez que entro 'teoricamente' houve um aumento da velocidade .
Maverick abri o link indicado, creio que me ajudará em muito mas creio que primeiro preciso ver se esta havendo realmente o direcionamento para o squid. Vc sabe como testo isso ?
Por Favor :( estou ficando louco com iptables
Amigo bom dia,
Acho q você deveria ler este material abaixo...(é bem pqno) e vai esclarecer a sua duvida... Não fique copiando e colando scripts q vc pega na net tente entender q cada um fez e pegue apenas oq lhe atente pois o FW q e feito para minha rede nem sempre serve para a sua. Leia o artigo e resolva seu problema.
http://www.vivaolinux.com.br/artigos...php?codigo=473
Abraço
Por Favor :( estou ficando louco com iptables
alimasilva, para testar se está funcionando o seu proxy, basta dar o seguinte comando no seu arquivo access.log do squid. Lembrando que exibirei o exemplo baseado na minha instalação, pois como nosso amigo lacier disse "a minha nem sempre é igual a sua". Portanto é bom dar uma procurada no seu sistema pelo arquivo access.log do squid.
Abaixo vai o comando:
Código :
tail -f /var/log/squid/access.log
Após digitar o comando, faça um teste colocando outra máquina para acessar a web. Se começar a aparecer várias mensagens na tela é porque seu proxy está transparente.
Blz, Falows