[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Iptables para de gerar log ao limpar syslog



Allison Vollmann escribió:
Miguel Da Silva - Centro de Matemática escreveu:
Allison Vollmann escribió:
O ideal seria você criar uma nova entrada no syslog para um arquivo separado, e registrar toda a ativadade através dele. O logrotate faz o restante que é *rotacionar* o log, da para configurar para ele rotacionar os logs diariamente ele vai criar os arquivos .0 .1 .2 e também tem a opção de compactá-los com o gzip.

A[]'s

Daniel escreveu:
Boa tarde pessoal tudo bem???

Eu gero log pelo iptables de tudo que entra, sai ou sofre NAT da minha rede no meu servidor NAT/FIREWALL. Resolvi então criar um script para separar esse log todo dia meia noite, limpar o syslog e fazer um tar.gz do log gerado. O script funciona na boa, o problema é que quando ele é executado, o iptables para de gerar log. Os demais programas (dhcp, squid, etc) continuam gerando o log normalmente no mesmo arquivo (syslog), mas o iptables para. Tento reiniciar o syslogd, o iptables, rodo as regras novamente, mas nada. Só quando reinicio o servidor, tudo volta ao normal.

Aguém sabe o que pode ser??

Segue meu script de limpeza e separação do log abaixo para analise.

obrigado e abraço a todos


#!/bin/bash

# DEFININDO VARIAVEIS
DATA=`date +%d-%m-%Y-%H.%M`
DELETADOS_NAT=`find /var/log/nat -ctime +30`
DELETADOS_SEGURANCA=`find /var/log/seguranca -ctime +30`
SEGURANCA_DIR="/var/log/seguranca"
NAT_DIR="/var/log/nat"

echo -n " "
echo "GERANDO LOG DE SAIDA DIARIO"


touch $SEGURANCA_DIR/log.saida.$DATA
grep "SAIDA-eth0-BLOQUEADA" /var/log/syslog > $SEGURANCA_DIR/log.saida.$DATA
cd $SEGURANCA_DIR
tar zcf log.saida.$DATA.tar.gz log.saida.$DATA
rm -f $SEGURANCA_DIR/log.saida.$DATA
grep -v "SAIDA-eth0-BLOQUEADA" /var/log/syslog > /var/log/syslog.tmp
mv -f /var/log/syslog.tmp /var/log/syslog


echo "...LOG DE SAIDA DIARIO GERADO"

echo -n " "
echo "GERANDO LOG DE ENTRADA DIARIO"


touch $SEGURANCA_DIR/log.entrada.$DATA
grep "ENTRADA-eth0-BLOQUEADA" /var/log/syslog > $SEGURANCA_DIR/log.entrada.$DATA
cd $SEGURANCA_DIR
tar zcf log.entrada.$DATA.tar.gz log.entrada.$DATA
rm -f $SEGURANCA_DIR/log.entrada.$DATA
grep -v "ENTRADA-eth0-BLOQUEADA" /var/log/syslog > /var/log/syslog.tmp
mv -f /var/log/syslog.tmp /var/log/syslog
echo "...LOG DE ENTRADA DIARIO GERADO"


echo -n " "
echo "GERANDO LOG DE NAT DIARIO"


touch $NAT_DIR/log.nat.$DATA
grep "...NAT..." /var/log/syslog > $NAT_DIR/log.nat.$DATA
cd $NAT_DIR
tar zcf log.nat.$DATA.tar.gz log.nat.$DATA
rm -f $NAT_DIR/log.nat.$DATA
grep -v "...NAT..." /var/log/syslog > /var/log/syslog.tmp
mv -f /var/log/syslog.tmp /var/log/syslog

# REMOVENDO ARQUIVOS MAIS ANTIGOS QUE 30 DIAS
rm -rf $DELETADOS_SEGURANCA
rm -rf $DELETADOS_NAT








O que acontece é que para que isso funcione, o serviço que será logado deve usar alguma "facility" do syslog. Ou dito de outra maneira, o serviço em questão deve estar preparado para logar através do syslog.

Por outro lado, um problema que vejo no script mencionado é o fato de que o arquivo /var/log/syslog está sendo re-escrito quando o script é executado. Então, isso parece fazer com que o iptables perca o "fio da meada" e não saiba mais aonde escrever os logs. Outro detalhe, usando um ">" no script para redirecionar o fluxo trunca o arquivo /var/log/syslog que já está aberto.

O que faço no router do trabalho é usar o ex/vim para apagar as linhas que correspondem ao iptables:

for j in 1 2 3 4 5 6
do
  (echo "g/${string[j]}/d"; echo 'wq') | ex -s ${archivos[2]}
done

Na linha acima, string[j] e archivo[2] são vetores e correspondem aos arquivos que processo e os padrão que são usados para encontrar as linhas que deverão ser apagadas.

Até.
Não precisa usar mais do que o sistema já oferece, pode até usar as entradas já existentes, ou até pode criar uma nova entrada no syslogd e guardar somente os logs do iptables lá, ao invés de utilizar o direcionamento de saida, você pode usar o "logger" que irá encaminhar para o syslogd, o resto você deixa com ele e o logrotate.

para mais detalhes:
# man logger

A[]'s

Responda para a lista.

Pode servir para mim e para outros também.

Até.
--
Miguel Da Silva
Administrador Junior de Sistemas Unix
Centro de Matemática - http://www.cmat.edu.uy
Facultad de Ciencias - http://www.fcien.edu.uy
Universidad de la República - http://www.rau.edu.uy


Reply to: