<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hardening on GeppettoBarbuto - Wiki</title><link>https://blog.carrubanet.duckdns.org/tags/hardening/</link><description>Recent content in Hardening on GeppettoBarbuto - Wiki</description><generator>Hugo -- gohugo.io</generator><language>it-it</language><lastBuildDate>Thu, 26 Mar 2026 06:36:25 +0000</lastBuildDate><atom:link href="https://blog.carrubanet.duckdns.org/tags/hardening/index.xml" rel="self" type="application/rss+xml"/><item><title>Post-Migration: Technical Optimization &amp; Hardening</title><link>https://blog.carrubanet.duckdns.org/wiki/linux-migration-post-install-optimization/</link><pubDate>Thu, 26 Mar 2026 06:36:16 +0000</pubDate><guid>https://blog.carrubanet.duckdns.org/wiki/linux-migration-post-install-optimization/</guid><description>&lt;h1 id="-post-migration-technical-optimization--hardening"&gt;⚡ Post-Migration: Technical Optimization &amp;amp; Hardening
&lt;/h1&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Obiettivo:&lt;/strong&gt; Massimizzare la reattività del sistema (responsiveness) e proteggere l&amp;rsquo;hardware attraverso la calibrazione del Kernel e dei servizi di background.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;::: info IL TOCCO DELL&amp;rsquo;INGEGNERE
L&amp;rsquo;ottimizzazione su Linux non è &amp;ldquo;magia&amp;rdquo;, ma gestione delle code (queues) e delle priorità. Interverremo sulla gestione della memoria (ZRAM), sullo scheduler dei dischi e sulle policy energetiche per eliminare i micro-lag tipici dell&amp;rsquo;hardware datato.
:::&lt;/p&gt;
&lt;h2 id="1-gestione-memoria-avanzata-zram"&gt;1. Gestione Memoria Avanzata (ZRAM)
&lt;/h2&gt;&lt;p&gt;Sia sul Mac Pro (96GB) che sul laptop (8/16GB), lo swap su disco è un collo di bottiglia. Utilizziamo la &lt;strong&gt;ZRAM&lt;/strong&gt; per creare una partizione di swap compressa direttamente nella RAM.&lt;/p&gt;
&lt;h3 id="setup-zram-debianubuntumint"&gt;Setup ZRAM (Debian/Ubuntu/Mint)
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Installazione utility&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install zram-tools -y
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Configurazione (Edit /etc/default/zramswap)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Impostiamo il 25% della RAM fisica come buffer compresso&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;PERCENT=25&amp;#34;&lt;/span&gt; | sudo tee -a /etc/default/zramswap
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;ALGORITHM=zstd&amp;#34;&lt;/span&gt; | sudo tee -a /etc/default/zramswap
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Riavvio servizio&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl restart zramswap
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Perché:&lt;/strong&gt; &lt;code&gt;zstd&lt;/code&gt; offre il miglior rapporto compressione/velocità, riducendo drasticamente le scritture sull&amp;rsquo;SSD (usura minore).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="2-kernel-tuning-via-sysctl"&gt;2. Kernel Tuning via Sysctl
&lt;/h2&gt;&lt;p&gt;Modifichiamo i parametri a runtime del kernel per favorire l&amp;rsquo;interattività rispetto al throughput puro.&lt;/p&gt;
&lt;h3 id="configurazione-etcsysctld99-performanceconf"&gt;Configurazione &lt;code&gt;/etc/sysctl.d/99-performance.conf&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Crea il file e inserisci:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# Riduci la tendenza allo swap (default 60, consigliato 10)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;vm.swappiness = 10
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# Migliora la gestione della cache del filesystem
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;vm.vfs_cache_pressure = 50
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# Ottimizzazione buffer di rete per trasferimenti file pesanti
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;net.core.rmem_max = 16777216
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;net.core.wmem_max = 16777216
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Applica con:&lt;/em&gt; &lt;code&gt;sudo sysctl --system&lt;/code&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="3-storage-optimization-ssdnvme"&gt;3. Storage Optimization (SSD/NVMe)
&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;hardware recuperato spesso monta SSD di prima generazione o adattatori NVMe.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Periodic TRIM:&lt;/strong&gt; Assicurati che il servizio di pulizia celle sia attivo per mantenere costanti le velocità di scrittura.
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl enable --now fstrim.timer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I/O Scheduler:&lt;/strong&gt; Per SSD moderni, forziamo il kernel a non perdere tempo con algoritmi di ordinamento inutili.
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Verifica lo scheduler attuale&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat /sys/block/sda/queue/scheduler
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Se supportato, &amp;#39;none&amp;#39; o &amp;#39;mq-deadline&amp;#39; sono i migliori per SSD&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="-ciclo-di-ottimizzazione-mermaid-882"&gt;📉 Ciclo di Ottimizzazione (Mermaid 8.8.2)
&lt;/h2&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;graph TD
 A["Sistema Post-Installazione"] --&gt; B{"Analisi Bottleneck"}
 
 B --&gt;|"Latenza Disco"| C["Abilitazione ZRAM &amp; Trim"]
 B --&gt;|"Surriscaldamento"| D["TLP &amp; macfanctld Config"]
 B --&gt;|"Lentezza UI"| E["Kernel Swappiness Tuning"]
 
 C --&gt; F["Verifica con 'btop' e 'iostat'"]
 D --&gt; F
 E --&gt; F
 
 F --&gt; G["Stato: Rock Solid Performance"]
 
 style G fill:#4CAF50,color:#fff,stroke:#333,stroke-width:2px&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="-security-hardening-essentials"&gt;🛡️ Security Hardening Essentials
&lt;/h2&gt;&lt;p&gt;Un sistema &amp;ldquo;Revived&amp;rdquo; deve essere anche &amp;ldquo;Secured&amp;rdquo;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Firewall (UFW):&lt;/strong&gt; Attiva immediatamente la protezione perimetrale.
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ufw default deny incoming
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ufw default allow outgoing
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ufw allow ssh &lt;span style="color:#75715e"&gt;# Se necessario l&amp;#39;accesso remoto&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ufw enable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSH Key-Only:&lt;/strong&gt; Se gestisci queste macchine in remoto, disabilita l&amp;rsquo;autenticazione via password (come visto nella sezione [[sistemi-operativi/linux/security]]).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microcode Updates:&lt;/strong&gt; Fondamentale per proteggere le vecchie CPU Xeon/i5 da vulnerabilità hardware (Spectre/Meltdown).
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install intel-microcode -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="-note-dellarchitetto"&gt;💡 Note dell&amp;rsquo;Architetto
&lt;/h2&gt;&lt;p&gt;Su macchine come il &lt;strong&gt;Mac Pro 2013&lt;/strong&gt;, l&amp;rsquo;ottimizzazione più importante rimane la gestione della ventola (&lt;code&gt;macfanctld&lt;/code&gt;). Una CPU Xeon che lavora a 10°C in meno non solo dura di più, ma mantiene frequenze di &amp;ldquo;Turbo Boost&amp;rdquo; più elevate per tempi prolungati, migliorando sensibilmente le performance di compilazione C++.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Tags: #Optimization #Kernel #Linux #Performance #Hardening*&lt;/p&gt;</description></item><item><title>Incident Report: Mitigazione Bot e Hardening Gitea</title><link>https://blog.carrubanet.duckdns.org/wiki/cybersecurity-incident_report_mitigazione_bot_hardening_gitea/</link><pubDate>Fri, 20 Mar 2026 17:20:58 +0000</pubDate><guid>https://blog.carrubanet.duckdns.org/wiki/cybersecurity-incident_report_mitigazione_bot_hardening_gitea/</guid><description>&lt;h1 id="incident-report-mitigazione-bot-e-hardening-gitea"&gt;Incident Report: Mitigazione Bot e Hardening Gitea
&lt;/h1&gt;&lt;p&gt;Questo documento analizza il problema della saturazione delle risorse (CPU e Banda) causata da crawler automatizzati (Bot) su un&amp;rsquo;istanza self-hosted di Gitea e fornisce una guida passo-passo per la messa in sicurezza.&lt;/p&gt;
&lt;h2 id="1-analisi-del-problema"&gt;1. Analisi del Problema
&lt;/h2&gt;&lt;p&gt;Nel caso specifico, il server Gitea ha subito un picco di carico (CPU &amp;gt; 95%) e traffico in uscita costante (~1MB/s).&lt;/p&gt;
&lt;h3 id="la-causa-gptbot-openai"&gt;La Causa: GPTBot (OpenAI)
&lt;/h3&gt;&lt;p&gt;L&amp;rsquo;analisi dei log ha rivelato che &lt;strong&gt;GPTBot&lt;/strong&gt; stava effettuando scansioni aggressive sull&amp;rsquo;endpoint &lt;code&gt;/compare/&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Perché è pesante:&lt;/strong&gt; L&amp;rsquo;operazione di &lt;code&gt;compare&lt;/code&gt; tra due tag o branch richiede a Git di calcolare le differenze (diff) in tempo reale. Se il repository è grande o i tag sono molti, questo processo consuma enormi quantità di cicli CPU.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Effetto Sinergico:&lt;/strong&gt; Molteplici richieste simultanee saturano i worker di Gitea, rendendo il servizio non disponibile.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="2-come-individuare-il-problema"&gt;2. Come Individuare il Problema
&lt;/h2&gt;&lt;p&gt;Per identificare se il tuo server è sotto stress da bot, segui questi passaggi:&lt;/p&gt;
&lt;h3 id="a-monitoraggio-risorse-hostlxc"&gt;A. Monitoraggio Risorse (Host/LXC)
&lt;/h3&gt;&lt;p&gt;Usa &lt;code&gt;htop&lt;/code&gt; o &lt;code&gt;top&lt;/code&gt; nel container Gitea. Se vedi molti processi chiamati &lt;code&gt;git&lt;/code&gt; o &lt;code&gt;gitea&lt;/code&gt; con alta percentuale di CPU, il problema è a livello applicativo.&lt;/p&gt;
&lt;h3 id="b-analisi-log-reverse-proxy-nginx-proxy-manager"&gt;B. Analisi Log Reverse Proxy (Nginx Proxy Manager)
&lt;/h3&gt;&lt;p&gt;Cerca pattern sospetti nei log di accesso:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Sostituisci con l&amp;#39;ID del tuo container&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker exec -it npm-app-1 grep -i &lt;span style="color:#e6db74"&gt;&amp;#34;GPTBot&amp;#34;&lt;/span&gt; /data/logs/proxy-host-2_access.log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="c-identificazione-dello-user-agent"&gt;C. Identificazione dello User-Agent
&lt;/h3&gt;&lt;p&gt;Nei log, osserva la stringa finale. Se vedi nomi come &lt;code&gt;GPTBot&lt;/code&gt;, &lt;code&gt;CCBot&lt;/code&gt;, &lt;code&gt;Bytespider&lt;/code&gt; o &lt;code&gt;YandexBot&lt;/code&gt;, si tratta di crawler automatizzati.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="3-soluzioni-immediate-quick-fix"&gt;3. Soluzioni Immediate (Quick Fix)
&lt;/h2&gt;&lt;h3 id="blocco-tramite-nginx-proxy-manager-npm"&gt;Blocco tramite Nginx Proxy Manager (NPM)
&lt;/h3&gt;&lt;p&gt;Accedi alla dashboard di NPM, vai nell&amp;rsquo;host specifico, scheda &lt;strong&gt;Advanced&lt;/strong&gt; e inserisci:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nginx" data-lang="nginx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Blocco per User-Agent (Copre i bot più aggressivi)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#e6db74"&gt;(&lt;/span&gt;$http_user_agent ~&lt;span style="color:#e6db74"&gt;*&lt;/span&gt; &lt;span style="color:#e6db74"&gt;(GPTBot|ChatGPT-User|CCBot|Bytespider|YandexBot|Amazonbot))&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;403&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Blocco IP specifico (Se il bot insiste da un unico IP)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;deny&lt;/span&gt; 74.7.243.204;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="4-messa-in-sicurezza-hardening-di-gitea"&gt;4. Messa in Sicurezza (Hardening) di Gitea
&lt;/h2&gt;&lt;h3 id="a-rendere-gitea-privato-altamente-consigliato"&gt;A. Rendere Gitea Privato (Altamente Consigliato)
&lt;/h3&gt;&lt;p&gt;Se non hai bisogno che il tuo codice sia pubblico su internet, disabilita la visualizzazione agli utenti non loggati. I bot vedranno solo la pagina di login.&lt;/p&gt;
&lt;p&gt;Modifica &lt;code&gt;app.ini&lt;/code&gt; (solitamente in &lt;code&gt;/var/lib/gitea/custom/conf/app.ini&lt;/code&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[service]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;REQUIRE_SIGNIN_VIEW&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="b-configurare-il-file-robotstxt"&gt;B. Configurare il file &lt;code&gt;robots.txt&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Indica ai bot &amp;ldquo;educati&amp;rdquo; quali aree non devono scansionare. Crea il file in &lt;code&gt;custom/public/robots.txt&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;User-agent: *
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Disallow: /*/compare/*
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Disallow: /*/commits/*
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Disallow: /*/archive/*
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Disallow: /api/*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="c-limitare-le-risorse-di-git"&gt;C. Limitare le risorse di Git
&lt;/h3&gt;&lt;p&gt;Impedisci che una singola richiesta &amp;ldquo;uccida&amp;rdquo; il server impostando dei timeout:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[git]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;TIMEOUT.DEFAULT&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;60&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[repository]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;MAX_REVISION_LIMIT&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="5-protezione-generale-per-altri-servizi"&gt;5. Protezione Generale per altri Servizi
&lt;/h2&gt;&lt;p&gt;Queste regole valgono per qualsiasi servizio esponi (Nextcloud, Home Assistant, ecc.):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Rate Limiting:&lt;/strong&gt; Configura NPM per limitare il numero di richieste al secondo per IP.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CrowdSec o Fail2Ban:&lt;/strong&gt; Installa un sistema di prevenzione intrusioni che blocca automaticamente gli IP che mostrano comportamenti malevoli.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare (Opzionale):&lt;/strong&gt; Usa Cloudflare come DNS/Proxy. Offre una &amp;ldquo;Bot Fight Mode&amp;rdquo; gratuita che filtra gran parte di questo traffico prima ancora che raggiunga il tuo server Proxmox.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Nota di Sicurezza:&lt;/strong&gt; Ricorda sempre di riavviare il servizio Gitea (&lt;code&gt;systemctl restart gitea&lt;/code&gt;) dopo ogni modifica al file &lt;code&gt;app.ini&lt;/code&gt; per rendere effettive le impostazioni.&lt;/p&gt;

 &lt;/blockquote&gt;</description></item></channel></rss>