ฉันจะบล็อกช่วงของที่อยู่ IP ด้วยอินสแตนซ์ Amazon EC2 ได้อย่างไร


27

ฉันรู้ว่าที่อยู่ IP บางช่วงก่อให้เกิดปัญหากับเซิร์ฟเวอร์ของฉัน172.64.*.*วิธีที่ดีที่สุดในการปิดกั้นการเข้าถึงอินสแตนซ์ Amazon EC2 ของฉันคืออะไร มีวิธีในการทำเช่นนี้โดยใช้กลุ่มความปลอดภัยหรือดีกว่าที่จะทำกับไฟร์วอลล์บนเซิร์ฟเวอร์ของตัวเอง?


1
หากอินสแตนซ์อยู่ใน VPC คุณสามารถแก้ไข Network ACL เพื่อปฏิเสธช่วงที่ระบุ

คำตอบ:


17

บล็อกทราฟฟิกบนทั้งเซิร์ฟเวอร์และไฟร์วอลล์ถ้าเป็นไปได้ในกรณีนี้

กลุ่มความปลอดภัยนั้นดีเพราะอยู่นอกโฮสต์ของคุณดังนั้นข้อมูลไม่ถึงคุณ พวกเขาไม่สามารถกำหนดค่าได้มากเท่ากับไฟร์วอลล์ที่ใช้เซิร์ฟเวอร์เป็นส่วนใหญ่

น่าเสียดายที่กลุ่มความปลอดภัย 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

หากคุณใช้VPCสำหรับอินสแตนซ์ของคุณคุณสามารถระบุ "Network ACLS" ที่ทำงานบนเครือข่ายย่อยของคุณ ACL ของเครือข่ายอนุญาตให้คุณเขียนทั้งอนุญาตและปฏิเสธกฎดังนั้นฉันแนะนำให้ทำเช่นนี้


สิ่งนี้ใช้ไม่ได้อีกต่อไป
Kim Jong Woo

@ KimJongWoo อะไรที่ใช้ไม่ได้? ฉันไม่เห็นว่าiptablesไม่ทำงานดังนั้นคุณหมายถึง subnet ขนาดใหญ่ที่อนุญาตในกลุ่มความปลอดภัยหรือไม่
Matt

12

วิธีที่ง่ายที่สุดในการหยุดการรับส่งข้อมูลคือ (สมมติว่ากำลังใช้ VPC) โดยการเพิ่มลงใน VPC Network ACL ของอินสแตนซ์นั้นและปฏิเสธการรับส่งข้อมูลทั้งหมดจากที่อยู่ IP นั้น

สิ่งหนึ่งที่ควรจดจำคือหมายเลขกฎการปฏิเสธควรน้อยกว่าหมายเลขกฎแรกที่อนุญาต


4
คุณหมายถึงหมายเลขกฎปฏิเสธควรน้อยกว่านั้นให้อนุญาตหมายเลขกฎแรกหรือไม่
Dan Tenenbaum

ใช่ที่ถูกต้อง.
pg2286

1
โปรดจำไว้ว่ามีข้อ จำกัด 20 กฎ ACL และนี่มันแย่มากอเมซอน
อเล็กซ์

3

ฉันพบปัญหาสองครั้งและตระหนักว่าสถานการณ์ 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ตอบกลับ


2

การปิดกั้นการรับส่งข้อมูลจากช่วง IP / IP เดียวใน AWS

  1. เปิดแดชบอร์ด VPC ของคุณ
  2. เปิดมุมมอง“ Network ACLs”
  3. เปิดตัวแก้ไข ACL
  4. เพิ่มกฎเพื่อบล็อกการรับส่งข้อมูล

นี่คือบทแนะนำด่วน: http://chopmo.dk/posts/2015/06/13/blocking-traffic-in-aws.html

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