IPTables: Zezwalaj na wychodzące połączenia MySQL, ale nie połączenia przychodzące

10

Mam serwer, który nie zezwala na połączenia z mysql ze źródeł zewnętrznych - wszystkie moje bazy danych i połączenia odbywają się na localhost. Domyślną zasadą iptables jest porzucanie połączeń dla portów, których nie podałem (obecnie nie mam portu 3306 w moich regułach iptable, więc wszystkie połączenia z tym portem są usuwane).

W porządku, ale teraz chciałbym połączyć się z bazą danych mysql zlokalizowaną zewnętrznie na Amazon RDS.

Port 3306 można otworzyć na świat zewnętrzny w następujący sposób:

iptables -t filter -A INPUT -p tcp --sport 3306 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT

To pozwala mi łączyć się z bazą danych na Amazon RDS, jednak pozwala także na zdalne połączenia z bazami danych na moim serwerze.

Co muszę zrobić, aby mój serwer mógł połączyć się z bazą danych w Amazon, ale ograniczyć połączenia zewnętrzne z bazami danych na moim serwerze?

Należy również pamiętać, że adres IP mojej instancji Amazon RDS może się okresowo zmieniać.

MrCarrot
źródło
2
Uzyskać statyczny adres IP od Amazon, a następnie skonfigurować białą listę zezwalającą tylko na ten adres IP dla połączeń przychodzących / wyjściowych?
Peter

Odpowiedzi:

17

Skorzystaj z mechanizmu stanu:

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

lub w późniejszych wersjach 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

Właśnie do tego służy silnik stanowy: zezwalaj na ruch, który spełnia różne kryteria (np. Protokół, port źródłowy), ale jest także częścią istniejącego połączenia (ponieważ definiuje połączenie ). Rezultatem jest to, że wychodzący TCP SYNpakiet do określonego zewnętrznego adresu IP na docelowym porcie 3306, z lokalnego portu efmeralnego, utworzy pozycję tablicy stanów dla tej konkretnej kombinacji adresów IP i numerów portów, i zwraca ruch tylko z tą samą kombinacją adresy i porty będą dozwolone przez i tylko na czas trwania tego połączenia.

Szalony Kapelusznik
źródło