PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Scirpt Fehler bei Firewallscript



flex001
26.05.04, 11:12
Hi,

ich bin hier grad wieder am abtippeln aus meim Buch und jetzt bekomm ich schon wieder ne ****** Fehlermeldung: :mad:

Starte die Firewall...
./fire: line 365 unexpectet EOF while looking for matching '"'
./fire: line 369: syntax error: unexpectet end of file





#!/bin/sh
C_RED='\033[1m\033[31m'
C_RESET='\033[m'

# Eine Kurzbezeichnung fuer Iptables

if test -x /sbin/iptables
then
R=/sbin/iptables
if test -x /usr/sbin/iptables
then
echo -en "${C_RED}${0}: ERROR: Es gibt 2 Programme iptables. "
echo -e "Breche ab! $ {C_RESET}"
exit 1
fi
else
if test -x /usr/sbin/iptables
then
R=/usr/sbin/iptables
else
echo -en "${C_RED}${0}: ERROR: iptables nicht gefunden. "
echo -e "Breche ab! ${C_RESET}"
exit 1
fi
fi

# Variablen

# Externes Interface

EXTIP="212.75.50.131"
EXTIF="eth0"

# Internes Interface

INTIP="192.168.0.1"
INTIF="tr0"
INTBITS="24"
INTNET="$INTIP"/"$INTBITS"

# DNS Server

DNSSERVER='cat /etc/resolv.conf | grep '^nameserver' | sed 's/nameserver//''

# Hohe Ports, die aus dem Internet nicht zugreifbar sein sollen

# TCP

TCPPROTECTED='3128 8000 8080'

# UDP

UDPPROTECTED=''

############################
#Falls das Skript mit falschen Parametern aufgerufen wurde
#############################

case "$1" in
start)
echo "Starte die Firewall ..."
;;
stop)
echo "Beeende die Firewall ..."
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac

################################
# Regeln die immer gelten
################################

# Alle Regeln loeschen

$R -F INPUT
$R -F FORWARD
$R -F OUTPUT

# Alle Pakete, die nicht explizit erlaubt sind, sind verboten

$R -P INPUT DROP
$R -P FORWARD DROP
$R -P OUTPUT DROP

# Protokollierung gespoofter Pakete

$R -A INPUT -i ! "$INTIF" -s "$INTIP" -j LOg --log-level warning --log-prefix "$INTIF" gespooft: "
$R -A INPUT -i ! "$INTIF" -s "$INTIP" -j DROP

$R -A INPUT -i ! lo -s 127.0.0.1 -j LOG --log-level warning --log-prefix "loopback gespooft: "
$R -A INPUT -i ! lo -s 127.0.0.1 -j DROP


$R -A FORWARD -i ! "$INTIF" -s "$INTIP" -j LOG --log-level warning --log-prefix "$INTIF gespooft: "
$R -A FORWARD -i ! "$INTIF" -s "$INTIP" -j DROP

$R -A FORWARD -i ! lo -s 127.0.0.1 -j LOG --log-level warning --log-prefix "loopback gespooft: "
$R -A INPUT -i ! lo -s 127.0.0.1 -j DROP

# Ident

#$R -A INPUT -i "$EXTIP" -p tcp --dport 113 -j LOG --log-level info --log-prefix"ident probe: "
$R -A INPUT -i "$EXTIP" -p tcp --dport 113 -j DROP

# Unaufgevorderte Verbindungsaufbauten (NEW) und ungueltige Pakete
#(INVALID) des externen Interfaces

# eigene Chain fuer diese Tests

$R -N states
$R -F states

# dorthin verzweigen

$R -A INPUT -i "$EXTIF" -j states
$R -A FORWARD -i "$EXTIF" -j states

# die Regeln

$R -A states -m state --state NEW,INVALID -j LOG --log-prefix "Unerwuenschte Verbindung: "
$R -A states -m state --state NEW,INVALID -j DROP

# Ruecksprung, falls noch nicht verworfen

# $R -A states -j RETURN

# lokale Pakete sind erlaubt

$R -A INPUT -i lo -j ACCEPT
$R -A OUTPUT -o lo -j ACCEPT

# NetBIOS über TCP/IP

$R -A INPUT -p UDP -s "$INTNET" --sport 137:139 -j DROP
$R -A INPUT -p UDP -s "$INTNET" --dport 137:139 -j DROP
$R -A INPUT -p TCP -s "$INTNET" --sport 137:139 -j DROP
$R -A INPUT -p TCP -s "$INTNET" --dport 137:139 -j DROP

$R -A FORWARD -p UDP -s "$INTNET" --sport 137:139 -j DROP
$R -A FORWARD -p UDP -s "$INTNET" --dport 137:139 -j DROP
$R -A FORWARD -p TCP -s "$INTNET" --sport 137:139 -j DROP
$R -A FORWARD -p TCP -s "$INTNET" --dport 137:139 -j DROP

case "$1" in
#####################################
# Die Firewall soll heruntergefahren werden
#####################################
stop)

# Loeschen der Chains

$R -F ext-in
$R -X ext-in
$R -F ext-fw
$R -X ext-fw
$R -F ext-out
$R -X ext-out
$R -F int-in
$R -X int-in
$R -F int-fw
$R -X int-fw
$R -F int-out
$R -X int-out

# Protokollierung ungewoehnlicher Pakete

$R -A INPUT -s 0.0.0.0/0 -j LOG --log-level notice --log-prefix "INPUT default: "
$R -A INPUT -s 0.0.0.0/0 -j DROP
$R -A OUTPUT -s 0.0.0.0/0 -j LOG --log-level notice --log-prefix "OUTPUT default: "
$R -A OUTPUT -s 0.0.0.0/0 -j DROP
$R -A FORWARD -s 0.0.0.0/0 -j LOG --log-level notice --log-prefix "FORWARD default: "
$R -A FORWARD -s 0.0.0.0/0 -j DROP

;;


#######################################
# Die Firewall soll ihre Arbeit aufnehmen
#######################################
start)

# ICMP

$R -A INPUT -p icmp --icmp-type 0 -j ACCEPT
$R -A INPUT -p icmp --icmp-type 3 -j ACCEPT
$R -A INPUT -p icmp --icmp-type 8 -j ACCEPT
$R -A INPUT -p icmp --icmp-type 11 -j ACCEPT
$R -A INPUt -p icmp --icmp-type 12 -j ACCEPT

$R -I states -p icmp --icmp-type 8 -j RETURN

# Eigene Chains

# Externes Interface

$R -N ext-in
$R -N ext-fw
$R -N ext-out

# Internes Interface

$R -N int-in
$R -N int-fw
$R -N int-out

# Verteilung der Pakete der Chains

$R -A INPUT -i "$INTIF" -s "$INTNET" -j int-in
$R -A INPUT -i "$EXTIF" -j ext-in
$R -A FORWARD -i "$INTIF" -o "$EXTIF" -s "$INTNET" -j int-fw
$R -A FORWARD -i "$EXTIF" -o "$INTIF" -j ext-fw
$R -A OUTPUT -o "$INTIF" -j int-out
$R -A OUTPUT -o "§EXTIF" -j ext-out

# Zugriff auf Server der Firewall

# TCP

for port in $TCPPROTECTED
do
$R -A ext-in -p tcp --dport $port -j LOG --log-prefix "Zugriff auf Port $port TCP"
$R -A ext-in -p tcp --dport $port -j DROP
done

# UDP

for port in $UDPPROTECTED
do
$R -A ext-in -p udp --dport $port -j LOG --log-prefix "Zurgiff auf Port $port UDP"
$R -A ext-in -p udp --dport $port -j DROP
done

# DNS

# Alle eingetragenen Server freischalten

for DNS in $DNSSERVER
do

# Zugriff auf den externen Server

$R -A ext-in -p udp -s "$DNS" --sport 53 --dport 1024:65535 -j ACCEPT
$R -A ext-out -p udp -d "$DNS" --dport 53 --sport 1024:65535 -j ACCEPT
$R -A ext-in -p tcp -s "$DNS" --sport 53 --dport 1024:65535 -j ACCEPT
$R -A ext-out -p tcp -d "$DNS" --dport 53 --sport 1024:65535 -j ACCEPT

# Forwarding durch die Firewall

$R -A int-fw -p udp -d "$DNS" --dport 53 -j ACCEPT
$R -A ext-fw -p udp -s "$DNS" --sport 53 -j ACCEPT

$R -A int-fw -p tcp -d "$DNS" --dport 53 -j ACCEPT
$R -A ext-fw -p tcp -s "$DNS" --sport 53 -j ACCEPT

done

# HTTP
# Zugriff auf den Server

$R -A ext-in -p tcp --dport 1024:65535 --sport 80 ! --syn -j ACCEPT
$R -A ext-out -p tcp --sport 1024:65535 --dport 80 -j ACCEPT

# Forwarding durch die Firewall

$R -A int-fw -p tcp --sport 1024:65535 --dport 80 -j ACCEPT
$R -A ext-fw -p tcp --dport 1024:65535 --sport 80 -j ACCEPT

# HTTPS
# Zugriff auf den Server

$R -A ext-in -p tcp --dport 1024:65535 --sport 443 ! --syn -j ACCEPT
$R -A int-out -p tcp --sport 1024:65535 --dport 443 -j ACCEPT

# Forwarding durch die Firewall

$R -A int-fw -p tcp --sport 1024:65535 --dport 443 -j ACCEPT
$R -A ext-fw -p tcp --dport 1024:65535 --sport 443 -j ACCEPT

# SMTP
# Zugriff auf den Server

# $R -A ext-in -p tcp --dport 1024:65535 --sport 25 ! --syn -j ACCEPT
# $R -A ext-out -p tcp --sport 1024:65535 --dport 25 -j ACCEPT

# Forwarding durch die Firewall

# $R -A int-fw -p tcp --sport 1024:65535 --dport 25 -j ACCEPT
# $R -A ext-fw -p tcp --dport 1024:65535 --sport 25 -j ACCEPT

# POP3
# Zugriff auf den Server

# $R -A ext-in -p tcp --dport 1024:65535 --sport 110 ! --syn -j ACCEPT
# $R -A ext-out -p tcp --sport 1024:65535 --dport 110 -j ACCEPT

# Forwarding durch die Firewall

# $R -A ext-fw -p tcp --dport 1024:65535 --sport 110 -j ACCEPT
# $R -A int-fw -p tcp --sport 1024:65535 --dport 110 -j ACCEPT


# FTP
# Zugriff auf den Server
# Kontrollverbindung

$R -A ext-in -p tcp --dport 1024:65535 --sport 21 ! --syn -j ACCEPT
$R -A ext-out -p tcp --sport 1024:65535 --dport 21 -j ACCEPT

# aktives FTP

$R -A ext-in -p tcp --dport 1024:65535 --sport 20 -j ACCPET
$R -A ext-out -p tcp --sport 1024:65535 --dport 20 ! --syn -j ACCEPT

# passives FTP

$R -A ext-in -p tcp --dport 1024:65535 --sport 1024:65535 ! --syn -j ACCEPT
$R -A ext-out -p tcp --dort 1024:65535 --sport 1024:65535 -j ACCEPT

# Forwarding durch die Firewall
# Kontrollverbindung

$R -A int-fw -p tcp --sport 1024:65535 --dport 21 -j ACCEPT
$R -A ext-fw -p tcp --dport 1024:65535 --sport 21 ! --syn -j ACCEPT

# aktives FTP

$R -A ext-fw -p tcp --dport 1024:65535 --sport 20 ! -j ACCEPT
$R -A int-fw -p tcp --sport 1024:65535 --dport 20 ! --syn -j ACCEPT

# passives FTP

$R -A ext-fw -p tcp --dport 1024:65535 --sport 1024:65535 ! --syn -j ACCEPT
$R -A int-fw -p tcp --dport 1024:65535 --sport 1024:65535 -j ACCEPT


# Protokollierung ungewoehnlicher Pakete

$R -A INPUT -s 0.0.0.0/0 -j LOG --log-level notice --log-prefix "INPUT defalt: "
$R -A OUTPUT -s 0.0.0.0/0 -j LOG --log-level notice --log-prefix "OUTPUT defualt: "
$R -A FORWARD -s 0.0.0.0/0 -j LOG --log-level notice --log-prefix "FORWARD default: "
$R -A int-in -s 0.0.0.0/0 -j LOG --log-level notice --log-prefix "int-in default: "
$R -A int-fw -s 0.0.0.0/0 -j LOG --log-level notice --log-prefix "int-fw default: "
$R -A int-out -s 0.0.0.0/0 -j LOG --log-level notice --log-prefix "int-out default: "
$R -A ext-in -s 0.0.0.0/0 -j LOG --log-level notice --log-prefix "ext-in default: "
$R -A ext-fw -s 0.0.0.0/0 -j LOG --log-level notice --log-prefix "ext-fw default: "
$R -A ext-out -s 0.0.0.0/0 -j LOG --log-level notice --log-prefix "ext-out default: "


$R -A INPUT -s 0.0.0.0/0 -j DROP
$R -A OUTPUR -s 0.0.0.0./0 -j DROP
$R -A FORWARD -s 0.0.0.0./0 -j DROP
$R -A int-in -s 0.0.0.0/0 -j DROP
$R -A int-fw -s 0.0.0.0./0 -j DROP
$R -A int-out -s 0.0.0.0./0 -j DROP
$R -A ext-in -s 0.0.0.0./0 -j DROP
$R -A ext-fw -s 0.0.0.0/0 -j DROP
$R -A ext-out -s 0.0.0.0/0 -j DROP

# Network Address Translation
# Masquerading

$R -t nat -A POSTROUTING -o "$EXTIF" -j MASQUERADE

;;
esac //Zeile 369

Windoofsklicker
26.05.04, 12:35
ab zeile 90 kommst du irgendwie mit deinen "" durcheinander. ausserdem werden variablen AFAIK im script nicht so: "$var" sondern so: $var benutzt.

flex001
26.05.04, 13:46
Hi, ich will die IP von meim DNS-Server in ner Variablen speichern! ich hab kein plan, bezüglich batchprogrammierung ... ich habs so von der Vorlage =



DNSSERVER='cat /etc/resolv.conf | grep '^nameserver' | sed 's/nameserver//''

da wird des ganze aber nicht in der var. gespeichert, sondern ausgegeben!! Irgendwas isch mit den Klammern falsch, blos ich bin noc net dahintergestiegen :( kann mir kurz einer unter die arme greifen?

michael.sprick
26.05.04, 14:28
DNSSERVER='cat /etc/resolv.conf | grep '^nameserver' | sed 's/nameserver//''

richtig wäre:


DNSSERVER=`cat /etc/resolv.conf | grep '^nameserver' | sed 's/nameserver//'`

also : ' != `

Backticks führen hier den Befehl aus...

EDIT:
Mir fällt gerade mal auf, dass Du dann glaubich auch nur einen Eintrag in /etc/resolv.conf haben darfst. Anonsten würde in DNSSERVER z.B.
"194.25.2.129\n192.168.0.5"
stehen... vermute ich einfach mal.

flex001
27.05.04, 07:05
ja, vielen Dank, funktioniert :) .... und stimmt, wenn ich zwei eintrag hab, nimmt er beide!!!