2016-05-29 6 views

Antwort

1

Die ping ausführbar ist setuid root:

$ ls -l /bin/ping 
-rwsr-xr-x 1 root root 35712 Nov 8 2011 /bin/ping 
3

Auf modernen distros, Ping verwendet eine erweiterte Attributdatei CAP_NET_RAW zu unprivilegierten Benutzern zu gewähren.

Beispiel hier auf meinem Debian-Tests:

[email protected]:~$ ls -l /bin/ping 
-rwxr-xr-x 1 root root 57048 Mar 1 15:49 /bin/ping 
[email protected]:~$ filecap /bin/ping 
file     capabilities 
/bin/ping  net_raw 

... die weise besser als SUID, ist die Sicherheit: nur eine Möglichkeit hier, statt der vollen Root-Satz (37 Fähigkeiten als meines 4.5 Kernel) .

EDIT: ein paar Dinge.

Zuerst: Statt filecap möchten Sie möglicherweise getcap verwenden.

Das letztere kommt mit dem "normalen" lipcap und seinen CLI-Tools, die Sie sicher auf Ihrem System haben werden, unabhängig von der Distribution. Im Gegensatz zu den ehemaligen, die mit libcap-ng kommt.

Zweitens: in Bezug auf Ubuntu.

Tat jetzt, dass ich im Büro bin, mit ein paar Ubuntu LTS VM (14.04 und 16.04) Gäste auf meinem Test Host-Debian, kann ich sehen, dass Canonical das SUID Bit tut verwendet, anstatt einen längeren Dateiattribut Sie scheinen sich auf AppArmor MAC zu verlassen, und ich würde sagen, wir haben hier ein gutes Beispiel dafür, warum dies nicht die beste Idee ist: Die administrative Papierkrambelastung, um es richtig zu machen, ist hoch.

Als Ergebnis, obwohl Canonical tut einige AppArmor Setup für sagen tcpdump, sie nicht für ping (die kostenlos statt SUID = volle Root-Leistung ist), noch zum Beispiel für dumpcap (der Prozess der Pakete Capture läuft für wireshark), was impliziert sudo, die wiederum volle Root-Power ist (noch mindestens mit einem Passwort). Hoffentlich machen Upstream-Entwickler alles richtig: Capability Droping ist sowohl für die iputils wie ping als auch für dumpcap auf der Quellcode-Ebene verfügbar, es liegt also am Integrator (distropaket-Betreuer).