Iptables + facebook

13. Re: Iptables + facebook

Buckminster
Buckminster

(usa Debian)

Enviado em 02/04/2013 - 15:49h

Ok... vamos por partes. Qual o caminho do teu script do iptables, o de compartilhamento da internet.


  


14. Re: Iptables + facebook

WILLIAN VITOR DO AMOR
willsazon

(usa Ubuntu)

Enviado em 02/04/2013 - 15:59h

Buckminster escreveu:

Ok... vamos por partes. Qual o caminho do teu script do iptables?



bom vamos lá.


Eu só tenho 2 scripts relacionados ao iptables.

O primeiro é o que compartilha a internet.


#esses 3 comandos compartilham a internet
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#esta regra protege contra IP spoofing
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128


eu o fiz em /etc/init.d/Regras_Firewall.


O outro é o que esta bloqueando o facebook.

#/bin/bash
#LIMPAR ARQUIVO ip_facebook
#echo "" > /etc/squid3/facebook
#CAPTURAR IP DO FACEBOOK
host www.facebook.com >> /etc/squid3/ipbloqueados

## EXPRESSÃO REFULAR PARA CAPTURAR SOMENTE OS IPS DO ARQUIVO host_facebook
sed -n 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\nip&\n/gp' /etc/squid3/ipbloqueados | grep ip | sed 's/ip//'| sort | uniq >> /etc/squid3/facebook


##Bloqueia os hosts do facebook
for ip in $(cat /etc/squid3/facebook); do
iptables -I FORWARD -s $ip -j DROP;
iptables -I INPUT -s $ip -j DROP;
done


ele fica dentro de /etc/squid3/ip_facebook


15. Re: Iptables + facebook

Buckminster
Buckminster

(usa Debian)

Enviado em 02/04/2013 - 16:45h

willsazon escreveu:

Buckminster escreveu:

Ok... vamos por partes. Qual o caminho do teu script do iptables?



bom vamos lá.


Eu só tenho 2 scripts relacionados ao iptables.

O primeiro é o que compartilha a internet.


#esses 3 comandos compartilham a internet
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#esta regra protege contra IP spoofing
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128


eu o fiz em /etc/init.d/Regras_Firewall.


O outro é o que esta bloqueando o facebook.

#/bin/bash
#LIMPAR ARQUIVO ip_facebook
#echo "" > /etc/squid3/facebook
#CAPTURAR IP DO FACEBOOK
host www.facebook.com >> /etc/squid3/ipbloqueados

## EXPRESSÃO REFULAR PARA CAPTURAR SOMENTE OS IPS DO ARQUIVO host_facebook
sed -n 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\nip&\n/gp' /etc/squid3/ipbloqueados | grep ip | sed 's/ip//'| sort | uniq >> /etc/squid3/facebook


##Bloqueia os hosts do facebook
for ip in $(cat /etc/squid3/facebook); do
iptables -I FORWARD -s $ip -j DROP;
iptables -I INPUT -s $ip -j DROP;
done


ele fica dentro de /etc/squid3/ip_facebook


Bom, apaga o conteúdo do arquivo /etc/init.d/Regras_Firewall e coloca o contéúdo abaixo.
Remova o arquivo /etc/squid3/ip_facebook.
A mensagem 'iptables: Resource temporarily unavailable' pode estar acontecendo porque o iptables ou o squid3 estão consumindo muita memória.
Tenha certeza que o arquivo /etc/squid3/facebook (dentro do script de bloqueio) não está sendo usado pelo squid também, confira se no squid você não apontou o mesmo caminho para esse arquivo. Se não for alguma coisa desse tipo então você deve colocar mais memória RAM no servidor. Mas no Linux é difícil que seja falta de memória.
As políticas padrões abaixo eu deixei comentadas. Caso você quiser é só descomentar e reiniciar o iptables e testar.
Onde diz 'ip_a_ser_liberado' você coloca os IPs que você quer que tenham acesso ao facebook, mas deve criar duas regras como abaixo para cada IP.
Tenha certeza que você deu permissão de execução para o arquivo /etc/init.d/Regras_Firewall. Eu te aconselho a mudar esse nome para firewall.sh. Fica melhor e mais simples.
mv /etc/init.d/Regras_Firewall /etc/init.d/firewall.sh //Esse comando renomeia o arquivo.
chmod +x /etc/init.d/firewall.sh // esse comando dá permissão de execução ao arquivo.
Depois para iniciar/reiniciar/parar o iptables é só executar:
/etc/init.d/firewall.sh start, restart ou stop.
Daí você coloca o comando '/etc/init.d/firewall.sh start' (sem as aspas) dentro de /etc/rc.local antes da linha exit 0, que o arquivo será iniciado automaticamente na inicialização do servidor.
Qualquer dúvida posta de novo.

#/bin/bash
iptables -Z # Zera as regras das chains
iptables -F # Remove as regras das chains
iptables -X # Apaga as chains
iptables -t nat -Z
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -Z
iptables -t mangle -F
iptables -t mangle -X
#
##Carrega os módulos
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe iptable_mangle
#
##Definindo políticas padrões
########################
#iptables -P INPUT DROP # iptables a política padrão da chain INPUT é proibir tudo
#iptables -P FORWARD DROP
#iptables -P OUTPUT ACCEPT
#
iptables -A FORWARD -o lo -j ACCEPT
#
##Regras de segurança na internet
#################################
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW ! -i eth1 -j DROP # Interface de entrada da internet
iptables -A FORWARD -m state --state NEW ! -i eth1 -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
#
## Minimiza o ataque de DOS
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#
#esta regra protege contra IP spoofing
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
#
iptables -A FORWARD -s ip_a_ser_liberado -j ACCEPT
iptables -A INPUT -s ip_a_ser_liberado -j ACCEPT
#
#LIMPAR ARQUIVO ip_facebook
#echo "" > /etc/squid3/facebook
#CAPTURAR IP DO FACEBOOK
host www.facebook.com >> /etc/squid3/ipbloqueados

## EXPRESSÃO REGULAR PARA CAPTURAR SOMENTE OS IPS DO ARQUIVO host_facebook
sed -n 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\nip&\n/gp' /etc/squid3/ipbloqueados | grep ip | sed 's/ip//'| sort | uniq >> /etc/squid3/facebook

##Bloqueia os hosts do facebook
for ip in $(cat /etc/squid3/facebook); do
iptables -I FORWARD -s $ip -j DROP;
iptables -I INPUT -s $ip -j DROP;
done
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE


16. Re: Iptables + facebook

WILLIAN VITOR DO AMOR
willsazon

(usa Ubuntu)

Enviado em 03/04/2013 - 08:34h

Buckminster escreveu:

willsazon escreveu:

Buckminster escreveu:

Ok... vamos por partes. Qual o caminho do teu script do iptables?



bom vamos lá.


Eu só tenho 2 scripts relacionados ao iptables.

O primeiro é o que compartilha a internet.


#esses 3 comandos compartilham a internet
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#esta regra protege contra IP spoofing
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128


eu o fiz em /etc/init.d/Regras_Firewall.


O outro é o que esta bloqueando o facebook.

#/bin/bash
#LIMPAR ARQUIVO ip_facebook
#echo "" > /etc/squid3/facebook
#CAPTURAR IP DO FACEBOOK
host www.facebook.com >> /etc/squid3/ipbloqueados

## EXPRESSÃO REFULAR PARA CAPTURAR SOMENTE OS IPS DO ARQUIVO host_facebook
sed -n 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\nip&\n/gp' /etc/squid3/ipbloqueados | grep ip | sed 's/ip//'| sort | uniq >> /etc/squid3/facebook


##Bloqueia os hosts do facebook
for ip in $(cat /etc/squid3/facebook); do
iptables -I FORWARD -s $ip -j DROP;
iptables -I INPUT -s $ip -j DROP;
done


ele fica dentro de /etc/squid3/ip_facebook


Bom, apaga o conteúdo do arquivo /etc/init.d/Regras_Firewall e coloca o contéúdo abaixo.
Remova o arquivo /etc/squid3/ip_facebook.
A mensagem 'iptables: Resource temporarily unavailable' pode estar acontecendo porque o iptables ou o squid3 estão consumindo muita memória.
Tenha certeza que o arquivo /etc/squid3/facebook (dentro do script de bloqueio) não está sendo usado pelo squid também, confira se no squid você não apontou o mesmo caminho para esse arquivo. Se não for alguma coisa desse tipo então você deve colocar mais memória RAM no servidor. Mas no Linux é difícil que seja falta de memória.
As políticas padrões abaixo eu deixei comentadas. Caso você quiser é só descomentar e reiniciar o iptables e testar.
Onde diz 'ip_a_ser_liberado' você coloca os IPs que você quer que tenham acesso ao facebook, mas deve criar duas regras como abaixo para cada IP.
Tenha certeza que você deu permissão de execução para o arquivo /etc/init.d/Regras_Firewall. Eu te aconselho a mudar esse nome para firewall.sh. Fica melhor e mais simples.
mv /etc/init.d/Regras_Firewall /etc/init.d/firewall.sh //Esse comando renomeia o arquivo.
chmod +x /etc/init.d/firewall.sh // esse comando dá permissão de execução ao arquivo.
Depois para iniciar/reiniciar/parar o iptables é só executar:
/etc/init.d/firewall.sh start, restart ou stop.
Daí você coloca o comando '/etc/init.d/firewall.sh start' (sem as aspas) dentro de /etc/rc.local antes da linha exit 0, que o arquivo será iniciado automaticamente na inicialização do servidor.
Qualquer dúvida posta de novo.

#/bin/bash
iptables -Z # Zera as regras das chains
iptables -F # Remove as regras das chains
iptables -X # Apaga as chains
iptables -t nat -Z
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -Z
iptables -t mangle -F
iptables -t mangle -X
#
##Carrega os módulos
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe iptable_mangle
#
##Definindo políticas padrões
########################
#iptables -P INPUT DROP # iptables a política padrão da chain INPUT é proibir tudo
#iptables -P FORWARD DROP
#iptables -P OUTPUT ACCEPT
#
iptables -A FORWARD -o lo -j ACCEPT
#
##Regras de segurança na internet
#################################
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW ! -i eth1 -j DROP # Interface de entrada da internet
iptables -A FORWARD -m state --state NEW ! -i eth1 -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
#
## Minimiza o ataque de DOS
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#
#esta regra protege contra IP spoofing
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
#
iptables -A FORWARD -s ip_a_ser_liberado -j ACCEPT
iptables -A INPUT -s ip_a_ser_liberado -j ACCEPT
#
#LIMPAR ARQUIVO ip_facebook
#echo "" > /etc/squid3/facebook
#CAPTURAR IP DO FACEBOOK
host www.facebook.com >> /etc/squid3/ipbloqueados

## EXPRESSÃO REGULAR PARA CAPTURAR SOMENTE OS IPS DO ARQUIVO host_facebook
sed -n 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\nip&\n/gp' /etc/squid3/ipbloqueados | grep ip | sed 's/ip//'| sort | uniq >> /etc/squid3/facebook

##Bloqueia os hosts do facebook
for ip in $(cat /etc/squid3/facebook); do
iptables -I FORWARD -s $ip -j DROP;
iptables -I INPUT -s $ip -j DROP;
done
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE


Olá caros amigo bom dia,

eu fiz da forma como vc me passou. O bloqueio continua a funcionar, mas a liberação nao funciona.
Ainda não consegui liberar para os pcs que preciso.




17. Re: Iptables + facebook

Buckminster
Buckminster

(usa Debian)

Enviado em 03/04/2013 - 11:39h

Em
iptables -A FORWARD -s ip_a_ser_liberado -j ACCEPT
iptables -A INPUT -s ip_a_ser_liberado -j ACCEPT

faça

iptables -I FORWARD -s ip_a_ser_liberado -j ACCEPT
iptables -I INPUT -s ip_a_ser_liberado -j ACCEPT

Deve funcionar.


18. Re: Iptables + facebook

WILLIAN VITOR DO AMOR
willsazon

(usa Ubuntu)

Enviado em 03/04/2013 - 13:27h

Buckminster escreveu:

Em
iptables -A FORWARD -s ip_a_ser_liberado -j ACCEPT
iptables -A INPUT -s ip_a_ser_liberado -j ACCEPT

faça

iptables -I FORWARD -s ip_a_ser_liberado -j ACCEPT
iptables -I INPUT -s ip_a_ser_liberado -j ACCEPT

Deve funcionar.


É acabo de fazer o teste e realmente também não funcionou.

:(



19. Re: Iptables + facebook

Buckminster
Buckminster

(usa Debian)

Enviado em 03/04/2013 - 15:22h

willsazon escreveu:

Buckminster escreveu:

Em
iptables -A FORWARD -s ip_a_ser_liberado -j ACCEPT
iptables -A INPUT -s ip_a_ser_liberado -j ACCEPT

faça

iptables -I FORWARD -s ip_a_ser_liberado -j ACCEPT
iptables -I INPUT -s ip_a_ser_liberado -j ACCEPT

Deve funcionar.


É acabo de fazer o teste e realmente também não funcionou.

:(


Faz o seguinte, coloca essas regras depois do script de bloqueio, logo depois de 'done'.
E coloca o IP a ser liberado no formato 192.168.1.1/24, por exemplo. << onde /24 é a máscara de rede 255.255.255.0, daí você coloca a máscara da sua rede.
/8 = 255.0.0.0
/16 = 255.255.0.0

Se não funcionar você vai ter que inserir os IPs a serem liberados dentro do bloco de bloqueio.

##Bloqueia os hosts do facebook
for ip in $(cat /etc/squid3/facebook); do
iptables -A FORWARD -s ip_liberado/xx -j ACCEPT;
iptables -A INPUT -s ip_liberado/xx -j ACCEPT;
iptables -I FORWARD -s $ip -j DROP;
iptables -I INPUT -s $ip -j DROP;
done

Tenta com -A e com -I.

O que acontece é o seguinte: o script de bloqueio pega todos os IPs da rede que acessam o facebook e joga dentro do arquivo /etc/squid3/facebook e depois bloqueia eles. Desse jeito acima até pode dar certo, mas só tentando para saber.
Senão você terá que fazer o seguinte:

##Bloqueia os hosts do facebook e libera alguns IPs
for ip in $(cat /etc/squid3/facebook); do
iptables -I FORWARD -s $ip==ip_liberado -j ACCEPT;
iptables -I INPUT -s $ip==ip_liberado -j ACCEPT;
iptables -I FORWARD -s $ip -j DROP;
iptables -I INPUT -s $ip -j DROP;
done

Você somente terá que olhar dentro do arquivo /etc/squid3/facebook para ver em qual formato ele captura os IPs e colocar os IPs a serem liberados no mesmo formato em ip_liberado depois de $ip==

ip é uma variável e eu estou dizendo que quando essa variável for igual ao ip tal, o iptables deve liberar e depois nas linhas seguintes bloquear todos os outros IPs.

OUtra coisa que eu percebi, a linha:
#echo "" > /etc/squid3/facebook
está comentada. Seria bom descomentá-la, assim o arquivo /etc/squid3/facebook será limpo cada vez que iniciar ou reiniciar o iptables.


20. Re: Iptables + facebook

WILLIAN VITOR DO AMOR
willsazon

(usa Ubuntu)

Enviado em 03/04/2013 - 17:33h

Buckminster escreveu:

willsazon escreveu:

Buckminster escreveu:

Em
iptables -A FORWARD -s ip_a_ser_liberado -j ACCEPT
iptables -A INPUT -s ip_a_ser_liberado -j ACCEPT

faça

iptables -I FORWARD -s ip_a_ser_liberado -j ACCEPT
iptables -I INPUT -s ip_a_ser_liberado -j ACCEPT

Deve funcionar.


É acabo de fazer o teste e realmente também não funcionou.

:(


Faz o seguinte, coloca essas regras depois do script de bloqueio, logo depois de 'done'.
E coloca o IP a ser liberado no formato 192.168.1.1/24, por exemplo. << onde /24 é a máscara de rede 255.255.255.0, daí você coloca a máscara da sua rede.
/8 = 255.0.0.0
/16 = 255.255.0.0

Se não funcionar você vai ter que inserir os IPs a serem liberados dentro do bloco de bloqueio.

##Bloqueia os hosts do facebook
for ip in $(cat /etc/squid3/facebook); do
iptables -A FORWARD -s ip_liberado/xx -j ACCEPT;
iptables -A INPUT -s ip_liberado/xx -j ACCEPT;
iptables -I FORWARD -s $ip -j DROP;
iptables -I INPUT -s $ip -j DROP;
done

Tenta com -A e com -I.

O que acontece é o seguinte: o script de bloqueio pega todos os IPs da rede que acessam o facebook e joga dentro do arquivo /etc/squid3/facebook e depois bloqueia eles. Desse jeito acima até pode dar certo, mas só tentando para saber.
Senão você terá que fazer o seguinte:

##Bloqueia os hosts do facebook e libera alguns IPs
for ip in $(cat /etc/squid3/facebook); do
iptables -I FORWARD -s $ip==ip_liberado -j ACCEPT;
iptables -I INPUT -s $ip==ip_liberado -j ACCEPT;
iptables -I FORWARD -s $ip -j DROP;
iptables -I INPUT -s $ip -j DROP;
done

Você somente terá que olhar dentro do arquivo /etc/squid3/facebook para ver em qual formato ele captura os IPs e colocar os IPs a serem liberados no mesmo formato em ip_liberado depois de $ip==

ip é uma variável e eu estou dizendo que quando essa variável for igual ao ip tal, o iptables deve liberar e depois nas linhas seguintes bloquear todos os outros IPs.

OUtra coisa que eu percebi, a linha:
#echo "" > /etc/squid3/facebook
está comentada. Seria bom descomentá-la, assim o arquivo /etc/squid3/facebook será limpo cada vez que iniciar ou reiniciar o iptables.


Bom na verdade o arquivo facebook contem é os ips do facebook e nao da minha rede local. Como o facebook
tem um "dominio dinamico" com uma grande faixa de ips eu teria que localizar todos e ir bloqueando um por um. O Script q faz o bloqueio ele analiza o ip do facebook naquele momento de acesso e joga no arquivo facebook. Se o ip estive la ele nega o acesso.

Na verdade ele nem chega a fazer a requisicao ao facebook.

Ai nao esta dando certo por isso.
A variavel ip são os ips do facebook.

Eu acho q teria que ter algo assim:

##Bloqueia os hosts do facebook e libera alguns IPs
for ip in $(cat /etc/squid3/facebook); do
#Aqui veria que o ip_liberado esta apto a acessar o facebook.
iptables -I FORWARD -s $ip ip_liberado ACCEPT;
iptables -I INPUT -s $ip ip_liberado ACCEPT;
#Aqui negaria ao resto
iptables -I FORWARD -s $ip -j DROP;
iptables -I INPUT -s $ip -j DROP;
done


so que eu nao estou conseguindo montar essa logica.




21. Re: Iptables + facebook

Buckminster
Buckminster

(usa Debian)

Enviado em 03/04/2013 - 22:39h

Buckminster escreveu:

Assim dará certo. Testei aqui. Porém se forem muitos IPs para liberar terá que ser feito de outra maneira.

##Bloqueia os hosts do facebook e libera alguns IPs
for ip in $(cat /etc/squid3/facebook); do
iptables -I FORWARD -s $ip ! -d ip_liberado/xx -j DROP;
iptables -I INPUT -s $ip ! -d ip_liberado/xx -j DROP;
done

O ponto de exclamação inverte o sentido. Assim ele vai liberar para os ip_liberados e bloquear para os outros.


Faça assim:

# Bloqueia os hosts do facebook e libera determinados IPs
for ip in $(cat /etc/squid3/facebook); do for il in $(cat /etc/liberados); do
iptables -I FORWARD -s $ip ! -d $il -j DROP;
iptables -I INPUT -s $ip ! -d $il -j DROP;
done; done

Cria o arquivo /etc/liberados (ou dentro de /etc/squid3/liberados) e dentro deste arquivo coloca os Ips que você quer liberar, um por linha, por exemplo:
192.168.1.2
192.168.1.3

Testado e aprovado.
Meus conhecimentos de Shell Script andavam meio parados.
Aguardo um retorno.


22. Re: Iptables + facebook

WILLIAN VITOR DO AMOR
willsazon

(usa Ubuntu)

Enviado em 04/04/2013 - 10:51h

Buckminster escreveu:

Buckminster escreveu:

Assim dará certo. Testei aqui. Porém se forem muitos IPs para liberar terá que ser feito de outra maneira.

##Bloqueia os hosts do facebook e libera alguns IPs
for ip in $(cat /etc/squid3/facebook); do
iptables -I FORWARD -s $ip ! -d ip_liberado/xx -j DROP;
iptables -I INPUT -s $ip ! -d ip_liberado/xx -j DROP;
done

O ponto de exclamação inverte o sentido. Assim ele vai liberar para os ip_liberados e bloquear para os outros.


Faça assim:

# Bloqueia os hosts do facebook e libera determinados IPs
for ip in $(cat /etc/squid3/facebook); do for il in $(cat /etc/liberados); do
iptables -I FORWARD -s $ip ! -d $il -j DROP;
iptables -I INPUT -s $ip ! -d $il -j DROP;
done; done

Cria o arquivo /etc/liberados (ou dentro de /etc/squid3/liberados) e dentro deste arquivo coloca os Ips que você quer liberar, um por linha, por exemplo:
192.168.1.2
192.168.1.3

Testado e aprovado.
Meus conhecimentos de Shell Script andavam meio parados.
Aguardo um retorno.



e ai cara,

bom dia.

não sei se estou fazendo algo de errado.
criei o arquivo no /etc/squid3/libera_facebook.

meu script ficou assim


##
#Bloqueia o facebook para os outros acessos
#Limpa o arquivo com os dominios do facebook
echo "" > /etc/squid3/facebook
#Aqui captura o ip do facebook novamente
host www.facebook.com >> /etc/squid3/ipbloqueados
#Condicao para bloqueio
sed -n 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\nip&\n/gp' /etc/squid3/ipbloqueados | grep ip | sed 's/ip//'| sort | uniq >> /etc/squid3/facebook
##Bloqueia os hosts do facebook
for ip in $(cat /etc/squid3/facebook); do for il in $(cat /etc/squid3/libera_facebook);do
iptables -I FORWARD -s $ip ! -d $il -j DROP;
iptables -I INPUT -s $ip ! -d $il -j DROP;
done;
done
.

fiz um teste com o meu ip aqui mas nao liberou.

dentro do arquivo coloquei o ip no formato
192.168.10.20

Tentei tambem colocando so por ip, mesmo assim nao foi.


23. Re: Iptables + facebook

Buckminster
Buckminster

(usa Debian)

Enviado em 04/04/2013 - 12:43h

willsazon escreveu:

Buckminster escreveu:

Buckminster escreveu:

Assim dará certo. Testei aqui. Porém se forem muitos IPs para liberar terá que ser feito de outra maneira.

##Bloqueia os hosts do facebook e libera alguns IPs
for ip in $(cat /etc/squid3/facebook); do
iptables -I FORWARD -s $ip ! -d ip_liberado/xx -j DROP;
iptables -I INPUT -s $ip ! -d ip_liberado/xx -j DROP;
done

O ponto de exclamação inverte o sentido. Assim ele vai liberar para os ip_liberados e bloquear para os outros.


Faça assim:

# Bloqueia os hosts do facebook e libera determinados IPs
for ip in $(cat /etc/squid3/facebook); do for il in $(cat /etc/liberados); do
iptables -I FORWARD -s $ip ! -d $il -j DROP;
iptables -I INPUT -s $ip ! -d $il -j DROP;
done; done

Cria o arquivo /etc/liberados (ou dentro de /etc/squid3/liberados) e dentro deste arquivo coloca os Ips que você quer liberar, um por linha, por exemplo:
192.168.1.2
192.168.1.3

Testado e aprovado.
Meus conhecimentos de Shell Script andavam meio parados.
Aguardo um retorno.



e ai cara,

bom dia.

não sei se estou fazendo algo de errado.
criei o arquivo no /etc/squid3/libera_facebook.

meu script ficou assim


##
#Bloqueia o facebook para os outros acessos
#Limpa o arquivo com os dominios do facebook
echo "" > /etc/squid3/facebook
#Aqui captura o ip do facebook novamente
host www.facebook.com >> /etc/squid3/ipbloqueados
#Condicao para bloqueio
sed -n 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\nip&\n/gp' /etc/squid3/ipbloqueados | grep ip | sed 's/ip//'| sort | uniq >> /etc/squid3/facebook
##Bloqueia os hosts do facebook
for ip in $(cat /etc/squid3/facebook); do for il in $(cat /etc/squid3/libera_facebook);do
iptables -I FORWARD -s $ip ! -d $il -j DROP;
iptables -I INPUT -s $ip ! -d $il -j DROP;
done;
done
.

fiz um teste com o meu ip aqui mas nao liberou.

dentro do arquivo coloquei o ip no formato
192.168.10.20

Tentei tambem colocando so por ip, mesmo assim nao foi.


Teu código está correto, mas andei vendo as regras aqui debaixo:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 << aqui deve ser a placa de rede que responde pela tua rede interna.

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE << aqui deve ser a placa de rede na qual entra a internet.

Está a mesma placa de rede nas duas regras.

Se não for isso, talvez há alguma regra conflitante acima ou abaixo do teu script de firewall. Porém, se você não alterou ele e está igual como te enviei deveria funcionar.
Ou talvez há alguma regra no squid.conf que está bloqueando alguns IPs da rede interna.

Você tem o serviço de DHCP junto nesse servidor?


24. Re: Iptables + facebook

WILLIAN VITOR DO AMOR
willsazon

(usa Ubuntu)

Enviado em 04/04/2013 - 14:27h

Buckminster escreveu:

willsazon escreveu:

Buckminster escreveu:

Buckminster escreveu:

Assim dará certo. Testei aqui. Porém se forem muitos IPs para liberar terá que ser feito de outra maneira.

##Bloqueia os hosts do facebook e libera alguns IPs
for ip in $(cat /etc/squid3/facebook); do
iptables -I FORWARD -s $ip ! -d ip_liberado/xx -j DROP;
iptables -I INPUT -s $ip ! -d ip_liberado/xx -j DROP;
done

O ponto de exclamação inverte o sentido. Assim ele vai liberar para os ip_liberados e bloquear para os outros.


Faça assim:

# Bloqueia os hosts do facebook e libera determinados IPs
for ip in $(cat /etc/squid3/facebook); do for il in $(cat /etc/liberados); do
iptables -I FORWARD -s $ip ! -d $il -j DROP;
iptables -I INPUT -s $ip ! -d $il -j DROP;
done; done

Cria o arquivo /etc/liberados (ou dentro de /etc/squid3/liberados) e dentro deste arquivo coloca os Ips que você quer liberar, um por linha, por exemplo:
192.168.1.2
192.168.1.3

Testado e aprovado.
Meus conhecimentos de Shell Script andavam meio parados.
Aguardo um retorno.



e ai cara,

bom dia.

não sei se estou fazendo algo de errado.
criei o arquivo no /etc/squid3/libera_facebook.

meu script ficou assim


##
#Bloqueia o facebook para os outros acessos
#Limpa o arquivo com os dominios do facebook
echo "" > /etc/squid3/facebook
#Aqui captura o ip do facebook novamente
host www.facebook.com >> /etc/squid3/ipbloqueados
#Condicao para bloqueio
sed -n 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\nip&\n/gp' /etc/squid3/ipbloqueados | grep ip | sed 's/ip//'| sort | uniq >> /etc/squid3/facebook
##Bloqueia os hosts do facebook
for ip in $(cat /etc/squid3/facebook); do for il in $(cat /etc/squid3/libera_facebook);do
iptables -I FORWARD -s $ip ! -d $il -j DROP;
iptables -I INPUT -s $ip ! -d $il -j DROP;
done;
done
.

fiz um teste com o meu ip aqui mas nao liberou.

dentro do arquivo coloquei o ip no formato
192.168.10.20

Tentei tambem colocando so por ip, mesmo assim nao foi.


Teu código está correto, mas andei vendo as regras aqui debaixo:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 << aqui deve ser a placa de rede que responde pela tua rede interna.

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE << aqui deve ser a placa de rede na qual entra a internet.

Está a mesma placa de rede nas duas regras.

Se não for isso, talvez há alguma regra conflitante acima ou abaixo do teu script de firewall. Porém, se você não alterou ele e está igual como te enviei deveria funcionar.
Ou talvez há alguma regra no squid.conf que está bloqueando alguns IPs da rede interna.

Você tem o serviço de DHCP junto nesse servidor?


Eu fiz um backup do meu script anterior e usei o que voce me passou.

O serviço de dhpc é nessa maquina tambem. Ele é o servidor proxy da minha empresa.

eu tambem tenho uma regra no squid que blquea o face por palavras. Mas o ip das maquinas que eu queria liberar estao foram dessa regra esta fora da regra.

Sera que pode ser isso?





01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts