linux-l: HILFE zur Firewall

Frank Schreiber schreiber at lr-online.de
Di Jun 2 17:02:20 CEST 1998


Hallo,

ich moechte nach dem Muster (Linux-Magazin)
http://www.linux-magazin.de/ausgabe.1997.11/Firewall/firewall.html
eine Firewall aufbauen. Mit "ping www.linux-magazin.de"
wird die IP aufgeloest. Ich erhalte aber keine
"Verbindung".
Kann mir jemand sagen, was ich noch falsch mache. 

Vielen Dank
Frank Schreiber                 
schreiber at lr-online.de


#!/bin/sh
#start_firewall
#####################################################################
#                                                                   #
#                     FIREWALL - SCHUTZREGELN                       #
#                                                                   #
# dieses Script kann nach dem Initialisieren des Netzwerks          #
# (Skript networking) aufgerufen werden.                            #
#####################################################################

# Interface des Bastion Hosts aussen:   eth1
# Interface des Bastion Hosts innen:    eth0
# IP des Bastion Hosts aussen:          151.189.15.62
# IP des Bastion Hosts innen:           172.17.11.10
# IPs des eigenen Netzwerks:            172.17.11.0/24
# Proxy squid                     Port: 8080              

# mit Flush alle evtl. aktiven Firewall-Regeln loeschen:
ipfwadm -I -f
ipfwadm -O -f
ipfwadm -F -f
ipfwadm -A -f

# deny ist immer die default-Regel:
ipfwadm -I -p deny
ipfwadm -O -p deny
ipfwadm -F -p deny

# Sicherheitsregeln:
ipfwadm -I -a deny -S 0.0.0.0/0 -D 151.189.15.62/32 -P tcp -y   # deny
SYN-Attacke
ipfwadm -I -a deny -S 0.0.0.0/0 -D 172.17.11.0/24 -P tcp -y     # deny
SYN-Attacke
ipfwadm -O -a deny -S 172.17.11.10/32 -D 0.0.0.0/0 -P udp       # deny
masq innen
ipfwadm -O -a deny -S 172.17.11.10/32 -D 0.0.0.0/0 -P tcp       # deny
masq innen
ipfwadm -I -a deny -S 172.17.11.0/24 -D 0.0.0.0/0 -W eth1      # deny
spoofing

# Regeln fuer TCP-Verbindungen zwischen User-PC's und Internet-Servern:
# Allgemeingueltige Regeln fuer alle TCP-Verbindungen mit Masquerading:
ipfwadm -O -a accept -S 151.189.15.62/32 -D 0.0.0.0/0 -P tcp -W eth1
ipfwadm -I -a accept -S 0.0.0.0/0 -D 151.189.15.62/32 -P tcp -k -W eth1
ipfwadm -F -a accept -S 172.17.11.0/24 -D 0.0.0.0/0 -P tcp -m

# DNS-Regeln fuer alle UDP:
ipfwadm -O -a accept -S 151.189.15.62/32 -D 0.0.0.0/0 53 -P udp -W eth1
ipfwadm -I -a accept -S 0.0.0.0/0 53 -D 151.189.15.62/32 -P udp -W eth1
ipfwadm -F -a accept -S 172.17.11.0/24 -D 0.0.0.0/0 53 -P udp -m

# Regeln fuer dem Proxy-Squid TCP:
ipfwadm -I -a accept -S 127.0.0.1/32 -D 127.0.0.1/32 -P tcp
ipfwadm -O -a accept -S 127.0.0.1/32 -D 127.0.0.1/32 -P tcp

#ICMP-Ping-Regeln - fuer Testzwecke erlauben:
 ipfwadm -I -a accept -S 0.0.0.0/0 -D 0.0.0.0/0 -P icmp
 ipfwadm -O -a accept -S 0.0.0.0/0 -D 0.0.0.0/0 -P icmp
 ipfwadm -F -a accept -S 0.0.0.0/0 -D 0.0.0.0/0 -P icmp

# Den Usern Zugang gewaehren und Accounting starten:

/firewall/fw_permitall.pl                                 
##############################################


#!/usr/bin/perl
#
#fw_permit.pl

$User = shift(@ARGV) ;
open(USERS, "/etc/fwusers") || die "Can't open fwusers: $!\n" ;
$Found = 0 ;
while   (<USERS>)
{
        ($Username, $IP, $svc)
         = split(' ', $_) ;
        # Benutzer existiert und darf Dienste nutzen?
        if      ( ($Username eq $User) && $svc )
        {
                $Found = 1 ;
                # Firewall-Regeln fuer diesen User bereits vorhanden?
                $rule_found = 0 ;
                system("ipfwadm -Al -n > /tmp/rule.tmp") ;
                open(RULE, "/tmp/rule.tmp") || die "Can't open rule.tmp:
$!\n" ;
                while   (<RULE>)
                {
                        $line = $_ ;
                        $Such = $IP." " ;
                        if      ( grep(/$Such/, $line) )
                        {        $rule_found = 1 ; }
                }
                close(RULE) ;
                if      ( $rule_found == 1 )
                {
                        print "! Regeln für User ".$Username." ".$IP ;
                        print " bereits vorhanden.\n" ;
                        print "! Regeln können mit fw_deny.pl entfernt "
;
                        print "werden.\n" ;
                        exit(1) ;
           }
    # Accounting fuer den User anschalten:
     system("ipfwadm -A in -a -S".$IP." -D0/0 -W eth0") ;
     system("ipfwadm -A out -a -S0/0 -D".$IP." -W eth0") ;


     if      ( grep(/ftp/, $svc) )
         {
    #Redirect von Port-80-Verbindungen zum WWW-Proxy-Squid:
    system("ipfwadm -Ia accept -S".$IP." -D0/0 80 -Ptcp -W eth0 -r
8080");
    system("ipfwadm -Ia accept -S".$IP." -D0/0 -Ptcp -W eth0");
    system("ipfwadm -Oa accept -S0/0 -D".$IP." -Ptcp -W eth0");
    # DNS/UDP-Verbindungen:
    system("ipfwadm -Ia accept -S".$IP." -D0/0 53 -Pudp -W eth0");
    system("ipfwadm -Oa accept -S0/0 53 -D".$IP." -Pudp -W eth0");
         }
     else
         {
    if      ( grep(/www/, $svc) )
         {
   #Redirect von Port-80-Verbindungen zum WWW-Proxy-Squid:
   system("ipfwadm -Ia accept -S".$IP." -D0/0 80 -Ptcp -W eth0 -r
8080");
   system("ipfwadm -Ia accept -S".$IP." -D0/0 80 -Ptcp -W eth0");
   system("ipfwadm -Oa accept -S0/0 80 -D".$IP." -Ptcp -W eth0");
       }
     if      ( grep(/smtp/, $svc) )
      {
   system("ipfwadm -Ia accept -S".$IP." -D0/0 25 -Ptcp -W eth0");
   system("ipfwadm -Oa accept -S0/0 25 -D".$IP." -Ptcp -W eth0");
   system("ipfwadm -Ia accept -S".$IP." 25 -D0/0 -Ptcp -W eth0");
   system("ipfwadm -Oa accept -S0/0 -D".$IP." 25 -Ptcp -W eth0");
      }
    if      ( grep(/nntp/, $svc) )                                       
       {
   system("ipfwadm -Ia accept -S".$IP." -D0/0 25 -Ptcp -W eth0");
   system("ipfwadm -Oa accept -S0/0 25 -D".$IP." -Ptcp -W eth0");
   system("ipfwadm -Ia accept -S".$IP." 25 -D0/0 -Ptcp -W eth0");
   system("ipfwadm -Oa accept -S0/0 -D".$IP." 25 -Ptcp -W eth0");
      }
    if      ( grep(/nntp/, $svc) )
     {
   system("ipfwadm -Ia accept -S".$IP." -D0/0 119 -Ptcp -W eth0");
   system("ipfwadm -Oa accept -S0/0 119 -D".$IP." -Ptcp -W eth0");
   system("ipfwadm -Ia accept -S".$IP." 119 -D0/0 -Ptcp -W eth0");
   system("ipfwadm -Oa accept -S0/0 -D".$IP." 119 -Ptcp -W eth0");
     }
  # DNS-Verbindungen:
  system("ipfwadm -Ia accept -S".$IP." -D0/0 53 -Ptcp -W eth0");
  system("ipfwadm -Oa accept -S0/0 53 -D".$IP." -Ptcp -W eth0");
  system("ipfwadm -Ia accept -S".$IP." -D0/0 53 -Pudp -W eth0");
  system("ipfwadm -Oa accept -S0/0 53 -D".$IP." -Pudp -W eth0");

         }
     }
  }
 close(USERS) ;

   if      ( $Found )
  {
    print $User." - Internet konfiguriert.\n" ;
 }
else
  {
    print "! ".$User." nicht in 'fwusers' vorhanden. \n" ;
 }
#####################

#fwusers                    
Frank     172.17.11.11      www:smtp 

#####################




Mehr Informationen über die Mailingliste linux-l