Iptables é a aplicação nativa de firewall do linux. Através dele, você pode realizar bloqueio de IPs, controle de tráfego de entrada, bloqueios de saida de tráfego… Além disso, ele também possui funções avançadas como controle de tráfego por uma porta específica. Para trabalhar com o IPTABLES, é muito importante saber seu IP. Por isso, você pode consultar seu IP nesta página: Qual o meu IP ?
Nesta semana, um de nossos parceiros estava recebendo um flood (ataque) 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=<loan>, method=PLAIN, rip=189.1.**.**, lip=93.104.**.** Jun 12 12:59:06 server dovecot: pop3-login: Disconnected (auth failed, 1 attempts): user=<loan>, 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.
Bloqueando um IP
Nos exemplos a seguir, substitua sempre o IP 1.2.3.4 pelo IP que deseja bloquear!
Inicialmente, para realizar um simples bloqueio ao IP que causou o ataque:
iptables -I INPUT -s 1.2.3.4 -j DROP
Dessa forma, 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 ? Por exemplo: 189.1.50.1 até 189.1.50.254 ? Simplesmente, 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 -A INPUT -s 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 no firewall iptables ?
Primeiramente vamos listar os IPs bloqueados:
iptables -L INPUT -n --line-numbers | grep 1.2.3.4
Por exemplo, o resultado:
num pkts bytes target prot opt in out source destination 1 0 0 DROP 0 -- * * 200.19.18.5 0.0.0.0/0 2 0 0 DROP 0 -- * * 201.19.18.100 0.0.0.0/0 3 0 0 DROP 0 -- * * 189.19.29.2 0.0.0.0/0
Dessa forma, supondo que queremos desbloquear o IP 201.19.18.100 , que está na linha 2:
iptables -D INPUT 2
Salvando as configurações do iptables para o próximo boot
service iptables save
Por fim, para conferir a lista de regras iptables no boot, use este comando:
less /etc/sysconfig/iptables