PI am Internet, wie absichern

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hier lese ich immer wieder das User den PI zum Internet öffnen.
    In der Default Konfiguration des OS und der Programme besteht ein nicht zu Unterschätzendes Risiko das
    der PI gehackt und missbraucht wird.

    Ich werde hier nach und nach ein paar Tips schreiben welche den PI härten.
    Einiges ist hier schon geschrieben worden, ich werde darauf verweisen und evtl die Elementaren Schritte noch einmal verdeutlichen.

    Ich möchte noch darauf hinweisen das ich kein sudo benutze.
    Administrative Aufgaben erledige ich als root. Warum erkläre ich unten.
    Auch ist der MTA des PI so eingerichtet das der PI in der Lage ist Emails zu versenden.


    1. System aktuell halten
    2. Portforwarding am Router
    3. sudo vs su
    4. SSH sicher machen


    1. System aktuell halten

    EDIT: Besser informieren lassen als Updates automatisch installieren,

    Informieren lassen wenn Updates vorliegen.
    Das geht ganz einfach über ein Script und mittels Cron
    Zuerst legen wir eine Datei an und machen sie ausführbar.


    Code
    touch /root/scripts/update.sh
    chmod +x
    /root/scripts/update.sh
    nano /root/scripts/update.sh

    in die Datei kommt nun folgendes :

    Bash
    #!/bin/sh
    apt-get update
    apt-get upgrade -s | mail -s "Subject" emailadresse

    Dann öffnen wir den Crontab

    Code
    crontab -e

    und fügen folgende Zeile ein :

    Code
    12 0 * * *  root /root/scripts/update.sh

    Alternativ können wir anstelle von crontab einen Symbolischen Link nach /etc/cron.daily anlegen

    Code
    ln -s /root/scripts/update.sh /etc/cron.daily/update.sh

    Nun sollte der PI jeden Tag nach Updates suchen und euch eine Mail zusenden .


    2. Portforwarding am Router

    Es sollten immer nur die Ports am Router weitergeleitet werden welche man wirklich benötigt.
    Den PI als "Exposed Host" einutragen ist keine gute Idee da er dort vollkommen offen im Internet steht.

    3. sudo vs su

    Hat jemand das Passwort des User PI bekommen kann er als root mittels sudo befehle ausführen.
    Dem kann man entgegenwirken indem man su anstelle von sudo benutzt.

    Code
    sudo <befehl>


    fragt das Passwort des Benutzer ab welcher den Befehl abgesetzt hat.

    Code
    su
    <befehl>

    Lässt uns erst zu root werden indem das root Passwort gefragt wird
    Anschliessend können wir als Root befehle eingeben.

    su hat also den Vorteil das neben dem Userpasswort auch das root Passwort im Besitz des Angreifers sein muss.

    Zuerst müssen wir root ein Passwort geben.

    Code
    sudo su
    passwd

    jetzt nehmen wir den user PI aus der Sudoers.

    Code
    visudo

    Nun ändern wir folgende Zeile :

    Code
    pi ALL=(ALL) NOPASSWD: ALL


    in

    Code
    #pi ALL=(ALL) NOPASSWD: ALL

    Ab sofort kann man sudo nicht mehr nutzen
    Man muß sich mittels su erst explizit zum root machen.


    4. SSH sicher machen

    Zu dem Thema werde ich die Tage ein eigenes Tutorial schreiben und dann hier verlinken.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

    Einmal editiert, zuletzt von Der_Imperator (21. Februar 2015 um 09:34)

  • natürlich sollte das system aktuell sein aber es gibt nicht umsonst den Spruch bei den Informatikern:
    "Dont touch a runing system"
    Mit anderen Worten sollte man sich durchlesen welche Updates erfolgen. Es zu automatisieren kann im ernst Fall auch vieles kaputt machen oder configs gehen verloren. Diese Überprüfung durch den mensch egal ob er Ahnung von der Materie hat oder nicht ist hier nicht mehr gewährleistet.

    Punkt 4 ist sinnlos da sudo installiert ist. bin also gespannt was von dir da kommen wird.
    Punkt 5 sinnlos da schon beschrieben als Tutorial und das glaub schon 2 mal. Ein 3 brauche wir nicht.
    Punkt 7 wurde auch schon beschrieben wie es am "sichersten" geht und zwar mit SFTP.

    Und wie soll das Raspberry in deinem Tutorial ohne mailserver eine email versenden an eine z.B.: Googlemail?

  • apt-get update && apt-get upgrade -y
    ist eine tolle Möglichkeit sein System automatisch zu zerschießen. Nichtnur, daß dann plötzlich unpassende Configdateien entstehen, Webscripts laufen nicht mehr wie beim Wechsel PHP4->5 passiert ist, Debian hat bei einem Update alle ssh-Key gelöscht und die Systeme waren nurnoch lokal erreichbar ...
    Schlimmer währe nurnoch ein automatisches 'apt-get dist-upgrade -y '
    Phpmyadmin sollte remote garnicht erreichbar sein, viele Bug in den Script haben das bewiesen.

    Das sudo-Konzept und die 'falsche' Benutzung bei Debian war schon immer ein Streitthema. Ich halt garnichts davon aber es ist wohl die einzige Möglichkeit Windowsuser davon abzuhalten immer als root zu arbeiten.

  • Zitat von orb pid=9280 dateline=1364839618


    apt-get update && apt-get upgrade -y
    ist eine tolle Möglichkeit sein System automatisch zu zerschießen.


    Bei raspxbmc wird ausdruecklich NICHT empfohlen ein apt-get dist-upgrade zu machen da das xbmc enge Angaengigkeiten zum Kernel hat.

    Anyhow: Die Idee zu diesem Tut finde ich gut und wichtig. Allerdings waere da ein Wiki besser geeignet, denn das wird eine laengliche Diskussion und zum Schluss wird kaum noch jemand durchsteigen.

    • Offizieller Beitrag

    @ Der_Imperator

    wird das Thema noch vervollständigt?

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

  • Wohl eher nicht, wurde alles mittlerweile schon geschrieben.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.


  • Wohl eher nicht, wurde alles mittlerweile schon geschrieben.

    Es gab da gerade eine heftige Diskussion zu diesem Thema - wie sichere ich meinen ssh Zugriff auf meine Pi vo. Internet. Du hast da auf ein existierendes Tutorial verwiesen und ich bin auf dieses gestossen. Du hast es leider nicht - warum auch immer - weitergeführt =(.
    So wie Du immer wieder in Beiträgen schreibst bist Du Netzwerkadmin, hast Deinen Titel im Forum in Netzwerkguru geändert und kennst Dich in Netzwerkdingen aus. Es ist meiner Meinung nach dringend notwendig zu diesem Thema ein gutes Tut zu haben, denn immer mehr Leute definieren in ihrem lokalen Router ein Portforwarding auf den Port 22 ihrer Pi - und sind sich nicht bewusst was sie damit anstellen.
    Die Standardantwort - Du hast keine Ahnung von Linux - also lass die Finger davon - ist sicherlich berechtigt - aber die Leute werden es trotzdem machen. Deshalb fände ich es gut wenn Du Dein Tut weiterführen würdest.

  • Ich hab alles so gemacht, wie beschrieben, eine Mail habe ich noch nie bekommen. Woran könnte es liegen?
    Besten Dank im voraus!

  • In dem Beitrag fehlt noch, dass man am besten den Benutzer "Pi" löscht oder umbenennt, da ein Angreifer sonst leichtes Spiel hat, da er den Namen bereits kennt.

  • Das sind in der Tat wichtige Hinweise, hilft mir aber bei meiner Frage nicht ;)

    Ich habe meinen Raspi jetzt soweit, dass ich aus der Konsole mit Hilfe vom sSmtp eine Mail versenden kann. Der hier erklärte Crontab Eintrag führt bei mir jedoch zu keinerlei Nachricht, was Schade ist, da das schon sehr praktisch wäre ;)
    Kann mir jemand einen Rat geben?

  • Student0815: Hm, hier wird einfach so der Befehl "mail" benutzt. Weder in RaspBMC noch in Raspbian ist das bei mir vorhanden. Wie hast du das eingerichtet? Sonst kann ich leider nicht helfen.

    Code
    apt-get install ssmtp

    hat den Befehl "mail" auch nicht hervorgebracht.


  • ... ich aus der Konsole mit Hilfe vom sSmtp eine Mail versenden kann. ...

    Und wenn Du in der Konsole (d. h. ohne Script)

    Code
    which mail


    und

    Code
    apt-get upgrade -s | mail -s "Subject" emailadresse


    machst?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (21. Mai 2015 um 13:19)

  • Und wenn Du in der Konsole (d. h. ohne Script)

    Code
    which mail


    und

    Code
    apt-get upgrade -s | mail -s "Subject" emailadresse


    machst?

    Ich habe das jetzt getestet.

    Code
    "which mail"


    liefert "usr/bin/mail" zurück.

    Code
    apt-get upgrade -s | mail -s "Subject" emailadresse


    funktioniert aus der Konsole ebenfalls. Ich bekomme dann, so wie ich es will, eine Mail, die mir sagt, welche Pakete zu aktualisieren sind.

    was würde denn das "mailutils" tun?

    Nachtrag:

    Code
    40 20 * * *  root /root/scripts/update.sh


    Hätte mir doch 20:40 Uhr eine Mail schicken müssen, das ist leider nicht passiert, also muss es irgendwie mit der update.sh oder dem Crontab zusammenhängen (?)

    Einmal editiert, zuletzt von Student0815 (21. Mai 2015 um 20:47)


  • ..., also muss es irgendwie mit der update.sh oder dem Crontab zusammenhängen (?)

    Das Script kannst Du, z. B. mit:

    Code
    sudo sh -x /root/scripts/update.sh


    testen. Betr. Crontab, versuch mal mit der systemweiten:

    Code
    /etc/crontab

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample


  • Das Script kannst Du, z. B. mit:

    Code
    sudo sh -x /root/scripts/update.sh

    testen.

    Besten Dank! Das funktioniert wie es soll :)


    Betr. Crontab, versuch mal mit der systemweiten:

    Code
    /etc/crontab


    Ich habe es abgeändert bzw. angepasst. Aber via Cron kam wieder keine Mail ... Habe ich einen Tipp-/ Denkfehler wenn ich

    Code
    0 20 * * *  root /root/scripts/update.sh


    eingebe?


  • Ich habe es abgeändert bzw. angepasst. Aber via Cron kam wieder keine Mail ... Habe ich einen Tipp-/ Denkfehler wenn ich

    Code
    0 20 * * *  root /root/scripts/update.sh


    eingebe?

    Ergänze mal die Zeile in der /etc/crontab, wie folgt:

    Code
    <m> <h>   * * *  root /root/scripts/update.sh > /dev/null 2>&1


    und als letzte Zeile in der /etc/crontab, einen Kommentar oder eine Leerzeile dort einfügen.
    Poste mal nach den Änderungen in der systemweiten /etc/crontab, die Ausgaben von:

    Code
    ls -la /root/scripts/update.sh
    cat /etc/crontab


    ... und ca. 2 Minuten nach dem Speichern/Ergänzen der crontab, die Ausgabe von:

    Code
    sudo cat /var/log/syslog | grep -i 'RELOAD (/etc/crontab)'


    posten.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (22. Mai 2015 um 09:15)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!