Apache gira come root. E' normale??

Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,387
    configurazione

    Predefinito Apache gira come root. E' normale??

    Stavo provando un client per le connessioni da remoto che richiede il server Apache2 per funzionare. La distribuzione è Ubuntu 6.10

    Nel monitor di sistema ho visto che apache ha 4 task avviati, tutti più o meno delle stesse dimensioni, 3 dei quali dall'utente "apache" (utente non privilegiato che ho creato io) e un'altro dall'utente "root".

    E' normale una cosa del genere?? Non è più rischioso avere un server del genere che gira da root??

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  2. #2
    clown zotter L'avatar di troietto
    Registrato
    Oct 2004
    Località
    Voghera (PV)
    Messaggi
    84

    Predefinito

    Originariamente inviato da frakka
    Stavo provando un client per le connessioni da remoto che richiede il server Apache2 per funzionare. La distribuzione è Ubuntu 6.10

    Nel monitor di sistema ho visto che apache ha 4 task avviati, tutti più o meno delle stesse dimensioni, 3 dei quali dall'utente "apache" (utente non privilegiato che ho creato io) e un'altro dall'utente "root".

    E' normale una cosa del genere?? Non è più rischioso avere un server del genere che gira da root??
    Normalissimo, nel senso che sotto linux solo root può aprire porte privilegiate (< 1024) se vuoi apache sulla 80 devi aprire una porta privilegiata. Il trucco è: aprire la porta coi privilegi di root e forkare altri processi che usano la porta già aperta ma droppando i privilegi di super utente.
    Nel caso apache il risultato è:
    1) 1 processo genitore avviato da superuser che apre la porta
    2) i processi "worker" che fanno il vero e proprio lavoro, avviati con l'utente non privilegiato.

    Comunque io lavoro con parecchi server apache e da che mondo è mondo è così e non ho mai avuto problemi anche quando mi sono beccato un worm a suo tempo;
    Parecchi servizi unix si comportano così

    Spero di esser stato abbastanza chiaro, ultimamente ho i nodi al cervello :crazy

  3. #3
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,387
    configurazione

    Predefinito

    Se mi spiegavi in italiano invece che in "informatichese" era forse più chiaro ma rileggendo un paio di volte credo di aver capito. Mi basta sapere che così va bene. Grazie della consulenza.

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  4. #4
    clown zotter L'avatar di troietto
    Registrato
    Oct 2004
    Località
    Voghera (PV)
    Messaggi
    84

    Predefinito

    Originariamente inviato da frakka
    Se mi spiegavi in italiano invece che in "informatichese" era forse più chiaro ma rileggendo un paio di volte credo di aver capito. Mi basta sapere che così va bene. Grazie della consulenza.
    Sorry... Se mi dici cosa non ti è chiaro traduco.
    Ciao!

  5. #5
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,387
    configurazione

    Predefinito

    Non preoccuperti, è chiaro. Stavo scherzando.

    Però non mi è chiarissimo come funziona il "forkare".
    Praticamente ho un processo genitore avviato come root. Poi in qualche modo viene avviato un processo dipendente da questo ma di un altro utente, meno privilegiato, che è quello che poi fà effettivamente il lavoro di server.
    Come si fà a "droppare" i privilegi del superutente? Immagino che la risposta sia "avviando i processi worker con un utente non privilegiato". Ma non mi è chiaro come ho fatto a farlo...

    Quello che ancora mi chiedo:
    1) Come mai me ne trovo 4? 1 di root (per aprire la porta 80, ok) e ben 3 dell'utente apache? Non ne basta solo 1?

    2) Il worm te lo sei beccato su Linux o su Win? Come te ne sei accorto?

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  6. #6
    Moderatore L'avatar di betaxp86
    Registrato
    May 2003
    Località
    Genova, Italy
    Età
    37
    Messaggi
    10,196

    Predefinito

    Per togliere i privilegi ad un utente puoi usare setgid setuid (che modificano il gruppo e l'utente corrente).
    La fork è una funzione che crea una replica del processo originale ed eventualmente ne sostituisce l'immagine in memoria con una execv (in una delle sue varianti).
    I processi figli restano in ascolto sul socket aperto dal padre e gestiscono autonomamente le accept. Apache ad ogni connessione probabilmente genera un nuovo thread che gestisce separatamente la nuova connessione. (genera thread perchè fino a 1000 volte più veloci da creare rispetto ai processi).
    Se vuoi ti posto le dispense di Sistemi Operativi 2 dell'uni
    betaxp86


  7. #7
    clown zotter L'avatar di troietto
    Registrato
    Oct 2004
    Località
    Voghera (PV)
    Messaggi
    84

    Predefinito

    Originariamente inviato da frakka
    Non preoccuperti, è chiaro. Stavo scherzando.

    Però non mi è chiarissimo come funziona il "forkare".
    Praticamente ho un processo genitore avviato come root. Poi in qualche modo viene avviato un processo dipendente da questo ma di un altro utente, meno privilegiato, che è quello che poi fà effettivamente il lavoro di server.
    Come si fà a "droppare" i privilegi del superutente? Immagino che la risposta sia "avviando i processi worker con un utente non privilegiato". Ma non mi è chiaro come ho fatto a farlo...

    Quello che ancora mi chiedo:
    1) Come mai me ne trovo 4? 1 di root (per aprire la porta 80, ok) e ben 3 dell'utente apache? Non ne basta solo 1?

    2) Il worm te lo sei beccato su Linux o su Win? Come te ne sei accorto?
    Forkare: E' un italianizzazione del "to fork" inglese: un processo padre genera un processo figlio: quello è il "forking". non c'entra col rilasciare i privilegi di superutente. qualsiasi sistema operativo avvia un primo processo che a sua volta genera tutti gli altri processi del sistema (= forka tali processi)

    Processi non privilegiati: il codice di apache, che tu avviii giustamente da root, esegue delle chiamate di sistema (è il sistema operativo che fornisce tali funzioni) per generare un processo figlio ma senza privilegi: root lo può fare perchè può avviare processi di chiunque (pensa al comando "su - <utente>" lanciato da root). Tu di fatto non hai fatto nulla: l'utente non privilegiato col quale avviii i processi worker è scritto nel file di conf di apache httpd.conf o apache.conf a seconda della distro. Le chiamate di sistema messe a disposizione del sistema operativo fanno il resto.

    1) perchè te ne trovi 4: perchè sempre nel file di config di apache puoi specificare quanti processi far partire all'inizio. Tu dirai: perchè non 1 solo? Risp: per un uso personale hai ragione, ma se metti su un server che deve rispondere prontamente, è bene avere dei processi già pronti ma che stanno lì a far niente e che all'occorrenza lavorano, piuttosto che generarli ogni volta, perchè questo introduce un certo overhead nel sistema e quindi aumenta il tempo di risposta. Se il tuo apache è poco usato e/o hai poca memoria, meglio tenere pochi (1 va benissimo) processi e se serve apache provvederà a generarne altri. Io a casa faccio così!

    2)su linux: Era una vulnerabilità del modulo ssl grazie alla quale ti compilavano sulla machcina un programmino che attaccava altri apache vulnerabili. Me ne sono accorto perchè faceva un traffico dell'accidenti e mi intasava tutta la banda!

    Per dettagli sulla config di apache guardati il buon http://www.apache.org
    Qui trovi tutto sulle direttive da mettere nel file di configurazione. Ci sono anche degli esempi e delle configurazioni minime con cui provare.
    SALVATI SEMPRE i file che hai già così se fai cavolate puoi sempre tornare indietro.
    Uomo avvisato...

    Dai un occhiata ai file e al sito e se hai bisogno di chiarimenti su certe cose fammi un fischio

  8. #8
    clown zotter L'avatar di troietto
    Registrato
    Oct 2004
    Località
    Voghera (PV)
    Messaggi
    84

    Predefinito

    Originariamente inviato da betaxp86
    Per togliere i privilegi ad un utente puoi usare setgid setuid (che modificano il gruppo e l'utente corrente).
    La fork è una funzione che crea una replica del processo originale ed eventualmente ne sostituisce l'immagine in memoria con una execv (in una delle sue varianti).
    I processi figli restano in ascolto sul socket aperto dal padre e gestiscono autonomamente le accept. Apache ad ogni connessione probabilmente genera un nuovo thread che gestisce separatamente la nuova connessione. (genera thread perchè fino a 1000 volte più veloci da creare rispetto ai processi).
    Ops! Scusa... non avevo lettto che gli avevi già risposto tu

  9. #9
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,387
    configurazione

    Predefinito

    Grazie a tutti e due.
    Apache mi serve solo perchè il server di NOMachine (controllo remoto) si deve appoggiare ad apache per funzionare. Quindi credo che 1 solo thread sia più che sufficiente.

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

Informazioni Thread

Users Browsing this Thread

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Discussioni simili

  1. Hd 5970 con ventola che all'avvio pc gira al massimo
    By maverick_s84 in forum Assistenza tecnica
    Risposte: 4
    Ultimo messaggio: 26-04-2011, 18:45
  2. Ventola che non gira su Acer Travelmate 2350?
    By Gig in forum -= Air Cooling =-
    Risposte: 7
    Ultimo messaggio: 16-10-2008, 13:45
  3. Internet connectio sharing+server apache
    By Doomed in forum -= Internet/Reti e Sicurezza =-
    Risposte: 3
    Ultimo messaggio: 12-12-2002, 18:18
  4. L'athlon xp gira sulle kt7a-raid!
    By N.A. in forum -= Hardware generico =-
    Risposte: 15
    Ultimo messaggio: 09-02-2002, 18:25
  5. Windows Xp Remote "root" Vulnerability
    By Rampage in forum -= Sistemi Operativi Windows e software generale =-
    Risposte: 0
    Ultimo messaggio: 03-01-2002, 23:55

Tags

Regole d'invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
nexthardware.com - © 2002-2022