Nesse caso, as informações serão salvas em /var/log/iptablese também em /var/log/messages. Eu quero apenas uma cópia desses dados emiptables.log
Abid
1
Eu adicionei minha própria resposta para cobrir também a pergunta de Abid, além da configuração de logrotate ausente. o "stop" ou "& ~" impede que as mensagens continuem nas regras do rsyslog para acessar também / var / log / messages.
Peter
6
Isso pressupõe que o seu firewall já cria logs, como qualquer firewall sensato. Para alguns exemplos, ele requer uma mensagem identificável, como "NETFILTER" no exemplo de slm.
crie um arquivo em rsyslog.d
vim /etc/rsyslog.d/10-firewall.conf
Isso funciona no CentOS 7. Não sei como verificar se ele veio do firewall, além de procurar IN e OUT ... O CentOS é estranho. Não use isso, a menos que a próxima versão não funcione.
# into separate file and stop their further processing
if ($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
& ~
}
Isso funciona no CentOS 7 e verifica também o conteúdo da mensagem (substitua "Shorewall" pelo que você tiver na mensagem da regra -j LOG):
# into separate file and stop their further processing
if ($msg contains 'Shorewall') and \
($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
& ~
}
Isso funciona em outros (Ubuntu, Debian, openSUSE). E esta é a melhor maneira de fazê-lo. Nenhuma pesquisa por seqüências de caracteres na mensagem:
# into separate file and stop their further processing
if ($syslogfacility-text == 'kern') and \\
($msg contains 'IN=' and $msg contains 'OUT=') \\
then -/var/log/firewall
& ~
E aqui está o que uma máquina openSUSE padrão possui (que eu acho que toda distribuição deve ter e está faltando) (a diferença parece ser apenas "parar" em vez de "& ~"; nem todos os sistemas suportam as duas sintaxes):
if ($syslogfacility-text == 'kern') and \
($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
stop
}
E para todas as opções acima, não esqueça também o arquivo logrotate.d:
vim /etc/logrotate.d/firewall
contendo:
/var/log/firewall {
rotate 7
size 500k
postrotate
# before using this, run the command yourself to make sure
# it is right... the daemon name may vary
/usr/bin/killall -HUP rsyslogd
endscript
}
Respostas:
syslog
Dê uma olhada na página de manual para
iptables
. Ele mostra um destino chamadoLOG
que pode fazer o que você deseja.Exemplo
Defina o nível de log para
LOG
4.Configure
syslog.conf
para gravar essas mensagens em um arquivo separado.Reinicie o syslogd.
Debian / Ubuntu
Fedora / CentOS / RHEL
NOTA: Esse método de registro é chamado de prioridades fixas. Eles são números ou nomes (1,2,3,4, ..) ou (DEBUG, WARN, INFO etc.).
rsyslog
Se por acaso você estiver usando
rsyslog
, poderá criar um filtro com base em propriedades da seguinte forma:Em seguida, adicione o switch thils às regras do iptables que você deseja registrar:
Como alternativa, você também pode registrar as mensagens usando este tipo de filtro de propriedade:
NOTA: Este segundo método não requer nenhuma alteração
iptables
.Referências
fonte
/var/log/iptables
e também em/var/log/messages
. Eu quero apenas uma cópia desses dados emiptables.log
Isso pressupõe que o seu firewall já cria logs, como qualquer firewall sensato. Para alguns exemplos, ele requer uma mensagem identificável, como "NETFILTER" no exemplo de slm.
crie um arquivo em rsyslog.d
Isso funciona no CentOS 7. Não sei como verificar se ele veio do firewall, além de procurar IN e OUT ... O CentOS é estranho. Não use isso, a menos que a próxima versão não funcione.
Isso funciona no CentOS 7 e verifica também o conteúdo da mensagem (substitua "Shorewall" pelo que você tiver na mensagem da regra -j LOG):
Isso funciona em outros (Ubuntu, Debian, openSUSE). E esta é a melhor maneira de fazê-lo. Nenhuma pesquisa por seqüências de caracteres na mensagem:
E aqui está o que uma máquina openSUSE padrão possui (que eu acho que toda distribuição deve ter e está faltando) (a diferença parece ser apenas "parar" em vez de "& ~"; nem todos os sistemas suportam as duas sintaxes):
E para todas as opções acima, não esqueça também o arquivo logrotate.d:
contendo:
fonte