He configurado algunas reglas de firewall usando nftables. Incluyen algunos contadores de datos para algunos tipos de tráfico que me interesa monitorear.
Ahora, me gustaría poder tener una aplicación que lea esos contadores, idealmente usandolibnftnl, ejecutándose como usuario no root. Pero las pruebas iniciales nft
indican que no puedo leer los contadores de nftables como usuario no root.
Como raíz:
$ nft list counter my_table my_counter
table ip my_table {
counter my_counter {
packets 123 bytes 12345
}
}
Como no root:
$ nft list counter my_table my_counter
Error: No such file or directory
list counter my_table my_counter
^^^^^^^^
¿Existe alguna forma de leer los contadores de nftables como usuario no root? Quizás si algunosCapacidades de Linux¿Está establecido?
Respuesta1
Si desea una configuración más limitada. Quizás use sudo. Puede establecer una regla que solo permita un único comando.
craig_mcqueen TODOS = NOPASSWD: /usr/sbin/nft lista contador mi_tabla mi_contador
Respuesta2
Parece que la capacidad de Linux CAP_NET_ADMIN
permite leer el contador.
Por ejemplo, inicie un shell para un usuario que no sea root, con 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"
Desde ese shell, /usr/sbin/nft list counter my_table my_counter
se ejecuta correctamente.
Pero también permite hacer otras cosas, como cambiar las reglas del firewall, agregar nuevos contadores o eliminar contadores existentes.