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 beanstalkd
unter 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 pull
kann der Server nicht gefunden werden, Ping bei Google funktioniert nicht und Mailgun wird nicht gesendet. Das Ausführen iptables -F
behebt 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?
-S
nicht-L
viele Informationen verwendet, da das "freundliche" Format viele Informationen auslässt.