![]() |
![]() |
|
|
|||||||
| Linux, UNIX, Open Source Rat & Tat bei Problemen und Fragen rund um GNU/Linux, BSD und sonstige UNIXe |
![]() |
|
|
Themen-Optionen | Ansicht |
|
|
#1 |
|
Inventar
![]() Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343
|
bin bzgl. linux noch nicht wirklich versiert und bin beim arbeiten mit ubuntu auf ein paar fragen bzgl. dem start von diensten beim OS-start gestoßen.
es ist ja bekanntlich keine gute idee, bestimmte services wie z.b. einen webserver als root laufen zu lassen, weil im falle eines erfolgreichen exploits der angreifer dann entsprechende rechte hat. nun ist es aber scheinbar so, daß alle dienste, die per runlevel-script gestartet werden, unter root laufen. dies gilt dann wohl auch für einen webserver, oder? wie kann ich das unterbinden, d.h. dafür sorgen, daß der webserver nicht als root gestartet wird? kann ich das dann nicht über runlevels machen oder muß ich da dann das runlevelscript ggf. umschreiben? welche möglichkeiten existieren generell, dienste/scripts beim systemstart zu starten, abgesehen von runlevels und (in bestimmten fällen) tcpwrappern, die ja über inetd gestartet werden (der wiederum im runlevel gestartet wird)?
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret." Then he pulled the trigger of his BFG9000. |
|
|
|
|
|
#2 |
|
Super-Moderator
![]() |
nö, die dienste laufen schon mit dem richtigen user. du kannst es ja jederzeit mit ps/top überprüfen.
|
|
|
|
|
|
#3 |
|
Master
![]() Registriert seit: 10.10.2002
Beiträge: 711
|
Stimmt, alle Dienste die über initscripte gestartet werden laufen erstmal prinzipell als root. Das ist aber auch gut so, weil für diese Dinge meistens auch root Privilegien erforderlich sind. So kannst du zb. nur als root Services auf Ports <1024 binden. Alle Services, die nicht als root weiterlaufen sollen droppen im Regelfall nach dem Start automatisch ihre Priviliegien und laufen unter einem unprivilegierten User weiter. Welcher User das ist kann man in der Konfiguration der jeweiligen Applikationen konfigurieren.
Wenn eine Applikation diese Möglichkeit nicht hat (kommt so gut wie nie vor), könnte man sie im initscript mit su username -c applikation als anderer User starten. |
|
|
|
|
|
#4 |
|
Inventar
![]() Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343
|
ok, das leuchtet mir schon ein.
hab jetzt probehalber einfach mal einen apache 2 installiert. ps -aux | grep apache gibt mir folgendes aus: Code:
root 7708 0.0 0.5 7296 2860 ? Ss 13:40 0:00 /usr/sbin/apache2 -k start -DSSL www-data 7711 0.0 0.5 7088 2628 ? S 13:40 0:00 /usr/sbin/apache2 -k start -DSSL www-data 7712 0.0 0.6 228900 3452 ? Sl 13:40 0:00 /usr/sbin/apache2 -k start -DSSL www-data 7714 0.0 0.6 228900 3328 ? Sl 13:40 0:00 /usr/sbin/apache2 -k start -DSSL root 8092 0.0 0.1 3228 584 pts/1 R+ 14:02 0:00 grep apache
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret." Then he pulled the trigger of his BFG9000. |
|
|
|
|
|
#5 |
|
Master
![]() Registriert seit: 10.10.2002
Beiträge: 711
|
Mach nicht ps -aux sondern ps -faux. Dann siehst du, daß nur der Apache Master Prozess als root läuft. Das ist wie oben schon mal geschrieben auch notwendig um Port 80 nutzen zu können.
Die Child Prozesse, die die eigentliche Arbeit machen, laufen unter dem User den du in der Apache Konfiguration mit User definiert hast (in deinem Fall User www-data). Siehe: http://httpd.apache.org/docs/2.0/de/invoking.html |
|
|
|
|
|
#6 |
|
Inventar
![]() Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343
|
alles klar, danke.
![]()
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret." Then he pulled the trigger of his BFG9000. |
|
|
|
![]() |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|