home *** CD-ROM | disk | FTP | other *** search
/ Chip: 2005 Utilities / CHIP Utilities 2005.7z / CHIP Utilities 2005.iso / images / freesco.igz / freesco.img / router / rc / rc_masq < prev    next >
Encoding:
Text File  |  2003-05-20  |  4.6 KB  |  173 lines

  1. #!/bin/sh
  2. # Firewalling script
  3.  
  4. [ "$1" = start -o "$1" = restart -o "$1" = newip ] || exit
  5.  
  6. . /etc/system.cfg
  7. . /etc/colors
  8. . /etc/chat.pwd
  9. . /etc/live.cfg
  10.  
  11. Pd=deny     # default policy - deny or reject
  12. Pa=accept
  13. Pl=$Pa
  14. I=ipfwadm
  15. E=echo
  16.  
  17. for i in 0 1 2 3 4 5 6 7 8 9; do
  18.     neti=`eval '$E $NETWORK'$i`
  19.     netm=`eval '$E $NETMASK'$i`
  20.     [ "$neti" ] && export "NET$i"=$neti/$netm
  21.     modi=`eval '$E $MADDR'$i`
  22.     [ "$modi" ] && export "MOD$i"=$modi
  23. done    
  24. [ "$USEDHCP0" = y -a "$NET0" = "" ] && export NET0="90.0.0.0"
  25. [ "$TRUSTLN" = n ] && Pl=$Pd    # local net policy
  26. Pm=$Pl
  27. [ "$TRUSTMD" = n ] && Pm=$Pd    # modem policy
  28. rin()    {
  29.     [ "$1" -a "$2" ] || return
  30.     $I -I -a $Pa -W $1 -D 255.255.255.255
  31.     if [ "$TRUSTLN" = y ]; then
  32.         $I -I -a $Pa -W $1
  33.     else
  34.         $I -I -a $Pa -W $1 -S $2
  35.         $I -I -a $Pd -S $2 $LG
  36.     fi
  37. }
  38. din()    {
  39.     [ "$1" ] || return
  40.     $I -I -a $Pd -D $1 $LG
  41.     $I -I -a $Pd -S $1 $LG
  42. }
  43. cfw()    {
  44.     [ "$2" -a "$3" ] || return
  45.     $I -F -a $1 -S $2 -D $3
  46.     $I -F -a $1 -S $3 -D $2
  47. }
  48. ban()    {
  49.     j=$1
  50.     for i in `cat /etc/banlist.cfg | sed 's/\#.*//;s/$/\    /'`; do
  51.         set -- `$E $i | sed s/,/\    /g`
  52.         [ "$j$1" = ll ] && $I -F -a $Pd -S $2
  53.         if [ "$j$1" = ee ]; then
  54.             $I -I -a $Pd -D $2
  55.             $I -I -a $Pd -S $2
  56.         fi
  57.     done
  58. }
  59. msq()    {
  60.     [ "$2" ] || return
  61.     $I -F -a masquerad -W $1 -S $2
  62. }
  63. export INET=ppp0; [ "$ROUTER" = ethernet -a "0$USEPPP0" != 0y ] && export INET=$INTNAME0
  64. if [ "$ENAMSQ" = y ]; then
  65.     $E -n "Enabling NAT and firewalling...        "
  66.     $I -I -f
  67.     $I -I -p $Pd
  68.     $I -O -f
  69.     $I -O -p $Pa
  70.     $I -F -f
  71.     $I -F -p $Pd
  72.     [ "$LOGFIRE" = n ] || LG="-o"
  73.     for FILE in /rc/rc_user /pkg/rc/rc_*; do 
  74.             ls $FILE >/dev/null 2>/dev/null && $FILE firewall
  75.     done
  76.          $I -I -a $Pa -W lo
  77.     ban e
  78.     for i in 0 1 2 3 4 5 6 7 8 9; do
  79.         [ `eval '$E $MOD'$i` ] && $I -I -a $Pa -V "1.1.1.`expr $i + 1`"
  80.     done
  81.     [ "$ROUTER" = ethernet -a "0$USEPPP0" != 0y ] || rin $INTNAME0 $NET0
  82.     for i in 1 2 3 4 5 6 7 8 9; do
  83.         rin `eval '$E $INTNAME'$i` `eval '$E $NET'$i`
  84.     done
  85.     if [ "$ENAPING" != y ]; then
  86.         [ "$ENAPING" = s ] && $I -I -a $Pa -P icmp -S 0/0 0
  87.         $I -I -a $Pd -P icmp -S 0/0    # Block external pings        
  88.     fi
  89.     if [ "$ENADNS" = s ]; then
  90.         if [ "$DNSADDR" ]; then
  91.             $I -I -a $Pa -P tcp -S $DNSADDR 53    # open ISP primary DNS
  92.             $I -I -a $Pa -P udp -S $DNSADDR 53
  93.         else
  94.             $E -n "${CR}No DNS IP "
  95.         fi    
  96.         if [ "$DNSADDR1" ]; then
  97.             $I -I -a $Pa -P tcp -S $DNSADDR1 53 # open ISP secondary DNS
  98.             $I -I -a $Pa -P udp -S $DNSADDR1 53
  99.         fi
  100.         $I -I -a $Pd -P tcp -D 0/0 53 $LG # block the rest
  101.         $I -I -a $Pd -P udp -D 0/0 53 $LG
  102.     fi
  103.     [ "$ENATEL" = s ] && $I -I -a $Pd -P tcp -D 0/0 23 $LG # telnet
  104.     [ "$ENAID" = s ] && $I -I -a $Pd -P tcp -D 0/0 113 $LG # ident
  105.     if [ "$ENALPD" = s ]; then
  106.         for i in 0 1 2 3 4; do
  107.         LP=`eval '$E $LPPORT'$i`
  108.         [ "$LP" = "" ] || $I -I -a $Pd -P tcp -D 0/0 $LP $LG 
  109.         done
  110.     fi
  111.     [ "$ENAWWW" = s ] && $I -I -a $Pd -P tcp -D 0/0 $WWWPORT $LG # Public HTTP server
  112.     [ "$ENAWWA" = s ] && $I -I -a $Pd -P tcp -D 0/0 $WWAPORT $LG # Control HTTP server
  113.     [ "$ENAFTP" = s ] && $I -I -a $Pd -P tcp -D 0/0 $FTPPORT $LG # FTP server
  114.     [ "$USEDHCP0" = y ] || $I -I -a $Pd -P udp -D 0/0 67:68      # block dhcp
  115.     $I -I -a $Pd -P udp -D 0/0 514 $LG                # block syslog
  116.     [ "$ROUTER" = ethernet -a "0$USEPPP0" != 0y ] || din $NET0
  117.     for i in 0 1 2 3 4 5 6 7 8 9; do
  118.         [ "$i" = 0 ] || din `eval '$E $NET'$i`
  119.         din `eval '$E $MOD'$i`
  120.     done    
  121.     $I -I -a $Pa
  122.     $I -M -s 7200 10 60    # Timeouts TCP, after TCP, UDP
  123.     for i in 1 2 3 4 5 6 7 8; do
  124.         for o in 2 3 4 5 6 7 8 9; do
  125.         if [ "$i" -lt "$o" ]; then
  126.             cfw $Pl `eval '$E $NET'$i` `eval '$E $NET'$o`
  127.                 cfw $Pm `eval '$E $NET'$i` `eval '$E $MOD'$o`
  128.             cfw $Pm `eval '$E $MOD'$i` `eval '$E $MOD'$o`
  129.         fi
  130.         done
  131.     done
  132.     if [ "$ROUTER" = ethernet ]; then
  133.             cfw $Pm $NET1 $MOD0
  134.             cfw $Pm $MOD1 $MOD0
  135.     fi        
  136.     cfw $Pm $NET1 $MOD1
  137.     if [ "$ROUTER" = ethernet -a "0$USEPPP0" != 0y ]; then
  138.         ban l
  139.         for i in 0 1 2 3 4 5 6 7 8 9; do
  140.             [ "$i" = 0 ] || msq $INTNAME0 `eval '$E $NET'$i`
  141.             msq $INTNAME0 `eval '$E $MOD'$i`
  142.         done
  143.     else
  144.         for i in 0 1 2 3 4 5 6 7 8 9; do
  145.             [ "$i" = 0 ] || cfw $Pl $NET0 `eval '$E $NET'$i`
  146.             cfw $Pm $NET0 `eval '$E $MOD'$i`
  147.         done
  148.         ban l
  149.     fi
  150.     if [ "$ROUTER" = ethernet ]; then
  151.         $I -F -a masquerad -V 1.1.1.1
  152.     else
  153.         $I -F -a masquerad -S $NET0
  154.     fi
  155.     for i in 1 2 3 4 5 6 7 8 9; do
  156.         [ `eval '$E $MOD'$i` ] && $I -F -a masquerad -V "1.1.1.`expr $i + 1`"
  157.         [ `eval '$E $NET'$i` ] && $I -F -a masquerad -S `eval '$E $NET'$i`
  158.     done
  159. else
  160.     $E -n "${CM}NAT and firewalling are disabled...$CW    "
  161.     $I -I -f
  162.     $I -I -p $Pa
  163.     $I -O -f
  164.     $I -O -p $Pa
  165.     $I -F -f
  166.     $I -F -p $Pa
  167. fi
  168. if [ "$NET0" = "90.0.0.0" ]; then
  169.     $E "${CR}Failed$CW /$CY Delayed$CW"
  170. else
  171.     =
  172. fi
  173.