วิธีการป้องกัน / ไฟร์วอลล์โทรไปยัง AWS EC2 อินสแตนซ์ Metadata API ได้อย่างไร


14

AWS EC2 อินสแตนซ์ API ข้อมูลเมตาให้มากของการทำงานที่มีประโยชน์ ทุกคนบนอินสแตนซ์ EC2 จริงสามารถโทรออกhttp://169.254.169.254/และดูข้อมูลเมตาสำหรับอินสแตนซ์ที่ทำการโทรออก ความปลอดภัยของ API นั้นจะตรวจสอบว่าการโทรนั้นมาจากอินสแตนซ์เท่านั้น ดังนั้นหากฉันอนุญาตให้บางคนเรียกใช้โค้ดในอินสแตนซ์ของฉันฉันต้องการทราบวิธีบล็อกการเข้าถึง URL นั้นโดยเฉพาะในขณะที่ยังคงเข้าถึงตัวเองได้ดีที่สุด

ในฐานะที่เป็นไฮไลต์ฉันรู้สึกประหลาดใจที่พบว่า Metadata API สามารถเข้าถึงได้ผ่านทางhttp://instance-data/(ซึ่งฉันพบโดยบังเอิญที่ใดที่หนึ่ง)

ฉันสามารถตรวจสอบ URL ที่ถูกเรียกใช้โดยรหัสทั้งหมดที่ทำงานบนอินสแตนซ์นี้ แต่ฉันคิดว่านี่ไม่ใช่วิธีการที่ดีที่กำหนดที่อยู่ IPv6 (อาจเป็นไปได้) หรือการเข้ารหัส URI แปลก ๆ ที่จะแก้ไขใน Metadata IP (169.254) .169.254) หรือบางที่ไม่มีเอกสาร (ดูเหมือน) URL http://instance-data/ที่ชอบ

คำตอบ:


25

ปิดไฟร์วอลล์

iptables -A OUTPUT -m owner ! --uid-owner root -d 169.254.169.254 -j DROP

กฎนี้ห้ามผู้ใช้อื่นที่ไม่ใช่ผู้ใช้รูทไม่ให้เปิดการเชื่อมต่อกับ 169.254.169.254


สิ่งนี้จะไม่ป้องกันการใช้ "ปกติ" ของบริการนี้หรือไม่ โดยทั่วไปบริการจะถูกเรียกใช้โดย / obo ผู้ใช้ EC2 ที่แทบไม่เคยรูท
Sam-T

@ Sam-T หากคุณต้องการให้ผู้ใช้ ec2 เข้าถึงคุณสามารถเขียนกฎเพื่ออนุญาตได้เช่นกัน
Michael Hampton

หากคุณป้องกันที่ระดับไฟร์วอลล์ - เพื่ออนุญาตให้รูทเท่านั้นไม่แน่ใจว่าคุณจะเปิดใช้งานสำหรับผู้ใช้ EC2 ได้อย่างไร (ฉันไม่รู้) โดยผู้ใช้ EC2 - ฉันหมายถึงผู้ที่เริ่มต้นอินสแตนซ์ - ความเข้าใจของฉันคือข้อมูลเมตาเข้าถึงได้โดยผู้ใช้ EC2 (และอื่น ๆ ) ในอินสแตนซ์ คุณสามารถยกตัวอย่าง
Sam-T
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.