FW-Script bleibt irgendwo nach dem abschotten hängen....

Gemeinsam ins Internet mit Firewall und Proxy.
Antworten
Benutzeravatar
rahab
Beiträge: 165
Registriert: 24.09.2002 12:04:05

FW-Script bleibt irgendwo nach dem abschotten hängen....

Beitrag von rahab » 20.12.2002 10:37:17

Hi Leute,

Ich weiss ich mache mich sicher nicht beliebt, wenn ich hier ein
ellenlanges Firewall-Script poste und frage warum es nicht so funktioniert
wie ich mir das vorstelle.

Eins vorweg: JA es ist das Script von glatzor, das er hier im Forum gepostet hat und das sich mittlerweile vermutlich jeder zweite kopiert hat :wink:
Es scheint mir auch wirklich eine sehr gute Basis für eine komplexe und umfassende Firewall zu bieten.

Ich hab mir dann in letzter Zeit diverse Howtos und Tutorials angeschaut und
auch entsprechende Beiträge hier im Forum verfolgt und ich dachte ich wäre nun fähig das Script einigermaßen anzupassen. War aber nix :P

Die Kiste ist nach dem Starten einfach völlig dicht. Nix kann rein (raus glaube ich auch nicht), Masquerading ist aus, etc.
Aber ich weiss nicht wo und warum er hängen bleibt. Vielleicht hat ja jemand viel Zeit und Lust mir ein bisschen zu helfen....


Danke schonmal !!!!
#!/bin/sh

# Referenz: In http://www.debianforum.de/forum/viewtopic.php?t=151 gepostetes Script von Glatzor

# ***************************************
# ***************************************
# * *
# * 1. SETZEN VON VARIABLEN *
# * *
# ***************************************
# ***************************************

# 1.1. Globale Variablen

echo "Setting up Variables for Firewall..."

# IP-Tables Pfad
IPTABLES=/sbin/iptables

# Schnittstelle zum lokalen Netzwerk
IF_INT=eth0

# Internetschnittstelle
IF_EXT=ppp0

# Loopback device
IF_LOOP=lo

# Interner Netzwerkbereich
NET_INT=192.168.0.0/24


# 1.2. PIDs

# Auslesen des PIDs von Bind
#; BIND=`cat /var/run/named.pid`


function StopFirewall() {
# *************************************************
# *************************************************
# * *
# * 2. HERUNTERFAHREN DER FIREWALL *
# * *
# *************************************************
# *************************************************

echo "Shutting down Firewall:"
echo "Disable Routing...
# Ausschalten des Routing
echo "0" > /proc/sys/net/ipv4/ip_forward

echo "Setting Default-Policies..."
# Default-Policies: Alles rein und raus, kein Forwarding mehr
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

echo "Flushing all Rules..."
# Löschen aller Regeln
$IPTABLES -F
$IPTABLES -t nat -F

echo "Deleting all additional Chains..."
# Löschen aller zusätzlichen Ketten
$IPTABLES -X
$IPTABLES -t nat -X

}


function StartFirewall() {
# ******************************
# ******************************
# * *
# * 3. Starten der Firewall *
# * *
# ******************************
# ******************************

echo "Establishing Firewall:"
#####################################
# 3.1 Allgemeines / Initialisierung #
#####################################

echo "Setting Default-Policies..."
# Default-Policies setzen - alles fliegt raus
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

echo "Enable Routing..."
# Einschalten von ip-Forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward

echo "Settings for MTU..."
# Wegen moeglicher Netzwerkprobleme mit der MTU
$IPTABLES -I FORWARD -p TCP --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu



# 3.1.1. Eigene Kette zum gleichzeitigen Protokollieren und Rausschmeissen #
##############################################################

echo "Creating Chain RAUS..."
# Eigene Kette erstellen
$IPTABLES -N RAUS

echo "Enable Logging for Chain RAUS..."
# Protokollieren
$IPTABLES -A RAUS -j LOG -m limit --limit 5/minute --log-prefix "Bad Packet: "

echo "Setting up Rules for Chain RAUS..."
# Raussschmeissen
$IPTABLES -A RAUS -j DROP


######################################
# 3.2. Regeln fuer eingehende Pakete #
######################################


# 3.2.1. Vom internen Netzwerk #
################################

echo "Setting up Rules for Case: Incoming Packets from internal Network..."
# Alles erlauben
$IPTABLES -A INPUT -i $IF_INT -s $NET_INT -j ACCEPT



# 3.2.2. Vom Loopback #
#######################

echo "Setting up Rules for Case: Incoming Packets from Loopback-Device..."
# Alles erlauben
$IPTABLES -A INPUT -i $IFACE_LO -j ACCEPT



# 3.2.3. Vom Internet #
#######################

echo "Setting up Input-Rules for Case: Incoming Packets from Internet..."
# Alle TCP Pakete, die eine neue Verbindung aufbauen wollen gehen in die Kette RAUS
$IPTABLES -A INPUT -p TCP ! --syn -m state --state NEW -j RAUS

# Auf dem ppp-Interface eingehende Pakete an die gelisteten IP-Bereiche gehen in


die Kette RAUS
$IPTABLES -A INPUT -i $IF_EXT -s 10.0.0.0/8 -j RAUS
$IPTABLES -A INPUT -i $IF_EXT -s 172.16.0.0/12 -j RAUS
$IPTABLES -A INPUT -i $IF_EXT -s 192.168.0.0/24 -j RAUS

# Erlauben von bereits initialisierten TCP-Verbindungen
$IPTABLES -A INPUT -i $IF_EXT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT

# Erlauben von bereits initialisierten UDP-Verbindungen von Zeitservern
$IPTABLES -A INPUT -i $IF_EXT -p UDP -m state --state ESTABLISHED,RELATED --sport 123 -j ACCEPT

# Erlauben von bereits initialisierten Verbindungen von DNS
$IPTABLES -A INPUT -i $IF_EXT -p UDP -m state --state ESTABLISHED,RELATED --sport 53 -j ACCEPT

# Verbindungen mit dem Ident-Server erlauben
$IPTABLES -A INPUT -i $IF_EXT -p TCP --dport 113 -j ACCEPT
$IPTABLES -A INPUT -i $IF_EXT -p UDP --dport 113 -j ACCEPT

# Erlauben der notwendigsten ICMP-Pakete -> Ping wird nicht beantwortet, da nicht explizit erlaubt
$IPTABLES -A INPUT -i $IF_EXT -p ICMP --icmp-type 0 -j ACCEPT
$IPTABLES -A INPUT -i $IF_EXT -p ICMP --icmp-type 3 -j ACCEPT
$IPTABLES -A INPUT -i $IF_EXT -p ICMP --icmp-type 5 -j ACCEPT
$IPTABLES -A INPUT -i $IF_EXT -p ICMP --icmp-type 11 -j ACCEPT


echo "Setting up Forwarding-Rules..."
################################
# 3.3. Regeln fuers Forwarding #
################################

# 3.3.1. Lokal -> Internet #
############################

echo "Setting up Rules for Case: Outgoing Packets from internal Network to Internet..."
# Erlauben von Telnet, SSH, FTP, SMTP, POP3, HTML/SHTML Verbindungen,eDonkey/eMule
$IPTABLES -A FORWARD -i $IF_INT -o $IF_EXT -p TCP -m multiport --dport 20,21,22,25,80,110,443,4661,4662,4665 -j ACCEPT

# Erlauben von Highport-Verbindungen -> meist nicht Systemnah
#;$IPTABLES -A FORWARD -i $IF_INT -o $IF_EXT -p TCP --dport 1024:65000 -j ACCEPT

# ICQ-Verbindungen
#;$IPTABLES -A FORWARD -i $IF_INT -o $IF_EXT -p UDP --dport 4000 -j ACCEPT


# 3.3.2. Internet -> Lokales #
##############################

echo "Setting up Rules for Case: Incoming Packets from Internet to internal Network..."
# Nur UDP-Verkehr über bereits bestehende ICQ-Verbindungen erlauben
$IPTABLES -A FORWARD -i $IF_EXT -o $IF_INT -p UDP -m state --state ESTABLISHED,RELATED --sport 4000 -j ACCEPT

# Nur TCP-Verkehr über bereits bestehende Verbindungen erlauben
$IPTABLES -A FORWARD -i $IF_EXT -o $IF_INT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT


#####################################
# 3.4. Regeln für ausgehende Pakete #
#####################################

echo "Setting up Outgoing-Rules..."


# 3.4.1. Ins lokale Netzwerk #
##############################

echo "Setting up Rules for Case: Outgoing Packets to internal Network..."
# Alles erlauben
$IPTABLES -A OUTPUT -o $IF_INT -j ACCEPT


# 3.4.2. Ans Loopback #
#######################

echo "Setting up Rules for Case: Outgoing Packets to Loopback-Device..."
# Alles erlauben
$IPTABLES -A OUTPUT -o $IF_LOOP -j ACCEPT


# 3.4.3. Ins Internet #
#######################

echo "Setting up Rules for Case: Outgoing Packets from internal Network to Internet..."
# DNS den Verkehr ins Internet erlauben - falls den einer läuft
#;if [ $BIND != "" ]; then
#;$IPTABLES -A OUTPUT -o $IFACE_EXT -p UDP -m owner --pid-owner=$BIND --dport 53 -j ACCEPT
#;fi

# Squid-Proxy den TCP-Verkehr ins Internet erlauben
#;$IPTABLES -A OUTPUT -o $IFACE_EXT -p TCP -m owner --uid-owner=13 -j ACCEPT

# Dem Ident-Server Verkehr ins Internet erlauben
$IPTABLES -A OUTPUT -o $IF_EXT -p UDP --sport 113 -j ACCEPT
$IPTABLES -A OUTPUT -o $IF_EXT -p TCP --sport 113 -j ACCEPT

# Verkehr zu einem Zeitserver erlauben
$IPTABLES -A OUTPUT -o $IF_EXT -p UDP --dport 123 -j ACCEPT

# ICMP-Verkehr ins Internet erlauben
$IPTABLES -A OUTPUT -o $IF_EXT -p ICMP -j ACCEPT


################
# 3.5. Routing #
################

echo "Enable Routing/Masquerading..."
# Masquerading
$IPTABLES -A POSTROUTING -o $IFACE_EXT -t nat -j MASQUERADE

# Eingehende Pakete auf den eDonkey/eMule Ports an 192.168.0.2 weiterleiten
$IPTABLES -t nat _A PREROUTING -i $IF_EXT -p tcp --dport 4661,4662,4665 -j DNAT --to-dest 192.168.0.2

# Direkte Verbindungen für ICQ zu mir umleiten
#;$IPTABLES -t nat -A PREROUTING -i $IF_EXT -p TCP --dport 6000:6010 -j DNAT --to 192.168.0.2


##########################
# 3.6. Mitprotokollieren #
##########################

echo "Initialize Logging..."
$IPTABLES -A OUTPUT -j LOG --log-prefix "NOT gone out: "

$IPTABLES -A FORWARD -j LOG --log-prefix "NOT been forwarded: "

$IPTABLES -A INPUT -j LOG --log-prefix "NOT let in: "

}

# *******************************
# *******************************
# * *
# * START-STOP-SKRIPT *
# * *
# *******************************
# *******************************

case "$1" in
start)
StartFirewall
;;

stop)
StopFirewall
;;

restart)
$0 stop
$0 start
;;

*)
echo "Usage: /etc/init.d/firewall {start|stop|restart}"
exit 1
;;
esac

Benutzeravatar
cray
Beiträge: 112
Registriert: 27.05.2002 01:39:01
Kontaktdaten:

vieleicht liegt es daran das du nur 2 ports offen sind :-)?

Beitrag von cray » 30.12.2002 08:28:51

glatzor beschreibt bei dem script das er nur squid(einen proxy) und bind (einen dns server) offen hat. das sollte wohl dann daran liegen
[mailto: rt@debian.sh]
http://www.debian.sh

Value your freedom, or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn.

Richard Stallman

Antworten