Jak mogę zablokować zakres adresów IP za pomocą instancji Amazon EC2?


27

Wiem, że pewien zakres adresów IP powoduje problemy z moim serwerem. 172.64.*.*Jaki jest najlepszy sposób na zablokowanie dostępu do mojej instancji Amazon EC2? Czy istnieje sposób, aby to zrobić za pomocą grup zabezpieczeń, czy lepiej jest to zrobić za pomocą zapory na samym serwerze?


1
Jeśli instancja znajduje się w VPC, możesz edytować Network ACL, aby odmówić określonego zakresu.

Odpowiedzi:


17

Na wszelki wypadek blokuj ruch zarówno na serwerze, jak i zaporze.

Grupy zabezpieczeń są dobre, ponieważ znajdują się poza hostem, więc dane nigdy nie docierają do ciebie. Nie są one jednak tak konfigurowalne jak większość zapór ogniowych na serwerze.

Niestety grupy zabezpieczeń EC2 mogą „zezwalać” na usługi tylko poprzez domyślne zasady odmowy. Jeśli więc próbujesz zablokować dostęp do publicznie „dozwolonej” usługi dla małego zakresu adresów IP, zbudowanie reguły zezwolenia dla „reszty Internetu” jest nieco bardziej skomplikowane niż tylko blokowanie zakresu adresów IP. Jak już określiłeś niezły fragment, lista zakresów sieci nie obejmujących 172.64.0.0/16 nie jest zbyt długa:

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

Tę listę trzeba będzie dodać dla swoich portów. Następnie możesz usunąć regułę „zezwalaj na wszystko” dla tego portu. Jeśli masz wiele portów, które chcesz to zrobić, to nie są ciągłe, lista będzie musiała przejść wiele razy. Jeśli masz wiele grup zabezpieczeń, może to szybko przerodzić się w niemożność zarządzania.

Działa również lokalnie zapora ogniowa. iptablesjest dostępny na domyślnej Amazon AMI i wszystkich dystrybucjach Linuksa

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

Po dodaniu reguł musisz je zapisać i upewnić się, że iptablesusługa rozpocznie się przy starcie systemu.

# 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

Plik konfiguracyjny do zapisania będzie się różnić w zależności od dystrybucji.

Korzystanie z VPC

Jeśli używasz VPC dla swoich instancji, możesz określić „Network ACLS”, które działają w twojej podsieci. Sieciowe listy ACL pozwalają na pisanie zarówno reguł zezwalających, jak i odmawiających, więc zaleciłbym zrobienie tego w ten sposób.


to już nie działa
Kim Jong Woo

@KimJongWoo co nie działa? Nie widzę iptablesniedziałającego, więc czy odnosisz się do dużej dozwolonej podsieci w grupie zabezpieczeń?
Matt

12

Najprostszym sposobem zatrzymania ruchu jest (zakładając, że używany jest VPC), dodając go do listy ACL sieci VPC tej instancji i odrzucając cały ruch z tego adresu IP.

Należy pamiętać, że numer reguły odmowy powinien być mniejszy niż numer pierwszej reguły zezwolenia.


4
Masz na myśli, że numer reguły odmowy powinien być mniejszy niż pierwszy numer reguły zezwolenia ?
Dan Tenenbaum

Tak, to jest poprawne.
str.2286 30.04.16

1
pamiętaj, że istnieje limit 20 zasad ACL. I to jest do bani, Amazon.
Alex

3

Dwukrotnie napotkałem problem i zdałem sobie sprawę, że moja sytuacja EC2 jest nieco inna: iptablesnie działa, jeśli twój serwer (serwery) znajdują się w klastrze za elastycznym modułem równoważenia obciążenia (ELB) - adres IP, o którym wie instancja, to adres ELB.

Jeśli masz skonfigurowane ELB w bardziej nowoczesnej konfiguracji, zapoznaj się z SO: /programming/20123308/how-to-configure-aws-elb-to-block-certain-ip-addresses-known -spamerzy

W naszym przypadku nie mieliśmy dobrze skonfigurowanych ustawień, więc musiałem użyć Apache, który może szukać X-FORWARDED-FORnagłówka i blokować z niego adresy IP.

Dodaj to do konfiguracji Apache (być może w bloku VirtualHost):

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

Spowoduje to sprawdzenie nagłówka ustawionego przez ELB

Zapisz konfigurację, przetestuj apache2ctl -tdla debian / ubuntu (lub apachectl -tdla RHEL), a następnie uruchom ponownie apache.

To po prostu wysyła 403 Forbiddenodpowiedź z powrotem


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.