
Ich versuche, alle Ports außer 22, 80 und 443 zu blockieren. Ich habe die folgenden Regeln hinzugefügt iptables
.
*filter
:INPUT ACCEPT [36878:18003219]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [33947:26518456]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -s MY_IP -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
COMMIT
Port 22 funktioniert, aber Cloudflare kann keine Verbindung zum Webserver herstellen. -A INPUT -j DROP
Dies verursacht das Problem. Tatsächlich entspricht die Verbindung 443 erst am Ende der Liste einer Regel.
Antwort1
Nach einer langen Kommentarrunde haben wir Folgendes zusammengestellt:
Als Sie Ihre benutzerdefinierte Firewall aktiviert haben, hat CloudFlare ein 504 Gateway Timeout gemeldet. Es wurde jedoch angegeben, dass dies der Fehler war, den es von Ihrem Server erhalten hat, und nicht, dass beim Versuch, Ihren Server zu erreichen, eine Zeitüberschreitung aufgetreten ist. Der Unterschied ist subtil, aber wichtig: Dies bedeutet, dass CloudFlare problemlos mit Ihrem Server kommunizieren konnte, Ihr Server jedoch nicht mit sich selbst kommunizieren konnte.
Sie haben einen Webserver, der als Proxy für eine interne Webanwendung fungiert, die auf dem lokalen Host ausgeführt wird. Ihre benutzerdefinierte Firewall hat jedoch keine Verbindungen zum lokalen Host zugelassen. Dies ist erforderlich, damit der Webserver mit der Webanwendung kommunizieren kann, und auch für die Kommunikation vieler anderer interner Dienste untereinander, sodass jeder professionelle Firewall-Builder, den Sie jemals verwenden, den lokalen Datenverkehr einfach ohne Fragen zulässt.
(PS: Sie sollten ICMP aktiviert lassen, um andere Arten von Störungen zu verhindern, wie etwa Path MTU Discovery.)