PDA

View Full Version : [.Net]autorizzazione navigazione internet


RaouL_BennetH
17-10-2009, 16:15
Ciao a tutti :)

In ufficio abbiamo il firewall (ipcop) con dans guardian installato.

Tutto ciò ci permette agevolmente di navigare soltanto nei siti presenti nella white list.

Fra tutti i pc, soltanto uno ha la navigazione libera di cui è responsabile una sola persona.

Il pc in questione è a sua volta protetto da password.

Il problema è che, come credo in molti uffici... , fare in modo che la propria password resti totalmente riservata è un problema. Capita quindi che qualcun altro, in assenza della persona responsabile, utilizzi il suo pc per navigare dove gli pare. Fino ad ora, l'unico modo con cui avevo 'aggirato' il problema era di far scattare il salvaschermo dopo due minuti di fermo (con tutte le maledizioni da parte dell'utente che appena rispondeva al telefono doveva poi reinserire la password... )

Avevo anche provato a configurare dans guardian in modo da chiedere l'autenticazione dell'utente per la navigazione, e ci sono anche riuscito.... solo che l'autenticazione deve essere abilitata per tutti quanti con la conseguenza che, già gli altri hanno la navigazione limitata, devono poi inserire nome utente e password ogni volta che aprono il browser... nzomma... ho rischiato la vita :D

Pensavo quindi di sfruttare il .net (vb o c#) dato che ci smanetto da un bel pò e qualcosa so fare, per fare un'applicazione, un servizio o similia che mi permettesse (solo per il pc dove la navigazione è libera) di ottenere un'autorizzazione ad usare il browser.

Spero che qualcuno di voi possa indirizzarmi sulla buona strada :)

RaouL.

tomminno
17-10-2009, 17:22
Il problema è che, come credo in molti uffici... , fare in modo che la propria password resti totalmente riservata è un problema.


Cambiare la password non sarebbe meglio?
Rapido ed indolore.
Anche perchè suppongo ci sia dietro qualcosa come LDAP (Active Directory?), se qualcuno conosce la password di un altro potrebbe fare danni a nome di questa persona, non è una bella cosa.


Pensavo quindi di sfruttare il .net (vb o c#) dato che ci smanetto da un bel pò e qualcosa so fare, per fare un'applicazione, un servizio o similia che mi permettesse (solo per il pc dove la navigazione è libera) di ottenere un'autorizzazione ad usare il browser.

Spero che qualcuno di voi possa indirizzarmi sulla buona strada :)

RaouL.

Qualunque tecnica tu possa adottare risulta facilmente aggirabile.
Diciamo che senza l'aiuto del firewall sei obbligato a sviluppare un addon per ogni browser installato sulle macchine in modo che all'avvio chieda le credenziali e le verifichi (Active Directory? LDAP?), ma poi se l'utente conosce la password sei già fregato.
Ed infine c'è sempre Firefox Portable.

Portesti farti un applicativo stile client-server, dove in maniera molto semplice il client all'avvio del browser chiede delle credenziali (diverse da quelle di accesso) e le verfica con il server (un banale webservice con un metodo e un xml dove tenere le credenziali di accesso per farla semplice).
Il client potrebbe essere o un addon di IE e/o FF (non so cosa avete installato) o un programma che monitora i processi e se trova iexplore.exe o firefox.exe chiede le credenziali per l'utilizzo, se dopo 30 secondi non sono state inserite potrebbe terminare il processo del browser.
Il programma però potrebbe essere sempre terminato dall'utente e i servizi non dovrebbero avere interfacce grafiche. La soluzione si fa sempre più complessa.

In alternativa usare i token usb per l'accesso alle macchine, soluzione tutt'altro che economica, ma così risolvi alla radice ogni problema.

RaouL_BennetH
17-10-2009, 17:57
Cambiare la password non sarebbe meglio?
Rapido ed indolore.
Anche perchè suppongo ci sia dietro qualcosa come LDAP (Active Directory?), se qualcuno conosce la password di un altro potrebbe fare danni a nome di questa persona, non è una bella cosa.


Ciao :)

le volte che ho assegnato password un pelino più complesse per l'accesso al pc, la genialata dell'utente è stata di scriverle sul post-it e attaccarla al monitor :mc: :cry:

Sono sicuro che riuscirei a scoraggiare questa pratica se come pagina iniziale mettessi il loro conto corrente on line... :p



Qualunque tecnica tu possa adottare risulta facilmente aggirabile.
Diciamo che senza l'aiuto del firewall sei obbligato a sviluppare un addon per ogni browser installato sulle macchine in modo che all'avvio chieda le credenziali e le verifichi (Active Directory? LDAP?), ma poi se l'utente conosce la password sei già fregato.
Ed infine c'è sempre Firefox Portable.

Portesti farti un applicativo stile client-server, dove in maniera molto semplice il client all'avvio del browser chiede delle credenziali (diverse da quelle di accesso) e le verfica con il server (un banale webservice con un metodo e un xml dove tenere le credenziali di accesso per farla semplice).
Il client potrebbe essere o un addon di IE e/o FF (non so cosa avete installato) o un programma che monitora i processi e se trova iexplore.exe o firefox.exe chiede le credenziali per l'utilizzo, se dopo 30 secondi non sono state inserite potrebbe terminare il processo del browser.
Il programma però potrebbe essere sempre terminato dall'utente e i servizi non dovrebbero avere interfacce grafiche. La soluzione si fa sempre più complessa.

Beh, il livello di utenza nn è così elevato tecnicamente. Io pensavo a qualcosa del genere (ripetendomi sul fatto che dovrei farlo solo sul pc della persona che ha accesso alla libera navigazione)

1) Intercettare ogni chiamata ad iexplore.exe o firefox.exe e bloccarla (magari con un servizio)
2) L'utente deve eseguire "autorizza.exe"
2a) "autorizza.exe" stoppa il servizio di cui sopra
3) Al termine, "autorizza.exe" fa ripartire il servizio.



In alternativa usare i token usb per l'accesso alle macchine, soluzione tutt'altro che economica, ma così risolvi alla radice ogni problema.

In azienda la proprietà ha sradicato dai vocabolari il termine "acquisto".
Tant'è che sto sopperendo io a qualcosa che invece dovrebbe fare un amministratore di sistema (che dovrebbero GIUSTAMENTE pagare)... ma su questa cosa è meglio che stendiamo un velo pietoso... :doh:

khelidan1980
17-10-2009, 18:24
Ciao :)

le volte che ho assegnato password un pelino più complesse per l'accesso al pc, la genialata dell'utente è stata di scriverle sul post-it e attaccarla al monitor :mc: :cry:



Questa proprio mi mancava,il post-it con la password,probabilmente perchè ho girato solo uffici di informatici :D

Ciao :)
In azienda la proprietà ha sradicato dai vocabolari il termine "acquisto".
Tant'è che sto sopperendo io a qualcosa che invece dovrebbe fare un amministratore di sistema (che dovrebbero GIUSTAMENTE pagare)... ma su questa cosa è meglio che stendiamo un velo pietoso... :doh:

Ogni tanto devo smetterla di lamentarmi del mio ufficio c'è sempre di peggio ahah

RaouL_BennetH
17-10-2009, 22:53
Ho fatto una 'bozza' di ciò che avrei in mente:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;

namespace BrowserAuth
{
public class AuthJobs
{

private List<string> applicationsList;
private bool isAuthenticated;


public void CheckUserAuth()
{
applicationsList = new List<string>();
applicationsList.Add("iexplore.exe");
applicationsList.Add("firefox.exe");

foreach (string appName in applicationsList)
{

Process[] processArray = Process.GetProcessesByName(appName);
foreach (Process p in processArray)
{
if (!isAuthenticated) //e sicuramente al primo avvio lo è
{
ProgrammaEsternoDiLogin login = new ProgrammaEsternoDiLogin();
//login chiede l'autenticazione
//l'utente si logga correttamente
//login dovrà settare a true isAuthenticated
p.Start();
}
}
}

}

public bool IsAutenticated
{
get
{
return isAuthenticated;
}
set
{
isAuthenticated = value;
}
}
}
}


Non dico come 'codice' in se per se, ma come idea può andare?

Grazie mille :)

RaouL.

tomminno
18-10-2009, 11:10
Può funzionare fintanto che non scoprono l'eseguibile da terminare...

Io rigirerei la condizione:

while (!IsAuthenticated)
{
CheckUserAuth();
Sleep(30000);
}

E CheckUserAuth farei sollevare un evento di AuthRequired, così che il software possa mostrare la form per la richiesta credenziali, poi se questa viene ignorata per più di X secondi kill del browser.

wizard1993
18-10-2009, 21:40
Può funzionare fintanto che non scoprono l'eseguibile da terminare...



banale controllo del se è in esecuzione il taskmanager e in tal caso lo spiana

RaouL_BennetH
22-10-2009, 17:13
Ciao a tutti :)

Sto cercando di impostare il tutto come servizio.

Direte voi "e che cambia... un utente che sa terminare un eseguibile sa terminare anche un servizio" :p

Il che, è vero... ma solo se l'utente ha privilegi di amministratore.

P.S.: se siete a conoscenza di un plugin/addon per IpCop, sarei ancora più felice :D

RaouL.

tomminno
22-10-2009, 17:21
Scordati l'utilizzo di una interfaccia grafica integrata nel servizio. :)

RaouL_BennetH
23-10-2009, 19:06
Scordati l'utilizzo di una interfaccia grafica integrata nel servizio. :)

Hai ragione !!

Mi sono documentato un pò e ho capito che è un approccio totalmente sbagliato ..

Sono quindi al punto di partenza :mc:

tomminno
23-10-2009, 19:19
Hai ragione !!

Mi sono documentato un pò e ho capito che è un approccio totalmente sbagliato ..

Sono quindi al punto di partenza :mc:

Se imbocchi la strada del servizio (credo che sia la strada giusta), devi realizzare una struttura client/server sulla macchina, dove il server è il servizio che fungerà da controller (e si occuperà della comunicazione verso il sistema centrale di autenticazione) mentre il client si occuperà della visualizzazione della form di autenticazione (il client può essere messo in esecuzione automatica o configurato nel registro).
Se l'utente termina il client, il servizio terminerà tutte le volte il browser allo scadere del timeout, rendendo inutile il tentativo di terminare il client :)