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: 139.979 ]

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

HoneyPots em Linux

Bypass de firewall com tunelamento por DNS

Iptables protege contra SYN FLOOD?

Attik Firewall

Notificação Fail2ban pelo Telegram

  
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