Como posso bloquear um intervalo de endereços IP com uma instância do Amazon EC2?


27

Sei que um certo intervalo de endereços IP está causando problemas no meu servidor, 172.64.*.*qual é a melhor maneira de bloquear o acesso à minha instância do Amazon EC2? Existe uma maneira de fazer isso usando grupos de segurança ou é melhor fazê-lo com o firewall no próprio servidor?


11
Se a instância estiver em uma VPC, você poderá editar a ACL da rede para negar um intervalo específico.

Respostas:


17

Bloqueie o tráfego no servidor e no firewall, se possível, apenas por precaução.

Os grupos de segurança são bons porque são externos ao seu host para que os dados nunca cheguem até você. Eles não são tão configuráveis ​​quanto a maioria dos firewalls baseados em servidor.

Infelizmente, os grupos de segurança do EC2 podem apenas "permitir" serviços por meio de uma política de negação padrão. Portanto, se você estiver tentando bloquear o acesso a um serviço "permitido" publicamente para um pequeno intervalo de IPs, criar a regra de permissão para "o resto da Internet" é um pouco mais complexo do que apenas bloquear um intervalo de IPs. Como você especificou um bom pedaço, a lista de intervalos de rede que não inclui 172.64.0.0/16 não é muito longa:

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

Essa lista precisaria ser adicionada para suas portas. Em seguida, você pode excluir sua regra 'permitir tudo' para essa porta. Se você tiver várias portas para as quais não é contígua, a lista delas precisará ser exibida várias vezes. Se você tiver vários grupos de segurança, isso poderá se tornar rapidamente incontrolável.

O firewall local também funcionará. iptablesestá disponível na Amazon AMI padrão e em todas as distros do Linux

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

Depois de adicionar suas regras, você precisará salvá-las e garantir que o iptablesserviço seja iniciado na inicialização.

# 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

O arquivo de configuração para salvar varia de acordo com as distribuições.

Usando uma VPC

Se você usar uma VPC para suas instâncias, poderá especificar "ACLS de rede" que funcionam em sua sub-rede. As ACLs de rede permitem que você escreva regras de permissão e negação, por isso recomendo fazer dessa maneira.


isso não funciona mais
Kim Jong Woo

@KimJongWoo o que não funciona? Não vejo como iptablesnão está funcionando. Você está se referindo às grandes sub-redes permitidas no grupo de segurança?
Matt

12

A maneira mais simples de interromper o tráfego é (supondo que o VPC esteja sendo usado) adicionando-o à ACL da rede VPC dessa instância e negando todo o tráfego desse endereço IP.

Uma coisa a lembrar é que o número da regra de negação deve ser menor que o primeiro número da regra de permissão.


4
Você quer dizer que o número da regra de negação deve ser menor que o primeiro número da regra de permissão ?
Dan Tenenbaum

Sim esta correto.
Pg2286

11
lembre-se de que há um limite de 20 regras da ACL. E isso é péssimo, Amazon.
Alex

3

Eu deparei com um problema duas vezes e percebi que minha situação no EC2 é um pouco diferente: iptablesnão funciona se os servidores estiverem em um cluster atrás de um ELB (elástico) - o endereço IP instância conhece é o de o ELB.

Se você tiver seu ELB configurado em uma configuração mais moderna, consulte esta resposta do SO: https://stackoverflow.com/questions/20123308/how-to-configure-aws-elb-to-block-About-ip-addresses-known -spammers

No nosso caso, não tínhamos as coisas bem configuradas, então tive que usar o Apache, que pode procurar o X-FORWARDED-FOR cabeçalho e bloquear os endereços IP a partir dele.

Adicione isso à sua configuração apache (talvez em um bloco do VirtualHost):

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

Isso verificará o cabeçalho definido pelo ELB

Salve a configuração, teste com apache2ctl -tpara debian / ubuntu (ouapachectl -t RHEL) e reinicie o apache.

Isso apenas envia uma 403 Forbiddenresposta de volta


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.