Impostare Firewall

di il
4 risposte

Impostare Firewall

Salve

Sto implementando un progetto basato su SQL Server Express composto da piu' programmi
Un programma verra' installato sul PC dove e' presente il motore di SQL Server mentre un altro verra' installato su un pc della stessa rete


Ogni volta che devo fare una nuova installazione ho problemi con il firewall che se non opportunamente impostato mi impedisce la connessione al DataBase


Per evitare la creazione manuale delle regole per l'accesso al Database ogni volta
e' possibile creare regole firewall direttamente da codice?

4 Risposte

  • Re: Impostare Firewall

    Forse converrebbe impostare le regole creando un apposito programma di installazione, ad esempio creato con Inno Setup, in quanto viene eseguito con privilegi elevati e quindi può modificare le impostazioni di Windows.

    Questo è uno script trovato sul Web che dovrebbe fare al caso tuo:
    [CODE] // Utility functions for Inno Setup // used to add/remove programs from the windows firewall rules // Code originally from http://news.jrsoftware.org/news/innosetup/msg43799.html // Added "Windows Firewall with Advanced Security" code for Vista and later. // could use some error handling+feedback... const NET_FW_SCOPE_ALL = 0; NET_FW_IP_VERSION_ANY = 2; NET_FW_PROFILE_DOMAIN = 0; NET_FW_PROFILE_STANDARD = 1; NET_FW_IP_PROTOCOL_TCP = 6; NET_FW_ACTION_ALLOW = 1; function IsWindowsNT6: Boolean; var Version: TWindowsVersion; begin GetWindowsVersionEx(Version); Result := (Version.NTPlatform and (Version.Major >= 6)); end; procedure AddFirewallException(AppName, FileName: string); var FirewallObject: Variant; FirewallManager: Variant; FirewallProfile: Variant; PolicyObject: Variant; NewRule: Variant; begin try if IsWindowsNT6() then begin // create new inbound firewall exception: PolicyObject := CreateOleObject('HNetCfg.FwPolicy2'); NewRule := CreateOleObject('HNetCfg.FWRule'); NewRule.Name := AppName + ' - inbound'; NewRule.Applicationname := FileName; NewRule.Protocol := NET_FW_IP_PROTOCOL_TCP; NewRule.EdgeTraversal := True; NewRule.Action := NET_FW_ACTION_ALLOW; NewRule.Enabled := True; PolicyObject.Rules.Add(NewRule); end else begin FirewallObject := CreateOleObject('HNetCfg.FwAuthorizedApplication'); FirewallObject.ProcessImageFileName := FileName; FirewallObject.Name := AppName; FirewallObject.Scope := NET_FW_SCOPE_ALL; FirewallObject.IpVersion := NET_FW_IP_VERSION_ANY; FirewallObject.Enabled := True; FirewallManager := CreateOleObject('HNetCfg.FwMgr'); FirewallProfile := FirewallManager.LocalPolicy.GetProfileByType(NET_FW_PROFILE_STANDARD); FirewallProfile.AuthorizedApplications.Add(FirewallObject); FirewallProfile := FirewallManager.LocalPolicy.GetProfileByType(NET_FW_PROFILE_DOMAIN); FirewallProfile.AuthorizedApplications.Add(FirewallObject); end; except end; end; procedure RemoveFirewallException(AppName, FileName: string); var FirewallManager: Variant; FirewallProfile: Variant; PolicyObject: Variant; begin try if IsWindowsNT6() then begin PolicyObject := CreateOleObject('HNetCfg.FwPolicy2'); PolicyObject.Rules.Remove(AppName + ' - inbound'); end else begin FirewallManager := CreateOleObject('HNetCfg.FwMgr'); FirewallProfile := FirewallManager.LocalPolicy.GetProfileByType(NET_FW_PROFILE_STANDARD); FireWallProfile.AuthorizedApplications.Remove(FileName); FirewallProfile := FirewallManager.LocalPolicy.GetProfileByType(NET_FW_PROFILE_DOMAIN); FireWallProfile.AuthorizedApplications.Remove(FileName); end; except end; end; Ovviamente, prendendo questo codice e utilizzandolo in un programma Delphi, mi aspetto che l'effetto sia grossomodo lo stesso (se vengono date al programma le autorizzazioni che servono).

    Ciao!
  • Re: Impostare Firewall

    Visto che e' un progetto, spegni il firewall.
    dentro la rete locale e per fare esperimenti, non serve a nulla
  • Re: Impostare Firewall

    Per fare i test faccio cosi infatti

    Ma una volta terminato i test e verificato che i miei programmi funzionano correttamente devo riattivare il firewall.

    Non posso lasciare disattivato completamente il Firewall sul PC del Cliente finale
  • Re: Impostare Firewall

    MircoSoft ha scritto:


    Ma una volta terminato i test e verificato che i miei programmi funzionano correttamente devo riattivare il firewall.
    Se interpreto bene il suggerimento di migliorabile, quello che ti viene consigliato è lasciare i firewall spenti sui singoli PC interni che fanno parte della rete, e attivarne solo uno (valido per tutti) che gestisca l'intera rete, ossia il colloquio dei vari PC con porte specifiche verso risorse esterne (su Internet).

    In pratica, la rete dovrebbe includere un unico firewall che faccia da punto di accesso al Web e che possa essere configurato in modo a sé stante, così i PC sono protetti, ma non è necessario abilitare i firewall su ciascuno di essi perché tra di loro devono cooperare con svariati servizi.

    Ciao!
Devi accedere o registrarti per scrivere nel forum
4 risposte