Hallo,
zunächst einmal sorry, dass ich jetzt erst antworte...leider bissel viel um die Ohren gehabt :-(
Und noch einmal vielen Dank für eure Kommentare und Lösungsvorschläge bisher!
Warum installierst Du Dienste auf einem öffentlich zugänglichen Server, wenn diese nicht öffentlich zugänglich sein sollen?
Wieso "schützt" Du von Haus aus sichere Dienste wie OpenSSH per IPTables? Wie funktioniert Mail "über fest definierte IPs"? Warum darf ich Dir keine Mails schicken?
Anders gefragt: Wovor versuchst Du Deinen Server mittels IPTables zu schützen und warum konfigurierst Du Deine Dienste nicht ordentlich, so dass der IPTables-Müll gar nicht erst zur Debatte stünde?
Im prinzip (zumindest aus miner Sicht) ganz logisch:
Ich nutze den Server produktiv und habe dort einige Webseiten drauf.
Für die Verwaltung des Systems nutze ich SSH über einen User dann su etc.
Allerdings bekomme ich häufiger "Drohungen" von Skriptkiddies die meinen nichts besseres zutun zu haben als die Webseiten bzw. den dahinterstehenden Server hacken zu wollen. Daher möchte ich auf nummer sicher gehen und schütze die Dienste die NICHT öffentlich zugägnlich sein sollen per iptables.
Der Webserver ist natürlich uneingeschränkt zugänglich, aber FTP, SSH geht doch niemanden etwas an, außer mich, der die Webseiten administriert. Das gleiche Spielchen beim Mailserver. Mails empfangen ist selbstverständlich offen und kein Problem. Aber die Mails abrufen soll niemand außer mir können, daher schütze ich den Mailserver ebenfalls per iptables.
Meine firewall-activ baut auf einem Gerüst aus Plesk auf, da Plesk aber in dieser hinsicht absolut nicht zu gebrauchen ist (in anderen Dingen aber ganz nett ist), ist die Datei selbst konfiguriert und Plesk funkt da nichtmehr rein.
***.***.***.** steht für eine eingetragene statische IP, von der der Zugang gestattet ist.
beispieldomain.dyndns.org steht für meine dynamische Domain, von der Zugang gestattet sein soll.
Meine firewall-active:
Code:
#!/bin/sh
#
# Automatically generated by Plesk netconf
#
set -e
echo 0 > /proc/sys/net/ipv4/ip_forward
([ -f /var/lock/subsys/ipchains ] && /etc/init.d/ipchains stop) >/dev/null 2>&1 || true
(rmmod ipchains) >/dev/null 2>&1 || true
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -P INPUT DROP
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
/sbin/iptables -A INPUT -m state --state INVALID -j DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
/sbin/iptables -A OUTPUT -m state --state INVALID -j DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -p tcp ! --syn -j REJECT --reject-with tcp-reset
/sbin/iptables -A FORWARD -m state --state INVALID -j DROP
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/sbin/iptables -A FORWARD -i lo -o lo -j ACCEPT
/sbin/iptables -t mangle -F
/sbin/iptables -t mangle -X
/sbin/iptables -t mangle -Z
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
/sbin/iptables -t nat -Z
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 12443 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 11443 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 11444 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 8447 -s ***.***.***.** -j ACCEPT
##################################################
##### Subnetze fuer PLESK-Admin hinzufuegen ######
/sbin/iptables -A INPUT -p tcp --dport 8447 -s ***.***.***.** -j ACCEPT
##################################################
/sbin/iptables -A INPUT -p tcp --dport 8447 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 8443 -s ***.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 8443 -s beispielhost.dyndns.org -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 8443 -s ***.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 8443 -s ***.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 8880 -s ***.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 8880 -s beispielhost.dyndns.org -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 8880 -s ***.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 8443 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 8880 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 21 -s ***.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 21 -s beispielhost.dyndns.org -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 21 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 22 -s ***.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -s beispielhost.dyndns.org -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -s ***.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -s ***.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -s ***.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 587 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 465 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 110 -s **.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 995 -s **.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 110 -s beispielhost.dyndns.org -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 995 -s beispielhost.dyndns.org -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 110 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 995 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 143 -s **.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 993 -s **.***.***.** -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 143 -s beispielhost.dyndns.org -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 993 -s beispielhost.dyndns.org -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 143 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 993 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 106 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 5432 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 9008 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 9080 -j DROP
/sbin/iptables -A INPUT -p udp --dport 137 -j DROP
/sbin/iptables -A INPUT -p udp --dport 138 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 139 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 445 -j DROP
/sbin/iptables -A INPUT -p udp --dport 1194 -j DROP
/sbin/iptables -A INPUT -p udp --dport 53 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 53 -j DROP
/sbin/iptables -A INPUT -p udp -j DROP
/sbin/iptables -A INPUT -p tcp -j DROP
/sbin/iptables -A INPUT -p icmp --icmp-type 8/0 -j DROP
/sbin/iptables -A INPUT -j DROP
/sbin/iptables -A OUTPUT -j ACCEPT
/sbin/iptables -A FORWARD -j DROP
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /usr/local/psa/var/modules/firewall/ip_forward.active
chmod 644 /usr/local/psa/var/modules/firewall/ip_forward.active
#
# End of script
#
Ich habe dann als cron eingetragen, dass firewall-emergency ausgeführt wird und direkt im Anschluss firewall-active.
Das geht meistens ein paarmal gut, und danach macht iptables komplett dicht. Immer wenn der Hostname nicht direkt aufgelöst werden kann (wieso auch immer?), wie mir scheint, verschluckt sich iptables da.
Ich habe außerdem beobachten können, dass dieses sonderbare Ergebnis nur auftritt, wenn firewall-emergency bzw. firewall-active per cron ausgeführt werden (als root).
Wenn ich das direkt über die Konsole ausführe, bleibt der Fehler meines Beobachtens nach aus.
vielen Dank für eure Mühe schonmal!