Archive for the 'Windows CLI' Category

Mar 16 2008

Risoluzione di problemi del servizio Ora di Windows

La corretta gestione dell’ora dei sistemi è molto importante in una rete con un dominio Active Directory, poiché il protocollo di autenticazione predefinito, Kerberos, richiede che l’ora di server e client sia sincronizzata, pena la possibile mancata autenticazione del client, il quale non sarà quindi in grado di fruire dei servizi erogati dal/dai server.

In primis, è buona norma configurare il domain controller che svolge il ruolo di master operazioni PDC in modo tale che prenda l’ora da un riferimento esterno; utilizzando il protocollo Network Time Protocol (NTP), il controllore di dominio sincronizza l’ora, tramite il servizio "Ora di Windows" (W32Time) , con uno o più server NTP, accessibili tramite la rete Internet. Per sincronizzare il controllore di dominio con una o più fonti esterne, è possibile utilizzare la metodica descritta in un precedente articolo. Il passo successivo riguarda la sincronizzazione dei client: se si tratta di postazioni Windows XP e, direi (ma non ho ancora avuto esperienza diretta), Windows Vista, che sono iscritte nel dominio, l’ora sarà sincronizzata automaticamente per impostazione predefinita, prendendo come riferimento il domain controller in questione. Lo stesso avviene per server membri e controller di dominio Windows 2003. Il protocollo utilizzato per questo tipo di sincronizzazione non è NTP ma NT5DS.

In alcuni casi, è possibile che il domain controller non riesca a sincronizzarsi con il/i server NTP, in tal caso, bisogna cercare di capire come mai questo avviene. Il primo passo da seguire, è verificare se non esiste già un’applicazione che utilizza la porta UDP 123, con il comando:

netstat -noa | find "123"

Se ci viene restituita una riga in cui compare un’applicazione che utilizza la porta UDP 123, bisogna segnarsi il PID (Process ID) del processo in questione (ad esempio, 4127), quindi, si utilizza il comando tasklist per identificare quale processo sta utilizzando la porta 123:

tasklist | find "4127"

e così sapremo quale applicazione utilizza la porta 123.

Se invece non risulta nessuna applicazione che utilizza la porta UDP 123, dovremo cercare di capire che avviene durante la sincronizzazione dell’ora. A tal fine, si può abilitare la registrazione del debug del servizio Ora di Windows, andando ad aggiungere alcuni parametri nella chiave del registro di sistema

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config

Questi parametri consistono nell’aggiunta di nuovi valori stringa chiamati FileLogSize, FileLogName e FileLogEntries, i cui dati valore sono indicati nella relativa pagina della Knowledge Base Microsoft. Dopo aver aggiunto questi valori, riavviare il servizio Ora di Windows col comando

net stop w32time && net start w32time

quindi digitare il comando

w32tm /resync

per forzare la sincronizzazione dell’ora. Fatto ciò, bisogna aprire con un editor di testo il file specificato precedentemente nel parametro FileLogName del servizio Ora di Windows, che ci mostrerà le varie operazioni svolte durante la sincronizzazione, sperando che ciò ci sia d’aiuto per risolvere i problemi di sincronizzazione dell’ora.

2 responses so far

Lug 20 2007

Installare e gestire SQL Server 2005 Express

SQL Server 2005 Express è il database gratuito di Microsoft appartenente alla serie SQL Server 2005, e si pone quindi come successore di MSDE, il database rilasciato gratuitamente da Microsoft fino alla serie SQL Server 2000. Questa versione di SQL è liberamente scaricabile dal sito Microsoft e richiede il framework .NET 2.0, altrimenti non si installa.

Il grosso limite di SQL Express è che non ha un’interfaccia visuale di gestione, per cui andrà gestito da linea di comando (a meno di non avere un’altra installazione di SQL Server attiva sulla rete o di altri tool che al momento non conosco), ma soprattutto, in modo predefinito, SQL Express non accetta connessioni da altri host.

Per permettere a SQL Express di accettare connessioni da altri host, è necessario per prima cosa aprire il tool di configurazione di SQL Express che prende il nome di SQL Configuration Manager, quindi da lì andare in "SQL Server 2005 Network Configuration", poi su "Protocols for SQLEXPRESS", quindi abilitare il protocollo TCP/IP. Fatto questo, andare nel registro di configurazione e impostare il valore HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\SQL Browser\Ssrplistener a 1, dopodiché bisogna abilitare l’avvio automatico del servizio "SQL Server Browser", poi bisogna avviarlo ed infine riavviare il servizio "SQL Server (SQLEXPRESS). Ora, oltre a rendere possibile l’accesso ad altri host, è possibile anche amministrare la nostra installazione di SQL col tool da riga di comando SQLCMD, tramite il comando:

sqlcmd -E -S nomeserverSQL\nomeistanzaSQL,1434

dove per nomeserverSQL si intende il nome host del PC su cui è installato SQL Express, per nomeistanzaSQL si intende il nome che si è dato all’istanza in fase d’installazione (il nome dell’istanza predefinita è MSSQL$EXPRESS) e per 1434 si intende la porta TCP su cui risponde SQL Express.

A questo punto, è abbastanza probabile che si vogliano riutilizzare database utilizzati in precedenza con SQL Server 2000 o con MSDE; se abbiamo i file del database (.mdf e .ldf), è possibile metterli nella cartella predefinita in cui sono contenuti i database di sistema di SQL Express e quindi, tramite T-SQL, creare un nuovo database facendo un attach dei file già esistenti:

> CREATE DATABASE nuovoDB ON
> (FILENAME = ‘c:\program files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\nomefileDB.mdf’) FOR ATTACH;

in questo modo SQL Express crea il nuovo database agganciando i vecchi dati in nostro possesso, facendo una conversione nel nuovo formato se stiamo facendo l’attach di un database SQL Server 2000

E’ inoltre possibile che esistano applicazioni distribuite sulla rete locale che devono accedere al database SQL Express presente su un server, per cui in questo caso possono servire i driver nativi per accedere al database via ODBC o via OLE DB. Questi driver sono installati con un pacchetto messo a disposizione di Microsoft e chiamato "Microsoft SQL Server Native Client", scaricabile ovviamente dal sito Microsoft.

Per amministrare la nostra installazione di SQL Express 2005, è possibile anche scaricare ed installare SQL Server Management Studio Express, che altro non è che l’erede di Enterprise Manager, ovvero la console MMC di gestione visuale di SQL Server, in questo modo non siamo legati per forza all’amministrazione di SQL Express da riga di comando.

No responses yet

Mag 06 2007

Modificare la configurazione di rete con Netshell

Netshell è un utilità a riga di comando (richiamata dal file netsh.exe) che permette la visualizzazione e la modifica di diversi parametri relativi alla configurazione di rete del PC. Quest’utilità è presente da Windows 2000 in poi, ma i comandi seguenti sono testati esclusivamente su Windows XP.

Netshell può essere molto utile per eseguire dei batch che cambino la configurazione di rete, oppure che siano in grado di ripristinare la configurazione di rete perduta per un qualsiasi motivo. Ad esempio, se col nostro portatile dobbiamo spostarci su diverse reti, è possibile avere una serie di batch che configurano automaticamente la rete; ciò si rende necessario se il servizio DHCP non è presente su tutte le reti in cui ci muoviamo, altrimenti questo accorgimento sarebbe inutile. Prima di vedere come utilizzare Netshell, è bene compiere un passaggio, e cioé rinominare la connessione di rete locale, che generalmente prende il nome di "Connessione alla rete locale (LAN)", trasformandola in qualcosa di più semplice, tipo "Rete Locale" (senza virgolette).

Fatto ciò, vediamo come impostare la configurazione di rete (cioè il settaggio di indirizzo IP, subnet mask, default gateway, server DNS senza usufruire di un server DHCP) su un client Windows XP:

> netsh interface ip set address name="Rete Locale" source=static addr=192.168.0.11 mask=255.255.255.0 gateway=192.168.0.254 gwmetric=1
> netsh interface ip set dns name="Rete Locale" source=static addr=192.168.0.1

Come si può facilmente intuire, bisogna utilizzare due comandi distinti: il primo per impostare la configurazione di indirizzo IP, subnet mask, default gateway, ed il secondo per impostare la configurazione del server DNS. Analizzando più nel dettaglio i due comandi, abbiamo come prima cosa l’ambito su cui va ad agire il comando netsh, ovvero "interface ip", quindi, abbiamo l’istruzione "set", che indica la riconfigurazione dell’interfaccia di rete, ciò significa che le vecchie impostazioni vengono sostituite da quelle indicate nel comando netsh. Di seguito, andiamo ad indicare cosa andiamo a riconfigurare, nel primo comando "address" e nel secondo "dns", poi si specifica il nome della connessione della rete locale (name="Rete Locale") e quindi si indica se i parametri sono statici o dinamici (se sono dinamici, i dati riguardanti la configurazione di rete verranno assegnati al client da un server DHCP), infine si specificano i parametri veri e propri, ma solo nel caso in cui questi vengano assegnati staticamente.

Nel caso in cui si voglia aggiungere un secondo server DNS, è possibile utilizzare il comando:

> netsh interface ip add dns name="Rete Locale" addr=192.168.0.2 index=2

Le differenze col comando precedente sono minime, e si limitano all’istruzione "add" che sostituisce "set", in quanto il server DNS impostato precedentemente viene mantenuto, ed all’istruzione "index=2", che indica che il server DNS impostato è il secondo nell’ordine di ricerca e viene chiamato in causa solamente quando il primo server DNS non risponde.

Il comando netsh è molto utile anche per effettuare il salvataggio delle impostazioni TCP/IP della propria scheda di rete, impostazioni che possono quindi essere ripristinate in caso di bisogno. Per effettuare il salvataggio eseguire il seguente comando:

> netsh interface ip dump > c:\rete.txt

In questo modo le impostazioni di rete vengono salvate nel file "c:\rete.txt", e possono essere richiamate per un ripristino tramite il comando:

> netsh -c "interface ip" -f c:\rete.txt

L’opzione -c "interface ip" serve per indicare a netsh che deve accettare i comandi contenuti nel file "c:\rete.txt" nel contesto "interface ip", mentre con l’opzione -f indichiamo il percorso del file in cui abbiamo salvato le impostazioni di rete. Dopo aver lanciato questo comando, le impostazioni del protocollo TCP/IP verranno riportate alla loro condizione originaria, cosa utile, come detto, in caso di problemi con la configurazione di rete.

Netshell è presente anche su Windows Vista, e da quel poco che ho potuto vedere ha alcune opzioni in più che non ho ancora provato.

No responses yet

Apr 11 2007

Disabilitare autoelezione a master browser

In una rete con un dominio Active Directory, è possibile che sul domain controller appaiano messaggi che notificano il tentativo di un client di autoeleggersi Master Browser ai danni del controllore di dominio; il master browser è quel computer che gestisce la lista degli host presenti sulla rete locale, e problemi col master browser si traducono in possibili problemi nello sfogliare le risorse di rete. Il messaggio che compare nel visualizzatore eventi ha id evento 8003 e origine "Mrxsmb", per altri dettagli su questo errore vedere sul sito eventid.net.

Una delle possibili soluzioni consiste nell’impedire che un client cerchi di autoeleggersi master browser, e ciò è possibile intervenendo sul registro di sistema, precisamente impostando il valore delle voce HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\Services\ Browser\ Parameters\ MaintainServerList a FALSE; per farlo, è naturalmente possibile modificare il registro a mano, ma trovandoci in una rete locale potremmo anche utilizzare un file batch, posizionato sul server in modo che sia utilizzabile da tutti i PC della rete locale che eventualmente presentano questo problema (tenere presente che il seguente batch è applicabile solo sui sistemi da Windows XP in avanti). Utilizzeremo quindi il comando REG per togliere ed aggiungere la voce di registro col valore modificato; sarebbe stato più logico modificare direttamente il valore nel registro, ma credo che non esista un modo di modificare in un solo passaggio il valore di una voce di registro. Inoltre, la prima istruzione del file batch servirà per fare un salvataggio della chiave di registro coinvolta, operazione molto utile per poter ripristinare la chiave di backup originaria in caso di problemi. Di seguito le poche righe del batch:

reg save HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters c:\browserParameters.hiv
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters /v MaintainServerList /F
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters /v MaintainServerList /t REG_SZ /d FALSE

Esaminiamo il batch: la prima riga, come scritto, consente di salvare la chiave indicata nel file c:\browserParameters.hiv, ripristinabile col comando "reg restore"; la seconda riga, cancella la voce MaintainServerList (che è richiamata con l’opzione /v) nella chiave indicata, forzando la cancellazione con l’opzione /F; la terza riga aggiunge la voce MaintainServerList nella chiave indicata, specificando, oltre alla voce, il tipo di dati della voce stessa con l’opzione /t, ed il valore da assegnare alla voce con l’opzione /d, valore che deve essere racchiuso tra virgolette se composto da più parole.

Il batch è tutto qui, l’unica cosa da tenere presente è che il batch andrebbe eseguito con i privilegi di amministratore della macchina.

No responses yet

Gen 30 2007

Lanciare script o comando in Windows Vista come amministratore

Published by Lorenzo under Windows, Windows CLI

In Windows Vista esiste un meccanismo di protezione chiamato UAC (User Access Control), che sostanzialmente consiste nel far girare i processi e le applicazioni con privilegi limitati per impedire che virus e malware possano compiere operazioni non autorizzate sul sistema. Quando un software ha bisogno di compiere operazioni che comportano una "scalata dei privilegi" (in altre parole quando queste operazioni devono essere eseguite coi privilegi di amministratore), richiede un’autorizzazione, che possiamo concedere o meno a seconda di ciò che stiamo facendo.

Ciò naturalmente è valido anche per la riga di comando, infatti alcuni script ed alcuni comandi potrebbero non funzionare, restituendo il messaggio d’errore Per eseguire l’operazione richiesta è necessaria l’esecuzione con privilegi elevati. Per ovviare a questo problema, è necessario far partire il prompt dei comandi in modalità amministratore, andare su Start -> Tutti i programmi -> Accessori, cliccare col tasto destro su "Prompt dei comandi", da lì cliccare col tasto sinistro su "Esegui come amministratore" e concedere l’autorizzazione, fatto questo è possibile notare che sulla barra del titolo del prompt dei comandi compare scritto "Amministratore: Prompt dei comandi"; in questo modo potremo eseguire interattivamente anche quegli script e quei comandi che richiedono privilegi amministrativi per la loro esecuzione.

No responses yet

Gen 26 2007

Visualizzare informazioni sui processi

Published by Lorenzo under Windows, Windows CLI

In diverse occasioni può essere utile vedere quali processi sono attivi, quanta memoria occupano e come si "comportano" sul nostro sistema. Per svolgere questi compiti esistono semplici programmini freeware, ma volendo queste informazioni si possono ricavare anche da linea di comando.

Per vedere la lista dei processi in esecuzione sul proprio PC è possibile utilizzare il comando tasklist, disponibile sui sistemi Windows XP e 2003. Questo comando permette di vedere l’elenco dei processi in esecuzione sul sistema, il loro PID (il numero identificativo del processo, cosa molto utile) e la loro occupazione in termini di memoria RAM. Questo comando ha anche un’utile opzione, "/svc" (il comando esteso diventa quindi tasklist /svc), che permette di conoscere i servizi associati ad un determinato processo. Siccome alcuni malware sono talmente fetenti da avviarsi non come processo ma come servizio, conoscere a quale servizio è associato un file in esecuzione può essere molto utile.

Un altro comando con funzioni simili è pmon, disponibile in Windows Server 2003 previa installazione dei Resorce Kit Tools scaricabili dal sito Microsoft, che permette di vedere in tempo reale i processi attivi sul sistema. L’incolonnamento delle varie voci potrebbe migliorare e tutto l’insieme non è di facile lettura, però questo comando ha una cosa molto carina, la possibilità di vedere immediatamente quanta memoria fisica è disponibile sul sistema.

Queste informazioni possono essere utilissime se associate alle informazioni ricavabili dal comando netstat -noa. Questo comando permette di vedere le connessioni di rete attive e di visualizzare il PID associato ad una determinata connessione di rete. Incrociando il PID con la lista dei PID visualizzata col comando tasklist è possibile determinare il nome del file associato ad una applicazione in ascolto su porte strane, per cui, conoscendo il file, è possibile analizzarlo per vedere se si tratta di un malware o di un processo legittimo.

No responses yet