Ich habe einen zentralen Server mit einer installierten Datenbank und mehrere verteilte Server, die diese zentrale Datenbank aufrufen. Aus Sicherheitsgründen möchte ich, dass auf den zentralen Server nur die bekannten Server zugreifen können.
Was ich hier erreichen möchte, ist, den Servern 192.168.1.5 und 192.168.2.6 den Zugriff auf Port 5432 zu ermöglichen.
iptables -A INPUT -s 192.168.1.5,192.168.2.6 -d ??.??.??.?? -p tcp --dport 5432 -j ACCEPT
Ist das richtig?
Was ich nicht verstehe, ist die Möglichkeit, ein Ziel anzugeben. Das Ziel bei INPUT ist doch immer der Server selbst, oder? Warum ist es dann konfigurierbar? Muss ich es angeben oder wird, wenn ich es weglasse, automatisch auf den gleichen Server verwiesen?
Antwort1
Zuerst müssen Sie Ihre Regel in zwei Regeln aufteilen (ich habe es mit einem Befehl versucht, bei dem beide IPs angegeben wurden, und es scheint zu funktionieren). Das Endergebnis sind zwei Regeln wie die folgenden:
iptables -A INPUT -s 192.168.1.5 -p tcp --dport 5432 -j ACCEPT
iptables -A INPUT -s 192.168.2.6 -p tcp --dport 5432 -j ACCEPT
Zweitens können Sie das weglassen, -d
um einfach eine beliebige IP abzugleichen. Da es sich um INPUT
eine Kette handelt, muss es mit einer der Maschinen-IPs übereinstimmen.
Drittens: Vergessen Sie nicht, eine Regel festzulegen DROP
, denn wenn Sie nur diese beiden Regeln ACCEPT
als Standardrichtlinie für INPUT
die Kette haben, werden alle Verbindungen zugelassen.
Außerdem müssen Sie möglicherweise Datenverkehr zulassen RELATED
, ESTABLISHED
damit die Pakete in beide Richtungen fließen können. Dies hängt von Ihren Regeln ab (was zulässig ist und was verworfen wird). Hier ist die Regel:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT