📕
Segurança em servidores Linux
  • 👋Apresentação
  • ⚙️Preparação
  • 📖Introdução
  • 🆔Trabalhando com certificados
  • 🌐Segurança no DNS
  • 📄Segurança de servidores HTTP
  • 🗄️Segurança de servidores FTP
  • 🔒Parâmetros de segurança do Kernel
  • 🐚Segurança do SSH
  • 💽Criptografia de disco
  • 💻Proteção do bootloader
  • 🗃️Packet filtering
  • 🐞Host intrusion detection
Powered by GitBook
On this page
  • Chains
  • Tabelas
  • Regras
  • Comandos básicos
  • Conclusão

Packet filtering

Diversos softwares estão disponíveis para filtragem de pacotes. Soluções nativas, como o iptables, continuam sendo bastante utilizadas em ambientes domésticos e corporativos. O iptables funciona baseado no endereço/porta de origem/destino do pacote. Também pode ser utilizado para modificar e monitorar o tráfego da rede, fazer NAT, redirecionamento de pacotes, entre outras funções.

Existem três componentes principais no iptables: chains, tabelas e regras.

Chains

Sequências de regras que determinam o que acontece com um pacote. Existem cinco chains predefinidas no iptables:

  • INPUT: controla os pacotes destinados ao próprio sistema.

  • OUTPUT: controla os pacotes gerados pelo próprio sistema.

  • FORWARD: controla os pacotes que passam pelo sistema, roteados de uma interface de rede para outra.

  • PREROUTING: controla os pacotes antes que eles sejam roteados.

  • POSTROUTING: controla os pacotes após terem sido roteados.

Tabelas

Estruturas que organizam as regras do iptables. Existem cinco tabelas principais:

  • filter: tabela padrão, utilizada para filtragem básica de pacotes. Ela controla o tráfego com base em regras definidas nas chains INPUT, OUTPUT e FORWARD.

  • nat: utilizada para alterar os endereços de origem ou destino dos pacotes.

  • mangle: utilizada para realizar alterações especiais nos cabeçalhos dos pacotes (e.g., modificar o TTL).

  • raw: utilizada para configurações especiais antes que as decisões de filtragem sejam aplicadas.

  • security: utilizada para recursos de controle de acesso.

Regras

São as instruções que especificam as ações a serem tomadas com base nas características dos pacotes. As regras definem o comportamento do firewall e podem permitir, bloquear, redirecionar ou modificar pacotes com base em diferentes critérios. Critérios comuns:

  • Endereço IP de origem ou destino.

  • Porta de origem ou destino.

  • Protocolo.

  • Interface de rede.

Comandos básicos

A seguir estão exemplos de configurações típicas que podem ser adaptados de acordo com a sua necessidade.

Listagem de regras

iptables -L -n -v # lista com detalhes as regras da tabela filter.

Remoção de regras

iptables -F # apaga todas as regras.
iptables -F INPUT # apaga todas as regras da chain INPUT.
iptables -L --line-numbers # lista as regras de forma enumerada.
iptables -D INPUT 7 # deleta a regra da linha 7.

Alteração das políticas das chains

iptables -P INPUT DROP # descarta todos os pacotes destinados ao host.
iptables -P FORWARD DROP # descarta todos os pacotes de encaminhamento.
iptables -P OUTPUT DROP # descarta todos os pacotes de saída.

Liberando tráfego SSH

# Liberação da porta 22.
iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Permitindo tráfego de uma rede específica

# Liberação de tráfego destinado às portas 80 e 443 de pacotes da rede 10.10.10.0/24.
iptables -A INPUT -p tcp -s 10.10.10.0/24 -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT

Habilitando tráfego de saída

# Liberação de tráfego DNS.
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT

# Liberação de tráfego HTTPS.
iptables -A OUTPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

Port forwarding

# Tráfego destinado à porta 9090 será destinado à porta 22.
iptables -t nat -A PREROUTING -p tcp -d 10.10.10.216 --dport 9090 -j DNAT --to 10.10.10.216:22
iptables -A INPUT -p tcp --sport 9090 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 9090 -m state --state NEW,ESTABLISHED -j ACCEPT

IP routing

# Habilita o encaminhamento de pacotes.
echo 1 > /proc/sys/net/ipv4/ip_forward

# Encaminha pacotes entre as redes 192.168.211.0/24 e 10.10.10.0/24.
iptables -I FORWARD -s 192.168.211.0/24 -d 10.10.10.0/24 -j ACCEPT
iptables -I FORWARD -s 10.10.10.0/24 -d 192.168.211.0/24 -j ACCEPT

Salvando e restaurando regras

iptables-save > /etc/sysconfig/iptables
iptables-restore < /etc/sysconfig/iptables

Conclusão

O iptables é uma poderosa ferramenta de firewall que permite configurar regras precisas para controlar o fluxo de pacotes em uma rede, garantindo a segurança e o desempenho adequado do sistema. Neste capítulo, abordamos detalhadamente a utilização dele para a filtragem de pacotes em sistemas Linux. Você pode adaptar os comandos apresentados de acordo com as suas necessidades.

PreviousProteção do bootloaderNextHost intrusion detection

Last updated 1 year ago

🗃️