Após muito tempo, finalmente tive um tempo, pra voltar a escrever, e dessa vez pretendo manter uma periodicidade. O motivo da minha ausencia? Bom agora eu tenho Dom
Sem mais delongas, vamos ao que interessa, o que é Iptables, pra que server, e onde vou usar isso?
O que é Iptables?
De acordo com a singela descrição do criador desse pacote ( NetFilter), O Iptables é uma ferramenta para criar e administrar regras e assim filtrar pacotes de redes.
O iptables pode funcionar baseado no endereço, porta de origem, destino do pacote, prioridade. Ele funciona através da comparação de regras para saber se um pacote tem ou não permissão para passar. Em firewalls mais restritivos, o pacote é bloqueado e registrado para que o administrador do sistema tenha conhecimento sobre o que está acontecendo em seu sistema.
Para que serve?
Com o Iptables, você pode redirecionar portas, trocar um protocolo(como ssl3 para tls1), Redirecionar servidores, e serviços. Pode criar regras, para bloquear usuários na rede, bloquear serviços, de acesso por determinados ips, entre outros muitos serviços.
Modo de usar
A forma mais comum de se usar o comando é:
iptables [-t table] <opção> chain rule-specification
Entre as opções você pode usar:
- -P = Define uma regra padrão;
- -A = Adiciona uma nova regra as existentes. Este tem prioridade sobre a -P;
- -D = Apaga uma regra;
- -L = Lista as regras existentes;
- -S = Lista as regras existentes, da forma como foi salvo pelo iptables;
- -E = Renomeia uma cadeia(chain)
- -F = Limpa todas as regras;
- -I = Insere uma nova regra;
- -h = Exibe a ajuda;
- -R = Substitui uma regra;
- -C = Faz a checagem das regras existentes;
- -Z = Zera uma regra específica;
- -N = Cria uma nova regra com um nome;
- -X = Exclui uma regra específica pelo seu nome.
Cada um tem o seu uso específico, e uma forma de usar. Para consultar todas basta utilizar:
man iptables
Comandos comuns do Iptables
Deletar regra
iptables -F
Bloquear um IP
iptables -A INPUT -s "192.168.254.10" -j DROP
Se desejar bloquear para uma interface específica, basta passar o parâmetro -i , fincando assim:
iptables -A INPUT -i eth0 -s "192.168.254.10" -j DROP
Abrir porta para ips específicos
Neste exemplo usei a porta do ssh como exemplo, mas poderia ser usada qualquer uma
iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
Balanceamento
Balanceando a porta 443 entre 3 diferentes ips
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443
Habilitar Acesso ao mysql pela rede local
iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
Bloqueando ataques DDOS
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
Redirecionando porta
iptables -t nat -A PREROUTING -p tcp -d 192.168.254.136 --dport 422 -j DNAT --to 192.168.254.136:22
Referências
Bem bacana o post! Esclarece bastante pra quem tá começando à se apronundar um pouco mais na area da computação! Migrei pro linux à pouco tempo e tô começando agora a pegar o jeito com a ajuda de posts como estes! Valew!
Obrigado!