IPTables: อนุญาตการเชื่อมต่อ MySQL ขาออก แต่ไม่ใช่การเชื่อมต่อขาเข้า


10

ฉันมีเซิร์ฟเวอร์ที่ไม่อนุญาตการเชื่อมต่อไปยัง mysql จากแหล่งภายนอก - ฐานข้อมูลและการเชื่อมต่อทั้งหมดของฉันเกิดขึ้นบน localhost นโยบายเริ่มต้นของ iptables คือการวางการเชื่อมต่อสำหรับพอร์ตใด ๆ ที่ฉันไม่ได้ระบุไว้ (ปัจจุบันฉันไม่มีพอร์ต 3306 ที่ระบุในกฎ iptable ของฉันดังนั้นการเชื่อมต่อทั้งหมดไปยังพอร์ตนี้จะถูกทิ้ง)

ไม่เป็นไร แต่ตอนนี้ฉันต้องการเชื่อมต่อกับฐานข้อมูล mysql ซึ่งตั้งอยู่ภายนอกบน Amazon RDS

พอร์ต 3306 สามารถเปิดได้ถึงโลกภายนอกดังนี้:

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

สิ่งนี้ทำให้ฉันสามารถเชื่อมต่อกับฐานข้อมูลบน Amazon RDS ได้ แต่มันยังอนุญาตการเชื่อมต่อระยะไกลไปยังฐานข้อมูลบนเซิร์ฟเวอร์ของฉัน

ฉันต้องทำอย่างไรเพื่ออนุญาตให้เซิร์ฟเวอร์ของฉันเชื่อมต่อกับฐานข้อมูลใน Amazon แต่ จำกัด การเชื่อมต่อภายนอกกับฐานข้อมูลบนเซิร์ฟเวอร์ของฉัน

โปรดจำไว้ว่าที่อยู่ IP ของอินสแตนซ์ Amazon RDS ของฉันสามารถเปลี่ยนเป็นระยะได้ฉันเชื่อ


2
รับ IP แบบคงที่จาก Amazon แล้วตั้งค่ารายการที่อนุญาตที่อนุญาตเฉพาะ IP นั้นสำหรับการเชื่อมต่อขาเข้า / ขาออก
ปีเตอร์

คำตอบ:


17

ใช้ประโยชน์จากเครื่องยนต์สถานะ:

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

หรือในรุ่นที่ใหม่กว่าของ 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

นี่คือสิ่งที่กลไกของรัฐทำอยู่: อนุญาตการรับส่งข้อมูลที่ตรงกับเกณฑ์ต่าง ๆ (เช่นโพรโทคอลพอร์ตต้นทาง) แต่ก็เป็นส่วนหนึ่งของการเชื่อมต่อที่มีอยู่ (ตามที่กำหนดการเชื่อมต่อ ) ผลที่สุดคือTCP SYNแพ็กเก็ตขาออกไปยังที่อยู่ IP ภายนอกเฉพาะบนพอร์ตปลายทาง 3306 จากพอร์ต ephmeral ท้องถิ่นจะสร้างรายการตารางสถานะสำหรับการรวมกันของที่อยู่ IP และหมายเลขพอร์ตโดยเฉพาะและคืนการรับส่งข้อมูลด้วยชุดค่าผสมเดียวกัน ที่อยู่และพอร์ตจะได้รับอนุญาตผ่านและเฉพาะสำหรับช่วงเวลาของการเชื่อมต่อนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.