iptables auf Debian Blocking Git Pull, http API Anfragen etc

0

Ich verwende IPTables auf einem API-Server, um den gesamten eingehenden Datenverkehr mit Ausnahme von SSH, HTTP und HTTPS zu blockieren. Ich muss vollen Zugriff auf die Loopback-Schnittstelle haben, um beanstalkdunter anderem ausgeführt zu werden, und ausgehende http-, https- und SSH-Zugriffe für API-Aufrufe anderer Dienste sowie das Abrufen von github benötigen.

Ich habe die Regeln wie folgt erstellt:

iptables -F

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -p tcp --dport http -j ACCEPT
iptables -A INPUT -p tcp --dport https -j ACCEPT
iptables -A INPUT -j DROP

iptables -L Ausgänge:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
DROP       all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Trotzdem git pullkann der Server nicht gefunden werden, Ping bei Google funktioniert nicht und Mailgun wird nicht gesendet. Das Ausführen iptables -Fbehebt diese Probleme, und ich kann es mir nicht leisten, eine Firewall zu haben, die meine Anwendung nur daran hindert, vollständig zu funktionieren ...

Wie kann ich erreichen, was ich oben versuche?

GTF
quelle
1
Im Allgemeinen werden bei Regeln für die Veröffentlichung von iptables -Snicht -Lviele Informationen verwendet, da das "freundliche" Format viele Informationen auslässt.
Grawity

Antworten:

2

Das ist ganz offensichtlich, wenn Sie darüber nachdenken:

  • Das Pingen von Google funktioniert nicht, da Sie keine Regel haben, die eingehende ICMP-Antworten zulässt.

  • Die Dinge können den Server nicht "finden", weil Sie keine Regel haben, die DNS-Antworten erlaubt.

  • Mailgun kann SMTP nicht sprechen, da Sie keine Regel haben, die SMTP-Pakete zulässt - die TCP-SYN erlischt, aber die entsprechende SYN / ACK wird verworfen.

Die allgemeine Lösung besteht darin, das Verbindungs-Tracking von netfilter (auch "conntrack" genannt) zu verwenden, um eine Regel zu erstellen, die alle Pakete zulässt, die aktiven Verbindungen entsprechen:

-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

(Ältere Dokumentationen sind möglicherweise -m stateveraltet.)


Und natürlich,

-A INPUT -4 -p icmp -j ACCEPT
-A INPUT -6 -p icmp6 -j ACCEPT

denn warum würdest du das blockieren?

Grawity
quelle
schlag mich drauf an :)
lemonsqueeze
(Und nur als Randnotiz: Ich verwende Mailgun über API-Aufrufe, nicht SMTP)
GTF