Hallo,
ich habe mir (notgedrungen) einen V-Server für meinen Internet-Auftritt zugelegt (debian 4/confixx 3). Da ich für die Absicherung selber zuständig bin, habe ich mir ein iptables-Script aus einem Tutorial zurechtgeschnitzt. Leider funktionieren meine Mail Services nicht mehr, sobald ich das Script ausführe. Das Mail-Programm ist postfix.
Ich bekomme folgende Fehlermeldung:
Host or domain name not found. Name service error for name=hotmail.com type=MX: Host not found
Das gilt für jede E-Mail-Adresse die ich verwendet habe, nicht nur hotmail.
/etc/resolv.conf enthält folgende Einträge:
Code:
nameserver 88.80.192.118
nameserver 88.80.192.119
Hier mein iptables-Script:
Code:
#!/bin/sh
#
# iptables firewall script v1.0
#
# http://www.online-tutorials.net/
#
# Siehe: ifconfig oder ip addr
# In meinem Fall:
# - läuft das VPN zum Internet Provider über device eth1
# - heißt das VPN device default
# - läuft interne Netzwerk in das ich routen will über device eth0
EXT_NET_DEV=eth1
EXT_DEV=default
INT_DEV=eth0
#Der Pfad zur iptables
IPTABLES=/sbin/iptables
#TCP ports
# 21 FTP
# 25 SMTP (Emails verschicken)
# 587 SMTP (alternativ)
# 80 HTTP
# 110 POP3 (Email per POP3)
# 143 IMAP (Email per IMAP)
# 993 IMAP SSL (Email per IMAP verschlüsselt)
# 443 HTTPS
# 1863 MSN
# 5190 ICQ
# 5222 Jabber
# 6667 IRC
# 6668 IRC
NAT_FORWARDING_TCP_PORT="21,25,80,110,143,443,587,993,5190,5222,6667,6668,1863"
#SSH, Mail, HTML-Ports
INPUT_INTERNET_TCP_PORT="22,25,80,110,143,443,587,993"
OUTPUT_INTERNET_TCP_PORT="22,25,80,110,143,443,587,993"
INPUT_INTERNET_UDP_PORT="9424"
OUTPUT_INTERNET_UDP_PORT="9424"
NAMESERVER1="88.80.192.118/32"
NAMESERVER2="88.80.192.119/32"
#echo "Drop corrupt packets (need module, otherwise turn statement into a comment)"
#$IPTABLES -A FORWARD -m unclean -j DROP
#$IPTABLES -A INPUT -m unclean -j DROP
#echo "Drop packets from the external network that have an internal address"
#$IPTABLES -t nat -A PREROUTING -i $EXT_DEV -s 192.168.0.0/16 -j DROP
#$IPTABLES -t nat -A PREROUTING -i $EXT_DEV -s 10.0.0.0/8 -j DROP
#$IPTABLES -t nat -A PREROUTING -i $EXT_DEV -s 172.16.0.0/12 -j DROP
#$IPTABLES -t nat -A PREROUTING -i $EXT_DEV -s 127.0.0.0/8 -j DROP
echo "Defining the INPUT rules"
echo " vpn"
$IPTABLES -A INPUT -i $EXT_NET_DEV -j ACCEPT
echo " accept each lo connection"
$IPTABLES -A INPUT -i lo -j ACCEPT
echo " icmp"
$IPTABLES -A INPUT -p icmp -j ACCEPT
$IPTABLES -A INPUT -s 0.0.0.0/0 -p tcp -m multiport --dport $INPUT_INTERNET_TCP_PORT -j ACCEPT
echo " syn packages"
$IPTABLES -A INPUT -p tcp ! --syn -j ACCEPT
echo " internal"
$IPTABLES -A INPUT -s 0.0.0.0/0 -p udp --dport $INPUT_INTERNET_UDP_PORT -j ACCEPT
echo " internet"
iptables -A INPUT -p udp -s $NAMESERVER1 --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s $NAMESERVER1 --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -s $NAMESERVER2 --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s $NAMESERVER2 --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
# mail relay
$IPTABLES -A INPUT -i $EXT_DEV -s 212.227.15.169/32 -p tcp -j ACCEPT #mx01.kundenserver.de
$IPTABLES -A INPUT -i $EXT_DEV -p udp --dport 53 -j ACCEPT
echo "Defining the OUTPUT rules"
echo " vpn"
$IPTABLES -A OUTPUT -o $EXT_NET_DEV -j ACCEPT
echo " icmp"
$IPTABLES -A OUTPUT -p icmp -j ACCEPT
echo " accept each lo connection"
$IPTABLES -A OUTPUT -o lo -j ACCEPT
echo " internal tcp"
$IPTABLES -A OUTPUT -d 0.0.0.0/0 -p tcp -m multiport --sport $OUTPUT_INTERNET_TCP_PORT -j ACCEPT
echo " internal udp"
$IPTABLES -A OUTPUT -p udp --sport $OUTPUT_INTERNET_UDP_PORT -j ACCEPT
#echo " internet"
#$IPTABLES -A OUTPUT -o $EXT_DEV -d 0.0.0.0/0 -p tcp -m multiport --dport $NAT_FORWARDING_TCP_PORT -j ACCEPT
echo " syn packages"
#$IPTABLES -A OUTPUT -p tcp ! --syn -j ACCEPT
echo " internet"
iptables -A OUTPUT -p udp --sport 1024:65535 -d $NAMESERVER1 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 -d $NAMESERVER1 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp --sport 1024:65535 -d $NAMESERVER2 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 -d $NAMESERVER2 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
# mail relay
$IPTABLES -A OUTPUT -o $EXT_DEV -d 212.227.15.169/32 -p tcp -j ACCEPT #mx01.kundenserver.de
echo "Define the NAT rules"
#$IPTABLES -A POSTROUTING -t nat -p tcp -o $EXT_DEV -s $INT_NET -j MASQUERADE
#echo " UDP forwarding"
#$IPTABLES -A POSTROUTING -t nat -p udp -o $EXT_DEV -s $INT_NET -j MASQUERADE
#$IPTABLES -A POSTROUTING -t nat -p icmp -o $EXT_DEV -s $INT_NET -j MASQUERADE
$IPTABLES -A FORWARD -p tcp ! --syn -j ACCEPT
#echo " reject any unwelcome addresses here"
#Wir machen REJECT, damit der Browser nicht lange für die Antwort braucht
#$IPTABLES -A FORWARD -p tcp -d malicious-domain.com -j REJECT
echo " tcp"
$IPTABLES -A FORWARD -i $INT_DEV -o $EXT_DEV -s $INT_NET -p tcp -m multiport --dport $NAT_FORWARDING_TCP_PORT -j ACCEPT
#$IPTABLES -A FORWARD -i $INT_DEV -o $EXT_DEV -s $INT_NET -d www.example.com -p tcp --dport 442 -j ACCEPT
echo " icmp"
$IPTABLES -A FORWARD -m state --state NEW -p icmp -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Dropping everything else"
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP
echo "Firewall & Routing activated"
Hier ist der Output von iptables -L -n:
Code:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0
ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 22,25,80,110,143,443,587,993
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:9424
ACCEPT udp -- 212.12.114.14 0.0.0.0/0 udp spt:53 dpts:1024:65535 state ESTABLISHED
ACCEPT tcp -- 212.12.114.14 0.0.0.0/0 tcp spt:53 dpts:1024:65535 state ESTABLISHED
ACCEPT udp -- 213.160.92.82 0.0.0.0/0 udp spt:53 dpts:1024:65535 state ESTABLISHED
ACCEPT tcp -- 213.160.92.82 0.0.0.0/0 tcp spt:53 dpts:1024:65535 state ESTABLISHED
ACCEPT tcp -- 212.227.15.169 0.0.0.0/0
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
DROP 0 -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02
ACCEPT tcp -- 192.168.0.0/16 0.0.0.0/0 multiport dports 21,25,80,110,143,443,587,993,5190,5222,6667,6668,1863
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 state NEW
ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
DROP 0 -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 multiport sports 22,25,80,110,143,443,587,993
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:9424
ACCEPT udp -- 0.0.0.0/0 212.12.114.14 udp spts:1024:65535 dpt:53 state NEW,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 212.12.114.14 tcp spts:1024:65535 dpt:53 state NEW,ESTABLISHED
ACCEPT udp -- 0.0.0.0/0 213.160.92.82 udp spts:1024:65535 dpt:53 state NEW,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 213.160.92.82 tcp spts:1024:65535 dpt:53 state NEW,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 212.227.15.169
DROP 0 -- 0.0.0.0/0 0.0.0.0/0
Ein weiteres Problem ist, dass "iptables -t nat" zurückgewiesen wird, weshalb ich externe Aufrufe mit internen Adressen nicht blocken kann (ginge das auch anders?), aber das ist zweitrangig.
Ausserdem sind mir die 2 ACCEPT 0/0 0/0 bei INPUT nicht koscher, und ich denke diese VPN und lo-Geschichten brauche ich gar nicht ... ?
Wenn ich ausserdem zu Beginn als POLICIES DROP definiere (auskommentiert), ist der V-Server komplett dicht - häh?
Ich habe Stunden um Stunden iptables-Dokus und Tutorials gelesen, aber ich bin hier schlicht überfordert. Bitte helft mir, Leute.
Lesezeichen