ฉันรู้ว่าที่อยู่ IP บางช่วงก่อให้เกิดปัญหากับเซิร์ฟเวอร์ของฉัน172.64.*.*
วิธีที่ดีที่สุดในการปิดกั้นการเข้าถึงอินสแตนซ์ Amazon EC2 ของฉันคืออะไร มีวิธีในการทำเช่นนี้โดยใช้กลุ่มความปลอดภัยหรือดีกว่าที่จะทำกับไฟร์วอลล์บนเซิร์ฟเวอร์ของตัวเอง?
ฉันรู้ว่าที่อยู่ IP บางช่วงก่อให้เกิดปัญหากับเซิร์ฟเวอร์ของฉัน172.64.*.*
วิธีที่ดีที่สุดในการปิดกั้นการเข้าถึงอินสแตนซ์ Amazon EC2 ของฉันคืออะไร มีวิธีในการทำเช่นนี้โดยใช้กลุ่มความปลอดภัยหรือดีกว่าที่จะทำกับไฟร์วอลล์บนเซิร์ฟเวอร์ของตัวเอง?
คำตอบ:
บล็อกทราฟฟิกบนทั้งเซิร์ฟเวอร์และไฟร์วอลล์ถ้าเป็นไปได้ในกรณีนี้
กลุ่มความปลอดภัยนั้นดีเพราะอยู่นอกโฮสต์ของคุณดังนั้นข้อมูลไม่ถึงคุณ พวกเขาไม่สามารถกำหนดค่าได้มากเท่ากับไฟร์วอลล์ที่ใช้เซิร์ฟเวอร์เป็นส่วนใหญ่
น่าเสียดายที่กลุ่มความปลอดภัย EC2 สามารถ "อนุญาต" บริการผ่านนโยบายปฏิเสธค่าเริ่มต้นเท่านั้น ดังนั้นหากคุณพยายามปิดกั้นการเข้าถึงบริการ "อนุญาต" แบบสาธารณะสำหรับช่วง IP ขนาดเล็กการสร้างกฎการอนุญาตสำหรับ "ส่วนที่เหลือของอินเทอร์เน็ต" นั้นซับซ้อนกว่าการบล็อกช่วง IP เพียงเล็กน้อย ตามที่คุณระบุก้อนใหญ่ดีรายการช่วงเครือข่ายที่ไม่รวม 172.64.0.0/16 นั้นไม่ยาวเกินไป:
0.0.0.0/1
128.0.0.0/3
160.0.0.0/5
168.0.0.0/6
172.0.0.0/10
173.0.0.0/8
174.0.0.0/7
176.0.0.0/4
192.0.0.0/3
224.0.0.0/3
รายการนี้จะต้องมีการเพิ่มสำหรับพอร์ตของคุณ จากนั้นคุณสามารถลบกฎ 'อนุญาตทั้งหมด' สำหรับพอร์ตนั้น หากคุณมีหลายพอร์ตที่คุณต้องการทำเช่นนี้เพื่อที่จะไม่ต่อเนื่องรายการเหล่านั้นจะต้องไปหลายครั้ง หากคุณมีกลุ่มความปลอดภัยหลายกลุ่มสิ่งนี้สามารถเติบโตได้อย่างรวดเร็วจนไม่สามารถจัดการได้
ไฟร์วอลล์ในพื้นที่จะทำงานได้เช่นกัน iptables
สามารถใช้ได้กับ Amazon AMI เริ่มต้นและลินุกซ์ distro ทั้งหมด
sudo iptables -I INPUT -s 172.64.0.0/16 -j DROP
หลังจากเพิ่มกฎของคุณแล้วคุณจะต้องบันทึกกฎเหล่านี้และตรวจสอบให้แน่ใจว่าiptables
บริการเริ่มต้นเมื่อบูต
# For Amazon Linux
sudo service iptables save
# Other distributions might use one of these:
#sudo iptables-save > /etc/sysconfig/iptables-config
#sudo iptables-save > /etc/iptables/rules.4
ไฟล์ปรับแต่งที่จะบันทึกจะแตกต่างกันไปตามการกระจาย
หากคุณใช้VPCสำหรับอินสแตนซ์ของคุณคุณสามารถระบุ "Network ACLS" ที่ทำงานบนเครือข่ายย่อยของคุณ ACL ของเครือข่ายอนุญาตให้คุณเขียนทั้งอนุญาตและปฏิเสธกฎดังนั้นฉันแนะนำให้ทำเช่นนี้
iptables
ไม่ทำงานดังนั้นคุณหมายถึง subnet ขนาดใหญ่ที่อนุญาตในกลุ่มความปลอดภัยหรือไม่
วิธีที่ง่ายที่สุดในการหยุดการรับส่งข้อมูลคือ (สมมติว่ากำลังใช้ VPC) โดยการเพิ่มลงใน VPC Network ACL ของอินสแตนซ์นั้นและปฏิเสธการรับส่งข้อมูลทั้งหมดจากที่อยู่ IP นั้น
สิ่งหนึ่งที่ควรจดจำคือหมายเลขกฎการปฏิเสธควรน้อยกว่าหมายเลขกฎแรกที่อนุญาต
ฉันพบปัญหาสองครั้งและตระหนักว่าสถานการณ์ EC2 ของฉันแตกต่างกันเล็กน้อย: iptables
ไม่ทำงานหากเซิร์ฟเวอร์ของคุณอยู่ในคลัสเตอร์ด้านหลังตัวโหลดบาลานซ์บาลานเซอร์ (ELB) - ที่อยู่ IP ที่อินสแตนซ์รู้นั้นเกี่ยวข้องกับ ELB
หากคุณมี ELB ของคุณกำหนดค่าในการกำหนดค่าที่ทันสมัยยิ่งขึ้นดูคำตอบ SO นี้: https://stackoverflow.com/questions/20123308/how-to-configure-aws-elb-to-block-certain-ip-addresses- รู้จัก -spammers
ในกรณีของเราเราไม่มีการตั้งค่าที่ดีดังนั้นฉันต้องใช้ Apache ซึ่งสามารถค้นหาX-FORWARDED-FOR
ส่วนหัวและบล็อกที่อยู่ IP จากสิ่งนั้น
เพิ่มลงในการกำหนดค่า apache ของคุณ (อาจเป็นในบล็อก VirtualHost):
RewriteEngine On
RewriteCond %{HTTP:X-FORWARDED-FOR] ^46\.242\.69\.216
RewriteRule .* - [F]
นี่จะตรวจสอบส่วนหัวที่กำหนดโดย ELB
บันทึกการกำหนดค่าทดสอบด้วยapache2ctl -t
สำหรับ debian / ubuntu (หรือapachectl -t
สำหรับ RHEL) จากนั้นรีสตาร์ท apache
นี่เพิ่งส่งการ403 Forbidden
ตอบกลับ
การปิดกั้นการรับส่งข้อมูลจากช่วง IP / IP เดียวใน AWS
นี่คือบทแนะนำด่วน: http://chopmo.dk/posts/2015/06/13/blocking-traffic-in-aws.html