Guest User

Untitled

a guest
Nov 22nd, 2012
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 7.14 KB | None | 0 0
  1. #!/bin/sh
  2. #### Variaveis ####
  3.  
  4. #### Conexao com a Internet ####
  5. # Interface externa
  6. IFEXT="eth1"
  7. # IP Externo
  8. IPEXT="177.54.11.148"
  9.  
  10. #### Conexao com a rede interna ####
  11. # Interface interna
  12. IFINT="eth0"
  13. # IP Interno
  14. IPINT="10.0.0.2"
  15. # IP Servidor de E-mails (temporario)
  16. IPSMT="10.0.0.1"
  17. # IP Servidor Zimbra
  18. IPZIM="10.0.0.6"
  19. # IP SAPL
  20. IPSAP="10.0.0.5"
  21. # Rede
  22. NTW="10.0.0.0/24"
  23. # Loopback
  24. LOO="127.0.0.1"
  25.  
  26. #### Comando do IPTables ####
  27. IPT=`which iptables`
  28.  
  29. echo ""
  30. $IPT -V # Apenas para ver a versão na tela
  31. echo ""
  32.  
  33. iptables_start(){
  34.  
  35.     #### Ativando modulos de mascaramento ####
  36.     modprobe iptable_nat
  37.     modprobe ip_nat_ftp
  38.     modprobe ip_conntrack
  39.     modprobe ip_conntrack_ftp
  40.  
  41.     #### Ativando roteamento de pacotes ####
  42.     echo 1 > /proc/sys/net/ipv4/ip_forward
  43.     echo 1 > /proc/sys/net/ipv4/tcp_syncookies
  44.     echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
  45.     echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
  46.  
  47.     #### Limpando regras ####        
  48.     echo -n "Cleaning current rules... "
  49.     $IPT -F
  50.     $IPT -F -t nat
  51.     $IPT -F -t mangle
  52.     $IPT -X
  53.     $IPT -X -t nat
  54.     $IPT -X -t mangle
  55.     $IPT -Z
  56.     $IPT -Z -t nat
  57.     $IPT -Z -t mangle
  58.     echo "Ok"
  59.                                                                                                                                                                                                        
  60.     #### Politicas padrao ####                                                                                                             
  61.     echo -n "Setting default policies (DROP)... "
  62.     $IPT -P INPUT DROP
  63.     $IPT -P FORWARD DROP
  64.     $IPT -P OUTPUT ACCEPT
  65.     echo "Ok"
  66.  
  67.     #### Acesso loopback ####
  68.     echo -n "Setting loopback access..."
  69.     $IPT -A INPUT -s $LOO -d $LOO -j ACCEPT
  70.     $IPT -A FORWARD -s $LOO -d $LOO -j ACCEPT
  71.     echo "Ok"
  72.  
  73.     #### Acesso DNS ####
  74.     echo -n "Setting DNS access..."
  75.     $IPT -A INPUT -p tcp -s $NTW --dport 53 -j ACCEPT
  76.     $IPT -A INPUT -p udp -s $NTW --dport 53 -j ACCEPT
  77.     $IPT -A FORWARD -p tcp -s $NTW --dport 53 -j ACCEPT
  78.     $IPT -A FORWARD -p udp -s $NTW --dport 53 -j ACCEPT
  79.     echo "Ok"
  80.    
  81.     #### Acesso Telnet ####
  82.     echo -n "Setting DNS access..."
  83.     $IPT -A INPUT -p tcp -s $NTW --dport 23 -j ACCEPT
  84.     $IPT -A INPUT -p udp -s $NTW --dport 23 -j ACCEPT
  85.     $IPT -A FORWARD -p tcp -s $NTW --dport 23 -j ACCEPT
  86.     $IPT -A FORWARD -p udp -s $NTW --dport 23 -j ACCEPT
  87.     echo "Ok"
  88.  
  89.     #### Dropando pacotes mal-formados ####
  90.     #echo -n "Malformed packages..."
  91.     #$IPT -A INPUT -i $IFEXT -m unclean -m limit --limit 3/s -j LOG --log-level info --log-prefix "FIREWALL: Pacote mal formado -- "
  92.     #$IPT -A INPUT -i $IFEXT -m unclean -j DROP
  93.     #echo "Ok"
  94.  
  95.     #### Medidas de segurança contra spoofing, ping of death... ####
  96.     echo -n "Setting ip spoofing protection..."
  97.     $IPT -A INPUT -i $IFEXT -s 10.0.0.0/8 -m limit --limit 3/s -j LOG --log-level info --log-prefix "FIREWALL: Spoofing - 10. --"
  98.     $IPT -A INPUT -i $IFEXT -s 10.0.0.0/8 -j DROP
  99.     $IPT -A INPUT -i $IFEXT -s 172.16.0.0/16 -m limit --limit 3/s -j LOG --log-level info --log-prefix "FIREWALL: Spoofing - 172.16. --"
  100.     $IPT -A INPUT -i $IFEXT -s 172.16.0.0/16 -j DROP
  101.     $IPT -A INPUT -i $IFEXT -s 192.168.0.0/16 -m limit --limit 3/s -j LOG --log-level info --log-prefix "FIREWALL: Spoofing - 192.168. --"
  102.     $IPT -A INPUT -i $IFEXT -s 192.168.0.0/16 -j DROP
  103.     echo "Ok"
  104.  
  105.     #### Protecao contra synflood ####
  106.     $IPT -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT
  107.     #### Proteção contra ping da morte ####
  108.     $IPT -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
  109.  
  110.     #### Trafego para o Apache ####
  111.     echo -n "Settings to Apache HTTPD..."
  112.     #$IPT -A INPUT -i $IFEXT -p tcp --dport 80 -j ACCEPT
  113.     #$IPT -A INPUT -i $IFEXT -p udp --dport 80 -j ACCEPT
  114.     #$IPT -A INPUT -i $IFEXT -p tcp --dport 443 -j ACCEPT
  115.     #$IPT -A INPUT -i $IFEXT -p udp --dport 443 -j ACCEPT
  116.     $IPT -t nat -A PREROUTING -i $IFEXT -d $IPEXT -p tcp -m tcp --dport 80 -j DNAT --to $IPSMT:80
  117.     $IPT -t nat -A POSTROUTING -d $IPSMT -p tcp --dport 80 -j SNAT --to $IPEXT
  118.  
  119.     $IPT -t nat -A PREROUTING -i $IFEXT -d $IPEXT -p udp -m udp --dport 80 -j DNAT --to $IPSMT:80
  120.     $IPT -t nat -A POSTROUTING -d $IPSMT -p udp --dport 80 -j SNAT --to $IPEXT
  121.  
  122.     $IPT -t nat -A PREROUTING -i $IFEXT -d $IPEXT -p tcp -m tcp --dport 443 -j DNAT --to $IPSMT:443
  123.     $IPT -t nat -A POSTROUTING -d $IPSMT -p tcp --dport 443 -j SNAT --to $IPEXT
  124.    
  125.     $IPT -t nat -A PREROUTING -i $IFEXT -d $IPEXT -p udp -m udp --dport 443 -j DNAT --to $IPSMT:443
  126.     $IPT -t nat -A POSTROUTING -d $IPSMT -p udp --dport 443 -j SNAT --to $IPEXT
  127.     echo "Ok"
  128.  
  129.     #### Trafego para e-mail ###
  130.     echo -n "Redirecting e-mail ports..."
  131.     $IPT -t nat -A PREROUTING -i $IFEXT -d $IPEXT -p tcp --dport 25 -j DNAT --to $IPSMT:25
  132.     $IPT -t nat -A POSTROUTING -d $IPSMT -p tcp --dport 25 -j SNAT --to $IPEXT
  133.     echo "Ok"
  134.  
  135.     #### Proxy transparente ####
  136.     echo -n "Setting transparent proxy... "
  137.     $IPT -A INPUT -p tcp -s $NTW --dport 8787 -j ACCEPT
  138.     $IPT -A INPUT -p udp -s $NTW --dport 8787 -j ACCEPT
  139.     $IPT -t nat -A PREROUTING -s $NTW -p tcp --dport 80 -j REDIRECT --to-port 8787
  140.     $IPT -t nat -A PREROUTING -s $NTW -p udp --dport 80 -j REDIRECT --to-port 8787
  141.     echo "Ok"
  142.    
  143.     #### IP's livres ####
  144.     echo -n "Masquerading free traffic..."
  145.     for IP in `cat /etc/init.d/ips`; do
  146.         $IPT -t nat -A POSTROUTING -o $IFEXT -s $IP/32 -j MASQUERADE
  147.     done
  148.     echo "Ok"
  149.  
  150.     #### Mascarando todo o resto ####
  151.     echo -n "Masquerading all other traffic..."
  152.     for PORT in `cat /etc/init.d/ports`; do
  153.         $IPT -t nat -A POSTROUTING -o $IFEXT -s $NTW -p tcp --dport $PORT -j MASQUERADE
  154.         $IPT -t nat -A POSTROUTING -o $IFEXT -s $NTW -p udp --dport $PORT -j MASQUERADE
  155.     done
  156.     echo "Ok"
  157.  
  158.     $IPT -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
  159.     $IPT -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
  160.     $IPT -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
  161.  
  162.     #### Tarefas de log ####
  163.     echo -n "Setting log actions..."
  164.     $IPT -A INPUT -m limit --limit 3/m --limit-burst 3 -j LOG --log-level info --log-prefix "Firewall: INPUT --"
  165.     $IPT -A OUTPUT -m limit --limit 3/m --limit-burst 3 -j LOG --log-level info --log-prefix "Firewall: OUTPUT --"
  166.     $IPT -A FORWARD -m limit --limit 3/m --limit-burst 3 -j LOG --log-level info --log-prefix "Firewall: FORWARD --"
  167.     echo "Ok"
  168.  
  169.     echo ""
  170.     echo "Iptables started sucessfully"
  171.     echo -n ""
  172. }
  173.  
  174. iptables_stop(){
  175.    
  176.     echo -n "Stopping Iptables firewall... "
  177.     echo -n ""
  178.  
  179.     echo -n "Cleaning rules... "
  180.     $IPT -F
  181.     $IPT -F -t nat
  182.     $IPT -F -t mangle
  183.     $IPT -X
  184.     $IPT -X -t nat
  185.     $IPT -X -t mangle
  186.     $IPT -Z
  187.     $IPT -Z -t nat
  188.     $IPT -Z -t mangle
  189.     echo "Ok"
  190.    
  191.     echo -n "Setting default ACCEPT policy... "
  192.     $IPT -P FORWARD ACCEPT
  193.     $IPT -P INPUT ACCEPT
  194.     $IPT -P OUTPUT ACCEPT
  195.     echo "Ok"
  196.     echo -n ""
  197.     echo -n "Iptables stopped sucessfuly"
  198.     echo -n ""
  199.  
  200. }
  201.  
  202. iptables_restart(){
  203.     iptables_stop
  204.     echo ""
  205.     sleep 1
  206.     iptables_start
  207. }
  208.  
  209. iptables_status(){
  210.     echo "==========   NAT Status Policies   =========="
  211.     echo ""
  212.     $IPT -t nat -nL
  213.     echo ""
  214.     echo "==========   Mangle Status Policies   =========="
  215.     echo ""
  216.     $IPT -t mangle -nL
  217.     echo ""
  218.     echo "==========   Filter Status Policies   =========="
  219.     echo ""
  220.     $IPT -nL
  221.     echo ""
  222. }
  223.  
  224. case "$1" in
  225.     "start")  
  226.         iptables_start
  227.         ;;
  228.     "stop")
  229.         iptables_up
  230.         ;;
  231.     "restart")
  232.         iptables_restart
  233.         ;;
  234.     "status")
  235.         iptables_status
  236.         ;;
  237.     * ) echo "Use: [start] [stop] [restart] [status]"
  238. esac
Advertisement
Add Comment
Please, Sign In to add comment