Page 1 of 1

iptables - config script

Posted: 2004-05-10 14:49
by tobiask
hi,

was haltet ihr von so einer konfiguration?
was kann man besser machen, oder was ist nicht so gut gelöst?

Code: Select all

#!/bin/sh -x

# Verbiete alles bevor benötigte Protokolle und Ports
# gezielt freigeschaltet werden
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -F

# Schalte Loopback Device zur internen Kommunikation frei!
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Debug - alles loggen:
#iptables -A INPUT -j LOG
#iptables -A OUTPUT -j LOG

# Logge fragwürdige Pakete
iptables -A INPUT -m state --state INVALID -j LOG
iptables -A INPUT -p tcp --tcp-flags ALL, FIN,URG,PSH -j LOG
iptables -A INPUT -p tcp --tcp-flags ALL, NONE -j LOG
iptables -A INPUT -p tcp --tcp-flags NONE, ALL -j LOG
iptables -A INPUT -p ICMP --icmp-type 
            destination-unreachable -j LOG
iptables -A INPUT -p ICMP --icmp-type source-quench -j LOG
iptables -A INPUT -p ICMP --icmp-type redirect -j LOG
iptables -A INPUT -p ICMP --icmp-type 
            address-mask-request -j LOG

# Verbiete unsinnige Pakete
#iptables -A INPUT -i eth0 -s 192.168.0.25 -j DROP
#iptables -A INPUT -i eth0 -s 127.0.0.0/255.0.0.0 -j DROP
iptables -A INPUT -m state --state INVALID -j DROP

# ------------ SSH --------------------------
# Ausgehende Verbindung zu fremdem SSH-Server
iptables -A OUTPUT -p TCP -d 0/0 --dport 22 
         -s 0/0 --sport 1024:65535 -o eth0 -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 22 -d 0/0 --dport 
      1024:3005 -m state --state RELATED,ESTABLISHED -i eth0 -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 22 -d 0/0 --dport 
      3007:65535 -m state --state RELATED,ESTABLISHED -i eth0 -j ACCEPT

# Eingehende Verbindung zum SSH Server des Webservers
iptables -A INPUT -p TCP -s 0/0 --sport 1024:65535 
         -d 0/0 --dport 22 -i eth0 -j ACCEPT
iptables -A OUTPUT -p TCP -d 0/0 --dport 1024:65535 
         -s 0/0 --sport 22 -o eth0 -j ACCEPT

# ------------ http(s) --------------------------
# Zugriff auf den Webserver
iptables -A INPUT -p TCP -d 0/0 --dport 80 -s 0/0 
         --sport 1024:65535 -j ACCEPT
iptables -A OUTPUT -p TCP -s 0/0 --sport 80 -d 0/0 
         --dport 1024:65535 -j ACCEPT
iptables -A INPUT -p TCP -d 0/0 --dport 443 -s 0/0 
         --sport 1024:65535 -j ACCEPT
iptables -A OUTPUT -p TCP -s 0/0 --sport 443 -d 0/0 
         --dport 1024:65535 -j ACCEPT

# Ausgehender Zugriff auf fremde http Inhalte
iptables -A OUTPUT -p TCP -d 0/0 --dport 80 
         -s 0/0 --sport 1024:65535 -o eth0 -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 80 -d 0/0 --dport 
      1024:3005 -m state --state RELATED,ESTABLISHED -i eth0 -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 80 -d 0/0 --dport 
      3006:65535 -m state --state RELATED,ESTABLISHED -i eth0 -j ACCEPT
iptables -A OUTPUT -p TCP -d 0/0 --dport 443 
         -s 0/0 --sport 1024:65535 -o eth0 -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 443 -d 0/0 --dport 
      1024:3005 -m state --state RELATED,ESTABLISHED -i eth0 -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 443 -d 0/0 --dport 
      3006:65535 -m state --state RELATED,ESTABLISHED -i eth0 -j ACCEPT

# ------------ ftp --------------------------
# Eingehender Zugriff auf FTP-Server (aktiver Modus)
iptables -A INPUT -p TCP -s 0/0 --sport 1024:65535 
         -d 0/0 --dport 20:21 -j ACCEPT
iptables -A OUTPUT -p TCP -d 0/0 --dport 1024:65535 
         -s 0/0 --sport 20:21 -j ACCEPT

# Passiver Modus; für eingehende Verbindung
iptables -A INPUT -p 6 -d 0/0 --dport 1024:3005 
          -s 0/0 --sport 1024:65535 -j ACCEPT
iptables -A INPUT -p 6 -d 0/0 --dport 3007:65535 
          -s 0/0 --sport 1024:65535 -j ACCEPT

# Ausgehender Zugriff auf vertrauenswürdigen FTP-Server
# Aktiver Modus, Server mit IP-Adresse identifizieren!
iptables -A OUTPUT -p TCP -d 82.165.36.79 --dport 20:21 
         -s 0/0 --sport 1024:65535 -j ACCEPT
iptables -A INPUT -p TCP -s 82.165.36.79 --sport 20:21 
         -d 0/0 --dport 1024:3005 -j ACCEPT
iptables -A INPUT -p TCP -s 82.165.36.79 --sport 20:21 
         -d 0/0 --dport 3007:65535 -j ACCEPT

# Ausgehender Zugriff auf fremde FTP-Server - passiver Modus
iptables -A OUTPUT -p TCP -d 0/0 --dport 21 
         -s 0/0 --sport 1024:65535 -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 21 -d 0/0 
         --dport 1024:3005 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 21 -d 0/0 
         --dport 3006:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p TCP -d 0/0 --dport 1024:65535 
         -s 0/0 --sport 1024:65535 -j ACCEPT
iptables -A INPUT -p TCP -d 0/0 --dport 1024:65535 -s 0/0 
         --sport 1024:3005 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p TCP -d 0/0 --dport 1024:65535 -s 0/0 
         --sport 3007:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT

# ------------ Mailserver --------------------------
# Einlieferung von Mails an Mail-Server
iptables -A INPUT -p TCP -s 0/0 --sport 1024:65535 
         -d 0/0 --dport 25 -j ACCEPT
iptables -A OUTPUT -p TCP -d 0/0 --dport 1024:65535 
         -s 0/0 --sport 25 -j ACCEPT
# Versand von Mails des lokalen smtp Servers
iptables -A OUTPUT -p TCP -s 0/0 --sport 1024:65535 
         -d 0/0 --dport 25:25 -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 25:25 -d 0/0 
         --dport 1024:3005 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 25:25 -d 0/0 
         --dport 3007:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Zugriff auf pop3(s)
iptables -A INPUT -p TCP -s 0/0 --sport 1024:65535 
         -d 0/0 --dport 995 -i eth0 -j ACCEPT
iptables -A OUTPUT -p TCP -d 0/0 --dport 1024:65535 
         -s 0.0.0.0/0 --sport 995 -o eth0 -j ACCEPT

# Zugriff auf pop3
iptables -A INPUT -p TCP -s 0/0 --sport 1024:65535 
         -d 0/0 --dport 110 -i eth0 -j ACCEPT
iptables -A OUTPUT -p TCP -d 0/0 --dport 1024:65535 
         -s 0.0.0.0/0 --sport 110 -o eth0 -j ACCEPT

# ------------ auth/ident --------------------------
iptables -A INPUT -p TCP -d 0/0 --dport 113 -j REJECT

# ------------ DNS ---------------------------------
# Anfragen an externe Nameserver von Resolver / Bind9
iptables -A OUTPUT -p UDP -d 0/0 --dport 53 
         -s 0/0 --sport 1024:65535 -j ACCEPT
iptables -A OUTPUT -p TCP -d 0/0 --dport 53 
         -s 0/0 --sport 1024:65535 -j ACCEPT
iptables -A INPUT -p UDP -s 0/0 --sport 53 -d 0/0 
         --dport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 53 -d 0/0 
         --dport 1024:3005 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 53 -d 0/0 
         --dport 3007:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Eingehende Anfragen an lokalen Nameserver
iptables -A OUTPUT -p UDP -d 0/0 --dport 53 
         -s 0/0 --sport 53 -j ACCEPT
iptables -A OUTPUT -p TCP -d 0/0 --dport 53 
         -s 0/0 --sport 53 -j ACCEPT
iptables -A INPUT -p UDP -s 0/0 --sport 53 
         -d 0/0 --dport 53 -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 53 
         -d 0/0 --dport 53 -j ACCEPT
iptables -A OUTPUT -p UDP -d 0/0 --dport 1024:65535 
         -s 0/0 --sport 53 -j ACCEPT
iptables -A OUTPUT -p TCP -d 0/0 --dport 1024:65535 
         -s 0/0 --sport 53 -j ACCEPT
iptables -A INPUT -p UDP -s 0/0 --sport 1024:65535 
         -d 0/0 --dport 53 -j ACCEPT
iptables -A INPUT -p TCP -s 0/0 --sport 1024:65535 
         -d 0/0 --dport 53 -j ACCEPT


# ------------ Timeserver --------------------------
iptables -A OUTPUT -p UDP -s 0/0 --sport 123 
         -d 82.165.36.79 --dport 123 -j ACCEPT
iptables -A INPUT -p UDP -d 0/0 --dport 123 
         -s 82.165.36.79 --sport 123 -j ACCEPT

# ------------ Ping --------------------------
iptables -A INPUT -p icmp -s 123.45.67.89 
         --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp -d 123.45.67.89 
         --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp 
         --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp 
         --icmp-type echo-request -j ACCEPT

# ------------ Parameter-Problem ------
iptables -A INPUT -p icmp 
         --icmp-type parameter-problem -j ACCEPT
iptables -A OUTPUT -p icmp 
         --icmp-type parameter-problem -j ACCEPT
wäre dankbar um das script noch zu verbessern, und dann bei mir einzuspielen ...

Re: iptables - config script

Posted: 2004-05-10 14:58
by captaincrunch
was haltet ihr von so einer konfiguration?
Nichts.

Re: iptables - config script

Posted: 2004-05-10 14:59
by duergner
Nach dem ersten Ã?berfliegen fehlen am Ende noch REJECT Regeln für alles, damit die Packete nicht unsinniger Weise verloren gehen,sondern dass das Gegenüber Bescheid bekommt.

Und IMHO braucht man auf einem Server i.d.R. keinen Paketfilter.

Re: iptables - config script

Posted: 2004-05-10 15:09
by tobiask
CaptainCrunch wrote:
was haltet ihr von so einer konfiguration?
Nichts.
warum genau?

@duergner:
warum denkst du das man das nicht braucht?

Re: iptables - config script

Posted: 2004-05-10 15:24
by oxygen
Paketfilter machen nur auf einer Art von Rechnern Sinn, auf Routern.

Re: iptables - config script

Posted: 2004-05-10 15:24
by dodolin
warum genau?
Es gibt kein Konzept. Ohne Konzept kann man ja wohl kaum sagen, ob das Skript das erreicht, was es soll. Denn was soll es denn erreichen?! Eigentlich sind Paketfilter auf Rootservern eh überflüssig, aber das Thema hatten wir hier schon wirklich zur Genüge.

Re: iptables - config script

Posted: 2004-05-10 15:31
by tobiask
dodolin wrote:
warum genau?
Es gibt kein Konzept. Ohne Konzept kann man ja wohl kaum sagen, ob das Skript das erreicht, was es soll. Denn was soll es denn erreichen?! Eigentlich sind Paketfilter auf Rootservern eh überflüssig, aber das Thema hatten wir hier schon wirklich zur Genüge.
oke, stimmt irgendwie, aber wie kann ich den server dann noch etwas besser gegen angriffe schützen als er in der standart konfiguration von 1&1 ist ?

Re: iptables - config script

Posted: 2004-05-10 15:33
by captaincrunch
man Sicherheitskonzept

Re: iptables - config script

Posted: 2004-05-10 15:37
by tobiask
CaptainCrunch wrote:man Sicherheitskonzept
he, oke oke,
ich bin noch anfänger, sorry für die blöden fragen, aber jeder fängt mal klein an ...

Re: iptables - config script

Posted: 2004-05-10 15:46
by captaincrunch
Sorry, aber warum schaust du dich dann nicht einmal etwas hier im Subforum um? Da gibt's

a) genügend Themen über Sinn und Unsinn von Personal Firewalls auf Rootservern, und
b) diverse Ã?berlegungen, wie man sein System besser absichern kann.

Was du letztendlich damit anfängst kann dir aber niemand "externes" ohen profundes Hintergrundwissen über Ziele, angebotene Dienste, etc. sagen.

Re: iptables - config script

Posted: 2004-05-10 16:06
by duergner
Tobiask wrote:[@duergner:
warum denkst du das man das nicht braucht?
Ganz einfach:

1. Auf dem Server sind bestimmte Ports offen, weil dahinter Dienste lauschen, die man anbieten will.
2. Alle anderen Ports sind eh schon zu.

Aus 1. und 2. folgt, dass es auf einem Server keine offenen Ports gibt, die nicht gewünscht sind. Also erübrigt sich da ein Paketfilter. Sollte doch ein Port offen sein, den man nicht haben will. sprich ein Dienst an diesem Interface lauschen, den man da nicht haben will, dann einfach den Dienst entsprechend konfigurieren und gut ist.

Re: iptables - config script

Posted: 2004-05-10 16:14
by captaincrunch
Mal ganz davon abgesehen, hast du das Konzept der State Tables partout nicht verstanden.

Re: iptables - config script

Posted: 2004-05-10 16:55
by tobiask
duergner wrote:
Tobiask wrote:[@duergner:
warum denkst du das man das nicht braucht?
Ganz einfach:

1. Auf dem Server sind bestimmte Ports offen, weil dahinter Dienste lauschen, die man anbieten will.
2. Alle anderen Ports sind eh schon zu.

Aus 1. und 2. folgt, dass es auf einem Server keine offenen Ports gibt, die nicht gewünscht sind. Also erübrigt sich da ein Paketfilter. Sollte doch ein Port offen sein, den man nicht haben will. sprich ein Dienst an diesem Interface lauschen, den man da nicht haben will, dann einfach den Dienst entsprechend konfigurieren und gut ist.
oke, danke, das reicht mir ja als antwort ;)

@CaptainCrunch:
sorry, wie gesagt, anfänger ...
aber ich werd mich versuchen zu bessern - wegen dem 'sinnlosen' post hier ...