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