Simple iptables-Firewall, so okay?

Rund um die Sicherheit des Systems und die Applikationen
igel
Posts: 13
Joined: 2005-05-15 21:21
 

Simple iptables-Firewall, so okay?

Post by igel »

Moin!

Ich habe mir eine kleine Firewall mit iptables geschrieben. Da ich mich aber nicht so gut auskenne, wäre es hilfreich, wenn da mal jemand drüber schauen könnte, ob ich nicht irgendwelche gravirenden Fehler gemacht habe. Danke!

Code: Select all

#!/bin/bash
IPTABLES=`which iptables`
DEV=eth0

test -f $IPTABLES || exit 0

case "$1" in
        start|restart)
                # Tabellen leeren
                $IPTABLES -F

                # Per Default alles reinkommende und weiterzuleitende DROPen
                # Ausgehendes ACCEPTen
                $IPTABLES -P INPUT DROP
                $IPTABLES -P OUTPUT ACCEPT
                $IPTABLES -P FORWARD DROP

                 # Bestehende Verbindungen ACCEPTen
                $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

                # Lokale Verbindungen ACCEPTen
                $IPTABLES -A INPUT -i lo -j ACCEPT

                # Diese Verbindungen ACCEPTen
                # SSH
                $IPTABLES -A INPUT -i $DEV -p tcp --dport 22 -j ACCEPT
                # SMTP
                $IPTABLES -A INPUT -i $DEV -p tcp --dport 25 -j ACCEPT
                # HTTP
                $IPTABLES -A INPUT -i $DEV -p tcp --dport 80 -j ACCEPT
                # HTTPS
                $IPTABLES -A INPUT -i $DEV -p tcp --dport 443 -j ACCEPT
                # IMAP/SSL
                $IPTABLES -A INPUT -i $DEV -p tcp --dport 993 -j ACCEPT

                # Zum Komfort, dies REJECTen
                # IMAP
                $IPTABLES -A INPUT -i $DEV -p tcp --dport 143 --syn -j REJECT
        ;;
        stop)
                $IPTABLES -F
                $IPTABLES -P INPUT ACCEPT
                $IPTABLES -P OUTPUT ACCEPT
                $IPTABLES -P FORWARD ACCEPT
        ;;
        *)
                echo Wrong usage!
                echo Usage: $0 {start,stop,restart}
        ;;
esac
iGEL
lord_pinhead
Posts: 774
Joined: 2004-04-26 15:57
 

Re: Simple iptables-Firewall, so okay?

Post by lord_pinhead »

1) gehören die Default Drops unter den Portfreigaben, also als letztes in der Kette

2)
$IPTABLES -P INPUT -i $DEV -j REJECT --reject-with tcp-reset
$IPTABLES -P OUTPUT -i $DEV -j ACCEPT
$IPTABLES -P FORWARD -i $DEV -j REJECT --reject-with tcp-reset

3) Drop ist schlecht, nutze Reject mit den richtigen Reject Codes
tcp: REJECT --reject-with tcp-reset
udp: REJECT --icmp-port-unreachable

Ausserdem, warum lässt du Imap extra nochmal blockieren, schalte doch einfach den Dienst ab :)
croc
Posts: 71
Joined: 2005-09-16 15:30
Location: Leipzig
 

Re: Simple iptables-Firewall, so okay?

Post by croc »

iGEL: Wenn du das vollendet hast, könntest du es bitte nochmal in der fertigen Fassung hier reinschreiben?
time-walker
Posts: 48
Joined: 2006-02-15 14:17
Location: Osna
 

Re: Simple iptables-Firewall, so okay?

Post by time-walker »

hi leute bin auch gerade dabei nen iptables script für meinen server zu basteln. meiner sieht so aus:

Code: Select all

#!/bin/sh

case "$1" in
start|restart)

        # Tabellen leeren
        IPTABLES -F

        #loopback
        IPTABLES -A INPUT -i lo -j ACCEPT

        #Bestehende Verbindungen accepten
        IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

        #Port freigaben
        #ssh
        IPTABLES -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
        #Apche
        IPTABLES -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

        #icmp
        #IPTABLES -A INPUT -i eth0 -p icmp -j ACCEPT

        #Default forward DROPen / OUTPUT ACCEPT
        IPTABLES -P INPUT DROP
        IPTABLES -P OUTPUT ACCEPT
        IPTABLES -P FORWARD DROP
;;
stop)

        IPTABLES -F
        IPTABLES -P INPUT ACCEPT
        IPTABLES -P OUTPUT ACCEPT
        IPTABLES -P FOTWARD ACCEPZ
;;
*)

        echo "Fehler /etc/init.d/$0 [start|restart|stop]"

esac;
gibts irgendwelche verbesserungsvorschläge ??


ich habe ne frage noch dazu, wie muss ich weiter vorgehen damit das script beim starten geladen wird ?