nftables não grava no syslog

nftables não grava no syslog

Executando o Debian 10 em um contêiner LXC:

# apt-get -y install nftables
# nft --version
nftables v0.7 (Scrooge McDuck)
# nft flush ruleset
# nft add table inet filter
# nft add chain inet filter input
# nft add rule inet filter input log
# nft list ruleset
table inet filter { 
    chain input {
        log
    }
}

Então, vou para /var/log/syslog, crio algum tráfego de rede e... não vejo nenhuma mensagem denftáveisde forma alguma.

Também tentei (sem sucesso) definir a regra desta forma:

nft add rule inet filter input log prefix \"FINDME \" counter

Mais testes:

# logger test && tail -1 /var/log/syslog
Aug 18 20:39:53 my-server root: test
# echo "test2" | systemd-cat && tail -1 /var/log/syslog
Aug 18 20:40:52 my-server cat[1907]: test2
# uname -v
 #1 SMP PVE 5.4.34-2 (Thu, 07 May 2020 10:02:02 +0200)

Por que énftáveisnão escrevendo para o meuregistro de sistema?

Como pergunta bônus: haveria alguma maneira de desencadear uma ação quando ocorresse uma partida? Por exemplo, armazene IPs bloqueados em um banco de dados.

Responder1

Bem... Graças à pista do @anx eu descobri que aparentementefiltro de redetem algumas dificuldades para enviar os dados pararsyslog.

Provavelmente tem algo a ver com o fato de o host ser um contêiner LXC sem kernel próprio e ogruposno hipervisor... (Buff, estou entrando em território obscuro)... Bem... Tanto faz.

De qualquer forma, se alguém tiver um problema semelhante, consegui obter algum log enviando os dados paraulogd. Estas são as etapas para fazer um exemplo básico funcionar:

# apt-get -y install nftables ulogd2
# nft flush ruleset
# nft add table inet filter
# nft add chain inet filter input '{ type filter hook input priority 0 ; }'
# nft add rule inet filter input log prefix "FINDME" group 0 accept
# nft list ruleset
table inet filter {
    chain input {
        type filter hook input priority 0; policy accept;
        log prefix "FINDME" group 0 accept
    }
}
# tail -f /var/log/ulog/syslogemu.log

Responder2

Me deparei com um problema muito semelhante: o nftables não registrava quando executado dentro de um namespace de rede. A solução de Julen não funcionou para mim.

Como não estou executando nenhum contêiner, poderia resolver meu problema usando

echo 1 >/proc/sys/net/netfilter/nf_log_all_netns

Mais detalhes: https://blog.raymond.burkholder.net/index.php?/archives/787-nftables-network-namespace-logging.html

informação relacionada