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 nft
zeigen 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_ADMIN
das 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_counter
wird 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.