Guest User

Untitled

a guest
Oct 30th, 2015
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 7.41 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. clear
  4.  
  5. echo "------------ FIREWALL ------------"
  6.  
  7. ## iptables
  8. ipt=iptables
  9. ## link1
  10. link1_iface=eth0 # interface do seu link1
  11. link1_rede=10.0.0.0/255.255.255.0 # aqui você coloca sua rede, com máscara
  12. link1_gw=10.0.0.253 # o gateway do seu link1
  13. link1_ip_local=10.0.0.74 # o ip do seu server do link1
  14. ## link2
  15. link2_iface=eth1 # interface do seu link2
  16. link2_rede=10.0.0.0/255.255.255.0 # aqui você coloca sua rede, com máscara
  17. link2_gw=10.0.0.253 # o gateway do seu link2
  18. link2_ip_local=10.0.0.120 # o ip do seu server do link2
  19. ## rede local
  20. lan_iface=eth2
  21. lan_rede=192.168.0.0/255.255.255.0 # aqui você coloca sua rede com máscara
  22. lan_gw=192.168.0.254 # aqui coloca o gw da rede local
  23.  
  24.  
  25. # carregar módulos
  26. echo "Carregando módulos..."
  27. modprobe ip_tables
  28. modprobe iptable_nat
  29. modprobe iptable_mangle
  30. modprobe ip_nat_ftp
  31. modprobe ip_nat_h323
  32. modprobe ipt_limit
  33. modprobe ipt_tos
  34.  
  35.  
  36. # limpar regras
  37. echo "Limpando regras antigas..."
  38. $ipt -F
  39. $ipt -t nat -F
  40. $ipt -t mangle -F
  41. $ipt -X
  42. $ipt -t nat -X
  43. $ipt -t mangle -X
  44.  
  45.  
  46. # ação padrão - dropar tudo
  47. $ipt -P INPUT DROP
  48. $ipt -P FORWARD DROP
  49. $ipt -P OUTPUT ACCEPT
  50.  
  51.  
  52. # aceitar pacotes de retorno
  53. $ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  54. $ipt -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  55.  
  56.  
  57. # proteções
  58. # anti-ip spoofing - desativar por causa do iproute2
  59. if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
  60.   for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
  61.     echo 0 > $f
  62.   done
  63. fi
  64. $ipt -A INPUT -i $link1_iface -s 192.168.0.0/255.255.255.0 -j DROP
  65. $ipt -A INPUT -i $link2_iface -s 192.168.0.0/255.255.255.0 -j DROP
  66. $ipt -A INPUT -i $link1_iface -s 172.0.0.0/255.0.0.0 -j DROP
  67. $ipt -A INPUT -i $link2_iface -s 172.0.0.0/255.0.0.0 -j DROP
  68. $ipt -A INPUT -i $link1_iface -s 10.0.0.0/255.255.255.0 -j DROP
  69. $ipt -A INPUT -i $link2_iface -s 10.0.0.0/255.255.255.0 -j DROP
  70.  
  71.  
  72. # ativando repasse de pacotes
  73. echo 1 > /proc/sys/net/ipv4/ip_dynaddr
  74. echo 1 > /proc/sys/net/ipv4/ip_forward
  75.  
  76.  
  77. # QoS
  78. $ipt -I FORWARD -p tcp --tcp-flags SYN,RST SYN --dport 1863 -j TCPMSS --clamp-mss-to-pmtu
  79. $ipt -I FORWARD -p tcp --tcp-flags SYN,RST SYN --dport 5190 -j TCPMSS --clamp-mss-to-pmtu
  80. $ipt -I FORWARD -p tcp --tcp-flags SYN,RST SYN --dport 7001 -j TCPMSS --clamp-mss-to-pmtu
  81.  
  82.  
  83. # liberar acesso interno
  84. echo "Liberando acesso local..."
  85. $ipt -A INPUT -i loopback -j ACCEPT
  86. $ipt -A INPUT -s 127.0.0.1 -j ACCEPT
  87. $ipt -A INPUT -s $link1_ip_local -j ACCEPT
  88. $ipt -A INPUT -s $link2_ip_local -j ACCEPT
  89.  
  90.  
  91. # serviços externos
  92. echo "Liberando acesso aos serviços..."
  93. # dns
  94. $ipt -A INPUT -p tcp --dport 53 -j ACCEPT
  95. $ipt -A INPUT -p udp --dport 53 -j ACCEPT
  96. $ipt -A INPUT -p tcp --sport 53 -j ACCEPT
  97. $ipt -A INPUT -p udp --sport 53 -j ACCEPT
  98.  
  99.  
  100. # retorno proxy
  101. $ipt -A INPUT -p tcp --dport 3128 --sport 80   -j ACCEPT
  102. $ipt -A INPUT -p tcp --dport 3128 --sport 8080 -j ACCEPT
  103.  
  104. # serviços internos
  105. # coloque aqui para permitir acesso aos seus serviços internos
  106. $ipt -A INPUT -i $lan_iface -p tcp --dport 22   -j ACCEPT
  107. $ipt -A INPUT -i $lan_iface -p tcp --dport 53   -j ACCEPT
  108. $ipt -A INPUT -i $lan_iface -p udp --dport 53   -j ACCEPT
  109. $ipt -A INPUT -i $lan_iface -p tcp --dport 80   -j ACCEPT
  110. $ipt -A INPUT -i $lan_iface -p tcp --dport 3128 -j ACCEPT
  111.  
  112.  
  113. ### rotas
  114. # resetar tabelas de rotas
  115. echo "255 local" > /etc/iproute2/rt_tables
  116. echo "254 main" >> /etc/iproute2/rt_tables
  117. echo "253 default" >> /etc/iproute2/rt_tables
  118. echo "0 unspec" >> /etc/iproute2/rt_tables
  119. echo "30 link1" >> /etc/iproute2/rt_tables
  120. echo "31 link2" >> /etc/iproute2/rt_tables
  121. # remover rotas padrão - se houver
  122. ip route del default &> /dev/null
  123. ip route del default &> /dev/null
  124. ip route del default &> /dev/null
  125. # remover tabelas
  126. ip rule del lookup link1 &> /dev/null
  127. ip rule del lookup link1 &> /dev/null
  128. ip rule del lookup link1 &> /dev/null
  129. ip rule del lookup link2 &> /dev/null
  130. ip rule del lookup link2 &> /dev/null
  131. ip rule del lookup link2 &> /dev/null
  132.  
  133. # adicionar rotas nas tabelas
  134. # tabela link1
  135. # remover regras
  136. # detalhe antes de cat é uma crase "`" e não uma aspas simples
  137. for ip in `cat /etc/ips.link1`
  138. do
  139. ip rule del from $ip &> /dev/null
  140. done
  141. ip rule del from $link1_ip_local &> /dev/null
  142. # adicionar regras
  143. # detalhe antes de cat é uma crase "`" e não uma aspas simples
  144. for ip in `cat /etc/ips.link1`
  145. do
  146. ip rule add from $ip table link1 prio 30 &> /dev/null
  147. done
  148. ip rule add from $link1_ip_local table link1 prio 30
  149. # adicionar rotas
  150. ip route add $link1_ip_local via $link1_gw dev $link1_iface table link1
  151. ip route add default via $link1_gw table link1
  152.  
  153. # tabela link2
  154. # remover regras
  155. # detalhe antes de cat é uma crase "`" e não uma aspas simples
  156. for ip in `cat /etc/ips.link2`
  157. do
  158. ip rule del from $ip &> /dev/null
  159. done
  160. ip rule del from $link2_ip_local &> /dev/null
  161. # adicionar regras
  162. # detalhe antes de cat é uma crase "`" e não uma aspas simples
  163. for ip in `cat /etc/ips.link2`
  164. do
  165. ip rule add from $ip table link2 prio 30 &> /dev/null
  166. done
  167. ip rule add from $link2_ip_local table link2 prio 30
  168. # adicionar rotas
  169. ip route add $link2_ip_local via $link2_gw dev $link2_iface table link2
  170. ip route add default via $link2_gw table link2
  171.  
  172. # aplicar mudanças no iproute
  173. ip route flush cache
  174.  
  175.  
  176. # liberando acesso clientes
  177. echo -n "Liberando acesso para clientes..."
  178. # clientes link1
  179. for ip in `cat /etc/ips.link1`
  180. do
  181.  
  182.   # liberação de FORWARD
  183.   $ipt -A FORWARD -s $ip -j ACCEPT
  184.  
  185.   # marcar pacotes para gráfico de consumo de banda
  186.   $ipt -t mangle -A PREROUTING -s $ip -j ACCEPT # down
  187.   $ipt -t mangle -A POSTROUTING -d $ip -j ACCEPT # up
  188.  
  189.   # mascaramento - radio uol
  190.   $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.5.71 -j ACCEPT
  191.   $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.8.74 -j ACCEPT
  192.   $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.8.75 -j ACCEPT
  193.   $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.8.118 -j ACCEPT
  194.  
  195.   # nat caixa econômica federal (conectividade)
  196.   $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.201.0.0/16 --dport 80 -j ACCEPT
  197.  
  198. # redirecionamento para o proxy
  199.   $ipt -t nat -A PREROUTING -p tcp -s $ip --dport 80 -j REDIRECT --to-port 3128
  200.   $ipt -t nat -A PREROUTING -p tcp -s $ip --dport 8080 -j REDIRECT --to-port 3128
  201.  
  202.   $ipt -t nat -A POSTROUTING -s $ip -d 0/0 -j SNAT --to $link1_ip_local
  203.  
  204.   echo -n "."
  205.  
  206. done
  207. # clientes link2
  208. for ip in `cat /etc/ips.link2`
  209. do
  210.  
  211.   # liberação de FORWARD
  212.   $ipt -A FORWARD -s $ip -j ACCEPT
  213.  
  214.   # marcar pacotes para gráfico de consumo de banda
  215.   $ipt -t mangle -A PREROUTING -s $ip -j ACCEPT # down
  216.   $ipt -t mangle -A POSTROUTING -d $ip -j ACCEPT # up
  217.  
  218.   # mascaramento - radio uol
  219.   $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.5.71 -j ACCEPT
  220.   $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.8.74 -j ACCEPT
  221.   $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.8.75 -j ACCEPT
  222.   $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.221.8.118 -j ACCEPT
  223.  
  224.   # nat caixa econômica federal (conectividade)
  225.   $ipt -t nat -A PREROUTING -p tcp -s $ip -d 200.201.0.0/16 --dport 80 -j ACCEPT
  226.  
  227.   # redirecionamento para o proxy
  228.   $ipt -t nat -A PREROUTING -p tcp -s $ip --dport 80 -j REDIRECT --to-port 3128
  229.   $ipt -t nat -A PREROUTING -p tcp -s $ip --dport 8080 -j REDIRECT --to-port 3128
  230.  
  231.   $ipt -t nat -A POSTROUTING -s $ip -d 0/0 -j SNAT --to $link2_ip_local
  232.  
  233.   echo -n "."
  234.  
  235. done
  236. echo ""
  237. echo "----------------------------------"
Advertisement
Add Comment
Please, Sign In to add comment