FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: rin67630 am 24 Dezember 2016, 04:59:22

Titel: Modul PRESENCE wenn FHEM auf Linux läuft wie wäre es mit nmap?
Beitrag von: rin67630 am 24 Dezember 2016, 04:59:22
Guten Tag Experten hier in dem Forum.
ich lese seit ein paar Tagen die Diskussionen hier um den Modul PRESENCE.
Es gibt mehrere Methoden, die allen einen Haken haben.
Die Ping Methode würde es tun, erfordert allerdings neulich root zu sein.

Eine FRITZ!Box kann alle LAN Teilnehmer auflisten, auch wenn sie nur DHCP client ist.
Wenn die das kann, dann müsste es auch jeden Linux können.

Ich kam dann auf dem Linux Programm nmap.
Wenn nmap installiert ist, bekommt man ohne root zu sein:

$ nmap -sP 192.168.0.107/24
Starting Nmap 6.47 ( http://nmap.org ) at 2016-12-24 03:40 UTC
Nmap scan report for 192.168.0.100
Host is up (0.0097s latency).
Nmap scan report for 192.168.0.101
Host is up (0.016s latency).
Nmap scan report for 192.168.0.102
Host is up (0.0049s latency).
Nmap scan report for 192.168.0.103
Host is up (0.0072s latency).
Nmap scan report for 192.168.0.104
Host is up (0.011s latency).
Nmap scan report for 192.168.0.107
Host is up (0.0031s latency).
Nmap scan report for 192.168.0.254
Host is up (0.0042s latency).
Nmap done: 256 IP addresses (7 hosts up) scanned in 22.93 seconds


Hinweis: im Befehl "nmap -sP 192.168.0.107/24" reicht irgend eine IP Adresse im lokalen Netzwerk bei Mask 255.255.255.0, in diesem Fall war es die vom Raspberry PI selbst.
will man nur eine einzige bekannte IP adresse scannen dann gibt man z.B: "nmap -sP 192.168.0.111/32" und bekommt sehr schnell Auskunft ob 192.168.0.111 online ist.

Wäre das nicht die perfekte Methode, um eine Anwesenheits Prüfung auf Netzwerkebene zu realisieren?
Mir reichen die Kenntnisse in PERL nicht aus, um es auf FHEM zu realisieren, aber vielleicht könnte jemand die Idee verwirklichen?

Frohe Weihnachten!
Laszlo

Titel: Antw:Modul PRESENCE wenn FHEM auf Linux läuft wie wäre es mit nmap?
Beitrag von: igami am 24 Dezember 2016, 06:36:38
Es gibt ein inoffizielles Nmap Modul.
Aber warum braucht ping root rechte?
Titel: Antw:Modul PRESENCE wenn FHEM auf Linux läuft wie wäre es mit nmap?
Beitrag von: rin67630 am 24 Dezember 2016, 09:58:24
Zitat von: igami am 24 Dezember 2016, 06:36:38
Es gibt ein inoffizielles Nmap Modul.
Aber warum braucht ping root rechte?

Danke, habe es gefunden!
https://forum.fhem.de/index.php/topic,57804.0.html

Wie bitte bindet man inoffizielle Module in FHEM ein, damit das Define klappt?

Ich werde es testen, wenn es funktionniert sollte man es bei PRESENCE erwähnen.

Warum braucht ping root rechte?
Gute Frage. Paranoide Raspbian Entwickler?
Titel: Antw:Modul PRESENCE wenn FHEM auf Linux läuft wie wäre es mit nmap?
Beitrag von: igami am 24 Dezember 2016, 10:02:44
Zitat von: rin67630 am 24 Dezember 2016, 09:58:24
Wie bitte bindet man inoffizielle Module in FHEM ein, damit das Define klappt?
runterladen, ins FHEM Verzeichnis kopieren, fhem neustarten

Zitat von: rin67630 am 24 Dezember 2016, 09:58:24
Gute Frage. Paranoide Raspbian Entwickler?
Was für eine Fehlermeldung bekommt du denn?
Titel: Antw:Modul PRESENCE wenn FHEM auf Linux läuft wie wäre es mit nmap?
Beitrag von: justme1968 am 24 Dezember 2016, 10:19:13
nmap zur presence erkennung hat die gleichen nachteile wie ping. wenn der angefragte nicht antwortet weil er schläft gilt er als abwesend. ping und nmap geben nur eine momentaufnahme. und die ist zu ungenau für diesen zweck.

man kann PRESENCE auch einfach umkonfigurieren um nmap statt ping zu verwenden falls es tatsächlich berechtigungsprobleme geben sollte.

eine fritzbox kann das nur für den netzwerk verkehr den sie mithört. und das funktionier weil es keine momentaufnahme ist sondern werte in einem cache gesammelt und erst nach einiger zeit gelöscht werden.

natürlich kann linux das, aber nur wenn man einen solchen cache verwaltet. ein notbehelf sind hier die threshold attribute von PRESENCE. damit arbeitet PRESENCE im prinzip mit einem solchen cache.

ideal ist es seinen dhcp server abzufragen. siehe z.b. snmp methode im wiki. wenn man sicher stellt das die lease time kurz genug ist und das hand vielleicht auch noch zum mail abholen oder ähnlichem regelmäßig aufwacht.

leider haben alle caching verfahren hier den nachteil das die anwesenheit deutlich verzögert erkannt wird und das ist nur bis zu einer gewissen zeit gewünscht und sinnvoll.

unterm strich ist ping/nmap/ was auch immer um passiv ein gerät zu überwachen das versucht das netz so lange wie möglich abzuschalten um energie zu sparen nicht die methode der wahl.

auf netzwerk ebene sind aktive methoden wie geofencing sehr viel besser.

gruss
  andre
Titel: Antw:Modul PRESENCE wenn FHEM auf Linux läuft wie wäre es mit nmap?
Beitrag von: rin67630 am 25 Dezember 2016, 14:24:39
Zitat von: igami am 24 Dezember 2016, 10:02:44
Was für eine Fehlermeldung bekommt du denn?
$  ping 192.168.0.101
ping: icmp open socket: Operation not permitted
---
$ sudo ping 192.168.0.101
PING 192.168.0.101 (192.168.0.101) 56(84) bytes of data.




Titel: Antw:Modul PRESENCE wenn FHEM auf Linux läuft wie wäre es mit nmap?
Beitrag von: rin67630 am 25 Dezember 2016, 14:44:14
Zitat von: justme1968 am 24 Dezember 2016, 10:19:13
nmap zur Presence erkennung hat die gleichen Nachteile wie ping.

Wenn der Angefragte nicht antwortet weil er schläft, gilt er als abwesend.

Nmap funktionniert bei meinem Raspi ohne Root-Rechte. Ping nicht.
Nmap erkennt mein Handy auch wenn er (halb) schläft, weil Keep WiFi on during Sleep drauf eingestellt ist.
Das ist aber logisch. Brauche ich sowieso für MizuDroid und What'sApp.
Titel: Antw:Modul PRESENCE wenn FHEM auf Linux läuft wie wäre es mit nmap?
Beitrag von: igami am 26 Dezember 2016, 08:52:18
Zitat von: rin67630 am 25 Dezember 2016, 14:24:39
$  ping 192.168.0.101
ping: icmp open socket: Operation not permitted
---
$ sudo ping 192.168.0.101
PING 192.168.0.101 (192.168.0.101) 56(84) bytes of data.
Ich kann mich dran erinnern bei meinem debian auch mal das Problem gehabt zu haben. https://ubuntuforums.org/showthread.php?t=2079091
Titel: Antw:Modul PRESENCE wenn FHEM auf Linux läuft wie wäre es mit nmap?
Beitrag von: justme1968 am 26 Dezember 2016, 11:29:12
eine distribution ping die rechte entzieht ist einfach blödsinn, ein chmod u+s auf das ping binary sollte helfen.
Titel: Antw:Modul PRESENCE wenn FHEM auf Linux läuft wie wäre es mit nmap?
Beitrag von: Benni am 26 Dezember 2016, 12:09:43
Es ist nich so, dass dem User die Ping-Rechte entzogen werden, sonst könnte er Ping ja nicht mehr aufrufen, sondern ping hat keine capabilities einen (raw) socket mit Port <1024 aufzumachen und der ist für ICMP notwendig. Wenn Ping unter Root-Rechten läuft, geht das natürlich auch.

Man kann aber auch einfach Ping die entsprechenden Capabilities mit setcap zuweisen:


sudo setcap cap_net_raw+ep /bin/ping


Das habe ich gestern auch schon mal in einem anderen Thread geschrieben:
https://forum.fhem.de/index.php/topic,63323.msg546306.html#msg546306
Titel: Antw:Modul PRESENCE wenn FHEM auf Linux läuft wie wäre es mit nmap?
Beitrag von: justme1968 am 26 Dezember 2016, 13:50:31
icmp ist zwar ip aber nicht tcp oder udp und verwendet als solches keine ports.

das für icmp besondere rechte nötig sind ist klar, deshalb ist für ping auch seit unix gedenken das s bit gesetzt.

wenn eine distribution das ändert bedeutet dies es wurden rechte entzogen. und das ist schlicht und einfach dumm wenn man nicht die fähigkeit auf andere art wieder herstellt. es schafft keine sicherheit einem anwender die ping rechte zu entziehen.
Titel: Antw:Modul PRESENCE wenn FHEM auf Linux läuft wie wäre es mit nmap?
Beitrag von: Benni am 26 Dezember 2016, 14:35:12
Zitat von: justme1968 am 26 Dezember 2016, 13:50:31
idas für icmp besondere rechte nötig sind ist klar, deshalb ist für ping auch seit unix gedenken das s bit gesetzt.

wenn eine distribution das ändert bedeutet dies es wurden rechte entzogen. und das ist schlicht und einfach dumm wenn man nicht die fähigkeit auf andere art wieder herstellt. es schafft keine sicherheit einem anwender die ping rechte zu entziehen.

Da gebe ich dir natürlich recht! Per default, sollten die capabilities entsprechend gesetzt sein. Denn ja, auf der einen Seite wurden dem User die Ping-Rechte entzogen (-s) und auf der anderen Seite wurde anscheinend versäumt, Ping die Fähigkeit raw-Sockets zu öffnen einzuräumen.

s. bspw. a.: https://linux-audit.com/linux-capabilities-hardening-linux-binaries-by-removing-setuid/
Titel: Antw:Modul PRESENCE wenn FHEM auf Linux läuft wie wäre es mit nmap?
Beitrag von: rin67630 am 28 Dezember 2016, 22:34:20
Zitat von: Benni am 26 Dezember 2016, 12:09:43
Man kann aber auch einfach Ping die entsprechenden Capabilities mit setcap zuweisen:


sudo setcap cap_net_raw+ep /bin/ping



Das klappt wunderbar!
Meine Presence detection läuft so prima.
Danke!