Home Home Il Progetto The Project Il Team The Team Strumenti di Rete Tool Kit Chiave PGP PGP Key Chi sono About Servizi Services EN
List topics: List topics:

Consulente ICT ICT Consultant

> Bridging Technology, Risk Management & Business

Il Profilo
Con oltre 25 anni di esperienza in reti, sistemi e IT risk management, mi occupo di amministrazione On-Premise e Cloud. Aiuto organizzazioni e imprese a garantire la conformità normativa (GDPR, ISO 27001, NIS 1 e 2) e offro servizi avanzati di Digital Forensics. Il mio obiettivo è consolidare il mio ruolo di esperto in Cybersecurity e Intelligenza Artificiale Generativa, operando a livello internazionale in modalità remote-first.

Esperienza sul Campo
Dal 2005 sono Programmatore Sistemista e Privacy Manager per il Consorzio per la Bonifica della Capitanata, ruolo a cui affianco una continua attività di consulenza per realtà sanitarie e studi legali (Gruppo Salatto, Studio Torlontano, ecc.). Gestisco operativamente attività di DFIR (Digital Forensics and Incident Response), Business Continuity, Disaster Recovery e mitigazione dell'impatto dei rischi IT. In passato, ho coordinato team internazionali come IT Project Manager tra Amsterdam e Tallinn.

Visione Strategica e Competenze
Comprendere l'infrastruttura richiede anche una solida visione aziendale. Per questo ho integrato il mio background tecnico (Windows/Linux Server, reti TCP/IP, Firewall) con una Laurea Magistrale in Scienze Economiche conseguita con lode. Unisco l'approccio ingegneristico alle metodologie manageriali e Agile (ITIL v.3, Scrum, Six Sigma). Attualmente sto espandendo le mie competenze attraverso i percorsi ufficiali Google come Cybersecurity Expert e Generative AI Leader.

Oltre il codice
Lavoro correntemente in inglese (certificazione C2 Cambridge) e conosco altre tre lingue. Quando non sono alle prese con server o incident response, ricarico le energie a contatto con la natura, pilotando droni (UAS Open A1/A3), dedicandomi alla fotografia o sperimentando nuove tecniche ai fornelli.

Formazione in corso

  • Professional Cloud Architect (Google Cloud)

Formazione Accademica

  • Master in Gestione delle imprese e delle società MA659 (30/30)
  • Laurea Magistrale in Scienze Economiche LM-56 (110/110 e Lode)
  • Laurea Triennale in Scienze dell'Economia e della Gestione Aziendale L-18 (94/110)

Certificazioni
Di seguito l'elenco completo delle certificazioni conseguite, dei corsi di specializzazione e dei badge ottenuti, a testimonianza del continuo aggiornamento tecnico e professionale:

  • Cybersecurity Foundations Professional Certificate (ID: 51934206)
  • Microsoft Certified: Azure Fundamentals
  • Foundations of Operationalizing MITRE ATT&CK
  • Foundations of Purple Teaming
  • Autopsy Basics and Hands On – Digital Forensics (ID: YRXYSTQBK8)
  • GrassHopper Javascript – Coding Fundamentals, Coding Fundamentals II, Array Methods, Animations
  • Project Management Essentials Certified (ID: 55005870)
  • Scrum Foundation Certificate (SFPC) (ID: 43043593)
  • Six Sigma White Belt (ID: 55005099)
  • Six Sigma Yellow Belt (ID: 729673)
  • ITIL v.3 Foundation (ID: GR750562993FR)
  • Cybersecurity Essentials – Cisco Netacad
  • Introduction to Cybersecurity – Cisco Netacad
  • Introduction to Cisco Packet Tracer – Cisco Netacad
  • Introduction to Internet of Everything – Cisco Netacad
  • Google Analytics for Beginners
  • Google Digital Training (ID: R7ZXBVRRR)
  • The EU GDPR - An Introduction (ID: UC-0HROEMGN)
  • Eipass Progressive (ID: 8B77A028CB)

The Profile
With over 25 years of experience in networks, systems, and IT risk management, I specialize in On-Premise and Cloud administration. I help organizations ensure regulatory compliance (GDPR, ISO 27001, NIS 1 and 2) and provide advanced Digital Forensics services. My current goal is to consolidate my expertise in Cybersecurity and Generative AI, collaborating internationally in a remote-first work environment.

Field Experience
Since 2005, I have served as the System Programmer and Privacy Manager for the Consorzio per la Bonifica della Capitanata, alongside continuous consulting work for healthcare facilities and law firms. I operationally manage DFIR (Digital Forensics and Incident Response), Business Continuity, Disaster Recovery, and IT risk mitigation. Previously, I coordinated international teams as an IT Project Manager between Amsterdam and Tallinn.

Strategic Vision & Skills
Understanding IT infrastructure also requires a solid business vision. That is why I integrated my technical background (Windows/Linux Servers, TCP/IP networks, Firewalls) with a Master's Degree in Economics (Summa Cum Laude). I combine an engineering approach with managerial and Agile methodologies (ITIL v.3, Scrum, Six Sigma). I am currently expanding my skill set through the official Google Cybersecurity Expert and Generative AI Leader paths.

Beyond the code
I am fluent in English (Cambridge C2 certification) and have knowledge of three other languages. When I am not dealing with servers or incident response, I recharge my energy by immersing myself in nature, flying drones (UAS Open A1/A3), practicing photography, or experimenting with new cooking techniques.

Formazione in corso

  • Professional Cloud Architect (Google Cloud)

Academic Background

  • Postgraduate Master in Corporate and Business Management (MA659)
  • Master's Degree in Economics LM-56 (Summa Cum Laude)
  • Bachelor's Degree in Economics and Business Management L-18 (94/110)

Certifications
Below is the complete list of certifications, specialization courses, and badges achieved, demonstrating a continuous commitment to technical and professional development:

  • Cybersecurity Foundations Professional Certificate (ID: 51934206)
  • Microsoft Certified: Azure Fundamentals
  • Foundations of Operationalizing MITRE ATT&CK
  • Foundations of Purple Teaming
  • Autopsy Basics and Hands On – Digital Forensics (ID: YRXYSTQBK8)
  • GrassHopper Javascript – Coding Fundamentals, Coding Fundamentals II, Array Methods, Animations
  • Project Management Essentials Certified (ID: 55005870)
  • Scrum Foundation Certificate (SFPC) (ID: 43043593)
  • Six Sigma White Belt (ID: 55005099)
  • Six Sigma Yellow Belt (ID: 729673)
  • ITIL v.3 Foundation (ID: GR750562993FR)
  • Cybersecurity Essentials – Cisco Netacad
  • Introduction to Cybersecurity – Cisco Netacad
  • Introduction to Cisco Packet Tracer – Cisco Netacad
  • Introduction to Internet of Everything – Cisco Netacad
  • Google Analytics for Beginners
  • Google Digital Training (ID: R7ZXBVRRR)
  • The EU GDPR - An Introduction (ID: UC-0HROEMGN)
  • Eipass Progressive (ID: 8B77A028CB)
> author identified
Foto Francesco Russo

Difesa Ransomware: Backup Immutabili su Linux con chattr

Il Problema: I Ransomware che cifrano il Disaster Recovery

Ransomware Attack
Immagine realizzata con Gemini AI


Il più grande incubo di un sistemista non è un ransomware che blocca i dati di produzione, ma un ransomware "smart" che, prima di rivelarsi, cerca nel network le share SMB, i NAS e i repository di backup cifrandoli. Se il malware ha accesso in scrittura alla destinazione dei tuoi backup, l'intero piano di Disaster Recovery è annullato.

La Soluzione: Architettura di Backup Immutabile su Linux

Per sconfiggere questa minaccia serve l'immutabilità: un file salvato non deve poter essere modificato, sovrascritto o cancellato, nemmeno dall'utente root. Utilizzando gli attributi nativi dei file system Linux (ext4/xfs), possiamo creare un repository "antiproiettile" a costo zero.

Il comando magico: chattr

Una volta che la tua procedura di backup (es. rsync o un cron job) ha trasferito l'archivio sul server di deposito Linux, aggiungi una riga per bloccare il file a livello di kernel utilizzando il flag +i (immutable):

# Il file di backup viene reso inalterabile
sudo chattr +i /backup/repository/server_db_lunedì.tar.gz

Se un hacker ottiene l'accesso al server ed esegue uno script crittografico, il kernel respingerà l'operazione. Per permettere la rotazione dei vecchi backup, uno script blindato rimuoverà temporaneamente il flag (-i), cancellerà il file obsoleto e rimetterà il lucchetto sui nuovi arrivi.

La tua Ricompensa: Script Audit Backup Immutabili

I tuoi backup sono davvero protetti? Usa questo script bash automatizzato per scansionare la tua infrastruttura di storage Linux e verificare istantaneamente se il flag di immutabilità è applicato correttamente ai tuoi archivi critici. Inserisci la tua email per ottenerlo.

Inviando la richiesta, accetti di iscriverti alla newsletter tecnica di IT Chronicle. Riceverai immediatamente il link sicuro via email. Zero spam, pura operatività.

Ransomware Defense: Immutable Backups on Linux with chattr

The Problem: Ransomware Encrypting Disaster Recovery Plans

Ransomware Attack
Image generated with Gemini AI


A sysadmin's biggest nightmare is not ransomware locking production data, but "smart" ransomware that, before revealing itself, searches the network for SMB shares, NAS devices, and backup repositories to encrypt them. If the malware has write access to your backup destination, your entire Disaster Recovery plan is nullified.

The Solution: Immutable Backup Architecture on Linux

To defeat this threat, you need immutability: a saved file must not be modifiable, overwritable, or deletable, not even by the root user. By using native Linux file system attributes (ext4/xfs), we can create a "bulletproof" repository at zero cost.

The Magic Command: chattr

Once your backup procedure (e.g., rsync or a cron job) has transferred the archive to the Linux storage server, append a line to lock the file at the kernel level using the +i (immutable) flag:

# The backup file is made unalterable
sudo chattr +i /backup/repository/server_db_monday.tar.gz

If a hacker gains access to the server and runs a cryptographic script, the kernel will reject the operation. To allow the rotation of old backups, a highly hardened script must temporarily remove the flag (-i), delete the obsolete file, and reapply the lock to the new arrivals.

Your Reward: Immutable Backup Audit Script

Are your backups truly protected? Use this automated bash script to scan your Linux storage infrastructure and instantly verify if the immutability flag is correctly applied to your critical archives. Enter your email to get it.

By submitting this request, you agree to subscribe to the IT Chronicle technical newsletter. You will immediately receive the secure download link via email. Zero spam, pure operations.

IT Privacy & GDPR: Automating Log Deletion

The Problem: Endless Logs and GDPR Violations

Log Rotation
Image generated with Gemini AI


Sysadmins often suffer from digital hoarding. The natural tendency is to indefinitely keep log files (proxy access, web servers, firewalls) "just in case we need them for a future investigation." However, retaining logs containing IP addresses and user-identifiable data without a predefined time limit exposes the company to severe fines for violating the GDPR data minimization principle.

The Solution: Automated Data Lifecycle via Logrotate

IT infrastructure must be engineered (Privacy by Design) to autonomously destroy data when the legal basis for its retention expires. On Linux machines, the definitive tool for this task is logrotate.

Configuring Automated Oblivion

By creating a specific rule within /etc/logrotate.d/, we can instruct the daemon to rotate logs monthly, compress them, and mathematically delete those older than the limits imposed by the legal department (e.g., 6 months).

# Configuration for Apache2 - 6-month retention
/var/log/apache2/*.log {
    monthly
    rotate 6
    compress
    delaycompress
    missingok
    notifempty
}

This way, on the seventh month, the oldest log is permanently purged from the file system, making the company automatically compliant with regulatory audits.

Your Reward: Privacy Log Audit Tool

Are you hoarding illegal data on your servers? Enter your email to download the audit tool to scan log directories, calculate retention schedules, and flag files that violate GDPR compliance.

By submitting, you agree to subscribe to IT Chronicle's technical newsletter. You will immediately receive the secure link via email. Zero spam, pure operational architectures.

Privacy IT e GDPR: Automatizzare la cancellazione dei log

Il Problema: I log infiniti e la violazione del GDPR

Log Rotation
Immagine realizzata con Gemini AI


I sistemisti soffrono di accumulo seriale di dati. La tendenza naturale è conservare indefinitamente i file di log (accessi proxy, web server, firewall) "nel caso servano per un'indagine futura". Tuttavia, mantenere log contenenti indirizzi IP e dati identificativi degli utenti senza un limite temporale predefinito espone l'azienda a gravi sanzioni per violazione del principio di minimizzazione del GDPR.

La Soluzione: Data Lifecycle automatizzato tramite Logrotate

L'infrastruttura IT deve essere progettata (Privacy by Design) per distruggere autonomamente il dato quando scade la base giuridica per la sua conservazione. Su macchine Linux, lo strumento definitivo per questo compito è logrotate.

Configurare l'oblio automatico

Creando una regola specifica all'interno di /etc/logrotate.d/, possiamo istruire il demone a ruotare i log mensilmente, comprimerli ed eliminare matematicamente quelli antecedenti ai limiti imposti dall'ufficio legale (es. 6 mesi).

# Configurazione per Apache2 - Conservazione a 6 mesi
/var/log/apache2/*.log {
    monthly
    rotate 6
    compress
    delaycompress
    missingok
    notifempty
}

In questo modo, il settimo mese il log più vecchio viene definitivamente purgato dal file system, rendendo l'azienda automaticamente conforme ai controlli dell'autorità garante.

La tua Ricompensa: Tool di Verifica Privacy Log

Stai accumulando dati illegali sui tuoi server? Scarica il tool per analizzare ricorsivamente le directory di log di Linux, calcolare le date di retention ed evidenziare i file che violano il GDPR. Inserisci la tua email per ottenere il tool.

Inviando la richiesta, accetti di iscriverti alla newsletter tecnica di IT Chronicle. Riceverai immediatamente il link sicuro via email. Zero spam, pura operatività.

Enterprise Shadow AI: Running Local LLMs with Ollama

The Problem: Corporate Data Leakage via Shadow AI

Secure AI
Image generated with Gemini AI


The Shadow IT phenomenon has evolved. To speed up workflows, employees paste source code, confidential contracts, or financial data into public AI chatbots (like ChatGPT or Claude). Because these tools often use user prompts to train their language models, sensitive corporate data (PII) is irrevocably exposed outside the perimeter, violating privacy policies and regulations.

The Solution: Deploying Local LLMs with Ollama

To leverage the power of Generative AI while guaranteeing total data sovereignty, companies must bring models on-premise. The best approach is using Ollama, a framework for running large language models (LLMs) directly on enterprise hardware, entirely offline.

1. Linux Infrastructure Setup

Provision a Linux server (e.g., Debian 12) equipped with a GPU or sufficient RAM for CPU inference. Installation via the terminal is remarkably fast:

curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl enable ollama
sudo systemctl start ollama

2. Secure Open Source Models

Highly capable models like Llama 3 (Meta) or Mistral can be downloaded and run locally. Text processing is strictly isolated within the corporate server, instantly ensuring GDPR compliance.

# Download and execute the model
ollama run llama3

AI Privacy Audit Tool (Python CLI)

Are your employees feeding public models with sensitive data? Enter your email to download the CLI privacy audit tool to scan directories for leaked credentials, private subnets, and PII.

By submitting, you agree to subscribe to IT Chronicle's technical newsletter. You will immediately receive the secure link via email. Zero spam, pure operational architectures.

Shadow AI Aziendale: Eseguire LLM Locali con Ollama

Il Problema: Fuga di dati aziendali tramite Shadow AI

Secure AI
Immagine realizzata con Gemini AI


Il fenomeno dello Shadow IT si è evoluto. I dipendenti, per velocizzare il lavoro, incollano codice sorgente, contratti riservati o dati finanziari all'interno di chatbot IA pubblici (come ChatGPT o Claude). Poiché questi strumenti utilizzano spesso i prompt degli utenti per addestrare i propri modelli linguistici, i dati sensibili (PII) dell'azienda vengono irrimediabilmente esposti all'esterno, violando policy e normative sulla privacy.

La Soluzione: Deploy di LLM Locali con Ollama

Per sfruttare la potenza dell'Intelligenza Artificiale Generativa garantendo la totale sovranità del dato, le aziende devono portare i modelli on-premise. L'approccio migliore è utilizzare Ollama, un framework per eseguire modelli linguistici di grandi dimensioni (LLM) direttamente su hardware aziendale, offline.

1. Setup dell'infrastruttura Linux

Predisponi un server Linux (es. Debian 12) dotato di GPU o con sufficiente RAM per l'inferenza CPU. L'installazione è rapidissima tramite terminale:

curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl enable ollama
sudo systemctl start ollama

2. Modelli Open Source in Sicurezza

Modelli performanti come Llama 3 (Meta) o Mistral possono essere scaricati ed eseguiti localmente. L'elaborazione del testo avviene strettamente isolata all'interno del server aziendale, garantendo conformità GDPR immediata.

# Scarica ed esegue il modello
ollama run llama3

Tool di Verifica Privacy IA (Python CLI)

I tuoi dipendenti stanno alimentando modelli pubblici con dati sensibili? Inserisci la tua email per accedere allo strumento di audit CLI multilingua per mappare file, credenziali e PII a rischio fuga.

Inviando la richiesta, accetti di iscriverti alla newsletter tecnica di IT Chronicle. Riceverai immediatamente il link di conferma via email. Zero spam, solo architetture operative.

Secure Remote Management with PowerShell: Enabling WinRM HTTPS

The Problem: The Overhead of Remote Desktop (RDP)

Secure Remote Management with PowerShell
Image generated with Gemini AI


Managing dozens of Windows Servers by constantly opening Remote Desktop (RDP) sessions is slow, bandwidth-heavy, and often leaves orphaned GUI sessions hanging on the system. Furthermore, exposing the RDP protocol (port 3389) across inter-office networks unnecessarily increases the corporate attack surface.

The Solution: PowerShell Remoting via WinRM

The modern, scalable solution for IT Management is PowerShell Remoting. By utilizing the native WinRM (Windows Remote Management) protocol, you can open interactive sessions or execute batch scripts on remote machines directly from your terminal, exactly like you do with SSH on Linux.

1. Enabling WinRM on the Target Server

Log in to the target server (or deploy via Group Policy, GPO, if you are in an Active Directory environment) and open a PowerShell console with Administrator privileges. Execute the quick configuration cmdlet:

Enable-PSRemoting -Force

This command starts the WinRM service, sets it to start automatically, and creates the default firewall rules (TCP port 5985 HTTP). However, in zero-trust environments, HTTP is not enough.

2. Hardening: Forcing HTTPS (Port 5986)

To encrypt traffic at the transport layer and prevent Man-In-The-Middle attacks, you must bind WinRM to an SSL certificate. Assuming you have generated or requested a certificate for the server (via corporate PKI), you can create an HTTPS listener using PowerShell:

# Retrieve the certificate thumbprint
$Cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -match "YourServerName" }
$Thumbprint = $Cert.Thumbprint

# Configure the HTTPS listener
New-Item -Path WSMan:\LocalHost\Listener -Transport HTTPS -Address * -CertificateThumbPrint $Thumbprint -Force

Do not forget to open port 5986 on the Windows Server firewall.

3. Initiating the Connection from the Client

Now, from your Sysadmin workstation, you can connect to the server in total security by opening an interactive session:

Enter-PSSession -ComputerName YourServerName -UseSSL -Credential (Get-Credential)

Your terminal prompt will change, confirming that every command you type from that moment on is executing locally on the remote server.

Amministrazione Remota PowerShell: Abilitare WinRM Sicuro

Il Problema: La Pesantezza del Remote Desktop (RDP)

Amministrazione Remota PowerShell
Immagine realizzata con Gemini AI


Gestire dozzine di server Windows Server aprendo sessioni in Desktop Remoto (RDP) è lento, consuma banda e lascia sessioni grafiche orfane appese nel sistema. Inoltre, esporre il protocollo RDP (porta 3389) sulle reti inter-ufficio aumenta inutilmente la superficie di attacco aziendale.

La Soluzione: PowerShell Remoting via WinRM

La soluzione moderna e scalabile per l'IT Management è PowerShell Remoting. Utilizzando il protocollo nativo WinRM (Windows Remote Management), puoi aprire sessioni interattive o eseguire script in batch su macchine remote direttamente dal tuo terminale, proprio come fai con SSH su Linux.

1. Abilitare WinRM sul Server Destinazione

Collegati al server target (o usa una Group Policy, GPO, se sei in un ambiente Active Directory) e apri una console PowerShell con privilegi di Amministratore. Esegui il comando di configurazione rapida:

Enable-PSRemoting -Force

Questo comando avvia il servizio WinRM, lo imposta su avvio automatico e crea le regole predefinite sul firewall (porte TCP 5985 HTTP). Tuttavia, in ambienti zero-trust, HTTP non basta.

2. Hardening: Forzare HTTPS (Porta 5986)

Per criptare il traffico a livello di trasporto e prevenire attacchi Man-In-The-Middle, devi vincolare WinRM a un certificato SSL. Supponendo di aver generato o richiesto un certificato per il server (via PKI aziendale), puoi creare un listener HTTPS tramite PowerShell:

# Recupera il thumbprint del certificato
$Cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -match "IlTuoServer" }
$Thumbprint = $Cert.Thumbprint

# Configura il listener HTTPS
New-Item -Path WSMan:\LocalHost\Listener -Transport HTTPS -Address * -CertificateThumbPrint $Thumbprint -Force

Non dimenticare di aprire la porta 5986 sul firewall di Windows Server.

3. Eseguire la Connessione dal Client

Ora, dalla tua postazione di lavoro Sysadmin, puoi connetterti al server in totale sicurezza aprendo una sessione interattiva:

Enter-PSSession -ComputerName IlTuoServer -UseSSL -Credential (Get-Credential)

Il terminale cambierà prompt, confermandoti che ogni comando che scriverai da quel momento in poi verrà eseguito localmente sul server remoto.

Bash Scripting: Automating Server Backups and Log Rotation

The Problem: Disks Saturated by Log Files

Automating Server Backups and Log Rotation
Image generated with Gemini AI


Manual server maintenance is the enemy of efficiency. An IT sysadmin regularly has to free up disk space choked by old Apache/Nginx log files or ensure that critical configuration directories (e.g., /etc) are consistently backed up remotely. Forgetting these tasks leads to unplanned service outages.

The Solution: Bash Scripting and Cronjobs

We need to build a robust script that autonomously handles archiving critical data, purging obsolete files to free up inodes, and synchronizing everything to a secure off-site backup server.

1. The Bash Script for Backup and Cleanup

Create a file named server_maintenance.sh and paste this code. The script utilizes tar for compression, find to identify old logs, and rsync for secure transfer over SSH.

#!/bin/bash
# server_maintenance.sh - Backup and log rotation

BACKUP_DIR="/var/backups/daily"
TIMESTAMP=$(date +"%F")
TARGET_DIR="/etc"
REMOTE_SERVER="backup_user@10.0.10.50:/archive"

# 1. Creating the compressed archive
echo "[*] Creating backup for $TARGET_DIR..."
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/etc_backup_$TIMESTAMP.tar.gz" "$TARGET_DIR"

# 2. Purging old logs (older than 30 days)
echo "[*] Rotating and deleting obsolete logs..."
find /var/log -name "*.log" -type f -mtime +30 -exec rm -f {} \;

# 3. Secure remote transfer
echo "[*] Syncing to the backup server..."
rsync -avz --delete "$BACKUP_DIR/" "$REMOTE_SERVER"

echo "[+] Maintenance completed successfully."

2. Execution Permissions and Scheduling

To make the script executable, modify the permissions:

chmod +x server_maintenance.sh

Now, let's delegate the automatic execution to the cron daemon. Open the cron table for the root user by running sudo crontab -e and add the following directive to trigger the script every night at 02:00 AM:

0 2 * * * /full/path/server_maintenance.sh >> /var/log/maintenance.log 2>&1

With this automation in place, the data lifecycle on your server is completely autonomous, performance-optimized, and disaster-proof.

Script Bash: Automatizzare Backup Server e Rotazione dei Log

Il Problema: I Dischi Saturati dai File di Log

Automating Server Backups and Log Rotation
Immagine realizzata con Gemini AI


La manutenzione manuale dei server è il nemico dell'efficienza. Un sistemista IT si trova regolarmente a dover liberare spazio su disco saturato da vecchi file di log di Apache/Nginx o a dover garantire che le directory di configurazione (es. /etc) siano costantemente sottoposte a backup remoto. Dimenticarsi queste operazioni causa interruzioni di servizio non pianificate.

La Soluzione: Scripting Bash e Cronjobs

Dobbiamo creare uno script robusto che si occupi autonomamente di archiviare i dati critici, rimuovere i file obsoleti per liberare spazio e sincronizzare il tutto su un server di backup sicuro.

1. Lo Script Bash per Backup e Pulizia

Crea un file chiamato server_maintenance.sh e inserisci questo codice. Lo script utilizza tar per la compressione, find per identificare i vecchi log e rsync per il trasferimento sicuro tramite SSH.

#!/bin/bash
# server_maintenance.sh - Backup e rotazione log

BACKUP_DIR="/var/backups/daily"
TIMESTAMP=$(date +"%F")
TARGET_DIR="/etc"
REMOTE_SERVER="backup_user@10.0.10.50:/archive"

# 1. Creazione dell'archivio compresso
echo "[*] Creazione backup per $TARGET_DIR..."
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/etc_backup_$TIMESTAMP.tar.gz" "$TARGET_DIR"

# 2. Pulizia vecchi log (più vecchi di 30 giorni)
echo "[*] Rotazione e cancellazione log obsoleti..."
find /var/log -name "*.log" -type f -mtime +30 -exec rm -f {} \;

# 3. Trasferimento remoto sicuro
echo "[*] Sincronizzazione verso il server di backup..."
rsync -avz --delete "$BACKUP_DIR/" "$REMOTE_SERVER"

echo "[+] Manutenzione completata con successo."

2. Permessi di Esecuzione e Schedulazione

Per rendere lo script eseguibile, modifica i permessi:

chmod +x server_maintenance.sh

Ora deleghiamo l'esecuzione automatica al demone cron. Apri la tabella cron per l'utente root eseguendo sudo crontab -e e aggiungi la seguente direttiva per far girare lo script ogni notte alle 02:00:

0 2 * * * /percorso/completo/server_maintenance.sh >> /var/log/maintenance.log 2>&1

Con questa automazione, il ciclo di vita dei dati sul tuo server è completamente autonomo, ottimizzato per le prestazioni e sicuro contro i disastri.

Troubleshooting DNS Avanzato: Oltre il solito ipconfig

Il Problema: Connettività Presente, Risoluzione Assente

Advanced DNS Troubleshooting
Immagine realizzata con Gemini AI


È un incubo ricorrente: il server risponde al ping 8.8.8.8, ma provando a raggiungere un dominio interno o esterno il browser restituisce ERR_NAME_NOT_RESOLVED. Il comando ipconfig /flushdns non ha sortito alcun effetto. In questi scenari avanzati, limitarsi a riavviare la scheda di rete è inutile; serve ispezionare chirurgicamente la catena di risoluzione.

La Soluzione: Gli strumenti del Sysadmin (dig e nslookup)

Per diagnosticare dove si interrompe la catena DNS, dobbiamo bypassare la cache del sistema operativo e interrogare direttamente i name server.

1. Ispezionare la risoluzione con `dig` o `nslookup`

Su Linux (o WSL su Windows), utilizza dig per tracciare il percorso della richiesta. Specifica il server DNS aziendale per capire se sta rispondendo ai record interni (es. il gestionale su intranet.local):

# Interroga specificamente il Domain Controller aziendale (10.0.20.5)
dig @10.0.20.5 intranet.local

Se il server restituisce un errore SERVFAIL, il problema risiede nei forwarder del server DNS. Se restituisce NXDOMAIN, il record semplicemente non esiste nella zona DNS.

2. Il conflitto del DNS over HTTPS (DoH) nei Browser

Un problema sempre più comune nelle reti aziendali è causato dal DNS over HTTPS (DoH). I browser moderni (Chrome, Edge, Firefox) bypassano le impostazioni DNS della scheda di rete di Windows e criptano le richieste inviandole direttamente a Cloudflare o Google. Il risultato? L'utente naviga su internet ma non riesce ad accedere alle risorse aziendali interne, perché il DNS pubblico non conosce la vostra zona privata.

Per risolvere, disabilita il "DNS Sicuro" all'interno delle impostazioni di privacy del browser o forza il traffico tramite policy GPO (Group Policy Object).

3. Verificare i file Host e Resolv.conf

Su macchine Linux, assicurati che il processo di risoluzione stia puntando al server corretto. Ispeziona il file di configurazione:

cat /etc/resolv.conf

Se è gestito da systemd-resolved, controlla lo stato globale della risoluzione eseguendo:

resolvectl status

Advanced DNS Troubleshooting: Beyond the usual ipconfig

The Problem: Connectivity Exists, Resolution Fails

Advanced DNS Troubleshooting
Image generated with Gemini AI


It is a recurring nightmare: the server successfully replies to ping 8.8.8.8, but attempting to reach an internal or external domain returns ERR_NAME_NOT_RESOLVED in the browser. The standard ipconfig /flushdns command had zero effect. In these advanced scenarios, simply restarting the network adapter is useless; you need to surgically inspect the resolution chain.

The Solution: Sysadmin Tools (dig and nslookup)

To diagnose exactly where the DNS chain breaks, we must bypass the operating system's cache and query the name servers directly.

1. Inspecting Resolution with `dig` or `nslookup`

On Linux (or WSL on Windows), use dig to trace the request path. Specify your corporate DNS server to see if it responds correctly to internal records (e.g., your intranet at intranet.local):

# Specifically query the corporate Domain Controller (10.0.20.5)
dig @10.0.20.5 intranet.local

If the server returns a SERVFAIL error, the issue lies within the DNS server's forwarders. If it returns NXDOMAIN, the record simply does not exist in the DNS zone.

2. The DNS over HTTPS (DoH) Browser Conflict

An increasingly common issue in corporate networks is caused by DNS over HTTPS (DoH). Modern browsers (Chrome, Edge, Firefox) bypass the Windows network adapter's DNS settings and encrypt requests, sending them directly to Cloudflare or Google. The result? The user can browse the public internet but cannot access internal corporate resources because the public DNS knows nothing about your private zone.

To fix this, disable "Secure DNS" within the browser's privacy settings, or enforce the block company-wide via Group Policy Objects (GPO).

3. Verifying Hosts and Resolv.conf

On Linux machines, ensure the resolution process is actually pointing to the correct server. Inspect the configuration file:

cat /etc/resolv.conf

If the network is managed by systemd-resolved, check the global resolution status by executing:

resolvectl status

Network Segmentation: Mitigating Threats with VLANs

The Problem: The "Flat" Network and Lateral Movement

Network Segmentation
Image generated with Gemini AI


In many legacy corporate infrastructures, all devices (office computers, production servers, IP cameras, and guest Wi-Fi) reside on the exact same subnet (e.g., 192.168.1.0/24). If an employee opens a malicious attachment and triggers a ransomware payload, the malware exploits this "flat" architecture to perform lateral movement, instantly scanning and infecting critical servers and backup repositories without encountering a single network obstacle.

The Solution: Segmentation via VLANs and Firewalls

The principle of least privilege applies to networking as well. We must physically or logically isolate different corporate areas using VLANs (Virtual Local Area Networks) and route traffic through an internal firewall to inspect and block unauthorized communications.

1. Creating VLANs (Logical Isolation)

On your managed switches (Layer 2 or Layer 3), carve out distinct network segments. A standard minimal architecture includes:

  • VLAN 10 (Management): 10.0.10.0/24 - Exclusive sysadmin access to hypervisors, switches, and iLOs.
  • VLAN 20 (Servers): 10.0.20.0/24 - Application servers, databases, and Active Directory.
  • VLAN 30 (Clients): 10.0.30.0/24 - Employee workstations.
  • VLAN 40 (IoT/Printers): 10.0.40.0/24 - Vulnerable embedded devices.

2. Inter-VLAN Routing and Firewall Rules

Without a router or firewall (like pfSense or FortiGate) acting as the gateway, VLANs cannot communicate. Enforce strict firewall rules to allow only strictly necessary traffic. For example, clients (VLAN 30) must not be able to initiate RDP sessions to servers (VLAN 20); only the Management VLAN should have that capability.

# Logical Firewall Rule Example on pfSense
Action: PASS
Interface: VLAN_CLIENT
Source: VLAN_CLIENT Subnet
Destination: VLAN_SERVER Subnet
Ports: 443 (HTTPS), 3306 (MySQL)

Action: DROP
Interface: VLAN_CLIENT
Source: ANY
Destination: VLAN_SERVER Subnet
Ports: 3389 (RDP), 22 (SSH)

Conclusion

Network segmentation transforms your infrastructure from an open prairie into a series of watertight compartments. If an endpoint is compromised, the blast radius is confined strictly within its VLAN, saving critical services and backups from total destruction.

Segmentazione di Rete: Mitigare le Minacce con le VLAN

Il Problema: La Rete "Piatta" e il Movimento Laterale

Segmentazione di Rete
Immagine realizzata con Gemini AI


In molte infrastrutture aziendali legacy, tutti i dispositivi (computer degli uffici, server di produzione, telecamere IP e Wi-Fi ospiti) risiedono sulla stessa subnet (es. 192.168.1.0/24). Se un dipendente apre un allegato malevolo e innesca un ransomware, il malware sfrutta questa architettura "piatta" per eseguire un movimento laterale, scansionando e infettando istantaneamente i server critici e i repository di backup senza alcun ostacolo di rete.

La Soluzione: Segmentazione tramite VLAN e Firewall

Il principio del privilegio minimo si applica anche al networking. Dobbiamo isolare fisicamente o logicamente le diverse aree aziendali utilizzando le VLAN (Virtual Local Area Network) e instradare il traffico attraverso un firewall interno per bloccare le comunicazioni non autorizzate.

1. Creazione delle VLAN (Isolamento Logico)

Sui tuoi switch gestiti (Layer 2 o Layer 3), crea segmenti di rete distinti. Un'architettura standard minima prevede:

  • VLAN 10 (Management): 10.0.10.0/24 - Accesso esclusivo per i Sysadmin a hypervisor, switch e iLO.
  • VLAN 20 (Server): 10.0.20.0/24 - Server applicativi, database e Active Directory.
  • VLAN 30 (Client): 10.0.30.0/24 - Workstation dei dipendenti.
  • VLAN 40 (IoT/Stampanti): 10.0.40.0/24 - Dispositivi embedded vulnerabili.

2. Regole di Routing e Firewall Inter-VLAN

Senza un router o un firewall (come pfSense o FortiGate) a fare da gateway, le VLAN non possono comunicare tra loro. Applica regole rigide sul firewall per consentire solo il traffico strettamente necessario. Ad esempio, i client (VLAN 30) non devono poter avviare sessioni RDP verso i server (VLAN 20); solo la VLAN di Management può farlo.

# Esempio logico di regola Firewall su pfSense (UFW non gestisce VLAN routing)
Azione: PASS
Interfaccia: VLAN_CLIENT
Sorgente: VLAN_CLIENT Subnet
Destinazione: VLAN_SERVER Subnet
Porte: 443 (HTTPS), 3306 (MySQL)

Azione: DROP
Interfaccia: VLAN_CLIENT
Sorgente: ANY
Destinazione: VLAN_SERVER Subnet
Porte: 3389 (RDP), 22 (SSH)

Conclusione

Segmentare la rete trasforma l'infrastruttura da una prateria aperta a una serie di compartimenti stagni. Se un endpoint viene compromesso, il raggio dell'attacco (blast radius) rimane confinato all'interno della sua VLAN, salvando i servizi critici e i backup.

Generative AI for IT: Accelerating Bash and PowerShell Scripting

The Problem: Development Bottlenecks

Generative AI for IT
Image generated with Gemini AI


Writing complex regular expressions (regex), handling advanced PowerShell modules, or building nested loops in Bash requires hours of focus and endless referencing of official documentation. In the fast-paced realm of ICT consulting, time spent debugging syntax is time stolen from risk analysis and strategic infrastructure design.

The Solution: Generative AI as an Operational Copilot

Leading the enterprise adoption of Generative AI does not mean aiming to replace human capital, but rather equipping it with an advanced copilot. By leveraging Large Language Models (LLMs), it is possible to delegate the structural drafting of code to artificial intelligence, drastically cutting down the time-to-market for IT automations.

1. IT-Specific Prompt Engineering

The secret to generating functional code lies in providing rigorous technical constraints. A generic prompt yields generic, often vulnerable scripts. Here is the structure of an engineered prompt designed for a Sysadmin:

"Act as a Senior Windows Sysadmin. Write a PowerShell script compatible with Windows Server 2022 that compresses IIS log files older than 30 days. Mandatory requirements: use Try/Catch constructs for error handling, write operation outputs to a local log file (in JSON format), and do not rely on any third-party modules."

2. Code Refactoring and Translation

Beyond pure generation, AI shines in technical debt analysis. By feeding undocumented legacy scripts (perhaps inherited from previous administrators) into the prompt, you can request line-by-line explanations, the addition of standardized comments, or the direct translation of entire logical blocks from Bash to PowerShell, ensuring architectural uniformity across hybrid environments.

Generative AI per l'IT: Accelerare Scripting Bash e PowerShell

Il Problema: I Colli di Bottiglia nello Sviluppo Interno

Generative AI per l'IT
Immagine realizzata con Gemini AI


Scrivere complesse espressioni regolari (regex), gestire moduli PowerShell avanzati o costruire loop annidati in Bash richiede ore di concentrazione e continua consultazione della documentazione ufficiale. Nel contesto frenetico della consulenza ICT, il tempo speso a fare debugging sintattico è tempo sottratto all'analisi del rischio e alla progettazione strategica dell'infrastruttura.

La Soluzione: Generative AI come Copilota Operativo

Guidare l'adozione dell'IA Generativa (Generative AI) a livello aziendale non significa puntare alla sostituzione del capitale umano, ma fornire un copilota avanzato. Sfruttando modelli linguistici di grandi dimensioni (LLM), è possibile delegare all'intelligenza artificiale la stesura strutturale del codice, abbattendo drasticamente il time-to-market delle automazioni.

1. Prompt Engineering Specifico per l'IT

Il segreto per ottenere codice funzionale risiede nel fornire vincoli tecnici rigorosi. Un prompt generico produce script generici e spesso vulnerabili. Ecco la struttura di un prompt ingegnerizzato per un Sistemista:

"Agisci come un Senior Windows Sysadmin. Scrivi uno script PowerShell compatibile con Windows Server 2022 che comprima i file di log di IIS più vecchi di 30 giorni. Requisiti tassativi: utilizza costrutti Try/Catch per la gestione degli errori, scrivi l'output delle operazioni in un file di log locale (formato JSON) e non fare affidamento su moduli di terze parti."

2. Code Refactoring e Traduzione

Oltre alla generazione pura, l'IA brilla nell'analisi del debito tecnico. Fornendo in input script legacy non documentati (magari ereditati da precedenti amministratori), è possibile richiedere la spiegazione riga per riga, l'aggiunta di commenti standardizzati o la traduzione diretta di interi blocchi logici da Bash a PowerShell, garantendo uniformità architetturale in ambienti ibridi.

Linux Server Hardening: The 5 Mandatory Post-Install Steps

Linux Hardening
Image Generated with Gemini AI


The Problem: Default Exposure

A freshly installed Linux server exposed to the public cloud is a blank canvas, but also an easy target. Default SSH daemon configurations and open ports immediately attract automated scanners, botnets, and brute-force attacks.



The Solution: 5 Steps to Hardening

Before installing any enterprise application, the infrastructure must be locked down by enforcing the principle of least privilege.

  • 1. Public Key Authentication: Ditch passwords entirely. Generate a certificate using ssh-keygen, copy it to the server, and edit /etc/ssh/sshd_config by setting PasswordAuthentication no.
  • 2. Disable Root Login: In the same SSH configuration file, ensure you set PermitRootLogin no to force access only via standard users and subsequent privilege elevation via sudo.
  • 3. Firewall Segmentation (UFW): Drop all incoming traffic except what is strictly necessary.
    sudo ufw default deny incoming
    sudo ufw allow ssh
    sudo ufw enable
  • 4. Brute-Force Mitigation (Fail2Ban): Automatically ban malicious IPs at the network level that repeatedly fail login attempts.
    sudo apt install fail2ban -y
  • 5. Silent Updates: Keep the system protected from zero-day vulnerabilities by installing unattended-upgrades for the automatic application of critical security patches without service interruptions.

Hardening Server Linux: I 5 Passi Obbligatori Post-Installazione

Immagine generata con Gemini AI


Il Problema: L'Esposizione Predefinita

Un server Linux appena installato ed esposto su cloud pubblico è una tela bianca, ma anche un bersaglio facile. Le configurazioni predefinite del demone SSH e le porte aperte attirano immediatamente scansioni automatizzate, botnet e attacchi brute-force.

La Soluzione: 5 Passaggi di Hardening

Prima di installare qualsiasi applicativo aziendale, l'infrastruttura deve essere blindata applicando il principio del minimo privilegio.

  • 1. Autenticazione a Chiave Pubblica: Abbandona le password. Genera un certificato con ssh-keygen, copialo sul server e modifica /etc/ssh/sshd_config impostando PasswordAuthentication no.
  • 2. Disabilitare l'accesso Root: Nello stesso file di configurazione SSH, assicurati di inserire PermitRootLogin no per forzare l'accesso solo tramite utenza standard e successiva elevazione tramite sudo.
  • 3. Segmentazione con Firewall (UFW): Chiudi tutto il traffico in ingresso tranne lo stretto necessario.
    sudo ufw default deny incoming
    sudo ufw allow ssh
    sudo ufw enable
  • 4. Mitigazione Brute-Force (Fail2Ban): Banna automaticamente a livello di rete gli IP malevoli che falliscono ripetutamente i login.
    sudo apt install fail2ban -y
  • 5. Aggiornamenti Silenti: Mantieni il sistema protetto dalle vulnerabilità zero-day installando unattended-upgrades per l'applicazione automatica delle sole patch di sicurezza critiche, senza interruzioni di servizio.

IT First Aid - Ep. 29: Forgot Windows Local Password


Warning: this maneuver is exactly why we sysadmins always insist on encrypting drives with BitLocker. If the account is local (not linked to a Microsoft email) and unencrypted, here is the classic "skeleton key" trick.

Forgot Password
Image generated with Gemini AI


1. The Utilman Trick

Boot the PC with a Windows installation USB drive. Use Shift+F10 to open the command prompt. The game involves navigating to the System32 folder and renaming the Accessibility executable (utilman.exe), replacing it with the command prompt (cmd.exe).

2. The Brutal Reset

Rebooting the PC normally, when you reach the lock screen, clicking on the Accessibility icon in the bottom right will open a command prompt with maximum privileges (SYSTEM). Just type net user username newpassword to force the change and get back into the system. No formatting required.

Need technical support?

Does messing with the Windows terminal or system registries feel like a minefield? If you'd rather not risk your data or don't have time to waste, let a professional handle it.

Discover my IT services

Pronto Soccorso IT - Ep. 29: Password di Windows locale dimenticata


Attenzione: questa manovra è il motivo per cui noi sistemisti insistiamo sempre per cifrare i dischi con BitLocker. Se l'account è locale (non collegato a una mail Microsoft) e non è cifrato, ecco il classico trucco del "passpartout".

Forgot Password
Immagine realizzata con Gemini AI


1. Il trucco di Utilman

Avvia il PC con una chiavetta di installazione di Windows. Usa Shift+F10 per aprire il prompt dei comandi. Il gioco consiste nel navigare nella cartella System32 e rinominare l'eseguibile dell'Accessibilità (utilman.exe) sostituendolo con il prompt dei comandi (cmd.exe).

2. Il reset brutale

Riavviando il PC normalmente, arrivato alla schermata di blocco, cliccando sull'icona in basso a destra dell'Accessibilità, si aprirà un prompt dei comandi con privilegi massimi (SYSTEM). Basterà digitare net user nomeutente nuovapassword per forzare il cambio e rimettere piede nel sistema. Niente formattazione.

Hai bisogno di supporto tecnico?

Mettere mano al terminale di Windows o ai registri di sistema ti sembra un campo minato? Se preferisci non rischiare i tuoi dati o non hai tempo da perdere, lascia fare a un professionista.

Scopri i miei servizi IT