di Giovanni B. Perotti
Una delle ragioni che hanno storicamente limitato l’impiego di iSeries
per applicazioni WEB disponibili nella rete pubblica (Internet) è stata
la preoccupazione di esporre i propri dati aziendali al rischio di
manomissioni da parte di malintenzionati (hacker).
Anche se sarebbe stato possibile proteggere l’accesso a porte non autorizzate
tramite appositi firewall, in molte situazioni si è preferito non rischiare
e ci si è limitati a fornire in WEB sulla rete pubblica alcune pagine
statiche servite da un economico PC, aggiungendo talora qualcosa di più
realizzato solitamente in PHP. Nulla di iSeries, tuttavia.
In qualche caso si sono realizzate applicazioni WEB su iSeries solo per la
intranet aziendale, servita tramite LAN o VPN, ma ogniqualvolta si pensi di
estendere la applicazione alla rete Internet ritorna la paura della macchina
fisicamente in rete.
Pur di non consentire accesso TCP/IP dalla rete pubblica all’iSeries aziendale,
si è arrivati a connettere l’iSeries al servente WEB esterno tramite
connessione SNA.
Queste preoccupazioni oggi possono essere rimosse.
Oggi (dal rilascio V5R2 dell’OS/400) e’ possibile accoppiare il servente
WEB esterno con iSeries collegati alla LAN aziendale tramite una speciale
feature di Apache, denominata “Reverse Proxy”.
Sostanzialmente, il Reverse Proxy consente ad un servente Apache di dirottare
richieste di particolari URI (*) ad altri serventi Apache, di riceverne
la risposta e di presentarla al client remoto come se fosse stata servita
direttamente dal servente Apache a cui la richiesta era originariamente
pervenuta.
Utilizzando il Reverse Proxy si può per esempio:
• Utilizzare come servente pubblico in rete Internet un sistema non
critico dal punto di vista aziendale (un PC), equipaggiato di Apache e
connesso alla LAN aziendale
• Dirottare le richieste di particolari URI ad un iSeries anch’esso
connesso sulla LAN aziendale
• Fare in modo che tutte le risposte appaiano fornite dal servente pubblico
(Vedi Figura 1)
In questo modo, l’iSeries, non essendo connesso direttamente alla rete pubblica,
non corre piu’ rischi di quanto non ne corra essendo connesso alla LAN aziendale,
specialmente se ci si assicura che tramite firewall agli iSeries possano
pervenirerichieste solo sulla porta opportuna (solitamente porta 80).
Figura 1
Esempio di direttive Reverse Proxy da utilizzare sul servente pubblico
Si supponga che le seguenti URI (anche parziali) debbano essere servite dal
sistema di indirizzo IP 195.208.8.2 connesso alla LAN aziendale:
/cgidev2/start
/cgidev/
/cgidev2p/
/expert
/expert/
/expertp/
Allora, le direttive Apache da utilizzare sul servente pubblico sono:
#Solo se il servente è un iSeries:
ProxyReverse on
#Per qualunque servente:
ProxyPass /cgidev2/start http://195.208.8.2/cgidev2/start
ProxyPass /cgidev/ http://195.208.8.2/cgidev/
ProxyPass /cgidev2p/ http://195.208.8.2/cgidev2p/
ProxyPass /expert http://195.208.8.2/expert
ProxyPass /expert/ http://195.208.8.2/expert/
ProxyPass /expertp/ http://195.208.8.2/expertp/
ProxyPassReverse /cgidev2/start http://195.208.8.2/cgidev2/start
ProxyPassReverse /cgidev/ http://195.208.8.2/cgidev/
ProxyPassReverse /cgidev2p/ http://195.208.8.2/cgidev2p/
ProxyPassReverse /expert http://195.208.8.2/expert
ProxyPassReverse /expert/ http://195.208.8.2/expert/
ProxyPassReverse /expertp/ http://195.208.8.2/expertp/
Nota 1 - Se il servente pubblico è un iSeries, allora bisogna premettere
queste direttive:
LoadModule proxy_module /QSYS.LIB/QHTTPSVR.LIB/QZSRCORE.SRVPGM
LoadModule proxy_ftp_module /QSYS.LIB/QHTTPSVR.LIB/QZSRCORE.SRVPGM
LoadModule proxy_http_module /QSYS.LIB/QHTTPSVR.LIB/QZSRCORE.SRVPGM
LoadModule proxy_connect_module /QSYS.LIB/QHTTPSVR.LIB/QZSRCORE.SRVPGM
Nota 2 - Se il servente pubblico è un PC Windows, allora bisogna premettere
queste direttive:
AddModule mod_proxy.c
LoadModule proxy_module modules/mod_proxy.so
(Il source del modulo, scritto in C, è disponibile alla pagina
http://apache.webthing.com/mod_proxy_html/mod_proxy_html.c )
Nota 3 – Quando nelle pagine ottenute tramite Reverse Proxy comparissero
dei link non relativi ma assoluti, il client non riuscirebbe ad arrivare alla
pagina indicata, in quanto tenterebbe di connettersi direttamente all’indirizzo
IP specificato nel link, che non è raggiungibile direttamente, ma solo attraverso
il servente pubblico.
Esempio di link relativo: <a href=”/cgidev/bubble.gif”>.
Esempio di link assoluto: <a href=http://195.208.8.2/cgidev/bubble.gif>.
Bibliografia
Apache
IBM
Per scaricare l'originale di questo documento, clicca qui
________________________________________
(*) URI (Uniform Resource Identifier) è la parte della URL
(Uniform Resource Locator)che identifica la particolare risorsa da accedere.
Nell’URL http://195.208.8.2/cgidev2/start la URI è /cgidev2/start
|