Wie kann ich einen IP-Adressbereich mit einer Amazon EC2-Instanz blockieren?

27

Ich weiß, dass ein bestimmter Bereich von IP-Adressen Probleme mit meinem Server verursacht. 172.64.*.*Wie kann ich den Zugriff auf meine Amazon EC2-Instanz am besten blockieren? Gibt es eine Möglichkeit, dies mithilfe von Sicherheitsgruppen zu tun, oder ist es besser, dies mit der Firewall auf dem Server selbst zu tun?

cwd
quelle
1
Befindet sich die Instanz in einer VPC, können Sie die Netzwerk-ACL bearbeiten, um einen bestimmten Bereich abzulehnen.

Antworten:

17

Blockieren Sie den Datenverkehr sowohl auf dem Server als auch auf der Firewall, falls dies möglich ist.

Sicherheitsgruppen sind gut, weil sie sich außerhalb Ihres Hosts befinden, sodass die Daten niemals bei Ihnen ankommen. Sie sind jedoch nicht ganz so konfigurierbar wie die meisten serverbasierten Firewalls.

Leider können EC2-Sicherheitsgruppen Dienste nur über eine Standardverweigerungsrichtlinie "zulassen". Wenn Sie also versuchen, den Zugriff auf einen öffentlich "zugelassenen" Dienst für einen kleinen IP-Bereich zu blockieren, ist das Erstellen der Zulassungsregel für "den Rest des Internets" etwas komplexer als nur das Blockieren eines IP-Bereichs. Da Sie einen schönen großen Teil angegeben haben, ist die Liste der Netzwerkbereiche ohne 172.64.0.0/16 nicht zu lang:

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

Diese Liste müsste für Ihre Ports hinzugefügt werden. Anschließend können Sie die Regel "Alle zulassen" für diesen Port löschen. Wenn Sie mehrere Ports haben, für die Sie dies tun möchten, die nicht zusammenhängend sind, muss die Liste mehrmals verwendet werden. Wenn Sie über mehrere Sicherheitsgruppen verfügen, kann dies schnell zu Problemen führen.

Lokale Firewall funktioniert auch. iptablesist für Amazon AMI und alle Linux-Distributionen verfügbar

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

Nachdem Sie Ihre Regeln hinzugefügt haben, müssen Sie sie speichern und sicherstellen, dass der iptablesDienst beim Start gestartet wird.

# 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

Die Konfigurationsdatei, in der gespeichert werden soll, hängt von den Distributionen ab.

Verwenden einer VPC

Wenn Sie eine VPC für Ihre Instanzen verwenden, können Sie "Netzwerk-ACLS" angeben, die in Ihrem Subnetz funktionieren. In Netzwerk-ACLs können Sie sowohl Zulassungs- als auch Ablehnungsregeln schreiben. Ich empfehle daher, dies auf diese Weise zu tun.

Matt
quelle
das funktioniert nicht mehr
Kim Jong Woo
@KimJongWoo was geht nicht? Ich kann nicht sehen iptables, dass es nicht funktioniert. Beziehen Sie sich also auf das große Subnetz, das in der Sicherheitsgruppe zulässig ist?
Matt
12

Die einfachste Möglichkeit, den Datenverkehr zu stoppen, besteht darin, ihn der VPC-Netzwerk-ACL dieser Instanz hinzuzufügen und den gesamten Datenverkehr von dieser IP-Adresse abzulehnen (vorausgesetzt, VPC wird verwendet).

Beachten Sie, dass die Nummer der Verweigerungsregel kleiner sein sollte als die Nummer der ersten Zulassungsregel.

pg2286
quelle
4
Sie meinen, die Nummer der Ablehnungsregel sollte kleiner sein als die Nummer der ersten zulässigen Regel?
Dan Tenenbaum
Ja das ist richtig.
pg2286
1
Beachten Sie, dass die Anzahl der ACL-Regeln auf 20 begrenzt ist. Und das ist scheiße, Amazon.
Alex
3

Ich bin zweimal auf ein Problem gestoßen und habe festgestellt, dass meine EC2-Situation etwas anders ist: Funktioniert iptablesnicht, wenn sich Ihre Server in einem Cluster hinter einem ELB (Elastic Load Balancer) befinden - die IP-Adresse, von der die Instanz weiß, ist die von die ELB.

Wenn Sie Ihre ELB in einer moderneren Konfiguration konfiguriert haben, lesen Sie diese SO-Antwort: https://stackoverflow.com/questions/20123308/how-to-configure-aws-elb-to-block-certain-ip-addresses-known -Spammer

In unserem Fall hatten wir die Dinge nicht gut eingerichtet, also musste ich Apache verwenden, der nach dem X-FORWARDED-FORHeader suchen und IP-Adressen davon blockieren kann.

Fügen Sie dies zu Ihrer Apache-Konfiguration hinzu (möglicherweise in einem VirtualHost-Block):

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

Dies überprüft den von der ELB gesetzten Header

Speichern Sie die Konfiguration, testen Sie sie mit apache2ctl -tdebian / ubuntu (oder apachectl -tRHEL) und starten Sie Apache neu.

Dies sendet nur eine 403 ForbiddenAntwort zurück

Tom Harrison Jr
quelle
2

Blockieren des Datenverkehrs von einem einzelnen IP / IP-Bereich in AWS

  1. Öffnen Sie Ihr VPC-Dashboard
  2. Öffnen Sie die Ansicht "Netzwerk-ACLs"
  3. Öffnen Sie den ACL-Editor
  4. Fügen Sie eine Regel hinzu, um den Datenverkehr zu blockieren

Hier ist eine kurze Anleitung: http://chopmo.dk/posts/2015/06/13/blocking-traffic-in-aws.html

kt
quelle