iptables - config script
Posted: 2004-05-10 14:49
hi,
was haltet ihr von so einer konfiguration?
was kann man besser machen, oder was ist nicht so gut gelöst?
wäre dankbar um das script noch zu verbessern, und dann bei mir einzuspielen ...
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