[gl-como] apache e password

Pietro Bertera gl-como@lists.linux.it
Sat, 29 Mar 2003 18:53:05 +0100


Damiano Venturin wrote:
> mi sto approcciando ad apache; qualcuno sa imboccarmi su una di queste cose?
> 
> 1. necessito di un accesso con pwd tipo webmin su https; apache ha un modulo o 
> qualcosa di già pronto?

htaccess è semplicissimo,poi lunedi' ti spiego meglio

> 2. ho notato che se vado su https://websrv/ vedo le stesse pagine di 
> http://websrv/ . Come faccio a specificare una dir differente per 
> https://websrv/ ?

per l'https c'è un file di configurazione diverso da httpd.conf
in cui ci sarà:

ROOT_DOCUMENT="/var/www/html"

o simile, modifica quello


> 3. se devo fare eseguire uno script (ammettiamo con exec di php) con permessi 
> diversi da quelli di apache, come si procede?

problemino...

facciamo caso che lo script gira con i permessi di root.

1) fai girare apache con i permessi di root e allora puoi fare qualunque 
cosa

2) il programmino è suid root

3) usi uno script proxy

la prima è da evitare.

la seconda non è malaccio, bisogna valutare l'ambiente

la terza la spiego:

fai uno script che riceve delle stringhe.
Lo script lo fai girare come root (okkio !!!)
Lo script agisce da proxy perchè riceve una stringa ed esegue un comando.

lo script + stupido E INSICURO !! è il seguente:

#!/bin/bash
$*

Ovviamente per evitare casini occorrono molti ma molti ma moltissimi 
controlli sull'input (tipo se puo' eseguire solo 2 comandi, se arriva un 
comando diverso dai due non eseguirlo, controllare l'id e il gid di chi 
chiede l'esecuzione ecc..) e qualche funzione di logging non guasterebbe.
Tieni presente anche le comuni norme sulla programmazione "sicura" se il 
proxy è un eseguibile in C non usare mai strcpy() e simili, controlla 
sempre le dimensioni degli array ecc...

Ovviamente il proxy puo' essere scritto in C, in Java, in bash in perl, 
in php, in quello che vuoi

è sembre buona cosa non avere una relazione diretta tra stringa e 
comando del tipo:

if (strcmp(stringa,comando) == 0)
  system(comando);

ma magari usare delle stringe che variano di volta in volta per un 
signolo comando.

Se poi ti serve l'outèput del comando il proxy lo deve ricevere e 
rigirare allo script web.
Anche sull'output applica tutti i filtri necessari.

Poi lune passo e giochiamo un po' ;)

ciao