linux-l: Firewall die letzte?

Ulrich Wiederhold U.Wiederhold at gmx.net
Mi Feb 7 20:52:12 CET 2001


Hallo,
nach weiterem HOWTO-Studium... (www2.little-idiot.de kannte ich noch
nicht, fand ich sehr gut!) habe ich mir folgendes Script
zusammengebaut...

Wäre nett, wenn da mal jemand zu Stellung nehmen könnte.

Da sind noch 2-3 Probleme:
1. Ich habe in /etc/xinetd einen tcp und einen upd Eintrag für dem
Service discard (INTERNAL). Da ich udp generell in /etc/services
deaktiviert habe, müßte ich doch auch die Zeilen aus xinetd.conf
entfernen können, oder?

2. Wie kann ich mit iptables die vorherigen roules löschen? -D entfernt
doch nur die erste Roule ?

3. Ich steige bei der Verwendung von sslwrap noch nicht so ganz durch.
ftps und ftps-data sollen die Daten Verschlüsseln, die per ftp
übertragen werden. Jedoch starte ich proftpd über xinetd als Dämon und
verwende noch tcp? Habe die Roules über -p tcp und -dport 21 angegeben,
obwohl ja ftps und ftps-data auf 990 bzw. 989 laufen? Ich verstehe da
die Verbindung nicht richtig. Könnte mir das jemand erklären oder nen
Dokutip geben?

4. Wie starte ich das Script am besten? Ich hatte an /etc/rcS.d/S98firewall gedacht, aber dann ist ja ppp0 noch nicht aktiv. Oder einfach in /etc/ppp/ip-up und in ip-down wieder killen?
Welche Permissions sollte das Script haben? Ich dachte mir 700.

Gruß
Uli

So, und hier kommt nun das Ergebnis der letzten 3 Stunden:
#!/bin/sh
# Firewallscript 
# /etc/rcS.d/S98firewall

echo "Starte Firewall... "

# Zuerst werden einige Variablen deklariert

# any/0 bedeutet nichts anderes, als 
# 0.0.0.0/0. Dies ist per Definition jede IP - Nummer
ANYWHERE="any/0"

# Nun müssen die Interfaces und IP - Nummern alle zugewiesen werden. 
EXTERNES_INTERFACE="eth0"
#EXTERNES_INTERFACE="ippp0"

PRIVPORTS="0:1023"
UNPRIVPORTS="1024:65535"
VERBOTEN_PORTS="2049"                   # (TCP/UDP) NFS
VERBOTEN_OPENWINDOWS="2000"             # (TCP) openwindows
VERBOTEN_XWINDOWS="6000:6001"           # (TCP) X windows
FTPPORT="21"				# (TCP) ftp port
SSHPORT="22"				# ssh port
#SSH_PORTS="1020:1023"                   # range for SSH privileged
ports

# Lösche alle Filter

#Wie??? Konnte keine vergleichbare Option zu folgendem finden:
#ipfwadm -I -f
#ipfwadm -O -f
#ipfwadm -F -f

# Default Policy
iptables -A INPUT -j DROP	#input drop
iptables -A FORWARD -j DROP	#forward drop
iptables -A OUTPUT -j DROP	#output drop

# Anti spoofing Regeln
#spoofing sollte bei mir nicht möglich sein, da kein 2. Interface,
oder???

# Das loopback Interface
iptables -A INPUT -i lo -j ACCEPT   #input an loopback erlauben
iptables -A OUTPUT -o lo -j ACCEPT  #output an loopback erlauben

# Erlaubt outgoing traffic über ppp0
iptables -A OUTPUT -o $EXTERNES_INTERFACE -j ACCEPT

# Droped INVALID Packets
iptables -A INPUT -m state --state INVALID -j RETURN

# Kein OpenWindows
iptables -A INPUT -i $EXTERNES_INTERFACE -p tcp --dport
$VERBOTEN_OPENWINDOWS -j RETURN

# Kein XWindows
iptables -A INPUT -i $EXTERNES_INTERFACE -p tcp --dport
$VERBOTEN_XWINDOWS -j RETURN

# Kein Zugriff auf Ports im Bereich von X, OpenWindows, NFS...
iptables -A INPUT -i $EXTERNES_INTERFACE -p tcp --dport $VERBOTEN_PORTS
-j DROP

# Accept wenn schon Paketaustausch in beiden Richtungen stattgefunden
# hat
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Erlaubt ftp auf FTPPORT
iptables -A INPUT -m state --state NEW -i $EXTERNES_INTERFACE -p tcp
--syn --dport $FTPPORT -j ACCEPT

# Erlaubt ssh auf SSHPORT
iptables -A INPUT -m state --state NEW -i $EXTERNES_INTERFACE -p ssh
--syn --dport $SSHPORT -j ACCEPT

# PRIVPORTS dichtmachen
iptables -A INPUT -m state --state NEW -i $EXTERNES_INTERFACE -p ALL
-dport $PRIVPORTS -j DROP

# UNPRIVPORTS dichtmachen
iptables -A INPUT -m state --state NEW -i $EXTERNES_INTERFACE -p ALL
-dport $UNPRIVPORTS -j DROP

echo "Firewall aktiv"



Mehr Informationen über die Mailingliste linux-l