===== Exemplos do comando iptables ===== ==== Nível Básico ==== * **Listar todas as regras atuais de firewall:** - sudo iptables -L - Lista as regras de firewall atuais em todas as tabelas e cadeias (`INPUT`, `OUTPUT`, `FORWARD`). * **Permitir todas as conexões de saída (OUT):** - sudo iptables -P OUTPUT ACCEPT - Define a política padrão para o tráfego de saída como `ACCEPT` (permitir todas as conexões de saída). * **Bloquear todo o tráfego de entrada (IN):** - sudo iptables -P INPUT DROP - Define a política padrão para o tráfego de entrada como `DROP`, bloqueando todas as conexões de entrada. * **Permitir tráfego de entrada SSH (porta 22):** - sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT - Permite conexões de entrada no protocolo TCP pela porta `22` (usada para SSH). * **Bloquear um endereço IP específico:** - sudo iptables -A INPUT -s 192.168.1.100 -j DROP - Bloqueia todo o tráfego de entrada do IP `192.168.1.100`. * **Remover uma regra específica:** - sudo iptables -D INPUT -s 192.168.1.100 -j DROP - Remove a regra que bloqueia o IP `192.168.1.100`. * **Salvar as regras de firewall atuais:** - sudo iptables-save > /etc/iptables/rules.v4 - Salva as regras de firewall atuais no arquivo `/etc/iptables/rules.v4` (pode variar conforme a distribuição). ==== Nível Intermediário ==== * **Permitir o tráfego HTTP (porta 80) e HTTPS (porta 443):** - sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT - Permite conexões de entrada nas portas `80` (HTTP) e `443` (HTTPS) para servidores web. * **Permitir o tráfego de entrada da rede local (LAN):** - sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT - Permite todo o tráfego de entrada da rede local `192.168.1.0/24`. * **Logar pacotes antes de bloqueá-los:** - sudo iptables -A INPUT -s 192.168.1.100 -j LOG --log-prefix "IP Bloqueado: "
sudo iptables -A INPUT -s 192.168.1.100 -j DROP - Registra no log os pacotes de entrada do IP `192.168.1.100` antes de bloqueá-los. * **Bloquear ping (ICMP echo-request):** - sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP - Bloqueia pacotes `ping` (ICMP `echo-request`) para que a máquina não responda a `ping`. * **Limitar o número de conexões SSH (máximo de 3 tentativas por minuto):** - sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --set
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 3 -j DROP - Limita as tentativas de conexão SSH a 3 por minuto por IP, para evitar ataques de força bruta. * **Redirecionar portas localmente (ex.: 8080 para 80):** - sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80 - Redireciona o tráfego da porta `8080` para a porta `80` no servidor local. ==== Nível Avançado ==== * **Bloquear tráfego de um país específico usando GeoIP:** - sudo iptables -A INPUT -m geoip --src-cc CN -j DROP - Bloqueia todo o tráfego de entrada originado da China (código de país `CN`), usando o módulo `geoip`. * **Limitar o tráfego de entrada por taxa (Rate Limiting):** - sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT - Limita o tráfego de entrada na porta `80` para `25` pacotes por minuto, com um burst máximo de `100`. * **Permitir o tráfego de retorno e conexões estabelecidas:** - sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - Permite o tráfego de pacotes de retorno ou conexões já estabelecidas. * **Bloquear um intervalo de endereços IP:** - sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP - Bloqueia o tráfego de entrada para o intervalo de IPs `192.168.1.100` a `192.168.1.200`. * **Usar um conjunto de regras baseado no horário:** - sudo iptables -A INPUT -p tcp --dport 22 -m time --timestart 09:00 --timestop 17:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT - Permite o tráfego SSH (porta `22`) apenas durante o horário comercial (09:00 às 17:00) de segunda a sexta. * **Criar um contador de pacotes para monitorar tráfego:** - sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT -m comment --comment "Contador HTTP" - Adiciona uma regra de contagem para monitorar as novas conexões HTTP e registrar informações sobre o tráfego. ==== Nível Especializado ==== * **Criar regras para NAT (mascaramento de IPs):** - sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE - Configura NAT (mascaramento de IPs) na interface `eth0`, para compartilhar a conexão com a internet. * **Criação de um port knocking básico:** - **Primeira porta:** sudo iptables -A INPUT -p tcp --dport 7000 -m recent --name knock1 --set -j DROP - **Segunda porta (habilita a regra após a primeira tentativa):** sudo iptables -A INPUT -p tcp --dport 8000 -m recent --name knock1 --rcheck -m recent --name knock2 --set -j DROP - **Terceira porta (habilita acesso SSH após sequência correta):** sudo iptables -A INPUT -p tcp --dport 9000 -m recent --name knock2 --rcheck -j ACCEPT - Implementa port knocking simples: acesso SSH só é permitido após tentativas de conexão nas portas `7000`, `8000`, e `9000` em sequência. * **Configurar iptables como firewall de estado (stateful firewall):** - sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT - Configura o iptables como firewall de estado, permitindo apenas conexões válidas e estabelecidas, e bloqueando pacotes inválidos. * **Bloquear pacotes fragmentados:** - sudo iptables -A INPUT -f -j DROP - Bloqueia pacotes fragmentados, uma técnica comum usada em ataques de rede. * **Bloquear tráfego de IPs com base em listas negras (blacklist):** - sudo iptables -A INPUT -m set --match-set blacklist src -j DROP - Usa um conjunto de IPs (blacklist) e bloqueia o tráfego de qualquer IP listado. * **Criar uma cadeia personalizada e redirecionar pacotes para ela:** - sudo iptables -N MINHACHAINA
sudo iptables -A INPUT -p tcp --dport 1234 -j MINHACHAINA
sudo iptables -A MINHACHAINA -s 192.168.1.100 -j ACCEPT
sudo iptables -A MINHACHAINA -j DROP - Cria uma cadeia personalizada chamada `MINHACHAINA` e redireciona pacotes da porta `1234` para essa cadeia, onde são filtrados por IP. * **Criar regras para mitigação de ataques DDoS (DoS):** - sudo iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT - Limita o número de pacotes SYN recebidos para mitigar ataques de negação de serviço.