Como bloquear um IP no Linux usando iptables
Autor: Rene Gama | Publicado: 2013-02-08T07:03:00-04:00





            
                        junho 13, 2012
                       &nbsp; Homehost
            
                             &nbsp; No comments 
                    
Nesta semana, um de 
nossos parceiros estava recebendo um flood bastante sério em seu 
servidor de e-mails (IMAP). Determinado endereço IP estava realizando 
tal ataque.

Jun 12 12:59:03 server dovecot: 
pop3-login: Disconnected (auth failed, 1 attempts): user=, 
method=PLAIN, rip=189.1.**.**, lip=93.104.**.**
Jun 12 12:59:06 server dovecot: 
pop3-login: Disconnected (auth failed, 1 attempts): user=, 
method=PLAIN, rip=189.1.**.**, lip=93.104.**.**

Analizando as mensagens de erro, descobrimos se tratar do IP 
189.1.**.** . Para resolver o problema, fizemos o bloqueio do endereço 
IP que estava originando o ataque, usando o firewall iptables.

Nos exemplos a seguir, substitua sempre o IP 1.2.3.4 pelo IP que deseja bloquear!

Para realizar um simples bloqueio ao IP que causou o ataque:


iptables -I INPUT -s 1.2.3.4 -j DROP

Pronto! O IP problemático já estará bloqueado e o servidor não receberá mais nenhum dado dele.

Opções mais avançadas do iptables para realizar bloqueios:

Caso seu servidor tenha mais de uma placa de rede, você pode bloquear
 apenas em uma placa específica (aonde eth1 é a interface que receberá o
 bloqueio).


iptables -I INPUT -i eth1 -s 1.2.3.4 -j DROP

Como bloquear um range inteiro (subnet) de 254 IPs ? Digamos: 
189.1.50.1&nbsp; até 189.1.50.254 ? Troque o último bloco do IP por “0″ e 
adicione /24 ao final:


iptables -A INPUT -s 189.1.50.0/24 -j DROP

Como bloquear uma sub-rede ainda maior? Por exemplo, 189.1.1.1 até 
189.1.254.254 ? Substitua os dois ultimos blocos por “0″ e agora 
adicione /16 ao final:


iptables -A INPUT -s 189.1.0.0/16 -j DROP

Como gerar um log a cada bloqueio realizado com o iptables ?


iptables&nbsp; -A INPUT -s&nbsp;189.1.50.0/24 -j LOG –log-prefix “IP BLOQUEADO:”

Como exibir todos os IPs bloqueados no sistema?


iptables -L -v

Como verificar se determinado IP está ou não bloqueado ?


iptables -L -v | grep 1.2.3.4

Como desbloquear um IP ?


Digite: iptables -L INPUT -n –line-numbers | grep 1.2.3.4
Exemplo de resultado:num&nbsp;&nbsp; pkts bytes target&nbsp;&nbsp;&nbsp;&nbsp; prot opt in&nbsp;&nbsp;&nbsp;&nbsp; out&nbsp;&nbsp;&nbsp;&nbsp; source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination
1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0 DROP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; –&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 200.19.18.5 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0
2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0 DROP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; –&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201.19.18.100 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0 DROP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; –&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 189.19.29.2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0/0
Supondo que queremos desbloquear o IP 201.19.18.100 , que está na linha 2:
iptables -D INPUT 2

Como salvar as configurações do iptables, para terem efeito após um reboot ?


&nbsp;service iptables save
less /etc/sysconfig/iptables