
Ich habe einen Server, der keine Verbindungen zu MySQL von externen Quellen zulässt – alle meine Datenbanken und Verbindungen finden auf localhost statt. Die Standardrichtlinie von iptables besteht darin, Verbindungen für alle Ports zu trennen, die ich nicht angebe (derzeit habe ich Port 3306 nicht in meinen iptable-Regeln angegeben, daher werden alle Verbindungen zu diesem Port getrennt).
Das ist in Ordnung, aber jetzt möchte ich eine Verbindung zu einer MySQL-Datenbank herstellen, die extern auf Amazon RDS liegt.
Port 3306 kann wie folgt für die Außenwelt geöffnet werden:
iptables -t filter -A INPUT -p tcp --sport 3306 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
Dadurch kann ich eine Verbindung zur Datenbank auf Amazon RDS herstellen, es sind jedoch auch Remoteverbindungen zu Datenbanken auf meinem Server möglich.
Was muss ich tun, um meinem Server die Verbindung zur Datenbank bei Amazon zu ermöglichen, externe Verbindungen zu den Datenbanken auf meinem Server jedoch einzuschränken?
Bedenken Sie auch, dass sich die IP-Adresse meiner Amazon RDS-Instanz meines Wissens regelmäßig ändern kann.
Antwort1
Nutzen Sie die Vorteile der State Engine:
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
oder in späteren Versionen von iptables
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Genau zu diesem Zweck existiert die State Engine:Erlauben Sie Verkehr, der verschiedene Kriterien erfüllt(z. B. Protokoll, Quellport)sondern ist auch Teil einer bestehenden Verbindung(wie es definiertVerbindung). Das Ergebnis ist, dass das ausgehende TCP SYN
Paket an eine bestimmte externe IP-Adresse auf Zielport 3306 von einem lokalen temporären Port einen Statustabelleneintrag für diese bestimmte Kombination aus IP-Adressen und Portnummern erstellt und nur der Rückverkehr mit derselben Kombination aus Adressen und Ports durchgelassen wird und nur für die Dauer dieser Verbindung.