giovedì 10 ottobre 2019

OFFICE 365 SMTP RELAY


1 - SMTP CLASSICO (serve una licenza)

Usando le credenziali di utente di office 365
In questo caso e' necessario usare l'smtp autenticato:

smtp.office365.com/587 0 25
username utente di office 365
password password di office 365

2 - DIRECT SEND (non serve una licenza)

Nel caso in cui fosse presente qualche device es: stamapnti multifunzione, e' possibile usare il direct send
Questa modalita consente di spedire solo agli indirizzi interni del tenant e non ad utenti esterni (es: gmail.com, libero.it ecc. ecc.)
Per impostare il direct send occorre usare, come smtp, il valore riportato nel record MX (ES: dominio-it.mail.protection.outlook.com)
Inoltre e' necessario aggiungere gli ip pubblici da cui si esce in internet (da cui il device che spedisce esce!) al record SPF.

Normalmente il record spf dovrebbe essere qualcosa del tipo:

v=spf1 include:spf.protection.outlook.com ~all

occorre aggiungere anche il proprio ip pubblico (assicuratevi che sia statico)

v=spf1 ip4:10.5.3.2 include:spf.protection.outlook.com ~all

SMTP: dominio-it.mail.protection.outlook.com
Port: 25 (TLS/StartTLS Enabled)
Email: Any email address for one of your Office 365 accepted domains. This email address does not need to have a mailbox.


3 - SMTP RELAY (all'antica :) )
Questo dovrebbe essere il piano B, da usare solo se le opzioni sopra non funzionano!
Il vantaggio rispetto al DIRECT SEND e' di poter spedire anche ad indirizzi esterni all'organizzazione.

SMTP: dominio-it.mail.protection.outlook.com
Port: 25 (TLS/StartTLS Enabled)
Email: Any email address for one of your Office 365 accepted domains. This email address does not need to have a mailbox.

Connettore
Creare un connettore:
Da: Your organization's email server
A: Office 365
Domain restrictions: IP address/range (inserire i propri IP pubblici)

Anche in questo caso aggiungere il proprio range di ip pubblici al record SPF in DNS

v=spf1 include:spf.protection.outlook.com ~all

occorre aggiungere anche il proprio ip pubblico (assicuratevi che sia statico)

v=spf1 ip4:10.5.3.2 include:spf.protection.outlook.com ~all

Se, per esempio lo si dovesse usare per spedire email da un sito creato ed ospitato su un provider (insomma esterno alla rete), anche l'ip pubblico del sito deve essere aggiunto al record SPF. Si imposta la restrizione per l'ip da cui si spedisce nel connettore

REFERENCE:
https://docs.microsoft.com/en-us/exchange/mail-flow-best-practices/how-to-set-up-a-multifunction-device-or-application-to-send-email-using-office-3

mercoledì 25 settembre 2019

VEEAM - application aware not working

VEEAM - JOB backup application aware not working

Se dobbiamo fare il backup di VM che eseguono servizi come SQL o Exchange, occorre ricordarsi di abilitare l'application-aware nelle opzioni del job di VEEAM che stiamo creando. Molto brevemente questa opzione consente a Veeam di operare come un VSS requestor e di scatenare il processo di VSS snapshot all'interno della VM. Tutto questo per poter avere dei backup consistenti a livello di applicazione. Se non lo si dovesse fare ci troveremmo nella condizione di poter ripristinare i file di un DB o di uno store di Exchange , senza avere la garanzia che i dati al suo interno siano davvero integri.

Nel mio caso ho abilitato questa opzione per una VM HyperV, ricevendo questo errore:

SQL VSS Writer is missing: databases will be backed up in crash-consistent state and transaction log processing will be skipped

Nel mio caso e' stato sufficiente modificare il contesto utente in cui girava il servizio "SQL server VSS writer"(ho modificato la login del servizio). L'utente scelto deve avere permessi di sysadmin per il servizio SQL e deve essere lo stesso utilizzato all'interno del job di VEEAM.

REFERENCE
https://helpcenter.veeam.com/docs/backup/vsphere/application_aware_processing.html?ver=95u4
https://www.veeam.com/kb2095
https://www.veeam.com/blog/it/how-to-create-a-consistent-vm-backup.html

domenica 15 settembre 2019

Exchange Health mailbox

Exchange Health mailbox

per ogni database Exchange, dalla 2013 CU6 in poi, viene creata una health mailbox (piu quelle per ogni CAS).

Per ricrearle, in caso di problemi, occorre:

1 - fermare exchange health manager service
2 - cancellare l'account relativo alla mailbox in Active directory users and computers
3 - riavviare exchange health manager service ed aspettare qualche minuto.

Verra ricreato l'utente e la relativa mailbox
Non fatelo per le arbitration mailbox. Non funziona, certificato :(!!!

RIFERIMENTI
https://blogs.technet.microsoft.com/admoore/2015/03/11/exchange-2013-health-mailboxes/

venerdì 13 settembre 2019

GPO Loopback policy

GPO Loopback policy

Vi rimando al seguente link dove tutto e' spiegato molto bene.
https://www.ictpower.it/guide/come-funziona-il-loopback-processing-mode-nelle-group-policy.htm

Breve riassunto, ma vi consiglio comunque di leggere l'articolo, molto ben fatto.

Ogni policy ha una parte computer ed una parte utente

La parte computer viene applicato all'account macchina
La parte utente viene applicata all'utente.

Ci sono casi particolari, i server terminal ne sono un tipico esempio, in cui desideriamo che un utente, all'accesso abbia applicate particolari policy, differenti da quelle normalmente applicate. E solo quando accede su terminal.

In questo caso ci aiutano le loopback group policy.

Prendiamo l'esempio di un terminal server chiamato TS1 a cui e' applicata una policy TSpolicy a cui accede User1 a cui e' normalmente applicata la policy Userpolicy.

Senza loopback policy
User1 si logga al terminal server. Le policy applicate sono quelle macchina di TSPolicy e quelle utente di Userpolicy

Con loopback policy - MERGE
User1 si logga al terminal server. Le policy applicate sono quelle macchina di TSPolicy e quelle utente di TSPolicy + quelle utente di Userpolicy

Con loopback policy - REPLACE
User1 si logga al terminal server. Le policy applicate sono quelle macchina di TSPolicy e quelle utente di TSPolicy

Per abilitare il loopback andare in:
Computer Configuration/Administrative Templates/System/Group Policy e modificare il parametro Configure user Group Policy loopback processing mode (nel nostro esempio dovremmo farlo su TSPolicy)


martedì 13 agosto 2019

Installare OPENVPN Community su server Windows

=========================================================
Un po di tempo fa e' nata l'esigenza di far accedere un cliente da remoto ad alcune applicazioni sul proprio PC. Per via di diverse limitazioni, anche economiche (doveva completamente attrezzarsi di firewall, adeguare le linee internet, acquistare un server ecc. ecc.) mi e' sembrato piu semplice usare un server in cloud, RDP, su cui installare le applicazioni da usare
=========================================================


=========================================================
INTRODUZIONE
Usare OPENVPN Community edition che e' leggermente piu macchinoso da installare, ma che esiste anche in versione Windows e soprattutto
non ha la limitazione di max. 2 client contemporanei
Il server tipo di questa installazione ha min. 2 schede di rete. Eventuali schede di rete aggiuntive verranno disattivate
La prima scheda di rete ha indirizzo IP pubblico, mentre la seconda un IP privato (192.168.11.1/24).
L'unico firewall che verra' utilizzato e' quello di Windows, con le seguenti regole:
 - una regola per bloccare in ingresso l'accesso RDP da qualsiasi IP tranne quello pubblico di provenienza
 - una regola per consentire in ingresso l'accesso RDP dal proprio IP pubblico
 - una regola per consentire in ingresso l'accesso UDP/1194 da qualsiasi IP
Tutte le altre regole verranno disabilitate.
Installando OpenVPN viene aggiunta una terza scheda di rete TAP (bridge mode) o TUN(routing). Nel nostro caso useremo la modalita
routing. Utilizzando le impostazioni di default, OpenVPN funziona in modalita' routing, con l'interfaccia TUN.
In questa modalita viene assegnato da OpenVPN un indirizzo ip appartenente ad un range di una rete di trasporto, che DEVE essere diverso
da quello della interfaccia locale. Il client OpenVPN potrebbe prendersi un indirizzo tipo 10.8.0.12/24, mentre la LAN locale a cui deve
accedere e' 192.168.11.0/24. Se tutto cio che abbiamo fatto sopra funziona, il client potra raggiungere l'ip del server sulla rete di
trasporto (10.8.0.0/24), e potra pingarlo. Cio che non potra fare, e' raggiungere l'interfaccia locale, con indirizzamento 192.168.11.1
(salvo le modifiche da effettuare sotto). A questo punto, se il cliente riesce a pingare il server sull'interfaccia di trasporto, e
necessario effettuare alcune configurazioni aggiungive
=========================================================

=========================================================
CONFIGURAZIONE SERVER

CAMBIO NOME MACCHINA
Non installare alcun software (SQL, OpenVPN) senza aver prima cambiato il NOME HOST.
Inoltre andare in pannello di controllo/sistema/nome computer/cambia impostazioni/change/more... ed aggingere nella casella
Primary DNS suffix of this computer: zappologenova.it (oppure il nome dominio desiderato).
=========================================================

=========================================================
CONFIGURAZIONE WINDOWS FIREWALL (parte 1)
Suppontendo che l'IP pubblico sia 71.72.73.75
Appena verra avviata la macchina, questa sara raggiungibile tramite RDP da qualsiasi ip di provenienza. Occorre limitare subito gli IP
dai quali ci si puo connettere (tranne il proprio, ovviamente). Per fare questo occorre creare una regola che blocca gli intervalli di
IP (1.1.1.1 - 71.72.73.74 e 71.72.73.76 - 255.255.255.255, lasciando fuori 71.72.73.74) e crearne una seconda che consente la
connessione RDP per l'ip specifico. I seguenti comandi creano le regole di firewall:
netsh advfirewall firewall add rule name="RDP Block" dir=in action=block protocol=tcp localport=3389 enable=yes profile=any remoteip="1.1.1.1-10.7.0.255,10.9.0.1-71.72.73.74,71.72.73.76-255.255.255.255"
netsh advfirewall firewall add rule name="RDP Allow" dir=in action=allow protocol=tcp localport=3389 enable=yes profile=any remoteip="10.8.0.1-10.8.0.255,71.72.73.75"
netsh advfirewall firewall add rule name="OPENVPN" dir=in action=allow protocol=UDP localport=1194 enable=yes profile=any
lasciare abilitato anche il ping per il controllo del corretto funzionamento dell'host.
Eventualmente aggiungere delle regole per OPENVPN basate sugli eseguibili oltre a quelle che utilizzano i protocolli di rete.
Disabilitare tutte le altre regole.
=========================================================

=========================================================
INSTALLAZIONE E CONFIGURAZIONE RRAS
Installare il componente RRAS (remote access) dalla console di server manager e riavviare
Configurare il remote access con il quick wizard ed abilitare il servizio (custom configuration/routing)
Eseguire il seguente comando in powershell per installare remote access
install-WindowsFeature RemoteAccess,DirectAccess-VPN,Routing -IncludeManagementTools
=========================================================

=========================================================
ABILITAZIONE INOLTRO IP
Modificare il valore della seguente voce di registro da 0 ad 1
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"IPEnableRouter"=dword:00000001
e riavviare
p.s. senza questa modifica ed usando la modalita routing di OpenVPN, e' possibile pingare e raggiungere solo l'ip sulla rete di trasporto
(10.8.0.1). Gli IP sulla rete interna (192.168.11.1) non sarebbero raggiungibili. Grazie all'installazione dell'RRAS e di questa modifica
al registro di Windows, sara possibile raggiungere gli ip anche sulla rete interna locale, e di conseguenza eventuali altri host sulla
LAN.
=========================================================

=========================================================
INSTALLAZIONE OPENVPN
Scaricare ed installare OpenVPN dal seguente link:
https://openvpn.net/index.php/open-source/downloads.html
La versione client e server sono identiche. Si differenziano solo per i file di configurazione ed alcuni passaggi in piu per la certification authority.
Al termine dell'installazione riavviare il server.
IMPORTANTE
Durante l'installazione ricordarsi di selezionare la voce easy-rsa 2 (certificate management script).
Senza non sarebbe possibile eseguire tutta la parte di creazione dei certificati.
=========================================================

=========================================================
PROFILI DI RETE
Per evitare l'insorgere di problematiche e' bene che tutte le schede di rete appartengano al profilo privato. Il modo piu veloce e' il
seguente (da powershell)
Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private
Tutte le connessioni appartengono al profilo privato.
=========================================================

=========================================================
CONFIGURAZIONE
I nomi assegnati ai certificati non sono importanti. Devono solo combaciare tra server e client.
Quando creeremo i certificati per il server possiamo usare SERVER come CN e client1, client2 ecc. per i singoli client
Non vengono creati nomi utente e password, ma solo certificati per l'autenticazione. E possibile aggiungere una password al certificato.

GENERAZIONE CERTIFICATI
andare in C:\Program Files\OpenVPN\easy-rsa>
I passaggi per creare i certificati sono abbastanza semplici:
 - init-config
 - notepad vars.bat (modificare i parametri necessari nelle domande del certificato)

ES vars.bat modificato
set KEY_COUNTRY=IT
set KEY_PROVINCE=GE
set KEY_CITY=GENOA
set KEY_ORG=OpenVPN
set KEY_EMAIL=info@ortopediamilano.it
set KEY_CN=omsrv01.ortopediamilano.it
set KEY_NAME=omsrv01
set KEY_OU=EDP
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234

 - vars.bat
 - clean-all
 - build-ca
 - build-key-server server
ES: build-key-server omsrv01
 - build-key client1
ES: build-key lagustena01
 - build-dh

CONFIGURATION FILES

SERVER CONF FILE
Andare in "c:\Program Files\OpenVPN\sample-config" e copiare i file dentro config
1 - correggere i percorsi dei certificati (e' importante usare le doppie barre):
ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"

cert "C:\\Program Files\\OpenVPN\\config\\server.crt"

key "C:\\Program Files\\OpenVPN\\config\\server.key"  # This file should be kept secret


2 - un po piu sotto:
dh "C:\\Program Files\\OpenVPN\\config\\dh2048.pem"

3 - push "route 192.168.11.0 255.255.255.0" (supponendo che la schede di rete interna abbia come indirizzo 192.168.11.1/24)

4 - commentare la riga (nel caso e' possibile usare anche questo meccanismo per incrementare la sicurezza)
tls-auth ta.key 0 # This file is secret
 in
#by trap tls-auth ta.key 0 # This file is secret


5 - aggiungere questa riga per la shell di management (la scelta della porta e' arbitraria). Collegarsi in SSH
management localhost 7505

CLIENT CONF FILE
Andare in "c:\Program Files\OpenVPN\sample-config" e copiare i file dentro config

1 - cambiare la riga
remote myserver-1 1194
 in
remote FQDN 1194 (remote server.zappologenova.it)


2 - Commentare la riga
tls-auth ta.key 1
#by trap tls-auth ta.key 1
=========================================================

=========================================================
COPIA CONF FILES E CERTIFICATI
Dentro alla cartella "C:\Program Files\OpenVPN\sample-config" sono situati i file di configurazione modificati in precedenza, sia per il server che per i client
Dentro alla cartella "C:\Program Files\OpenVPN\easy-rsa\keys" ci sono i certificati generati in precedenza per CA, server e client.
SERVER
Copiare tutti i certificati dentro alla cartella "C:\Program Files\OpenVPN\config"
Copiare SOLO il file di configurazione del server dentro alla cartella "C:\Program Files\OpenVPN\config"
Riavviare
CLIENT
Copiare SOLO i files del certificato del client (*.crt, *.key, *.csr) ed il file di configurazione relativo dentro alla cartella "C:\Program Files\OpenVPN\config"
=========================================================

=========================================================
CONFIGURAZIONE CLIENT
Aggiungere il nome usato per il certificato al file hosts di Windows
Nel caso sopra ho aggiunto i nomi SERVER e server.zappologenova.it
=========================================================

=========================================================
LINK UTILI

GUIDA INSTALLAZIONE
https://community.openvpn.net/openvpn/wiki/Easy_Windows_Guide

OpenVPN (community edition)
https://openvpn.net/index.php/open-source/downloads.html

WINDOWS IP FORWARDING
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc962461(v=technet.10)
=========================================================

Appunti misti (di informatica)

Perché ho pensato di pubblicare questo blog?
Perché sono stufo di fare le cose e dimenticarmi come le ho fatte!!!
Scherzo, ma solo in parte... Ad una certa eta la memoria comincia a difettare :)
Di solito, quando faccio dei lavori, mi mando via mail degli appunti raffazzonati e non sempre comprensibili. Difficilmente scrivo delle note più complete. In questo modo mi obbligo a farlo, ed inoltre ho i miei appunti sempre a portata di mano. Cosi ho cominciato a scrivere questa sorta di diario di lavoro. Mi e' già capito di tornare qui per cercare cose già fatte, e solo per questo posso già considerarlo un investimento di tempo utile.
Se poi sara utile anche a qualcun altro, non potrò che esserne felice. Anche se ammetto di non fare molto per pubblicizzarlo! :).
Il senso di questo post?
Nessuno.
Il precedente post era il 17°, ed anche se non sono superstizioso, non si sa mai. Questo e' il diciottesimo :)
Ciao

WINDOWS 10 SHADOW COPY

Windows 10 e Shadow copy

Nelle proprietà disco di Windows 10 c'e' il tab Previous version/versioni precedenti. La cosa che mi sfugge e' come fare a schedularle. Nei Sistemi operativi server c'e' un tab Shadow copy per configurarle. In windows 10 no!. sembra che Microsoft abbia voluto rimpiazzare questa funzione con la file history, nelle funzioni di backup, anche se non e' proprio la stessa cosa. Insomma per creare a mano una shadow copy ho trovato due metodi a linea di comando, che riporto sotto. Per quanto mi riguarda, ho usato la prima poiché la seconda e' deprecata da windows server 2012 in poi. Il vantaggio della linea di comando, e' la possibilità di schedulare l'operazione tramite task manager, nello stesso modo in cui si faceva in precedenza.


POWERSHELL (admin mode)
Invoke-WmiMethod -Class Win32_ShadowCopy -Name Create -ArgumentList ('ClientAccessible', 'C:\')

WMIC (deprecato da Windows 2012 server in poi)
WMIC shadowcopy call Create Volume=C:\



TASK SCHEDULER
Per schedulare le shadow copy in powershell con il task manager:

ESEGUIBILE:
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"

PARAMETRI:
Invoke-WmiMethod -Class Win32_ShadowCopy -Name Create -ArgumentList ('ClientAccessible', 'C:\')


E' possibile usare alcuni metodi per esplorare le shadow copy nel caso in cui non fossero visibili tramite il tab "PREVIOUS VERSION". Il primo e' quello di accedere in \\localhost\c$, e verificare se in questo modo il tab ne mostra di visibili.
Il secondo e' di usare alcuni tool di cui sotto riporto i link, oltre a riferimenti ad articoli che mi hanno dato le dritte corrette (ad esseri onesti anche molto di piu)

CALCOLARE QUANTO SPAZIO OCCUPANO LE SHADOW COPIES
vssadmin list shadowstorage

p.s. il numero massimo di shadow copies e' 64. Superate le 64, oppure il limite di spazio preimpoststo (l'impostazione predefinita e' il 10% dello spazio disco), le piyu recenti sovrascrivono le piu vecchie.

p.s. 2 le shadows copies funzionano solo con volumi NTFS



REFERENCE


venerdì 26 luglio 2019

Malware in powershell - SLOAD Powershell threat


Oggi mi sono imbattuto in un virus che mi ha leggermente incuriosito.
Nel task manager era schedulato un job che esegue il seguente comando.
Il sintomo è che durante l'utilizzo del PC, ogni due minuti appariva un prompt dei comandi che eseguiva taskeng.

C:\Windows\system32\cmd.exe /c pow%tmp:~5,3%hell /ep bypass /win 1 /c "&{cd %public:~-15,9%;$y=ls -force -r -in comu*.*|select -last 1;$y=gc -LiteralPath $y|select -last 1;iex $y}"

Mi ha incuriosito perche di primo acchito non ho capito pressoché nulla, cosi ho pensato di tradurlo...

Chiariti un paio di dettagli diventa leggermente piu facile interpretarlo:

Parametri Powershell. E possible avviare powershell usando una serie di parametri. Nel nostro caso:

/ep bypass = imposta l'execution policy dello script in bypass per poter eseguire i comandi seguenti senza restrizioni (-ExecutionPolicy | -ex | -ep)

/win 1 = imposta la modalita della finestra windowstyle (Valid values are Normal, Minimized, Maximized and Hidden)

/c Esegue una comando

Molti comandi in powershell possono essere abbreviati usando degli alias:
ls = get-childitem
gc = get-content
iex = invoke-expression

Per visualizzare il contenuto di una variabile basta aprire un prompt dei comandi ed usare il comando echo.
ES:
echo %tmp:~5,3% = "ers" (leggi la variabile %tmp%, e di questa, partendo dal quinto carattere,
prendi i primi tre consecutivi.

%tmp% = C:\Users\xxxxxxx\AppData\Local\Temp
%tmp:~5,3% (leggi tre caratteri partendo dal quinto carattere della variabile %tmp%)

echo %public:~-15,9% = "C:\Users"

In sintesi il comando apre una powershell con permessi elevati e senza limitazioni ed esegue un comando scritto in un file

TRADUZIONE

C:\Windows\system32\cmd.exe /c = apri un prompt dei comandi ed esegui quanto segue

pow%tmp:~5,3%hell  =  dalla variabile %tmp% leggi tre caratteri partendo dal quinto. Corrisponde alla string "ers"
/c "&{cd %public:~-15,9%;$y=ls -force -r -in comu*.*|select -last 1;$y=gc -LiteralPath $y|select -last 1;iex $y}" (esegue un comando)

cd %public:~-15,9% = cd c:\Users
$y=ls -force -r -in comu*.*|select -last 1
  •   cerca nella cartella c:\users e rispettive sottocartelle tutti i file che iniziano per comu*.* e  seleziona l'ultimo

 $y=gc -LiteralPath $y|select -last 1
  • del file selezionato legge tutte le righe una ad una e seleziona l'ultima. Literlpath e' un parametro che  impedisce l'interpretazione   dei caratteri speciali.
                              ES: se %zzz% = "ciao"
                              No literal path c:\%zzz%mondo = c:\ciaomondo
                              Literal path c:\%zzz%mondo = c:\%zzz%mondo

iex $y

  • esegue il comando $y
Direi che manca ancora qualche pezzo da mettere insieme...


RIFERIMENTI
https://security.stackexchange.com/questions/213942/undetected-trojan-what-type-of-scheduled-task-is-this/213950
https://www.bleepingcomputer.com/forums/t/701329/undetected-trojan/
https://docs.microsoft.com/it-it/powershell/module/Microsoft.PowerShell.Core/About/about_pwsh?view=powershell-6
https://docs.microsoft.com/it-it/powershell/module/Microsoft.PowerShell.Core/About/about_PowerShell_exe?view=powershell-5.1
https://blog.yoroi.company/research/the-sload-powershell-threat-is-expanding-to-italy/


martedì 16 luglio 2019

Esportazione shares

Export shares and restore by registry

https://support.microsoft.com/en-us/help/125996/saving-and-restoring-existing-windows-shares

script to export shares permission on files
https://gallery.technet.microsoft.com/scriptcenter/List-Share-Permissions-83f8c419

Spostamento file server - Robocopy bug

Durante lo spostamento di un file server usando Robocopy mi e' successa una cosa molto particolare.
Ho dimenticato di escludere la cartella "c:\documents and setting" e SOPRATTUTTO di usare il parametro /xj per escludere i junction point (o soft link). Sul disco di destinazione mi sono trovato una cartella d:\user che ripeteva all'infinito il proprio contenuto. Non era possibile cancellare il contenuto a mano.
in primo luogo ho pensato di resettare i permessi, poiche alcune cartelle non consentivano l'accesso. Risolto il problema dell'accesso alle sottocartelle bloccate, mi sono reso conto che contenevano le stesse cartelle all'infinito.
Per resettare i permessi di file system sulla cartella ho usato il comando:

icacls d:\a\* /reset /q /c /t

Dopodiche ho usato il comando PURGE di robocopy

robocopy d:\log d:\a /purge (ho forzato l'allineamento della cartella inciriminata con una vuota che non contiene junction point)

Forse ho trovato un bug di robocopy... o magari dovevo fare piu attenzione io?!?


Riferimenti
https://www.2brightsparks.com/resources/articles/NTFS-Hard-Links-Junctions-and-Symbolic-Links.pdf

lunedì 15 luglio 2019

DROPBOX AS A SERVICE

I software come Dropbox, Onedrive ecc. ecc. sono molto comodi, ma richiedono l'accesso con un utente. In alcuni e' possibile bypassare questo limite installandoli ed eseguendoli come servizio in Windows. Un software datato, ma molto conosciuto, e' SRVANY, del vecchio toolkit di Windows.
Nel mio caso ho usato NSSM (http://nssm.cc/). software carino e gratuito.
Usando tale software e' possibile avviare l'eseguibile di dropbox client come servizio. Occorre fare attenzione ad alcuni dettagli.

Disattivare l'avvio automatico di Dropbox:



Scaricare NSSM e copiarlo in una cartella a piacere (io ho scelto c:\program files). Aprire un prompt dei comandi ed avviare il comando nssm.exe -install. Si aprira la schermata sotto, in cui sara' necessario avere puntare l'eseguibile (c:\Program Files (x86)\Dropbox\Client\Dropbox.exe).



E premere installa. E' fondamentale eseguire il servizio nel contesto dell'utente in cui dropbox e' stato configurato. Inizialmente ho configurato tutto come local system e non funzionava la sincronizzazione. Dopo aver modificato l'utente con cui eseguire il servizio, tutto ha funzionato a dovere.

Riferimenti e ringraziamenti:
https://0sten.wordpress.com/daws_en/
https://www.coretechnologies.com/products/AlwaysUp/Apps/RunDropboxAsAService.html



mercoledì 19 giugno 2019

_msdcs missing

Oggi ho provato ad aggiungere un nuovo domain controller e nonostante a livello di impostazioni di scheda di rete e connettività fosse tutto regolare non c'era verso di riuscirci.
Dopo qualche piccola indagine mi sono reso conto che mancava completamente la zona:
_msdcs.dominio.local.
Questa zona contiene tutti i record necessari per individuare DC, GC ed altri servizi di AD.
Per ricreare la zona ho:

 - verificato la presenza della cartella (subzone) _msdcs dentro a dominio.local.
Siccome rappresenta una delega, deve apparire in grigio e non in giallo come tutte le altre subzone.

 - creato manualmente la zona _msdcs.dominio.local (primary, AD integrated)

 - riavviato il servizio NETLOGON (accesso di rete)

Se tutto e' andato come deve la zona verrà correttamente popolata.

Nel caso in cui mancasse questa zona, potrebbe non essere possibile aggiungere domain controller, o altri client al dominio.

Link di riferimento:





mercoledì 12 giugno 2019

Collegarsi ad Office 365 tramite powershell (with or w/o MFA)

Per collegarsi in powershell senza MFA (multifactor authentication)

Aprire powershell in administrative mode

Set-ExecutionPolicy -executionpolicy Unrestricted

$UserCredential = Get-Credential
apparira una finestra in cui inserire le credenziali di accesso al tenant

Oppure

$UserCredential = Get-Credential postmaster@tenantname.onmicrosoft.com
 (verra richiesta la password)


$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Con questo comando viene creata la sessione

Import-PSSession $Session

Oppure

Import-PSSession $Session -DisableNameChecking

con questo comando si avvia la sessione

Remove-PSSession $Session
Ricordarsi di chiudere la sessione, una volta concluso.

Esiste un limite di sessioni. Una volta raggiunto questo limite non e' possibile crearne di nuove. Per collegarsi occorre aspettare che quelle occupate vadano in timeout

Get-pssession
mostra le sessioni attive in questo momento

Collegarsi ad Office365 in Powershell con MFA
Aprire il browser (come administrator), andare nell'interfaccia di gestione di Exchange online - in Hybrid e premere su powershell. 
A questo punto si aprira la powershell. Se abbiamo aperto il browser come administrator, si aprira la powershell come administrator.
Eseguire il  seguente comendo:

Connect-EXOPSSession [-UserPrincipalName -ConnectionUri <ConnectionUri> -AzureADAuthorizationEndPointUri <AzureADUri> -DelegatedOrganization <String>]
Connect-EXOPSSession -UserPrincipalName user@domain.onmicrosoft.com


REFERENCE
https://docs.microsoft.com/it-it/powershell/exchange/exchange-online/connect-to-exchange-online-powershell/mfa-connect-to-exchange-online-powershell?view=exchange-ps
https://docs.microsoft.com/en-us/powershell/exchange/exchange-online/connect-to-exchange-online-powershell/connect-to-exchange-online-powershell?redirectedfrom=MSDN&view=exchange-ps
https://docs.microsoft.com/en-us/powershell/exchange/exchange-online/connect-to-exchange-online-powershell/connect-to-exchange-online-powershell?view=exchange-ps
https://docs.microsoft.com/en-us/powershell/exchange/exchange-online/disable-access-to-exchange-online-powershell?view=exchange-ps
https://www.solvitns.com.au/how-to-connect-disconnect-to-office-365-with-powershell/