Pi-hole | Werbeblocker für das Heimnetz auf dem Raspberry Pi

  • Kann ich.

    Da die Bridge unter dem user "homebridge" läuft,

    Ich nehme an, du hast die Homebridge nach der Forenanleitung installiert. Die Installation dort ist viel restriktiver als normale Installationen, und daher ist dem User homebridge nicht erlaubt, auf irgendwelche Befehle sudo anzuwenden (bis auf vier Kommandos). Festgelegt ist das in /etc/sudoers.d/homebridge.


    Du hast in deinem Skript alles richtig gemacht, wenn auch umständlich. Es würde auch einfach so gehen:

    Bash
    #!/bin/bash
    # Pi-Hole einschalten
    sudo -u homebridge pihole enable

    und ich würde es sogar so machen:

    Bash
    #!/bin/bash
    # Pi-Hole einschalten
    sudo -u homebridge /usr/local/bin/pihole enable

    aber der User homebridge darf kein sudo auf bash machen. Das ist gut, denn es erhöht die Sicherheit des Systems, aber es ist schlecht, weil es deinen Fehler erzeugt. Ich habe herumexperimentiert, ob man darauf verzichten kann, dem User homebridge die sudo-Rechte auf bash zu geben, aber man muss das leider tun. Doof, doof, doof. Sei's drum.


    Mache also folgendes:

    sudo visudo -f /etc/sudoers.d/homebridge


    und hänge an die Zeile ganz hinten an: /bin/bash


    so dass sie so aussieht:

    Code
    homebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge, /bin/journalctl, /usr/local/bin/node, /bin/bash


    Speichere sie ab und versuche es noch einmal.


    Stefan

  • sschuste woaah. Vielen Dank für die ausführliche Antwort. Auf die Ide wäre ich ja im Leben nicht gekommen.


    Ich habe nun mal alles exakt so umgesetzt wie du es beschrieben hast. Allerdings möppert das Log immer noch rum :-/

    Code
    homebridge : TTY=pts/1 ; PWD=/var/homebridge ; USER=root ; COMMAND=/bin/journalctl -o cat -n 500 -f -u homebridge
    pam_unix(sudo:session): session opened for user root by (uid=0)
    homebridge : command not allowed ; TTY=unknown ; PWD=/ ; USER=homebridge ; COMMAND=/usr/local/bin/pihole status web
    [2019-5-11 11:10:42] [Pi-Hole Switch] State of Pi-Hole Switch is:
    [2019-5-11 11:11:06] [Pi-Hole Switch] Set Pi-Hole Switch to on
    homebridge : command not allowed ; TTY=unknown ; PWD=/ ; USER=homebridge ; COMMAND=/usr/local/bin/pihole enable
    [2019-5-11 11:11:15] [Pi-Hole Switch] Set Pi-Hole Switch to off
    homebridge : command not allowed ; TTY=unknown ; PWD=/ ; USER=homebridge ; COMMAND=/usr/local/bin/pihole disable



    @vgnsxe auch Dir ein dickes Danke. Ich hatte deinen Post bereits gesehen, wolte es aber erst mit meiner nicht funktionierenden Lösung ausprobieren in der Hoffnung, dass die Sache mit dem Switch-state hier funktioniert ;)

  • Allerdings möppert das Log immer noch rum :-/

    :-/ Hmmm.


    Ich kann das leider nicht richtig nachstellen, weil bei mir Homebridge auf dem einen Raspi läuft und Pihole auf dem anderen. Ich habe das direkt auf der Shell getestet, und da ging das bei mir. Was ich also getan habe, war auf der Shell:


    sudo su - homebridge (macht dich zum User homebridge)

    pihole disable

    pihole enable

    exit


    Nachdem ich die sudoers-Datei bearbeitet hatte, konnte der User homebridge das Pihole ab- und wieder einschalten. Geht das bei dir auch?


    Dann begebe ich mich mal in das große Land der Spekulation: was passiert, wenn du die suoders-Datei nocheinmal bearbeitest und ganz hinten /usr/local/bin/pihole anfügst?


    sudo visudo -f /etc/sudoers.d/homebridge

    Ergebnis:

    Code
    homebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge, /bin/journalctl, /usr/local/bin/node, /bin/bash, /usr/local/bin/pihole

    Stefan

  • Och Mensch. Ich will Dich jetzt eigentlich auch gar nicht so damit vereinnahmen -.-

    Wenn ich den Kram direkt auf der Shell ausführe, klappt es.


    Der Ausflug ins Land der Spekulationen ging allerdings in die Hose. Same Shit as always ;)

  • Dann bleibt nur noch:

    Code
    homebridge ALL=(ALL) SETENV:NOPASSWD: ALL

    Stefan

  • Und zum Thema Sicherheit: Ja, das is in der Theorie bestimmt weniger cool.. aber wie sieht es jetzt (ohne Aluhelm) in der Praxis aus? :)

    Ich denke, man kann es vernachlässigen.

  • Ich bin dabei homebridge und pihole zu trennen, also verschiedene PI's dafuer zu nutzen. 1x Smarthome, 1x Netzwerk...


    Wie muesste ich jetzt meine config, die vorher auf dem selben PI lief aendern, damit sie auf den anderen PI zugreift?


    Meine aktuelle config, wenn pi-hole auf dem selben pi laeuft wie homebridge mit dem homebridge-cmdswitch2 plugin:


    Danke im voraus!


    PS: Sofern ich eher auf ein anderes Plugin umsteigen sollte, waere das auch kein Ding :)

  • Ich würde dann einfach mal in den "Recent Queries" der IP adresse deines AppleTV´s schauen was geblockt wurde, was das nicht laden des AppStores oder deiner App verhindern könnte.

    Und dann ggf diese url auf die whiteliste setzen.

    Wollte mich dem Problem heute annehmen. Also PiHole wieder aktiviert und was passiert... Nix... AppleTv läuft seit rund zwei Stunden einwandfrei. Tja dann warte ich mal ab bis es wieder vorkommt 8o

  • Ich habe es inzwischen so gelöst, daß Pi-Hole nicht mehr per DHCP als DNS Server verbreitet wird, sondern die Fritz!Box selber. In der Fritz!Box ist Pi-Hole als DNS eingetragen und der fragt dann bei 1.1.1.1 nach.

  • Wie muesste ich jetzt meine config, die vorher auf dem selben PI lief aendern, damit sie auf den anderen PI zugreift?


    Also zwei Raspis. Den einen nenne ich mal homepi und den anderen holepi.


    Um Kommandos von homepi aus auf holepi auszuführen, kann man das ssh-Kommando verwenden:

    homepi:~$ ssh pi@holepi /usr/local/bin/pihole enable


    Voraussetzung dafür ist, dass der User pi@holepi die Rechte hat, Pi-Hole zu anzuhalten und zu restarten. Das Dumme ist nur, dass der Rechner holepi ein Passwort von dir verlangt. Gut, das kannst du ja eingeben, aber wenn die Homebridge später den Befehl ausführt, kann die das nicht. Also brauchst eine passwortlose Verbindung von homepi zu holepi, genauer gesagt: von homebridge-user@homepi zu pihole-user@holepi. Das kannst du mit SSH private und public keys machen.


    Wenn deine Homebridge unter dem User homebridge läuft, machst du auf dem homepi folgendes:

    sudo su - homebridge (macht dich zum User homebridge)

    ssh-keygen (erstellt das Schlüsselpaar. Alle Fragen mit der Entertaste beantworten, auch die nach der Passphrase)

    ssh-copy-id pi@holepi (kopiert den public key an die richtige Stelle auf dem holepi)


    Dann testen mit

    ssh pi@holepi /usr/local/bin/pihole enable (ein Passwort sollte nicht mehr abgefragt werden)

    exit (verlässt den User homebridge wieder)


    Du kannst dein vorhandenes cmd-Plugin weiterverwenden. Sieht dann so aus:

    Code
    {
     "name": "Pihole 5Min",
     "on_cmd": "ssh pi@holepi /usr/local/bin/pihole enable",
     "off_cmd": "ssh pi@holepi /usr/local/bin/pihole disable 5m",
     "state_cmd": "ssh pi@holepi /usr/local/bin/pihole status | grep blocking",
     "polling": true,
     "interval": 60
    }


    Stefan

  • sschuste Perfekt, danke vielmals. Hab die ssh-keygens mittlerweile sehr lieb gewonnen und die koennen echt hilfreich sein :D

  • @Typ1er

    Ich habe es genauso.

    In der Fritzbox gehst du auf Heimnetz>Netzwerk>Netzwerkeinstellungen>IP4Adressen

    dort trägst du die IP deines Piholes ein.

    Dann Internet>Zugangsdaten>DNS-Server


    Bei den Pihole settings

    IP of your Router (192.168.xxx.xxx)

    Local Domain name (fritz.box)

    und unter DHCP nichts anwählen

    2 Mal editiert, zuletzt von FettesB ()

  • Hallo zusammen,

    Interessantes Thema.


    Muss man den unbedingt über das ssh Protokoll auf den Pihole Dienst zugreifen ?

    Gibts es den keine Möglichkeit über einen Schalter auf das Webinterface zuzugreifen ?

    Über einen Browser ist es ja ebenfalls möglich den dienst zu starten bzw zu stoppen.

  • Über einen Browser ist es ja ebenfalls möglich den dienst zu starten bzw zu stoppen.

    Dazu muß man sich im Browser aber auch anmelden, sonst geht es nicht.

  • Ich habe es genauso.

    Diese Konfiguration hatte ich bis vor kurzem auch so gemacht. Aber damit gab es mit Fritz Repeatern (1750E) völlig unerklärliche Phänomene, bei denen die einzelnen Geräte zwar Ihre gesamten Einstellungen richtig per DHCP bekommen haben, aber DNS trotzdem nicht funktionierte.

    Jetzt habe ich Pi-Hole einfach als DNS in der Fritzbox eingetragen und alles funktioniert völlig richtig.