Come posso bloccare un intervallo di indirizzi IP con un'istanza Amazon EC2?


27

So che un certo intervallo di indirizzi IP sta causando problemi con il mio server, 172.64.*.*qual è il modo migliore per bloccare l'accesso alla mia istanza Amazon EC2? C'è un modo per farlo usando i gruppi di sicurezza o è meglio farlo con il firewall sul server stesso?


1
Se l'istanza si trova all'interno di un VPC, è possibile modificare l'ACL di rete per negare un intervallo specifico.

Risposte:


17

Blocca il traffico sia sul server che sul firewall, se possibile, per ogni evenienza.

I gruppi di sicurezza sono validi perché sono esterni al tuo host, quindi i dati non ti raggiungono mai. Tuttavia, non sono configurabili come la maggior parte dei firewall basati su server.

Sfortunatamente, i gruppi di sicurezza EC2 possono solo "consentire" servizi attraverso una politica di rifiuto predefinita. Quindi, se si sta tentando di bloccare l'accesso a un servizio "autorizzato" pubblicamente per un piccolo intervallo IP, la creazione della regola di consenso per "il resto di Internet" è un po 'più complessa rispetto al semplice blocco di un intervallo IP. Come hai specificato un bel grosso pezzo, l'elenco degli intervalli di rete non inclusi 172.64.0.0/16 non è troppo lungo:

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

Questo elenco dovrebbe essere aggiunto per le tue porte. Quindi è possibile eliminare la regola "consenti tutto" per quella porta. Se si dispone di più porte per le quali non si desidera contigui, l'elenco dovrà andare più volte. Se hai più gruppi di sicurezza, questo può rapidamente diventare ingestibile.

Funzionerà anche localmente il firewall. iptablesè disponibile sull'AMI Amazon predefinita e su tutte le distro linux

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

Dopo aver aggiunto le tue regole dovrai salvarle e assicurarti che il iptablesservizio inizi all'avvio.

# 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

Il file di configurazione in cui salvare varia in base alle distribuzioni.

Utilizzando un VPC

Se si utilizza un VPC per le istanze, è possibile specificare "ACLS di rete" che funzionano sulla propria sottorete. Gli ACL di rete ti consentono di scrivere sia di consentire che di negare le regole, quindi ti consiglio di farlo in questo modo.


questo non funziona più
Kim Jong Woo,

@KimJongWoo cosa non funziona? Non riesco a vedere che iptablesnon funziona, quindi ti riferisci alle grandi subnet consentite nel gruppo di sicurezza?
Matt,

12

Il modo più semplice per arrestare il traffico è (supponendo che venga utilizzato VPC) aggiungendolo all'ACL di rete VPC di quell'istanza e negando tutto il traffico proveniente da quell'indirizzo IP.

Una cosa da ricordare è che il numero della regola di negazione dovrebbe essere inferiore al primo numero della regola di autorizzazione.


4
Vuoi dire che il numero della regola di negazione dovrebbe essere inferiore al primo numero di regola consentito ?
Dan Tenenbaum,

Sì, è corretto.
p222286,

1
tieni presente che esiste un limite di 20 regole ACL. E questo fa schifo, Amazon.
Alex,

3

Ho riscontrato un problema due volte e mi sono reso conto che la mia situazione EC2 è leggermente diversa: iptablesnon funziona se i tuoi server si trovano in un cluster dietro un sistema di bilanciamento del carico elastico (ELB) - l'indirizzo IP di cui l' istanza è a conoscenza è quello di l'ELB.

Se hai ELB configurato in una configurazione più moderna, vedi questa risposta SO: /programming/20123308/how-to-configure-aws-elb-to-block-certain-ip-addresses-nown -spammers

Nel nostro caso, non avevamo impostato le cose bene, quindi ho dovuto usare Apache, che può cercare l' X-FORWARDED-FORintestazione e bloccarne gli indirizzi IP.

Aggiungi questo alla tua configurazione di Apache (forse in un blocco VirtualHost):

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

Questo controllerà l'intestazione impostata dall'ELB

Salvare la configurazione, provare con apache2ctl -tdebian / ubuntu (o apachectl -tper RHEL), quindi riavviare apache.

Questo 403 Forbiddenrestituisce solo una risposta


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.