Esporre in internet un'app installata on premise

di il
6 risposte

Esporre in internet un'app installata on premise

Salve a tutti

Ho dei web-service scritti una decina di anni fa che fanno il loro sporco dovere.
Fino ad oggi sono sempre stati ad uso e consumo della LAN aziendale.

Ora si rende necessario che questi endpoints vengano raggiunti tramite protocollo HTTPS raggiungibile tramite internet (quindi niente più LAN nè VPN).

Purtroppo non sono pronti dal punto di vista sicurezza per essere pubblicati online.

Qualcuno di voi ha qualche idea di come si possa fare senza doverli riscrivere pensando alla sicurezza?


Personalmente pensavo a qualcosa di gestito da terzi (più esperti di me in termini di cloud e sicurezza) che faccia da reverse proxy verso i miei servizi.

Supponiamo ad esempio Azure (ma anche AWS o altri provider possono andare bene):
- Si configura una rete sicura (VPN) fra i miei endpoint ed Azure. Quindi Azure vede i miei servizi, ma nessuno li vede dall'esterno
- Si configura su Azure un load balancer (o un reverse proxy) che accetti le chiamate ad un indirizzo pubblico (esposto in internet) e lo giri al servizio privato (on premise)
- Si configura su Azure la sicurezza: solo gli utenti autenticati/autorizzati possono eseguire suddette chiamate

In questo modo evito di riscrivermi la ruota, utilizzo sistemi scritti da chi è molto più esperto di me in materia, riesco a rendere pubblici i servizi che attualmente ho all'interno della mia LAN

Non so però se sia possibile o se sia la strada giusta. Qualcuno di voi ha delle idee?

6 Risposte

  • Re: Esporre in internet un'app installata on premise

    PiGi78 ha scritto:


    Purtroppo non sono pronti dal punto di vista sicurezza per essere pubblicati online.
    Qualcuno di voi ha qualche idea di come si possa fare senza doverli riscrivere pensando alla sicurezza?
    Ma cosa intendi con "non sono pronti dal punto di vista della sicurezza"?
    Quali sono le problematiche di questi WS?

    Direi che la soluzione migliore la si trova partendo innanzitutto dai problemi reali.
  • Re: Esporre in internet un'app installata on premise

    In realtà il problema non è solo dei web service ma anche del server che li pubblica.

    In linea di massima sono web service scritti almeno venti anni fa e per essere chiamati solo dai nostri sistemi all'interno della LAN. Pertanto non hanno nessun controllo relativo ad access token o cose del genere (oltretutto gli strumenti con cui sono stati scritti non lo supportano nativamente)

    Poi c'è il problema del server: raramente i clienti lo aggiornano, per cui ci troviamo con macchine di 6 anni fa senza nessuna patch di sicurezza installata. Quindi esporla su internet anche solo per rendere accessibili certe chiamate è impensabile.


    Consci del fatto che dobbiamo sistemare queste cose, sappiamo anche che ci vorrà il suo tempo, sia a noi per riscrivere i servizi con qualcosa di più moderno e sicuro, sia lato cliente per gli agg.ti di sicurezza.

    Nel mentre, però, cercavamo una strada che ci consentisse quantomeno di esporre i servizi "minimi" senza minare troppo la sicurezza del sistema.

    Per questo pensavamo a servizi cloud, così da demandare a loro la parte di sicurezza dandoci il tempo necessario per sistemare il resto.

    Non a caso avevo spostato autenticazione e autorizzazione sul "cloud".

    Mi chiedo però se possa essere la strada giusta o meno (sempre per l'immediato, nel lungo periodo meglio mettere in sicurezza tutto il flusso)
  • Re: Esporre in internet un'app installata on premise

    Una strada potrebbe essere quella di creare un servizio di Windows (o comunque qualcosa in esecuzione costante) che stabilisce una connessione in uscita al server web, in questo modo non devi "aprire" il NAT.
    Ad esempio potrebbe essere un WebSocket che si connette al server web esterno e tramite chiamata da parte dell'utente a quest'ultimo il servizio si occuperebbe di interrogare sulla LAN i WS e restituirebbe una risposta al web server, che a sua volta lo restituirebbe al client chiamante.
    Volendo potresti anche rendere trasparente al client tutto il sistema emulando i WS sul server web, ma all'interno di essi crei una chiamata al client (sistema in esecuzione costante che ha stabilito la connessione websocket al server web) sulla LAN tramite appunto WebSocket che a sua volta interroga i WS. Una volta arrivata la risposta il WS fittizio la restituisce al client chiamante.
  • Re: Esporre in internet un'app installata on premise

    @PiGi78
    ci sono DUE tipi di problemi

    1) i problemi relativi agli aggiornamenti del sistema operativo. Ok, MA non centrano NULL con il web service
    2) i problemi relativi ai web service ed al supporto ad HTTPS, token e quant'altro.

    Il punto 2) e' ""relativamente"" semplice:

    2.1) NON TOCCHI i web service originali. Li sono e li rimangono
    2.2) crei un NUOVO web service che fa da ponte/PROXY tra i NUOVI protocolli di comunicazione (HTTPS, token e quant'altro) ed il web service originale.

    L'idea e' banale: il nuovo web service ha la stessa interfaccia del precedente ma in piu' supporta i meccanismi di sicurezza. Quando viene chiamato semplicemente rigira la richiesta al web service originale, quindi ricupera la risposta e la rigira al chiamante.

    Non ragionare in termini di ""efficienza"" (e' l'errore che fanno i ""novellini"" ).

    Ovviamente e' MENO efficiente che non fare tutto nativamente
    MA nel 99.99999% dei casi i problemi di performance NON STANNO dove uno pensa.

    In questo caso, se le cose sono fatte bene, spannometricamente, hai un ""overhead"" di qualche decina/centinaio di millisecondi.
    MA, spannometricamente, questo tempo e' UN DECIMO/UN CENTESIMO o anche MENO dei tempo impiegato nell'esecuzione del web service originale.

    QUINDI tranquillamente TRASCURABILE.
  • Re: Esporre in internet un'app installata on premise

    @migliorabile
    Quindi li stai proponendo di esporre i suoi "nuovi" web service in rete aprendo il router tramite NAT oppure proponi una VPN tra un web server in rete che fornirebbe un punto d'accesso "sicuro" e la sua LAN?
    Il primo caso credo sia quello che vorrebbe evitare, dovrebbe gestire anche tutta la sicurezza relativa, a quel punto credo che tanto valga modificare ed aggiornare i suoi web services direttamente.
  • Re: Esporre in internet un'app installata on premise

    migliorabile ha scritto:



    Il punto 2) e' ""relativamente"" semplice:

    2.1) NON TOCCHI i web service originali. Li sono e li rimangono
    2.2) crei un NUOVO web service che fa da ponte/PROXY tra i NUOVI protocolli di comunicazione (HTTPS, token e quant'altro) ed il web service originale.

    L'idea e' banale: il nuovo web service ha la stessa interfaccia del precedente ma in piu' supporta i meccanismi di sicurezza. Quando viene chiamato semplicemente rigira la richiesta al web service originale, quindi ricupera la risposta e la rigira al chiamante.
    Questo era quanto pensavo di fare anche io.

    Però mi sono reso conto che i provider "cloud" (vedi Azure e AWS) hanno un sacco opzioni:
    • ApiGateway
    • Reverse Proxy
    • Load balancer
    • ...
    per cui mi chiedevo: perchè devo reinventarmi la ruota se c'è modo di usare quanto fatto da loro?
    Usando i loro servizi:
    • Sarei pronto "da subito" (o quasi)
    • Potrei spendere il loro nome (dire "la sicurezza la garantisce AWS o Azure" ha il suo appeal)
    • Sicuramente la soluzione dal punto di vista tecnico è migliore di quanto potrei fare io (con tutto il bene che mi voglio, credo che gli sviluppatori dei cloud siano molto più esperti di certi argomenti rispetto a me)

    Ho provato a districarmi nei servizi proposti ma non ne sono venuto a capo.
    Per cui chiedevo se qualcuno avesse qualche dritta in merito (sia positiva, sia negativa)
Devi accedere o registrarti per scrivere nel forum
6 risposte