Guest User

Untitled

a guest
Nov 9th, 2012
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.87 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. #### Definicoes de variaveis #######
  4.  
  5. #### Interface externa - Conexao com a internet ####
  6. IFEXT="eth1"
  7.  
  8. #### Interface interna - Conexao com a rede local ####
  9. IFLCL="eth0"
  10.  
  11. #### Definindo o caminho do iptables ####
  12. IPT=`which iptables`
  13.  
  14. #### Rede interna ####
  15. NTW="10.0.0.0/24"
  16.  
  17. #### IP Interno ####
  18. IPINT="10.0.0.1"
  19.  
  20. #### IP E-mail ####
  21. IPZIM="10.0.0.6"
  22.  
  23. #### IP SMTP ####
  24. IPSMT="10.0.0.2"
  25.  
  26. #### IP SAPL ####
  27. IPSAP="10.0.0.5"
  28.  
  29. #### IP Externo ####
  30. IPEXT="177.54.11.146"
  31.  
  32. #### Mostrando a versao ####
  33. $IPT -V
  34. echo  ""
  35.  
  36. iptables_up(){
  37.  
  38.         #### Modulos de mascaramento ####
  39.  
  40.         modprobe iptable_nat
  41.         modprobe ip_nat_ftp
  42.         modprobe ip_conntrack
  43.         modprobe ip_conntrack_ftp
  44.  
  45.  
  46.         #### Ativa o roteamento de pacotes ####
  47.  
  48.         echo 1 > /proc/sys/net/ipv4/ip_forward
  49.         echo 1 > /proc/sys/net/ipv4/tcp_syncookies
  50.         echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
  51.         echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
  52.  
  53.  
  54.         #### Limpando regras ####
  55.  
  56.         echo -n "Cleaning current rules... "
  57.         $IPT -F
  58.         $IPT -F -t nat
  59.         $IPT -F -t mangle
  60.         $IPT -X
  61.         $IPT -X -t nat
  62.         $IPT -X -t mangle
  63.         $IPT -Z
  64.         $IPT -Z -t nat
  65.         $IPT -Z -t mangle
  66.         echo "Ok"
  67.  
  68.  
  69.         #### Politicas padrao ####
  70.  
  71.         echo -n "Setting default policies (DROP)... "
  72.         $IPT -P INPUT DROP
  73.         $IPT -P FORWARD DROP
  74.         $IPT -P OUTPUT ACCEPT
  75.         echo "Ok"
  76.  
  77.         #### Proxy transparente ####
  78.         echo -n "Setting transparent proxy... "
  79.         $IPT -t nat -A PREROUTING -i $IFLCL -p tcp --dport 80 -j REDIRECT --to-port 8787
  80.         $IPT -t nat -A PREROUTING -i $IFLCL -p udp --dport 80 -j REDIRECT --to-port 8787
  81.         #### Conectividade Social ####
  82.         $IPT -t nat -A PREROUTING -p tcp -d 200.201.0.0/16 -j ACCEPT
  83.         #### Tráfego para servidor de E-mail (vai sair depois)####
  84.         $IPT -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to $IPSMT:25
  85.  
  86.         #$IPT -t nat -A PREROUTING -i $IFEXT -p tcp --dport 80 -j DNAT --to 10.0.0.1:80
  87.         #$IPT -t nat -A PREROUTING -i $IFEXT -p udp --dport 80 -j DNAT --to 10.0.0.1:80
  88.  
  89.         echo "Ok"
  90.  
  91.         #### NAT de saida ####
  92.  
  93.         echo -n "Setting source nat... "
  94.         #### IP's sem limite ####
  95.         for IP in `cat /etc/init.d/ips`; do
  96.                 $IPT -A POSTROUTING -t nat -o $IFEXT -s $IP/32 -j SNAT --to $IPEXT
  97.         done
  98.  
  99.         ### Portas liberadas ####
  100.         for PORT in `cat /etc/init.d/ports`; do
  101.                 $IPT -A POSTROUTING -t nat -o $IFEXT -s $NTW -p tcp --dport $PORT -j SNAT --to $IPEXT
  102.                 $IPT -A POSTROUTING -t nat -o $IFEXT -s $NTW -p udp --dport $PORT -j SNAT --to $IPEXT
  103.         done
  104.         echo "Ok"
  105.  
  106.         #### Politicas de INPUT ####
  107.  
  108.         echo -n "Setting INPUT policies... "
  109.         #### Liberando acesso loopback ####
  110.         $IPT -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
  111.         #### Limitando ping a 5/s ####
  112.         $IPT -A INPUT -p icmp -m limit --limit 5/s -j ACCEPT
  113.         #### Liberando APACHE local ####
  114.         $IPT -A INPUT -p tcp --dport 80 -j ACCEPT
  115.         $IPT -A INPUT -p tcp --sport 80 -j ACCEPT
  116.         #### Acesso dns ####
  117.         $IPT -A INPUT -p tcp -s $NTW --dport 53 -j ACCEPT
  118.         $IPT -A INPUT -p udp -s $NTW --dport 53 -j ACCEPT
  119.         #### Bloqueando IP Spoofing
  120.         $IPT -A INPUT -i $IFEXT -s 10.0.0.0/8 -m limit --limit 3/m -j LOG --log-prefix "FW: 10. Spoofing -- "
  121.         $IPT -A INPUT -i $IFEXT -s 10.0.0.0/8 -j DROP
  122.         $IPT -A INPUT -i $IFEXT -s 172.16.0.0/16 -m limit --limit 3/m -j LOG --log-prefix "FW: 172. Spoofing -- "
  123.         $IPT -A INPUT -i $IFEXT -s 172.16.0.0/16 -j DROP
  124.         $IPT -A INPUT -i $IFEXT -s 192.168.0.0/16 -m limit --limit 3/m -j LOG --log-prefix "FW: 192. Spoofing -- "
  125.         $IPT -A INPUT -i $IFEXT -s 192.168.0.0/16 -j DROP
  126.  
  127.         ### Trafego para o squid ###
  128.         $IPT -A INPUT -i $IFLCL -p tcp -s $NTW --dport 8787 -j ACCEPT
  129.         $IPT -A INPUT -i $IFLCL -p udp -s $NTW --dport 8787 -j ACCEPT
  130.  
  131.         ### Trafego SSH ###
  132.         $IPT -A INPUT -p tcp -s $NTW --dport 22 -j ACCEPT
  133.  
  134.         $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  135.         $IPT -A INPUT -m limit --limit 3/m --limit-burst 3 -j LOG --log-level info --log-prefix "Firewall: INPUT --"
  136.         echo "Ok"
  137.  
  138.  
  139.         #### Politicas de FORWARD ####
  140.  
  141.         echo -n "Setting FORWARD policies... "
  142.         #### Liberando acesso loopback ####
  143.         $IPT -A FORWARD -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
  144.         #### Acesso DNS ####
  145.         $IPT -A FORWARD -p udp -s $NTW --dport 53 -j ACCEPT
  146.         $IPT -A FORWARD -p tcp -s $NTW --dport 53 -j ACCEPT
  147.         #### Libera navegacao web ####
  148.         for PORT in `cat /etc/init.d/ports`; do
  149.                 $IPT -A FORWARD -s $NTW -p tcp --dport $PORT -j ACCEPT
  150.                 $IPT -A FORWARD -s $NTW -p udp --dport $PORT -j ACCEPT
  151.         done
  152.  
  153.         #### Chatice do Google ####
  154.         $IPT -A FORWARD -i $IFLCL -o IFEXT -d google.com -j ACCEPT
  155.  
  156.         #### Conectividade Social ####
  157.         $IPT -A FORWARD -p tcp -d 200.201.0.0/16 -j ACCEPT
  158.  
  159.         $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  160.         $IPT -A FORWARD -m limit --limit 3/m --limit-burst 3 -j LOG --log-level info --log-prefix "Firewall: FORWARD -- "
  161.         echo "Ok"
  162.  
  163.         echo -n ""
  164.         echo "Iptables starded sucessfuly"
  165.         echo -n ""
  166.  
  167. }
  168.  
  169. iptables_down(){
  170.  
  171.         echo -n "Stopping Iptables firewall... "
  172.         echo -n ""
  173.  
  174.         echo -n "Cleaning rules... "
  175.         $IPT -F
  176.         $IPT -F -t nat
  177.         $IPT -F -t mangle
  178.         $IPT -X
  179.         $IPT -X -t nat
  180.         $IPT -X -t mangle
  181.         $IPT -Z
  182.         $IPT -Z -t nat
  183.         $IPT -Z -t mangle
  184.         echo "Ok"
  185.  
  186.         echo -n "Setting default ACCEPT policy... "
  187.         $IPT -P FORWARD ACCEPT
  188.         $IPT -P INPUT ACCEPT
  189.         $IPT -P OUTPUT ACCEPT
  190.         echo "Ok"
  191.  
  192.         echo -n ""
  193.         echo -n "Iptables stopped sucessfuly"
  194.         echo -n ""
  195.  
  196. }
  197.  
  198. iptables_restart(){
  199.         iptables_down
  200.         echo ""
  201.         sleep 1
  202.         iptables_up
  203. }
  204.  
  205. iptables_status(){
  206.         echo "==========   NAT Status Policies   =========="
  207.         echo ""
  208.         $IPT -t nat -nL
  209.         echo ""
  210.         echo "==========   Mangle Status Policies   =========="
  211.         echo ""
  212.         $IPT -t mangle -nL
  213.         echo ""
  214.         echo "==========   Filter Status Policies   =========="
  215.         echo ""
  216.         $IPT -nL
  217.         echo ""
  218. }
  219.  
  220. case "$1" in
  221.         "start")
  222.                 iptables_up
  223.         ;;
  224.         "stop")
  225.                 iptables_down
  226.         ;;
  227.         "restart")
  228.                 iptables_restart
  229.         ;;
  230.         "status")
  231.                 iptables_status
  232.         ;;
  233.         * ) echo "Use: [start] [stop] [restart] [status]"
  234. esac
Advertisement
Add Comment
Please, Sign In to add comment