Extra Nutzer für SSH

Alles rund um sicherheitsrelevante Fragen und Probleme.
Richard
Beiträge: 639
Registriert: 11.10.2012 14:18:37
Lizenz eigener Beiträge: GNU General Public License

Re: Extra Nutzer für SSH

Beitrag von Richard » 09.01.2019 17:09:27

Ihc stell mir da gerade die Frage, wie das Entwickler machen bei denen ein Prozess unter einem eigenen Nutzer läuft. Hab da z. B. Transmission (bzw. seinen Daemon) in Erinnerung. Das hatte ich auf dem Pi mit einem Webinterface eingerichtet und der Daemon läuft als Benutzer debian-transmission (oder so ähnlich). Wenn der Benutzer vieles darf ist das irgendwie sinnlos. Demnach müsste der auch irgendwie beschränkt ( :D ) sein, würde ich vermuten.

JTH
Moderator
Beiträge: 3007
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Extra Nutzer für SSH

Beitrag von JTH » 09.01.2019 17:32:36

Die Haupteinschränkung ist dabei dann (denke ich) einfach nur, dass ein Daemon gerade nicht als root-Benutzer laufen muss – solange der Daemon dessen Zugriffsmöglichkeiten nicht braucht. Ansonsten hat ein System-User wie debian-transmission dieselben Rechte und Zugriff auf /usr/bin etc. wie jeder „normale“ menschliche Benutzer. Im Einzelnen kanns da sicher noch mehr Einschränkungen durch Gruppenzugehörigkeit etc. geben, aber der Hauptpunkt ist das Nicht-als-root-Laufen.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: Extra Nutzer für SSH

Beitrag von catdog2 » 09.01.2019 17:46:56

Richard hat geschrieben: ↑ zum Beitrag ↑
09.01.2019 08:08:27
Was sind das für Apps? Welche die einfach eine SSH-Verbindung herstellen? Das suche ich nicht. Es soll automatisiert per Tasker ein Befehl per SSH geschickt werden. Da müssen Logindaten oder Schlüsselpaar schon drin stehen.
connectbot ist nur ein ssh client, weiss nicht ob man den per tasker bedienen kann, termux kann bissl mehr:
https://termux.com/ hat geschrieben:Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. A minimal base system is installed automatically - additional packages are available using the APT package manager.
Da gibts auch ein Plugin dafür mit dem man ein eigenes Skript per tasker triggern kann (welches ssh aufrufen könnte), also evtl was für dich: https://f-droid.org/de/packages/com.termux.tasker/
Unix is user-friendly; it's just picky about who its friends are.

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Extra Nutzer für SSH

Beitrag von cronoik » 09.01.2019 17:54:12

Richard hat geschrieben: ↑ zum Beitrag ↑
09.01.2019 17:09:27
Ihc stell mir da gerade die Frage, wie das Entwickler machen bei denen ein Prozess unter einem eigenen Nutzer läuft.
Wenn es ein daemon ist, dann wird dieser einmalig auf dem Server durch einen Nutzer der sich per ssh anmelden darf gestartet. Der Nutzer unter welchen der Daemon laeuft, darf sich nicht per ssh anmelden und damit brauch man sich auch nicht weiter darum kuemmern was der darf.
Wenn es wie in deinem Fall um ein Anstossen von einem Skript auf dem Server geht, dann benutzt man Schluessel. Ob/Warum das dein Programm (nicht) kann, weis ich nicht. catdog2 hat dir allerdings eine Moeglichkeit genannt mit der es eventuell gehen koennte. Eine weitere Moeglichkeit waere die LoginShell in /etc/passwd auf dein Skript zu setzen [1]. Wie sicher das allerdings ist, kann ich dir nicht sagen.
Richard hat geschrieben: ↑ zum Beitrag ↑
09.01.2019 17:09:27
Wenn der Benutzer vieles darf ist das irgendwie sinnlos. Demnach müsste der auch irgendwie beschränkt ( :D ) sein, würde ich vermuten.
In erster Linie darf er nicht root werden und dann ist kuemmert man sich auch in zweiter Linie darum dass den keiner uebernehmen kann. Du verzichtest doch auch nicht auf ein ordentliches Tuerschloss nur weil du dein Hab und Gut mit einem ultra tollen Kleber festgeklebt hast.

[1] https://stackoverflow.com/a/12993743
Hilf mit unser Wiki zu verbessern!

mat6937
Beiträge: 2925
Registriert: 09.12.2014 10:44:00

Re: Extra Nutzer für SSH

Beitrag von mat6937 » 09.01.2019 18:56:28

Richard hat geschrieben: ↑ zum Beitrag ↑
09.01.2019 17:09:27
IHab da z. B. Transmission (bzw. seinen Daemon) in Erinnerung. Das hatte ich auf dem Pi mit einem Webinterface eingerichtet und der Daemon läuft als Benutzer debian-transmission (oder so ähnlich).
Hat der Benutzer "debian-transmission" den Daemon auch starten können bzw. dürfen? ... oder musste dieser durch root gestartet werden und wechselte nach dem Starten, auf den Benutzer "debian-transmission", für die Dauer der Laufzeit?

Richard
Beiträge: 639
Registriert: 11.10.2012 14:18:37
Lizenz eigener Beiträge: GNU General Public License

Re: Extra Nutzer für SSH

Beitrag von Richard » 09.01.2019 19:01:49

mat6937 hat geschrieben: ↑ zum Beitrag ↑
09.01.2019 18:56:28
Hat der Benutzer "debian-transmission" den Daemon auch starten können bzw. dürfen? ... oder musste dieser durch root gestartet werden und wechselte nach dem Starten, auf den Benutzer "debian-transmission", für die Dauer der Laufzeit?
Ich starte den Daemon zumindest nicht durch root. Daher denke ich er darf das. Das ist mir auch nur aufgefallen als es darum ging den Autostart dafür einzurichten. Sonst hätte ich das gar nicht bemerkt.

ReturnToSender
Beiträge: 123
Registriert: 23.10.2018 18:06:09

Re: Extra Nutzer für SSH

Beitrag von ReturnToSender » 09.01.2019 19:35:12

Richard hat geschrieben: ↑ zum Beitrag ↑
09.01.2019 17:09:27
Ihc stell mir da gerade die Frage, wie das Entwickler machen bei denen ein Prozess unter einem eigenen Nutzer läuft.
Das ist der Unterschied... denn ein solcher Prozess wurde durch einen angemeldeten User gestartet oder zum Starten veranlasst. Wenn ich das richtig verstanden habe, soll bei diesem aktuellen Problem ein via SSH auf einem Server angemeldeter User ein bestimmtes Programm starten dürfen, aber er darf nicht die Rechte eines angemeldeten Users haben. Tja, das ist ein imho ein Widerspruch an sich... das eine ohne das andere geht m.M.n. nicht.

Ich würde deshalb vielleicht einen völlig anderen Weg verfolgen, und zwar das Script starten zu lassen, ohne dass sich überhaupt ein/der User dafür anmelden muss und ohne dass es dafür neue Sicherheitslücken durch vielleicht unzureichend geprüfte Autorisierung gibt. Und zwar, in dem der Start des Scripts via sowieso etablierter Netzwerk-Protokolle getriggert wird und es dadurch startet. Dazu fallen mir zwei funktionierende Lösungen ein.

Die erste ist hierfür den telegram-daemon laufen zu lassen, der mit übertragener Nachricht und seinem Eventhandler auf die Nachricht reagiert. Damit kann man von jedem Android, IPhone, Tablet, wasauchimmer, einfach eine Nachricht senden. Der Server interpretiert Absender und Nachricht und reagiert entsprechend darauf.

Ein zweite Möglichkeit wäre auf dem Server netcat im LocalNet lauschen zu lassen und dem Server eine Nachricht via TCP zu senden. Darüber könnte dann auch der Start des Scripts getriggert werden. Um das auch via Internet zu ermöglichen, würde ich dazu einen OpenVPN-Tunnel öffnen, um die notwendige Autorisierungssicherheit zu gewährleisten. Dazu brauchts dann nur ein Minitool auf dem Android-Gerät, welches via TCP-Socket die passende Nachricht senden kann.

Benutzeravatar
MSfree
Beiträge: 10657
Registriert: 25.09.2007 19:59:30

Re: Extra Nutzer für SSH

Beitrag von MSfree » 10.01.2019 08:27:20

Richard hat geschrieben: ↑ zum Beitrag ↑
09.01.2019 19:01:49
Ich starte den Daemon zumindest nicht durch root...
Wenn man sich mal die Dateiberechtigungen einer normalen Linuxinstallation ansieht, stellt man fest, daß jeder Nutzer auf fast alle Dateien Leseberechtigungen hat und fast alle Executables ausführen darf, nur root darf auch überall schreiben. So kann ein normaler Benutzer z.B. auch fdisk ausführen, Verändereungen an den Partitionen darf er jedoch nocht vornehmen, weil er auf das Disk-Device (z.B. /dev/sda) keine Schreibberechtigung hat.

Daraus ergibt sich, daß auch ein Extranutzer so gut wie alles lesen und ausführen darf. Die Einschränkung auf nur ganz bestimmte Dateien ist so erstmal nicht vorgesehen und bedeutet wesentlich Umbauten an einer Standardinstallation.

Der Grund, einzelne Daemons nicht als root zu starten liegt also hauptsächlich darin, nicht alle Dateien für den Daemon schreibbar zu präsentieren, sonst könnte er z.B. auch einfach das root-Paßwort in /etc/shadow überschreiben, um sich im zweiten Schritt root-Rechte zu erschleichen, sollte er böses im Schilde führen.

Richard
Beiträge: 639
Registriert: 11.10.2012 14:18:37
Lizenz eigener Beiträge: GNU General Public License

Re: Extra Nutzer für SSH

Beitrag von Richard » 10.01.2019 09:03:00

Einen telegram-cli-daemon hab ich auf einem anderen Pi schon laufen. Da sende ich aber ausschließlich manuelle Sachen wie DL-Links ohne vorher eine SSH-Verbindung aufbauen zu müssen. Das wäre eine Möglichkeit an die ich bisher nicht gedacht hab. Muss mal gucken ob Tasker automatisierte Nachrichten versenden kann.

netcat kenn ich nicht, müsste ich mir mal ansehen. Hauptfrage ist hier immer ob das automatisiert über Android angestoßen werden kann.

Die weiter oben genannte SSH-App guck ich mir auch mal an.

ReturnToSender
Beiträge: 123
Registriert: 23.10.2018 18:06:09

Re: Extra Nutzer für SSH

Beitrag von ReturnToSender » 10.01.2019 11:31:07

Richard hat geschrieben: ↑ zum Beitrag ↑
10.01.2019 09:03:00
netcat kenn ich nicht, müsste ich mir mal ansehen. Hauptfrage ist hier immer ob das automatisiert über Android angestoßen werden kann.
Du kannst das relativ einfach auf Deinem PC testen, um erst mal einen Eindruck zu bekommen, was es überhaupt macht. Um dann bei "Tauglichkeit" das Thema zu vertiefen und vielleicht richtig auszuarbeiten. Öffne zwei Terminalfenster.
Im ersten startest Du:

Code: Alles auswählen

nc -l -p 55555
Im zweiten dann:

Code: Alles auswählen

echo "Hallo Welt" > /dev/tcp/localhost/55555
oder alternativ auch über netcat

Code: Alles auswählen

echo -n "hallo" | nc -w1 localhost 55555
Der Port muss natürlich nicht 55555 sein, der kann frei gewählt werden. Und wenn es kein privilegierter Port sein muss, kann es einfach jeder freie Port von 1025-bis 65535 sein. Innerhalb des LANs kann statt "localhost" natürlich auch eine IP eines beliebigen Hosts vervendet werden, wenn dort eben der netcat lauscht.
Im Internet gibt es viele Mini-TCP-Clients in C, die total simpel eine Nachricht via TCP-Paket übers Netz senden können, kleine Sourcen, die man eigentlich auch auf dem Android kompilieren können sollte. Allerding halte ich es bei dieser Lösung für wichtig, wenn das auch übers Internet erfolgen soll, keine direkte Port-Weiterleitung im DSL-Router einzurichten, sondern das besser über einen VPN-Tunnel abzusichern. Innerhalb des LANs ist das jedoch nicht notwendig. Allerdings muss ich zugeben, das ist ein anspruchsvolles Ziel, welches doch einiges an Sachkenntnis erfordert. Der telegram-Weg ist definitiv leichter zu gehen.

mat6937
Beiträge: 2925
Registriert: 09.12.2014 10:44:00

Re: Extra Nutzer für SSH

Beitrag von mat6937 » 10.01.2019 13:50:27

Richard hat geschrieben: ↑ zum Beitrag ↑
10.01.2019 09:03:00
Hauptfrage ist hier immer ob das automatisiert über Android angestoßen werden kann.
Hier das Beispiel mit socat (auf dem PI):

Code: Alles auswählen

socat -v -u -T 1 TCP4-LISTEN:<lauschender-Port>,reuseaddr,fork,tcpwrap,range=<source-IP-Adresse>/32 EXEC:</Pfad/zum/Script>
Auf dem Client reicht ein:

Code: Alles auswählen

nc -v -n -z -w 1 -T <tos> -p <source-Port-Client> <IP-Adresse-PI> <lauschender-Port-socat>
(oder gleichwertig) um das Script auszuführen.
Wenn man nicht direkt über das Internet "scannen" will, kann man auch hier z. B. VPN oder stunnel4 oder gleichwertig benutzen. Wenn man die source-IP-Adresse nicht kennt (z. B. wenn es direkt über das Internet geht), soll man tcpwrap bzw. range weglassen. Zusätzliche Absicherung des socat ist mit iptables bzw. sysctl möglich.

ReturnToSender
Beiträge: 123
Registriert: 23.10.2018 18:06:09

Re: Extra Nutzer für SSH

Beitrag von ReturnToSender » 10.01.2019 14:08:35

mat6937 hat geschrieben: ↑ zum Beitrag ↑
10.01.2019 13:50:27
Hier das Beispiel mit socat (auf dem PI)
Danke... habs sofort gebunkert und ordentlich verpackt eingelagert... :THX:

Richard
Beiträge: 639
Registriert: 11.10.2012 14:18:37
Lizenz eigener Beiträge: GNU General Public License

Re: Extra Nutzer für SSH

Beitrag von Richard » 10.01.2019 21:09:01

Ich hab mir mal termux angesehen, sehr interessant, auch wenn es auf meinem Zweit-Handy (das hierfür genutzt werden soll) Probleme macht. Da kommt eine Fehlermeldung wenn ich den Zugrif auf die SD-Karte einrichten will. Ich kann auch nichts nach ~ (Home-Verzeichnis der App, nicht des Smartphones) kopieren, aber ich kann dort neue (leere) Dateien anlegen und den Text manuell reinkopieren. Damit geht der SSH-Zugriff mit Schlüsseldatei. Unterschied zu anderen Terminallösungen für Android scheint zu sein, dass Termux eine Art "eigenes" Homeverzeichnis nutzt und auch dort die Schlüsseldateien hinterlegt. Andere Apps (inkl. Code ausführen direkt in Tasker) wollen scheinbar die Dateien irgendwo in das Android-Dateisystem hinterlegen, was auf Fehler läuft.

Das Tasker-Plugin ist unter F-Droid sogar kostenlos, anders als im Playstore und anders als das Tasker-Plugin für JuiceSSH - die App die ich normal für SSH nutze.

Antworten