Posts by Apop85

    Ja das mit dem Sudo hab ich verstanden. Heisst mit dem Polkit brauchts die sudoer Datei nicht mehr? Du hast da nur geschrieben dass Sudo und Polkit Wechselwirkungen aufweisen. Das würde erklären warum wir grad bei dem Thema hängen bleiben :)

    Welches Thema genau meinst Du? Irgendwie habe ich jetzt den Faden verloren.....

    Kein Problem :) . Damit meinte ich eben das mit der Rechteverteilung. Bei den meisten Punkten hast du angefügt editiere Eintrag in Datei blah um dieses Problem zu lösen nur irgendwie beim Thema Rechtemanagement bzw konfiguration Polkit bleibt es etwas diffus wie die Lösung aussehen könnte, ausser du bist in den vorhergehenden Punkten näher darauf eingegangen, ich bin leider noch nicht dazu gekommen alles zu lesen.


    Gemeint ist diese Aussage:

    Code
    Lösung: Explizite Polkit-Rules für einzelne Befehle und bei Bedarf ergänzende individuelle PKLA-Berechtigungen

    Zumindest bei meinem Grundwissen in Relation mit diesem umfangreichen Thema ist die Aussage etwas Knapp als dass ich direkt wüsste wie ich das umzusetzen habe oder wo ich nachschauen könnte um mich in dieses Thema einzulesen. Die Aussage "keine Antwort" von mir ist zugegeben etwas überrissen.


    Dieses Thema geht halt davon aus dass der Leser weiss wie er dieses Ziel erreicht während er bei den anderen Punkte angeleitet wird oder du sogar sehr genau den Lösungsansatz erklärst.


    Das Polkitmanual hab ich mal durchgelesen. Ist ja noch übersichtlich im Vergleich (zumindest die Onlineversion davon). Werde mich Morgen mal ranwagen aber langsam bin ich schon müde und für das Thema brauch ich Konzentration.

    Dann hab ich das fehlinterpretiert. Sorry dafür. Aber ja wenn möglich auf prosa verzichten ^^ das Thema hat so schon eine steile Lernkurve.


    Dass ich das Thema nicht wirklich verstanden habe bzw nur die Grundlagen ist mir auch bewusst. Dass ich nicht innert 24h zum Profi darin werde ist auch klar. Aber Finger weg ändert den Wissensstand leider nicht. Daher probiere ich vieles mit learning-by-doing aus weswegen ich mir den Raspberry u.a. zugelegt habe. Auch ist mir klar dass es kaum möglich ist dieses Spezielle Thema mit learning-by-doing anzueignen da das OS die conf wahrscheinlich schlucken und anwenden würde... nur ob sie richtig konfiguriert ist oder nicht würde ich dann nur im eventuellen Worstcase feststellen. Daher frage ich ja :) nehme auch gerne Quellen entgegen falls dir diesbezüglich etwas bekannt ist. Du hast halt für jeder deiner Punkte eigentlich die Lösung schon mit dabei nur in diesem Thema lässt du die Leser im dunkeln und anhand deiner Schreibweise würde ich sagen du richtest dich nicht nur an IT-Fachleute die dann gleich wissen was wie wo zu tun ist :) .


    und das genannte Beispiel mit %sudo ALL(ALL:ALL) ALL ist übrigens nicht mein Vorschlag sondern das was Raspbian und Ubuntu (VM) als Standardeintrag drin haben ^^ Also bisschen was hab ich schon mitgekriegt ;). Ich gehe ja bei meinem Script immer von einem frisch installierten unberührten OS aus. Die manpage lasse ich mal vorerst beiseite und mache mit Polkit weiter.


    Und wie du schon selber sagst ist die man page von sudoers nicht grad sehr verständlich bzw der Aufbau etwas kryptisch. Wie bsp. das mit shanty. Das kommt an 2 Stellen in der manpage vor wird aber nirgends erklärt ob das ein Beispiel oder ein benötigter Eintrag ist und auch google gibt mit meinen Versuchen nichts darüber aus.

    Was ist, wenn *wir* auch was nicht verstanden haben, oder jemand, der es verstanden hat, liest hier gar nicht mit.... überlässt Du dann diesen Sicherheitsaspekt dem Umstand, die Wirksamkeit in allen Nebenaspekten faktisch nicht kontrollieren oder bestätigen zu können, also quasi dem Zufall?

    Welche Antwort erwartest du hier genau? Ohne dich angreiffen zu wollen aber diese schnippigkeit ist nicht besonders hilfreich... Ich habe nicht das Gefühl dass es an einem Nachweis fehlt dass ich mir Mühe gebe mich in dieses Thema einzulesen und Antworten auf meine Fragen auch selber zu suchen. Dass sich nicht jeder auf deinem Niveau über dieses Thema auskennt ist unteranderem ein Grund warum solche Foren existieren oder nicht? Kann auch sein dass ich deine Fokussiertheit auf dieses Thema einfach falsch auffasse aber wie gesagt mit solchen Antworten führt das doch für beide Seiten nirgendwo weiter?

    Ich hab mal anhand des sudoers Manual Versucht eine Konfiguration zusammenzustellen die den Anforderungen entspricht.

    Ich bin mir nicht sicher ob ich alles Verstanden habe also bitte korrigiert mich allenfalls.


    Bash
    # Override built-in defaults
    Defaults                syslog=auth
    Defaults                mail_badpass
    Defaults                env_reset
    Defaults                secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
    Defaults:apop85gruppe   noexec
    
    root        ALL = (ALL:ALL) ALL
    apop85   shanty = NOEXEC: /usr/bin/nonrootscripts

    Bei Zeile 5 bin ich mir nicht sicher, die ist standardmässig bei meiner Beere und meiner VM so hinterlegt. Beisst sich das mit dem noexec vom User?

    Bei der letzten Zeile verwirrt mich shanty etwas. Es wird im Manual sonst nirgends erwähnt also gehe ich davon aus dass dies dazugehört? Und der Pfad sollte ja dann erlauben dass in diesem Ordner Scripts ausgeführt werden?


    Reicht das so aus oder fehlt noch was?


    Das hat aber jetzt nichts mit dem Script zu tun, sondern gehört zu den sicherheitstechnischen Folgeüberlegungen auf einem Desktop-PC mit hohem Anteil an Internet-Interaktion durch User.

    Das gehört zum Script weil ich damit ja die entsprechend passenden Rechte für den Nutzer einrichten möchte. Oder ist das nur für die Endgeräte nicht für den Server gedacht? Sorry wenn ich das falsch interpretiert habe ^^

    Zum allgemeinen Verständnis. Ich beziehe mich bei meinen Fragen auf folgende Quelle:

    http://www.thlu.de/security.html#vermeidbarerisiken


    .bashrc

    Ich habe die Berechtigungen nun mal auf readonly (444) gestellt und mit dieser Einstellung konnte ich keine Befehle mittels echo in die Datei einfügen. Ist das ein möglicher Lösungsansatz? Die Berechtigungen dieser Datei mittels Script zu ändern nachdem der User erstellt wurde ist ja kein Problem.

    Ich konnte auch beim kurzen antesten keine Probleme beim erneuten aufrufen des Terminals oder nach dem reboot feststellen. Würde das längerfristig zu Problemen führen dass du dies in deiner Beschreibung nicht erwähnt hast?


    User darf keine Software installieren/starten

    Lösung: remount von /home, /dev/shm und /tmp mit noexec,nosuid,nodev

    Keine Software installieren ist ja durch den Entzug der Rootrechte des neu angelegten Users gelöst, das kann dann nur noch Root.

    Wie löst du das mit deinen eigenen Scripts? Lässt du da alle unter Root laufen/starten oder hast du da einen weiteren User speziell dafür oder ein Unterverzeichnis irgendwo?


    Direktlogin für root per SSH unterbinden.

    Lösung: /etc/ssh/sshd_config = PermitRootLogin no

    Heisst ich müsste mich dann mit z.b. User Apop anmelden dann im Terminal mit su root fortfahren oder wie ist da die praktische Anwendung wenn ich mich als root per SSH einloggen möchte?

    Du sagst da dass es bei "normalen Client-PCs" unterbunden werden soll... Heisst man kann auch ausnahmen hinterlegen?


    Der Zugang nach draußen ins Internet ist auf einigen besonderen Geräten via Paketfilter reguliert.

    Du sagst da dass du deinen Server nur auf Mail (Getmail + Postfix) und VPN beschränkt hast. Benutzt du in diesem speziellen Beispiel den VPN-Zugang nur um mit diesem zu kommunizieren oder auch für die Weiterleitung deines Traffics in Netz?

    Was ich eigentlich wissen will ist ob diese strenge einschränkung auch bei einem Raspberry zur verwendung kommt der als PiHole/VPN konfigueriert ist, da dieser ja die Aufgabe hat jeglichen Traffic vom Client ans Netz via PiHole weiterzuleiten. Die Clients die ich Hoste benutzen das u.a. um regionblocks in Zensurreichen Staaten (Asien) zu umgehen und Zugriff auf das europäische Angebot zu erhalten und ich um logischerweise Werbung auf allen Geräten zu blocken.


    Befehlseinschränkung für User

    Die Befehlseinschränkung für den User ist natürlich sinnvoll. Welche Befehle sollte und kann man denn sperren ohne dass ich mir selbst das login zum Rootzugang via oben genannter SSH einschränkung verbaue?



    Den Rest sollte ich hinkriegen

    Apop85 Du passt den Titel an und ich verschiebe nach Debian & Raspbian wenn das ok ist?

    Jepp das ist i.o. Hoffe Titel ist noch einigermassen verständlich ^^

    Wenn die Script-Shell "non interaktiv" gestartet wird, ist eine Passwortabfrage (denk)unmöglich und deshalb wird auch in diesem Fall kein Passwort abgefragt. Und das ist auch nur wegen der großzügigen Voreinstellung der /etc/sudoers möglich.

    Wow.... :wallbash:. Und danke fürs aufklären.

    EDIT: In der sudoers Datei sehe ich keinen Eintrag der auf soetwas hinweist ausser du meinst %sudo ALL=(ALL:ALL) ALL. Hast du evt eine Quelle oder kann da jemand auskunft geben wie man das unterbinden kann... bzw ob das möglich ist ohne das system in irgend einer weise zu beschneiden?

    Hab den entsprechenden Abschnitt gelesen. Soweit deinen Tipps für die Sicherheit ist eigentlich alles eingehalten. Der neue Nutzer hat keine Sudoberechtigung und Für Root und User muss zwingend ein unterschiedliches Passwort eingegeben werden.


    Grundsätzlich bleibe ich bei meiner vorhergehenden Argumentation bezüglich Root bei diesem Speziellen Script/Beispiel. Die Grundinstallation von Raspbian ist ein deutlich höheres Sicherheitsrisiko als dieses Script darauf auszuführen mit der entsprechenden rechteaneignung und welches ja auch dazu dient diese Risiken zu minimieren. Wie gesagt, diese Argumentation gillt nur für dieses eine Beispiel. Sonst bin ich ganz deiner Meinung.


    Das mit der Codeinjection bei .bashrc ist wirklich eine sehr doofe Sache. Die auf readonly zu stellen ist keine Option?


    Grundsätzlich würde ich gerne alle diese Sicherheitstips von deinem Link in mein Script einbauen, habe diesbezüglich jedoch noch einige grundliegende Fragen. Sollen wir das per PN weiter besprechen oder hier im Thread? Also falls du denn bereit dazu bist ;) . Ist zwar durchaus sicherlich Interessant für nachfolgende die auf diesen Thread stossen jedoch geht es schon etwas sehr ins OffTopic

    Wie ich sagte, sowas geht gar nicht..... und ist meiner Meinung nach auch schlechter Stil, weil es zur Laufzeit Password-Abfragen macht.

    Das habe ich schon verstanden. Da es jedoch die Antwort auf die bei diesem Thema gestellte Frage ist gehört die mmn hier hin. Dass es schlecht ist hab ich ja schon verstanden.


    Mal rein auf dieses einzelne Script bezogen. Dieses Script ist ein One-Time Script welches nach erfolgreichem Abschluss wieder vom Gerät entfernt wird. Auch ist das Script für den Fall und nur für den Fall bedacht wenn man ein frisch aufgesetztes und unkonfiguriertes Raspbian, was ja eine hohe Sicherheitslücke durch defaultpasswort und rootrechten ist, durch den Besitzer entsprechend konfigurieren möchte.

    Insofern würde ich jetzt das Sicherheitsrisiko in diesem speziellen Fall als überschaubar erachten. Wenn es jetzt ein Script ist welches immer wieder laufen soll dann ist mir diese Argumentation klar und nachvollziehbar.


    Das einrichten des seperaten Rootpassworts sowie das entfernen der Rootrechte für den user hab ich schon mal integriert.


    Ich schau mir mal den Link von dir noch an

    Ja gerne schick mir den Link mal bitte. Das würde ich gerne mal lesen.


    Hmm wie kann sich denn ein Script selber sudo rechte erteilen wenn für die Ausführung von sudo ein Passwort benötigt wird? Also ohne interaktion vom User meine ich. Die versuche die ich mit Scripts und den entpsrechenden Befehlen gemacht habe auf meiner VM resultierten alle in einem Passwortprompt oder wurde mit dem Hinweis auf fehlende Rechte unterbrochen daher erstaunt mich das grad etwas.

    Konnte es nun so lösen:


    @ThomasL Denke werde das Script jedoch noch entsprechend anpassen damit für root ein eigenes Passwort vergeben wird. Danke für den Hinweis.

    Naja das Script ist auch nicht für Endanwender gedacht und auf den Geräten wird es nur den einen User geben daher muss ich mich um andere User mit Berechtigungen die sie nicht benötigen schon mal keine Sorgen machen.


    Den Rest nehme ich so zur Kenntnis. Das Script ist halt darauf ausgelegt dass eine Grundinstallation von Raspbian vorhanden ist mit dem mit zuviel Rechten ausgestatteten User pi. Dieses zuviel beschneide ich immerhin schon mal signifikant indem ich die Passworteingabe bei sudo aktionen beim neuen User drin lasse un pi lösche.


    Und weil bequem würd ich halt gern direkt loslegen nach dem ersten booten nach dem flashen auch wenn das wechseln auf Root jetzt nicht so viel Zeit in anspruch nehmen würde alles andere soll das Script übernehmen.

    Ja habe im Script nur geprüft ob es mit Sudorechten aufgerufen wurde und falls nicht wird es mit diesen neu gestartet mittels

    Bash
    if [ "$EUID" -ne 0 ]; then
        echo "Nicht Root"
        [ `whoami` = root ] || exec sudo $0
    else
        echo "Root"
    fi


    Ich schätze mal dass es mit sudo -i nach dem Check nicht ausreichen wird ^^ . Ich recherchiere/probiere mal

    Hallo zusammen


    Wie ich bereits in einem vorherigen Post erwähnt habe arbeite ich grad an einem Script (siehe hier) welches die Raspbiankonfiguration und die Installation von mir gewünschten Programmen automatisiert. Die ersten Schritte bestehen darin einen neuen User mit Rootrechten anzulegen und den User pi danach zu löschen. Das klappt auch alles wunderbar.

    Der Schönheitsfehler der mich jedoch noch stört ist dass das Rootpasswort nicht mitgeändert wird. Ich hab schon einige Lösungsansätze probiert jedoch war das höchste der Gefühle die Meldung dass ich keine Lese/Schreibrechte habe um das Passwort zu ändern obwohl das Script natürlich mit Rootrechten ausgeüfhrt wurde. Im Terminal funktionieren die Befehle, nur im Script nicht.


    Beide Lösungsansätze liefern mir den oben genannten Fehler.

    Code
    echo "$passwort" | passwd --stdin root
    Code
    sh -c 'echo username:password | chpasswd

    Ist das eine Schutzfunktion und falls ja.. kann man diesen irgendwie umgehen? Oder ist mein Lösungsansatz hier einfach der falsche?


    Grüsse Apop

    Es gibt natürlich noch einen Aspekt, der wenig Interpretationsspielraum lässt.... und zwar die Tatsache, dass den TE die Lösung vermutlich gar nicht mehr interessiert... wenn man mal aufs Datum schaut. Apop hat ne Leiche ausgegraben.... :D

    Ich weiss :angel: dachte wenn ich schon mal wieder da bin schaue ich mal im Forum wo es noch unerledigte Themen gibt wo ich evt was konstruktives beitragen könnte ;) und naja letzte Aktivität Oktober... die Leiche ist noch nicht ganz vergammelt 8o

    Auch das lässt viel Interpretationsspielraum ^^


    Nur einmal...

    ...wenn das Script ausgeführt wird?

    ...wenn das System gestartet wird?

    ...und dann nie wieder?

    ...wenn die Welt untergeht? ;)


    ggf kann er das ja mit einem bereits in den Kommentaren erwähnten Flag lösen...

    Joa haste schon recht ^^ hab mal meine Zahlen gesetzt. Mal schaun obs ein Treffer wird ;)


    Soweit ich das aus seinen Erklärungsversuchen entnommen habe testet er wie auch immer ob 2 Server oder PCs oder was auch immer wahrscheinlich übers Netzwerk und/oder Internet ansprechbar sind. Sind beide gleichzeitig Online soll wohl irgend etwas passieren.


    ... sehr viele undefinierte Aspekte ^^

    Ich denke duch suchst nach sowas?

    Bash
    if [ "$wert1" == "1" -a "$wert2" == "1" ]; then
        echo "$wert1 ist gleich $wert2"
    else
        echo "$wert1 ist ungleich $wert2"
    fi

    Grüsse Apop

    Hey ata1704

    Versuchs mal mit

    Code: crontab
    */5 * * * * /bin/bash /home/pi/Dropbox/loop.sh >/dev/null 2>&1


    Und beim 2. Eintrag habe ich bei meinen Scripts das Sleep in die Scripts selbst geschrieben:

    Bash: start.sh
    #!/bin/bash
    sleep 60
    soffice --show /home/pi/Dropbox/Datei/current.odp --norestore

    Was dann wie folgt aussehen würde

    Code: crontab
    @reboot /bin/bash /home/pi/Dropbox/start.sh >/dev/null 2>&1


    Grüsse Apop

    Ok das mit wget -q -O $tmpfile $URL hat geklappt. Das Script konnte den Service erfolgreich installieren und aktivieren. Danke schon mal llutz


    Nun jedoch einige darauffolgende Fragen.


    1. Warum bei diesem File und nicht bei den anderen?

    2. Kann das auch bei anderen Files passieren so dass es besser wäre alle downloads auf wget -q -O $tmpfile zu setzen?

    3. Muss ich mir um das ELF-Binary sorgen machen? ^^

    4. Und warum passiert das nur innerhalb des Scripts und nicht über die Konsole?


    EDIT:

    Ach hab grad wiki über 11-Binary gelesen... Jetzt ist auch klar warum das nur bei diesem File passiert ist... Das ist das einzige File dass ich als Ausführbar direkt vom Raspberry auf GitHub geladen habe und darum ist dort die Binary drin wobei bei allen anderen die Rohversion über Windoof upgeloaded wurde... :/ zumindest wenn ich das so richtig verstanden hab ^^


    Thx llutz da hab ich wieder was gelernt