Interface web de management limitée pour non administrateur

Forum traitant de la distribution sécurisée montante nommée IP cop et basée sur la distribution Smoothwall. C'est à l'heure actuelle le forum le plus actif du site.

Modérateur: modos Ixus

Interface web de management limitée pour non administrateur

Messagepar Poon » 24 Jan 2008 18:22

Bonjour à tous,

Est-il possible, à partir d'un navigateur, d'accéder à seulement certaines pages de l'interface de management d'IPCop (sans le menu du haut ou limité/désactivé)? Le but est de pouvoir laisser un non-administrateur avoir accès à certaines informations comme Who Is On Line, System Graphs, Traffic Graphs, Net-Traffic, ...

Je sais que c'est possible sur SmoothWall ... Mais sur IPCop? Si ce n'est pas faisable, existe-il un mod qui permette d'envoyer ce genre de statistique par mail?

Merci.
Dernière édition par Poon le 25 Jan 2008 22:55, édité 2 fois au total.
Poon
Second Maître
Second Maître
 
Messages: 36
Inscrit le: 03 Déc 2007 13:14

Messagepar ccnet » 24 Jan 2008 18:37

Pas d'addon de ce type à ma connaissance. L'administration IPCOP, c'est tout ou rien. D'autres infos ?
ccnet
Amiral
Amiral
 
Messages: 2687
Inscrit le: 27 Mai 2006 12:09
Localisation: Paris

Messagepar Billou02 » 24 Jan 2008 22:24

Pareil pour moi, pas connaissance d'un addon qui permettrai cela.
Cela serait utile a beaucoup de monde je pense.
Dans le newbie Kit, il existe un moyen de demander un login/mdp pour afficher la première page, je pense qu'en s'en inspirant, on pourrai, a la main, faire une modif pour obtenir le résultat souhaité.
Image
Avatar de l’utilisateur
Billou02
Amiral
Amiral
 
Messages: 1177
Inscrit le: 27 Jan 2004 01:00
Localisation: Picardie

Messagepar Poon » 25 Jan 2008 13:37

Merci à vour pour ces réponses ...

Qu'est ce que newbie Kit?

Merci.
Poon
Second Maître
Second Maître
 
Messages: 36
Inscrit le: 03 Déc 2007 13:14

Messagepar shwing » 25 Jan 2008 14:31

Avatar de l’utilisateur
shwing
Amiral
Amiral
 
Messages: 1246
Inscrit le: 14 Mars 2004 01:00
Localisation: GE/CH

Messagepar Poon » 25 Jan 2008 22:42

Merci pour vos pistes : j'y suis arrivé ...

Voici la marche à suivre pour les intéressés :

1) créer un nouvel utilisateur (non administrateur) autre qu'admin et qui aura accès à l'interface de management limitée

Code: Tout sélectionner
htpasswd /var/ipcop/auth/users monuser


2) modifier les droits d'accès aux fichiers cgi dans /etc/httpd/conf/httpd.conf

les fichiers (pages) ne pouvant être accédé que par l'administrateur doivent être déclarées comme ceci :

Code: Tout sélectionner
<Files proxy.cgi>
    AllowOverride None
    Options None
    AuthName "Restricted"
    AuthType Basic
    AuthUserFile /var/ipcop/auth/users
    Require user admin
</Files>


les fichiers (pages) pouvant être accédé par l'administrateur et le user doivent être déclarées comme ceci :

Code: Tout sélectionner
<Files status.cgi>
    AllowOverride None
    Options None
    AuthName "Restricted"
    AuthType Basic
    AuthUserFile /var/ipcop/auth/users
    Require user admin monuser
</Files>


faire les modifications pour tous les cgi (/home/httpd/cgi-bin) ... Attention, pour que l'utilisateur ait accès aux graphes, il faut le rajouter ici :

Code: Tout sélectionner
<DirectoryMatch "/home/httpd/html/(graphs|sgraph)">
    AuthName "Restricted"
    AuthType Basic
    AuthUserFile /var/ipcop/auth/users
    require user admin monuser
</DirectoryMatch>


Redémarrer le serveur pour que les modifications soient prises en compte :

Code: Tout sélectionner
killall httpd
httpd -DSSL


3) modifier le fichier perl /var/ipcop/header.pl pour qu'il adapte les menus en fonction de l'utilisateur web connecté

Dans le sub genmenu, ajouter le test suivant :

Code: Tout sélectionner
### Admin's menu (tous les menus sont présent)

   if ($ENV{'REMOTE_USER'} eq "admin"){

    %{$menu{'1.system'}}=(
      'contents' =>  $Lang::tr{'alt system'},
      'uri' => '',
      'statusText' => "IPCop $Lang::tr{'alt system'}",
      'subMenu' =>   [[ $Lang::tr{'alt home'} , '/cgi-bin/index.cgi', "IPCop $Lang::tr{'alt home'}" ],
            [ $Lang::tr{'updates'} , '/cgi-bin/updates.cgi', "IPCop $Lang::tr{'updates'}" ],
            [ $Lang::tr{'sspasswords'} , '/cgi-bin/changepw.cgi', "IPCop $Lang::tr{'sspasswords'}" ],
            [ $Lang::tr{'ssh access'} , '/cgi-bin/remote.cgi', "IPCop $Lang::tr{'ssh access'}" ],
            [ $Lang::tr{'gui settings'} , '/cgi-bin/gui.cgi', "IPCop $Lang::tr{'gui settings'}" ],
            [ $Lang::tr{'backup'} , '/cgi-bin/backup.cgi', "IPCop $Lang::tr{'backup'} / $Lang::tr{'restore'}" ],
            [ $Lang::tr{'shutdown'} , '/cgi-bin/shutdown.cgi', "IPCop $Lang::tr{'shutdown'} / $Lang::tr{'reboot'}" ],
            [ $Lang::tr{'credits'} , '/cgi-bin/credits.cgi', "IPCop $Lang::tr{'credits'}" ]]
    );

    %{$menu{'2.status'}}=(
      'contents' =>  $Lang::tr{'status'},
      'uri' => '',
      'statusText' => "IPCop $Lang::tr{'status information'}",
      'subMenu' =>   [[ $Lang::tr{'sssystem status'} , '/cgi-bin/status.cgi', "IPCop $Lang::tr{'system status information'}" ],
            [ $Lang::tr{'ssnetwork status'} , '/cgi-bin/netstatus.cgi', "IPCop $Lang::tr{'network status information'}" ],
            [ $Lang::tr{'system graphs'} , '/cgi-bin/graphs.cgi', "IPCop $Lang::tr{'system graphs'}" ],
            [ $Lang::tr{'sstraffic graphs'} , '/cgi-bin/graphs.cgi?graph=network', "IPCop $Lang::tr{'network traffic graphs'}" ],
            [ $Lang::tr{'ssproxy graphs'} , '/cgi-bin/proxygraphs.cgi', "IPCop $Lang::tr{'proxy access graphs'}" ],
            [ $Lang::tr{'connections'} , '/cgi-bin/connections.cgi', "IPCop $Lang::tr{'connections'}" ]]
    );


### (code des 7 menus ici)

   }

### User's menu (ici j'ai limité l'accès à system (home+shutdown), status (all), logs (all))

    else {
    %{$menu{'1.system'}}=(
      'contents' =>  $Lang::tr{'alt system'},
      'uri' => '',
      'statusText' => "IPCop $Lang::tr{'alt system'}",
      'subMenu' =>   [[ $Lang::tr{'alt home'} , '/cgi-bin/index.cgi', "IPCop $Lang::tr{'alt home'}" ],
            [ $Lang::tr{'shutdown'} , '/cgi-bin/shutdown.cgi', "IPCop $Lang::tr{'shutdown'} / $Lang::tr{'reboot'}" ]]
    );
    %{$menu{'2.status'}}=(
      'contents' =>  $Lang::tr{'status'},
      'uri' => '',
      'statusText' => "IPCop $Lang::tr{'status information'}",
      'subMenu' =>   [[ $Lang::tr{'sssystem status'} , '/cgi-bin/status.cgi', "IPCop $Lang::tr{'system status information'}" ],
            [ $Lang::tr{'ssnetwork status'} , '/cgi-bin/netstatus.cgi', "IPCop $Lang::tr{'network status information'}" ],
            [ $Lang::tr{'system graphs'} , '/cgi-bin/graphs.cgi', "IPCop $Lang::tr{'system graphs'}" ],
            [ $Lang::tr{'sstraffic graphs'} , '/cgi-bin/graphs.cgi?graph=network', "IPCop $Lang::tr{'network traffic graphs'}" ],
            [ $Lang::tr{'ssproxy graphs'} , '/cgi-bin/proxygraphs.cgi', "IPCop $Lang::tr{'proxy access graphs'}" ],
            [ $Lang::tr{'connections'} , '/cgi-bin/connections.cgi', "IPCop $Lang::tr{'connections'}" ]]
    );
    %{$menu{'3.network'}}=(
      'contents' =>  $Lang::tr{'network'},
      'uri' => '',
      'statusText' => "IPCop $Lang::tr{'network configuration'}",
      'subMenu' =>   [[ "" , "", "" ]]
    );
    %{$menu{'4.services'}}=(
      'contents' =>  $Lang::tr{'alt services'},
      'uri' => '',
      'statusText' => "IPCop $Lang::tr{'alt services'}",
      'subMenu' =>   [[ "" , "", "" ]]
    );
    %{$menu{'5.firewall'}}=(
      'contents' =>  $Lang::tr{'firewall'},
      'uri' => '',
      'statusText' => "IPCop $Lang::tr{'firewall'}",
      'subMenu' =>   [[ "" , "", "" ]]
    );
    %{$menu{'6.vpns'}}=(
      'contents' =>  $Lang::tr{'alt vpn'},
      'uri' => '',
      'statusText' => "IPCop $Lang::tr{'virtual private networking'}",
      'subMenu' =>   [[ "" , "", "" ]]
    );
    %{$menu{'7.mainlogs'}}=(
      'contents' =>  $Lang::tr{'alt logs'},
      'uri' => '',
      'statusText' => "IPCop $Lang::tr{'alt logs'}",
      'subMenu' =>   [[ $Lang::tr{'log settings'} , '/cgi-bin/logs.cgi/config.dat', "IPCop $Lang::tr{'log settings'}" ],
            [ $Lang::tr{'log summary'} , '/cgi-bin/logs.cgi/summary.dat', "IPCop $Lang::tr{'log summary'}" ],
            [ $Lang::tr{'proxy logs'} , '/cgi-bin/logs.cgi/proxylog.dat', "IPCop $Lang::tr{'proxy log viewer'}" ],
            [ $Lang::tr{'firewall logs'} , '/cgi-bin/logs.cgi/firewalllog.dat', "IPCop $Lang::tr{'firewall log viewer'}" ],
            [ $Lang::tr{'ids logs'} , '/cgi-bin/logs.cgi/ids.dat', "IPCop $Lang::tr{'intrusion detection system log viewer'}" ],
            [ $Lang::tr{'system logs'} , '/cgi-bin/logs.cgi/log.dat', "IPCop $Lang::tr{'system log viewer'}" ]]
    );
}




Remarque : j'ai laissé visible les 7 menus même si dans certain il n'y a pas de sous-menu pour des questions de compatibilité.

Normalement si on se loggue avec le user monuser, il a un accés limité à l'interface de management.

Attention, apparemment certains mods rajoutent des lignes dans ce script pour s'insérer dans les menus ... En tenir compte pour le test if - else (admin ou pas).

Voila, vos remarques sont les bienvenues ;)
Poon
Second Maître
Second Maître
 
Messages: 36
Inscrit le: 03 Déc 2007 13:14

Messagepar irad » 26 Jan 2008 12:26

Hum intéréssant, je pense que tu peut le mettre dans le kit noobs ^^ car ça peut toujours servir.
irad
Second Maître
Second Maître
 
Messages: 35
Inscrit le: 22 Mars 2005 11:23


Retour vers IPCop

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Google [Bot] et 1 invité