Analizando os logs do IPTables

O IPTables, dentro de suas inúmeras funcionalidades, tem a função de gerar logs do que está acontecendo. Neste artigo vou explicar como analisar essas informações através de um software via web.

[ Hits: 140.837 ]

Por: Luiz Antonio Oliveira em 22/02/2007


Arquivo básico de IPTables



Primeiramente vou mostrar um arquivo básico de iptables:

# cat /etc/rc.d/rc.firewall

#!/bin/sh
# Iptables Firewall by Rogerio Gonçalves - roge@roge.org
#


extnet=eth0
#intnet=eth1
IPT="/usr/sbin/iptables"
tcp="22,25,110,6969"
udp="53"
ipnet=`ifconfig eth0 | grep inet | cut -d : -f 2 | cut -d -f 1`
#iplan=`ifconfig eth1 | grep inet | cut -d : -f 2 | cut -d -f 1`
LOG_FLOOD="1/s"
#ftp module
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp

# clear
$IPT -F INPUT
$IPT -F FORWARD
$IPT -F OUTPUT
$IPT -t nat -F PREROUTING
$IPT -t nat -F POSTROUTING

# drop
$IPT -P INPUT DROP
$IPT -P FORWARD DROP

# input
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPT -A INPUT -p tcp -d $ipnet --tcp-flags SYN,FIN SYN,FIN -j DROP

$IPT -A INPUT -i $extnet -m state --state NEW -p tcp -m multiport --dport $tcp -j ACCEPT

$IPT -A INPUT -i $extnet -m state --state NEW -p udp -m multiport --dport $udp -j ACCEPT

#$IPT -A INPUT -i $intnet -m state --state NEW -j ACCEPT

$IPT -A INPUT -i lo -j ACCEPT

#VPN
#$IPT -A INPUT -p udp --dport 5000 -j ACCEPT
#$IPT -A INPUT -p tcp --dport 5000 -j ACCEPT

# forward

# forward
#$IPT -A FORWARD -i $intnet -j ACCEPT
$IPT -A FORWARD -i $extnet -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -P OUTPUT ACCEPT

# nat
#$IPT -t nat -A POSTROUTING -s 192.168.0.0/24 -d ! 192.168.1.0/24 -o $extnet -j MASQUERADE

# protect
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
$IPT -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT # syn
$IPT -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT # scans
$IPT -A FORWARD -p icmp --icmp-type echo-reply -m limit --limit 1/s -j RETURN # ping of dead
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do # spoof ip
   echo 1 >$i
done
echo "2048" > /proc/sys/net/ipv4/ip_conntrack_max

# log
#$IPT -A INPUT -p tcp --dport 21 -j LOG --log-prefix "Serviço: FTP"
#$IPT -A INPUT -p tcp --dport 22 -j LOG --log-prefix "Serviço: SSH"
#$IPT -A INPUT -p tcp --dport 110 -j LOG --log-prefix "Serviço: POP "
#$IPT -A INPUT -p tcp --dport 80 -j LOG --log-prefix "Serviço: HTTP "
#$IPT -A INPUT -p tcp --dport 25 -j LOG --log-prefix "Serviço: SMTP "
#$IPT -A INPUT -p tcp --dport 143 -j LOG --log-prefix "Serviço: IMAP"

$IPT -A INPUT -p icmp -m limit --limit $LOG_FLOOD -j LOG --log-level info --log-prefix "ICMP Dropped "
$IPT -A INPUT -p tcp -m limit --limit $LOG_FLOOD -j LOG --log-level info --log-prefix "TCP Dropped "
$IPT -A INPUT -p udp -m limit --limit $LOG_FLOOD -j LOG --log-level info --log-prefix "UDP Dropped "
$IPT -A INPUT -f -m limit --limit $LOG_FLOOD -j LOG --log-level warning --log-prefix "FRAGMENT Dropped "
$IPT -A INPUT -m limit --limit 1/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "
$IPT -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "

#msn lan
#$IPT -I FORWARD -s 192.168.0.111/24 -p tcp --dport 1863 -j REJECT
#$IPT -I FORWARD -s 192.168.0.111/24 -d loginnet.passport.com -j REJECT
#$IPT -I FORWARD -s 192.168.0.111/24 -d webmessenger.msn.com -j REJECT
# dnat
#$IPT -t nat -A PREROUTING -i $extnet -p tcp --dport 25 -j DNAT --to 192.168.23.21
#$IPT -t nat -A PREROUTING -i $extnet -p tcp --dport 110 -j DNAT --to 192.168.23.223
#$IPT -t nat -A PREROUTING -i $intnet -p tcp --dport 80 -j REDIRECT --to-port 3128
#$IPT -t nat -A PREROUTING -i $extnet -p tcp --dport 3389 -j DNAT --to 192.168.23.134
#$IPT -t nat -I PREROUTING -i $extnet -p tcp --dport 1999 -j DNAT --to 192.168.23.56

echo "Inicializando firewall.."

Essas linhas mandarão as mensagens do iptables para o arquivo /var/log/messages:

$IPT -A INPUT -p icmp -m limit --limit $LOG_FLOOD -j LOG --log-level info --log-prefix "ICMP Dropped "
$IPT -A INPUT -p tcp -m limit --limit $LOG_FLOOD -j LOG --log-level info --log-prefix "TCP Dropped "
$IPT -A INPUT -p udp -m limit --limit $LOG_FLOOD -j LOG --log-level info --log-prefix "UDP Dropped "
$IPT -A INPUT -f -m limit --limit $LOG_FLOOD -j LOG --log-level warning --log-prefix "FRAGMENT Dropped "
$IPT -A INPUT -m limit --limit 1/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "
$IPT -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "

Se você executar o comando:

# tail -f /var/log/messagess

Aparecera algo assim no seu console:

Oct 5 04:08:11 qmail kernel: UDP Dropped IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:e0:06:f8:9e:9f:08:00 SRC=10.1.27.91 DST=10.1.27.255
LEN=229 TOS=0x00 PREC=0x00 TTL=128 ID=28651 PROTO=UDP SPT=138 DPT=138 LEN=209
Oct 5 04:09:47 qmail kernel: UDP Dropped IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:e0:06:f8:9e:9f:08:00 SRC=10.1.27.91 DST=10.1.27.255
LEN=78 TOS=0x00 PREC=0x00 TTL=128 ID=28656 PROTO=UDP SPT=137 DPT=137 LEN=58
Oct 5 04:09:47 qmail kernel: UDP Dropped IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:e0:06:f8:9e:9f:08:00 SRC=10.1.27.91 DST=10.1.27.255
LEN=78 TOS=0x00 PREC=0x00 TTL=128 ID=28657 PROTO=UDP SPT=137 DPT=137 LEN=58
Oct 5 04:09:48 qmail kernel: UDP Dropped IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:e0:06:f8:9e:9f:08:00 SRC=10.1.27.91 DST=10.1.27.255
LEN=78 TOS=0x00 PREC=0x00 TTL=128 ID=28659 PROTO=UDP SPT=137 DPT=137 LEN=58

Aí você se pergunta... e como eu entendo esse monte de letras e números?

    Próxima página

Páginas do artigo
   1. Arquivo básico de IPTables
   2. Instalando o analisador
   3. Configurando e executando
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Wireshark - Artigo

Nessus Portscanner

Configurando um servidor de logs simples

Criptografia assimétrica com o RSA

Personalizando o HLBR - IPS invisível

  
Comentários
[1] Comentário enviado por fmendes em 22/02/2007 - 14:28h

Bacana... Parabéns pelo artigo.

[2] Comentário enviado por those em 22/02/2007 - 16:23h

rlx, muito bom

[3] Comentário enviado por Flavio A. Reis em 31/10/2007 - 13:04h

Parabéns, muito útil.
Estou começando com o Firewall na empresa agora, já ocorreu algumas rejeições por parte de usuários.
o VOL tem ajudado muito.
Abraços

Alex Reis

[4] Comentário enviado por paulopmt1 em 29/12/2008 - 23:23h

Bacana esse software...

Parabéns pelo artigo.

[5] Comentário enviado por thiagosc em 08/07/2009 - 18:35h

Olá artigo muito bom esse.

É necessário ter um ambiente gráfico para conseguir acessar esse log?

[6] Comentário enviado por mariocarvalhope em 14/06/2010 - 12:00h

Olá,

Quando estou executando o fwanalog.sh está apresentando o seguinte erro:

fwanalog: No input files in the '/var/log/fw/' directory
named /var/log/fw/messages* and under days old.


O que pode está acontecendo ?

[7] Comentário enviado por renantoledo em 19/05/2011 - 17:13h

como faço aquele configuração do apache sitada ali em cima, sou novo no mundo linux e nao compreendi bem

se alguem puder me ajudar agradeço

[8] Comentário enviado por jeferson em 31/10/2011 - 23:05h

Boa noite Renatoledo.


execute estes procedimentos:

- entre com o usuario root;
- vá até o diretorio de instalação do apache, se a distro for Ubuntu, é no /etc/apache2/mods-available;
- edite o arquivo dir.conf
- no final da linha DirectoryIndex, acrescente alldates.html

Caso você não encontre este arquivo, execute o comando abaixo, ele procura uma string nos subdiretórios, a partir do diretório que você está posicionado, "/etc/apache2", depois é só editar o arquivo e acrescentar o "alldates.html";
- execute este comando: grep -iR "DirectoryIndex" *, este comando retornará o arquivo em que a string procurada se encontra.

[9] Comentário enviado por jeferson em 31/10/2011 - 23:07h

Pessoal, vocês sabem como faço para mostrar no relatório gerado o NOME ao invés do IP dos sites acessados?

Obrigado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts