Firewall-Script aus dem Postfix-Buch
Das im Buch vorgestellte Script können Sie als Datei firewallscript-postfixbuch.sh herunterladen, oder hier mittels Cut'n'Paste kopieren:
#
# Einfaches Firewall-Skript aus dem Postfix-Buch
# https:/www.postfixbuch.de - Version 3.0
#
# Zur Vereinfachung legen wir unsere Server-IP-Nummer in
# eine Variable. Die 192.168.0.100 ist hier natürlich nur
# ein Beispiel, setzen Sie die IP Ihres Servers ein.
ip_nr=192.168.0.100
IPT=/sbin/iptables
# Erstmal aufräumen.
$IPT -F
# Alle userdefinierten Chains löschen.
$IPT -X
# Durch unsere default-Regel (P=policy) machen wir alles zu.
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
# Wir erlauben nun pauschal alle Verbindungen, die zu bereits
# aufgebauten Verbindungen gehören. WELCHE Verbindungen aufgebaut
# werden dürfen, regeln wir anschließend.
# Wir ziehen diesen Regelsatz vor, da wir Rechenpower sparen: Ein
# Großteil der Pakete wird durch diese Regel durchgelassen, und so
# können wir recht früh die Prüfung beenden.
$IPT -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p UDP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p UDP -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# Benötigte Dienste müssen wir nun einzeln freischalten:
#
# Mailempfang SMTP weltweit
$IPT -A INPUT -p TCP -d \$ip_nr --sport 1024: --dport 25 \
-m state --state NEW -j ACCEPT
# Alternativ-Beispiel: Mailempfang nur von den IPs 91.198.250.0/24
# zulassen -- beispielsweise einem externen Spamfilterservice:
#$IPT -A INPUT -p TCP -d \$ip_nr --sport 1024: --dport 25 \
# -s 91.198.250.0/24 -m state --state NEW -j ACCEPT
# Mailversand weltweit
$IPT -A OUTPUT -p TCP -s \$ip_nr --sport 25 --dport 1024: \
-m state --state NEW -j ACCEPT
# POP3, POP3s, IMAP, IMAPs aus dem LAN erlauben
$IPT -A INPUT -p TCP -d \$ip_nr -s 192.168.0.0/24 \
--sport 1024: -m multiport --dport 110,143,993,995 \
-m state --state NEW -j ACCEPT
# Die Server dürfen NTP-Server abfragen:
$IPTB -A OUTPUT -p TCP -s \$ip\_nr --sport ntp \
--dport ntp -m state --state NEW -j ACCEPT
# Anfragen an den DNS-Server unseres LANs (TCP und UDP) erlauben
# (angenommen, unser Mailserver nutzt ausgehend einen Port >1024)
$IPT -A OUTPUT -p TCP -s \$ip_nr -d 192.168.0.50/32 \
--sport 1024: --dport 53 \
-m state --state NEW -j ACCEPT
$IPT -A OUTPUT -p UDP -s \$ip_nr -d 192.168.0.50/32 \
--sport 1024: --dport 53 \
-m state --state NEW -j ACCEPT
## Alternativ, wenn wir DNS-Server sind:
## ein/ausgehende DNS-Anfragen weltweit erlauben
## (im Zweifel Sourceports 53 und >1024).
#$IPT -A INPUT -p TCP -d \$ip_nr --sport 53 --dport 53 \
# -m state --state NEW -j ACCEPT
#$IPT -A INPUT -p UDP -d \$ip_nr --sport 53 --dport 53 \
# -m state --state NEW -j ACCEPT
#$IPT -A INPUT -p TCP -d \$ip_nr --sport 1024: --dport 53 \
# -m state --state NEW -j ACCEPT
#$IPT -A INPUT -p UDP -d \$ip_nr--sport 1024: --dport 53 \
# -m state --state NEW -j ACCEPT
# Sofern SSH tatsächlich eingesetzt wird, schalten wir es
# noch für einige IP-Nummern/Netze frei:
# Unser LAN:
$IPT -A INPUT -p TCP -d \$ip_nr -s 192.168.0.0/24 \
--sport 1024: --dport 22 \
-m state --state NEW -j ACCEPT
# Als Beispiel noch eine andere externe IP-Nummer:
# $IPT -A INPUT -p TCP -d \$ip_nr -s 62.8.206.64/32 \
# --sport 1024: --dport 22 \
# -m state --state NEW -j ACCEPT
#
# Ggf. müssen Sie statt 1024: auch 1000:1023, bzw. für
# Windows-Clients auch 500:1023 einsetzen!
|