Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- clear
- echo "------------ FIREWALL ------------"
- ## iptables
- ipt=iptables
- ## link1
- link1_iface=eth0 # interface do seu link1
- link1_rede=10.0.0.0/255.255.255.0 # aqui você coloca sua rede, com máscara
- link1_gw=10.0.0.253 # o gateway do seu link1
- link1_ip_local=10.0.0.74 # o ip do seu server do link1
- ## link2
- link2_iface=eth1 # interface do seu link2
- link2_rede=10.0.0.0/255.255.255.0 # aqui você coloca sua rede, com máscara
- link2_gw=10.0.0.253 # o gateway do seu link2
- link2_ip_local=10.0.0.120 # o ip do seu server do link2
- ## rede local
- lan_iface=eth2
- lan_rede=192.168.0.0/255.255.255.0 # aqui você coloca sua rede com máscara
- lan_gw=192.168.0.254 # aqui coloca o gw da rede local
- # carregar módulos
- echo "Carregando módulos..."
- modprobe ip_tables
- modprobe iptable_nat
- modprobe iptable_mangle
- modprobe ip_nat_ftp
- modprobe ip_nat_h323
- modprobe ipt_limit
- modprobe ipt_tos
- # limpar regras
- echo "Limpando regras antigas..."
- $ipt -F
- $ipt -t nat -F
- $ipt -t mangle -F
- $ipt -X
- $ipt -t nat -X
- $ipt -t mangle -X
- # ação padrão - dropar tudo
- $ipt -P INPUT DROP
- $ipt -P FORWARD DROP
- $ipt -P OUTPUT ACCEPT
- # aceitar pacotes de retorno
- $ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- $ipt -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
- # proteções
- # anti-ip spoofing - desativar por causa do iproute2
- if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
- for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
- echo 0 > $f
- done
- fi
- $ipt -A INPUT -i $link1_iface -s 192.168.0.0/255.255.255.0 -j DROP
- $ipt -A INPUT -i $link2_iface -s 192.168.0.0/255.255.255.0 -j DROP
- $ipt -A INPUT -i $link1_iface -s 172.0.0.0/255.0.0.0 -j DROP
- $ipt -A INPUT -i $link2_iface -s 172.0.0.0/255.0.0.0 -j DROP
- $ipt -A INPUT -i $link1_iface -s 10.0.0.0/255.255.255.0 -j DROP
- $ipt -A INPUT -i $link2_iface -s 10.0.0.0/255.255.255.0 -j DROP
- # ativando repasse de pacotes
- echo 1 > /proc/sys/net/ipv4/ip_dynaddr
- echo 1 > /proc/sys/net/ipv4/ip_forward
- # QoS
- $ipt -I FORWARD -p tcp --tcp-flags SYN,RST SYN --dport 1863 -j TCPMSS --clamp-mss-to-pmtu
- $ipt -I FORWARD -p tcp --tcp-flags SYN,RST SYN --dport 5190 -j TCPMSS --clamp-mss-to-pmtu
- $ipt -I FORWARD -p tcp --tcp-flags SYN,RST SYN --dport 7001 -j TCPMSS --clamp-mss-to-pmtu
- # liberar acesso interno
- echo "Liberando acesso local..."
- $ipt -A INPUT -i loopback -j ACCEPT
- $ipt -A INPUT -s 127.0.0.1 -j ACCEPT
- $ipt -A INPUT -s $link1_ip_local -j ACCEPT
- $ipt -A INPUT -s $link2_ip_local -j ACCEPT
- # serviços externos
- echo "Liberando acesso aos serviços..."
- # dns
- $ipt -A INPUT -p tcp --dport 53 -j ACCEPT
- $ipt -A INPUT -p udp --dport 53 -j ACCEPT
- $ipt -A INPUT -p tcp --sport 53 -j ACCEPT
- $ipt -A INPUT -p udp --sport 53 -j ACCEPT
- # retorno proxy
- $ipt -A INPUT -p tcp --dport 3128 --sport 80 -j ACCEPT
- $ipt -A INPUT -p tcp --dport 3128 --sport 8080 -j ACCEPT
- # serviços internos
- # coloque aqui para permitir acesso aos seus serviços internos
- $ipt -A INPUT -i $lan_iface -p tcp --dport 22 -j ACCEPT
- $ipt -A INPUT -i $lan_iface -p tcp --dport 53 -j ACCEPT
- $ipt -A INPUT -i $lan_iface -p udp --dport 53 -j ACCEPT
- $ipt -A INPUT -i $lan_iface -p tcp --dport 80 -j ACCEPT
- $ipt -A INPUT -i $lan_iface -p tcp --dport 3128 -j ACCEPT
- ### rotas
- # resetar tabelas de rotas
- echo "255 local" > /etc/iproute2/rt_tables
- echo "254 main" >> /etc/iproute2/rt_tables
- echo "253 default" >> /etc/iproute2/rt_tables
- echo "0 unspec" >> /etc/iproute2/rt_tables
- echo "30 link1" >> /etc/iproute2/rt_tables
- echo "31 link2" >> /etc/iproute2/rt_tables
- # remover rotas padrão - se houver
- ip route del default &> /dev/null
- ip route del default &> /dev/null
- ip route del default &> /dev/null
- # remover tabelas
- ip rule del lookup link1 &> /dev/null
- ip rule del lookup link1 &> /dev/null
- ip rule del lookup link1 &> /dev/null
- ip rule del lookup link2 &> /dev/null
- ip rule del lookup link2 &> /dev/null
- ip rule del lookup link2 &> /dev/null
- # adicionar rotas nas tabelas
- # tabela link1
- # remover regras
- # detalhe antes de cat é uma crase "`" e não uma aspas simples
- for ip in `cat /etc/ips.link1`
- do
- ip rule del from $ip &> /dev/null
- done
- ip rule del from $link1_ip_local &> /dev/null
- # adicionar regras
- # detalhe antes de cat é uma crase "`" e não uma aspas simples
- for ip in `cat /etc/ips.link1`
- do
- ip rule add from $ip table link1 prio 30 &> /dev/null
- done
- ip rule add from $link1_ip_local table link1 prio 30
- # adicionar rotas
- ip route add $link1_ip_local via $link1_gw dev $link1_iface table link1
- ip route add default via $link1_gw table link1
- # tabela link2
- # remover regras
- # detalhe antes de cat é uma crase "`" e não uma aspas simples
- for ip in `cat /etc/ips.link2`
- do
- ip rule del from $ip &> /dev/null
- done
- ip rule del from $link2_ip_local &> /dev/null
- # adicionar regras
- # detalhe antes de cat é uma crase "`" e não uma aspas simples
- for ip in `cat /etc/ips.link2`
- do
- ip rule add from $ip table link2 prio 30 &> /dev/null
- done
- ip rule add from $link2_ip_local table link2 prio 30
- # adicionar rotas
- ip route add $link2_ip_local via $link2_gw dev $link2_iface table link2
- ip route add default via $link2_gw table link2
- # aplicar mudanças no iproute
- ip route flush cache
- # liberando acesso clientes
- echo -n "Liberando acesso para clientes..."
- # clientes link1
- for ip in `cat /etc/ips.link1`
- do
- # liberação de FORWARD
- $ipt -A FORWARD -s $ip -j ACCEPT
- # marcar pacotes para gráfico de consumo de banda
- $ipt -t mangle -A PREROUTING -s $ip -j ACCEPT # down
- $ipt -t mangle -A POSTROUTING -d $ip -j ACCEPT # up
- # mascaramento - radio uol
- $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.5.71 -j ACCEPT
- $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.8.74 -j ACCEPT
- $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.8.75 -j ACCEPT
- $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.8.118 -j ACCEPT
- # nat caixa econômica federal (conectividade)
- $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.201.0.0/16 --dport 80 -j ACCEPT
- # redirecionamento para o proxy
- $ipt -t nat -A PREROUTING -p tcp -s $ip --dport 80 -j REDIRECT --to-port 3128
- $ipt -t nat -A PREROUTING -p tcp -s $ip --dport 8080 -j REDIRECT --to-port 3128
- $ipt -t nat -A POSTROUTING -s $ip -d 0/0 -j SNAT --to $link1_ip_local
- echo -n "."
- done
- # clientes link2
- for ip in `cat /etc/ips.link2`
- do
- # liberação de FORWARD
- $ipt -A FORWARD -s $ip -j ACCEPT
- # marcar pacotes para gráfico de consumo de banda
- $ipt -t mangle -A PREROUTING -s $ip -j ACCEPT # down
- $ipt -t mangle -A POSTROUTING -d $ip -j ACCEPT # up
- # mascaramento - radio uol
- $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.5.71 -j ACCEPT
- $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.8.74 -j ACCEPT
- $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.8.75 -j ACCEPT
- $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.8.118 -j ACCEPT
- # nat caixa econômica federal (conectividade)
- $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.201.0.0/16 --dport 80 -j ACCEPT
- # redirecionamento para o proxy
- $ipt -t nat -A PREROUTING -p tcp -s $ip --dport 80 -j REDIRECT --to-port 3128
- $ipt -t nat -A PREROUTING -p tcp -s $ip --dport 8080 -j REDIRECT --to-port 3128
- $ipt -t nat -A POSTROUTING -s $ip -d 0/0 -j SNAT --to $link2_ip_local
- echo -n "."
- done
- echo ""
- echo "----------------------------------"
Advertisement
Add Comment
Please, Sign In to add comment