Wie Skript per Autostart ausführen? (Oder alternativ Firewalld für ein "VPN-Killswitch" konfigurieren?)

Hinweis: In dem Thema Wie Skript per Autostart ausführen? (Oder alternativ Firewalld für ein "VPN-Killswitch" konfigurieren?) gibt es 13 Antworten auf 2 Seiten. Der letzte Beitrag () befindet sich auf der letzten Seite.
  • Hallo,


    ich würde gerne ein Bash-Skript bei Systemstart automatisch ausführen lassen.



    Es gibt ja in openSUSE Leap 15 (KDE Plasma), wenn ich das Anwendungsmenü öffne, diesen Eintrag "Autostart". Dort gibt es sogar extra die Kategorie "Sriptdatei". Dort kann ich mein Skript, dass in meinem Home-Ordner liegt, auswählen (es erhält dann auch gleich den Status "Aktiviert") und muss mich nur noch entscheiden, was ich punkto "Ausführungszeitpunkt" auswähle. Entweder "vor Sitzungsstart" oder "Anmeldung". Da ich automatisch und ohne Passwort angemeldet werde, dachte ich, dass letzteres womöglich nicht funktioniert. Ich habe aber beides ausprobiert und es funktioniert beides nicht! :(
    Was mache ich falsch?

    Für den Inhalt des Beitrages 123579 haftet ausdrücklich der jeweilige Autor: Neuer1

  • Ich habe aber beides ausprobiert und es funktioniert beides nicht!

    Hier funktioniert es mit Plasma und Systemeinstellungen-----Arbeitsbereich---Starten und Beenden----Autostart.....
    Allerdings nur im Userkontex.....


    iptables ist root....


    Dein Script ist auch ausführbar?


    Befasse dich mit systemd.......

    Für den Inhalt des Beitrages 123585 haftet ausdrücklich der jeweilige Autor: Sauerland

  • "im Userkontext" heißt, dass, wenn sich ein anderer User anmelden würde, dass es dann nicht funktionieren würde?
    Das wäre soweit okay, da es nur einen eingeschränten User gibt, der auch direkt ohne Passwort angemeldet wird.


    "iptables ist root"
    Damit meinst du was?


    Wie könnte ich denn überprüfen, ob mein Skript auch die richtigen Rechte besitzt?


    Ich glaube, systemd ist mir ein paar Nummern zu groß!

    Für den Inhalt des Beitrages 123587 haftet ausdrücklich der jeweilige Autor: Neuer1

  • Code
    ich@linux64:~> iptables
    Absolute path to 'iptables' is '/usr/sbin/iptables', so running it may require superuser privileges (eg. root).

    Für den Inhalt des Beitrages 123588 haftet ausdrücklich der jeweilige Autor: Sauerland

  • Leider sind mir deine Informations-Schnipsel etwas zu knapp.
    Wenn da steht, "may require", dann wird es wohl so sein. Aber was bedeutet das jetzt für mich?


    Ich habe es mal versucht, vor jeden Befehl ein sudo zu schreiben. Zuvor hatte ich es mit einem su - probiert, also, am Beispiel der ersten Zeile so:

    Code
    su - iptables -t filter -A OUTPUT -o eth0 -p udp -m multiport --dports 443,53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

    Als Antwort kam dann aber für alle Zeilen:

    Code
    su: Ungültige Option -- t

    Mit einem sudo vorangestellt, anstelle su - kommt diese Meldung nicht.
    Wenn ich, ein sudo vorangeschickt, dann die Datei ausführe mit:

    Code
    ./vpn.sh

    funktioniert es. Also ein Ausführungsrecht hat die Datei wohl. Der letzt genannte Befehl funktioniert aber nur, wenn ich eine Konsole im Home-Ordner öffne. Wenn ich es so versuche:

    Code
    ./home/keiner/vpn.sh

    funktioniert es nicht. (Mein Benutzername ist immer noch "keiner"!)


    Sicherheitshalber habe ich aber auch noch mal ein

    Code
    chmod +x /home/keiner/vpn.sh

    abgeschickt.



    So, wenn ich jetzt das System neu starte, wobei das Skript


    immer noch unter Autostart (wie in Beitrag 1 beschrieben) steht, funktioniert es nach wie vor nicht.
    Also, das mit dem sudo vorangestellt scheint nicht die Lösung zu sein.


    Da fiele mir als Lösungsweg höchstens noch ein, mich dauerhaft als root anzumelden (habe aber noch nicht ausprobiert, ob das ginge), aber das ist natürlich auch nicht im Sinne des Erfinders!

    Für den Inhalt des Beitrages 123591 haftet ausdrücklich der jeweilige Autor: Neuer1

  • Nimm das sudo aus dem Script.


    Wenn du ein Script als root mit su - (nicht sudo) ausführst, werden alle Befehle in dem Script als root ausgeführt.
    (sudo ist nicht root!!!!!!!)


    Ausserdem solltest du dir angewöhnen, alle im Script aufgerufenen Befehle incl. des kompletten Pfades anzugeben:
    Beispiel:


    Code
    /usr/sbin/iptables -t filter -A OUTPUT -o eth0 -p udp -m multiport --dports 443,53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

    Vermeidet langwieriges suchen nach Fehlern wegen Pfaden.....
    Hilft dir zwar jetzt nicht aber......



    Leider sind mir deine Informations-Schnipsel etwas zu knapp.

    Dann sollte man die Finger von solchen Sachen lassen, die man nicht versteht, oder verstehst du den iptables Befehl?



    Übrigens:
    Angst und Geld hab ich nicht.......

    Für den Inhalt des Beitrages 123593 haftet ausdrücklich der jeweilige Autor: Sauerland

  • Mit sudo, so wie es in dem Skript steht, hatte ich es ja eben schon (erfolglos) versucht.


    Jetzt muss ich leider schon wieder dumm nachfragen, wie du das mit dem Pfad meinst ...
    Also der Pfad zu meinem Skript ist:

    Code
    /home/keiner/vpn.sh


    Das sollte - am Beispiel der ersten Zeile - in meinem Skript dann aber nicht so aussehen:

    Code
    /home/keiner/vpn.sh/iptables -t filter -A OUTPUT -o eth0 -p udp -m multiport --dports 443,53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

    Oder?
    Sondern genauso, wie du es oben geschrieben hattest? (Weil die iptables dann letztlich im Ordner sbin liegen?)

    Für den Inhalt des Beitrages 123594 haftet ausdrücklich der jeweilige Autor: Neuer1

  • Sondern genauso, wie du es oben geschrieben hattest? (Weil die iptables dann letztlich im Ordner sbin liegen?)


    Ja.


    Aber noch einmal:
    Lass die Finger von Sachen, die du definitiv nicht verstehst.


    Mit iptables kann man sich wunderbar selbst aussperren.........

    Für den Inhalt des Beitrages 123595 haftet ausdrücklich der jeweilige Autor: Sauerland

  • Ein wirklich guter Rat: Lösche das Zeuchs sofort und endgültig!


    • Ohne riesigen Linuxrettungsschwimmersein für Hochsee wirst du nolens, volens dein System unsicherer machen.
      Die Defaults der suseFirewall sind von Haus aus sehr restriktiv.
    • Das eigentliche Angriffsziel ist dein DSL - Router, hinter dem du diese Kiste betreibst, was ich dir einfach mal unterstelle.
      Dein Netz fällt, nicht die openSUSE Kiste.
    • Welchen VPN Provider hast du gewählt? Und wie kommst du zu der Annahme, der sei sicher?
      Ich behaupte, genau dort wirst du belauscht, verraten und verkauft.
      Solange du nicht selbst root des VPN Server bist, oder __WIRKLICH__ den root dort kennst und voll vertraust, ist das ein vorsätzliches Sicherheitsloch.
    • Wenn du wirklich in iptables oder nftables rumfummeln willst, musst du erst das hier im Schlaf, betrunken, rückwärts unter Wasser beherrschen.
      iptables nennt sich die netfilter Familie, eine große Sammlung an Tools, die man als Gesamtheit "Firewall" nennt.
      nftables ist der moderne Nachfolger von iptables. Effektiver, schneller, mächtiger und noch mal komplizierter.
      firewalld ist ein Frontend zu nftables, das die Rules dynamisch (auch über Dbus gesteuert) ändern kann.
      Im Hintergrund der meisten Distris läuft heute sowieso schon nftables, was ja auch die Regeln von iptables aus Kompatabilitätsgründen einfach verwenden kann.
    • Um diese Regeln ändern zu können, muss man root sein, oder root- Rechte haben. Also wäre für dein Script ein systemd Service/Unitfile zu schreiben. Und dort gibt es kein "autostart", nur Services. Es macht auch wenig Sinn, das Script als User zu starten. Das Netzwerk würde bis zum Einloggen ja ohne diese Pseudorestriktionen laufen. (Und dass du glaubst, es wäre sicher, weil nur du dich anmeldest, ist schon ein offenes Scheunentor in deiner Kiste). Falls du das doch machen möchtest, es gibt hier sogar Tutorials und jede Menge Threads dazu, wie man für ein Script ein Servicefile schreibt. LASS ES DENNOCH!!!


    Ich kapiere auch überhaupt nicht, was du dir da an Sicherheitsgewinn vorlügst. Für mich ist das ein vorsätzliches SIcherheitsloch mit Datenpollution zu __irgendwelchen__ Providern.

  • Nein, dass mit dem VPN ist soz. ein "must have". Wenn ich das nicht hinkriege, hat das ganze Thema Linux für mich keinen Sinn. Dann muss ich wohl doch irgendwann mit Windows 10 vorlieb nehmen! :(


    Damit so Sachen wie Aussperren oder so erst mal folgenlos sind, spiele ich das ja auch alles in der virtuellen Maschine durch.
    Wenn ich dann irgendwann quasi eine idiotensichere Prozedur entwickelt hätte und ausreichend durchgetestet, dann würde ich dazu übergehen, mir ein "echtes" System aufzubauen.
    Ich muss nur dieses eine Skript hinkriegen ... oder auch eine andere - für mich umsetzbare - Methode, so ein "Killswitch" zu realisieren.


    Es geht dabei nur darum ein IP-Leak auszuschließen. Es ist auch überhaupt nicht schlimm, wenn dieser IP-Leck-Schutz erst kurz nach dem bei mir wohlgemerkt automatischen Login greift. Es sollen nur ein paar Programme, die ich nachher manuell starte, abgesichert sein. Also, ob jetzt z.B. openSUSE selbst mit meiner echten IP auf den Update-Server zugreift oder nicht, spielt dabei keine Rolle.
    Mein Anbieter ist AirVPN.


    Alternativ bietet AirVPN auch so ein Einwahl-Tool namens "Eddie" an, welches auch über eine Killswitch-Funktion verfügt. Das Tool macht eigentlich auch einen guten Eindruck und funktioniert auch - bedingt: Wenn man es in openSUSE Leap 15 schließen will, friert es mehr oder weniger ein.
    Aber selbst wenn es 100% funktionieren würde (tut es unter anderen Linuxversionen) würde ich mich ungern allein auf so ein Tool verlassen wollen. Weil man ja sieht, dass da schnell mal was nicht mehr rund laufen kann, oder es könnte ja auch sein, dass es irgendwann AirVPN mal nicht mehr gibt oder das Tool einfach nicht mehr weiterentwickelt wird ...
    Außerdem weiß man ja auch nicht so genau, was das Tool macht, also lieber wär's mir schon, ich hätte eine selbst entwickelte (abgeschriebene!) Methode, die dann auf jeden Fall funktioniert.


    Andererseits will und kann ich für diese eine Sache auch nicht erst den - wie du es schön genannt hast - Linuxrettungsschwimmerschein für Hochsee machen.
    Ich mache mich aber auch noch mal auf die Suche, herauszufinden, was es mit dieser systemd-Service-Sache auf sich hat. Das müsste man dann halt auch unkompliziert kurzfristig abwählen können. Ich weiß nicht, ob in dem Fall dann ein

    Code
    firewall-cmd --relaod

    reichen würde.
    Ich sehe aber meinen Traum, mich von Microsoft unabhängig zu machen, in einer Seifenblase davonschweben ...


    Und man kann diese Regeln nicht zufällig "einfach" in Rich-Rules ummünzen, die man dann in eine neu definierte Zone reinschreibt?
    So in der Art:

    Code
    firewall-cmd --permanent --zone=killswitch --add-rich-rule ...

    Für den Inhalt des Beitrages 123597 haftet ausdrücklich der jeweilige Autor: Neuer1