Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Thursday, March 28, 2024

Diff for scripts/shell/firewall/fw-universal.sh between version 2.69 and 2.76

version 2.69, 2009/07/01 12:23:11 version 2.76, 2011/01/16 12:18:14
Line 1 
Line 1 
 #!/bin/sh  #!/bin/bash
   
 #  #
 # This will be universal firewalling script for Linux kernel (iptables) in near future  # This will be universal firewalling script for Linux kernel (iptables) in near future
 # Can be started by init or by hand.  # Can be started by init or by hand.
 #  #
 # Developed by Lubomir Host 'rajo' <rajo AT platon.sk>  # Developed by Lubomir Host 'rajo' <rajo AT platon.sk>
 # Copyright (c) 2003-2006 Platon SDG, http://platon.sk/  # Copyright (c) 2003-2011 Platon Group, http://platon.sk/
 # Licensed under terms of GNU General Public License.  # Licensed under terms of GNU General Public License.
 # All rights reserved.  # All rights reserved.
 #  #
 # $Platon: scripts/shell/firewall/fw-universal.sh,v 2.68 2009-03-04 22:51:42 nepto Exp $  # $Platon: scripts/shell/firewall/fw-universal.sh,v 2.75 2010-10-22 12:20:42 nepto Exp $
 #  #
 # Changelog:  # Changelog:
 # 2003-10-24 - created  # 2003-10-24 - created
 #  #
   
   ### BEGIN INIT INFO
   # Provides:          firewall
   # Required-Start:    $network $remote_fs
   # Required-Stop:     $network $remote_fs
   # Default-Start:     2 3 4 5
   # Default-Stop:      0 1 6
   # Short-Description: Starts firewall
   # Description:       Handle universal firewall script by Platon Group
   #                    http://platon.sk/cvs/cvs.php/scripts/shell/firewall/
   # Author:            Lubomir Host <rajo@platon.sk>
   # Copyright:         (c) 2003-2011 Platon Group
   ### END INIT INFO
   
 umask 077 # security  umask 077 # security
   
 DESC="firewall"  DESC="firewall"
Line 419  masquerade()
Line 432  masquerade()
                                 $AWK -v FS=: '  (NF == 2) { remote_ip = "$lan_ip"; remote_port = $1; local_port = $2; } \                                  $AWK -v FS=: '  (NF == 2) { remote_ip = "$lan_ip"; remote_port = $1; local_port = $2; } \
                                                                 (NF == 3) { remote_ip = $2;        remote_port = $1; local_port = $3; } \                                                                  (NF == 3) { remote_ip = $2;        remote_port = $1; local_port = $3; } \
                                                                 END { printf "remote_ip=%s; remote_port=%s; local_port=%s;", remote_ip, remote_port, local_port; }'`                                                                  END { printf "remote_ip=%s; remote_port=%s; local_port=%s;", remote_ip, remote_port, local_port; }'`
                         print_info -en " $remote_port>>$remote_ip:$local_port(udp)"                          print_info -en " $remote_port>>$remote_ip:$local_port(tcp)"
                         $IPTABLES -t nat -A PREROUTING -p TCP \                          $IPTABLES -t nat -A PREROUTING -p TCP \
                                 -i ! $NAT_LAN_IFACE -d ! $lan_ip \                                  -i ! $NAT_LAN_IFACE -d ! $lan_ip \
                                 --dport $remote_port -j REDIRECT --to-port $local_port                                  --dport $remote_port -j REDIRECT --to-port $local_port
Line 652  drop_input()
Line 665  drop_input()
                 done                  done
                 print_info " done."                  print_info " done."
         fi          fi
           if [ ! -z "$REAL_DROP_INPUT_TCP" ]; then
                   print_info -en "Drop REAL all INPUT TCP connections for ALL interfaces on ports:"
                   for port in $REAL_DROP_INPUT_TCP; do
                           print_info -en " $port(ALL)"
                           $IPTABLES -A INPUT -p TCP --dport $port -j DROP
                   done
                   print_info " done."
           fi
           if [ ! -z "$REAL_DROP_INPUT_UDP" ]; then
                   print_info -en "Drop REAL all INPUT UDP connections for ALL interfaces on ports:"
                   for port in $REAL_DROP_INPUT_UDP; do
                           print_info -en " $port(ALL)"
                           $IPTABLES -A INPUT -p UDP --dport $port -j DROP
                   done
                   print_info " done."
           fi
 } # }}}  } # }}}
   
 reject_input()  reject_input()
Line 676  reject_input()
Line 705  reject_input()
                 done                  done
                 print_info " done."                  print_info " done."
         fi          fi
           if [ ! -z "$REAL_REJECT_INPUT_TCP" ]; then
                   print_info -en "Reject REAL all INPUT TCP connections for ALL interfaces on ports:"
                   for port in $REAL_REJECT_INPUT_TCP; do
                           print_info -en " $port(ALL)"
                           $IPTABLES -A INPUT -p TCP --dport $port -j REJECT --reject-with $REJECT_WITH
                   done
                   print_info " done."
           fi
           if [ ! -z "$REAL_REJECT_INPUT_UDP" ]; then
                   print_info -en "Reject REAL all INPUT UDP connections for ALL interfaces on ports:"
                   for port in $REAL_REJECT_INPUT_UDP; do
                           for riface in $REAL_INTERFACES; do
                                   print_info -en " $port(ALL)"
                                   $IPTABLES -A INPUT -p UDP --dport $port -j REJECT --reject-with $REJECT_WITH
                           done
                   done
                   print_info " done."
           fi
 } # }}}  } # }}}
   
 allow_input()  allow_input()
 { # {{{  { # {{{
   
         if [ ! -z "$ALL_ACCEPT_INPUT_TCP" ]; then          if [ ! -z "$ALL_ACCEPT_INPUT_TCP" ]; then
                 print_info -en "Accepting ALL INPUT TCP connections on ports:"                  print_info -en "Accepting ALL INPUT TCP connections on ports:"
                 for port in $ALL_ACCEPT_INPUT_TCP; do                  for port in $ALL_ACCEPT_INPUT_TCP; do
Line 722  allow_input()
Line 768  allow_input()
                 print_info " done."                  print_info " done."
         fi          fi
   
           if [ ! -z "$REAL_ACCEPT_INPUT_TCP" ]; then
                   print_info -en "Accepting REAL all INPUT TCP connections for ALL interfaces on ports:"
                   for port in $REAL_ACCEPT_INPUT_TCP; do
                           src_ip=""
                           eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'`
                           print_info -en " $port(ALL)"`[ ! -z $src_ip ] && echo "[$src_ip]"`
                           if [ -z "$src_ip" ]; then
                                   $IPTABLES -A INPUT -p TCP --dport $port -j ACCEPT
                           else
                                   $IPTABLES -A INPUT -s $src_ip -p TCP --dport $port -j ACCEPT
                           fi
                   done
                   print_info " done."
           fi
           if [ ! -z "$REAL_ACCEPT_INPUT_UDP" ]; then
                   print_info -en "Accepting REAL all INPUT UDP connections for ALL interfaces on ports:"
                   for port in $REAL_ACCEPT_INPUT_UDP; do
                           src_ip=""
                           eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'`
                           print_info -en " $port(ALL)"`[ ! -z $src_ip ] && echo "[$src_ip]"`
                           if [ -z "$src_ip" ]; then
                                   $IPTABLES -A INPUT -p UDP --dport $port -j ACCEPT
                           else
                                   $IPTABLES -A INPUT -s $src_ip -p UDP --dport $port -j ACCEPT
                           fi
                   done
                   print_info " done."
           fi
   
         for iface in $INTERFACES; do          for iface in $INTERFACES; do
                 riface="IFname_$iface";                  riface="IFname_$iface";
                 IPS="IP_$iface";                  IPS="IP_$iface";
Line 963  configure_special_rules()
Line 1038  configure_special_rules()
   
 } # }}}  } # }}}
   
   custom_rules()
   { # {{{
           print_info -en "Executing custom rules: "
           for max_rule_num in 9 99 999; do
                   initialized="no";
                   for i in `seq -w 0 "$max_rule_num"`; do
                           varname="CUSTOM_RULE_$i";
                           if [ -z "${!varname}" ]; then
                                   break;
                           fi
                           print_info -n "#$i";
                           $IPTABLES ${!varname};
                           rc="$?";
                           if [ "$rc" -eq 0 ]; then
                                   print_info -n "[OK] ";
                           else
                                   print_info -n "[rc:$?] ";
                           fi;
                           initialized="yes";
                   done
                   if [ "X$initialized" = "Xyes" ]; then
                           break;
                   fi
           done
           print_info " done.";
   } # }}}
   
 do_ip_accounting()  do_ip_accounting()
 { # {{{  { # {{{
   
Line 1347  case "$1" in
Line 1449  case "$1" in
                 shaping_off                  shaping_off
                 shaping_on                  shaping_on
                 configure_special_rules                  configure_special_rules
                   custom_rules
                 $IPTABLES_SAVE -c > $CACHE_FILE                  $IPTABLES_SAVE -c > $CACHE_FILE
                 ;;                  ;;
   

Legend:
Removed from v.2.69  
changed lines
  Added in v.2.76

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top