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