Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 16. Nov 2018 14:42

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 28. Okt 2005 18:56 
Hallo zusammen!!

Hoffe ihr könnt mir helfen, soooo vielleicht beschreib ich erstmal was ich im Allgemeinen machen will.
Ich habe einen kleinen Serververbund und soll zentral über einen Hauptserver, auf den ich über einen WebBrowser drauf kann, die anderen Server monitoren und verwalten
(So ähnlich wie Webmin, aber das Script läuft halt zentral auf einem Server)

Zum Monitoren gehört Serverdienste abfragen. Hab mir erstmal gedacht dass ein pidof <dienstname> reichen sollte.
Das Verwalten beinhaltet im wesentlichen das starten und stoppen dieser Dienste.
Das ganze wird so realisiert (zumindest sollte es so gemacht werden)...auf meinem zentralen Server hab ich meinen Webserver und meine php-scripte. (Hab mich für php entschieden da ich dass wenigstens ein bißchen kann)
Meine Abfragen ob ein Dienst auf einem Server läuft will ich über SSL realisieren, also ein exec(SSL benutzer@ip pidof <dienst>)

Hab damit ich kein Passwort für den Benutzer eingeben muss public-/private key verfahren benutzt.

So und jetzt komm ich auch schon zu meinem Problem.
Und zwar ist das eine bißchen verzwickte Angelegenheit. Apache läuft unter dem Benutzer "apache" und für diesen Benutzer kann ich keinen rsa-key erstellen da ich mich ja nicht als User "apache" einloggen kann.

Bin dass ganze mal umgangen in dem ich beim Apache den User auf "peter" gestellt habe und auf einem Testserver mit dem User "peter" die keys ausgetauscht habe.
und siehe da es hat funktioniert. Ich konnte ohne Passworteingabe über den Webserver die Dienste abfragen. Abeeerrr...der User peter hat aber nun bei meinen Scripten Probleme bereitet da ich z.B. in meinen Scripten Sessions verwende, jedoch der Benutzer Peter keine Rechte hat welche zu starten.

Hab nun überlegt den Apache wieder auf standard apache Benutzer zu stellen und evtl.
erstmal sowas wie einen Benutzerwechsel in mein Script einzufügen. Also d.h. apache schaltet über einen befehl in dem Script auf peter und führt die SSH-Befehle als peter aus...

Weiß aber net wie ich dass am besten realisieren kann..bzw. wie der Befehl zum Benutzerwechsel ohne seperate Passwordabfrage aussieht.
Ich bräuchte sowas wie exec(login -u peter:password) oder so...
Die Server basieren alle auf RedHat AS 3.0.

Ich glaube jetzt hab ich echt genug geschrieben. Hoffe es war wenigstens verständlich.
So ich danke jetzt schonmal jedem der sich da ein bißchen Gedanken macht um mir zu helfen.

@moderator: Entschuldige wenn ich im falschen Thema gepostet haben sollte. Bin mir aber nicht ganz sicher ob es eher zur Programmierung oder Netzwerk gehört...Einfach verschieben fall ich falsch sein sollte. Danke!


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 28. Okt 2005 19:51 
Offline
prolinux-forum-admin
Benutzeravatar

Registriert: 05. Mai 2004 7:35
Beiträge: 1238
Ich denke, du solltest das ganze über sudo Regeln. Einfach mit "visudo" das sudoers-file ändern und einen Eintrag dieser Art tätigen:
Code:
apache ALL = NOPASSWD&#58; &#91;befehl&#93; &#91;username&#93;
Danach kannst du das ganze mit
Code:
exec&#40;sudo &#91;befehl&#93;&#41;
ausführen.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 29. Okt 2005 11:02 
Danke für die schnelle Antwort!!

An die Lösung mit einem sudo für den apache hab ich auch schon gedacht. Hab aber mir aber gedacht dass die Sicherheit des Systems nicht mehr gegeben wäre.

Bei der sudo-Variante würde ja auch die Authentifizierung des Rechners über den rsa-key wegfallen. D.h. ich könnte mich von jedem Rechner aus auf die Server über Benutzer apache und den sudo Befehl connecten...

Es sollte möglichst so sein , dass nur vom Webserver aus die Befehle abgesetzt werden können.

btw: Ist der sudo-User durch die Regelerstellung für ihn wirklich so eingeschränkt oder hat er die Möglichkeit dass ganze zu umgehen.

Danke nochmal für die Mühe!!

Gruß
Martin


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 30. Okt 2005 13:51 
Offline
prolinux-forum-admin
Benutzeravatar

Registriert: 05. Mai 2004 7:35
Beiträge: 1238
Auf Rechner W (Webserver) läuft der Apache und du willst per ssh einen Befehl auf einem anderen Rechner C ausführen, wofür du aber die Rechte von "Peter" (auf C und W) brauchst. Also:

Apache bekommt via sudo die Erlaubnis als "Peter" auf W den Befehl auszuführen (ssh -l Peter [IP von C] [Befehl]) auszuführen und kann dann dessen Ausgabe bereitstellen. Wo ist jetzt die Unsicherheit? Du legst mit sudo genau einen Befehl fest, der für apache als Peter ausgeführt werden kann und die verschlüsselte Verbindung zwischen W und C besteht nach wie vor.

Oder missverstehe ich dich?


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 30. Okt 2005 17:12 
Ah okey ich glaube ich hab dich beim ersten mal missverstanden...

Also du meinst dass Benutzer "apache" sudo-Rechte bekommt um lokal als Benutzer "peter" einen ssh-Befehl auf Rechner C absetzen zu können...auf Beiden Rechnern muss Benutzer "peter" angelegt sein!?

Hoffe das stimmt so...danke für den Rat...werde es morgen gleich mal ausprobieren.

Gruß
Martin


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 30. Okt 2005 19:07 
Offline
Benutzeravatar

Registriert: 19. Mai 2000 19:36
Beiträge: 529
Ich lasse bei sowas semaphoren files erzeugen, die entweder von root's crontab oder root's daemonisiertem (Endlosschleife mit while true) in einer screen session laufendem script (wenn die Reaktionsszeit kürzer als die von crontab sein soll) ausgewertet werden.

Damit hat sich das Rechteproblem erledigt und die Funktionalität ist gewährleistet. Zudem ist die Sicherheit nicht belastet, da keinem Prozess/User zusätzliche Rechte eingeräumt werden müssen.

_________________
Es gibt keine dumme Fragen!

Killerhippy


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 31. Okt 2005 13:09 
Hallo ich bins nochmal...

und zwar bin ich gerade dabei dass mit den sudo-Rechten umzusetzen, jedoch hab ich dabei ein bißchen Probleme.

Also hab unter root ganz normal visudo gestartet und im feld:
Code:
#User privileg specificatons

apache ALL=NOPASSWD&#58;/usr/bin/ssh peter
eingefügt. Hab mein php-Script ausgeführt und wollte mir dann über den Befehl:
Code:
echo exec&#40;"sudo -u peter /usr/bin/ssh 192.168.0.1 /etc/init.d/httpd status"&#41;;
den Status des http-Dienstes auf dem Server mit der IP:192.168.0.1 anzeigen lassen. Dies jedoch ohne Erfolg.

Habe testweise auch einen neuen Benutzer angelegt mit dem ich mich lokal anmelden kann...und hab dann in visudo folgendes eingefügt:
Code:
#User privileg specificatons

apache ALL=NOPASSWD&#58;/usr/bin/ssh peter
benutzer ALL=NOPASSWD&#58;/usr/bin/ssh peter
Wenn ich nun über die Konsole mit dem Benutzer "benutzer" den Befehl
Code:
sudo -u peter /usr/bin/ssh 192.168.0.1 /etc/init.d/httpd status
gibt er mir folgendes zurück:
"Sorry user benutzer is not allowed to execute '/usr/bin/ssh 192.168.0.2 /etc/init.d/http status' as peter on localhost.localdomain"

Hat jemand ne Ahnung woran das liegen könnte?!


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 01. Nov 2005 2:23 
Offline
Benutzeravatar

Registriert: 19. Mai 2000 19:36
Beiträge: 529
Laut manpage:
Code:
       Runas_Spec

       A Runas_Spec is simply a Runas_List &#40;as defined above&#41; enclosed in a
       set of parentheses.  If you do not specify a Runas_Spec in the user
       specification, a default Runas_Spec of root will be used.  A Runas_Spec
       sets the default for commands that follow it.  What this means is that
       for the entry&#58;

        dgb    boulder = &#40;operator&#41; /bin/ls, /bin/kill, /usr/bin/lprm

       The user dgb may run /bin/ls, /bin/kill, and /usr/bin/lprm -- but only
       as operator.  E.g.,

        $ sudo -u operator /bin/ls.
Du muesstes also deine Zeile korrigieren:
Code:
apache ALL = &#40;peter&#41; /usr/bin/ssh
Das NOPASSWD ist unnötig, da ssh von jedem user ohne Restriktionen ausgeführt werden kann.

_________________
Es gibt keine dumme Fragen!

Killerhippy


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 01. Nov 2005 20:42 
Danke für die hilfreichen Antworten!!

Das NOPASSWD musste doch rein. Vorher hat er immernoch eine Passwortabfrage getätigt.
Der Eintrag sieht jetzt folgendermaßen aus:

Code:
apache ALL = &#40;peter&#41; NOPASSWD&#58;/usr/bin/ssh
und so funktioniert es auch prima.

Danke nochmal an alle die mitgeholfen haben!!


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de