AWS – Aprire e chiudere le porte del security group in automatico alla connessione e disconnessione

In Amazon Web Service, sulla console web c’è la possibilità di modificare praticamente tutto delle nostre istanze e dei nostri Security Group, questo è indubbiamente vero, però, per me è anche indubbiamente scomodo in quelle occasioni nelle quali mi trovo da clienti o nelle quali sono comunque in mobilità e quindi il mio indirizzo IP è dinamico e quindi dovrei connettermi alla console web di gestione, loggarmi, scegliere il security group da modificare, connettermi ad un servizio come www.veltini.org/ip/ip.php o simili per conoscere il mio IP esterno, tornare sull’interfaccia web, inserire la regola e poi iniziare la connessione con RDP di Microsoft o per comodità usare MREMOTE NG che è una sorta di aggregatore nel quale si possono memorizzare più connessioni e usarle all’occorrenza senza ogni volta ricordare indirizzi, utenze e password delle macchine anche per i protocolli SSH ICA e altri.

 

Per quanto corretta possa sembrare questa procedura, è migliorabile, talvolta in termini di tempo, talvolta in termini di pratiche errate, di seguito andremo a migliorarla il più possibile, sia in termini di sicurezza che di tempo.

 

Per rendere chiaro il concetto, basta dire che non ha senso tenere sul firewall una porta aperta in ingresso quando non serve, e, dato che il firewall di base che mette a disposizione Amazon Web Service (il Security Group) è programmabile e comandabile via riga di comando (usando la AWS cli), sfruttiamo questa caratteristica per aprire le porte in ingresso solo quando stiamo per connetterci, e dall’indirizzo IP con il quale stiamo uscendo il tutto più automaticamente possibile.

 

LISTA della spesa :

  • Amazon CLI
  • Una cartella contenente le configurazioni della CLI
  • MRemote NG
  • Gli script che trovate di seguito

 

RICETTA:

  1. Scarichiamo la AWS CLI secondo la nostra versione di Sistema Opertativo dal seguente link: http://aws.amazon.com/cli/

Effettuiamo l’installazione (dai su avanti avanti avanti)

Creare attraverso un’istruzione a riga di comando la directory c:\users\utente\.aws (md c:\users\mario\.aws)

All’interno della cartella creare un file config senza estensione  e inseriamoci queste istruzioni che altro non sono che le direttive per configurare la AWS CLI.

 

[default]
aws_access_key_id = vostro id

aws_secret_access_key = vostra chiave

region = us-east-1

 

Creiamo poi 2 file batch che possiamo chiamare ad esempio Concedi.bat e Revoca.bat

sul file Concedi.bat inseriamo il seguente codice:

 


echo calcolo ip
@echo off
set cidr=/32
set groupname=default
set port=1433
>"%temp%\ip.vbs" echo Set objHTTP = CreateObject("MSXML2.XMLHTTP")
>>"%temp%\ip.vbs" echo Call objHTTP.Open("GET", "http://www.veltini.org/ip/ip.php", False)
>>"%temp%\ip.vbs" echo objHTTP.Send()
>>"%temp%\ip.vbs" echo strHTML = objHTTP.ResponseText
>>"%temp%\ip.vbs" echo wscript.echo strHTML
for /f "tokens=7 delims=:<" %%a in ('cscript /nologo "%temp%\ip.vbs"') do set ip=%%a echo %ip:~1% echo lancio la cli aws aws ec2 authorize-security-group-ingress --group-name %groupname% --protocol tcp --port %port% --cidr %ip:~1%%cidr%     Mentre sul file Revoca.bat inseriamo il seguente :  

echo calcolo ip
@echo off
set cidr=/32
set groupname=default
set port=1433
>"%temp%\ip.vbs" echo Set objHTTP = CreateObject("MSXML2.XMLHTTP")
>>"%temp%\ip.vbs" echo Call objHTTP.Open("GET", "http://www.veltini.org/ip/ip.php", False)
>>"%temp%\ip.vbs" echo objHTTP.Send()
>>"%temp%\ip.vbs" echo strHTML = objHTTP.ResponseText
>>"%temp%\ip.vbs" echo wscript.echo strHTML
for /f "tokens=7 delims=:<" %%a in ('cscript /nologo "%temp%\ip.vbs"') do set ip=%%a echo %ip:~1% echo lancio la cli aws aws ec2 revoke-security-group-ingress --group-name %groupname% --protocol tcp --port %port% --cidr %ip:~1%%cidr%
    Come si può notare nella parte alta troviamo le parti configurabili, come la porta, il nome del security group e la maschera di sottorete in formato CIDR. Dato che vogliamo aprire la porta per RDP (3389) solo dall’indirizzo IP dal quale siamo connessi, lo script si connette ad un servizio (http://checkip.dyndns.org) per recuperarlo. Fate attenzione perchè c’è un sistema che vi blocca se lo richiamate troppo spesso. Comunque dopo alcuni minuti ricomincia a rispondere in modo corretto. ( appena possibile pubblico le modifiche per farlo funzionare senza blocchi.)

 

Fate un test lanciando a mano i due bat e controllate che funzionino dandovi come risultato un “return true” ed effettuando un refresh dalla console di gestione di AWS effettivamente le porte vengano correttamente aperte e chiuse.

 

Una volta verificato il funzionamento degli script è ora di passare ad integrarli con MREMOTE NG.

Apriamo quindi MREMOTE NG e fare click su Strumenti –> Applicazioni Esterne

Posizionandoci sulla griglia facciamo clic con il tasto destro del mouse e quindi scegliere Nuova applicazione esterna, questo farà caricare la finestra di gestione delle configurazioni che imposteremo come la figura seguente

 

image

 

Praticamente si sceglie un nome con cui si vuole riconoscere l’applicazione esterna su MREMOTE , si sceglie il file Concedi.bat dandone il percorso completo e poi si mette la spunta sul flag Attendi l’uscita per fare in modo che finchè la porta non è aperta, cioè l’esecuzione del bat non è terminata , non venga eseguita la connessione.

La stessa cosa va fatta anche per Revoca.bat .

 

A questo punto abbiamo tutto ciò che ci serve, manca solo configurare una connessione verso la macchina che ci interessa e tra le opzioni della connessione di MREMOTE NG trovate anche le due configurazioni che servono a lanciare una applicazione prima della connessione (qui metteremo Concedi) e alla disconnessione (qui metteremo Revoca) come potete vedere dalla seguente immagine

 

image

 

Provate ad lanciare la connessione e vedrete quini prima il prompt dei comandi che esegue lo script e poi vi collegherete alla macchina. Alla disconnessione vedrete ancora il prompt che va a chiudere la porta per l’indirizzo IP dal quale vi state connettendo.

 

Abbiamo così automatizzato l’apertura e chiusura di porte sul firewall e ridotto le possibilità di subire spiacevoli attacchi sulle porte standard, che andremo ad abilitare solo e solamente quando ci servono.

Se per caso windows 8.1 vi dice che AWS non è un comando valido , bisogna eseguire il bat come amministratore, quindi, visto che viene lanciato da MREMOTE NG è possibile eseguire quest’ultimo come amministratore.

, , , , ,

No comments yet.

Lascia un commento

Powered by WordPress. Designed by Woo Themes