Guest User

Untitled

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