nftables lê contadores como usuário não root

nftables lê contadores como usuário não root

Configurei algumas regras de firewall usando nftables. Eles incluem alguns contadores de dados para alguns tipos de tráfego que estou interessado em monitorar.

Agora, gostaria que um aplicativo lesse esses contadores, de preferência usandolibnftl, executando como um usuário não root. Porém, o teste inicial nftindica que não consigo ler contadores nftables como um usuário não root.

Como raiz:

$ nft list counter my_table my_counter
table ip my_table {
    counter my_counter {
        packets 123 bytes 12345
    }
}

Como não raiz:

$ nft list counter my_table my_counter
Error: No such file or directory
list counter my_table my_counter
             ^^^^^^^^

Existe alguma maneira de ler contadores nftables como um usuário não root? Talvez se algumCapacidades do Linuxestá definido?

Responder1

Se você quiser uma configuração mais limitada. Talvez use sudo. Você pode definir uma regra que permita apenas um único comando.

craig_mcqueen ALL = NOPASSWD: /usr/sbin/nft lista contador minha_tabela meu_contador

Responder2

Parece que o recurso do Linux CAP_NET_ADMINpermite a leitura do contador.

Por exemplo, inicie um shell para um usuário não root, com CAP_NET_ADMIN:

capsh --caps="cap_net_admin+eip cap_setpcap,cap_setuid,cap_setgid+ep" --keep=1 --user=myuser --addamb=cap_net_admin -- -c "sh"

A partir desse shell, /usr/sbin/nft list counter my_table my_counteré executado com sucesso.

Mas também permite fazer outras coisas, como alterar regras de firewall, adicionar novos contadores ou excluir contadores existentes.

informação relacionada