giovedì 9 gennaio 2020

Windows Server 2019: Impostazione IP statico e nome Server

Nell'articolo Windows Server 2019: Installazione abbiamo visto come installare Windows Server 2019. Prima di passare ad argomenti più interessanti dobbiamo procedere con alcune configurazioni basilari per il nostro sistema. Dato che si tratta dell'installazione del primo server e che non esistono server DHCP (Dynamic Host Configuration Protocol) che forniscono l'indirizzo IP alla nostra macchina, in quest'articolo vedremo come impostare un'indirizzo IP statico e assegnare al server un nome in modo da riconoscerlo all'interno della rete.


Assegnazione IPv4 statico

  • Nella finestra principale di Server Manager cliccare su Server locale;
  • Cliccare sul link Indirizzo IPv4 assegnato da DHCP, Abilitata per IPv6 relativo ad Ethernet0;
    Windows Server 2019, Server Manager, impostazione indirizzo IP
    FIG 1 - Windows Server 2019, Server Manager, impostazione indirizzo IP
  • Nella finestra successiva cliccare, con il tasto destro del mouse, sulla connessione di rete a cui si intende assegnare un IP statico e selezionare Proprietà dal menu contestuale;
    Windows Server 2019, Proprietà connessione di rete
    FIG 2 - Windows Server 2019, Proprietà connessione di rete
  • Dall'elenco selezionare Protocollo Internet versione 4 e cliccare sul tasto Proprietà;
    Windows Server 2019, Proprietà Protocollo Internet versione 4
    FIG 3 - Windows Server 2019, Proprietà Protocollo Internet versione 4
  • Selezionare l'opzione Utilizza il seguente indirizzo IP quindi, nella casella Indirizzo IP, inserire l'indirizzo IP da assegnare (ad es. 192.168.1.121);
  • Passando alla casella Subnet Mask, questa viene automaticamente compilata con 255.255.255.0. In questa guida verrà lasciato il valore suggerito.
    Windows Server 2019, Impostazione IP statico
    FIG 4 - Windows Server 2019, Impostazione IP statico
  • Al momento non ci interessa specificare alcun Gateway predefinito o Server DNS. Cliccare su OK e quindi sul pulsante Chiudi;
  • All'interno della finestra Server Manager premere il tasto F5 per aggiornare le informazioni visualizzate con l'indirizzo IP appena modificato.
    Server Manager, visualizzazione IP aggiornato
    FIG 5 - Server Manager, visualizzazione IP aggiornato



Modificare il nome del Server

  • Nella finestra principale di Server Manager cliccare su Server locale;
  • Cliccare sul link relativo al Nome computer;
    Windows Server 2019, Nome computer
    FIG 6 - Windows Server 2019, Nome computer
  • Nella finestra Proprietà del sistema cliccare sul pulsante Cambia;
    Windows Server 2019, Cambia nome computer
    FIG 7 - Windows Server 2019, Cambia nome computer
  • Nella casella Nome computer digitare il nuovo nome da assegnare al Server (ad es. Server1DC) e cliccare su OK;
    Windows Server 2019, Nuovo nome computer
    FIG 8 - Windows Server 2019, Nuovo nome computer
  • Apparirà un messaggio che ci informa che è necessario riavviare il sistema per rendere effettive le modifiche. Cliccare su OK quindi chiudere la finestra Proprietà del sistema cliccando sul pulsante Chiudi.
    Windows Server 2019, Richiesta di riavvio a seguito cambio nome
    FIG 9 - Windows Server 2019, Richiesta di riavvio a seguito cambio nome
  • Nella finestra di dialogo che appare cliccare sul pulsante Riavvia Ora;
    Windows Server 2019, Riavvio dopo cambio nome
    FIG 10 - Windows Server 2019, Riavvio dopo cambio nome
  • Dopo il riavvio, nella sezione Server locale di Server Manager, noteremo che il Nome computer è stato modificato con quello da noi inserito.
    Windows Server 2019, Nuovo nome computer
    FIG 11 - Windows Server 2019, Nuovo nome computer







martedì 7 gennaio 2020

Windows Server 2019: Installazione

Windows Server 2019 rappresenta, al momento, l’ultima versione del sistema operativo server di casa Microsoft. Tra le novità introdotte da questo sistema operativo troviamo la possibilità di estendere più facilmente il datacenter verso Azure realizzando ambienti ibridi pur mantenendo un elevato livello di sicurezza ed efficienza. Prima di mostrare i passaggi relativi all'installazione di Windows Server 2019 è doveroso fare una piccola introduzione e approfondire le versioni e le licenze disponibili del sistema operativo.


Versioni del sistema operativo

Da diversi anni la GUI (Graphical User Interface) dei sistemi operativi server di Microsoft si rifà a quello delle versioni client: Windows Server 2008 R2 si rifà al look di Windows 7 mentre in Windows Server 2012 l'utente ritrova lo stesso feeling presente in Windows 8. Nelle versioni Windows Server 2016 e Windows Server 2019, invece, troviamo lo stesso aspetto di Windows 10.
Windows Server 2019 è disponibile in due versioni principali: Standard e Datacenter. La versione Standard è utilizzata prevalentemente per server fisici o in ambienti con un numero limitato di sistemi virtualizzati mentre la versione Datacenter è ideale per ambienti cloud e per datacenter con un’alta densità di virtualizzazione. Esiste anche una versione Essentials ideata per ambienti small business fino a 25 utenti e 50 dispositivi. 

Nella seguente tabella vengono evidenziate le differenze, in termini di funzionalità, tra la versione Standard e quella Datacenter

Funzionalità Standard Datacenter
Funzionalità core di Windows Server
Si
Si
Integrazione ibrida
Si
Si
Infrastruttura iperconvergente
No
Si
OSE/Container Hyper-V
2 OSE o VM
Senza limiti
Container di Windows Server
Senza limiti
Senza limiti
Servizio Sorveglianza host
Si Si
Replica dello storage
Limitato a un solo volume, per un massimo di 2 TB Si
Macchine virtuali schermate (VM)
No Si
Soluzioni di rete basata sul software
No Si
Storage basato sul software
No Si


Per maggiori dettagli sulle differenze tra le due versioni è possibile consultare l'apposita pagina dal sito Microsoft.



Modelli di licenza/supporto e release

Un'altra decisione da prendere prima di installare Windows Server è quella relativa al  modello di licenza/supporto e alla frequenza del rilascio di nuove release. Ci sono due modelli tra cui scegliere: Semi-Annual Channel (SAC) e Long-Term Servicing Channel (LTSC).

Semi-Annual Channel (SAC)
  • E' previsto il rilascio di due major release all'anno, generalmente in primavera e in autunno. Le release prevedono risoluzione di problematiche, nuove funzionalità e miglioramenti.
  • Le versioni vengono identificare da un numero a quattro cifre (due per l'anno e due per il mese). Ad es. Windows Server versione 1909;
  • Per ciascun rilascio è previsto un supporto di 18 mesi a partire dalla data di pubblicazione;
  • Al Semi-Annual Channel possono aderire solo i clienti Microsoft che dispongono di un contratto di Software Assurance oppure clienti che utilizzano ambienti cloud;


Long-Term Servicing Channel (LTSC)
  • Una nuova major version viene rilasciata approssimativamente ogni tre anni;
  • Sono inclusi cinque anni di mainstream support e ulteriori cinque anni di extended support;
  • E' indipendente dal modello di licensing scelto dal cliente e non è richiesta la Software Assurance.



Opzioni di Installazione di Windows Server 2019

Windows Server 2019 può essere installato in due modalità: Server Core o Desktop Experience.

Server Core
E' la modalità di installazione proposta di default ed è caratterizzata dall'assenza dell'interfaccia grafica (Desktop Experience). Tale modalità, oltre a rendere il sistema più veloce ed efficiente, lo rende anche più sicuro dato che non carica codice extra (che potrebbe contenere vulnerabilità) e non consuma risorse nel visualizzare la GUI. L'iterazione/amministrazione del sistema può avvenire sia tramite riga di comando con PowerShell sia da remoto tramite Windows Admin Center.

Desktop Experience
In tale modalità viene installata la nota interfaccia grafica di Windows. Chi già conosce Windows 10 non avrà alcun problema a districarsi nell'interfaccia di Windows Server 2019. Generalmente viene scelta tale modalità per casi specifici o per una questione di compatibilità applicativa per cui viene richiesta la Desktop Experience. Rispetto alla modalità Server Core questo tipo di installazione prevede alcuni svantaggi come la richiesta di maggiore spazio su disco, minore efficienza del sistema, tempi di deployment superiori ed è più soggetta a vulnerabilità.

La decisione su quale versione del sistema installare va ponderata con attenzione. In Windows Server 2012 R2 era possibile aggiungere/rimuovere l'interfaccia grafica ma a partire da Windows Server 2016 tale possibilità è stata rimossa.


Preparazione supporto di installazione

Una volta procurataci l'immagine ISO di Windows Server 2019 dobbiamo procedere alla creazione del supporto necessario per l'installazione su una macchina fisica. Se disponiamo di un masterizzatore è possibile masterizzare l'immagine su un supporto DVD cliccando sull'immagine con il tasto destro del mouse e selezionando Masterizza immagine disco o utilizzando, in alternativa, uno dei tanti programmi di masterizzazione come ad es Nero Burning Rom, ImgBurn, Windows 7 usb/dvd download tool, ecc. Windows 7 usb/dvd download tool (scaricabile da https://www.microsoft.com/it-it/download/details.aspx?id=56485 ) può essere utilizzato anche per creare una pendrive bootable con l'immagine ISO, in alternativa è possibile utilizzare anche altri tool equivalenti come ad es. Rufus
Prima di partire assicuriamoci di procurarci tutti i driver relativi all'hardware su cui andremo a installare il sistema operativo Windows Server.



Installazione Windows Server 2019

Dopo questa breve introduzione vediamo come installare Windows Server 2019. In questo articolo verrà mostrato come installare la versione Datacenter con la Desktop Experience. I passaggi sono molto semplici e l'installazione è molto veloce e simile a quella di Windows 10.
  • Avviare il sistema con il supporto di installazione preparato in precedenza;
  • La prima schermata che appare è quella mostrata in FIG 1 dove viene richiesto di specificare la Lingua da installare, Formato ora e valuta e il Layout della tastiera. Generalmente sono già selezionate le opzioni che fanno al caso nostro, in caso contrario basta selezionare l'opzione desiderata dai menu a tendina e cliccare su Avanti per proseguire nell'installazione.
    Windows Server 2019, Selezione lingua
    FIG 1 - Windows Server 2019, Selezione lingua
  • Nella schermata successiva abbiamo il pulsante Installa ben in evidenza al centro della schermata e il link Ripristina il computer in basso a sinistra. Quest'ultimo può essere utilizzato per riparare un installazione precedente danneggiata. Dato che nel nostro caso stiamo procedendo ad una nuova installazione, cliccare sul pulsante Installa per proseguire.
    Windows Server 2019, Installa
    FIG 2 - Windows Server 2019, Installa
  • Windows Server 2019 può essere installato in quattro diverse versioni: versione Standard, versione Standard con Desktop Experience, versione Datacenter e versione Datacenter con Desktop Experience. Le versioni Desktop Experience (esperienza desktop) sono dotate di interfaccia grafica (GUI) simile a quella che già conosciamo in Windows 10. Le altre versioni, invece, installano solo il sistema operativo senza alcuna interfaccia grafica e sono conosciute come versioni Core. Selezionare la versione di Windows Server 2019 che si desidera installare. Nel nostro caso selezioniamo la versione Windows Server 2019 Datacenter dotato della Desktop Experience e clicchiamo su Avanti.
    Windows Server 2019, Seleziona versione sistema operativo da installare
    FIG 3 - Windows Server 2019, Seleziona versione sistema operativo da installare
  • Accettare i termini di licenza mettendo un flag sull'apposita casella (Accetto le condizioni di licenza) e cliccare su Avanti;
    Windows Server 2019, Condizioni di licenza
    FIG 4 - Windows Server 2019, Condizioni di licenza
  • A questo punto vengono proposte due scelte sul tipo di installazione desiderato. La prima consente di aggiornare una versione esistente di Windows Server mantenendo i file personali, le impostazioni e le applicazioni installate. La seconda opzione consente una nuova installazione di Windows. Trattandosi di una nuova installazione di Windows Server 2019, selezionare l'opzione Personalizzata: installa solo Windows (opzione avanzata).
    Windows Server 2019, Tipo di installazione
    FIG 5 - Windows Server 2019, Tipo di installazione
  • Il passo successivo consiste nel predisporre/selezionare il disco e la partizione in cui Windows Server 2019 verrà installato. In questo caso, trattandosi di nuova installazione e disponendo di un disco dedicato al sistema operativo, non abbiamo particolari esigenze sull'impostazione di partizioni di dimensioni personalizzate. Selezionare Spazio non allocato e cliccare su Avanti per lasciare alla procedura guidata di installazione il compito della creazione delle partizioni.
  • Se il server utilizza un firmware UEFI verranno create tre partizioni:
    1. Partizione di Ripristino (Recovery partition). La partizione è di circa 500MB e contiene i tool per il ripristino di Windows Server 2019. Se il sistema operativo non riesce ad avviarsi, il server si avvia utilizzando tale partizione consentendo l'utilizzo dei tool per tentare il ripristino.
    2. Partizione di sistema EFI (EFI system partition). La partizione è di circa 100MB e contiene i file necessari al processo di avvio di Windows Server 2019.
    3. Partizione di Boot (Boot partition). La partizione occupa il restante spazio su disco e contiene i file del sistema operativo e il file di paging.
    Se il server utilizza il firmware BIOS verranno create solo due partizioni:
    1. Partizione di sistema (System partition) di circa 500MB contenente i tool di recovery e i file necessari al boot del sistema operativo. 
    2. Partizione di Boot (Boot partition) che occupa il restante spazio del disco e contiene i file di Windows Server 2019 e il file di paging.

Windows Server 2019, Selezione partizione per l' installazione
FIG 6 - Windows Server 2019, Selezione partizione per l' installazione
  • A questo punto la procedure inizierà a copiare i file su disco e ad installare il sistema operativo e le sue funzionalità. Al termine dell'operazione il sistema verrà riavviato e verrà caricato il nuovo sistema operativo.
    Windows Server 2019, Avvio copia file e installazione del sistema operativo
    FIG 7 - Windows Server 2019, Avvio copia file e installazione del sistema operativo


Primo avvio e accesso al sistema

  • Al primo avvio viene richiesto di inserire e confermare la password per l'utente Administrator. Digitare una password complessa contenente lettere maiuscole/minuscole, numeri e qualche carattere speciale (opzionale) altrimenti non verrà accettata (si veda FIG 9). Inserire due volte la password desiderata e cliccare su Fine.
    Windows Server 2019, Primo avvio e impostazione password per account Administrator
    FIG 8 - Windows Server 2019, Primo avvio e impostazione password per account Administrator

    Windows Server 2019, Password Administrator non accettata in quanto non rispetta i requisiti
    FIG 9 - Windows Server 2019, Password Administrator non accettata in quanto non rispetta i requisiti
  • Dopo qualche secondo apparirà la schermata di blocco in cui si invita l'utente a premere la combinazione CTRL+ALT+CANC per eseguire il logon. Premere la combinazione di tasti indicata.
    Window Server 2019, Schermata di blocco
    FIG 10 - Window Server 2019, Schermata di blocco
  • Nella schermata di logon inserire la password per l'utente Administrator e premere invio per eseguire l'accesso al sistema;
    Windows Server 2019, Schermata di logon
    FIG 11 - Windows Server 2019, Schermata di logon
  • Dopo qualche secondo veniamo accolti da un messaggio che ci invita ad utilizzare Windows Admin Center (FIG 12),un'app basata su browser che consente la gestione dei server all'interno dell'infrastruttura. Chiusa la finestra del messaggio ci troveremo davanti alla finestra di Server Manager (FIG 13).
    Windows Server 2019, Suggerimento utilizzo Windows Admin Center
    FIG 12 - Windows Server 2019, Suggerimento utilizzo Windows Admin Center

    Windows Server 2019, Dashboard Server Manager
    FIG 13 - Windows Server 2019, Dashboard Server Manager


L'installazione del sistema operativo può ritenersi conclusa. Questo è il primo di una serie di articoli dedicati a Windows Server 2019. Nei prossimi articoli verrà mostrato come creare un dominio, unità organizzative, gestire utenti/computer e come creare le policy.





venerdì 3 gennaio 2020

Google Chrome: Inviare link ai dispositivi

Gli utenti Chrome che hanno completato l'autenticazione con l'account Google e hanno abilitato la funzione di sincronizzazione automatica implementata nel browser possono inviare un link ai propri dispositivi. Per farlo basta cliccare su un link o sulla barra degli indirizzi di Chrome con il tasto destro del mouse e selezionare il dispositivo di destinazione nell'elenco Invia ai tuoi dispositivi. Dopo qualche istante sul dispositivo di destinazione verrà mostrato un avviso che consentirà di aprire il link inviato. Il trasferimento sul dispositivo di destinazione non viene notificato dal tradizionale strumento di gestione delle notifiche ma è necessario aprire il browser per visualizzare e aprire il collegamento condiviso.





giovedì 2 gennaio 2020

Emulatori interfaccia modem/router SOHO

Prima di acquistare un modem/router per la casa o per il piccolo ufficio può essere utile confrontare, oltre alle caratteristiche hardware, anche il software e l'interfaccia utilizzata per l'amministrazione dell'apparato. Ciò consentirebbe di farsi un'idea sulle impostazioni e funzioni messe a disposizione dal dispositivo permettendo di verificare, prima dell'acquisto, se una funzione particolare di nostro interesse sia presente o meno. Tramite la pagina https://highspeed.tips/routers si può accedere ad un elenco di simulatori di diversi modelli di router alcuni dei quali messi a disposizione direttamente dall'azienda produttrice. Generalmente basta cliccare sul link del modello desiderato e specificare, se richiesto, le credenziali consigliate per accedere all'interfaccia di configurazione del dispositivo. Per alcuni produttori, tra cui TP-Link, Belkin e Linksys, i link rimandano direttamente ai simulatori ufficiali forniti dalle aziende. Sul sito sono presenti anche i link relativi ad altri dispositivi come modem DSL e adattatori VOIP.


HighSpeed.Tips
FIG 1 - HighSpeed.Tips
Emulatore Asus RT-AX88U
FIG 2 - Emulatore Asus RT-AX88U




domenica 17 novembre 2019

Windows Quick Tip: Diventare proprietari di un file/directory tramite il menu contestuale

Può capitare che un file bloccato dal sistema non consenta l'accesso o la modifica neanche da parte dell'amministratore. In questi casi l'amministratore di sistema può ripristinare l'accesso diventando il proprietario del file. L'operazione può essere eseguita sia tramite GUI (tasto destro del mouse sul file, selezionare Proprietà quindi cliccare sulla scheda Sicurezza, pulsante Avanzate) sia tramite prompt dei comandi attraverso il comando takeown.
Windows 10, Modificare il proprietario di un file
FIG 1 - Windows 10, Modificare il proprietario di un file

Se ci troviamo spesso a dover acquisire la proprietà di un file o di una directory può essere utile aggiungere un'apposita voce all'interno del menu contestuale. Per farlo basta aggiungere le seguenti chiavi/valori al registro di sistema


Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\runas]
@="Diventa Proprietario"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Diventa Proprietario"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"


Le chiavi di registro sopra indicate aggiungono la voce Diventa Proprietario al menu contestuale che appare quando si clicca con il tasto destro del mouse su un file o su una cartella. Selezionando tale opzione vengono eseguiti i comandi takeown e icacls che consentono all'amministratore del sistema di acquisire la proprietà del file o della cartella (compreso il suo contenuto) e disporre dei permessi full-access.


Windows, menu contestuale Diventa Proprietario
FIG 2 - Windows, menu contestuale Diventa Proprietario


Dal seguente link è possibile scaricare il file .reg che aggiunge al registro di sistema le chiavi/valori sopra riportati. Basta cliccare due volte sul file .reg per importarlo all'interno del registro di sistema (non è necessario riavviare il sistema per rendere effettive le modifiche).
DOWNLOAD





sabato 2 novembre 2019

Fogli Google: Ordinare i fogli in ordine alfabetico

Nell'articolo MS Excel: Ordinare i fogli in ordine alfabetico è stato mostrato come, attraverso l'utilizzo di VBA (Visual Basic for Application) sia possibile ordinare i fogli di una cartella di lavoro di un documento MS ExcelGoogle Docs (Documenti Google) non supporta VBA (proprietario di Microsoft) ma utilizza Google Apps Script: un linguaggio di scripting basato su JavaScript che gira nella cloud. In questo articolo mostrerò come creare uno script all'interno di Fogli Google che consenta di ordinare i fogli presenti all'interno del documento.

I passi da seguire sono semplici:
  • Creare un nuovo foglio di lavoro o aprirne uno già esistente accedendo a Google Docs tramite la pagina https://docs.google.com/spreadsheets/u/0/;
    Fogli Google, creare un nuovo foglio di lavoro
    FIG 1 - Fogli Google, creare un nuovo foglio di lavoro
  • Dal menu Strumenti selezionare Editor di script;
    Google Docs, Editor di script
    FIG 2 - Google Docs, Editor di script
  • Cliccare su Progetto senza titolo quindi assegnare un nome al progetto e cliccare su OK;
    Google Docs, Nome Progetto
    FIG 3 - Google Docs, Nome Progetto
  • Copiare e incollare il seguente codice;
    function onOpen() {
      SpreadsheetApp.getUi().createMenu('Ordina Fogli')
        .addItem('Ordina dalla A alla Z', 'sortAtoZ')
        .addItem('Ordina dalla Z alla A', 'sortZtoA')
        .addItem('Ripristina ordine prec.', 'ripristina')
        .addToUi();
    }
    
    function sortAtoZ() {
      var ss = SpreadsheetApp.getActiveSpreadsheet(), old = [];  
      ss.getSheets().map ( function (d) {
        var name = d.getName();
        old.push(name);
        return name;
      }).sort().reduce ( function  (arr, e, j) {
        ss.setActiveSheet(ss.getSheetByName(e));
        ss.moveActiveSheet(j + 1);
        return arr;
      }, []);
      PropertiesService.getScriptProperties().setProperty('old', JSON.stringify(old));
    }
    
    function sortZtoA() {
      var ss = SpreadsheetApp.getActiveSpreadsheet(), old = [];  
      ss.getSheets().map ( function (d) {
        var name = d.getName();
        old.push(name);
        return name;
      }).sort().reverse().reduce ( function  (arr, e, j) {
        ss.setActiveSheet(ss.getSheetByName(e));
        ss.moveActiveSheet(j + 1);
        return arr;
      }, []);
      PropertiesService.getScriptProperties().setProperty('old', JSON.stringify(old));
    }
    
    function ripristina(range) {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var range = JSON.parse(PropertiesService.getScriptProperties().getProperty('old'));  
      range.reduce ( function  (arr, e, j) {
        ss.setActiveSheet(ss.getSheetByName(e));
        ss.moveActiveSheet(j + 1);
        return arr;
      }, []);
    }
    
  • Cliccare sul pulsante che rappresenta un insetto per eseguire il debug e il salvataggio del progetto e seguire le istruzioni a video per autenticare/autorizzare lo script;
    Google Docs, script debug
    FIG 4 - Google Docs, script debug
  • Chiudere e riaprire il foglio di lavoro. Apparirà un nuovo menu Ordina Fogli che consentirà di ordinare i fogli in maniera crescente (dalla A alla Z), decrescente (dalla Z alla A) o ripristinare l'ordine precedente all'ultima modifica.
    Google Docs, nuovo menu Ordina Fogli
    FIG 5 - Google Docs, nuovo menu Ordina Fogli


Come visibile dallo script, i nomi dei fogli vengono considerati come stringhe, ciò significa che se i nomi sono numeri questi vengono ordinati considerando l'ordine alfabetico e non il loro valore numerico.

Dal seguente link è possibile scaricare un file di testo contenente il codice dello script
DOWNLOAD






venerdì 1 novembre 2019

Introduzione a Netcat

Netcat è un programma open source a riga di comando in grado di inviare/ricevere dati su connessioni di rete utilizzando i protocolli TCP e UDP. Tale tool è molto versatile e consente di essere utilizzato in svariati contesti come port scanner, backdoor, port redirector/listener, trasferimento file, gestione remota di un sistema, debugging e controllo delle connessioni, ecc. Non è sempre la scelta migliore per tutte le occasioni ma per gli amministratori di rete o sicurezza è importante conoscere le potenzialità di tale strumento, utile soprattutto in caso di investigazione.

Il tool è incluso nella distribuzione Kali Linux molto utilizzata nell'ambito del penetration testing mentre in ambiente Windows va scaricato/installato a parte. Per visualizzare tutte le opzioni messe a disposizione da Netcat basta digitare il seguente comando da una finestra terminale
nc -help


NetCat, Sintassi e opzioni
FIG 1 - Netcat, Sintassi e opzioni

La sintassi del comando per la Connection mode è
nc [-options] hostname port[s] [ports]
mentre per la Listen mode la sintassi sarà simile a
nc -l -p port [-options] [hostname] [port]

Opzioni:
-c shell         simile all'opzione -e permette di specificare una shell da eseguire (ad es. /bin/sh)
-e nomeFile permette di specificare il programma da eseguire dopo la connessione (ad es. cmd.exe)
-b permette il broadcast
-g gateway source-routing hop point[s], fino a 8
-G num source-routing pointer: 4, 8, 12, ...
-h visualizza help
-i secs permette di specificare il delay prima della scansione delle porte
-k                imposta l'opzione keepalive sul socket
-l imposta modalità ascolto (listen mode)
-n forza Netcat a considerare solo l'indirizzo IP e a non interrogare server DNS
-o file dump esadecimale del traffico
-p port specifica la porta locale
-r imposta in modo casuale le porte locali e remote
-q secs esce dopo end of file (EOF) su stdin e attende i secondi specificati
-s addr indirizzo risorsa locale
-T tos imposta il tipo di servizio (Type Of Service)
-t Risponde alle negoziazioni TELNET
-u UDP mode
-v verbose [-vv imposta un livello verboso più elevato]
-w secs specifica il timeout per connessioni e ricezione
-C invia CRLF come line-ending
-z zero-I/O mode [modalità utilizzata per lo scanning]



Come intuibile da quanto visualizzato dal help, Netcat può essere avviato in 2 modalità: Connection mode e Listen mode.

Connection mode
Netcat agisce in modalità client connettendosi ad un host remoto e collegando il suo stdin e stdout al flusso di dati inviato/ricevuto. In pratica Netcat si connette ad un server remoto permettendo l'invio/ricezione dei dati al/dal server e visualizzando sia i dati inviati che quelli ricevuti all'interno della stessa shell.
Il comando per avviare Netcat in tale modalità sarà simile a
nc [opzioni] hostname porte
Netcat permette anche di specificare più porte a cui connettersi. La connessione avverrà su una porta alla volta in maniera sequenziale (o in maniera random se specificata l'opzione -r).


Listen mode
Nella modalità Listen, Netcat rimane in ascolto sulla porta specificata dall'opzione -p in attesa della connessione da un client remoto. Dopo la connessione il comportamento di Netcat è analogo a quanto indicato per la Connection mode. Il comando per impostare Netcat in tale modalità avrà il seguente aspetto
nc -l -p porta [host_remoto] [Porte_host_remoto]
-l imposta la modalità in ascolto
-p specifica la porta su cui Netcat rimane in ascolto.
[host_remoto] permette di specificare l'IP o il nome dell'host che può connettersi
[Porte_host_remoto] permette di specificare da quali porte dell'host remoto deve provenire la connessione affinché venga accettata.
Netcat Listen mode
FIG 2 - Netcat Listen mode



Di seguito vengono riportati alcuni esempi di contesti dove può essere utile utilizzare Netcat.


Banner Grabbing
Il Banner Grabbing è una tecnica utilizzata per ottenere informazioni su un sistema informatico, sui servizi in esecuzione e sulle porte aperte.
Per verificare se una porta di un sistema remoto è aperta basta passare a Netcat l'indirizzo IP e la porta che si intende verificare. Ad es.
nc 192.168.1.25 21
il comando utilizzato nell'esempio effettua una verifica sulla porta 21, generalmente utilizzata dal protocollo FTP, della postazione con indirizzo IP 192.168.1.25 e, in alcuni casi, può fornire anche ulteriori informazioni come l'applicazione e relativa versione in ascolto sulla porta.
Per forzare la visualizzazione di maggiori informazioni possiamo utilizzare lo switch -v 
nc -v -n 192.168.1.25 21
-v visualizza un output verboso.
-n forza Netcat a considerare solo l'indirizzo IP indicato e a non interrogare server DNS per la risoluzione di nomi.


Port Scanning
Il Port Scanning consiste nel sondare una macchina remota al fine di individuare quali porte siano in ascolto. Un semplice Port Scanning può essere effettuato tramite il comando
nc -v -w 2 -z target 1-200
-v ci consente di avere un output verboso
-w specifica un timeout, in secondi, per l'attesa della connessione/risposta.
-z imposta I/O mode, modalità utilizzata per il Port Scanning.
target permette di specificare il nome del host remoto seguito dalla porta, o il range di porte, da scansionare. Nell'esempio verranno verificare tutte le porte comprese nell'intervallo specificato (da 1 a 200).

In alcuni casi può essere utile limitare la velocità di scansione delle porte al fine di non essere individuati/bloccati. Ciò è possibile tramite lo switch -i che permette di specificare un ritardo, espresso in secondi, tra una scansione di una porta e l'altra.
Anche se Netcat può essere utilizzato per il Port Scanning, non si tratta della scelta migliore. Un tool più adatto in questo campo è Nmap.


Chat tra 2 PC
Tramite Netcat è possibile stabilire una chat tra 2 host. Supponiamo di avere 2 PC:
PC1 con IP 192.168.1.20
PC2 con IP 192.168.1.21

La prima cosa da fare è mettere in ascolto uno dei 2 PC. Sul PC1 eseguiamo il comando.
nc -lvp 6655
-l imposta la modalità in ascolto.
-v imposta un'output verboso.
-p imposta la porta su cui Netcat rimane in ascolto. Nell'esempio è stata selezionata la porta 6655.

Dal PC2 stabiliamo la connessione con il PC1 tramite il comando
nc 192.168.1.20 6655
A Netcat viene passato l'indirizzo IP del PC remoto e la porta sulla quale questo è in ascolto.

Una volta che la connessione è stabilita, tutto quello che viene digitato nella finestra (sull'uno o sull'altro PC) viene visualizzata anche nella finestra del PC remoto.


Trasferimento file tra 2 PC
Supponiamo di voler trasferire un file di testo dal PC2 al PC1. Il primo passo consiste nel mettere il PC1 in ascolto su una data porta con il comando
nc –l –p 6655 > file_ricevuto.txt
il carattere > trasferisce tutto ciò che viene ricevuto sulla porta all'interno del file file_ricevuto.txt.

Sul PC2 prepariamo un file di testo con il contenuto da trasferire e rinominiamolo file_inviato.txt quindi eseguire il comando
nc 192.168.1.20 6655 <file_inviato.txt
per inviare il file al PC1
Il contenuto del file file_inviato.txt verrà inviato dal PC2 al PC1 e memorizzato da quest'ultimo all'interno del file file_ricevuto.txt.

Un alternativa consiste nell'utilizzare il comando cat e predisporre un file sul server che il client può scaricare.
Sul PC1, che fungerà da server, eseguire il comando
cat backup.iso | nc -l 6655

mentre sul PC2, per scaricare il file, possiamo eseguire il comando
nc 192.168.1.20 6655 > backup.iso

Per visualizzare graficamente il trasferimento del file è possibile aggiungere il comando pv come mostrato di seguito:
cat backup.iso | pv -b | nc -l 6655
nc 192.168.1.20 6655 | pv -b > backup.iso


Tramite il comando dd di Linux possiamo creare un'immagine di una partizione del disco e inviarla ad una macchina remota. Sul server/PC1 eseguiamo il comando
dd if=/dev/sdb | gzip -9 | nc -l 6655
Dal PC2 connettersi al server per il download dell'immagine con il comando
nc 192.168.1.20 6655 | pv -b > partitionImage.img.gz



Controllo remoto
Netcat può essere utilizzato anche per eseguire comandi su una postazione remota. Sul PC che si intende controllare digitare il comando
nc -L -p 6655 -d -e cmd.exe
in caso di PC con sistema operativo Windows oppure
nc -L -p 6655 -d -e  /bin/sh
in caso di postazione con sistema Linux.

-L imposta Netcat in modalità ascolto sulla porta specificata. La lettera maiuscola indica una modalità più avanzata rispetto allo switch -l e nel caso in cui il socket venga chiuso Netcat ripristina l'ascolto. 
-p specifica la porta su cui Netcat resta in ascolto.
-d indica la modalità stealth (la finestra non viene visualizzata).
-e permette di specificare che programma eseguire una volta che la connessione è avvenuta. Per la postazione con sistema operativo Windows verrà avviato il prompt dei comandi mentre in Linux verrà avviato una finestra terminale.

Per connettersi alla postazione in ascolto basta passare a Netcat l'indirizzo IP della workstation remota e relativa porta a cui connettersi
nc 192.168.1.20 6655



Tunnel SSH
Nella connessione tramite Netcat i dati vengono inviati in chiaro all'interno della rete. Per proteggere la comunicazione è opportuno cifrare i dati tramite l'utilizzo di un tunnel SSH in modo da criptare i dati trasmessi.

Usando un tunnel SSH si hanno due vantaggi:
- I dati sono trasferiti dentro un tunnel criptato, in questo modo saranno ben protetti;
- Non si avrà il bisogno di mantenere nessuna porta aperta nel firewall della macchina che agisce da server, dato che tutte le connessioni passeranno nel tunnel SSH.

Nell'esempio mostrato di seguito andremo a trasferire un file attraverso un tunnel SSH. E' scontato dire che sulla macchina che agisce da server deve essere presente un processo server SSH. Sulla macchina server eseguire il comando:
cat backup.iso | nc -l 3333


Sulla macchina client, il comando per connettersi al server attraverso un tunnel SSH e procedere al download del file sarà del tipo 
ssh -f -L <porta_locale>:<IP_locale>:<porta_remota> utente@<IP_remoto> sleep 10; nc <IP_locale> <porta_locale>
ad es.
ssh -f -L 23333:127.0.0.1:3333 utente@192.168.1.20 sleep 10; nc 127.0.0.1 23333 | pv -b > backup.iso

-f una volta stabilita la connessione la mette in background.
-L crea un tunnel connettendo una porta locale con un porta del host remoto.

Il tunnel SSH verrà chiuso automaticamente dopo la fine del trasferimento del file.