nftables liest Zähler als Nicht-Root-Benutzer

nftables liest Zähler als Nicht-Root-Benutzer

Ich habe mithilfe von nftables einige Firewall-Regeln eingerichtet. Sie enthalten einige Datenzähler für bestimmte Arten von Datenverkehr, die ich überwachen möchte.

Nun möchte ich eine Anwendung haben, die diese Zähler liest, idealerweise mitAbonnieren, ausgeführt als Nicht-Root-Benutzer. Erste Tests mit nftzeigen jedoch, dass ich als Nicht-Root-Benutzer die nftables-Zähler nicht lesen kann.

Als Root:

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

Als Nicht-Root:

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

Gibt es eine Möglichkeit, Nftables-Zähler als Nicht-Root-Benutzer zu lesen? Vielleicht, wenn einigeLinux-Funktionenist eingestellt?

Antwort1

Wenn Sie eine eingeschränktere Konfiguration wünschen, verwenden Sie möglicherweise sudo. Sie können eine Regel festlegen, die nur einen einzigen Befehl zulässt.

craig_mcqueen ALL = NOPASSWD: /usr/sbin/nft Liste Zähler my_table my_counter

Antwort2

Es sieht so aus, als ob die Linux-Funktionalität CAP_NET_ADMINdas Lesen des Zählers ermöglicht.

Starten Sie beispielsweise eine Shell für einen Nicht-Root-Benutzer mit 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"

Von dieser Shell aus /usr/sbin/nft list counter my_table my_counterwird es erfolgreich ausgeführt.

Es sind aber auch andere Dinge möglich, beispielsweise das Ändern von Firewall-Regeln, das Hinzufügen neuer Zähler oder das Löschen vorhandener Zähler.

verwandte Informationen