Amazon EC2 örneğiyle bir dizi IP adresini nasıl engelleyebilirim?


27

Belirli bir IP adresi aralığının sunucumda sorun 172.64.*.*yarattığını biliyorum, Amazon EC2 örneğime erişimi engellemenin en iyi yolu nedir? Bunu güvenlik gruplarını kullanarak yapmanın bir yolu var mı, yoksa sunucunun kendisinin güvenlik duvarı ile yapması daha mı iyi?


1
Örnek bir VPC dahilindeyse, belirli bir aralığı reddetmek için Ağ ACL'sini düzenleyebilirsiniz.

Yanıtlar:


17

Mümkünse, hem sunucu hem de güvenlik duvarındaki trafiği engelleyin.

Güvenlik grupları iyidir çünkü ana makinenize haricidirler, böylece veriler size ulaşmaz. Ancak çoğu sunucu tabanlı güvenlik duvarları kadar yapılandırılabilir değiller.

Ne yazık ki, EC2 güvenlik grupları hizmetlere yalnızca bir reddetme politikası yoluyla "izin verebilir". Bu nedenle, küçük bir IP aralığı için genel olarak "izin verilen" bir hizmete erişimi engellemeye çalışıyorsanız, "internetin geri kalanı" için izin kuralını oluşturmak, yalnızca bir IP aralığını engellemekten biraz daha karmaşıktır. Güzel bir büyük yığın belirttiğiniz gibi, 172.64.0.0/16 içermeyen ağ aralıklarının listesi çok uzun değil:

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

Bu liste port (lar) ınıza eklenmeli. Ardından, bu bağlantı noktası için 'herkese izin ver' kuralınızı silebilirsiniz. Birden fazla bağlantı noktanız varsa, bunu yapmak istediğiniz için bitişik olmayanlar, listelerinin birden çok kez gitmesi gerekir. Birden fazla güvenlik grubunuz varsa, bu hızla yönetilemez hale gelebilir.

Yerel olarak güvenlik duvarı da çalışacaktır. iptablesVarsayılan Amazon AMI’de ve tüm Linux Distro’larında kullanılabilir.

sudo iptables -I INPUT -s 172.64.0.0/16 -j DROP

Kurallarınızı ekledikten sonra bunları kaydetmeniz ve iptableshizmetin açılışta başladığından emin olmanız gerekir .

# 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

Kaydedilecek yapılandırma dosyası, dağıtımlara göre değişir.

VPC kullanmak

Örnekleriniz için bir VPC kullanıyorsanız , alt ağınızda çalışan "Ağ ACLS" yi belirleyebilirsiniz. Ağ EKL'leri, kuralları hem izin hem de reddetmenizi sağlar; bu şekilde yapmanızı öneririm.


bu artık işe yaramıyor
Kim Jong Woo

@KimJongWoo ne çalışmıyor? Çalışmıyor göremiyorum iptablesbu yüzden güvenlik grubunda izin verilen büyük alt ağa mı bakıyorsunuz?
Matt

12

Trafiği durdurmanın en basit yolu (VPC kullanıldığını varsayarsak), bu örneğin VPC Ağı ACL'sine ekleyerek ve bu IP Adresinden gelen tüm trafiği reddetmektir.

Hatırlanması gereken bir şey, inkar etme kural numarasının ilk izin verilen kural numarasının altında olması gerektiğidir.


4
Reddetme kuralı numarası, ilk izinli kuralı numarasından daha az olması gerektiği anlamına mı geliyor ?
Dan Tenenbaum

Evet doğru.
pg2286,

1
20 ACL kuralının bir sınırı olduğunu unutmayın. Ve bu berbat, Amazon.
Alex,

3

İki kez bir sorunla karşılaştım ve EC2 durumumun biraz farklı olduğunu fark ettim: iptableseğer sunucularınız elastik bir yük dengeleyicisinin (ELB) arkasındaki bir kümede ise işe yaramaz - örneğin bildiği IP adresi şöyledir: ELB.

ELB'nizi daha modern bir yapılandırmada yapılandırdıysanız, bu SO cevabına bakınız: /programming/20123308/how-to-configure-aws-elb-to-block-certain-ip-addresses-known -spammers

Bizim durumumuzda, hiçbir şey yolunda gitmedi, bu yüzden X-FORWARDED-FORbaşlığı arayabilir ve IP adreslerini engelleyebilecek olan Apache'yi kullanmak zorunda kaldım .

Bunu apache yapılandırmanıza ekleyin (belki de VirtualHost bloğunda):

RewriteEngine On
RewriteCond %{HTTP:X-FORWARDED-FOR] ^46\.242\.69\.216
RewriteRule .* - [F]

Bu, ELB tarafından ayarlanan başlığı kontrol edecektir.

Yapılandırmayı kaydedin, apache2ctl -tdebian / ubuntu (veya apachectl -tRHEL) için test edin , sonra apache'yi yeniden başlatın.

Bu sadece bir 403 Forbiddencevap geri gönderir


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.