===== 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.