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/messages s
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
Bacana... Parabéns pelo artigo.
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
Mensagem
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
Bacana esse software...
Parabéns pelo artigo.
Mensagem
Bacana esse software...
Parabéns pelo artigo.
Olá artigo muito bom esse.
É necessário ter um ambiente gráfico para conseguir acessar esse log?
Mensagem
Olá artigo muito bom esse.
É necessário ter um ambiente gráfico para conseguir acessar esse log?
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 ?
Mensagem
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 ?
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
Mensagem
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
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.
Mensagem
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.
Pessoal, vocês sabem como faço para mostrar no relatório gerado o NOME ao invés do IP dos sites acessados?
Obrigado.
Mensagem
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
Enviar