sexta-feira, novembro 24, 2017
Breaking News
Home » Linux » iptables » Logs no Iptables – Parte I

Logs no Iptables – Parte I

Hoje abordaremos um assunto que certamente interessará quem já mexe ou quem está começando no iptables: os LOGS. Com logs somos capazes de monitorar a nossa rede, aumentar o desempenho, localizar rapidamente problemas, além de tornar o firewall muito mais confiável. Neste artigo, abordaremos como gerar e interpretar os Logs do iptables. Boa leitura!

Bom, para começarmos, indico o local dos logs do iptables que por padrão estarão em /var/log/messages ou em /var/log/kern.log, dependendo da sua distro.

Usando o alvo (target) LOG

Assim como temos o DROP, o ACCEPT e outros, temos também o LOG, ele será o responsável por quando a condição especificada acontecer, ele gravar o ocorrido no arquivo de log

Ex. de uso

iptables -A INPUT -j LOG
iptables -A OUTPUT -j LOG
iptables  -A FORWARD -j LOG

Com o exemplo acima, todas as entradas input, output e forward serão gravadas no log.

Que tal mais um exemplo?

Vamos supor que você deseje gravar as tentativas de entrada ssh. Então sabemos que a porta é 22, protocolo tcp, a regra em questão aborda o INPUT (entrada) e as tentativas de conexão são abordadas pelo flag syn. Logo, teremos o comando:

iptables -A INPUT -p tcp –dport 22 –syn -j LOG

A regra acima não bloqueia nem libera a conexão, apenas grava em log. Supondo que queiramos derruba-la (DROP):

iptables -A INPUT -p tcp –dport 22 –syn -j DROP

Caso a necessidade seja liberar a conexão, basta substituir o DROP por ACCEPT, mas lembre-se: O log sempre vem antes da ação a ser tomada.

Redirecionando o log iptables

o iptables usa a facilidade de nivel kern.warn. Podemos encaminhar os logs do iptables para um arquivo específico, como o iptables.log, bastando adicionar a seguinte linha ao arquivo syslog.conf (rsyslog.conf nos derivados do Debian, como Ubuntu, por exemplo).

kern.warn -/var/log/iptables.log

Após executar o comando acima, reinicie os serviços syslogd (rsyslogd em Debian likes) e klogd (não tem em Debian likes)

cd /etc/init.d
./syslogd restart
./klogd restart

Feito isso, os logs do iptables já terão sido encaminhados para o arquivo iptables.log em /var/log

Entendendo a entrada de Log gerada pelo iptables

Aug 10 00:07:54 ubuntuServer kernel: [ 2942.760653] IN=eth0 OUT= MAC=08:00:27:ce:a3:4c:00:19:66:be:75:a9:08:00 SRC=192.168.1.100 DST=192.168.1.103 LEN=92 TOS=0x00 PREC=0x00 TTL=128 ID=15497 DF PROTO=TCP SPT=50253 DPT=22 WINDOW=254

Veremos o que cada item significa:

Aug 10 00:07:54 -> Mês, dia, hora, minuto e segundo em que o log foi gravado

ubuntuServer -> Nome do Servidor com Firewall

Kernel -> Servidor que gravou o log. Em algumas versões do Linux, esta opção vem vazia, pois o netfilter faz parte do Kerner. No Ubuntu e outros, aparece um número do daemon que gerou o evento.

IN -> Internface de rede de entrada

OUT -> Interface de rede de saída

MAC -> endereço MAC da interface citada na regra; em nosso exemplo, a eth0

SRC -> IP de origem do pacote

DST -> IP de destino do pacote

LEN -> tamanho do pacote em bytes

TOS-> Prioridade do pacote (referente a tabela mangle e QOS)

PREC -> Precedencia de prioridade do cabeçalho TOS

TTL -> Tempo de vida do pacote. No nosso exemplo faltariam 128 saltos até ser descartado pelo roteador

ID -> Número único que identifica o pacote

PROTO -> Protocolo

SPT -> Porta de origem da requisição

DPT -> Porta de destino da requisição

WINDOW -> Através deste campo o software TCP indica quantos dados ele tem capacidade de receber em seu buffer. Tamanho da janela em bytes

Para iniciarmos, a parte mais importante do LOG é as interfaces de entrada e saída (IN/ OUT), endereços ip de entrada e saída (SPT/ DPT) e tipo de protocolo (PROTO)

 

Bom Senhoras e Senhores, encerro por aqui a parte 1. Breve a parte 2 com descrição de Logs. Abraço a todos.

 

Sobre Diego Duarte

Diego Duarte Atua como coordenador de NOC, toca um violãozinho nas horas vagas e tenta eternamente entender o que o fez escolher TI

Veja também!

Iptables – Tabela Mangle

Tabela Mangle nada mais é que a tabela usada para marcar pacotes. Em cada pacote de dados há um cabeçalho, e neste cabeçalho há campos que podem ser marcados. Com tais marcações podemos criar regras de modo que se obtém prioridade de serviços, tempo de vida de pacotes, entre outros.

6 comentários

  1. Celio

    Muito interessante!
    Eu tenho um sistema que se conecta à um servidor na internet. O problema é que o ip deste sistema sempre é alterado e nossa empresa fica sem emitir as notas fiscais. Tem como eu saber através do logs do iptables onde a conexão está falhando? Por exemplo, descobrir em que endereço e porta o meu sistema esta tentando se conectar para estabelecer a conexao? As vezes eu resolvo com o tcpdump, mas tem casos que não consigo.

  2. Paulo

    Vlw camarada estava quebrando a cabeça aqui pra gerar os log :)

  3. Leonardo Macedo

    Muito bom.

Este artigo lhe foi útil? comente e ajude outros acrescentando seu ponto de vista!