[gull] authentification CGI - DBI perl dans PostgreSQL

Marc SCHAEFER schaefer at alphanet.ch
Sun Mar 19 08:56:06 CET 2006


On Sat, Mar 18, 2006 at 09:16:09AM +0100, Amel Kapetanovic wrote:
> Je ne comprends pas quelque-chose : je n'arrive pas à m'authentifier 
> dans PostgreSQL autrement qu'en utilisateur www-data avec mes scripts.

Ton script CGI tourne sous l'utilisateur www-data, par défaut. Avec
suexec tu peux choisir un autre utilisateur. Plus les scripts sont
confinés (espace mémoire différent, processus différent, utilisateur
différent), plus il sera difficile d'exploiter une faiblesse dans tes
scripts.

(moins ils sont confinés plus ils seront rapides. Choix Cornélien. En
général je préfère la sécurité.)

> my $password = 'xyz';
> my $dbh = DBI->connect($data_source, $username, $password);

même si tu spécifies le mot de passe ...

> 2006-03-18 09:12:10 [5044] FATAL:  IDENT authentication échouée pour 
> l'utilisateur "amel"

... PostgreSQL est ici configuré pour une authentification de type
IDENT. En bref cela veut dire que si la connexion est sur un socket
UNIX, un appel système est utilisé pour déterminer l'UID du processus
connecté. Si la connexion est via un socket TCP, un appel au service
IDENT (port 113) est utilisé.

Avantage: même si le mot de passe est connu, seul un processus tournant
sous le bon UID pourra faire une connexion.

Désavantage: performance (chaque connexion fait appel à un processus
IDENT) et DoS possible (inetd peut croire qu'il y a trop d'appel à des
processus IDENT et refuser des connexions).

Sauf application particulière, je pense que dans cas général on a
intérêt à configurer le login par mot de passe dans PostgreSQL, cf la
documentation et le fichier /etc/postgresql/pg_hba.conf (postgresql < 7.1)
Dès postgresql 7.1 regarder dans /etc/postgresql/7.1/main/pg_hba.conf,
remplacer 7.1 par la version (Debian a implémenté un concept
multi-instance pour PostgreSQL, avec dans l'idée la possibilité de
tourner plusieurs VERSIONS de packages PostgreSQL en parallèle, voire
plusieurs INSTANCES (ce que PostgreSQL appelle des clusters, encore une
utilisation abusive du mot :))).

PS: IDENT ne devrait pas être utilisé pour de l'authentification
distante, au mieux locale, c'est plus un service d'information.




More information about the gull mailing list