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

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.

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.

Secure Credential Management: Removing Cleartext Passwords from Scripts

Password Safety
Image generated with Gemini AI


The Problem: Cleartext Passwords in Source Code

Automation via scripting is the beating heart of system administration. However, hardcoding credentials (passwords, API tokens, cryptographic keys) in cleartext inside .sh or .ps1 files is a critical security violation. Anyone with read access to the file system or the Git repository compromises the entire corporate ecosystem.

The Solution: Encrypted Secrets Management

We must decouple the script's logic from the sensitive data by leveraging the operating system's native protection mechanisms.

1. In PowerShell Environments (Windows)

In Microsoft infrastructures, we can use Export-Clixml to encrypt a credential object. The encryption is tightly bound to the user account that generated it and the physical machine (thanks to the Windows Data Protection API).

# Run once to save the encrypted password
Get-Credential | Export-Clixml -Path "C:\secure\admin_creds.xml"

# In the production script, call the file:
$cred = Import-Clixml -Path "C:\secure\admin_creds.xml"

2. In Bash Environments (Linux)

On Unix systems, the most immediate, zero-cost method to protect daemons and cron scripts is to isolate variables into a separate configuration file, restricting permissions exclusively to the root user.

# Create the protected configuration file
echo "DB_PASS='SuperSecret!'" > /etc/script_secrets.conf
sudo chmod 400 /etc/script_secrets.conf

In the main script (executed with elevated privileges), simply import the variables using the source /etc/script_secrets.conf command. The code remains clean, and credentials remain invisible to unauthorized users.

Gestione Sicura delle Credenziali: Eliminare le Password dagli Script

Il Problema: Password in Chiaro nei Sorgenti

L'automazione tramite scripting è il cuore nevralgico della gestione sistemistica. Tuttavia, hardcodare credenziali (password, token API, chiavi crittografiche) in chiaro all'interno di file .sh o .ps1 è una violazione critica della sicurezza. Chiunque abbia accesso in lettura al file system o al repository Git compromette l'intero ecosistema aziendale.

Password Safety
Immagine realizzata con Gemini AI


La Soluzione: Gestione Cifrata dei Segreti

Dobbiamo disaccoppiare la logica dello script dal dato sensibile, sfruttando i meccanismi di protezione nativi del sistema operativo.

1. In Ambiente PowerShell (Windows)

In infrastrutture Microsoft, possiamo usare Export-Clixml per cifrare un oggetto credenziale. La cifratura è legata a doppio filo all'account utente che l'ha generata e alla macchina fisica (grazie alle API di Data Protection di Windows).

# Eseguire una volta per salvare la password cifrata
Get-Credential | Export-Clixml -Path "C:\secure\admin_creds.xml"

# Nello script di produzione, richiamare il file:
$cred = Import-Clixml -Path "C:\secure\admin_creds.xml"

2. In Ambiente Bash (Linux)

Nei sistemi Unix, il metodo più immediato e a costo zero per proteggere i demoni e gli script cron è isolare le variabili in un file di configurazione separato, restringendo i permessi esclusivamente all'utente root.

# Creare il file di configurazione protetto
echo "DB_PASS='SuperSegreta!'" > /etc/script_secrets.conf
sudo chmod 400 /etc/script_secrets.conf

Nello script principale (eseguito con privilegi elevati), basta importare le variabili con il comando source /etc/script_secrets.conf. Il codice rimane pulito e le credenziali risultano invisibili agli utenti non autorizzati.

WSL 2 for IT: From Windows to Linux in 5 Mins

The Problem: The Burden of Virtual Machine Management



For years, sysadmins and developers forced to operate in hybrid environments have faced an exhausting compromise: maintaining a cumbersome dual-boot setup or relying on heavy, resource-hungry virtual machines (VMs). The need to execute Bash scripts, network tools, or Docker containers directly from a Windows Server or client infrastructure has historically led to performance bottlenecks and workflow fragmentation.

The Solution: Windows Subsystem for Linux 2 (WSL 2)

With WSL 2, the rules of the game have changed. Microsoft introduced a real, native Linux kernel integrated directly into Windows. This is no longer a simple translation layer, but a highly optimized architecture based on a lightweight Hyper-V utility. The result is native file system access and I/O performance that almost rivals a bare-metal installation.

WSL2
Image generated with Gemini AI

1. Quick Installation via PowerShell

Deployment has been drastically simplified. Simply open PowerShell with administrator privileges and run a single command to install the subsystem along with the default distribution (Ubuntu):

wsl --install

For production environments, the rock-solid stability of Debian is often preferred. You can view the list of available distributions and perform a targeted installation:

wsl --list --online
wsl --install -d Debian

2. Hardening and Resource Optimization

One of the most insidious field issues is the tendency of WSL 2 to progressively consume all available RAM on the host system. To prevent this architectural "memory leak", enforcing a strict resource limit is mandatory.

Create or edit the .wslconfig file located in the root of your user profile (the path is C:\Users\YourUsername\.wslconfig) and apply the following parameters:

[wsl2]
memory=4GB
processors=2
swap=0

To forcefully apply the new configuration, restart the WSL service from your terminal:

wsl --shutdown

Conclusion

Implementing WSL 2 transforms a Windows workstation or server into the ultimate Swiss Army knife for IT Management. You instantly gain the power of the Linux terminal for troubleshooting and networking, without giving up Microsoft's native domain administration and security tools.

WSL 2 per IT: Da Windows a Linux in 5 Minuti

Il Problema: L'Onerosa Gestione delle Macchine Virtuali



Per anni, i sistemisti e gli sviluppatori costretti a operare in ambienti ibridi hanno dovuto affrontare un compromesso logorante: mantenere un dual-boot macchinoso o affidarsi a macchine virtuali (VM) pesanti e avide di risorse. L'esigenza di eseguire script Bash, tool di rete o container Docker direttamente da un'infrastruttura Windows Server o client ha sempre comportato colli di bottiglia nelle prestazioni e una netta frammentazione del flusso di lavoro.

La Soluzione: Windows Subsystem for Linux 2 (WSL 2)

Con WSL 2, le regole del gioco cambiano. Microsoft ha introdotto un vero kernel Linux integrato in Windows. Non si tratta più di un semplice layer di traduzione, ma di un'architettura basata su Hyper-V estremamente leggera. Il risultato garantisce un accesso nativo al file system e prestazioni I/O quasi equiparabili a quelle di un'installazione bare-metal.

WSL2
Immagine realizzata con Gemini AI

1. Installazione Rapida tramite PowerShell

L'implementazione è stata drasticamente semplificata. È sufficiente aprire PowerShell con privilegi di amministratore ed eseguire un singolo comando per installare il sottosistema e la distribuzione predefinita (Ubuntu):

wsl --install

Per ambienti di produzione, spesso si preferisce la stabilità di Debian. Puoi visualizzare l'elenco delle distribuzioni disponibili online e procedere con un'installazione mirata:

wsl --list --online
wsl --install -d Debian

2. Hardening e Ottimizzazione delle Risorse

Uno dei problemi più insidiosi riscontrati sul campo è la tendenza di WSL 2 a consumare progressivamente tutta la RAM disponibile nel sistema host. Per prevenire questo "memory leak" architetturale, è obbligatorio applicare un limite rigido alle risorse.

Crea o modifica il file .wslconfig nella root del tuo profilo utente (il percorso è C:\Users\NomeUtente\.wslconfig) e inserisci i seguenti parametri:

[wsl2]
memory=4GB
processors=2
swap=0

Per applicare e forzare le modifiche, riavvia immediatamente il servizio WSL dal terminale:

wsl --shutdown

Conclusione

Implementare WSL 2 trasforma una workstation o un server Windows nel coltellino svizzero definitivo per l'IT Management. Si ottiene la potenza del terminale Linux per il troubleshooting e il networking, senza rinunciare agli strumenti nativi di amministrazione di dominio e sicurezza del mondo Microsoft.