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: 141.085 ]
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
Consegue guardar um segredo?
Segurança em seu Linux (parte 2)
Soluções para Acesso Remoto Seguro com SSH
Usuário especial para desligar servidores Linux
Resenha do livro: Praticando a Segurança da Informação
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