<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tutorial on u-random</title><link>https://u-random.dev/tags/tutorial/</link><description>Recent content in Tutorial on u-random</description><generator>Hugo -- gohugo.io</generator><language>it-it</language><lastBuildDate>Mon, 08 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://u-random.dev/tags/tutorial/index.xml" rel="self" type="application/rss+xml"/><item><title>Cisco Packet Tracer: La Rete che Protegge Se Stessa</title><link>https://u-random.dev/blog/cisco-packet-tracer-la-rete-che-protegge-se-stessa/</link><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/cisco-packet-tracer-la-rete-che-protegge-se-stessa/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;Una DMZ e' una zona di mezzo: esposta verso internet, isolata dalla LAN&lt;/li&gt;
&lt;li&gt;Due firewall significa che anche se Sofia/nginx viene compromessa, Giulia/MySQL e' ancora protetta da FW2&lt;/li&gt;
&lt;li&gt;Su ASA il traffico da security-level basso verso alto e' bloccato per default - non serve scrivere nessuna regola di blocco&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nameif&lt;/code&gt; - assegna nome logico all'interfaccia ASA (outside, dmz, inside)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;security-level&lt;/code&gt; - livello di fiducia: 0=esterno, 50=DMZ, 100=LAN&lt;/li&gt;
&lt;li&gt;&lt;code&gt;route outside 0.0.0.0 0.0.0.0 x.x.x.x&lt;/code&gt; - default route su ASA&lt;/li&gt;
&lt;li&gt;&lt;code&gt;show nameif&lt;/code&gt; - interfacce ASA con security level&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;hr&gt;

&lt;h2 class="relative group"&gt;Perche' questo lab
 &lt;div id="perche-questo-lab" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#perche-questo-lab" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;corsobitcoin.com e' una piattaforma di corsi online. Ha iscritti, sessioni, video, dati di pagamento.&lt;/p&gt;</description></item><item><title>Cisco Packet Tracer: Cinque Router, Una Catena, Nessun GPS</title><link>https://u-random.dev/blog/cisco-packet-tracer-cinque-router/</link><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/cisco-packet-tracer-cinque-router/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;Un router conosce solo le reti a cui e' direttamente collegato. Tutto il resto va detto esplicitamente con rotte statiche&lt;/li&gt;
&lt;li&gt;Ogni router ha piu' IP - uno per ogni interfaccia. &amp;quot;Marco e' 10.0.0.2&amp;quot; e' incompleto: Marco e' anche 10.10.10.1&lt;/li&gt;
&lt;li&gt;Le rotte statiche funzionano come indicazioni stradali: &amp;quot;se vuoi andare la', chiedi a lui&amp;quot;&lt;/li&gt;
&lt;li&gt;Se manca una rotta il pacchetto si ferma - il TTL serve esattamente per questo&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ip route [rete] [maschera] [next-hop]&lt;/code&gt; - aggiunta rotta statica&lt;/li&gt;
&lt;li&gt;&lt;code&gt;show ip route&lt;/code&gt; - tabella di routing corrente&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ping [ip]&lt;/code&gt; - test connettivita' end-to-end&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;hr&gt;
&lt;p&gt;Prima di toccare Linux voglio vedere il routing con gli occhi. In Linux i namespace sono invisibili - sono processi, non oggetti fisici. In Cisco Packet Tracer posso vedere i router come scatole, i cavi come linee, e guardare i pacchetti muoversi.&lt;/p&gt;</description></item><item><title>DLP e Wazuh</title><link>https://u-random.dev/blog/dlp-e-wazuh/</link><pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/dlp-e-wazuh/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DLP fatto in casa&lt;/strong&gt;: con 50 righe di Python e &lt;code&gt;inotify&lt;/code&gt; monitoriamo in tempo reale la scrittura di file sensibili.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pattern matching&lt;/strong&gt;: uno switch &lt;code&gt;match/case&lt;/code&gt; in Python 3.10+ intercetta SSN, carte di credito e codici fiscali.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wazuh in Docker&lt;/strong&gt;: integrazione con il manager tramite regole custom, superando i limiti di permessi e decodificatori.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tre errori reali&lt;/strong&gt;: come risolvere il blocco PEP 668 su Ubuntu 24.04, i permessi di &lt;code&gt;docker cp&lt;/code&gt; e l'errore del decoder &lt;code&gt;syslog&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;python3 -m venv ~/dlp-venv&lt;/li&gt;
&lt;li&gt;source ~/dlp-venv/bin/activate&lt;/li&gt;
&lt;li&gt;pip install inotify&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/docker/" &gt;docker&lt;/a&gt; cp single-node-wazuh.manager-1:/var/ossec/etc/rules/local_rules.xml ./local_rules.xml&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/docker/" &gt;docker&lt;/a&gt; exec single-node-wazuh.manager-1 chown wazuh:wazuh /var/ossec/etc/rules/local_rules.xml&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/tail/" &gt;tail&lt;/a&gt; -f /var/log/syslog&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Apro la dashboard Wazuh. Nella colonna &lt;code&gt;full_log&lt;/code&gt; c'è scritto:&lt;/p&gt;</description></item><item><title>ESP cifra, AH no: IPsec visto dal vivo</title><link>https://u-random.dev/blog/ipsec-strongswan-esp-ah/</link><pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/ipsec-strongswan-esp-ah/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IPsec Suite:&lt;/strong&gt; Una suite di protocolli di rete sicuri (IKE + ESP + AH) implementata a livello IP per garantire autenticazione, integrità e riservatezza.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IKE (Internet Key Exchange):&lt;/strong&gt; Negozia gli algoritmi di sicurezza e stabilisce le Security Association (SA) scambiando chiavi tramite Diffie-Hellman (UDP 500/4500).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ESP (Encapsulating Security Payload):&lt;/strong&gt; Cifra il payload dei pacchetti (ad es. con AES-256) garantendo riservatezza ed autenticazione. Supporta il NAT tramite incapsulamento NAT-T.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AH (Authentication Header):&lt;/strong&gt; Firma crittograficamente i pacchetti per garantirne l'integrità, ma &lt;strong&gt;non cifra il payload&lt;/strong&gt;, lasciando i dati in chiaro ed esposti allo sniffing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tunnel vs Transport:&lt;/strong&gt; Tunnel mode cifra l'intero pacchetto originale aggiungendo un nuovo header IP (ideale per VPN Site-to-Site); Transport mode cifra solo il payload (ideale per host-to-host).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;apt install strongswan -y&lt;/li&gt;
&lt;li&gt;ipsec version&lt;/li&gt;
&lt;li&gt;ipsec restart&lt;/li&gt;
&lt;li&gt;ipsec up mustache&lt;/li&gt;
&lt;li&gt;ipsec statusall&lt;/li&gt;
&lt;li&gt;tcpdump -i enp0s1 udp port 500&lt;/li&gt;
&lt;li&gt;tcpdump -i enp0s1 proto 50&lt;/li&gt;
&lt;li&gt;tcpdump -i enp0s1 proto 51 -v&lt;/li&gt;
&lt;li&gt;ping 192.168.64.3&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Configurare IPsec host-to-host con StrongSwan e vedere con tcpdump la differenza tra ESP e AH. ESP cifra il payload - AH no. Questa distinzione è una domanda classica Security+ e fondamentale per la sicurezza di rete.&lt;/p&gt;</description></item><item><title>Il Tunnel che Sceglie: Split vs Full VPN con WireGuard</title><link>https://u-random.dev/blog/il-tunnel-che-sceglie/</link><pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/il-tunnel-che-sceglie/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WireGuard:&lt;/strong&gt; VPN moderna basata su Curve25519 e ChaCha20, integrata direttamente nel kernel Linux come interfaccia di rete virtuale (&lt;code&gt;wg0&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VPN Concentrator:&lt;/strong&gt; Il dispositivo (in questo lab Ubuntu) che termina il tunnel cifrato, decifra il traffico e lo instrada verso la rete interna.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Split Tunnel (&lt;code&gt;AllowedIPs = 10.0.0.0/24&lt;/code&gt;):&lt;/strong&gt; Solo il traffico destinato alla subnet della VPN passa nel tunnel; il traffico internet esce in chiaro tramite il gateway locale.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full Tunnel (&lt;code&gt;AllowedIPs = 0.0.0.0/0&lt;/code&gt;):&lt;/strong&gt; Tutto il traffico, incluso quello internet, viene convogliato nel tunnel cifrato e richiede IP forwarding e MASQUERADE sul concentratore.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visibilità di rete:&lt;/strong&gt; &lt;code&gt;tcpdump&lt;/code&gt;/&lt;code&gt;tshark&lt;/code&gt; mostrano solo pacchetti UDP cifrati sull'interfaccia fisica (&lt;code&gt;enp0s1&lt;/code&gt;), mentre svelano il traffico ICMP/IP decifrato su quella virtuale (&lt;code&gt;wg0&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;apt install wireguard -y&lt;/li&gt;
&lt;li&gt;wg genkey | tee privatekey | wg pubkey &amp;gt; publickey&lt;/li&gt;
&lt;li&gt;wg-quick up wg0&lt;/li&gt;
&lt;li&gt;wg-quick down wg0&lt;/li&gt;
&lt;li&gt;ip route show&lt;/li&gt;
&lt;li&gt;traceroute 8.8.8.8&lt;/li&gt;
&lt;li&gt;tcpdump -i wg0&lt;/li&gt;
&lt;li&gt;tcpdump -i enp0s1 udp port 51820&lt;/li&gt;
&lt;li&gt;tshark -r capture.pcap&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Configurare un tunnel WireGuard tra due VM e vedere con i propri occhi la differenza tra split tunnel e full tunnel. Non teoria - routing table e traceroute che lo dimostrano empiricamente.&lt;/p&gt;</description></item><item><title>La Lettera che Cambia Busta</title><link>https://u-random.dev/blog/la-lettera-che-cambia-busta/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/la-lettera-che-cambia-busta/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;traceroute -n 8.8.8.8&lt;/code&gt; mostra i 14 router tra te e Google - ogni riga è un salto (hop)&lt;/li&gt;
&lt;li&gt;IP address = destinazione finale, non cambia mai; MAC address = tratto corrente, cambia ad ogni hop&lt;/li&gt;
&lt;li&gt;Il router legge l'IP dentro (la lettera), riscrive il MAC fuori (la busta) e passa il pacchetto al prossimo salto&lt;/li&gt;
&lt;li&gt;&lt;code&gt;* * *&lt;/code&gt; non significa percorso interrotto - solo che quel router non risponde a ICMP/UDP; prova con &lt;code&gt;-T&lt;/code&gt; (TCP)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;traceroute -n 8.8.8.8&lt;/li&gt;
&lt;li&gt;traceroute -I -n 8.8.8.8&lt;/li&gt;
&lt;li&gt;sudo traceroute -T google.com&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/ip/" &gt;ip&lt;/a&gt; neighbor show&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/ip/" &gt;ip&lt;/a&gt; route show&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;&lt;strong&gt;Sistema:&lt;/strong&gt; Linux (testato su Kali 2024 e Ubuntu 24.04)
&lt;strong&gt;Tools:&lt;/strong&gt; &lt;code&gt;traceroute&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt; - già installati di default
&lt;strong&gt;Conoscenze:&lt;/strong&gt; nessuna - si parte da zero&lt;/p&gt;</description></item><item><title>Cosa succede davvero sulla rete mentre il tuo codice gira</title><link>https://u-random.dev/blog/tcp-handshake-per-developer/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/tcp-handshake-per-developer/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;Prima di ogni richiesta HTTP il kernel fa un handshake in 3 pacchetti: SYN → SYN+ACK → ACK&lt;/li&gt;
&lt;li&gt;I flag TCP (&lt;code&gt;[S]&lt;/code&gt;, &lt;code&gt;[S.]&lt;/code&gt;, &lt;code&gt;[.]&lt;/code&gt;, &lt;code&gt;[P.]&lt;/code&gt;, &lt;code&gt;[R]&lt;/code&gt;, &lt;code&gt;[F]&lt;/code&gt;) si leggono tutti in tcpdump in tempo reale&lt;/li&gt;
&lt;li&gt;RST = chiusura brusca (porta chiusa, firewall, crash) - molti RST consecutivi sono segnale sospetto&lt;/li&gt;
&lt;li&gt;I log applicativi non vedono un SYN scan - serve tcpdump a livello di rete&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/tcpdump/" &gt;tcpdump&lt;/a&gt; -i any -n 'host api.example.com'&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/tcpdump/" &gt;tcpdump&lt;/a&gt; -i any -n 'tcp and port 443'&lt;/li&gt;
&lt;li&gt;tcpdump 'tcp[tcpflags] &amp;amp; tcp-syn != 0'&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Stai costruendo un'API. Il client manda una richiesta, il server risponde. Funziona. Ma cosa succede esattamente tra il momento in cui scrivi &lt;code&gt;fetch(&amp;quot;https://api.example.com/data&amp;quot;)&lt;/code&gt; e quello in cui arriva la risposta?&lt;/p&gt;</description></item><item><title>Offline. Non al buio.</title><link>https://u-random.dev/blog/offline-non-al-buio/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/offline-non-al-buio/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;apropos parola&lt;/code&gt; trova il comando quando non ne conosci il nome&lt;/li&gt;
&lt;li&gt;&lt;code&gt;comando --help&lt;/code&gt; ti dà i flag in cinque secondi senza uscire dal terminale&lt;/li&gt;
&lt;li&gt;&lt;code&gt;man comando&lt;/code&gt; è il manuale completo, navigabile con &lt;code&gt;/parola&lt;/code&gt; per cercare&lt;/li&gt;
&lt;li&gt;&lt;code&gt;whatis comando&lt;/code&gt; ti dice in una riga cosa fa qualcosa che hai trovato nei log&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/man/" &gt;man&lt;/a&gt; ls&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/man/" &gt;man&lt;/a&gt; 5 passwd&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/man/" &gt;man&lt;/a&gt; -k password&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/man/" &gt;man&lt;/a&gt; -f passwd&lt;/li&gt;
&lt;li&gt;apropos permission&lt;/li&gt;
&lt;li&gt;apropos -r &amp;quot;^ssh&amp;quot;&lt;/li&gt;
&lt;li&gt;whatis find&lt;/li&gt;
&lt;li&gt;tar --help&lt;/li&gt;
&lt;li&gt;tar --help | grep extract&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="auto"
 alt="Offline. Non al buio."
 width="1536"
 height="2752"
 src="https://u-random.dev/assets/offline-non-al-buio_hu_70342d2531d28f5e.webp"
 srcset="https://u-random.dev/assets/offline-non-al-buio_hu_70342d2531d28f5e.webp 800w, https://u-random.dev/assets/offline-non-al-buio_hu_61c1e927da7b19e6.webp 1280w"
 sizes="(min-width: 768px) 50vw, 65vw"
 data-zoom-src="https://u-random.dev/assets/offline-non-al-buio.webp"&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Chi Sei per il Kernel</title><link>https://u-random.dev/blog/chi-sei-per-il-kernel/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/chi-sei-per-il-kernel/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;Linux non lavora con nomi utente - lavora con numeri: UID e GID&lt;/li&gt;
&lt;li&gt;Ogni file ha tre livelli di permessi: owner, group, others&lt;/li&gt;
&lt;li&gt;Il bit SUID cambia le regole: il processo gira con i privilegi del proprietario del file, non di chi lo esegue&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find / -perm -4000&lt;/code&gt; trova tutti i binari SUID del sistema - un'occhiata vale sempre&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;id&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/ls/" &gt;ls&lt;/a&gt; -la /usr/bin/passwd&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/find/" &gt;find&lt;/a&gt; / -perm -4000 -type f 2&amp;gt;/dev/null&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/chmod/" &gt;chmod&lt;/a&gt; u+s /path/to/file&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/chmod/" &gt;chmod&lt;/a&gt; u-s /path/to/file&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/find/" &gt;find&lt;/a&gt; / -perm -4000 -type f 2&amp;gt;/dev/null | &lt;a href="https://u-random.dev/comandi/grep/" &gt;grep&lt;/a&gt; -v -E &amp;quot;^/(usr/bin|usr/sbin|bin|sbin|usr/lib)&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Linux non sa chi sei. Sa solo il tuo numero.&lt;/p&gt;</description></item></channel></rss>