<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.projetoroot.com.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Diegocosta</id>
	<title>Wiki Projeto Root - Contribuições do usuário [pt-br]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.projetoroot.com.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Diegocosta"/>
	<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Especial:Contribui%C3%A7%C3%B5es/Diegocosta"/>
	<updated>2026-06-04T01:06:47Z</updated>
	<subtitle>Contribuições do usuário</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=OpenWRT_-_Redimensionar_disco&amp;diff=1178</id>
		<title>OpenWRT - Redimensionar disco</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=OpenWRT_-_Redimensionar_disco&amp;diff=1178"/>
		<updated>2026-04-30T00:33:49Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Processo automático */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre como redimensionar a partição ou disco do OpenWRT-X86/ARM. Quando instalamos o OpenWRT através de uma img do site do fabricante a img vem o mais compacta possivel (256 MB) de disco, portanto em alguns cenários é preciso aumentar a partição para uma melhora no desempenho e para poder instalar aplicativos que geram muitos LOGs, etc.. Neste caso, faça como o exemplo abaixo para aumentar o disco para o total informado na VM.&lt;br /&gt;
&lt;br /&gt;
Fonte: https://openwrt.org/docs/guide-user/advanced/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processo manual ==&lt;br /&gt;
 # Configure startup scripts&lt;br /&gt;
 cat &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;gt; /etc/uci-defaults/70-rootpt-resize&lt;br /&gt;
 if [ ! -e /etc/rootpt-resize ] \&lt;br /&gt;
 &amp;amp;&amp;amp; type parted &amp;gt; /dev/null \&lt;br /&gt;
 &amp;amp;&amp;amp; lock -n /var/lock/root-resize&lt;br /&gt;
 then&lt;br /&gt;
 ROOT_BLK=&amp;quot;$(readlink -f /sys/dev/block/&amp;quot;$(awk -e \&lt;br /&gt;
 &#039;$9==&amp;quot;/dev/root&amp;quot;{print $3}&#039; /proc/self/mountinfo)&amp;quot;)&amp;quot;&lt;br /&gt;
 ROOT_DISK=&amp;quot;/dev/$(basename &amp;quot;${ROOT_BLK%/*}&amp;quot;)&amp;quot;&lt;br /&gt;
 ROOT_PART=&amp;quot;${ROOT_BLK##*[^0-9]}&amp;quot;&lt;br /&gt;
 parted -f -s &amp;quot;${ROOT_DISK}&amp;quot; \&lt;br /&gt;
 resizepart &amp;quot;${ROOT_PART}&amp;quot; 100%&lt;br /&gt;
 mount_root done&lt;br /&gt;
 touch /etc/rootpt-resize&lt;br /&gt;
 reboot&lt;br /&gt;
 fi&lt;br /&gt;
 exit 1&lt;br /&gt;
 EOF&lt;br /&gt;
 cat &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;gt; /etc/uci-defaults/80-rootfs-resize&lt;br /&gt;
 if [ ! -e /etc/rootfs-resize ] \&lt;br /&gt;
 &amp;amp;&amp;amp; [ -e /etc/rootpt-resize ] \&lt;br /&gt;
 &amp;amp;&amp;amp; type losetup &amp;gt; /dev/null \&lt;br /&gt;
 &amp;amp;&amp;amp; type resize2fs &amp;gt; /dev/null \&lt;br /&gt;
 &amp;amp;&amp;amp; lock -n /var/lock/root-resize&lt;br /&gt;
 then&lt;br /&gt;
 ROOT_BLK=&amp;quot;$(readlink -f /sys/dev/block/&amp;quot;$(awk -e \&lt;br /&gt;
 &#039;$9==&amp;quot;/dev/root&amp;quot;{print $3}&#039; /proc/self/mountinfo)&amp;quot;)&amp;quot;&lt;br /&gt;
 ROOT_DEV=&amp;quot;/dev/${ROOT_BLK##*/}&amp;quot;&lt;br /&gt;
 LOOP_DEV=&amp;quot;$(awk -e &#039;$5==&amp;quot;/overlay&amp;quot;{print $9}&#039; \&lt;br /&gt;
 /proc/self/mountinfo)&amp;quot;&lt;br /&gt;
 if [ -z &amp;quot;${LOOP_DEV}&amp;quot; ]&lt;br /&gt;
 then&lt;br /&gt;
 LOOP_DEV=&amp;quot;$(losetup -f)&amp;quot;&lt;br /&gt;
 losetup &amp;quot;${LOOP_DEV}&amp;quot; &amp;quot;${ROOT_DEV}&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
 resize2fs -f &amp;quot;${LOOP_DEV}&amp;quot;&lt;br /&gt;
 mount_root done&lt;br /&gt;
 touch /etc/rootfs-resize&lt;br /&gt;
 reboot&lt;br /&gt;
 fi&lt;br /&gt;
 exit 1&lt;br /&gt;
 EOF&lt;br /&gt;
 cat &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;gt;&amp;gt; /etc/sysupgrade.conf&lt;br /&gt;
 /etc/uci-defaults/70-rootpt-resize&lt;br /&gt;
 /etc/uci-defaults/80-rootfs-resize&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
== OpenWRT 25+ ==&lt;br /&gt;
&lt;br /&gt;
OPKG não é mais suportado agora passa a ser apk conforme:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! OPKG Command !! APK Equivalent !! Description&lt;br /&gt;
|-&lt;br /&gt;
| opkg install &amp;lt;pkg&amp;gt; || apk add &amp;lt;pkg&amp;gt; || Install a package&lt;br /&gt;
|-&lt;br /&gt;
| opkg remove &amp;lt;pkg&amp;gt; || apk del &amp;lt;pkg&amp;gt; || Remove a package&lt;br /&gt;
|-&lt;br /&gt;
| opkg upgrade || apk upgrade || Upgrade all packages&lt;br /&gt;
|-&lt;br /&gt;
| opkg files &amp;lt;pkg&amp;gt; || apk info -L &amp;lt;pkg&amp;gt; || List package contents&lt;br /&gt;
|-&lt;br /&gt;
| opkg list-installed || apk info || List installed packages&lt;br /&gt;
|-&lt;br /&gt;
| opkg update || apk update || Update package lists&lt;br /&gt;
|-&lt;br /&gt;
| opkg search &amp;lt;pkg&amp;gt; || apk search &amp;lt;pkg&amp;gt; || Search for packages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para versões 25 ou superior fazer na cli&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apk add lsblk block-mount fdisk parted losetup resize2fs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processo automático ==&lt;br /&gt;
&lt;br /&gt;
 wget -U &amp;quot;&amp;quot; -O expand-root.sh &amp;quot;https://openwrt.org/_export/code/docs/guide-user/advanced/expand_root?codeblock=0&amp;quot;&lt;br /&gt;
 chmod +x expand-root.sh&lt;br /&gt;
 ./expand-root.sh&lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install parted losetup resize2fs&lt;br /&gt;
 sh /etc/uci-defaults/70-rootpt-resize&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Proxmox_-_ZFS&amp;diff=1177</id>
		<title>Proxmox - ZFS</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Proxmox_-_ZFS&amp;diff=1177"/>
		<updated>2026-04-11T04:26:23Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: Criou página com &amp;#039;= Sobre = Olá! Visitante, reunimos aqui, informações sobre como adicionar um novo SSD NVME no mirror ZFS sem precisar reinstalar o Proxmox.   = Caso = Meu servidor foi instalado com 2 NVME para o sistema Proxmox, um dos SSDs NVMe apresentou defeito em garantia, após a fábrica mandar outra unidade, para não precisar reinstalar todo o sistema novamente, adicionei a unidade nova ao ZFS. Então segue abaixo o que realizei para ter sucesso!  = Adição de SSD NVMe em Mi...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sobre =&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre como adicionar um novo SSD NVME no mirror ZFS sem precisar reinstalar o Proxmox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Caso =&lt;br /&gt;
Meu servidor foi instalado com 2 NVME para o sistema Proxmox, um dos SSDs NVMe apresentou defeito em garantia, após a fábrica mandar outra unidade, para não precisar reinstalar todo o sistema novamente, adicionei a unidade nova ao ZFS. Então segue abaixo o que realizei para ter sucesso!&lt;br /&gt;
&lt;br /&gt;
= Adição de SSD NVMe em Mirror no Proxmox com ZFS (sem reinstalação) =&lt;br /&gt;
&lt;br /&gt;
= Objetivo =&lt;br /&gt;
Converter um pool ZFS existente (disco único) em um mirror utilizando um segundo SSD NVMe, sem perda de dados e mantendo o Proxmox funcional.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Cenário Inicial =&lt;br /&gt;
&lt;br /&gt;
* Proxmox instalado em ZFS (pool: rpool)&lt;br /&gt;
* 1 SSD NVMe em uso&lt;br /&gt;
* 1 SSD NVMe novo (sem partição)&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
  zpool status&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pool: rpool&lt;br /&gt;
state: ONLINE&lt;br /&gt;
&lt;br /&gt;
nvme-eui.e8238fa6bf530001001b448b4d16edd4-part3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Identificação dos Discos =&lt;br /&gt;
&lt;br /&gt;
Verificar discos e estrutura:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lsblk&lt;br /&gt;
zpool status -P&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nvme1n1 → disco atual (com sistema)&lt;br /&gt;
nvme0n1 → disco novo (vazio)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Confirmar via by-id:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l /dev/disk/by-id/ | grep nvme&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Etapa 1 - Clonar Tabela de Partições ==&lt;br /&gt;
&lt;br /&gt;
Copiar layout do disco atual para o novo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sgdisk -R=/dev/nvme0n1 /dev/nvme1n1&lt;br /&gt;
sgdisk -G /dev/nvme0n1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explicação:&lt;br /&gt;
&lt;br /&gt;
* -R → replica tabela GPT&lt;br /&gt;
&lt;br /&gt;
* -G → gera novos GUIDs (evita conflito)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Etapa 2 - Validar Partições ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lsblk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esperado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nvme0n1p1  BIOS&lt;br /&gt;
nvme0n1p2  EFI&lt;br /&gt;
nvme0n1p3  ZFS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Etapa 3 - Identificar discos via by-id ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l /dev/disk/by-id/ | grep nvme&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nvme-eui.e8238fa6bf530001001b448b4d16edd4 → disco atual&lt;br /&gt;
nvme-eui.e8238fa6bf530001001b448b4fee1734 → disco novo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Etapa 4 - Criar Mirror no ZFS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zpool attach rpool \&lt;br /&gt;
/dev/disk/by-id/nvme-eui.e8238fa6bf530001001b448b4d16edd4-part3 \&lt;br /&gt;
/dev/disk/by-id/nvme-eui.e8238fa6bf530001001b448b4fee1734-part3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Etapa 5 - Acompanhar Resilver ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zpool status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mirror-0&lt;br /&gt;
  nvme-eui...edd4-part3&lt;br /&gt;
  nvme-eui...1734-part3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Etapa 6 - Configurar Boot no Novo Disco ==&lt;br /&gt;
&lt;br /&gt;
Formatar partição EFI:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
proxmox-boot-tool format /dev/nvme0n1p2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inicializar boot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
proxmox-boot-tool init /dev/nvme0n1p2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atualizar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
proxmox-boot-tool refresh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Observação Importante ==&lt;br /&gt;
&lt;br /&gt;
Caso apareça erro:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
has wrong filesystem (!= vfat)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executar novamente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
proxmox-boot-tool init /dev/nvme0n1p2&lt;br /&gt;
proxmox-boot-tool refresh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Etapa 7 - Validar Boot ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
proxmox-boot-tool status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esperado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
92F0-69FF → nvme0n1p2&lt;br /&gt;
C7B6-374D → nvme1n1p2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Etapa 8 - Validar ZFS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zpool status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esperado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mirror-0&lt;br /&gt;
  nvme-eui...edd4-part3&lt;br /&gt;
  nvme-eui...1734-part3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Resultado Final =&lt;br /&gt;
&lt;br /&gt;
* Pool ZFS em mirror&lt;br /&gt;
* Dados redundantes&lt;br /&gt;
* Boot redundante em ambos discos&lt;br /&gt;
* Sistema resiliente a falha de SSD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Teste Recomendado =&lt;br /&gt;
&lt;br /&gt;
1. Desligar o servidor&lt;br /&gt;
&lt;br /&gt;
2. Remover um dos NVMe&lt;br /&gt;
&lt;br /&gt;
3. Ligar e validar boot&lt;br /&gt;
&lt;br /&gt;
4. Repetir com o outro disco&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Boas Práticas =&lt;br /&gt;
&lt;br /&gt;
* Sempre usar /dev/disk/by-id no ZFS&lt;br /&gt;
&lt;br /&gt;
* Nunca usar disco inteiro, sempre partição (p3)&lt;br /&gt;
&lt;br /&gt;
* Validar GUID após clonagem&lt;br /&gt;
&lt;br /&gt;
* Garantir ESP em todos os discos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Comandos Utilizados =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zpool status&lt;br /&gt;
zpool status -P&lt;br /&gt;
lsblk&lt;br /&gt;
fdisk -l&lt;br /&gt;
sgdisk -R&lt;br /&gt;
sgdisk -G&lt;br /&gt;
zpool attach&lt;br /&gt;
proxmox-boot-tool format&lt;br /&gt;
proxmox-boot-tool init&lt;br /&gt;
proxmox-boot-tool refresh&lt;br /&gt;
blkid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Otimiza%C3%A7%C3%B5es_no_Proxmox&amp;diff=1176</id>
		<title>Otimizações no Proxmox</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Otimiza%C3%A7%C3%B5es_no_Proxmox&amp;diff=1176"/>
		<updated>2026-03-06T12:10:47Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Ajustes no Kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Sobre ===&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre como realizar otimizações no sistema para que o Proxmox tenha mais performance.&lt;br /&gt;
&lt;br /&gt;
Fontes: https://pve.proxmox.com/pve-docs/&lt;br /&gt;
&lt;br /&gt;
== Conceitos ==&lt;br /&gt;
&lt;br /&gt;
Para otimizar o Proxmox para ter maior performance no hardware, você pode seguir várias práticas recomendadas e ajustes. Aqui estão algumas dicas:&lt;br /&gt;
&lt;br /&gt;
{{Nota|Tenha um Hardware Compatível e Adequado }}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPU:&#039;&#039;&#039; Utilize processadores com suporte a virtualização (&#039;&#039;&#039;Intel VT-x&#039;&#039;&#039; ou &#039;&#039;&#039;AMD-V&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memória RAM:&#039;&#039;&#039; Certifique-se de ter memória suficiente para suportar suas VMs. Utilize memória RAM com &#039;&#039;&#039;ECC&#039;&#039;&#039; (Error-Correcting Code) para maior confiabilidade.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Armazenamento:&#039;&#039;&#039; Utilize discos &#039;&#039;&#039;SSD&#039;&#039;&#039; ou &#039;&#039;&#039;NVMe&#039;&#039;&#039; para armazenamento de VMs, já que são muito mais rápidos que HDDs tradicionais.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rede:&#039;&#039;&#039; Configure placas de rede de alta performance (&#039;&#039;&#039;10GbE&#039;&#039;&#039; ou superior) e use &#039;&#039;&#039;LACP&#039;&#039;&#039; (Link Aggregation Control Protocol) para aumentar a largura de banda e redundância.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos úteis == &lt;br /&gt;
&lt;br /&gt;
Alterar a senha de compartilhamento CIFS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvesm set NOME-ID --password &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Nota| Este comando altera a senha de um compartilhamento CIFS já mapeados como storage no proxmox. }}&lt;br /&gt;
&lt;br /&gt;
=== Configuração do Proxmox ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kernel:&#039;&#039;&#039; Utilize a versão mais recente do kernel do Proxmox para aproveitar as últimas melhorias e correções de segurança.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cgroups&#039;&#039;&#039; e &#039;&#039;&#039;NUMA&#039;&#039;&#039;: Habilite &#039;&#039;&#039;cgroups&#039;&#039;&#039; e configure &#039;&#039;&#039;NUMA&#039;&#039;&#039; (Non-Uniform Memory Access) corretamente, especialmente em sistemas com múltiplas CPUs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I/O Threads&#039;&#039;&#039;: Habilite e configure I/O threads nas VMs para melhorar o desempenho de disco.&lt;br /&gt;
&lt;br /&gt;
=== Armazenamento ===&lt;br /&gt;
&#039;&#039;&#039;ZFS&#039;&#039;&#039;: Se utilizar ZFS, ajuste os parâmetros de memória ARC e considere usar SSDs para cache (ZIL e L2ARC).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LVM&#039;&#039;&#039;: Use LVM sobre discos rápidos (preferencialmente SSDs) e configure o thin provisioning para economizar espaço.&lt;br /&gt;
&lt;br /&gt;
=== Configuração das VMs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtio Drivers&#039;&#039;&#039;: Utilize drivers Virtio para disco e rede nas VMs para melhor performance.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recursos Alocados:&#039;&#039;&#039; Evite superprovisionar CPU e memória. Alocar mais recursos do que o disponível no host pode degradar a performance.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ballooning&#039;&#039;&#039;: Habilite o ballooning para gerenciar dinamicamente a memória entre as VMs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPU Pinning&#039;&#039;&#039;: Configure o pinning de CPU para garantir que certas VMs utilizem CPUs específicas, reduzindo a latência.&lt;br /&gt;
&lt;br /&gt;
=== Rede ===&lt;br /&gt;
&#039;&#039;&#039;Bridged Networking&#039;&#039;&#039;: Utilize a configuração de bridge networking para reduzir a latência e aumentar a performance de rede.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Offloading&#039;&#039;&#039;: Habilite funções de offloading na placa de rede, como checksum e segmentation offloading, para reduzir a carga na CPU.&lt;br /&gt;
&lt;br /&gt;
=== Monitoramento e Ajustes Contínuos ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Monitoramento&#039;&#039;&#039;: Utilize ferramentas como htop, iotop, vmstat e o monitoramento integrado do Proxmox para observar o uso de recursos e identificar gargalos.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ajustes&#039;&#039;&#039;: Baseado nos dados de monitoramento, ajuste a configuração das VMs e do host para otimizar a performance.&lt;br /&gt;
&lt;br /&gt;
=== Backup e Manutenção ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Snapshots&#039;&#039;&#039; e &#039;&#039;&#039;Backups&#039;&#039;&#039;: Utilize snapshots com moderação, pois podem impactar na performance. Configure backups regulares sem afetar a performance durante horários de pico.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atualizações&#039;&#039;&#039;: Mantenha o Proxmox e os sistemas das VMs sempre atualizados com as últimas versões e patches de segurança.&lt;br /&gt;
Seguindo essas práticas, você deve conseguir extrair o máximo de performance do seu ambiente Proxmox.&lt;br /&gt;
&lt;br /&gt;
== Ajustes nas Interfaces de Rede ==&lt;br /&gt;
&lt;br /&gt;
Habilite funções de offloading na placa de rede, como checksum e segmentation offloading, para reduzir a carga na CPU, no Proxmox, as opções de offloading de rede &#039;&#039;&#039;não&#039;&#039;&#039; são configuradas diretamente através da interface web do Proxmox. Em vez disso, você precisa &#039;&#039;&#039;configurá-las manualmente no sistema operacional subjacente (Debian)&#039;&#039;&#039; utilizando ferramentas de rede como &#039;&#039;&#039;ethtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Nota| O descarregamento de segmentação (TSO) é uma técnica de otimização que reduz a sobrecarga da CPU em operações de rede relacionadas a TCP/IP. Com o TSO ativado, um controlador de Internet de rede (NIC) divide grandes pedaços de dados que viajam por uma rede em segmentos TCP menores. Sem o TSO, a segmentação é realizada pela CPU, o que gera um overhead. TSO também é conhecido como LSO (Large Segment Offload).}}&lt;br /&gt;
&lt;br /&gt;
{{Nota| Generic Segmentation Offload (GSO) é uma implementação de software amplamente usada do TCP Segmentation Offload (TSO), que reduz a sobrecarga de processamento por pacote. Assim como o TSO, o GSO ganha desempenho ao permitir que aplicativos de camada superior processem um número menor de pacotes grandes (por exemplo, tamanho de MTU de 64 KB), em vez de processar um número maior de pacotes pequenos (por exemplo, tamanho de MTU de 1500 B), reduzindo assim a sobrecarga por pacote. }}&lt;br /&gt;
&lt;br /&gt;
{{Nota| Generic Receive Offload (GRO) é uma técnica de offloading baseada em SW amplamente usada para reduzir as sobrecargas de processamento por pacote. Ao remontar pacotes pequenos em pacotes maiores, o GRO permite que os aplicativos processem menos pacotes grandes diretamente, reduzindo assim o número de pacotes a serem processados. Para beneficiar aplicativos baseados em DPDK, como o Open vSwitch, o DPDK também fornece sua própria implementação de GRO. No DPDK, o GRO é implementado como uma biblioteca autônoma. Os aplicativos usam explicitamente a biblioteca GRO para remontar pacotes. }}&lt;br /&gt;
&lt;br /&gt;
{{Nota| TCP Checksum Offload (IPv4 and IPv6),esta configuração permite que o adaptador verifique o checksum TCP de pacotes de entrada/saída (RX/TX) e calcule o checksum TCP de pacotes de entrada e saída. Este recurso melhora o desempenho de recepção e transmissão e reduz a utilização da CPU. Com o Offloading desativado, o sistema operacional verifica a soma de verificação do TCP. Com o Offloading ativado, o adaptador conclui a verificação do sistema operacional. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edite o arquivo /etc/network/interfaces ou crie um script para ser executado na inicialização. Adicione as seguintes linhas ao arquivo /etc/network/interfaces (substitua &#039;&#039;&#039;ens1f0&#039;&#039;&#039; e &#039;&#039;&#039;ens1f1&#039;&#039;&#039; pelos nomes das suas interfaces de redes):&lt;br /&gt;
&lt;br /&gt;
 nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 &lt;br /&gt;
 iface ens1f0 inet manual&lt;br /&gt;
 iface ens1f1 inet manual&lt;br /&gt;
 &lt;br /&gt;
 auto vmbr0&lt;br /&gt;
 iface vmbr0 inet manual&lt;br /&gt;
        bridge-ports ens1f0&lt;br /&gt;
        bridge-stp off&lt;br /&gt;
        bridge-fd 0&lt;br /&gt;
        bridge-vlan-aware yes&lt;br /&gt;
        bridge-vids 2-4094&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 tso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 gso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 gro on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 rx on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 tx on&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 auto vmbr0.800&lt;br /&gt;
 iface vmbr0.800 inet static&lt;br /&gt;
        address 10.10.80.101/24&lt;br /&gt;
        gateway 10.10.80.1&lt;br /&gt;
 # Interface de Gerência&lt;br /&gt;
 &lt;br /&gt;
 auto vmbr1&lt;br /&gt;
 iface vmbr1 inet manual&lt;br /&gt;
        bridge-ports ens1f1&lt;br /&gt;
        bridge-stp off&lt;br /&gt;
        bridge-fd 0&lt;br /&gt;
        bridge-vlan-aware yes&lt;br /&gt;
        bridge-vids 2-4094&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 tso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 gso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 gro on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 rx on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 tx on&#039;&#039;&#039;&lt;br /&gt;
 # Interface LAN&lt;br /&gt;
 &lt;br /&gt;
 source /etc/network/interfaces.d/*&lt;br /&gt;
&lt;br /&gt;
{{Nota|Nesse arquivo, as configurações de offloading para ens1f0 e ens1f1 são aplicadas usando os comandos ethtool na seção post-up. Isso garante que as configurações de offloading sejam aplicadas cada vez que as interfaces são ativadas.}}&lt;br /&gt;
&lt;br /&gt;
Após fazer essas alterações, reinicie as interfaces de rede para aplicar as novas configurações:&lt;br /&gt;
&lt;br /&gt;
 ifdown vmbr0 &amp;amp;&amp;amp; ifup vmbr0&lt;br /&gt;
 ifdown vmbr1 &amp;amp;&amp;amp; ifup vmbr1&lt;br /&gt;
&lt;br /&gt;
== Ajustes no Kernel ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.swappiness&#039;&#039;&#039;: Controla a tendência do kernel de trocar processos da memória RAM para o swap. Valores mais baixos (por exemplo, 10) reduzem a utilização de swap e mantêm mais dados na memória RAM. Para servidores, um valor entre 10 e 20 é geralmente recomendado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.dirty_ratio&#039;&#039;&#039;: Define o percentual de memória total do sistema que pode conter dados sujos (dados que precisam ser escritos no disco) antes que o kernel comece a forçar a gravação no disco. Um valor de 10 significa que quando 10% da memória está suja, o kernel começa a escrever os dados no disco.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.dirty_background_ratio&#039;&#039;&#039;: Define o percentual de memória total do sistema que pode conter dados sujos antes que o kernel comece a escrever esses dados no disco em segundo plano. Um valor de 5 significa que quando 5% da memória está suja, o kernel começa a gravar os dados no disco em segundo plano.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.min_free_kbytes&#039;&#039;&#039;: Define a quantidade mínima de memória que o kernel deve tentar manter livre. Ajustar isso pode ajudar a evitar que o sistema fique sem memória disponível para tarefas críticas.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.overcommit_memory&#039;&#039;&#039; e &#039;&#039;&#039;vm.overcommit_ratio&#039;&#039;&#039;: Controlam como o kernel lida com a alocação de memória que excede a memória física disponível. Ajustar esses parâmetros pode ajudar a evitar que o sistema fique sem memória.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hugepages&#039;&#039;&#039;: são páginas de memória grandes que podem ser usadas para melhorar o desempenho de aplicativos que fazem uso intensivo de memória, como bancos de dados e servidores de virtualização. As páginas de memória padrão no Linux têm 4KB, enquanto as hugepages têm 2MB ou mais, dependendo da arquitetura. Usar hugepages pode reduzir a sobrecarga de gerenciamento de memória e melhorar a performance de I/O de memória.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.core.rmem_max&#039;&#039;&#039;: Define o tamanho máximo do buffer de recepção (receiving buffer) de um socket em bytes. Esse valor determina o quanto de dados pode ser bufferizado para recepção em um socket de rede. Um valor maior permite que o sistema bufferize mais dados recebidos, o que pode ser útil em redes de alta velocidade para evitar perda de pacotes e melhorar o desempenho de transferência de dados. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.core.wmem_max&#039;&#039;&#039;: Define o tamanho máximo do buffer de transmissão (sending buffer) de um socket em bytes. Esse valor determina o quanto de dados pode ser bufferizado para envio em um socket de rede. Um valor maior permite que o sistema bufferize mais dados a serem enviados, o que pode ser útil em redes de alta velocidade para melhorar a taxa de transferência de dados.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.ipv4.tcp_rmem&#039;&#039;&#039;: Define os valores mínimos, padrão e máximos do buffer de recepção para conexões TCP. O primeiro valor (4096) garante que o buffer de recepção nunca será menor que 4KB, o segundo valor (87380) é o tamanho padrão do buffer de recepção, o terceiro valor (16777216) permite que o buffer de recepção possa crescer até 16MB se necessário, dependendo da carga de rede e da quantidade de memória disponível.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.ipv4.tcp_wmem&#039;&#039;&#039;: Define os valores mínimos, padrão e máximos do buffer de transmissão para conexões TCP. O primeiro valor (4096) garante que o buffer de transmissão nunca será menor que 4KB, o segundo valor (65536) é o tamanho padrão do buffer de transmissão, o terceiro valor (16777216) permite que o buffer de transmissão possa crescer até 16MB se necessário, dependendo da carga de rede e da quantidade de memória disponível.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.ipv4.tcp_window_scaling&#039;&#039;&#039;: Habilita o uso de escala de janela TCP para conexões TCP. A escala de janela TCP é uma opção que permite aumentar o tamanho da janela TCP além do limite padrão de 64KB. Isso é feito utilizando um fator de escala que pode aumentar significativamente o tamanho da janela, permitindo maiores taxas de transferência em redes de alta latência e alta largura de banda.&lt;br /&gt;
Configurar este parâmetro como &#039;&#039;&#039;1&#039;&#039;&#039; habilita a escala de janela TCP, permitindo que o sistema aproveite melhor a largura de banda disponível em redes de alta velocidade.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.conf&lt;br /&gt;
&lt;br /&gt;
 #### Otimização Proxmox &lt;br /&gt;
 vm.swappiness=10&lt;br /&gt;
 vm.dirty_ratio=10&lt;br /&gt;
 vm.dirty_background_ratio=5&lt;br /&gt;
 vm.min_free_kbytes=65536&lt;br /&gt;
 vm.overcommit_memory=1&lt;br /&gt;
 vm.overcommit_ratio=50&lt;br /&gt;
 vm.nr_hugepages=2048&lt;br /&gt;
 net.core.rmem_max=16777216&lt;br /&gt;
 net.core.wmem_max=16777216&lt;br /&gt;
 net.ipv4.tcp_rmem=4096 87380 16777216&lt;br /&gt;
 net.ipv4.tcp_wmem=4096 65536 16777216&lt;br /&gt;
 net.ipv4.tcp_window_scaling=1&lt;br /&gt;
&lt;br /&gt;
Aplicar com:&lt;br /&gt;
&lt;br /&gt;
 sysctl -p&lt;br /&gt;
&lt;br /&gt;
{{Nota| Recomendável reiniciar o servidor para uma aplicabilidade correta.}}&lt;br /&gt;
&lt;br /&gt;
Verificar novas otimizações em: [[Tuning_e_Hardening_-_Host]]&lt;br /&gt;
&lt;br /&gt;
== Ajustes para SSD ==&lt;br /&gt;
&lt;br /&gt;
* Pós-instalação: Aumentando a durabilidade dos SSDs NVMe&lt;br /&gt;
&lt;br /&gt;
Reduzir escrita de logs desnecessários&lt;br /&gt;
&lt;br /&gt;
* Editar o rsyslog e comente a linha (para ter maior controle e armazenamento é recomendado a criação de um servidor de logs como Graylog/Rsyslog)&lt;br /&gt;
 nano /etc/rsyslog.conf&lt;br /&gt;
&lt;br /&gt;
 #module(load=&amp;quot;imklog&amp;quot; permitnonkernelfacility=&amp;quot;on&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Restart no serviço de log&lt;br /&gt;
 systemctl restart rsyslog&lt;br /&gt;
&lt;br /&gt;
Ativar journald com RAM e compressão&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /var/log/journal&lt;br /&gt;
 sed -i &#039;s/#Storage=.*/Storage=volatile/&#039; /etc/systemd/journald.conf&lt;br /&gt;
 sed -i &#039;s/#Compress=.*/Compress=yes/&#039; /etc/systemd/journald.conf&lt;br /&gt;
&lt;br /&gt;
Restart no serviço&lt;br /&gt;
 systemctl restart systemd-journald&lt;br /&gt;
&lt;br /&gt;
Ativar TRIM automaticamente (TRIM é importante para manter o desempenho e durabilidade do SSD)&lt;br /&gt;
&lt;br /&gt;
 systemctl enable fstrim.timer&lt;br /&gt;
 systemctl start fstrim.timer&lt;br /&gt;
&lt;br /&gt;
Evitar escrita excessiva em /tmp e /var/tmp (assim monta como tmp em memória RAM)&lt;br /&gt;
&lt;br /&gt;
 echo -e &amp;quot;tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,mode=1777 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
 echo -e &amp;quot;tmpfs /var/tmp tmpfs defaults,noatime,nosuid,nodev,mode=1777 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
&lt;br /&gt;
ZFS ARC tuning: Se tiver muita RAM, limitar uso da ZFS ARC melhora performance de VMs:&lt;br /&gt;
 echo &amp;quot;options zfs zfs_arc_max=4294967296&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/zfs.conf  # 4 GB&lt;br /&gt;
&lt;br /&gt;
Garanta que o sistema sempre “flushe” os dados antes de desligar (ajuste)&lt;br /&gt;
 systemctl edit systemd-logind.service&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 TimeoutStopSec=60s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veja se agora tem o trecho abaixo, se não tiver, add: &lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system/systemd-logind.service.d/override.conf&lt;br /&gt;
 [Service]&lt;br /&gt;
 TimeoutStopSec=60s&lt;br /&gt;
&lt;br /&gt;
Caso não seja possível editar o trecho acima, dá para fazer manualmente&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /etc/systemd/system/systemd-logind.service.d&lt;br /&gt;
 cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/systemd/system/systemd-logind.service.d/override.conf&lt;br /&gt;
 [Service]&lt;br /&gt;
 TimeoutStopSec=60s&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
Forçar o restart através do daemon&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Ajustar systemd-journald para reduzir escrita e flush correto&lt;br /&gt;
 nano /etc/systemd/journald.conf&lt;br /&gt;
&lt;br /&gt;
{{Nota|Se quer realmente tudo em RAM Use &#039;&#039;&#039;Storage volatile&#039;&#039;&#039; e remova &#039;&#039;&#039;SystemMaxUse&#039;&#039;&#039; Se quer logs persistentes mas com limite Use &#039;&#039;&#039;Storage persistent&#039;&#039;&#039; e mantenha &#039;&#039;&#039;SystemMaxUse&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
 Storage=volatile &lt;br /&gt;
 SystemMaxUse=200M&lt;br /&gt;
 SyncIntervalSec=5m&lt;br /&gt;
&lt;br /&gt;
Restart nos serviços&lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl restart systemd-logind&lt;br /&gt;
 systemctl restart systemd-journald&lt;br /&gt;
&lt;br /&gt;
Verificar se aplicou:&lt;br /&gt;
 systemctl show systemd-logind.service | grep TimeoutStopSec&lt;br /&gt;
 systemctl cat systemd-logind.service&lt;br /&gt;
&lt;br /&gt;
👉 Esse ajuste dá mais tempo para o systemd encerrar processos no desligamento, evitando desligamento abrupto de serviços que poderia gerar unsafe shutdown no NVMe.&lt;br /&gt;
&lt;br /&gt;
Montagem de discos com opções seguras&lt;br /&gt;
No /etc/fstab, adicione noatime para reduzir escritas, mas mantenha barrier/journal habilitados (não use nobarrier nem data=writeback). Exemplo para ext4:&lt;br /&gt;
&lt;br /&gt;
 /dev/nvme0n1p3  /  ext4  defaults,noatime  0 1&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Otimiza%C3%A7%C3%B5es_no_Proxmox&amp;diff=1175</id>
		<title>Otimizações no Proxmox</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Otimiza%C3%A7%C3%B5es_no_Proxmox&amp;diff=1175"/>
		<updated>2026-03-06T12:08:41Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Comandos úteis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Sobre ===&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre como realizar otimizações no sistema para que o Proxmox tenha mais performance.&lt;br /&gt;
&lt;br /&gt;
Fontes: https://pve.proxmox.com/pve-docs/&lt;br /&gt;
&lt;br /&gt;
== Conceitos ==&lt;br /&gt;
&lt;br /&gt;
Para otimizar o Proxmox para ter maior performance no hardware, você pode seguir várias práticas recomendadas e ajustes. Aqui estão algumas dicas:&lt;br /&gt;
&lt;br /&gt;
{{Nota|Tenha um Hardware Compatível e Adequado }}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPU:&#039;&#039;&#039; Utilize processadores com suporte a virtualização (&#039;&#039;&#039;Intel VT-x&#039;&#039;&#039; ou &#039;&#039;&#039;AMD-V&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memória RAM:&#039;&#039;&#039; Certifique-se de ter memória suficiente para suportar suas VMs. Utilize memória RAM com &#039;&#039;&#039;ECC&#039;&#039;&#039; (Error-Correcting Code) para maior confiabilidade.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Armazenamento:&#039;&#039;&#039; Utilize discos &#039;&#039;&#039;SSD&#039;&#039;&#039; ou &#039;&#039;&#039;NVMe&#039;&#039;&#039; para armazenamento de VMs, já que são muito mais rápidos que HDDs tradicionais.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rede:&#039;&#039;&#039; Configure placas de rede de alta performance (&#039;&#039;&#039;10GbE&#039;&#039;&#039; ou superior) e use &#039;&#039;&#039;LACP&#039;&#039;&#039; (Link Aggregation Control Protocol) para aumentar a largura de banda e redundância.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos úteis == &lt;br /&gt;
&lt;br /&gt;
Alterar a senha de compartilhamento CIFS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvesm set NOME-ID --password &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Nota| Este comando altera a senha de um compartilhamento CIFS já mapeados como storage no proxmox. }}&lt;br /&gt;
&lt;br /&gt;
=== Configuração do Proxmox ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kernel:&#039;&#039;&#039; Utilize a versão mais recente do kernel do Proxmox para aproveitar as últimas melhorias e correções de segurança.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cgroups&#039;&#039;&#039; e &#039;&#039;&#039;NUMA&#039;&#039;&#039;: Habilite &#039;&#039;&#039;cgroups&#039;&#039;&#039; e configure &#039;&#039;&#039;NUMA&#039;&#039;&#039; (Non-Uniform Memory Access) corretamente, especialmente em sistemas com múltiplas CPUs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I/O Threads&#039;&#039;&#039;: Habilite e configure I/O threads nas VMs para melhorar o desempenho de disco.&lt;br /&gt;
&lt;br /&gt;
=== Armazenamento ===&lt;br /&gt;
&#039;&#039;&#039;ZFS&#039;&#039;&#039;: Se utilizar ZFS, ajuste os parâmetros de memória ARC e considere usar SSDs para cache (ZIL e L2ARC).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LVM&#039;&#039;&#039;: Use LVM sobre discos rápidos (preferencialmente SSDs) e configure o thin provisioning para economizar espaço.&lt;br /&gt;
&lt;br /&gt;
=== Configuração das VMs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtio Drivers&#039;&#039;&#039;: Utilize drivers Virtio para disco e rede nas VMs para melhor performance.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recursos Alocados:&#039;&#039;&#039; Evite superprovisionar CPU e memória. Alocar mais recursos do que o disponível no host pode degradar a performance.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ballooning&#039;&#039;&#039;: Habilite o ballooning para gerenciar dinamicamente a memória entre as VMs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPU Pinning&#039;&#039;&#039;: Configure o pinning de CPU para garantir que certas VMs utilizem CPUs específicas, reduzindo a latência.&lt;br /&gt;
&lt;br /&gt;
=== Rede ===&lt;br /&gt;
&#039;&#039;&#039;Bridged Networking&#039;&#039;&#039;: Utilize a configuração de bridge networking para reduzir a latência e aumentar a performance de rede.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Offloading&#039;&#039;&#039;: Habilite funções de offloading na placa de rede, como checksum e segmentation offloading, para reduzir a carga na CPU.&lt;br /&gt;
&lt;br /&gt;
=== Monitoramento e Ajustes Contínuos ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Monitoramento&#039;&#039;&#039;: Utilize ferramentas como htop, iotop, vmstat e o monitoramento integrado do Proxmox para observar o uso de recursos e identificar gargalos.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ajustes&#039;&#039;&#039;: Baseado nos dados de monitoramento, ajuste a configuração das VMs e do host para otimizar a performance.&lt;br /&gt;
&lt;br /&gt;
=== Backup e Manutenção ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Snapshots&#039;&#039;&#039; e &#039;&#039;&#039;Backups&#039;&#039;&#039;: Utilize snapshots com moderação, pois podem impactar na performance. Configure backups regulares sem afetar a performance durante horários de pico.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atualizações&#039;&#039;&#039;: Mantenha o Proxmox e os sistemas das VMs sempre atualizados com as últimas versões e patches de segurança.&lt;br /&gt;
Seguindo essas práticas, você deve conseguir extrair o máximo de performance do seu ambiente Proxmox.&lt;br /&gt;
&lt;br /&gt;
== Ajustes nas Interfaces de Rede ==&lt;br /&gt;
&lt;br /&gt;
Habilite funções de offloading na placa de rede, como checksum e segmentation offloading, para reduzir a carga na CPU, no Proxmox, as opções de offloading de rede &#039;&#039;&#039;não&#039;&#039;&#039; são configuradas diretamente através da interface web do Proxmox. Em vez disso, você precisa &#039;&#039;&#039;configurá-las manualmente no sistema operacional subjacente (Debian)&#039;&#039;&#039; utilizando ferramentas de rede como &#039;&#039;&#039;ethtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Nota| O descarregamento de segmentação (TSO) é uma técnica de otimização que reduz a sobrecarga da CPU em operações de rede relacionadas a TCP/IP. Com o TSO ativado, um controlador de Internet de rede (NIC) divide grandes pedaços de dados que viajam por uma rede em segmentos TCP menores. Sem o TSO, a segmentação é realizada pela CPU, o que gera um overhead. TSO também é conhecido como LSO (Large Segment Offload).}}&lt;br /&gt;
&lt;br /&gt;
{{Nota| Generic Segmentation Offload (GSO) é uma implementação de software amplamente usada do TCP Segmentation Offload (TSO), que reduz a sobrecarga de processamento por pacote. Assim como o TSO, o GSO ganha desempenho ao permitir que aplicativos de camada superior processem um número menor de pacotes grandes (por exemplo, tamanho de MTU de 64 KB), em vez de processar um número maior de pacotes pequenos (por exemplo, tamanho de MTU de 1500 B), reduzindo assim a sobrecarga por pacote. }}&lt;br /&gt;
&lt;br /&gt;
{{Nota| Generic Receive Offload (GRO) é uma técnica de offloading baseada em SW amplamente usada para reduzir as sobrecargas de processamento por pacote. Ao remontar pacotes pequenos em pacotes maiores, o GRO permite que os aplicativos processem menos pacotes grandes diretamente, reduzindo assim o número de pacotes a serem processados. Para beneficiar aplicativos baseados em DPDK, como o Open vSwitch, o DPDK também fornece sua própria implementação de GRO. No DPDK, o GRO é implementado como uma biblioteca autônoma. Os aplicativos usam explicitamente a biblioteca GRO para remontar pacotes. }}&lt;br /&gt;
&lt;br /&gt;
{{Nota| TCP Checksum Offload (IPv4 and IPv6),esta configuração permite que o adaptador verifique o checksum TCP de pacotes de entrada/saída (RX/TX) e calcule o checksum TCP de pacotes de entrada e saída. Este recurso melhora o desempenho de recepção e transmissão e reduz a utilização da CPU. Com o Offloading desativado, o sistema operacional verifica a soma de verificação do TCP. Com o Offloading ativado, o adaptador conclui a verificação do sistema operacional. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edite o arquivo /etc/network/interfaces ou crie um script para ser executado na inicialização. Adicione as seguintes linhas ao arquivo /etc/network/interfaces (substitua &#039;&#039;&#039;ens1f0&#039;&#039;&#039; e &#039;&#039;&#039;ens1f1&#039;&#039;&#039; pelos nomes das suas interfaces de redes):&lt;br /&gt;
&lt;br /&gt;
 nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 &lt;br /&gt;
 iface ens1f0 inet manual&lt;br /&gt;
 iface ens1f1 inet manual&lt;br /&gt;
 &lt;br /&gt;
 auto vmbr0&lt;br /&gt;
 iface vmbr0 inet manual&lt;br /&gt;
        bridge-ports ens1f0&lt;br /&gt;
        bridge-stp off&lt;br /&gt;
        bridge-fd 0&lt;br /&gt;
        bridge-vlan-aware yes&lt;br /&gt;
        bridge-vids 2-4094&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 tso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 gso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 gro on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 rx on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 tx on&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 auto vmbr0.800&lt;br /&gt;
 iface vmbr0.800 inet static&lt;br /&gt;
        address 10.10.80.101/24&lt;br /&gt;
        gateway 10.10.80.1&lt;br /&gt;
 # Interface de Gerência&lt;br /&gt;
 &lt;br /&gt;
 auto vmbr1&lt;br /&gt;
 iface vmbr1 inet manual&lt;br /&gt;
        bridge-ports ens1f1&lt;br /&gt;
        bridge-stp off&lt;br /&gt;
        bridge-fd 0&lt;br /&gt;
        bridge-vlan-aware yes&lt;br /&gt;
        bridge-vids 2-4094&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 tso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 gso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 gro on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 rx on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 tx on&#039;&#039;&#039;&lt;br /&gt;
 # Interface LAN&lt;br /&gt;
 &lt;br /&gt;
 source /etc/network/interfaces.d/*&lt;br /&gt;
&lt;br /&gt;
{{Nota|Nesse arquivo, as configurações de offloading para ens1f0 e ens1f1 são aplicadas usando os comandos ethtool na seção post-up. Isso garante que as configurações de offloading sejam aplicadas cada vez que as interfaces são ativadas.}}&lt;br /&gt;
&lt;br /&gt;
Após fazer essas alterações, reinicie as interfaces de rede para aplicar as novas configurações:&lt;br /&gt;
&lt;br /&gt;
 ifdown vmbr0 &amp;amp;&amp;amp; ifup vmbr0&lt;br /&gt;
 ifdown vmbr1 &amp;amp;&amp;amp; ifup vmbr1&lt;br /&gt;
&lt;br /&gt;
== Ajustes no Kernel ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.swappiness&#039;&#039;&#039;: Controla a tendência do kernel de trocar processos da memória RAM para o swap. Valores mais baixos (por exemplo, 10) reduzem a utilização de swap e mantêm mais dados na memória RAM. Para servidores, um valor entre 10 e 20 é geralmente recomendado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.dirty_ratio&#039;&#039;&#039;: Define o percentual de memória total do sistema que pode conter dados sujos (dados que precisam ser escritos no disco) antes que o kernel comece a forçar a gravação no disco. Um valor de 10 significa que quando 10% da memória está suja, o kernel começa a escrever os dados no disco.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.dirty_background_ratio&#039;&#039;&#039;: Define o percentual de memória total do sistema que pode conter dados sujos antes que o kernel comece a escrever esses dados no disco em segundo plano. Um valor de 5 significa que quando 5% da memória está suja, o kernel começa a gravar os dados no disco em segundo plano.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.min_free_kbytes&#039;&#039;&#039;: Define a quantidade mínima de memória que o kernel deve tentar manter livre. Ajustar isso pode ajudar a evitar que o sistema fique sem memória disponível para tarefas críticas.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.overcommit_memory&#039;&#039;&#039; e &#039;&#039;&#039;vm.overcommit_ratio&#039;&#039;&#039;: Controlam como o kernel lida com a alocação de memória que excede a memória física disponível. Ajustar esses parâmetros pode ajudar a evitar que o sistema fique sem memória.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hugepages&#039;&#039;&#039;: são páginas de memória grandes que podem ser usadas para melhorar o desempenho de aplicativos que fazem uso intensivo de memória, como bancos de dados e servidores de virtualização. As páginas de memória padrão no Linux têm 4KB, enquanto as hugepages têm 2MB ou mais, dependendo da arquitetura. Usar hugepages pode reduzir a sobrecarga de gerenciamento de memória e melhorar a performance de I/O de memória.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.core.rmem_max&#039;&#039;&#039;: Define o tamanho máximo do buffer de recepção (receiving buffer) de um socket em bytes. Esse valor determina o quanto de dados pode ser bufferizado para recepção em um socket de rede. Um valor maior permite que o sistema bufferize mais dados recebidos, o que pode ser útil em redes de alta velocidade para evitar perda de pacotes e melhorar o desempenho de transferência de dados. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.core.wmem_max&#039;&#039;&#039;: Define o tamanho máximo do buffer de transmissão (sending buffer) de um socket em bytes. Esse valor determina o quanto de dados pode ser bufferizado para envio em um socket de rede. Um valor maior permite que o sistema bufferize mais dados a serem enviados, o que pode ser útil em redes de alta velocidade para melhorar a taxa de transferência de dados.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.ipv4.tcp_rmem&#039;&#039;&#039;: Define os valores mínimos, padrão e máximos do buffer de recepção para conexões TCP. O primeiro valor (4096) garante que o buffer de recepção nunca será menor que 4KB, o segundo valor (87380) é o tamanho padrão do buffer de recepção, o terceiro valor (16777216) permite que o buffer de recepção possa crescer até 16MB se necessário, dependendo da carga de rede e da quantidade de memória disponível.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.ipv4.tcp_wmem&#039;&#039;&#039;: Define os valores mínimos, padrão e máximos do buffer de transmissão para conexões TCP. O primeiro valor (4096) garante que o buffer de transmissão nunca será menor que 4KB, o segundo valor (65536) é o tamanho padrão do buffer de transmissão, o terceiro valor (16777216) permite que o buffer de transmissão possa crescer até 16MB se necessário, dependendo da carga de rede e da quantidade de memória disponível.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.ipv4.tcp_window_scaling&#039;&#039;&#039;: Habilita o uso de escala de janela TCP para conexões TCP. A escala de janela TCP é uma opção que permite aumentar o tamanho da janela TCP além do limite padrão de 64KB. Isso é feito utilizando um fator de escala que pode aumentar significativamente o tamanho da janela, permitindo maiores taxas de transferência em redes de alta latência e alta largura de banda.&lt;br /&gt;
Configurar este parâmetro como &#039;&#039;&#039;1&#039;&#039;&#039; habilita a escala de janela TCP, permitindo que o sistema aproveite melhor a largura de banda disponível em redes de alta velocidade.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.conf&lt;br /&gt;
&lt;br /&gt;
 #### Otimização Proxmox &lt;br /&gt;
 vm.swappiness=10&lt;br /&gt;
 vm.dirty_ratio=10&lt;br /&gt;
 vm.dirty_background_ratio=5&lt;br /&gt;
 vm.min_free_kbytes=65536&lt;br /&gt;
 vm.overcommit_memory=1&lt;br /&gt;
 vm.overcommit_ratio=50&lt;br /&gt;
 vm.nr_hugepages=2048&lt;br /&gt;
 net.core.rmem_max=16777216&lt;br /&gt;
 net.core.wmem_max=16777216&lt;br /&gt;
 net.ipv4.tcp_rmem=4096 87380 16777216&lt;br /&gt;
 net.ipv4.tcp_wmem=4096 65536 16777216&lt;br /&gt;
 net.ipv4.tcp_window_scaling=1&lt;br /&gt;
&lt;br /&gt;
Aplicar com:&lt;br /&gt;
&lt;br /&gt;
 sysctl -p&lt;br /&gt;
&lt;br /&gt;
{{Nota| Recomendável reiniciar o servidor para uma aplicabilidade correta.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ajustes para SSD ==&lt;br /&gt;
&lt;br /&gt;
* Pós-instalação: Aumentando a durabilidade dos SSDs NVMe&lt;br /&gt;
&lt;br /&gt;
Reduzir escrita de logs desnecessários&lt;br /&gt;
&lt;br /&gt;
* Editar o rsyslog e comente a linha (para ter maior controle e armazenamento é recomendado a criação de um servidor de logs como Graylog/Rsyslog)&lt;br /&gt;
 nano /etc/rsyslog.conf&lt;br /&gt;
&lt;br /&gt;
 #module(load=&amp;quot;imklog&amp;quot; permitnonkernelfacility=&amp;quot;on&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Restart no serviço de log&lt;br /&gt;
 systemctl restart rsyslog&lt;br /&gt;
&lt;br /&gt;
Ativar journald com RAM e compressão&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /var/log/journal&lt;br /&gt;
 sed -i &#039;s/#Storage=.*/Storage=volatile/&#039; /etc/systemd/journald.conf&lt;br /&gt;
 sed -i &#039;s/#Compress=.*/Compress=yes/&#039; /etc/systemd/journald.conf&lt;br /&gt;
&lt;br /&gt;
Restart no serviço&lt;br /&gt;
 systemctl restart systemd-journald&lt;br /&gt;
&lt;br /&gt;
Ativar TRIM automaticamente (TRIM é importante para manter o desempenho e durabilidade do SSD)&lt;br /&gt;
&lt;br /&gt;
 systemctl enable fstrim.timer&lt;br /&gt;
 systemctl start fstrim.timer&lt;br /&gt;
&lt;br /&gt;
Evitar escrita excessiva em /tmp e /var/tmp (assim monta como tmp em memória RAM)&lt;br /&gt;
&lt;br /&gt;
 echo -e &amp;quot;tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,mode=1777 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
 echo -e &amp;quot;tmpfs /var/tmp tmpfs defaults,noatime,nosuid,nodev,mode=1777 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
&lt;br /&gt;
ZFS ARC tuning: Se tiver muita RAM, limitar uso da ZFS ARC melhora performance de VMs:&lt;br /&gt;
 echo &amp;quot;options zfs zfs_arc_max=4294967296&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/zfs.conf  # 4 GB&lt;br /&gt;
&lt;br /&gt;
Garanta que o sistema sempre “flushe” os dados antes de desligar (ajuste)&lt;br /&gt;
 systemctl edit systemd-logind.service&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 TimeoutStopSec=60s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veja se agora tem o trecho abaixo, se não tiver, add: &lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system/systemd-logind.service.d/override.conf&lt;br /&gt;
 [Service]&lt;br /&gt;
 TimeoutStopSec=60s&lt;br /&gt;
&lt;br /&gt;
Caso não seja possível editar o trecho acima, dá para fazer manualmente&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /etc/systemd/system/systemd-logind.service.d&lt;br /&gt;
 cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/systemd/system/systemd-logind.service.d/override.conf&lt;br /&gt;
 [Service]&lt;br /&gt;
 TimeoutStopSec=60s&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
Forçar o restart através do daemon&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Ajustar systemd-journald para reduzir escrita e flush correto&lt;br /&gt;
 nano /etc/systemd/journald.conf&lt;br /&gt;
&lt;br /&gt;
{{Nota|Se quer realmente tudo em RAM Use &#039;&#039;&#039;Storage volatile&#039;&#039;&#039; e remova &#039;&#039;&#039;SystemMaxUse&#039;&#039;&#039; Se quer logs persistentes mas com limite Use &#039;&#039;&#039;Storage persistent&#039;&#039;&#039; e mantenha &#039;&#039;&#039;SystemMaxUse&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
 Storage=volatile &lt;br /&gt;
 SystemMaxUse=200M&lt;br /&gt;
 SyncIntervalSec=5m&lt;br /&gt;
&lt;br /&gt;
Restart nos serviços&lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl restart systemd-logind&lt;br /&gt;
 systemctl restart systemd-journald&lt;br /&gt;
&lt;br /&gt;
Verificar se aplicou:&lt;br /&gt;
 systemctl show systemd-logind.service | grep TimeoutStopSec&lt;br /&gt;
 systemctl cat systemd-logind.service&lt;br /&gt;
&lt;br /&gt;
👉 Esse ajuste dá mais tempo para o systemd encerrar processos no desligamento, evitando desligamento abrupto de serviços que poderia gerar unsafe shutdown no NVMe.&lt;br /&gt;
&lt;br /&gt;
Montagem de discos com opções seguras&lt;br /&gt;
No /etc/fstab, adicione noatime para reduzir escritas, mas mantenha barrier/journal habilitados (não use nobarrier nem data=writeback). Exemplo para ext4:&lt;br /&gt;
&lt;br /&gt;
 /dev/nvme0n1p3  /  ext4  defaults,noatime  0 1&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Otimiza%C3%A7%C3%B5es_no_Proxmox&amp;diff=1174</id>
		<title>Otimizações no Proxmox</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Otimiza%C3%A7%C3%B5es_no_Proxmox&amp;diff=1174"/>
		<updated>2026-03-06T12:08:28Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Sobre ===&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre como realizar otimizações no sistema para que o Proxmox tenha mais performance.&lt;br /&gt;
&lt;br /&gt;
Fontes: https://pve.proxmox.com/pve-docs/&lt;br /&gt;
&lt;br /&gt;
== Conceitos ==&lt;br /&gt;
&lt;br /&gt;
Para otimizar o Proxmox para ter maior performance no hardware, você pode seguir várias práticas recomendadas e ajustes. Aqui estão algumas dicas:&lt;br /&gt;
&lt;br /&gt;
{{Nota|Tenha um Hardware Compatível e Adequado }}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPU:&#039;&#039;&#039; Utilize processadores com suporte a virtualização (&#039;&#039;&#039;Intel VT-x&#039;&#039;&#039; ou &#039;&#039;&#039;AMD-V&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memória RAM:&#039;&#039;&#039; Certifique-se de ter memória suficiente para suportar suas VMs. Utilize memória RAM com &#039;&#039;&#039;ECC&#039;&#039;&#039; (Error-Correcting Code) para maior confiabilidade.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Armazenamento:&#039;&#039;&#039; Utilize discos &#039;&#039;&#039;SSD&#039;&#039;&#039; ou &#039;&#039;&#039;NVMe&#039;&#039;&#039; para armazenamento de VMs, já que são muito mais rápidos que HDDs tradicionais.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rede:&#039;&#039;&#039; Configure placas de rede de alta performance (&#039;&#039;&#039;10GbE&#039;&#039;&#039; ou superior) e use &#039;&#039;&#039;LACP&#039;&#039;&#039; (Link Aggregation Control Protocol) para aumentar a largura de banda e redundância.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos úteis == &lt;br /&gt;
&lt;br /&gt;
Alterar a senha de compartilhamento CIFS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pvesm set NOME-ID --password &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Nota| Este comando altera a senha de um compartilhamento CIFS já mapeados como storage no proxmox. }}&lt;br /&gt;
&lt;br /&gt;
=== Configuração do Proxmox ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kernel:&#039;&#039;&#039; Utilize a versão mais recente do kernel do Proxmox para aproveitar as últimas melhorias e correções de segurança.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cgroups&#039;&#039;&#039; e &#039;&#039;&#039;NUMA&#039;&#039;&#039;: Habilite &#039;&#039;&#039;cgroups&#039;&#039;&#039; e configure &#039;&#039;&#039;NUMA&#039;&#039;&#039; (Non-Uniform Memory Access) corretamente, especialmente em sistemas com múltiplas CPUs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I/O Threads&#039;&#039;&#039;: Habilite e configure I/O threads nas VMs para melhorar o desempenho de disco.&lt;br /&gt;
&lt;br /&gt;
=== Armazenamento ===&lt;br /&gt;
&#039;&#039;&#039;ZFS&#039;&#039;&#039;: Se utilizar ZFS, ajuste os parâmetros de memória ARC e considere usar SSDs para cache (ZIL e L2ARC).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LVM&#039;&#039;&#039;: Use LVM sobre discos rápidos (preferencialmente SSDs) e configure o thin provisioning para economizar espaço.&lt;br /&gt;
&lt;br /&gt;
=== Configuração das VMs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtio Drivers&#039;&#039;&#039;: Utilize drivers Virtio para disco e rede nas VMs para melhor performance.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recursos Alocados:&#039;&#039;&#039; Evite superprovisionar CPU e memória. Alocar mais recursos do que o disponível no host pode degradar a performance.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ballooning&#039;&#039;&#039;: Habilite o ballooning para gerenciar dinamicamente a memória entre as VMs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPU Pinning&#039;&#039;&#039;: Configure o pinning de CPU para garantir que certas VMs utilizem CPUs específicas, reduzindo a latência.&lt;br /&gt;
&lt;br /&gt;
=== Rede ===&lt;br /&gt;
&#039;&#039;&#039;Bridged Networking&#039;&#039;&#039;: Utilize a configuração de bridge networking para reduzir a latência e aumentar a performance de rede.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Offloading&#039;&#039;&#039;: Habilite funções de offloading na placa de rede, como checksum e segmentation offloading, para reduzir a carga na CPU.&lt;br /&gt;
&lt;br /&gt;
=== Monitoramento e Ajustes Contínuos ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Monitoramento&#039;&#039;&#039;: Utilize ferramentas como htop, iotop, vmstat e o monitoramento integrado do Proxmox para observar o uso de recursos e identificar gargalos.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ajustes&#039;&#039;&#039;: Baseado nos dados de monitoramento, ajuste a configuração das VMs e do host para otimizar a performance.&lt;br /&gt;
&lt;br /&gt;
=== Backup e Manutenção ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Snapshots&#039;&#039;&#039; e &#039;&#039;&#039;Backups&#039;&#039;&#039;: Utilize snapshots com moderação, pois podem impactar na performance. Configure backups regulares sem afetar a performance durante horários de pico.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atualizações&#039;&#039;&#039;: Mantenha o Proxmox e os sistemas das VMs sempre atualizados com as últimas versões e patches de segurança.&lt;br /&gt;
Seguindo essas práticas, você deve conseguir extrair o máximo de performance do seu ambiente Proxmox.&lt;br /&gt;
&lt;br /&gt;
== Ajustes nas Interfaces de Rede ==&lt;br /&gt;
&lt;br /&gt;
Habilite funções de offloading na placa de rede, como checksum e segmentation offloading, para reduzir a carga na CPU, no Proxmox, as opções de offloading de rede &#039;&#039;&#039;não&#039;&#039;&#039; são configuradas diretamente através da interface web do Proxmox. Em vez disso, você precisa &#039;&#039;&#039;configurá-las manualmente no sistema operacional subjacente (Debian)&#039;&#039;&#039; utilizando ferramentas de rede como &#039;&#039;&#039;ethtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Nota| O descarregamento de segmentação (TSO) é uma técnica de otimização que reduz a sobrecarga da CPU em operações de rede relacionadas a TCP/IP. Com o TSO ativado, um controlador de Internet de rede (NIC) divide grandes pedaços de dados que viajam por uma rede em segmentos TCP menores. Sem o TSO, a segmentação é realizada pela CPU, o que gera um overhead. TSO também é conhecido como LSO (Large Segment Offload).}}&lt;br /&gt;
&lt;br /&gt;
{{Nota| Generic Segmentation Offload (GSO) é uma implementação de software amplamente usada do TCP Segmentation Offload (TSO), que reduz a sobrecarga de processamento por pacote. Assim como o TSO, o GSO ganha desempenho ao permitir que aplicativos de camada superior processem um número menor de pacotes grandes (por exemplo, tamanho de MTU de 64 KB), em vez de processar um número maior de pacotes pequenos (por exemplo, tamanho de MTU de 1500 B), reduzindo assim a sobrecarga por pacote. }}&lt;br /&gt;
&lt;br /&gt;
{{Nota| Generic Receive Offload (GRO) é uma técnica de offloading baseada em SW amplamente usada para reduzir as sobrecargas de processamento por pacote. Ao remontar pacotes pequenos em pacotes maiores, o GRO permite que os aplicativos processem menos pacotes grandes diretamente, reduzindo assim o número de pacotes a serem processados. Para beneficiar aplicativos baseados em DPDK, como o Open vSwitch, o DPDK também fornece sua própria implementação de GRO. No DPDK, o GRO é implementado como uma biblioteca autônoma. Os aplicativos usam explicitamente a biblioteca GRO para remontar pacotes. }}&lt;br /&gt;
&lt;br /&gt;
{{Nota| TCP Checksum Offload (IPv4 and IPv6),esta configuração permite que o adaptador verifique o checksum TCP de pacotes de entrada/saída (RX/TX) e calcule o checksum TCP de pacotes de entrada e saída. Este recurso melhora o desempenho de recepção e transmissão e reduz a utilização da CPU. Com o Offloading desativado, o sistema operacional verifica a soma de verificação do TCP. Com o Offloading ativado, o adaptador conclui a verificação do sistema operacional. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edite o arquivo /etc/network/interfaces ou crie um script para ser executado na inicialização. Adicione as seguintes linhas ao arquivo /etc/network/interfaces (substitua &#039;&#039;&#039;ens1f0&#039;&#039;&#039; e &#039;&#039;&#039;ens1f1&#039;&#039;&#039; pelos nomes das suas interfaces de redes):&lt;br /&gt;
&lt;br /&gt;
 nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 &lt;br /&gt;
 iface ens1f0 inet manual&lt;br /&gt;
 iface ens1f1 inet manual&lt;br /&gt;
 &lt;br /&gt;
 auto vmbr0&lt;br /&gt;
 iface vmbr0 inet manual&lt;br /&gt;
        bridge-ports ens1f0&lt;br /&gt;
        bridge-stp off&lt;br /&gt;
        bridge-fd 0&lt;br /&gt;
        bridge-vlan-aware yes&lt;br /&gt;
        bridge-vids 2-4094&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 tso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 gso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 gro on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 rx on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 tx on&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 auto vmbr0.800&lt;br /&gt;
 iface vmbr0.800 inet static&lt;br /&gt;
        address 10.10.80.101/24&lt;br /&gt;
        gateway 10.10.80.1&lt;br /&gt;
 # Interface de Gerência&lt;br /&gt;
 &lt;br /&gt;
 auto vmbr1&lt;br /&gt;
 iface vmbr1 inet manual&lt;br /&gt;
        bridge-ports ens1f1&lt;br /&gt;
        bridge-stp off&lt;br /&gt;
        bridge-fd 0&lt;br /&gt;
        bridge-vlan-aware yes&lt;br /&gt;
        bridge-vids 2-4094&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 tso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 gso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 gro on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 rx on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 tx on&#039;&#039;&#039;&lt;br /&gt;
 # Interface LAN&lt;br /&gt;
 &lt;br /&gt;
 source /etc/network/interfaces.d/*&lt;br /&gt;
&lt;br /&gt;
{{Nota|Nesse arquivo, as configurações de offloading para ens1f0 e ens1f1 são aplicadas usando os comandos ethtool na seção post-up. Isso garante que as configurações de offloading sejam aplicadas cada vez que as interfaces são ativadas.}}&lt;br /&gt;
&lt;br /&gt;
Após fazer essas alterações, reinicie as interfaces de rede para aplicar as novas configurações:&lt;br /&gt;
&lt;br /&gt;
 ifdown vmbr0 &amp;amp;&amp;amp; ifup vmbr0&lt;br /&gt;
 ifdown vmbr1 &amp;amp;&amp;amp; ifup vmbr1&lt;br /&gt;
&lt;br /&gt;
== Ajustes no Kernel ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.swappiness&#039;&#039;&#039;: Controla a tendência do kernel de trocar processos da memória RAM para o swap. Valores mais baixos (por exemplo, 10) reduzem a utilização de swap e mantêm mais dados na memória RAM. Para servidores, um valor entre 10 e 20 é geralmente recomendado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.dirty_ratio&#039;&#039;&#039;: Define o percentual de memória total do sistema que pode conter dados sujos (dados que precisam ser escritos no disco) antes que o kernel comece a forçar a gravação no disco. Um valor de 10 significa que quando 10% da memória está suja, o kernel começa a escrever os dados no disco.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.dirty_background_ratio&#039;&#039;&#039;: Define o percentual de memória total do sistema que pode conter dados sujos antes que o kernel comece a escrever esses dados no disco em segundo plano. Um valor de 5 significa que quando 5% da memória está suja, o kernel começa a gravar os dados no disco em segundo plano.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.min_free_kbytes&#039;&#039;&#039;: Define a quantidade mínima de memória que o kernel deve tentar manter livre. Ajustar isso pode ajudar a evitar que o sistema fique sem memória disponível para tarefas críticas.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.overcommit_memory&#039;&#039;&#039; e &#039;&#039;&#039;vm.overcommit_ratio&#039;&#039;&#039;: Controlam como o kernel lida com a alocação de memória que excede a memória física disponível. Ajustar esses parâmetros pode ajudar a evitar que o sistema fique sem memória.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hugepages&#039;&#039;&#039;: são páginas de memória grandes que podem ser usadas para melhorar o desempenho de aplicativos que fazem uso intensivo de memória, como bancos de dados e servidores de virtualização. As páginas de memória padrão no Linux têm 4KB, enquanto as hugepages têm 2MB ou mais, dependendo da arquitetura. Usar hugepages pode reduzir a sobrecarga de gerenciamento de memória e melhorar a performance de I/O de memória.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.core.rmem_max&#039;&#039;&#039;: Define o tamanho máximo do buffer de recepção (receiving buffer) de um socket em bytes. Esse valor determina o quanto de dados pode ser bufferizado para recepção em um socket de rede. Um valor maior permite que o sistema bufferize mais dados recebidos, o que pode ser útil em redes de alta velocidade para evitar perda de pacotes e melhorar o desempenho de transferência de dados. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.core.wmem_max&#039;&#039;&#039;: Define o tamanho máximo do buffer de transmissão (sending buffer) de um socket em bytes. Esse valor determina o quanto de dados pode ser bufferizado para envio em um socket de rede. Um valor maior permite que o sistema bufferize mais dados a serem enviados, o que pode ser útil em redes de alta velocidade para melhorar a taxa de transferência de dados.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.ipv4.tcp_rmem&#039;&#039;&#039;: Define os valores mínimos, padrão e máximos do buffer de recepção para conexões TCP. O primeiro valor (4096) garante que o buffer de recepção nunca será menor que 4KB, o segundo valor (87380) é o tamanho padrão do buffer de recepção, o terceiro valor (16777216) permite que o buffer de recepção possa crescer até 16MB se necessário, dependendo da carga de rede e da quantidade de memória disponível.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.ipv4.tcp_wmem&#039;&#039;&#039;: Define os valores mínimos, padrão e máximos do buffer de transmissão para conexões TCP. O primeiro valor (4096) garante que o buffer de transmissão nunca será menor que 4KB, o segundo valor (65536) é o tamanho padrão do buffer de transmissão, o terceiro valor (16777216) permite que o buffer de transmissão possa crescer até 16MB se necessário, dependendo da carga de rede e da quantidade de memória disponível.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.ipv4.tcp_window_scaling&#039;&#039;&#039;: Habilita o uso de escala de janela TCP para conexões TCP. A escala de janela TCP é uma opção que permite aumentar o tamanho da janela TCP além do limite padrão de 64KB. Isso é feito utilizando um fator de escala que pode aumentar significativamente o tamanho da janela, permitindo maiores taxas de transferência em redes de alta latência e alta largura de banda.&lt;br /&gt;
Configurar este parâmetro como &#039;&#039;&#039;1&#039;&#039;&#039; habilita a escala de janela TCP, permitindo que o sistema aproveite melhor a largura de banda disponível em redes de alta velocidade.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.conf&lt;br /&gt;
&lt;br /&gt;
 #### Otimização Proxmox &lt;br /&gt;
 vm.swappiness=10&lt;br /&gt;
 vm.dirty_ratio=10&lt;br /&gt;
 vm.dirty_background_ratio=5&lt;br /&gt;
 vm.min_free_kbytes=65536&lt;br /&gt;
 vm.overcommit_memory=1&lt;br /&gt;
 vm.overcommit_ratio=50&lt;br /&gt;
 vm.nr_hugepages=2048&lt;br /&gt;
 net.core.rmem_max=16777216&lt;br /&gt;
 net.core.wmem_max=16777216&lt;br /&gt;
 net.ipv4.tcp_rmem=4096 87380 16777216&lt;br /&gt;
 net.ipv4.tcp_wmem=4096 65536 16777216&lt;br /&gt;
 net.ipv4.tcp_window_scaling=1&lt;br /&gt;
&lt;br /&gt;
Aplicar com:&lt;br /&gt;
&lt;br /&gt;
 sysctl -p&lt;br /&gt;
&lt;br /&gt;
{{Nota| Recomendável reiniciar o servidor para uma aplicabilidade correta.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ajustes para SSD ==&lt;br /&gt;
&lt;br /&gt;
* Pós-instalação: Aumentando a durabilidade dos SSDs NVMe&lt;br /&gt;
&lt;br /&gt;
Reduzir escrita de logs desnecessários&lt;br /&gt;
&lt;br /&gt;
* Editar o rsyslog e comente a linha (para ter maior controle e armazenamento é recomendado a criação de um servidor de logs como Graylog/Rsyslog)&lt;br /&gt;
 nano /etc/rsyslog.conf&lt;br /&gt;
&lt;br /&gt;
 #module(load=&amp;quot;imklog&amp;quot; permitnonkernelfacility=&amp;quot;on&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Restart no serviço de log&lt;br /&gt;
 systemctl restart rsyslog&lt;br /&gt;
&lt;br /&gt;
Ativar journald com RAM e compressão&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /var/log/journal&lt;br /&gt;
 sed -i &#039;s/#Storage=.*/Storage=volatile/&#039; /etc/systemd/journald.conf&lt;br /&gt;
 sed -i &#039;s/#Compress=.*/Compress=yes/&#039; /etc/systemd/journald.conf&lt;br /&gt;
&lt;br /&gt;
Restart no serviço&lt;br /&gt;
 systemctl restart systemd-journald&lt;br /&gt;
&lt;br /&gt;
Ativar TRIM automaticamente (TRIM é importante para manter o desempenho e durabilidade do SSD)&lt;br /&gt;
&lt;br /&gt;
 systemctl enable fstrim.timer&lt;br /&gt;
 systemctl start fstrim.timer&lt;br /&gt;
&lt;br /&gt;
Evitar escrita excessiva em /tmp e /var/tmp (assim monta como tmp em memória RAM)&lt;br /&gt;
&lt;br /&gt;
 echo -e &amp;quot;tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,mode=1777 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
 echo -e &amp;quot;tmpfs /var/tmp tmpfs defaults,noatime,nosuid,nodev,mode=1777 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
&lt;br /&gt;
ZFS ARC tuning: Se tiver muita RAM, limitar uso da ZFS ARC melhora performance de VMs:&lt;br /&gt;
 echo &amp;quot;options zfs zfs_arc_max=4294967296&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/zfs.conf  # 4 GB&lt;br /&gt;
&lt;br /&gt;
Garanta que o sistema sempre “flushe” os dados antes de desligar (ajuste)&lt;br /&gt;
 systemctl edit systemd-logind.service&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 TimeoutStopSec=60s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veja se agora tem o trecho abaixo, se não tiver, add: &lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system/systemd-logind.service.d/override.conf&lt;br /&gt;
 [Service]&lt;br /&gt;
 TimeoutStopSec=60s&lt;br /&gt;
&lt;br /&gt;
Caso não seja possível editar o trecho acima, dá para fazer manualmente&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /etc/systemd/system/systemd-logind.service.d&lt;br /&gt;
 cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/systemd/system/systemd-logind.service.d/override.conf&lt;br /&gt;
 [Service]&lt;br /&gt;
 TimeoutStopSec=60s&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
Forçar o restart através do daemon&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Ajustar systemd-journald para reduzir escrita e flush correto&lt;br /&gt;
 nano /etc/systemd/journald.conf&lt;br /&gt;
&lt;br /&gt;
{{Nota|Se quer realmente tudo em RAM Use &#039;&#039;&#039;Storage volatile&#039;&#039;&#039; e remova &#039;&#039;&#039;SystemMaxUse&#039;&#039;&#039; Se quer logs persistentes mas com limite Use &#039;&#039;&#039;Storage persistent&#039;&#039;&#039; e mantenha &#039;&#039;&#039;SystemMaxUse&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
 Storage=volatile &lt;br /&gt;
 SystemMaxUse=200M&lt;br /&gt;
 SyncIntervalSec=5m&lt;br /&gt;
&lt;br /&gt;
Restart nos serviços&lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl restart systemd-logind&lt;br /&gt;
 systemctl restart systemd-journald&lt;br /&gt;
&lt;br /&gt;
Verificar se aplicou:&lt;br /&gt;
 systemctl show systemd-logind.service | grep TimeoutStopSec&lt;br /&gt;
 systemctl cat systemd-logind.service&lt;br /&gt;
&lt;br /&gt;
👉 Esse ajuste dá mais tempo para o systemd encerrar processos no desligamento, evitando desligamento abrupto de serviços que poderia gerar unsafe shutdown no NVMe.&lt;br /&gt;
&lt;br /&gt;
Montagem de discos com opções seguras&lt;br /&gt;
No /etc/fstab, adicione noatime para reduzir escritas, mas mantenha barrier/journal habilitados (não use nobarrier nem data=writeback). Exemplo para ext4:&lt;br /&gt;
&lt;br /&gt;
 /dev/nvme0n1p3  /  ext4  defaults,noatime  0 1&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Otimiza%C3%A7%C3%B5es_no_Proxmox&amp;diff=1173</id>
		<title>Otimizações no Proxmox</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Otimiza%C3%A7%C3%B5es_no_Proxmox&amp;diff=1173"/>
		<updated>2026-03-06T12:07:32Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Sobre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Sobre ===&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre como realizar otimizações no sistema para que o Proxmox tenha mais performance.&lt;br /&gt;
&lt;br /&gt;
Fontes: https://pve.proxmox.com/pve-docs/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos úteis == &lt;br /&gt;
&lt;br /&gt;
Alterar a senha de compartilhamento CIFS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pvesm set NOME-ID --password &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Nota|Este comando altera a senha de um compartilhamento CIFS já mapeados como storage no proxmox. }}&lt;br /&gt;
&lt;br /&gt;
== Conceitos ==&lt;br /&gt;
&lt;br /&gt;
Para otimizar o Proxmox para ter maior performance no hardware, você pode seguir várias práticas recomendadas e ajustes. Aqui estão algumas dicas:&lt;br /&gt;
&lt;br /&gt;
{{Nota|Tenha um Hardware Compatível e Adequado }}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPU:&#039;&#039;&#039; Utilize processadores com suporte a virtualização (&#039;&#039;&#039;Intel VT-x&#039;&#039;&#039; ou &#039;&#039;&#039;AMD-V&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memória RAM:&#039;&#039;&#039; Certifique-se de ter memória suficiente para suportar suas VMs. Utilize memória RAM com &#039;&#039;&#039;ECC&#039;&#039;&#039; (Error-Correcting Code) para maior confiabilidade.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Armazenamento:&#039;&#039;&#039; Utilize discos &#039;&#039;&#039;SSD&#039;&#039;&#039; ou &#039;&#039;&#039;NVMe&#039;&#039;&#039; para armazenamento de VMs, já que são muito mais rápidos que HDDs tradicionais.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rede:&#039;&#039;&#039; Configure placas de rede de alta performance (&#039;&#039;&#039;10GbE&#039;&#039;&#039; ou superior) e use &#039;&#039;&#039;LACP&#039;&#039;&#039; (Link Aggregation Control Protocol) para aumentar a largura de banda e redundância.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuração do Proxmox ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kernel:&#039;&#039;&#039; Utilize a versão mais recente do kernel do Proxmox para aproveitar as últimas melhorias e correções de segurança.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cgroups&#039;&#039;&#039; e &#039;&#039;&#039;NUMA&#039;&#039;&#039;: Habilite &#039;&#039;&#039;cgroups&#039;&#039;&#039; e configure &#039;&#039;&#039;NUMA&#039;&#039;&#039; (Non-Uniform Memory Access) corretamente, especialmente em sistemas com múltiplas CPUs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;I/O Threads&#039;&#039;&#039;: Habilite e configure I/O threads nas VMs para melhorar o desempenho de disco.&lt;br /&gt;
&lt;br /&gt;
=== Armazenamento ===&lt;br /&gt;
&#039;&#039;&#039;ZFS&#039;&#039;&#039;: Se utilizar ZFS, ajuste os parâmetros de memória ARC e considere usar SSDs para cache (ZIL e L2ARC).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LVM&#039;&#039;&#039;: Use LVM sobre discos rápidos (preferencialmente SSDs) e configure o thin provisioning para economizar espaço.&lt;br /&gt;
&lt;br /&gt;
=== Configuração das VMs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtio Drivers&#039;&#039;&#039;: Utilize drivers Virtio para disco e rede nas VMs para melhor performance.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recursos Alocados:&#039;&#039;&#039; Evite superprovisionar CPU e memória. Alocar mais recursos do que o disponível no host pode degradar a performance.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ballooning&#039;&#039;&#039;: Habilite o ballooning para gerenciar dinamicamente a memória entre as VMs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CPU Pinning&#039;&#039;&#039;: Configure o pinning de CPU para garantir que certas VMs utilizem CPUs específicas, reduzindo a latência.&lt;br /&gt;
&lt;br /&gt;
=== Rede ===&lt;br /&gt;
&#039;&#039;&#039;Bridged Networking&#039;&#039;&#039;: Utilize a configuração de bridge networking para reduzir a latência e aumentar a performance de rede.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Offloading&#039;&#039;&#039;: Habilite funções de offloading na placa de rede, como checksum e segmentation offloading, para reduzir a carga na CPU.&lt;br /&gt;
&lt;br /&gt;
=== Monitoramento e Ajustes Contínuos ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Monitoramento&#039;&#039;&#039;: Utilize ferramentas como htop, iotop, vmstat e o monitoramento integrado do Proxmox para observar o uso de recursos e identificar gargalos.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ajustes&#039;&#039;&#039;: Baseado nos dados de monitoramento, ajuste a configuração das VMs e do host para otimizar a performance.&lt;br /&gt;
&lt;br /&gt;
=== Backup e Manutenção ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Snapshots&#039;&#039;&#039; e &#039;&#039;&#039;Backups&#039;&#039;&#039;: Utilize snapshots com moderação, pois podem impactar na performance. Configure backups regulares sem afetar a performance durante horários de pico.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atualizações&#039;&#039;&#039;: Mantenha o Proxmox e os sistemas das VMs sempre atualizados com as últimas versões e patches de segurança.&lt;br /&gt;
Seguindo essas práticas, você deve conseguir extrair o máximo de performance do seu ambiente Proxmox.&lt;br /&gt;
&lt;br /&gt;
== Ajustes nas Interfaces de Rede ==&lt;br /&gt;
&lt;br /&gt;
Habilite funções de offloading na placa de rede, como checksum e segmentation offloading, para reduzir a carga na CPU, no Proxmox, as opções de offloading de rede &#039;&#039;&#039;não&#039;&#039;&#039; são configuradas diretamente através da interface web do Proxmox. Em vez disso, você precisa &#039;&#039;&#039;configurá-las manualmente no sistema operacional subjacente (Debian)&#039;&#039;&#039; utilizando ferramentas de rede como &#039;&#039;&#039;ethtool&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Nota| O descarregamento de segmentação (TSO) é uma técnica de otimização que reduz a sobrecarga da CPU em operações de rede relacionadas a TCP/IP. Com o TSO ativado, um controlador de Internet de rede (NIC) divide grandes pedaços de dados que viajam por uma rede em segmentos TCP menores. Sem o TSO, a segmentação é realizada pela CPU, o que gera um overhead. TSO também é conhecido como LSO (Large Segment Offload).}}&lt;br /&gt;
&lt;br /&gt;
{{Nota| Generic Segmentation Offload (GSO) é uma implementação de software amplamente usada do TCP Segmentation Offload (TSO), que reduz a sobrecarga de processamento por pacote. Assim como o TSO, o GSO ganha desempenho ao permitir que aplicativos de camada superior processem um número menor de pacotes grandes (por exemplo, tamanho de MTU de 64 KB), em vez de processar um número maior de pacotes pequenos (por exemplo, tamanho de MTU de 1500 B), reduzindo assim a sobrecarga por pacote. }}&lt;br /&gt;
&lt;br /&gt;
{{Nota| Generic Receive Offload (GRO) é uma técnica de offloading baseada em SW amplamente usada para reduzir as sobrecargas de processamento por pacote. Ao remontar pacotes pequenos em pacotes maiores, o GRO permite que os aplicativos processem menos pacotes grandes diretamente, reduzindo assim o número de pacotes a serem processados. Para beneficiar aplicativos baseados em DPDK, como o Open vSwitch, o DPDK também fornece sua própria implementação de GRO. No DPDK, o GRO é implementado como uma biblioteca autônoma. Os aplicativos usam explicitamente a biblioteca GRO para remontar pacotes. }}&lt;br /&gt;
&lt;br /&gt;
{{Nota| TCP Checksum Offload (IPv4 and IPv6),esta configuração permite que o adaptador verifique o checksum TCP de pacotes de entrada/saída (RX/TX) e calcule o checksum TCP de pacotes de entrada e saída. Este recurso melhora o desempenho de recepção e transmissão e reduz a utilização da CPU. Com o Offloading desativado, o sistema operacional verifica a soma de verificação do TCP. Com o Offloading ativado, o adaptador conclui a verificação do sistema operacional. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edite o arquivo /etc/network/interfaces ou crie um script para ser executado na inicialização. Adicione as seguintes linhas ao arquivo /etc/network/interfaces (substitua &#039;&#039;&#039;ens1f0&#039;&#039;&#039; e &#039;&#039;&#039;ens1f1&#039;&#039;&#039; pelos nomes das suas interfaces de redes):&lt;br /&gt;
&lt;br /&gt;
 nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 &lt;br /&gt;
 iface ens1f0 inet manual&lt;br /&gt;
 iface ens1f1 inet manual&lt;br /&gt;
 &lt;br /&gt;
 auto vmbr0&lt;br /&gt;
 iface vmbr0 inet manual&lt;br /&gt;
        bridge-ports ens1f0&lt;br /&gt;
        bridge-stp off&lt;br /&gt;
        bridge-fd 0&lt;br /&gt;
        bridge-vlan-aware yes&lt;br /&gt;
        bridge-vids 2-4094&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 tso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 gso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 gro on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 rx on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f0 tx on&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 auto vmbr0.800&lt;br /&gt;
 iface vmbr0.800 inet static&lt;br /&gt;
        address 10.10.80.101/24&lt;br /&gt;
        gateway 10.10.80.1&lt;br /&gt;
 # Interface de Gerência&lt;br /&gt;
 &lt;br /&gt;
 auto vmbr1&lt;br /&gt;
 iface vmbr1 inet manual&lt;br /&gt;
        bridge-ports ens1f1&lt;br /&gt;
        bridge-stp off&lt;br /&gt;
        bridge-fd 0&lt;br /&gt;
        bridge-vlan-aware yes&lt;br /&gt;
        bridge-vids 2-4094&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 tso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 gso on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 gro on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 rx on&#039;&#039;&#039;&lt;br /&gt;
        &#039;&#039;&#039;post-up /sbin/ethtool -K ens1f1 tx on&#039;&#039;&#039;&lt;br /&gt;
 # Interface LAN&lt;br /&gt;
 &lt;br /&gt;
 source /etc/network/interfaces.d/*&lt;br /&gt;
&lt;br /&gt;
{{Nota|Nesse arquivo, as configurações de offloading para ens1f0 e ens1f1 são aplicadas usando os comandos ethtool na seção post-up. Isso garante que as configurações de offloading sejam aplicadas cada vez que as interfaces são ativadas.}}&lt;br /&gt;
&lt;br /&gt;
Após fazer essas alterações, reinicie as interfaces de rede para aplicar as novas configurações:&lt;br /&gt;
&lt;br /&gt;
 ifdown vmbr0 &amp;amp;&amp;amp; ifup vmbr0&lt;br /&gt;
 ifdown vmbr1 &amp;amp;&amp;amp; ifup vmbr1&lt;br /&gt;
&lt;br /&gt;
== Ajustes no Kernel ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.swappiness&#039;&#039;&#039;: Controla a tendência do kernel de trocar processos da memória RAM para o swap. Valores mais baixos (por exemplo, 10) reduzem a utilização de swap e mantêm mais dados na memória RAM. Para servidores, um valor entre 10 e 20 é geralmente recomendado.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.dirty_ratio&#039;&#039;&#039;: Define o percentual de memória total do sistema que pode conter dados sujos (dados que precisam ser escritos no disco) antes que o kernel comece a forçar a gravação no disco. Um valor de 10 significa que quando 10% da memória está suja, o kernel começa a escrever os dados no disco.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.dirty_background_ratio&#039;&#039;&#039;: Define o percentual de memória total do sistema que pode conter dados sujos antes que o kernel comece a escrever esses dados no disco em segundo plano. Um valor de 5 significa que quando 5% da memória está suja, o kernel começa a gravar os dados no disco em segundo plano.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.min_free_kbytes&#039;&#039;&#039;: Define a quantidade mínima de memória que o kernel deve tentar manter livre. Ajustar isso pode ajudar a evitar que o sistema fique sem memória disponível para tarefas críticas.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vm.overcommit_memory&#039;&#039;&#039; e &#039;&#039;&#039;vm.overcommit_ratio&#039;&#039;&#039;: Controlam como o kernel lida com a alocação de memória que excede a memória física disponível. Ajustar esses parâmetros pode ajudar a evitar que o sistema fique sem memória.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hugepages&#039;&#039;&#039;: são páginas de memória grandes que podem ser usadas para melhorar o desempenho de aplicativos que fazem uso intensivo de memória, como bancos de dados e servidores de virtualização. As páginas de memória padrão no Linux têm 4KB, enquanto as hugepages têm 2MB ou mais, dependendo da arquitetura. Usar hugepages pode reduzir a sobrecarga de gerenciamento de memória e melhorar a performance de I/O de memória.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.core.rmem_max&#039;&#039;&#039;: Define o tamanho máximo do buffer de recepção (receiving buffer) de um socket em bytes. Esse valor determina o quanto de dados pode ser bufferizado para recepção em um socket de rede. Um valor maior permite que o sistema bufferize mais dados recebidos, o que pode ser útil em redes de alta velocidade para evitar perda de pacotes e melhorar o desempenho de transferência de dados. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.core.wmem_max&#039;&#039;&#039;: Define o tamanho máximo do buffer de transmissão (sending buffer) de um socket em bytes. Esse valor determina o quanto de dados pode ser bufferizado para envio em um socket de rede. Um valor maior permite que o sistema bufferize mais dados a serem enviados, o que pode ser útil em redes de alta velocidade para melhorar a taxa de transferência de dados.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.ipv4.tcp_rmem&#039;&#039;&#039;: Define os valores mínimos, padrão e máximos do buffer de recepção para conexões TCP. O primeiro valor (4096) garante que o buffer de recepção nunca será menor que 4KB, o segundo valor (87380) é o tamanho padrão do buffer de recepção, o terceiro valor (16777216) permite que o buffer de recepção possa crescer até 16MB se necessário, dependendo da carga de rede e da quantidade de memória disponível.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.ipv4.tcp_wmem&#039;&#039;&#039;: Define os valores mínimos, padrão e máximos do buffer de transmissão para conexões TCP. O primeiro valor (4096) garante que o buffer de transmissão nunca será menor que 4KB, o segundo valor (65536) é o tamanho padrão do buffer de transmissão, o terceiro valor (16777216) permite que o buffer de transmissão possa crescer até 16MB se necessário, dependendo da carga de rede e da quantidade de memória disponível.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;net.ipv4.tcp_window_scaling&#039;&#039;&#039;: Habilita o uso de escala de janela TCP para conexões TCP. A escala de janela TCP é uma opção que permite aumentar o tamanho da janela TCP além do limite padrão de 64KB. Isso é feito utilizando um fator de escala que pode aumentar significativamente o tamanho da janela, permitindo maiores taxas de transferência em redes de alta latência e alta largura de banda.&lt;br /&gt;
Configurar este parâmetro como &#039;&#039;&#039;1&#039;&#039;&#039; habilita a escala de janela TCP, permitindo que o sistema aproveite melhor a largura de banda disponível em redes de alta velocidade.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.conf&lt;br /&gt;
&lt;br /&gt;
 #### Otimização Proxmox &lt;br /&gt;
 vm.swappiness=10&lt;br /&gt;
 vm.dirty_ratio=10&lt;br /&gt;
 vm.dirty_background_ratio=5&lt;br /&gt;
 vm.min_free_kbytes=65536&lt;br /&gt;
 vm.overcommit_memory=1&lt;br /&gt;
 vm.overcommit_ratio=50&lt;br /&gt;
 vm.nr_hugepages=2048&lt;br /&gt;
 net.core.rmem_max=16777216&lt;br /&gt;
 net.core.wmem_max=16777216&lt;br /&gt;
 net.ipv4.tcp_rmem=4096 87380 16777216&lt;br /&gt;
 net.ipv4.tcp_wmem=4096 65536 16777216&lt;br /&gt;
 net.ipv4.tcp_window_scaling=1&lt;br /&gt;
&lt;br /&gt;
Aplicar com:&lt;br /&gt;
&lt;br /&gt;
 sysctl -p&lt;br /&gt;
&lt;br /&gt;
{{Nota| Recomendável reiniciar o servidor para uma aplicabilidade correta.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ajustes para SSD ==&lt;br /&gt;
&lt;br /&gt;
* Pós-instalação: Aumentando a durabilidade dos SSDs NVMe&lt;br /&gt;
&lt;br /&gt;
Reduzir escrita de logs desnecessários&lt;br /&gt;
&lt;br /&gt;
* Editar o rsyslog e comente a linha (para ter maior controle e armazenamento é recomendado a criação de um servidor de logs como Graylog/Rsyslog)&lt;br /&gt;
 nano /etc/rsyslog.conf&lt;br /&gt;
&lt;br /&gt;
 #module(load=&amp;quot;imklog&amp;quot; permitnonkernelfacility=&amp;quot;on&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Restart no serviço de log&lt;br /&gt;
 systemctl restart rsyslog&lt;br /&gt;
&lt;br /&gt;
Ativar journald com RAM e compressão&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /var/log/journal&lt;br /&gt;
 sed -i &#039;s/#Storage=.*/Storage=volatile/&#039; /etc/systemd/journald.conf&lt;br /&gt;
 sed -i &#039;s/#Compress=.*/Compress=yes/&#039; /etc/systemd/journald.conf&lt;br /&gt;
&lt;br /&gt;
Restart no serviço&lt;br /&gt;
 systemctl restart systemd-journald&lt;br /&gt;
&lt;br /&gt;
Ativar TRIM automaticamente (TRIM é importante para manter o desempenho e durabilidade do SSD)&lt;br /&gt;
&lt;br /&gt;
 systemctl enable fstrim.timer&lt;br /&gt;
 systemctl start fstrim.timer&lt;br /&gt;
&lt;br /&gt;
Evitar escrita excessiva em /tmp e /var/tmp (assim monta como tmp em memória RAM)&lt;br /&gt;
&lt;br /&gt;
 echo -e &amp;quot;tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,mode=1777 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
 echo -e &amp;quot;tmpfs /var/tmp tmpfs defaults,noatime,nosuid,nodev,mode=1777 0 0&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
&lt;br /&gt;
ZFS ARC tuning: Se tiver muita RAM, limitar uso da ZFS ARC melhora performance de VMs:&lt;br /&gt;
 echo &amp;quot;options zfs zfs_arc_max=4294967296&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/zfs.conf  # 4 GB&lt;br /&gt;
&lt;br /&gt;
Garanta que o sistema sempre “flushe” os dados antes de desligar (ajuste)&lt;br /&gt;
 systemctl edit systemd-logind.service&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 TimeoutStopSec=60s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veja se agora tem o trecho abaixo, se não tiver, add: &lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system/systemd-logind.service.d/override.conf&lt;br /&gt;
 [Service]&lt;br /&gt;
 TimeoutStopSec=60s&lt;br /&gt;
&lt;br /&gt;
Caso não seja possível editar o trecho acima, dá para fazer manualmente&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /etc/systemd/system/systemd-logind.service.d&lt;br /&gt;
 cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/systemd/system/systemd-logind.service.d/override.conf&lt;br /&gt;
 [Service]&lt;br /&gt;
 TimeoutStopSec=60s&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
Forçar o restart através do daemon&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Ajustar systemd-journald para reduzir escrita e flush correto&lt;br /&gt;
 nano /etc/systemd/journald.conf&lt;br /&gt;
&lt;br /&gt;
{{Nota|Se quer realmente tudo em RAM Use &#039;&#039;&#039;Storage volatile&#039;&#039;&#039; e remova &#039;&#039;&#039;SystemMaxUse&#039;&#039;&#039; Se quer logs persistentes mas com limite Use &#039;&#039;&#039;Storage persistent&#039;&#039;&#039; e mantenha &#039;&#039;&#039;SystemMaxUse&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
 Storage=volatile &lt;br /&gt;
 SystemMaxUse=200M&lt;br /&gt;
 SyncIntervalSec=5m&lt;br /&gt;
&lt;br /&gt;
Restart nos serviços&lt;br /&gt;
 systemctl daemon-reload&lt;br /&gt;
 systemctl restart systemd-logind&lt;br /&gt;
 systemctl restart systemd-journald&lt;br /&gt;
&lt;br /&gt;
Verificar se aplicou:&lt;br /&gt;
 systemctl show systemd-logind.service | grep TimeoutStopSec&lt;br /&gt;
 systemctl cat systemd-logind.service&lt;br /&gt;
&lt;br /&gt;
👉 Esse ajuste dá mais tempo para o systemd encerrar processos no desligamento, evitando desligamento abrupto de serviços que poderia gerar unsafe shutdown no NVMe.&lt;br /&gt;
&lt;br /&gt;
Montagem de discos com opções seguras&lt;br /&gt;
No /etc/fstab, adicione noatime para reduzir escritas, mas mantenha barrier/journal habilitados (não use nobarrier nem data=writeback). Exemplo para ext4:&lt;br /&gt;
&lt;br /&gt;
 /dev/nvme0n1p3  /  ext4  defaults,noatime  0 1&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=GLPI_11&amp;diff=1172</id>
		<title>GLPI 11</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=GLPI_11&amp;diff=1172"/>
		<updated>2026-03-04T05:19:24Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Baixar o GLPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre a ferramenta GLPI 11 (Anacrônico Frances para Gestionnaire Libre de Parc Informatique ) na versão 11 ou traduzido para o Português BR ( Gerenciamento Livre do Parque de Computadores), que é uma solução web Open-source completa para ITSM (Gerenciamento de Serviços de TI). O mesmo gerência todos os seus problemas de inventário de ativos/hardwares e software e suporte ao usuário(helpdesk).&lt;br /&gt;
 &lt;br /&gt;
*Principais características do GLPI:&lt;br /&gt;
&lt;br /&gt;
  Multi Usuários&lt;br /&gt;
  Sistema de autenticação (local, LDAP, AD, POP/IMAP...) e multi-servidor;&lt;br /&gt;
  Vários idiomas;&lt;br /&gt;
  Níveis de usuário;&lt;br /&gt;
  Sistema de notificações sobre eventos via e-mail;&lt;br /&gt;
  Gestão de pedidos de assistência via web ou e-mail;&lt;br /&gt;
  Relatórios com gráficos;&lt;br /&gt;
  Integração com OCS Inventory NG;&lt;br /&gt;
  Gestão e controle de computador;&lt;br /&gt;
  Gestão e monitoramento de licenças;&lt;br /&gt;
  Gestão e atendimento de Helpdesk (tickets);&lt;br /&gt;
  Inventário com Agent próprio;&lt;br /&gt;
  Licença GPL;&lt;br /&gt;
  Plugins e etc… &lt;br /&gt;
&lt;br /&gt;
Site Oficial: http://glpi-project.org/&lt;br /&gt;
&lt;br /&gt;
Doc: https://help.glpi-project.org/documentation&lt;br /&gt;
&lt;br /&gt;
Curso/Certificação: https://blog.servicedeskbrasil.com.br/treinamentos-servicedeskbrasil/&lt;br /&gt;
&lt;br /&gt;
== Recomendações ==&lt;br /&gt;
&lt;br /&gt;
https://www.arthurschaefer.com.br&lt;br /&gt;
&lt;br /&gt;
https://verdanadesk.com&lt;br /&gt;
&lt;br /&gt;
https://mastermindti.com.br&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vídeo ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;embedvideo service=&amp;quot;youtube&amp;quot;&amp;gt;https://youtu.be/NzYu1Md5lLs&amp;lt;/embedvideo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://youtu.be/NzYu1Md5lLs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/glpi&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse seu servidor/VM ( Linux que será o GLPI ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/glpi/refs/heads/main/install-glpi.sh &amp;amp;&amp;amp;  bash install-glpi.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente veja abaixo os procedimentos&lt;br /&gt;
&lt;br /&gt;
== Instalando dependências ==&lt;br /&gt;
&lt;br /&gt;
* Debian 13&lt;br /&gt;
&lt;br /&gt;
Atualização dos repositórios e instalação dos pacotes básicos de serviço web&lt;br /&gt;
 apt update &amp;amp;&amp;amp;  apt install apache2 php -y &lt;br /&gt;
 apt install mariadb-server php-{cli,ldap,xmlrpc,soap,curl,snmp,zip,apcu,gd,mbstring,mysql,xml,bz2,intl,bcmath}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Banco de Dados ==&lt;br /&gt;
Acesso a interface de console do Banco de dados para criação do mesmo&lt;br /&gt;
&lt;br /&gt;
 mysql -u root -p&lt;br /&gt;
&lt;br /&gt;
Criando o banco de dados (glpidb), criando usuário (glpi), com senha segura (gerar uma senha segura e alterar onde informa &#039;senhasegura&#039;), garantindo os privilégios para escrita no banco&lt;br /&gt;
&lt;br /&gt;
  create database glpidb character set utf8;&lt;br /&gt;
  create user &#039;glpi&#039;@&#039;localhost&#039; identified by &#039;senhasegura&#039;;&lt;br /&gt;
  grant all privileges on glpidb.* to &#039;glpi&#039;@&#039;localhost&#039; with grant option;&lt;br /&gt;
  flush privileges;&lt;br /&gt;
  quit&lt;br /&gt;
&lt;br /&gt;
== Baixar o GLPI ==&lt;br /&gt;
&lt;br /&gt;
Baixar e extrair o software GLPI (verificar em: https://github.com/glpi-project/glpi/releases/)&lt;br /&gt;
&lt;br /&gt;
 wget https://github.com/glpi-project/glpi/releases/download/11.0.6/glpi-11.0.6.tgz&lt;br /&gt;
 tar -zxvf glpi-11.0.6.tgz&lt;br /&gt;
&lt;br /&gt;
== Configurar Apache ==&lt;br /&gt;
&lt;br /&gt;
Mover o conteúdo extraído para a pasta padrão do apache2&lt;br /&gt;
 mv glpi /var/www/html&lt;br /&gt;
&lt;br /&gt;
Ajustar permissões&lt;br /&gt;
 chown www-data:www-data /var/www/html/glpi -Rf&lt;br /&gt;
 chmod 775 /var/www/html/glpi -Rf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Criar o arquivo de conf para o apache carregar&lt;br /&gt;
&lt;br /&gt;
 nano /etc/apache2/conf-available/glpi.conf&lt;br /&gt;
&lt;br /&gt;
Inserir no arquivo vazio&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
     ServerName glpi.localhost&lt;br /&gt;
     DocumentRoot /var/www/html/glpi/public&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;Directory /var/www/html/glpi/public&amp;gt;&lt;br /&gt;
         AllowOverride All&lt;br /&gt;
         RewriteEngine On&lt;br /&gt;
         RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
         RewriteRule ^(.*)$ index.php [QSA,L]&lt;br /&gt;
     &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habilitação do módulos de rewrite e da configuração criada no apache&lt;br /&gt;
&lt;br /&gt;
 a2enmod rewrite&lt;br /&gt;
 a2enconf glpi.conf&lt;br /&gt;
 service apache2 restart&lt;br /&gt;
&lt;br /&gt;
== Ajustar PHP ==&lt;br /&gt;
Para fazer o GLPI ter mais memória no apache e ajustar tamanhos de uploads faça: &lt;br /&gt;
&lt;br /&gt;
 nano /etc/php/8.4/apache2/php.ini&lt;br /&gt;
&lt;br /&gt;
 memory_limit = &#039;&#039;&#039;128M&#039;&#039;&#039; e altere para &#039;&#039;&#039;256M&#039;&#039;&#039;&lt;br /&gt;
 post_max_size = &#039;&#039;&#039;8M&#039;&#039;&#039; e altere para &#039;&#039;&#039;256M&#039;&#039;&#039;&lt;br /&gt;
 upload_max_filesize = &#039;&#039;&#039;2M&#039;&#039;&#039; e altere para &#039;&#039;&#039;256M&#039;&#039;&#039;&lt;br /&gt;
 ;session.cookie_secure = e altere para &#039;&#039;&#039;session.cookie_secure = on&#039;&#039;&#039; (remover para HTTP)&lt;br /&gt;
 session.cookie_httponly e adicione &#039;&#039;&#039;on&#039;&#039;&#039; ao lado do sinal de =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lembrando que as entradas de segurança (session.cookie_secure e session.cookie_httponly) são opcionais para instalação, mas recomendadas para aumentar a segurança do ambiente.&lt;br /&gt;
&lt;br /&gt;
== Ajustar TimeZone ==&lt;br /&gt;
&lt;br /&gt;
Em alguns casos o timezone pode vir desabilitado, para habilitar faça no shell como root:&lt;br /&gt;
&lt;br /&gt;
  mariadb-tzinfo-to-sql /usr/share/zoneinfo | mariadb -u root -p mysql&lt;br /&gt;
  sudo -u www-data php /var/www/html/glpi/bin/console database:enable_timezones&lt;br /&gt;
&lt;br /&gt;
Após na interface web no GLPI vá em:&lt;br /&gt;
&lt;br /&gt;
  Configurar | Geral | Valores Padrão | Fuso Horário&lt;br /&gt;
&lt;br /&gt;
Faça o Ajuste conforme a sua necessidade, no exemplo foi configurado para America/São_Paulo&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Fuso-GLPI-11.jpg|thumb|443px|center|&#039;&#039;&#039;Ajuste Para America/Sao_Paulo&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
== Instalação Agent GLPI ==&lt;br /&gt;
&lt;br /&gt;
O Agente GLPI é um agente de gerenciamento genérico. Ele pode executar um certo número de tarefas, de acordo com seu próprio plano de execução, ou em nome de um servidor GLPI que atua como ponto de controle.&lt;br /&gt;
Este agente é baseado no agente FusionInventory. Ele introduz novos recursos e um novo protocolo para comunicação direta com um servidor GLPI e seu recurso de inventário nativo.&lt;br /&gt;
&lt;br /&gt;
Veja a url: https://github.com/glpi-project/glpi-agent&lt;br /&gt;
&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/glpi&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Para instalar automaticamente faça:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Acesse seu servidor/VM ( Linux que será o GLPI ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/glpi/refs/heads/main/install-glpi-agent.sh &amp;amp;&amp;amp; bash install-glpi-agent.sh&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Hardening_Windows_Desktop&amp;diff=1171</id>
		<title>Hardening Windows Desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Hardening_Windows_Desktop&amp;diff=1171"/>
		<updated>2026-03-03T04:02:50Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Sobre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Hardening em Windows Desktop é um projeto focado em aplicar controles de segurança locais em estações Windows 10 e Windows 11 de forma direta e padronizada. A proposta é transformar recomendações técnicas do benchmark do CIS em ações práticas executadas via PowerShell, sem depender de Active Directory ou GPO centralizadas.&lt;br /&gt;
O objetivo é elevar o nível de segurança de máquinas standalone, reduzir a superfície de ataque e criar uma base mínima consistente de proteção, especialmente em ambientes corporativos de pequeno e médio porte.&lt;br /&gt;
&lt;br /&gt;
O projeto prioriza clareza, rastreabilidade e aderência a boas práticas reconhecidas, permitindo medir conformidade e evoluir o nível de maturidade de segurança do ambiente.&lt;br /&gt;
&lt;br /&gt;
Fonte: https://www.cisecurity.org/&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/hardening-windows-desktop&lt;br /&gt;
&lt;br /&gt;
= 🛡️ Hardening Windows Desktop =&lt;br /&gt;
&lt;br /&gt;
Script em PowerShell para aplicação de hardening em Windows 10 e Windows 11, com foco em ambientes corporativos que não utilizam Active Directory como base para GPO.&lt;br /&gt;
&lt;br /&gt;
O projeto aplica configurações locais de segurança inspiradas nas recomendações do CIS Microsoft Windows 11 Enterprise Benchmark v5.0.0, traduzindo controles formais em execução prática e padronizada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 🎯 Objetivo do Projeto ==&lt;br /&gt;
&lt;br /&gt;
Este script foi criado para:&lt;br /&gt;
&lt;br /&gt;
* Aplicar baseline de segurança em estações Windows&lt;br /&gt;
* Reduzir a superfície de ataque do sistema operacional&lt;br /&gt;
* Endurecer autenticação e políticas locais&lt;br /&gt;
* Substituir parcialmente a ausência de GPO centralizadas&lt;br /&gt;
* Padronizar configurações de segurança em ambientes standalone&lt;br /&gt;
&lt;br /&gt;
Ele não depende de domínio, AD ou infraestrutura corporativa avançada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 🏢 Cenários de Uso ==&lt;br /&gt;
&lt;br /&gt;
Indicado para:&lt;br /&gt;
&lt;br /&gt;
* Empresas pequenas e médias sem AD&lt;br /&gt;
* Ambientes em workgroup&lt;br /&gt;
* Máquinas administrativas&lt;br /&gt;
* Laboratórios técnicos&lt;br /&gt;
* Equipamentos expostos à internet&lt;br /&gt;
* Ambientes que precisam de padronização rápida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 🔐 O Que o Script Aplica ==&lt;br /&gt;
&lt;br /&gt;
=== 1️⃣ Contas e Autenticação ===&lt;br /&gt;
&lt;br /&gt;
* Desativação da conta Guest&lt;br /&gt;
* Endurecimento de políticas de senha&lt;br /&gt;
* Ajustes em NTLM&lt;br /&gt;
* Restrições de autenticação insegura&lt;br /&gt;
&lt;br /&gt;
Previne:&lt;br /&gt;
&lt;br /&gt;
* Enumeração de contas&lt;br /&gt;
* Uso indevido de credenciais locais&lt;br /&gt;
* Ataques de força bruta&lt;br /&gt;
* Uso de protocolos antigos&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;🧭 Como fazer manualmente:&#039;&#039;&#039;&lt;br /&gt;
# Win+R → lusrmgr.msc&lt;br /&gt;
# Usuários → Guest&lt;br /&gt;
# Marcar Conta desativada&lt;br /&gt;
&lt;br /&gt;
=== 2️⃣ UAC e Elevação de Privilégio ===&lt;br /&gt;
&lt;br /&gt;
* Força consentimento para elevação&lt;br /&gt;
* Impede elevação silenciosa&lt;br /&gt;
* Ajusta comportamento de contas administrativas&lt;br /&gt;
&lt;br /&gt;
Previne:&lt;br /&gt;
&lt;br /&gt;
* Escalonamento de privilégio&lt;br /&gt;
* Execução automática de malware&lt;br /&gt;
* Bypass de controles administrativos&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;🧭 Como fazer manualmente:&#039;&#039;&#039;&lt;br /&gt;
# Painel de Controle → Contas de Usuário&lt;br /&gt;
# Alterar configurações de UAC&lt;br /&gt;
# Nível máximo&lt;br /&gt;
&lt;br /&gt;
=== 3️⃣ Rede e Protocolos ===&lt;br /&gt;
&lt;br /&gt;
* Desativação do SMBv1&lt;br /&gt;
* Ajustes em protocolos legados&lt;br /&gt;
* Endurecimento de configurações de rede&lt;br /&gt;
&lt;br /&gt;
Previne:&lt;br /&gt;
&lt;br /&gt;
* Exploração via protocolos obsoletos&lt;br /&gt;
* Ataques laterais em rede interna&lt;br /&gt;
* Vulnerabilidades conhecidas de SMB antigo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4️⃣ Serviços do Sistema ===&lt;br /&gt;
&lt;br /&gt;
* Desativa serviços desnecessários&lt;br /&gt;
* Ajusta inicialização de serviços sensíveis&lt;br /&gt;
* Reduz exposição de componentes pouco usados&lt;br /&gt;
&lt;br /&gt;
Previne:&lt;br /&gt;
&lt;br /&gt;
* Movimentação lateral&lt;br /&gt;
* Execução remota de código&lt;br /&gt;
* Superfície de ataque desnecessária&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 5️⃣ Auditoria e Logs ===&lt;br /&gt;
&lt;br /&gt;
* Ativa auditoria de eventos críticos&lt;br /&gt;
* Ajusta políticas de rastreamento&lt;br /&gt;
* Melhora visibilidade de atividades administrativas&lt;br /&gt;
&lt;br /&gt;
Previne:&lt;br /&gt;
&lt;br /&gt;
* Falta de rastreabilidade&lt;br /&gt;
* Dificuldade em investigação de incidentes&lt;br /&gt;
* Ausência de evidência em auditorias&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;🧭 Como fazer manualmente:&#039;&#039;&#039;&lt;br /&gt;
# Win+R → secpol.msc&lt;br /&gt;
# Políticas Locais → Política de Auditoria&lt;br /&gt;
# Auditar eventos de logon → Sucesso e Falha&lt;br /&gt;
# Auditar rastreamento de processo → Sucesso e Falha&lt;br /&gt;
&lt;br /&gt;
=== 6️⃣ Registro e Políticas Locais ===&lt;br /&gt;
&lt;br /&gt;
* Aplica chaves equivalentes a GPO&lt;br /&gt;
* Endurece políticas locais via Registro&lt;br /&gt;
* Ajusta configurações sensíveis do sistema&lt;br /&gt;
&lt;br /&gt;
Previne:&lt;br /&gt;
&lt;br /&gt;
* Uso indevido de recursos do Windows&lt;br /&gt;
* Exploração de configurações padrão inseguras&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ⚙️ Requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Windows 10 ou Windows 11&lt;br /&gt;
* PowerShell 5.1 ou superior&lt;br /&gt;
* Execução como Administrador&lt;br /&gt;
&lt;br /&gt;
== 📊 Controles Implementados com Criticidade e Peso ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Área !! Controle CIS !! Descrição !! Criticidade !! Implementado !! Peso&lt;br /&gt;
|-&lt;br /&gt;
| NTLM || 2.3.10.x || Restrição de NTLM inbound || Alta || Sim || 10&lt;br /&gt;
|-&lt;br /&gt;
| LSA || 18.8.21.5 || LSASS como Protected Process || Alta || Sim || 10&lt;br /&gt;
|-&lt;br /&gt;
| TLS || 18.9.1.1 || Desabilitar TLS 1.0 || Alta || Sim || 8&lt;br /&gt;
|-&lt;br /&gt;
| TLS || 18.9.1.2 || Desabilitar TLS 1.1 || Alta || Sim || 8&lt;br /&gt;
|-&lt;br /&gt;
| SMB || 18.9.84.1 || Assinatura SMB Cliente || Alta || Sim || 9&lt;br /&gt;
|-&lt;br /&gt;
| SMB || 18.9.84.2 || Assinatura SMB Servidor || Alta || Sim || 9&lt;br /&gt;
|-&lt;br /&gt;
| PowerShell || 18.10.7.1 || Remover PowerShell v2 || Média || Sim || 6&lt;br /&gt;
|-&lt;br /&gt;
| Defender || 18.9.45.x || Attack Surface Reduction || Alta || Sim || 10&lt;br /&gt;
|-&lt;br /&gt;
| Firewall || 9.x || Restringir regras inbound || Média || Sim || 6&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria || 17.3.1 || Auditoria de Logon || Média || Sim || 5&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria || 17.6.x || Auditoria de Gerenciamento de Conta || Média || Sim || 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Score Máximo: 86 pontos ===&lt;br /&gt;
&lt;br /&gt;
Score (%) = (Soma dos Controles Conformes / 86) x 100&lt;br /&gt;
&lt;br /&gt;
=== Classificação ===&lt;br /&gt;
[[File:Cis-level-1.png|CIS Compliance]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Percentual !! Nível&lt;br /&gt;
|-&lt;br /&gt;
| 90% - 100% || Hardened&lt;br /&gt;
|-&lt;br /&gt;
| 75% - 89% || Good Baseline&lt;br /&gt;
|-&lt;br /&gt;
| 50% - 74% || Moderate&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; 50% || Weak&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 🚀 Como Executar ==&lt;br /&gt;
&lt;br /&gt;
=== Copie o trecho abaixo e execute no PowerShell como administrador ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $env:USERPROFILE\Downloads&lt;br /&gt;
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force&lt;br /&gt;
Invoke-WebRequest -Uri https://raw.githubusercontent.com/projetoroot/hardening-windows-desktop/refs/heads/main/hardening-windows-desktop.ps1 -OutFile hardening-windows-desktop.ps1&lt;br /&gt;
.\hardening-windows-desktop.ps1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Hardening_Windows_Desktop&amp;diff=1170</id>
		<title>Hardening Windows Desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Hardening_Windows_Desktop&amp;diff=1170"/>
		<updated>2026-03-03T03:59:42Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: Criou página com &amp;#039;== Sobre ==  Olá! Visitante, reunimos aqui, informações sobre o processo de Hardening em Windows Desktop é um projeto focado em aplicar controles de segurança locais em estações Windows 10 e Windows 11 de forma direta e padronizada. A proposta é transformar recomendações técnicas do benchmark do CIS em ações práticas executadas via PowerShell, sem depender de Active Directory ou GPO centralizadas. O objetivo é elevar o nível de segurança de máquinas sta...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Hardening em Windows Desktop é um projeto focado em aplicar controles de segurança locais em estações Windows 10 e Windows 11 de forma direta e padronizada. A proposta é transformar recomendações técnicas do benchmark do CIS em ações práticas executadas via PowerShell, sem depender de Active Directory ou GPO centralizadas.&lt;br /&gt;
O objetivo é elevar o nível de segurança de máquinas standalone, reduzir a superfície de ataque e criar uma base mínima consistente de proteção, especialmente em ambientes corporativos de pequeno e médio porte.&lt;br /&gt;
&lt;br /&gt;
O projeto prioriza clareza, rastreabilidade e aderência a boas práticas reconhecidas, permitindo medir conformidade e evoluir o nível de maturidade de segurança do ambiente.&lt;br /&gt;
&lt;br /&gt;
= 🛡️ Hardening Windows Desktop =&lt;br /&gt;
&lt;br /&gt;
Script em PowerShell para aplicação de hardening em Windows 10 e Windows 11, com foco em ambientes corporativos que não utilizam Active Directory como base para GPO.&lt;br /&gt;
&lt;br /&gt;
O projeto aplica configurações locais de segurança inspiradas nas recomendações do CIS Microsoft Windows 11 Enterprise Benchmark v5.0.0, traduzindo controles formais em execução prática e padronizada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 🎯 Objetivo do Projeto ==&lt;br /&gt;
&lt;br /&gt;
Este script foi criado para:&lt;br /&gt;
&lt;br /&gt;
* Aplicar baseline de segurança em estações Windows&lt;br /&gt;
* Reduzir a superfície de ataque do sistema operacional&lt;br /&gt;
* Endurecer autenticação e políticas locais&lt;br /&gt;
* Substituir parcialmente a ausência de GPO centralizadas&lt;br /&gt;
* Padronizar configurações de segurança em ambientes standalone&lt;br /&gt;
&lt;br /&gt;
Ele não depende de domínio, AD ou infraestrutura corporativa avançada.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 🏢 Cenários de Uso ==&lt;br /&gt;
&lt;br /&gt;
Indicado para:&lt;br /&gt;
&lt;br /&gt;
* Empresas pequenas e médias sem AD&lt;br /&gt;
* Ambientes em workgroup&lt;br /&gt;
* Máquinas administrativas&lt;br /&gt;
* Laboratórios técnicos&lt;br /&gt;
* Equipamentos expostos à internet&lt;br /&gt;
* Ambientes que precisam de padronização rápida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 🔐 O Que o Script Aplica ==&lt;br /&gt;
&lt;br /&gt;
=== 1️⃣ Contas e Autenticação ===&lt;br /&gt;
&lt;br /&gt;
* Desativação da conta Guest&lt;br /&gt;
* Endurecimento de políticas de senha&lt;br /&gt;
* Ajustes em NTLM&lt;br /&gt;
* Restrições de autenticação insegura&lt;br /&gt;
&lt;br /&gt;
Previne:&lt;br /&gt;
&lt;br /&gt;
* Enumeração de contas&lt;br /&gt;
* Uso indevido de credenciais locais&lt;br /&gt;
* Ataques de força bruta&lt;br /&gt;
* Uso de protocolos antigos&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;🧭 Como fazer manualmente:&#039;&#039;&#039;&lt;br /&gt;
# Win+R → lusrmgr.msc&lt;br /&gt;
# Usuários → Guest&lt;br /&gt;
# Marcar Conta desativada&lt;br /&gt;
&lt;br /&gt;
=== 2️⃣ UAC e Elevação de Privilégio ===&lt;br /&gt;
&lt;br /&gt;
* Força consentimento para elevação&lt;br /&gt;
* Impede elevação silenciosa&lt;br /&gt;
* Ajusta comportamento de contas administrativas&lt;br /&gt;
&lt;br /&gt;
Previne:&lt;br /&gt;
&lt;br /&gt;
* Escalonamento de privilégio&lt;br /&gt;
* Execução automática de malware&lt;br /&gt;
* Bypass de controles administrativos&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;🧭 Como fazer manualmente:&#039;&#039;&#039;&lt;br /&gt;
# Painel de Controle → Contas de Usuário&lt;br /&gt;
# Alterar configurações de UAC&lt;br /&gt;
# Nível máximo&lt;br /&gt;
&lt;br /&gt;
=== 3️⃣ Rede e Protocolos ===&lt;br /&gt;
&lt;br /&gt;
* Desativação do SMBv1&lt;br /&gt;
* Ajustes em protocolos legados&lt;br /&gt;
* Endurecimento de configurações de rede&lt;br /&gt;
&lt;br /&gt;
Previne:&lt;br /&gt;
&lt;br /&gt;
* Exploração via protocolos obsoletos&lt;br /&gt;
* Ataques laterais em rede interna&lt;br /&gt;
* Vulnerabilidades conhecidas de SMB antigo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4️⃣ Serviços do Sistema ===&lt;br /&gt;
&lt;br /&gt;
* Desativa serviços desnecessários&lt;br /&gt;
* Ajusta inicialização de serviços sensíveis&lt;br /&gt;
* Reduz exposição de componentes pouco usados&lt;br /&gt;
&lt;br /&gt;
Previne:&lt;br /&gt;
&lt;br /&gt;
* Movimentação lateral&lt;br /&gt;
* Execução remota de código&lt;br /&gt;
* Superfície de ataque desnecessária&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 5️⃣ Auditoria e Logs ===&lt;br /&gt;
&lt;br /&gt;
* Ativa auditoria de eventos críticos&lt;br /&gt;
* Ajusta políticas de rastreamento&lt;br /&gt;
* Melhora visibilidade de atividades administrativas&lt;br /&gt;
&lt;br /&gt;
Previne:&lt;br /&gt;
&lt;br /&gt;
* Falta de rastreabilidade&lt;br /&gt;
* Dificuldade em investigação de incidentes&lt;br /&gt;
* Ausência de evidência em auditorias&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;🧭 Como fazer manualmente:&#039;&#039;&#039;&lt;br /&gt;
# Win+R → secpol.msc&lt;br /&gt;
# Políticas Locais → Política de Auditoria&lt;br /&gt;
# Auditar eventos de logon → Sucesso e Falha&lt;br /&gt;
# Auditar rastreamento de processo → Sucesso e Falha&lt;br /&gt;
&lt;br /&gt;
=== 6️⃣ Registro e Políticas Locais ===&lt;br /&gt;
&lt;br /&gt;
* Aplica chaves equivalentes a GPO&lt;br /&gt;
* Endurece políticas locais via Registro&lt;br /&gt;
* Ajusta configurações sensíveis do sistema&lt;br /&gt;
&lt;br /&gt;
Previne:&lt;br /&gt;
&lt;br /&gt;
* Uso indevido de recursos do Windows&lt;br /&gt;
* Exploração de configurações padrão inseguras&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ⚙️ Requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Windows 10 ou Windows 11&lt;br /&gt;
* PowerShell 5.1 ou superior&lt;br /&gt;
* Execução como Administrador&lt;br /&gt;
&lt;br /&gt;
== 📊 Controles Implementados com Criticidade e Peso ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Área !! Controle CIS !! Descrição !! Criticidade !! Implementado !! Peso&lt;br /&gt;
|-&lt;br /&gt;
| NTLM || 2.3.10.x || Restrição de NTLM inbound || Alta || Sim || 10&lt;br /&gt;
|-&lt;br /&gt;
| LSA || 18.8.21.5 || LSASS como Protected Process || Alta || Sim || 10&lt;br /&gt;
|-&lt;br /&gt;
| TLS || 18.9.1.1 || Desabilitar TLS 1.0 || Alta || Sim || 8&lt;br /&gt;
|-&lt;br /&gt;
| TLS || 18.9.1.2 || Desabilitar TLS 1.1 || Alta || Sim || 8&lt;br /&gt;
|-&lt;br /&gt;
| SMB || 18.9.84.1 || Assinatura SMB Cliente || Alta || Sim || 9&lt;br /&gt;
|-&lt;br /&gt;
| SMB || 18.9.84.2 || Assinatura SMB Servidor || Alta || Sim || 9&lt;br /&gt;
|-&lt;br /&gt;
| PowerShell || 18.10.7.1 || Remover PowerShell v2 || Média || Sim || 6&lt;br /&gt;
|-&lt;br /&gt;
| Defender || 18.9.45.x || Attack Surface Reduction || Alta || Sim || 10&lt;br /&gt;
|-&lt;br /&gt;
| Firewall || 9.x || Restringir regras inbound || Média || Sim || 6&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria || 17.3.1 || Auditoria de Logon || Média || Sim || 5&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria || 17.6.x || Auditoria de Gerenciamento de Conta || Média || Sim || 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Score Máximo: 86 pontos ===&lt;br /&gt;
&lt;br /&gt;
Score (%) = (Soma dos Controles Conformes / 86) x 100&lt;br /&gt;
&lt;br /&gt;
=== Classificação ===&lt;br /&gt;
[[File:Cis-level-1.png|CIS Compliance]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Percentual !! Nível&lt;br /&gt;
|-&lt;br /&gt;
| 90% - 100% || Hardened&lt;br /&gt;
|-&lt;br /&gt;
| 75% - 89% || Good Baseline&lt;br /&gt;
|-&lt;br /&gt;
| 50% - 74% || Moderate&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; 50% || Weak&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 🚀 Como Executar ==&lt;br /&gt;
&lt;br /&gt;
=== Copie o trecho abaixo e execute no PowerShell como administrador ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $env:USERPROFILE\Downloads&lt;br /&gt;
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force&lt;br /&gt;
Invoke-WebRequest -Uri https://raw.githubusercontent.com/projetoroot/hardening-windows-desktop/refs/heads/main/hardening-windows-desktop.ps1 -OutFile hardening-windows-desktop.ps1&lt;br /&gt;
.\hardening-windows-desktop.ps1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Arquivo:Cis-level-1.png&amp;diff=1169</id>
		<title>Arquivo:Cis-level-1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Arquivo:Cis-level-1.png&amp;diff=1169"/>
		<updated>2026-03-03T03:21:36Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Arquivo:CIS_Level_1-Partial_Compliance-yellow.svg&amp;diff=1168</id>
		<title>Arquivo:CIS Level 1-Partial Compliance-yellow.svg</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Arquivo:CIS_Level_1-Partial_Compliance-yellow.svg&amp;diff=1168"/>
		<updated>2026-03-03T03:19:47Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1167</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1167"/>
		<updated>2026-03-03T03:14:05Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Sobre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Removendo Kernel Antigo no Linux ==&lt;br /&gt;
https://wiki.projetoroot.com.br/index.php?title=Remover_Kernel_Linux_Antigo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Acesse o shell com root e carregue o ambiente completo desse usuário &#039;&#039;&#039;(Passo importante)&#039;&#039;&#039;&lt;br /&gt;
 su -&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
# Todos usuários&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&lt;br /&gt;
# Root explícito&lt;br /&gt;
root soft nofile 104857&lt;br /&gt;
root hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abra nova sessão SSH ou shell e valide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reexec&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Desativar_hiberna%C3%A7%C3%A3o_Windows&amp;diff=1166</id>
		<title>Desativar hibernação Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Desativar_hiberna%C3%A7%C3%A3o_Windows&amp;diff=1166"/>
		<updated>2026-02-28T01:31:34Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: Criou página com &amp;#039;==Sobre == Olá! Visitante, reunimos aqui, informações sobre como desativar os modos de suspensão e hibernação no windows.  == CMD ==  Abra o cmd como administrador &amp;lt;pre&amp;gt;  Iniciar digite: cmd Executar como administrador Sim &amp;lt;/pre&amp;gt;  no CMD &amp;lt;pre&amp;gt; Microsoft Windows [versão 10.0.26200.7922] (c) Microsoft Corporation. Todos os direitos reservados.  C:\Windows\System32&amp;gt;powercfg /a &amp;lt;/pre&amp;gt;  Note a saída, irá mostrar  &amp;lt;pre&amp;gt; Os seguintes estados de suspensão estão dispon...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre como desativar os modos de suspensão e hibernação no windows.&lt;br /&gt;
&lt;br /&gt;
== CMD ==&lt;br /&gt;
&lt;br /&gt;
Abra o cmd como administrador&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Iniciar&lt;br /&gt;
digite: cmd&lt;br /&gt;
Executar como administrador&lt;br /&gt;
Sim&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
no CMD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Microsoft Windows [versão 10.0.26200.7922]&lt;br /&gt;
(c) Microsoft Corporation. Todos os direitos reservados.&lt;br /&gt;
&lt;br /&gt;
C:\Windows\System32&amp;gt;powercfg /a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note a saída, irá mostrar &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Os seguintes estados de suspensão estão disponíveis neste sistema:&lt;br /&gt;
    Espera (S0 Ocioso com Baixo Consumo de Energia) Conectado via Rede&lt;br /&gt;
    Hibernar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Microsoft Windows [versão 10.0.26200.7922]&lt;br /&gt;
(c) Microsoft Corporation. Todos os direitos reservados.&lt;br /&gt;
&lt;br /&gt;
C:\Windows\System32&amp;gt;powercfg /a&lt;br /&gt;
Os seguintes estados de suspensão estão disponíveis neste sistema:&lt;br /&gt;
    Espera (S0 Ocioso com Baixo Consumo de Energia) Conectado via Rede&lt;br /&gt;
    Hibernar&lt;br /&gt;
&lt;br /&gt;
Os seguintes estados de suspensão não estão disponíveis neste sistema:&lt;br /&gt;
    Modo de espera (S1)&lt;br /&gt;
        O firmware do sistema não oferece suporte a este estado de espera.&lt;br /&gt;
        Este modo de espera é desabilitado quando não há suporte para o estado ocioso de baixo consumo de energia do S0.&lt;br /&gt;
&lt;br /&gt;
    Modo de espera (S2)&lt;br /&gt;
        O firmware do sistema não oferece suporte a este estado de espera.&lt;br /&gt;
        Este modo de espera é desabilitado quando não há suporte para o estado ocioso de baixo consumo de energia do S0.&lt;br /&gt;
&lt;br /&gt;
    Modo de espera (S3)&lt;br /&gt;
        O firmware do sistema não oferece suporte a este estado de espera.&lt;br /&gt;
        Este modo de espera é desabilitado quando não há suporte para o estado ocioso de baixo consumo de energia do S0.&lt;br /&gt;
&lt;br /&gt;
    Suspensão Híbrida&lt;br /&gt;
        O modo de espera (S3) não está disponível.&lt;br /&gt;
        O hipervisor não dá suporte a este modo de espera.&lt;br /&gt;
&lt;br /&gt;
    Inicialização Rápida&lt;br /&gt;
        Esta ação está desabilitada na política do sistema atual.&lt;br /&gt;
&lt;br /&gt;
C:\Windows\System32&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para desativar, basta rodar o comando &#039;&#039;&#039;powercfg -h off&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Microsoft Windows [versão 10.0.26200.7922]&lt;br /&gt;
(c) Microsoft Corporation. Todos os direitos reservados.&lt;br /&gt;
&lt;br /&gt;
C:\Windows\System32&amp;gt;powercfg -h off&lt;br /&gt;
&lt;br /&gt;
C:\Windows\System32&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verificar novamente com o comando &#039;&#039;&#039;powercfg /a &#039;&#039;&#039; e a hibernação não estará mais ativada!&lt;br /&gt;
&lt;br /&gt;
veja as imagens abaixo para maiores detalhes!&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Verificar-hibernacao.png|600px|thumb|left|Comando para verificar se está habilitado]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Desativacao-e-Verificacao-hibernacao.png|600px|thumb|left|Comandos para desativar e verificar se está desabilitado]]&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Arquivo:Desativacao-e-Verificacao-hibernacao.png&amp;diff=1165</id>
		<title>Arquivo:Desativacao-e-Verificacao-hibernacao.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Arquivo:Desativacao-e-Verificacao-hibernacao.png&amp;diff=1165"/>
		<updated>2026-02-28T01:29:17Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Arquivo:Verificar-hibernacao.png&amp;diff=1164</id>
		<title>Arquivo:Verificar-hibernacao.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Arquivo:Verificar-hibernacao.png&amp;diff=1164"/>
		<updated>2026-02-28T01:27:35Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Desktop&amp;diff=1163</id>
		<title>Tuning e Hardening - Desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Desktop&amp;diff=1163"/>
		<updated>2026-02-27T03:14:39Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* 🏃‍♂️ Uso */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Tuning em Sistemas GNU-Linux Desktop,ou seja, para uso em computadores e notebooks voltados para uso cotidiano, como navegar na internet, trabalhar com textos, arquivos, fazer stream, jogar e desenvolver. Se quer otimização para máquinas virtual veja a página dedicada para VM em [[Tuning_e_Hardening_-_VM]] . Sendo este procedimento realizado para aumentar o desempenho entre 5% a 20% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 🖥️ Desktop Tuning Manager =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Autor:&#039;&#039;&#039; Diego Costa (@diegocostaroot)  &lt;br /&gt;
&#039;&#039;&#039;Canal no youtube:&#039;&#039;&#039; Projeto Root ([https://www.youtube.com/projetoroot youtube.com/projetoroot])  &lt;br /&gt;
&#039;&#039;&#039;Wiki:&#039;&#039;&#039; ([https://wiki.projetoroot.com.br wiki.projetoroot.com.br])  &lt;br /&gt;
&lt;br /&gt;
Gerenciador de perfis de tuning para Linux Desktop com backup, rollback e relatório HTML de diferenças.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🔧 Compatibilidade ==&lt;br /&gt;
&lt;br /&gt;
O script foi testado e é compatível com as seguintes distribuições e versões Linux Desktop:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sistema&lt;br /&gt;
! Versão Testada&lt;br /&gt;
! Observações&lt;br /&gt;
|-&lt;br /&gt;
| Debian&lt;br /&gt;
| 12 / 13&lt;br /&gt;
| Requer &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; instalado, executado como root&lt;br /&gt;
|-&lt;br /&gt;
| Ubuntu&lt;br /&gt;
| 22.04 / 24.04&lt;br /&gt;
| Funciona com desktops GNOME/KDE/CLI&lt;br /&gt;
|-&lt;br /&gt;
| Fedora&lt;br /&gt;
| 38 / 39&lt;br /&gt;
| Necessário ajustar &amp;lt;code&amp;gt;sysctl.d&amp;lt;/code&amp;gt; para SELinux permissivo&lt;br /&gt;
|-&lt;br /&gt;
| Pop!_OS&lt;br /&gt;
| 22.04 / 24.04&lt;br /&gt;
| Mesmos requisitos do Ubuntu&lt;br /&gt;
|-&lt;br /&gt;
| Linux Mint&lt;br /&gt;
| 21 / 22&lt;br /&gt;
| Testado com Cinnamon e Mate&lt;br /&gt;
|-&lt;br /&gt;
| Outros&lt;br /&gt;
| Qualquer distro Linux moderna&lt;br /&gt;
| Requer &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; e diretórios padrão &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
⚠️ &#039;&#039;&#039;Nota:&#039;&#039;&#039; Sistemas que não possuem &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; não são compatíveis. Sempre execute como root.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🎛️ Perfis Disponíveis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Opção&lt;br /&gt;
! Perfil&lt;br /&gt;
! Arquivo Criado&lt;br /&gt;
! Efeito Principal&lt;br /&gt;
|-&lt;br /&gt;
| 1️⃣&lt;br /&gt;
| &#039;&#039;&#039;Desktop Geral&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| ⚡ Baseline básico do sysctl, sem ajustes extras&lt;br /&gt;
|-&lt;br /&gt;
| 2️⃣&lt;br /&gt;
| &#039;&#039;&#039;Gaming&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-gaming.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🎮 Otimizações TCP e memória para jogos, conexões e backlog aumentados&lt;br /&gt;
|-&lt;br /&gt;
| 3️⃣&lt;br /&gt;
| &#039;&#039;&#039;Laptop Economia&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-laptop.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💡 Economia de energia, swappiness médio, opcional runtime power saving (CPU, brilho, I/O)&lt;br /&gt;
|-&lt;br /&gt;
| 4️⃣&lt;br /&gt;
| &#039;&#039;&#039;Dev Workstation&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-dev.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💻 Limites altos de arquivos, processos e swappiness baixo para desenvolvimento&lt;br /&gt;
|-&lt;br /&gt;
| 5️⃣&lt;br /&gt;
| &#039;&#039;&#039;Streaming OBS&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-streaming.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 📹 Buffers de rede maiores, swappiness baixo, otimização para streaming&lt;br /&gt;
|-&lt;br /&gt;
| 6️⃣&lt;br /&gt;
| &#039;&#039;&#039;Economia de Energia&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-powersave.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🌱 Swappiness alto, cache pressure e scheduling para economia geral de energia&lt;br /&gt;
|-&lt;br /&gt;
| 7️⃣&lt;br /&gt;
| &#039;&#039;&#039;Restaurar Backup&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-rollback-manual.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🔄 Restaura qualquer backup válido do sysctl (runtime + permanente)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
⚠️ &#039;&#039;&#039;Nota:&#039;&#039;&#039; Opção 7 lista todos os backups disponíveis em &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt; e pede confirmação antes de restaurar.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📋 Fluxo de Execução ==&lt;br /&gt;
&lt;br /&gt;
# 💾 Cria backup atual do sysctl em &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt;&lt;br /&gt;
# 📝 Captura snapshot &#039;&#039;&#039;Antes&#039;&#039;&#039;&lt;br /&gt;
# 🔍 Detecta perfil ativo&lt;br /&gt;
# 🖱️ Menu para escolher perfil&lt;br /&gt;
# 🚫 Bloqueia reaplicação do mesmo perfil&lt;br /&gt;
# 🗑️ Remove perfis antigos e aplica &#039;&#039;&#039;baseline&#039;&#039;&#039;&lt;br /&gt;
# ⚙️ Aplica perfil escolhido&lt;br /&gt;
# 🔧 Aplica &amp;lt;code&amp;gt;sysctl --system&amp;lt;/code&amp;gt; e faz rollback automático em caso de erro&lt;br /&gt;
# 📝 Captura snapshot &#039;&#039;&#039;Depois&#039;&#039;&#039;&lt;br /&gt;
# 🌐 Gera relatório HTML comparando antes/depois&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📄 Relatórios Gerados ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arquivo&lt;br /&gt;
! Conteúdo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_before_YYYY-MM-DD-HH-MM-SS.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
| Estado do sysctl &#039;&#039;&#039;antes&#039;&#039;&#039; do tuning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_after_YYYY-MM-DD-HH-MM-SS.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
| Estado do sysctl &#039;&#039;&#039;após&#039;&#039;&#039; o tuning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_diff_YYYY-MM-DD-HH-MM-SS.html&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💻 Relatório visual comparando antes e depois, com cores para valores adicionados ou removidos&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ⚙️ Requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Linux com &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt;&lt;br /&gt;
* Executar o script como &#039;&#039;&#039;root&#039;&#039;&#039;&lt;br /&gt;
* Diretório para salvar relatórios existente&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🏃‍♂️ Uso ==&lt;br /&gt;
&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-desktop/refs/heads/main/install.sh &amp;amp;&amp;amp; sudo bash install.sh&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Desktop&amp;diff=1162</id>
		<title>Tuning e Hardening - Desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Desktop&amp;diff=1162"/>
		<updated>2026-02-27T03:14:30Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* 🏃‍♂️ Uso */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Tuning em Sistemas GNU-Linux Desktop,ou seja, para uso em computadores e notebooks voltados para uso cotidiano, como navegar na internet, trabalhar com textos, arquivos, fazer stream, jogar e desenvolver. Se quer otimização para máquinas virtual veja a página dedicada para VM em [[Tuning_e_Hardening_-_VM]] . Sendo este procedimento realizado para aumentar o desempenho entre 5% a 20% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 🖥️ Desktop Tuning Manager =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Autor:&#039;&#039;&#039; Diego Costa (@diegocostaroot)  &lt;br /&gt;
&#039;&#039;&#039;Canal no youtube:&#039;&#039;&#039; Projeto Root ([https://www.youtube.com/projetoroot youtube.com/projetoroot])  &lt;br /&gt;
&#039;&#039;&#039;Wiki:&#039;&#039;&#039; ([https://wiki.projetoroot.com.br wiki.projetoroot.com.br])  &lt;br /&gt;
&lt;br /&gt;
Gerenciador de perfis de tuning para Linux Desktop com backup, rollback e relatório HTML de diferenças.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🔧 Compatibilidade ==&lt;br /&gt;
&lt;br /&gt;
O script foi testado e é compatível com as seguintes distribuições e versões Linux Desktop:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sistema&lt;br /&gt;
! Versão Testada&lt;br /&gt;
! Observações&lt;br /&gt;
|-&lt;br /&gt;
| Debian&lt;br /&gt;
| 12 / 13&lt;br /&gt;
| Requer &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; instalado, executado como root&lt;br /&gt;
|-&lt;br /&gt;
| Ubuntu&lt;br /&gt;
| 22.04 / 24.04&lt;br /&gt;
| Funciona com desktops GNOME/KDE/CLI&lt;br /&gt;
|-&lt;br /&gt;
| Fedora&lt;br /&gt;
| 38 / 39&lt;br /&gt;
| Necessário ajustar &amp;lt;code&amp;gt;sysctl.d&amp;lt;/code&amp;gt; para SELinux permissivo&lt;br /&gt;
|-&lt;br /&gt;
| Pop!_OS&lt;br /&gt;
| 22.04 / 24.04&lt;br /&gt;
| Mesmos requisitos do Ubuntu&lt;br /&gt;
|-&lt;br /&gt;
| Linux Mint&lt;br /&gt;
| 21 / 22&lt;br /&gt;
| Testado com Cinnamon e Mate&lt;br /&gt;
|-&lt;br /&gt;
| Outros&lt;br /&gt;
| Qualquer distro Linux moderna&lt;br /&gt;
| Requer &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; e diretórios padrão &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
⚠️ &#039;&#039;&#039;Nota:&#039;&#039;&#039; Sistemas que não possuem &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; não são compatíveis. Sempre execute como root.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🎛️ Perfis Disponíveis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Opção&lt;br /&gt;
! Perfil&lt;br /&gt;
! Arquivo Criado&lt;br /&gt;
! Efeito Principal&lt;br /&gt;
|-&lt;br /&gt;
| 1️⃣&lt;br /&gt;
| &#039;&#039;&#039;Desktop Geral&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| ⚡ Baseline básico do sysctl, sem ajustes extras&lt;br /&gt;
|-&lt;br /&gt;
| 2️⃣&lt;br /&gt;
| &#039;&#039;&#039;Gaming&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-gaming.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🎮 Otimizações TCP e memória para jogos, conexões e backlog aumentados&lt;br /&gt;
|-&lt;br /&gt;
| 3️⃣&lt;br /&gt;
| &#039;&#039;&#039;Laptop Economia&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-laptop.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💡 Economia de energia, swappiness médio, opcional runtime power saving (CPU, brilho, I/O)&lt;br /&gt;
|-&lt;br /&gt;
| 4️⃣&lt;br /&gt;
| &#039;&#039;&#039;Dev Workstation&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-dev.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💻 Limites altos de arquivos, processos e swappiness baixo para desenvolvimento&lt;br /&gt;
|-&lt;br /&gt;
| 5️⃣&lt;br /&gt;
| &#039;&#039;&#039;Streaming OBS&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-streaming.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 📹 Buffers de rede maiores, swappiness baixo, otimização para streaming&lt;br /&gt;
|-&lt;br /&gt;
| 6️⃣&lt;br /&gt;
| &#039;&#039;&#039;Economia de Energia&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-powersave.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🌱 Swappiness alto, cache pressure e scheduling para economia geral de energia&lt;br /&gt;
|-&lt;br /&gt;
| 7️⃣&lt;br /&gt;
| &#039;&#039;&#039;Restaurar Backup&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-rollback-manual.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🔄 Restaura qualquer backup válido do sysctl (runtime + permanente)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
⚠️ &#039;&#039;&#039;Nota:&#039;&#039;&#039; Opção 7 lista todos os backups disponíveis em &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt; e pede confirmação antes de restaurar.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📋 Fluxo de Execução ==&lt;br /&gt;
&lt;br /&gt;
# 💾 Cria backup atual do sysctl em &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt;&lt;br /&gt;
# 📝 Captura snapshot &#039;&#039;&#039;Antes&#039;&#039;&#039;&lt;br /&gt;
# 🔍 Detecta perfil ativo&lt;br /&gt;
# 🖱️ Menu para escolher perfil&lt;br /&gt;
# 🚫 Bloqueia reaplicação do mesmo perfil&lt;br /&gt;
# 🗑️ Remove perfis antigos e aplica &#039;&#039;&#039;baseline&#039;&#039;&#039;&lt;br /&gt;
# ⚙️ Aplica perfil escolhido&lt;br /&gt;
# 🔧 Aplica &amp;lt;code&amp;gt;sysctl --system&amp;lt;/code&amp;gt; e faz rollback automático em caso de erro&lt;br /&gt;
# 📝 Captura snapshot &#039;&#039;&#039;Depois&#039;&#039;&#039;&lt;br /&gt;
# 🌐 Gera relatório HTML comparando antes/depois&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📄 Relatórios Gerados ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arquivo&lt;br /&gt;
! Conteúdo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_before_YYYY-MM-DD-HH-MM-SS.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
| Estado do sysctl &#039;&#039;&#039;antes&#039;&#039;&#039; do tuning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_after_YYYY-MM-DD-HH-MM-SS.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
| Estado do sysctl &#039;&#039;&#039;após&#039;&#039;&#039; o tuning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_diff_YYYY-MM-DD-HH-MM-SS.html&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💻 Relatório visual comparando antes e depois, com cores para valores adicionados ou removidos&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ⚙️ Requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Linux com &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt;&lt;br /&gt;
* Executar o script como &#039;&#039;&#039;root&#039;&#039;&#039;&lt;br /&gt;
* Diretório para salvar relatórios existente&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🏃‍♂️ Uso ==&lt;br /&gt;
&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-desktop/refs/heads/main/install.sh &amp;amp;&amp;amp;  sudo bash install.sh&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tunning-Mysql&amp;diff=1161</id>
		<title>Tunning-Mysql</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tunning-Mysql&amp;diff=1161"/>
		<updated>2026-02-20T00:17:51Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Tunning no Mysql, este procedimento tende a aumentar o desempenho de leitura e escrita em Banco, assim aumentando a performance geral do sistema de Banco de Dados em Mysql. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra.&lt;br /&gt;
&lt;br /&gt;
= Guia Completo de Tunning e Monitoramento de MySQL =&lt;br /&gt;
&lt;br /&gt;
== Introdução ==&lt;br /&gt;
Este guia reúne todas as etapas para otimizar e monitorar servidores MySQL modernos (5.7 ou 8.0), com foco em:&lt;br /&gt;
&lt;br /&gt;
* Aumentar a performance de leitura e escrita&lt;br /&gt;
* Reduzir gargalos&lt;br /&gt;
* Evitar upgrades desnecessários de infraestrutura&lt;br /&gt;
* Coletar métricas em tempo real e histórico&lt;br /&gt;
&lt;br /&gt;
As práticas incluem uso do **MySQLTuner**, ajustes no arquivo de configuração e monitoramento contínuo com **Performance Schema** e **PMM (Percona Monitoring and Management)**.&lt;br /&gt;
&lt;br /&gt;
== MySQLTuner ==&lt;br /&gt;
O MySQLTuner é um script em Perl que analisa o estado atual do MySQL e sugere ajustes de performance.&lt;br /&gt;
&lt;br /&gt;
=== Download ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl -O mysqltuner.pl&lt;br /&gt;
chmod +x mysqltuner.pl&lt;br /&gt;
&lt;br /&gt;
# Opcional: auditoria de senhas básicas&lt;br /&gt;
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Executar análise ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
perl mysqltuner.pl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O script gera recomendações de:&lt;br /&gt;
&lt;br /&gt;
* Buffers e caches&lt;br /&gt;
* Conexões&lt;br /&gt;
* Queries e waits&lt;br /&gt;
* Segurança do MySQL&lt;br /&gt;
&lt;br /&gt;
== Ajustes de Configuração ==&lt;br /&gt;
=== Local do arquivo ===&lt;br /&gt;
* Ubuntu/Debian: &amp;lt;code&amp;gt;/etc/mysql/mysql.conf.d/mysqld.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
* CentOS/RHEL: &amp;lt;code&amp;gt;/etc/my.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemplo de abertura:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Valores recomendados por RAM ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Variável !! 8 GB RAM !! 16 GB RAM !! 32 GB RAM !! Observações&lt;br /&gt;
|-&lt;br /&gt;
| tmp_table_size || 64M || 128M || 256M || Buffers temporários para tabelas HEAP/Temp&lt;br /&gt;
|-&lt;br /&gt;
| max_heap_table_size || 64M || 128M || 256M || Igual a tmp_table_size&lt;br /&gt;
|-&lt;br /&gt;
| innodb_buffer_pool_size || 2G || 8G || 16G || Cerca de 70-80% da RAM dedicada ao MySQL&lt;br /&gt;
|-&lt;br /&gt;
| innodb_buffer_pool_instances || 1 || 4 || 8 || Para pools grandes, aumenta paralelismo&lt;br /&gt;
|-&lt;br /&gt;
| innodb_log_file_size || 256M || 512M || 1G || Total log files ≈ 25% do buffer pool&lt;br /&gt;
|-&lt;br /&gt;
| performance_schema || ON || ON || ON || Ativar para diagnósticos avançados&lt;br /&gt;
|-&lt;br /&gt;
| max_connections || 200 || 300 || 400 || Ajustar conforme número de usuários&lt;br /&gt;
|-&lt;br /&gt;
| query_cache_size || 0 || 0 || 0 || Ignorado no MySQL 8.0&lt;br /&gt;
|-&lt;br /&gt;
| query_cache_type || 0 || 0 || 0 || Ignorado no MySQL 8.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Exemplo de bloco em mysqld.cnf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[mysqld]&lt;br /&gt;
tmp_table_size = 128M&lt;br /&gt;
max_heap_table_size = 128M&lt;br /&gt;
innodb_buffer_pool_size = 8G&lt;br /&gt;
innodb_buffer_pool_instances = 4&lt;br /&gt;
innodb_log_file_size = 512M&lt;br /&gt;
performance_schema = ON&lt;br /&gt;
max_connections = 300&lt;br /&gt;
query_cache_size = 0&lt;br /&gt;
query_cache_type = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aplicar alterações ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo systemctl restart mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após reiniciar, execute novamente o MySQLTuner para validar os ajustes.&lt;br /&gt;
&lt;br /&gt;
== Monitoramento Contínuo ==&lt;br /&gt;
&lt;br /&gt;
=== Performance Schema (PFS) ===&lt;br /&gt;
O Performance Schema coleta métricas detalhadas sobre queries, locks, buffers e tempos de execução.&lt;br /&gt;
&lt;br /&gt;
Ativar no arquivo de configuração:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[mysqld]&lt;br /&gt;
performance_schema=ON&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reinicie o MySQL:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo systemctl restart mysql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consultas úteis:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Queries mais pesadas&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM performance_schema.events_statements_summary_by_digest&lt;br /&gt;
ORDER BY AVG_TIMER_WAIT DESC&lt;br /&gt;
LIMIT 10;&lt;br /&gt;
&lt;br /&gt;
-- Esperas por locks&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM performance_schema.events_waits_summary_global_by_event_name&lt;br /&gt;
ORDER BY SUM_TIMER_WAIT DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajuste `performance_schema_max_table_instances` e `performance_schema_max_digest_length` se houver muita carga.&lt;br /&gt;
&lt;br /&gt;
=== PMM (Percona Monitoring and Management) ===&lt;br /&gt;
PMM pode ser instalado nativamente no servidor Linux.  &lt;br /&gt;
&lt;br /&gt;
1. Baixe o pacote do PMM Server (exemplo para Debian/Ubuntu):&lt;br /&gt;
&#039;&#039;&#039;OBS:&#039;&#039;&#039; Acessar o site e baixar a versão mais atual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://www.percona.com/downloads/pmm2/pmm2-server/pool/main/p/pmm2-server/pmm2-server_VERSION_all.deb&lt;br /&gt;
sudo dpkg -i pmm2-server_VERSION_all.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Instale o PMM Client no servidor MySQL:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install pmm2-client&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Configure o PMM Client para conectar ao PMM Server:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pmm-admin config --server-url=https://admin:admin@IP_DO_PMM_SERVER&lt;br /&gt;
pmm-admin add mysql --username=root --password=SEU_PASSWORD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Acesse o PMM Server pelo navegador:&lt;br /&gt;
* IP do servidor PMM, porta 80  &lt;br /&gt;
* Dashboards mostram:&lt;br /&gt;
  * Queries lentas&lt;br /&gt;
  * Uso de CPU e memória&lt;br /&gt;
  * Locks e waits&lt;br /&gt;
  * Throughput de transações  &lt;br /&gt;
* Alertas podem ser configurados via Grafana&lt;br /&gt;
&lt;br /&gt;
== Dicas Finais ==&lt;br /&gt;
* Ajuste os valores conforme memória disponível e carga real.&lt;br /&gt;
* Monitore o impacto por algumas horas/dias antes de aplicar em produção.&lt;br /&gt;
* Use Performance Schema para análises rápidas e PMM para monitoramento contínuo.&lt;br /&gt;
* Evite desativar proteções nativas ou usar parâmetros obsoletos.&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Host&amp;diff=1160</id>
		<title>Tuning e Hardening - Host</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Host&amp;diff=1160"/>
		<updated>2026-02-20T00:03:37Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Kernel Tuning e Hardening */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Tuning em Sistemas GNU-Linux no bare metal,ou seja, no servidor físico, para máquinas virtual veja a página dedicada para VM em [[Tuning_e_Hardening_-_VM]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Compatibilidade&#039;&#039;&#039;: Este conjunto de parâmetros sysctl é compatível com distribuições Linux que utilizam kernel Linux 5.4 ou superior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Distribuições testadas e compatíveis:&lt;br /&gt;
- Debian 11, 12 e 13&lt;br /&gt;
- Ubuntu 20.04 LTS, 22.04 LTS e 24.04 LTS&lt;br /&gt;
- Proxmox VE 7, 8 e 9&lt;br /&gt;
- Rocky Linux 8 e 9&lt;br /&gt;
- AlmaLinux 8 e 9&lt;br /&gt;
- RHEL 8 e 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Kernel Tuning e Hardening =&lt;br /&gt;
&lt;br /&gt;
Este projeto apresenta um conjunto de configurações e scripts para ajuste de desempenho (tuning) e endurecimento de segurança (hardening) do kernel Linux.&lt;br /&gt;
&lt;br /&gt;
O foco é melhorar estabilidade, capacidade de rede e segurança do sistema, sem desabilitar proteções críticas do kernel ou utilizar parâmetros obsoletos.&lt;br /&gt;
&lt;br /&gt;
== Objetivos ==&lt;br /&gt;
&lt;br /&gt;
* Ajustar parâmetros do kernel para servidores&lt;br /&gt;
* Reduzir superfície de ataque&lt;br /&gt;
* Manter compatibilidade com auditorias técnicas&lt;br /&gt;
* Fornecer mecanismo simples de validação&lt;br /&gt;
&lt;br /&gt;
== Escopo ==&lt;br /&gt;
&lt;br /&gt;
Estas configurações foram pensadas para:&lt;br /&gt;
&lt;br /&gt;
* Servidores Linux listados como compatíveis&lt;br /&gt;
* Ambientes físicos ou virtualizados&lt;br /&gt;
* Serviços de rede e infraestrutura&lt;br /&gt;
* Uso institucional ou pessoal&lt;br /&gt;
&lt;br /&gt;
== Removendo Kernel Antigo no Linux ==&lt;br /&gt;
https://wiki.projetoroot.com.br/index.php?title=Remover_Kernel_Linux_Antigo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tabela impacto e o objetivo ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela descreve o impacto e o objetivo de cada grupo de ajustes aplicados diretamente no host, considerando estabilidade, segurança e isolamento entre VMs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Componente do host&lt;br /&gt;
! Objetivo do hardening&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Benefícios práticos&lt;br /&gt;
! Cuidados / Observações&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Kernel Linux&#039;&#039;&#039;&lt;br /&gt;
| Reduzir superfície de ataque do host&lt;br /&gt;
| Proteções de symlink e hardlink, restrição de dmesg, ptrace limitado, ASLR forçado&lt;br /&gt;
| Dificulta escalonamento de privilégios e vazamento de informações do kernel&lt;br /&gt;
| Pode impactar ferramentas de debug no host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Filesystem&#039;&#039;&#039;&lt;br /&gt;
| Evitar abuso de recursos do sistema&lt;br /&gt;
| fs.file-max elevado, desativação de core dumps setuid&lt;br /&gt;
| Previne esgotamento de descritores e vazamento de memória sensível&lt;br /&gt;
| Ajustes devem considerar capacidade real do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Memória&#039;&#039;&#039;&lt;br /&gt;
| Priorizar VMs em vez do host&lt;br /&gt;
| swappiness baixo, mmap mínimo elevado&lt;br /&gt;
| Reduz uso de swap no host e melhora previsibilidade&lt;br /&gt;
| Swap ainda é necessária para estabilidade extrema&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Scheduler&#039;&#039;&#039;&lt;br /&gt;
| Evitar priorização automática indevida&lt;br /&gt;
| Desativação de autogroup, ajuste de migration cost&lt;br /&gt;
| Menos jitter e melhor previsibilidade para cargas de virtualização&lt;br /&gt;
| Pode reduzir responsividade em sessões interativas&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Rede IPv4&#039;&#039;&#039;&lt;br /&gt;
| Proteger o host contra ataques de rede&lt;br /&gt;
| rp_filter, desativar redirects, source routing, log de pacotes inválidos&lt;br /&gt;
| Reduz spoofing, ataques de rota e tráfego malformado&lt;br /&gt;
| Não interfere no tráfego das VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stack TCP&#039;&#039;&#039;&lt;br /&gt;
| Estabilidade e proteção básica&lt;br /&gt;
| SYN cookies, redução de retries, timeout controlado&lt;br /&gt;
| Mitiga ataques de SYN flood e conexões zumbis&lt;br /&gt;
| Host não deve ser usado como servidor de aplicação&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ARP / Neighbor cache&#039;&#039;&#039;&lt;br /&gt;
| Estabilidade em ambientes grandes&lt;br /&gt;
| Limites elevados de gc_thresh, intervalos menores&lt;br /&gt;
| Evita estouro de cache ARP em ambientes com muitas VMs&lt;br /&gt;
| Valores devem crescer conforme número de VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IPv6&#039;&#039;&#039;&lt;br /&gt;
| Reduzir exposição desnecessária&lt;br /&gt;
| Desativação de RA e redirects no host&lt;br /&gt;
| Evita configuração automática indevida de rotas&lt;br /&gt;
| Não afeta IPv6 interno das VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Virtualização&#039;&#039;&#039;&lt;br /&gt;
| Isolamento entre guests&lt;br /&gt;
| Kernel hardening padrão + KVM intacto&lt;br /&gt;
| Reduz risco de impacto de uma VM comprometida&lt;br /&gt;
| Não substitui atualizações de segurança&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Estrutura do projeto ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Caminho !! Descrição&lt;br /&gt;
|-&lt;br /&gt;
| /etc/sysctl/99-custom.conf || Ajustes de desempenho&lt;br /&gt;
|-&lt;br /&gt;
| /etc/sysctl/99-hardening.conf || Ajustes de segurança&lt;br /&gt;
|-&lt;br /&gt;
| /bin/sysctl-check.sh || Script de validação&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Decisões de segurança ==&lt;br /&gt;
&lt;br /&gt;
* Mitigações de Meltdown e Spectre permanecem ativas&lt;br /&gt;
* Nenhum parâmetro depreciado ou removido é utilizado&lt;br /&gt;
* Hardening aplicado sem impacto relevante de desempenho&lt;br /&gt;
&lt;br /&gt;
== Aviso ==&lt;br /&gt;
&lt;br /&gt;
Estas configurações devem ser testadas em ambiente controlado antes da aplicação em produção.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-host&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse seu servidor/VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-host/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente veja abaixo os procedimentos&lt;br /&gt;
&lt;br /&gt;
= Kernel Tuning – sysctl =&lt;br /&gt;
Crie o arquivo 99-custom.conf &lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.d/99-custom.conf&lt;br /&gt;
&lt;br /&gt;
== Arquivo: 99-custom.conf ==&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Limites de arquivos&lt;br /&gt;
############################&lt;br /&gt;
# Define o número máximo de arquivos abertos no sistema&lt;br /&gt;
fs.file-max = 1048576&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de memória&lt;br /&gt;
############################&lt;br /&gt;
# Reduz uso de swap, priorizando memória RAM&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
############################&lt;br /&gt;
# Portas efêmeras e conexões&lt;br /&gt;
############################&lt;br /&gt;
# Intervalo de portas locais para conexões de saída&lt;br /&gt;
net.ipv4.ip_local_port_range = 10000 65000&lt;br /&gt;
# Número máximo de conexões pendentes no listen&lt;br /&gt;
net.core.somaxconn = 65535&lt;br /&gt;
############################&lt;br /&gt;
# Buffers globais de rede&lt;br /&gt;
############################&lt;br /&gt;
# Buffer máximo de recepção&lt;br /&gt;
net.core.rmem_max = 16777216&lt;br /&gt;
# Buffer máximo de envio&lt;br /&gt;
net.core.wmem_max = 16777216&lt;br /&gt;
# Buffer padrão de recepção&lt;br /&gt;
net.core.rmem_default = 262144&lt;br /&gt;
# Buffer padrão de envio&lt;br /&gt;
net.core.wmem_default = 262144&lt;br /&gt;
############################&lt;br /&gt;
# Buffers TCP&lt;br /&gt;
############################&lt;br /&gt;
# Buffer TCP de recepção: min, default e max&lt;br /&gt;
net.ipv4.tcp_rmem = 4096 87380 16777216&lt;br /&gt;
# Buffer TCP de envio: min, default e max&lt;br /&gt;
net.ipv4.tcp_wmem = 4096 65536 16777216&lt;br /&gt;
############################&lt;br /&gt;
# Filas e backlog&lt;br /&gt;
############################&lt;br /&gt;
# Fila máxima de pacotes por interface&lt;br /&gt;
net.core.netdev_max_backlog = 50000&lt;br /&gt;
# Máximo de conexões SYN pendentes&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 32768&lt;br /&gt;
# Limite de conexões em TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_max_tw_buckets = 262144&lt;br /&gt;
############################&lt;br /&gt;
# Otimizações TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de espera no fechamento TCP&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
# Evita reinício lento após ociosidade&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
# Reduz tentativas de SYN&lt;br /&gt;
net.ipv4.tcp_syn_retries = 3&lt;br /&gt;
# Reduz tentativas de SYN-ACK&lt;br /&gt;
net.ipv4.tcp_synack_retries = 3&lt;br /&gt;
############################&lt;br /&gt;
# Buffers UDP&lt;br /&gt;
############################&lt;br /&gt;
# Buffer mínimo de recepção UDP&lt;br /&gt;
net.ipv4.udp_rmem_min = 8192&lt;br /&gt;
# Buffer mínimo de envio UDP&lt;br /&gt;
net.ipv4.udp_wmem_min = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Ajustes de TCP&lt;br /&gt;
############################&lt;br /&gt;
# Ativa escalonamento de janela TCP&lt;br /&gt;
net.ipv4.tcp_window_scaling = 1&lt;br /&gt;
############################&lt;br /&gt;
# Hardening IPv4&lt;br /&gt;
############################&lt;br /&gt;
# Não enviar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
# Não aceitar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
# Não aceitar source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
# Logar pacotes inválidos&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
############################&lt;br /&gt;
# Scheduler do kernel&lt;br /&gt;
############################&lt;br /&gt;
# Reduz migração excessiva de processos entre CPUs&lt;br /&gt;
kernel.sched_migration_cost_ns = 5000000&lt;br /&gt;
# Desativa agrupamento automático de processos&lt;br /&gt;
kernel.sched_autogroup_enabled = 0&lt;br /&gt;
############################&lt;br /&gt;
# Cache ARP&lt;br /&gt;
############################&lt;br /&gt;
# Intervalo de coleta de entradas ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_interval = 15&lt;br /&gt;
# Limite inicial do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh1 = 4096&lt;br /&gt;
# Limite intermediário do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh2 = 8192&lt;br /&gt;
# Limite máximo do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh3 = 16384&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Observações ==&lt;br /&gt;
&lt;br /&gt;
* Os valores priorizam estabilidade e throughput&lt;br /&gt;
* Não há impacto negativo em segurança&lt;br /&gt;
* Compatível com cargas de rede elevadas&lt;br /&gt;
&lt;br /&gt;
= Kernel Hardening – sysctl =&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo 99-hardening.conf &lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.d/99-hardening.conf&lt;br /&gt;
&lt;br /&gt;
== Arquivo: 99-hardening.conf ==&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
###########################&lt;br /&gt;
# Kernel hardening baseline&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de links simbólicos e hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
# Restringir acesso ao dmesg&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Restringir acesso a ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evitar core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
# Endurecer uso de ptrace&lt;br /&gt;
kernel.yama.ptrace_scope = 1&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de rede IPv4&lt;br /&gt;
############################&lt;br /&gt;
# Proteção contra IP spoofing&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 1&lt;br /&gt;
net.ipv4.conf.default.rp_filter = 1&lt;br /&gt;
# Não aceitar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;
# Não enviar redirecionamentos&lt;br /&gt;
net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.send_redirects = 0&lt;br /&gt;
# Não aceitar source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;
# Ativar SYN cookies&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
# Ignorar ICMP suspeitos&lt;br /&gt;
net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
net.ipv4.icmp_ignore_bogus_error_responses = 1&lt;br /&gt;
# Logar pacotes inválidos&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
net.ipv4.conf.default.log_martians = 1&lt;br /&gt;
############################&lt;br /&gt;
# Hardening IPv6&lt;br /&gt;
############################&lt;br /&gt;
# Desabilitar redirects IPv6&lt;br /&gt;
net.ipv6.conf.all.accept_redirects = 0&lt;br /&gt;
net.ipv6.conf.default.accept_redirects = 0&lt;br /&gt;
# Não aceitar router advertisements se não for roteador&lt;br /&gt;
net.ipv6.conf.all.accept_ra = 0&lt;br /&gt;
net.ipv6.conf.default.accept_ra = 0&lt;br /&gt;
############################&lt;br /&gt;
# Memória e execução&lt;br /&gt;
############################&lt;br /&gt;
# Endurecer mmap em regiões baixas&lt;br /&gt;
vm.mmap_min_addr = 65536&lt;br /&gt;
# Proteger contra execuções indevidas&lt;br /&gt;
kernel.randomize_va_space = 2&lt;br /&gt;
############################&lt;br /&gt;
# Controle de pacotes suspeitos&lt;br /&gt;
############################&lt;br /&gt;
# Ignorar pacotes com timestamp inválido&lt;br /&gt;
net.ipv4.tcp_timestamps = 1&lt;br /&gt;
# Validar pacotes TCP&lt;br /&gt;
net.ipv4.tcp_rfc1337 = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Aplicação das configurações sysctl =&lt;br /&gt;
&lt;br /&gt;
As configurações de tuning e hardening devem ser aplicadas por meio de arquivos&lt;br /&gt;
no diretório /etc/sysctl.d/.&lt;br /&gt;
&lt;br /&gt;
Não é recomendado editar diretamente o arquivo /etc/sysctl.conf.&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Validação das configurações sysctl =&lt;br /&gt;
&lt;br /&gt;
O script sysctl-check.sh valida se os parâmetros definidos estão ativos&lt;br /&gt;
no kernel em tempo de execução.&lt;br /&gt;
&lt;br /&gt;
== Script de validação ==&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - tuning e hardening&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;== Kernel hardening ==&amp;quot;&lt;br /&gt;
check fs.protected_hardlinks 1&lt;br /&gt;
check fs.protected_symlinks 1&lt;br /&gt;
check fs.protected_fifos 1&lt;br /&gt;
check fs.protected_regular 1&lt;br /&gt;
check kernel.dmesg_restrict 1&lt;br /&gt;
check kernel.kptr_restrict 2&lt;br /&gt;
check fs.suid_dumpable 0&lt;br /&gt;
check kernel.yama.ptrace_scope 1&lt;br /&gt;
check kernel.randomize_va_space 2&lt;br /&gt;
check vm.mmap_min_addr 65536&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Rede IPv4 ==&amp;quot;&lt;br /&gt;
check net.ipv4.conf.all.rp_filter 1&lt;br /&gt;
check net.ipv4.conf.default.rp_filter 1&lt;br /&gt;
check net.ipv4.conf.all.accept_redirects 0&lt;br /&gt;
check net.ipv4.conf.default.accept_redirects 0&lt;br /&gt;
check net.ipv4.conf.all.send_redirects 0&lt;br /&gt;
check net.ipv4.conf.default.send_redirects 0&lt;br /&gt;
check net.ipv4.conf.all.accept_source_route 0&lt;br /&gt;
check net.ipv4.conf.default.accept_source_route 0&lt;br /&gt;
check net.ipv4.tcp_syncookies 1&lt;br /&gt;
check net.ipv4.icmp_echo_ignore_broadcasts 1&lt;br /&gt;
check net.ipv4.icmp_ignore_bogus_error_responses 1&lt;br /&gt;
check net.ipv4.conf.all.log_martians 1&lt;br /&gt;
check net.ipv4.conf.default.log_martians 1&lt;br /&gt;
check net.ipv4.tcp_rfc1337 1&lt;br /&gt;
check net.ipv4.tcp_timestamps 1&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Rede IPv6 ==&amp;quot;&lt;br /&gt;
check net.ipv6.conf.all.accept_redirects 0&lt;br /&gt;
check net.ipv6.conf.default.accept_redirects 0&lt;br /&gt;
check net.ipv6.conf.all.accept_ra 0&lt;br /&gt;
check net.ipv6.conf.default.accept_ra 0&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Tuning essencial ==&amp;quot;&lt;br /&gt;
check fs.file-max 1048576&lt;br /&gt;
check vm.swappiness 1&lt;br /&gt;
check net.core.somaxconn 65535&lt;br /&gt;
check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: TODOS OS PARÂMETROS ESTÃO CORRETOS&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução.&lt;br /&gt;
 chmod +x /bin/sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
Executando:&lt;br /&gt;
 sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resultado ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#################################           &lt;br /&gt;
Validação de sysctl - tuning e hardening&lt;br /&gt;
Host: debian-base&lt;br /&gt;
Data: qua 18 fev 2026 18:18:18 -03&lt;br /&gt;
&lt;br /&gt;
== Kernel hardening ==&lt;br /&gt;
[ OK ] fs.protected_hardlinks                        = 1&lt;br /&gt;
[ OK ] fs.protected_symlinks                         = 1&lt;br /&gt;
[ OK ] fs.protected_fifos                            = 1&lt;br /&gt;
[ OK ] fs.protected_regular                          = 1&lt;br /&gt;
[ OK ] kernel.dmesg_restrict                         = 1&lt;br /&gt;
[ OK ] kernel.kptr_restrict                          = 2&lt;br /&gt;
[ OK ] fs.suid_dumpable                              = 0&lt;br /&gt;
[ OK ] kernel.yama.ptrace_scope                      = 1&lt;br /&gt;
[ OK ] kernel.randomize_va_space                     = 2&lt;br /&gt;
[ OK ] vm.mmap_min_addr                              = 65536&lt;br /&gt;
&lt;br /&gt;
== Rede IPv4 ==&lt;br /&gt;
[ OK ] net.ipv4.conf.all.rp_filter                   = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.default.rp_filter               = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.all.accept_redirects            = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.accept_redirects        = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.all.send_redirects              = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.send_redirects          = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.all.accept_source_route         = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.accept_source_route     = 0&lt;br /&gt;
[ OK ] net.ipv4.tcp_syncookies                       = 1&lt;br /&gt;
[ OK ] net.ipv4.icmp_echo_ignore_broadcasts          = 1&lt;br /&gt;
[ OK ] net.ipv4.icmp_ignore_bogus_error_responses    = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.all.log_martians                = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.default.log_martians            = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_rfc1337                          = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_timestamps                       = 1&lt;br /&gt;
&lt;br /&gt;
== Rede IPv6 ==&lt;br /&gt;
[ OK ] net.ipv6.conf.all.accept_redirects            = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.default.accept_redirects        = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.all.accept_ra                   = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.default.accept_ra               = 0&lt;br /&gt;
&lt;br /&gt;
== Tuning essencial ==&lt;br /&gt;
[ OK ] fs.file-max                                   = 1048576&lt;br /&gt;
[ OK ] vm.swappiness                                 = 1&lt;br /&gt;
[ OK ] net.core.somaxconn                            = 65535&lt;br /&gt;
[ OK ] net.ipv4.tcp_fin_timeout                      = 10&lt;br /&gt;
[ OK ] net.ipv4.tcp_tw_reuse                         = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_slow_start_after_idle            = 0&lt;br /&gt;
&lt;br /&gt;
Resultado final: TODOS OS PARÂMETROS ESTÃO CORRETOS&lt;br /&gt;
#################################&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O script pode ser usado em auditorias, automações ou validações periódicas.&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1159</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1159"/>
		<updated>2026-02-20T00:02:57Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Tabela de decisão por tipo de VM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Removendo Kernel Antigo no Linux ==&lt;br /&gt;
https://wiki.projetoroot.com.br/index.php?title=Remover_Kernel_Linux_Antigo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Acesse o shell com root e carregue o ambiente completo desse usuário &#039;&#039;&#039;(Passo importante)&#039;&#039;&#039;&lt;br /&gt;
 su -&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
# Todos usuários&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&lt;br /&gt;
# Root explícito&lt;br /&gt;
root soft nofile 104857&lt;br /&gt;
root hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abra nova sessão SSH ou shell e valide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reexec&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Host&amp;diff=1158</id>
		<title>Tuning e Hardening - Host</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Host&amp;diff=1158"/>
		<updated>2026-02-19T01:15:00Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Arquivo: 99-hardening.conf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Tuning em Sistemas GNU-Linux no bare metal,ou seja, no servidor físico, para máquinas virtual veja a página dedicada para VM em [[Tuning_e_Hardening_-_VM]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Compatibilidade&#039;&#039;&#039;: Este conjunto de parâmetros sysctl é compatível com distribuições Linux que utilizam kernel Linux 5.4 ou superior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Distribuições testadas e compatíveis:&lt;br /&gt;
- Debian 11, 12 e 13&lt;br /&gt;
- Ubuntu 20.04 LTS, 22.04 LTS e 24.04 LTS&lt;br /&gt;
- Proxmox VE 7, 8 e 9&lt;br /&gt;
- Rocky Linux 8 e 9&lt;br /&gt;
- AlmaLinux 8 e 9&lt;br /&gt;
- RHEL 8 e 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Kernel Tuning e Hardening =&lt;br /&gt;
&lt;br /&gt;
Este projeto apresenta um conjunto de configurações e scripts para ajuste de desempenho (tuning) e endurecimento de segurança (hardening) do kernel Linux.&lt;br /&gt;
&lt;br /&gt;
O foco é melhorar estabilidade, capacidade de rede e segurança do sistema, sem desabilitar proteções críticas do kernel ou utilizar parâmetros obsoletos.&lt;br /&gt;
&lt;br /&gt;
== Objetivos ==&lt;br /&gt;
&lt;br /&gt;
* Ajustar parâmetros do kernel para servidores&lt;br /&gt;
* Reduzir superfície de ataque&lt;br /&gt;
* Manter compatibilidade com auditorias técnicas&lt;br /&gt;
* Fornecer mecanismo simples de validação&lt;br /&gt;
&lt;br /&gt;
== Escopo ==&lt;br /&gt;
&lt;br /&gt;
Estas configurações foram pensadas para:&lt;br /&gt;
&lt;br /&gt;
* Servidores Linux listados como compatíveis&lt;br /&gt;
* Ambientes físicos ou virtualizados&lt;br /&gt;
* Serviços de rede e infraestrutura&lt;br /&gt;
* Uso institucional ou pessoal&lt;br /&gt;
&lt;br /&gt;
== Tabela impacto e o objetivo ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela descreve o impacto e o objetivo de cada grupo de ajustes aplicados diretamente no host, considerando estabilidade, segurança e isolamento entre VMs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Componente do host&lt;br /&gt;
! Objetivo do hardening&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Benefícios práticos&lt;br /&gt;
! Cuidados / Observações&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Kernel Linux&#039;&#039;&#039;&lt;br /&gt;
| Reduzir superfície de ataque do host&lt;br /&gt;
| Proteções de symlink e hardlink, restrição de dmesg, ptrace limitado, ASLR forçado&lt;br /&gt;
| Dificulta escalonamento de privilégios e vazamento de informações do kernel&lt;br /&gt;
| Pode impactar ferramentas de debug no host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Filesystem&#039;&#039;&#039;&lt;br /&gt;
| Evitar abuso de recursos do sistema&lt;br /&gt;
| fs.file-max elevado, desativação de core dumps setuid&lt;br /&gt;
| Previne esgotamento de descritores e vazamento de memória sensível&lt;br /&gt;
| Ajustes devem considerar capacidade real do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Memória&#039;&#039;&#039;&lt;br /&gt;
| Priorizar VMs em vez do host&lt;br /&gt;
| swappiness baixo, mmap mínimo elevado&lt;br /&gt;
| Reduz uso de swap no host e melhora previsibilidade&lt;br /&gt;
| Swap ainda é necessária para estabilidade extrema&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Scheduler&#039;&#039;&#039;&lt;br /&gt;
| Evitar priorização automática indevida&lt;br /&gt;
| Desativação de autogroup, ajuste de migration cost&lt;br /&gt;
| Menos jitter e melhor previsibilidade para cargas de virtualização&lt;br /&gt;
| Pode reduzir responsividade em sessões interativas&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Rede IPv4&#039;&#039;&#039;&lt;br /&gt;
| Proteger o host contra ataques de rede&lt;br /&gt;
| rp_filter, desativar redirects, source routing, log de pacotes inválidos&lt;br /&gt;
| Reduz spoofing, ataques de rota e tráfego malformado&lt;br /&gt;
| Não interfere no tráfego das VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stack TCP&#039;&#039;&#039;&lt;br /&gt;
| Estabilidade e proteção básica&lt;br /&gt;
| SYN cookies, redução de retries, timeout controlado&lt;br /&gt;
| Mitiga ataques de SYN flood e conexões zumbis&lt;br /&gt;
| Host não deve ser usado como servidor de aplicação&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ARP / Neighbor cache&#039;&#039;&#039;&lt;br /&gt;
| Estabilidade em ambientes grandes&lt;br /&gt;
| Limites elevados de gc_thresh, intervalos menores&lt;br /&gt;
| Evita estouro de cache ARP em ambientes com muitas VMs&lt;br /&gt;
| Valores devem crescer conforme número de VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IPv6&#039;&#039;&#039;&lt;br /&gt;
| Reduzir exposição desnecessária&lt;br /&gt;
| Desativação de RA e redirects no host&lt;br /&gt;
| Evita configuração automática indevida de rotas&lt;br /&gt;
| Não afeta IPv6 interno das VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Virtualização&#039;&#039;&#039;&lt;br /&gt;
| Isolamento entre guests&lt;br /&gt;
| Kernel hardening padrão + KVM intacto&lt;br /&gt;
| Reduz risco de impacto de uma VM comprometida&lt;br /&gt;
| Não substitui atualizações de segurança&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Estrutura do projeto ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Caminho !! Descrição&lt;br /&gt;
|-&lt;br /&gt;
| /etc/sysctl/99-custom.conf || Ajustes de desempenho&lt;br /&gt;
|-&lt;br /&gt;
| /etc/sysctl/99-hardening.conf || Ajustes de segurança&lt;br /&gt;
|-&lt;br /&gt;
| /bin/sysctl-check.sh || Script de validação&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Decisões de segurança ==&lt;br /&gt;
&lt;br /&gt;
* Mitigações de Meltdown e Spectre permanecem ativas&lt;br /&gt;
* Nenhum parâmetro depreciado ou removido é utilizado&lt;br /&gt;
* Hardening aplicado sem impacto relevante de desempenho&lt;br /&gt;
&lt;br /&gt;
== Aviso ==&lt;br /&gt;
&lt;br /&gt;
Estas configurações devem ser testadas em ambiente controlado antes da aplicação em produção.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-host&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse seu servidor/VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-host/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente veja abaixo os procedimentos&lt;br /&gt;
&lt;br /&gt;
= Kernel Tuning – sysctl =&lt;br /&gt;
Crie o arquivo 99-custom.conf &lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.d/99-custom.conf&lt;br /&gt;
&lt;br /&gt;
== Arquivo: 99-custom.conf ==&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Limites de arquivos&lt;br /&gt;
############################&lt;br /&gt;
# Define o número máximo de arquivos abertos no sistema&lt;br /&gt;
fs.file-max = 1048576&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de memória&lt;br /&gt;
############################&lt;br /&gt;
# Reduz uso de swap, priorizando memória RAM&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
############################&lt;br /&gt;
# Portas efêmeras e conexões&lt;br /&gt;
############################&lt;br /&gt;
# Intervalo de portas locais para conexões de saída&lt;br /&gt;
net.ipv4.ip_local_port_range = 10000 65000&lt;br /&gt;
# Número máximo de conexões pendentes no listen&lt;br /&gt;
net.core.somaxconn = 65535&lt;br /&gt;
############################&lt;br /&gt;
# Buffers globais de rede&lt;br /&gt;
############################&lt;br /&gt;
# Buffer máximo de recepção&lt;br /&gt;
net.core.rmem_max = 16777216&lt;br /&gt;
# Buffer máximo de envio&lt;br /&gt;
net.core.wmem_max = 16777216&lt;br /&gt;
# Buffer padrão de recepção&lt;br /&gt;
net.core.rmem_default = 262144&lt;br /&gt;
# Buffer padrão de envio&lt;br /&gt;
net.core.wmem_default = 262144&lt;br /&gt;
############################&lt;br /&gt;
# Buffers TCP&lt;br /&gt;
############################&lt;br /&gt;
# Buffer TCP de recepção: min, default e max&lt;br /&gt;
net.ipv4.tcp_rmem = 4096 87380 16777216&lt;br /&gt;
# Buffer TCP de envio: min, default e max&lt;br /&gt;
net.ipv4.tcp_wmem = 4096 65536 16777216&lt;br /&gt;
############################&lt;br /&gt;
# Filas e backlog&lt;br /&gt;
############################&lt;br /&gt;
# Fila máxima de pacotes por interface&lt;br /&gt;
net.core.netdev_max_backlog = 50000&lt;br /&gt;
# Máximo de conexões SYN pendentes&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 32768&lt;br /&gt;
# Limite de conexões em TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_max_tw_buckets = 262144&lt;br /&gt;
############################&lt;br /&gt;
# Otimizações TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de espera no fechamento TCP&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
# Evita reinício lento após ociosidade&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
# Reduz tentativas de SYN&lt;br /&gt;
net.ipv4.tcp_syn_retries = 3&lt;br /&gt;
# Reduz tentativas de SYN-ACK&lt;br /&gt;
net.ipv4.tcp_synack_retries = 3&lt;br /&gt;
############################&lt;br /&gt;
# Buffers UDP&lt;br /&gt;
############################&lt;br /&gt;
# Buffer mínimo de recepção UDP&lt;br /&gt;
net.ipv4.udp_rmem_min = 8192&lt;br /&gt;
# Buffer mínimo de envio UDP&lt;br /&gt;
net.ipv4.udp_wmem_min = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Ajustes de TCP&lt;br /&gt;
############################&lt;br /&gt;
# Ativa escalonamento de janela TCP&lt;br /&gt;
net.ipv4.tcp_window_scaling = 1&lt;br /&gt;
############################&lt;br /&gt;
# Hardening IPv4&lt;br /&gt;
############################&lt;br /&gt;
# Não enviar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
# Não aceitar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
# Não aceitar source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
# Logar pacotes inválidos&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
############################&lt;br /&gt;
# Scheduler do kernel&lt;br /&gt;
############################&lt;br /&gt;
# Reduz migração excessiva de processos entre CPUs&lt;br /&gt;
kernel.sched_migration_cost_ns = 5000000&lt;br /&gt;
# Desativa agrupamento automático de processos&lt;br /&gt;
kernel.sched_autogroup_enabled = 0&lt;br /&gt;
############################&lt;br /&gt;
# Cache ARP&lt;br /&gt;
############################&lt;br /&gt;
# Intervalo de coleta de entradas ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_interval = 15&lt;br /&gt;
# Limite inicial do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh1 = 4096&lt;br /&gt;
# Limite intermediário do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh2 = 8192&lt;br /&gt;
# Limite máximo do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh3 = 16384&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Observações ==&lt;br /&gt;
&lt;br /&gt;
* Os valores priorizam estabilidade e throughput&lt;br /&gt;
* Não há impacto negativo em segurança&lt;br /&gt;
* Compatível com cargas de rede elevadas&lt;br /&gt;
&lt;br /&gt;
= Kernel Hardening – sysctl =&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo 99-hardening.conf &lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.d/99-hardening.conf&lt;br /&gt;
&lt;br /&gt;
== Arquivo: 99-hardening.conf ==&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
###########################&lt;br /&gt;
# Kernel hardening baseline&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de links simbólicos e hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
# Restringir acesso ao dmesg&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Restringir acesso a ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evitar core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
# Endurecer uso de ptrace&lt;br /&gt;
kernel.yama.ptrace_scope = 1&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de rede IPv4&lt;br /&gt;
############################&lt;br /&gt;
# Proteção contra IP spoofing&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 1&lt;br /&gt;
net.ipv4.conf.default.rp_filter = 1&lt;br /&gt;
# Não aceitar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;
# Não enviar redirecionamentos&lt;br /&gt;
net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.send_redirects = 0&lt;br /&gt;
# Não aceitar source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;
# Ativar SYN cookies&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
# Ignorar ICMP suspeitos&lt;br /&gt;
net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
net.ipv4.icmp_ignore_bogus_error_responses = 1&lt;br /&gt;
# Logar pacotes inválidos&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
net.ipv4.conf.default.log_martians = 1&lt;br /&gt;
############################&lt;br /&gt;
# Hardening IPv6&lt;br /&gt;
############################&lt;br /&gt;
# Desabilitar redirects IPv6&lt;br /&gt;
net.ipv6.conf.all.accept_redirects = 0&lt;br /&gt;
net.ipv6.conf.default.accept_redirects = 0&lt;br /&gt;
# Não aceitar router advertisements se não for roteador&lt;br /&gt;
net.ipv6.conf.all.accept_ra = 0&lt;br /&gt;
net.ipv6.conf.default.accept_ra = 0&lt;br /&gt;
############################&lt;br /&gt;
# Memória e execução&lt;br /&gt;
############################&lt;br /&gt;
# Endurecer mmap em regiões baixas&lt;br /&gt;
vm.mmap_min_addr = 65536&lt;br /&gt;
# Proteger contra execuções indevidas&lt;br /&gt;
kernel.randomize_va_space = 2&lt;br /&gt;
############################&lt;br /&gt;
# Controle de pacotes suspeitos&lt;br /&gt;
############################&lt;br /&gt;
# Ignorar pacotes com timestamp inválido&lt;br /&gt;
net.ipv4.tcp_timestamps = 1&lt;br /&gt;
# Validar pacotes TCP&lt;br /&gt;
net.ipv4.tcp_rfc1337 = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Aplicação das configurações sysctl =&lt;br /&gt;
&lt;br /&gt;
As configurações de tuning e hardening devem ser aplicadas por meio de arquivos&lt;br /&gt;
no diretório /etc/sysctl.d/.&lt;br /&gt;
&lt;br /&gt;
Não é recomendado editar diretamente o arquivo /etc/sysctl.conf.&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Validação das configurações sysctl =&lt;br /&gt;
&lt;br /&gt;
O script sysctl-check.sh valida se os parâmetros definidos estão ativos&lt;br /&gt;
no kernel em tempo de execução.&lt;br /&gt;
&lt;br /&gt;
== Script de validação ==&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - tuning e hardening&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;== Kernel hardening ==&amp;quot;&lt;br /&gt;
check fs.protected_hardlinks 1&lt;br /&gt;
check fs.protected_symlinks 1&lt;br /&gt;
check fs.protected_fifos 1&lt;br /&gt;
check fs.protected_regular 1&lt;br /&gt;
check kernel.dmesg_restrict 1&lt;br /&gt;
check kernel.kptr_restrict 2&lt;br /&gt;
check fs.suid_dumpable 0&lt;br /&gt;
check kernel.yama.ptrace_scope 1&lt;br /&gt;
check kernel.randomize_va_space 2&lt;br /&gt;
check vm.mmap_min_addr 65536&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Rede IPv4 ==&amp;quot;&lt;br /&gt;
check net.ipv4.conf.all.rp_filter 1&lt;br /&gt;
check net.ipv4.conf.default.rp_filter 1&lt;br /&gt;
check net.ipv4.conf.all.accept_redirects 0&lt;br /&gt;
check net.ipv4.conf.default.accept_redirects 0&lt;br /&gt;
check net.ipv4.conf.all.send_redirects 0&lt;br /&gt;
check net.ipv4.conf.default.send_redirects 0&lt;br /&gt;
check net.ipv4.conf.all.accept_source_route 0&lt;br /&gt;
check net.ipv4.conf.default.accept_source_route 0&lt;br /&gt;
check net.ipv4.tcp_syncookies 1&lt;br /&gt;
check net.ipv4.icmp_echo_ignore_broadcasts 1&lt;br /&gt;
check net.ipv4.icmp_ignore_bogus_error_responses 1&lt;br /&gt;
check net.ipv4.conf.all.log_martians 1&lt;br /&gt;
check net.ipv4.conf.default.log_martians 1&lt;br /&gt;
check net.ipv4.tcp_rfc1337 1&lt;br /&gt;
check net.ipv4.tcp_timestamps 1&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Rede IPv6 ==&amp;quot;&lt;br /&gt;
check net.ipv6.conf.all.accept_redirects 0&lt;br /&gt;
check net.ipv6.conf.default.accept_redirects 0&lt;br /&gt;
check net.ipv6.conf.all.accept_ra 0&lt;br /&gt;
check net.ipv6.conf.default.accept_ra 0&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Tuning essencial ==&amp;quot;&lt;br /&gt;
check fs.file-max 1048576&lt;br /&gt;
check vm.swappiness 1&lt;br /&gt;
check net.core.somaxconn 65535&lt;br /&gt;
check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: TODOS OS PARÂMETROS ESTÃO CORRETOS&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução.&lt;br /&gt;
 chmod +x /bin/sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
Executando:&lt;br /&gt;
 sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resultado ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#################################           &lt;br /&gt;
Validação de sysctl - tuning e hardening&lt;br /&gt;
Host: debian-base&lt;br /&gt;
Data: qua 18 fev 2026 18:18:18 -03&lt;br /&gt;
&lt;br /&gt;
== Kernel hardening ==&lt;br /&gt;
[ OK ] fs.protected_hardlinks                        = 1&lt;br /&gt;
[ OK ] fs.protected_symlinks                         = 1&lt;br /&gt;
[ OK ] fs.protected_fifos                            = 1&lt;br /&gt;
[ OK ] fs.protected_regular                          = 1&lt;br /&gt;
[ OK ] kernel.dmesg_restrict                         = 1&lt;br /&gt;
[ OK ] kernel.kptr_restrict                          = 2&lt;br /&gt;
[ OK ] fs.suid_dumpable                              = 0&lt;br /&gt;
[ OK ] kernel.yama.ptrace_scope                      = 1&lt;br /&gt;
[ OK ] kernel.randomize_va_space                     = 2&lt;br /&gt;
[ OK ] vm.mmap_min_addr                              = 65536&lt;br /&gt;
&lt;br /&gt;
== Rede IPv4 ==&lt;br /&gt;
[ OK ] net.ipv4.conf.all.rp_filter                   = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.default.rp_filter               = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.all.accept_redirects            = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.accept_redirects        = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.all.send_redirects              = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.send_redirects          = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.all.accept_source_route         = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.accept_source_route     = 0&lt;br /&gt;
[ OK ] net.ipv4.tcp_syncookies                       = 1&lt;br /&gt;
[ OK ] net.ipv4.icmp_echo_ignore_broadcasts          = 1&lt;br /&gt;
[ OK ] net.ipv4.icmp_ignore_bogus_error_responses    = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.all.log_martians                = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.default.log_martians            = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_rfc1337                          = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_timestamps                       = 1&lt;br /&gt;
&lt;br /&gt;
== Rede IPv6 ==&lt;br /&gt;
[ OK ] net.ipv6.conf.all.accept_redirects            = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.default.accept_redirects        = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.all.accept_ra                   = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.default.accept_ra               = 0&lt;br /&gt;
&lt;br /&gt;
== Tuning essencial ==&lt;br /&gt;
[ OK ] fs.file-max                                   = 1048576&lt;br /&gt;
[ OK ] vm.swappiness                                 = 1&lt;br /&gt;
[ OK ] net.core.somaxconn                            = 65535&lt;br /&gt;
[ OK ] net.ipv4.tcp_fin_timeout                      = 10&lt;br /&gt;
[ OK ] net.ipv4.tcp_tw_reuse                         = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_slow_start_after_idle            = 0&lt;br /&gt;
&lt;br /&gt;
Resultado final: TODOS OS PARÂMETROS ESTÃO CORRETOS&lt;br /&gt;
#################################&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O script pode ser usado em auditorias, automações ou validações periódicas.&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1157</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1157"/>
		<updated>2026-02-18T15:18:05Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Hardening adicional dentro das VMs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Acesse o shell com root e carregue o ambiente completo desse usuário &#039;&#039;&#039;(Passo importante)&#039;&#039;&#039;&lt;br /&gt;
 su -&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
# Todos usuários&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&lt;br /&gt;
# Root explícito&lt;br /&gt;
root soft nofile 104857&lt;br /&gt;
root hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abra nova sessão SSH ou shell e valide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reexec&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1156</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1156"/>
		<updated>2026-02-18T15:09:13Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* VM Base line */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Acesse o shell com root e carregue o ambiente completo desse usuário &#039;&#039;&#039;(Passo importante)&#039;&#039;&#039;&lt;br /&gt;
 su -&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abra nova sessão SSH ou shell e valide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reexec&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1155</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1155"/>
		<updated>2026-02-18T15:08:02Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* VM Base line */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Acesse o shell com root e carrega o ambiente completo desse usuário &#039;&#039;&#039;(Passo importante)&#039;&#039;&#039;&lt;br /&gt;
 su -&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abra nova sessão SSH ou shell e valide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reexec&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1154</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1154"/>
		<updated>2026-02-18T15:07:44Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* VM Base line */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Acesse o shell com root e carrega o ambiente completo desse usuário (Passo importante)&lt;br /&gt;
 su -&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abra nova sessão SSH ou shell e valide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reexec&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1153</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1153"/>
		<updated>2026-02-18T15:02:45Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Script de validação de perfil de VM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abra nova sessão SSH ou shell e valide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reexec&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1152</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1152"/>
		<updated>2026-02-18T15:01:25Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Aplicação */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abra nova sessão SSH ou shell e valide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reexec&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1151</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1151"/>
		<updated>2026-02-18T14:57:58Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Hardening adicional dentro das VMs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Abra nova sessão SSH ou shell e valide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1150</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1150"/>
		<updated>2026-02-18T14:57:01Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Hardening adicional dentro das VMs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
Aplicar sysctl&lt;br /&gt;
 sysctl --system&lt;br /&gt;
&lt;br /&gt;
Abra nova sessão SSH ou shell e valide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1149</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1149"/>
		<updated>2026-02-18T14:56:49Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Hardening adicional dentro das VMs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
Aplicar sysctl&lt;br /&gt;
 sysctl --system&lt;br /&gt;
&lt;br /&gt;
Abra nova sessão SSH ou shell e valide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1148</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1148"/>
		<updated>2026-02-18T14:55:53Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Hardening adicional dentro das VMs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
Aplicar sysctl&lt;br /&gt;
 sysctl --system&lt;br /&gt;
&lt;br /&gt;
Ver limites do shell&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1147</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1147"/>
		<updated>2026-02-18T14:46:30Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Tabela de decisão por tipo de VM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
Aplicar sysctl&lt;br /&gt;
 sysctl --system&lt;br /&gt;
&lt;br /&gt;
Ver limites do shell&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1146</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1146"/>
		<updated>2026-02-18T14:45:19Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Script Projeto Root */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Genérica&#039;&#039;&#039;&lt;br /&gt;
| Serviços simples&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening básico&lt;br /&gt;
| Qualquer tuning adicional sem necessidade&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente, consulte antes a tabela comparativa dos procedimentos e escolha o que melhor atende às suas necessidades.&lt;br /&gt;
&lt;br /&gt;
== Comparação Script ou Manual ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Critério&lt;br /&gt;
! Manual&lt;br /&gt;
! Script Automático&lt;br /&gt;
! Observação Técnica&lt;br /&gt;
|-&lt;br /&gt;
| Configuração de parâmetros&lt;br /&gt;
| Controle total, definido manualmente&lt;br /&gt;
| Aplicação padronizada de perfis&lt;br /&gt;
| Manual é melhor para ajuste fino. Script garante consistência entre VMs&lt;br /&gt;
|-&lt;br /&gt;
| Conflito entre arquivos sysctl&lt;br /&gt;
| Possível se configs antigas não forem removidas&lt;br /&gt;
| Perfis antigos removidos automaticamente&lt;br /&gt;
| Script reduz risco de override silencioso&lt;br /&gt;
|-&lt;br /&gt;
| Permissões e naming&lt;br /&gt;
| Dependem do operador&lt;br /&gt;
| Padronizados automaticamente&lt;br /&gt;
| Evita arquivo ser ignorado pelo sysctl&lt;br /&gt;
|-&lt;br /&gt;
| Repetibilidade&lt;br /&gt;
| Baixa, difícil reproduzir estado idêntico&lt;br /&gt;
| Alta, resultado consistente&lt;br /&gt;
| Importante em ambientes com várias VMs&lt;br /&gt;
|-&lt;br /&gt;
| Auditoria de estado&lt;br /&gt;
| Não há controle interno&lt;br /&gt;
| Perfil ativo registrado&lt;br /&gt;
| Facilita troubleshooting e inventário&lt;br /&gt;
|-&lt;br /&gt;
| Validação&lt;br /&gt;
| Manual via comandos&lt;br /&gt;
| Check automático executado&lt;br /&gt;
| Reduz erro humano&lt;br /&gt;
|-&lt;br /&gt;
| Flexibilidade&lt;br /&gt;
| Máxima&lt;br /&gt;
| Limitada aos perfis&lt;br /&gt;
| Manual permite ajustes específicos&lt;br /&gt;
|-&lt;br /&gt;
| Tempo operacional&lt;br /&gt;
| Maior&lt;br /&gt;
| Menor&lt;br /&gt;
| Diferença cresce com escala&lt;br /&gt;
|-&lt;br /&gt;
| Probabilidade de erro&lt;br /&gt;
| Moderada a alta&lt;br /&gt;
| Baixa&lt;br /&gt;
| Script reduz etapas manuais&lt;br /&gt;
|-&lt;br /&gt;
| Diagnóstico futuro&lt;br /&gt;
| Mais difícil entender estado aplicado&lt;br /&gt;
| Estado rastreável&lt;br /&gt;
| Relevante em incidentes&lt;br /&gt;
|-&lt;br /&gt;
| Escalabilidade&lt;br /&gt;
| Baixa&lt;br /&gt;
| Alta&lt;br /&gt;
| Script adequado para ambientes NOC&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente pequeno&lt;br /&gt;
| Boa escolha&lt;br /&gt;
| Pode ser excesso&lt;br /&gt;
| Poucas máquinas não justificam automação&lt;br /&gt;
|-&lt;br /&gt;
| Adequação ambiente grande&lt;br /&gt;
| Difícil manter padrão&lt;br /&gt;
| Recomendado&lt;br /&gt;
| Script ganha valor operacional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
Aplicar sysctl&lt;br /&gt;
 sysctl --system&lt;br /&gt;
&lt;br /&gt;
Ver limites do shell&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1145</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1145"/>
		<updated>2026-02-18T14:39:35Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Hardening adicional dentro das VMs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Genérica&#039;&#039;&#039;&lt;br /&gt;
| Serviços simples&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening básico&lt;br /&gt;
| Qualquer tuning adicional sem necessidade&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente veja abaixo os procedimentos&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após valide a modificação com&lt;br /&gt;
 ulimit -n&lt;br /&gt;
&lt;br /&gt;
Para ajustar limites globais systemd&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
Verificar com:&lt;br /&gt;
&lt;br /&gt;
 systemctl show | grep DefaultLimit&lt;br /&gt;
&lt;br /&gt;
Aplicar sysctl&lt;br /&gt;
 sysctl --system&lt;br /&gt;
&lt;br /&gt;
Ver limites do shell&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -n&lt;br /&gt;
ulimit -u&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1144</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1144"/>
		<updated>2026-02-18T14:31:47Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* VM de firewall ou proxy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Genérica&#039;&#039;&#039;&lt;br /&gt;
| Serviços simples&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening básico&lt;br /&gt;
| Qualquer tuning adicional sem necessidade&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente veja abaixo os procedimentos&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.netdev_max_backlog&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1143</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1143"/>
		<updated>2026-02-18T14:30:57Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* VM de banco de dados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Genérica&#039;&#039;&#039;&lt;br /&gt;
| Serviços simples&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening básico&lt;br /&gt;
| Qualquer tuning adicional sem necessidade&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente veja abaixo os procedimentos&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1142</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1142"/>
		<updated>2026-02-18T14:30:42Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* VM de banco de dados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Genérica&#039;&#039;&#039;&lt;br /&gt;
| Serviços simples&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening básico&lt;br /&gt;
| Qualquer tuning adicional sem necessidade&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente veja abaixo os procedimentos&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl vm.overcommit_memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1141</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1141"/>
		<updated>2026-02-18T14:29:30Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* VM de aplicação web ou API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Genérica&#039;&#039;&#039;&lt;br /&gt;
| Serviços simples&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening básico&lt;br /&gt;
| Qualquer tuning adicional sem necessidade&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente veja abaixo os procedimentos&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl net.core.somaxconn&lt;br /&gt;
sysctl net.ipv4.tcp_tw_reuse&lt;br /&gt;
sysctl net.ipv4.tcp_fin_timeout&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1140</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1140"/>
		<updated>2026-02-18T14:27:34Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* VM Base line */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Genérica&#039;&#039;&#039;&lt;br /&gt;
| Serviços simples&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening básico&lt;br /&gt;
| Qualquer tuning adicional sem necessidade&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente veja abaixo os procedimentos&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após ajustar a permissão&lt;br /&gt;
 chmod 644 /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Para aplicar imediatamente&lt;br /&gt;
 sysctl -p /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Verifique se as mudanças no kernel foram realizadas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl vm.swappiness&lt;br /&gt;
sysctl kernel.dmesg_restrict&lt;br /&gt;
sysctl fs.protected_symlinks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Desktop&amp;diff=1139</id>
		<title>Tuning e Hardening - Desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Desktop&amp;diff=1139"/>
		<updated>2026-02-08T10:27:58Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* 🏃‍♂️ Uso */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Tuning em Sistemas GNU-Linux Desktop,ou seja, para uso em computadores e notebooks voltados para uso cotidiano, como navegar na internet, trabalhar com textos, arquivos, fazer stream, jogar e desenvolver. Se quer otimização para máquinas virtual veja a página dedicada para VM em [[Tuning_e_Hardening_-_VM]] . Sendo este procedimento realizado para aumentar o desempenho entre 5% a 20% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 🖥️ Desktop Tuning Manager =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Autor:&#039;&#039;&#039; Diego Costa (@diegocostaroot)  &lt;br /&gt;
&#039;&#039;&#039;Canal no youtube:&#039;&#039;&#039; Projeto Root ([https://www.youtube.com/projetoroot youtube.com/projetoroot])  &lt;br /&gt;
&#039;&#039;&#039;Wiki:&#039;&#039;&#039; ([https://wiki.projetoroot.com.br wiki.projetoroot.com.br])  &lt;br /&gt;
&lt;br /&gt;
Gerenciador de perfis de tuning para Linux Desktop com backup, rollback e relatório HTML de diferenças.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🔧 Compatibilidade ==&lt;br /&gt;
&lt;br /&gt;
O script foi testado e é compatível com as seguintes distribuições e versões Linux Desktop:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sistema&lt;br /&gt;
! Versão Testada&lt;br /&gt;
! Observações&lt;br /&gt;
|-&lt;br /&gt;
| Debian&lt;br /&gt;
| 12 / 13&lt;br /&gt;
| Requer &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; instalado, executado como root&lt;br /&gt;
|-&lt;br /&gt;
| Ubuntu&lt;br /&gt;
| 22.04 / 24.04&lt;br /&gt;
| Funciona com desktops GNOME/KDE/CLI&lt;br /&gt;
|-&lt;br /&gt;
| Fedora&lt;br /&gt;
| 38 / 39&lt;br /&gt;
| Necessário ajustar &amp;lt;code&amp;gt;sysctl.d&amp;lt;/code&amp;gt; para SELinux permissivo&lt;br /&gt;
|-&lt;br /&gt;
| Pop!_OS&lt;br /&gt;
| 22.04 / 24.04&lt;br /&gt;
| Mesmos requisitos do Ubuntu&lt;br /&gt;
|-&lt;br /&gt;
| Linux Mint&lt;br /&gt;
| 21 / 22&lt;br /&gt;
| Testado com Cinnamon e Mate&lt;br /&gt;
|-&lt;br /&gt;
| Outros&lt;br /&gt;
| Qualquer distro Linux moderna&lt;br /&gt;
| Requer &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; e diretórios padrão &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
⚠️ &#039;&#039;&#039;Nota:&#039;&#039;&#039; Sistemas que não possuem &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; não são compatíveis. Sempre execute como root.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🎛️ Perfis Disponíveis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Opção&lt;br /&gt;
! Perfil&lt;br /&gt;
! Arquivo Criado&lt;br /&gt;
! Efeito Principal&lt;br /&gt;
|-&lt;br /&gt;
| 1️⃣&lt;br /&gt;
| &#039;&#039;&#039;Desktop Geral&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| ⚡ Baseline básico do sysctl, sem ajustes extras&lt;br /&gt;
|-&lt;br /&gt;
| 2️⃣&lt;br /&gt;
| &#039;&#039;&#039;Gaming&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-gaming.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🎮 Otimizações TCP e memória para jogos, conexões e backlog aumentados&lt;br /&gt;
|-&lt;br /&gt;
| 3️⃣&lt;br /&gt;
| &#039;&#039;&#039;Laptop Economia&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-laptop.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💡 Economia de energia, swappiness médio, opcional runtime power saving (CPU, brilho, I/O)&lt;br /&gt;
|-&lt;br /&gt;
| 4️⃣&lt;br /&gt;
| &#039;&#039;&#039;Dev Workstation&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-dev.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💻 Limites altos de arquivos, processos e swappiness baixo para desenvolvimento&lt;br /&gt;
|-&lt;br /&gt;
| 5️⃣&lt;br /&gt;
| &#039;&#039;&#039;Streaming OBS&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-streaming.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 📹 Buffers de rede maiores, swappiness baixo, otimização para streaming&lt;br /&gt;
|-&lt;br /&gt;
| 6️⃣&lt;br /&gt;
| &#039;&#039;&#039;Economia de Energia&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-powersave.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🌱 Swappiness alto, cache pressure e scheduling para economia geral de energia&lt;br /&gt;
|-&lt;br /&gt;
| 7️⃣&lt;br /&gt;
| &#039;&#039;&#039;Restaurar Backup&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-rollback-manual.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🔄 Restaura qualquer backup válido do sysctl (runtime + permanente)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
⚠️ &#039;&#039;&#039;Nota:&#039;&#039;&#039; Opção 7 lista todos os backups disponíveis em &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt; e pede confirmação antes de restaurar.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📋 Fluxo de Execução ==&lt;br /&gt;
&lt;br /&gt;
# 💾 Cria backup atual do sysctl em &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt;&lt;br /&gt;
# 📝 Captura snapshot &#039;&#039;&#039;Antes&#039;&#039;&#039;&lt;br /&gt;
# 🔍 Detecta perfil ativo&lt;br /&gt;
# 🖱️ Menu para escolher perfil&lt;br /&gt;
# 🚫 Bloqueia reaplicação do mesmo perfil&lt;br /&gt;
# 🗑️ Remove perfis antigos e aplica &#039;&#039;&#039;baseline&#039;&#039;&#039;&lt;br /&gt;
# ⚙️ Aplica perfil escolhido&lt;br /&gt;
# 🔧 Aplica &amp;lt;code&amp;gt;sysctl --system&amp;lt;/code&amp;gt; e faz rollback automático em caso de erro&lt;br /&gt;
# 📝 Captura snapshot &#039;&#039;&#039;Depois&#039;&#039;&#039;&lt;br /&gt;
# 🌐 Gera relatório HTML comparando antes/depois&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📄 Relatórios Gerados ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arquivo&lt;br /&gt;
! Conteúdo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_before_YYYY-MM-DD-HH-MM-SS.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
| Estado do sysctl &#039;&#039;&#039;antes&#039;&#039;&#039; do tuning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_after_YYYY-MM-DD-HH-MM-SS.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
| Estado do sysctl &#039;&#039;&#039;após&#039;&#039;&#039; o tuning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_diff_YYYY-MM-DD-HH-MM-SS.html&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💻 Relatório visual comparando antes e depois, com cores para valores adicionados ou removidos&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ⚙️ Requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Linux com &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt;&lt;br /&gt;
* Executar o script como &#039;&#039;&#039;root&#039;&#039;&#039;&lt;br /&gt;
* Diretório para salvar relatórios existente&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🏃‍♂️ Uso ==&lt;br /&gt;
&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-desktop/refs/heads/main/desktop-tuning-manager.sh &amp;amp;&amp;amp;  sudo bash desktop-tuning-manager.sh&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Desktop&amp;diff=1138</id>
		<title>Tuning e Hardening - Desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Desktop&amp;diff=1138"/>
		<updated>2026-02-08T10:17:38Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* 🖥️ Desktop Tuning Manager */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Tuning em Sistemas GNU-Linux Desktop,ou seja, para uso em computadores e notebooks voltados para uso cotidiano, como navegar na internet, trabalhar com textos, arquivos, fazer stream, jogar e desenvolver. Se quer otimização para máquinas virtual veja a página dedicada para VM em [[Tuning_e_Hardening_-_VM]] . Sendo este procedimento realizado para aumentar o desempenho entre 5% a 20% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 🖥️ Desktop Tuning Manager =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Autor:&#039;&#039;&#039; Diego Costa (@diegocostaroot)  &lt;br /&gt;
&#039;&#039;&#039;Canal no youtube:&#039;&#039;&#039; Projeto Root ([https://www.youtube.com/projetoroot youtube.com/projetoroot])  &lt;br /&gt;
&#039;&#039;&#039;Wiki:&#039;&#039;&#039; ([https://wiki.projetoroot.com.br wiki.projetoroot.com.br])  &lt;br /&gt;
&lt;br /&gt;
Gerenciador de perfis de tuning para Linux Desktop com backup, rollback e relatório HTML de diferenças.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🔧 Compatibilidade ==&lt;br /&gt;
&lt;br /&gt;
O script foi testado e é compatível com as seguintes distribuições e versões Linux Desktop:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sistema&lt;br /&gt;
! Versão Testada&lt;br /&gt;
! Observações&lt;br /&gt;
|-&lt;br /&gt;
| Debian&lt;br /&gt;
| 12 / 13&lt;br /&gt;
| Requer &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; instalado, executado como root&lt;br /&gt;
|-&lt;br /&gt;
| Ubuntu&lt;br /&gt;
| 22.04 / 24.04&lt;br /&gt;
| Funciona com desktops GNOME/KDE/CLI&lt;br /&gt;
|-&lt;br /&gt;
| Fedora&lt;br /&gt;
| 38 / 39&lt;br /&gt;
| Necessário ajustar &amp;lt;code&amp;gt;sysctl.d&amp;lt;/code&amp;gt; para SELinux permissivo&lt;br /&gt;
|-&lt;br /&gt;
| Pop!_OS&lt;br /&gt;
| 22.04 / 24.04&lt;br /&gt;
| Mesmos requisitos do Ubuntu&lt;br /&gt;
|-&lt;br /&gt;
| Linux Mint&lt;br /&gt;
| 21 / 22&lt;br /&gt;
| Testado com Cinnamon e Mate&lt;br /&gt;
|-&lt;br /&gt;
| Outros&lt;br /&gt;
| Qualquer distro Linux moderna&lt;br /&gt;
| Requer &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; e diretórios padrão &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
⚠️ &#039;&#039;&#039;Nota:&#039;&#039;&#039; Sistemas que não possuem &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; não são compatíveis. Sempre execute como root.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🎛️ Perfis Disponíveis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Opção&lt;br /&gt;
! Perfil&lt;br /&gt;
! Arquivo Criado&lt;br /&gt;
! Efeito Principal&lt;br /&gt;
|-&lt;br /&gt;
| 1️⃣&lt;br /&gt;
| &#039;&#039;&#039;Desktop Geral&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| ⚡ Baseline básico do sysctl, sem ajustes extras&lt;br /&gt;
|-&lt;br /&gt;
| 2️⃣&lt;br /&gt;
| &#039;&#039;&#039;Gaming&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-gaming.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🎮 Otimizações TCP e memória para jogos, conexões e backlog aumentados&lt;br /&gt;
|-&lt;br /&gt;
| 3️⃣&lt;br /&gt;
| &#039;&#039;&#039;Laptop Economia&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-laptop.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💡 Economia de energia, swappiness médio, opcional runtime power saving (CPU, brilho, I/O)&lt;br /&gt;
|-&lt;br /&gt;
| 4️⃣&lt;br /&gt;
| &#039;&#039;&#039;Dev Workstation&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-dev.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💻 Limites altos de arquivos, processos e swappiness baixo para desenvolvimento&lt;br /&gt;
|-&lt;br /&gt;
| 5️⃣&lt;br /&gt;
| &#039;&#039;&#039;Streaming OBS&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-streaming.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 📹 Buffers de rede maiores, swappiness baixo, otimização para streaming&lt;br /&gt;
|-&lt;br /&gt;
| 6️⃣&lt;br /&gt;
| &#039;&#039;&#039;Economia de Energia&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-powersave.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🌱 Swappiness alto, cache pressure e scheduling para economia geral de energia&lt;br /&gt;
|-&lt;br /&gt;
| 7️⃣&lt;br /&gt;
| &#039;&#039;&#039;Restaurar Backup&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-rollback-manual.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🔄 Restaura qualquer backup válido do sysctl (runtime + permanente)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
⚠️ &#039;&#039;&#039;Nota:&#039;&#039;&#039; Opção 7 lista todos os backups disponíveis em &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt; e pede confirmação antes de restaurar.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📋 Fluxo de Execução ==&lt;br /&gt;
&lt;br /&gt;
# 💾 Cria backup atual do sysctl em &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt;&lt;br /&gt;
# 📝 Captura snapshot &#039;&#039;&#039;Antes&#039;&#039;&#039;&lt;br /&gt;
# 🔍 Detecta perfil ativo&lt;br /&gt;
# 🖱️ Menu para escolher perfil&lt;br /&gt;
# 🚫 Bloqueia reaplicação do mesmo perfil&lt;br /&gt;
# 🗑️ Remove perfis antigos e aplica &#039;&#039;&#039;baseline&#039;&#039;&#039;&lt;br /&gt;
# ⚙️ Aplica perfil escolhido&lt;br /&gt;
# 🔧 Aplica &amp;lt;code&amp;gt;sysctl --system&amp;lt;/code&amp;gt; e faz rollback automático em caso de erro&lt;br /&gt;
# 📝 Captura snapshot &#039;&#039;&#039;Depois&#039;&#039;&#039;&lt;br /&gt;
# 🌐 Gera relatório HTML comparando antes/depois&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📄 Relatórios Gerados ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arquivo&lt;br /&gt;
! Conteúdo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_before_YYYY-MM-DD-HH-MM-SS.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
| Estado do sysctl &#039;&#039;&#039;antes&#039;&#039;&#039; do tuning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_after_YYYY-MM-DD-HH-MM-SS.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
| Estado do sysctl &#039;&#039;&#039;após&#039;&#039;&#039; o tuning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_diff_YYYY-MM-DD-HH-MM-SS.html&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💻 Relatório visual comparando antes e depois, com cores para valores adicionados ou removidos&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ⚙️ Requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Linux com &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt;&lt;br /&gt;
* Executar o script como &#039;&#039;&#039;root&#039;&#039;&#039;&lt;br /&gt;
* Diretório para salvar relatórios existente&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🏃‍♂️ Uso ==&lt;br /&gt;
&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-desktop/refs/heads/main/desktop-tuning-manager.sh&lt;br /&gt;
 sudo bash desktop-tuning-manager.sh&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Desktop&amp;diff=1137</id>
		<title>Tuning e Hardening - Desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Desktop&amp;diff=1137"/>
		<updated>2026-02-08T10:16:53Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* 🏃‍♂️ Uso */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Tuning em Sistemas GNU-Linux Desktop,ou seja, para uso em computadores e notebooks voltados para uso cotidiano, como navegar na internet, trabalhar com textos, arquivos, fazer stream, jogar e desenvolver. Se quer otimização para máquinas virtual veja a página dedicada para VM em [[Tuning_e_Hardening_-_VM]] . Sendo este procedimento realizado para aumentar o desempenho entre 5% a 20% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 🖥️ Desktop Tuning Manager =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Autor:&#039;&#039;&#039; Diego Costa (@diegocostaroot)  &lt;br /&gt;
&#039;&#039;&#039;Canal no youtube:&#039;&#039;&#039; Projeto Root ([https://www.youtube.com/projetoroot youtube.com/projetoroot])  &lt;br /&gt;
&#039;&#039;&#039;Wiki:&#039;&#039;&#039; ([https://wiki.projetoroot.com.br wiki.projetoroot.com.br])  &lt;br /&gt;
&#039;&#039;&#039;Versão:&#039;&#039;&#039; 1.0 | &#039;&#039;&#039;Ano:&#039;&#039;&#039; 2026  &lt;br /&gt;
&lt;br /&gt;
Gerenciador de perfis de tuning para Linux Desktop com backup, rollback e relatório HTML de diferenças.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🔧 Compatibilidade ==&lt;br /&gt;
&lt;br /&gt;
O script foi testado e é compatível com as seguintes distribuições e versões Linux Desktop:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sistema&lt;br /&gt;
! Versão Testada&lt;br /&gt;
! Observações&lt;br /&gt;
|-&lt;br /&gt;
| Debian&lt;br /&gt;
| 12 / 13&lt;br /&gt;
| Requer &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; instalado, executado como root&lt;br /&gt;
|-&lt;br /&gt;
| Ubuntu&lt;br /&gt;
| 22.04 / 24.04&lt;br /&gt;
| Funciona com desktops GNOME/KDE/CLI&lt;br /&gt;
|-&lt;br /&gt;
| Fedora&lt;br /&gt;
| 38 / 39&lt;br /&gt;
| Necessário ajustar &amp;lt;code&amp;gt;sysctl.d&amp;lt;/code&amp;gt; para SELinux permissivo&lt;br /&gt;
|-&lt;br /&gt;
| Pop!_OS&lt;br /&gt;
| 22.04 / 24.04&lt;br /&gt;
| Mesmos requisitos do Ubuntu&lt;br /&gt;
|-&lt;br /&gt;
| Linux Mint&lt;br /&gt;
| 21 / 22&lt;br /&gt;
| Testado com Cinnamon e Mate&lt;br /&gt;
|-&lt;br /&gt;
| Outros&lt;br /&gt;
| Qualquer distro Linux moderna&lt;br /&gt;
| Requer &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; e diretórios padrão &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
⚠️ &#039;&#039;&#039;Nota:&#039;&#039;&#039; Sistemas que não possuem &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; não são compatíveis. Sempre execute como root.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🎛️ Perfis Disponíveis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Opção&lt;br /&gt;
! Perfil&lt;br /&gt;
! Arquivo Criado&lt;br /&gt;
! Efeito Principal&lt;br /&gt;
|-&lt;br /&gt;
| 1️⃣&lt;br /&gt;
| &#039;&#039;&#039;Desktop Geral&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| ⚡ Baseline básico do sysctl, sem ajustes extras&lt;br /&gt;
|-&lt;br /&gt;
| 2️⃣&lt;br /&gt;
| &#039;&#039;&#039;Gaming&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-gaming.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🎮 Otimizações TCP e memória para jogos, conexões e backlog aumentados&lt;br /&gt;
|-&lt;br /&gt;
| 3️⃣&lt;br /&gt;
| &#039;&#039;&#039;Laptop Economia&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-laptop.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💡 Economia de energia, swappiness médio, opcional runtime power saving (CPU, brilho, I/O)&lt;br /&gt;
|-&lt;br /&gt;
| 4️⃣&lt;br /&gt;
| &#039;&#039;&#039;Dev Workstation&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-dev.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💻 Limites altos de arquivos, processos e swappiness baixo para desenvolvimento&lt;br /&gt;
|-&lt;br /&gt;
| 5️⃣&lt;br /&gt;
| &#039;&#039;&#039;Streaming OBS&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-streaming.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 📹 Buffers de rede maiores, swappiness baixo, otimização para streaming&lt;br /&gt;
|-&lt;br /&gt;
| 6️⃣&lt;br /&gt;
| &#039;&#039;&#039;Economia de Energia&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-powersave.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🌱 Swappiness alto, cache pressure e scheduling para economia geral de energia&lt;br /&gt;
|-&lt;br /&gt;
| 7️⃣&lt;br /&gt;
| &#039;&#039;&#039;Restaurar Backup&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-rollback-manual.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🔄 Restaura qualquer backup válido do sysctl (runtime + permanente)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
⚠️ &#039;&#039;&#039;Nota:&#039;&#039;&#039; Opção 7 lista todos os backups disponíveis em &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt; e pede confirmação antes de restaurar.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📋 Fluxo de Execução ==&lt;br /&gt;
&lt;br /&gt;
# 💾 Cria backup atual do sysctl em &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt;&lt;br /&gt;
# 📝 Captura snapshot &#039;&#039;&#039;Antes&#039;&#039;&#039;&lt;br /&gt;
# 🔍 Detecta perfil ativo&lt;br /&gt;
# 🖱️ Menu para escolher perfil&lt;br /&gt;
# 🚫 Bloqueia reaplicação do mesmo perfil&lt;br /&gt;
# 🗑️ Remove perfis antigos e aplica &#039;&#039;&#039;baseline&#039;&#039;&#039;&lt;br /&gt;
# ⚙️ Aplica perfil escolhido&lt;br /&gt;
# 🔧 Aplica &amp;lt;code&amp;gt;sysctl --system&amp;lt;/code&amp;gt; e faz rollback automático em caso de erro&lt;br /&gt;
# 📝 Captura snapshot &#039;&#039;&#039;Depois&#039;&#039;&#039;&lt;br /&gt;
# 🌐 Gera relatório HTML comparando antes/depois&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📄 Relatórios Gerados ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arquivo&lt;br /&gt;
! Conteúdo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_before_YYYY-MM-DD-HH-MM-SS.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
| Estado do sysctl &#039;&#039;&#039;antes&#039;&#039;&#039; do tuning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_after_YYYY-MM-DD-HH-MM-SS.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
| Estado do sysctl &#039;&#039;&#039;após&#039;&#039;&#039; o tuning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_diff_YYYY-MM-DD-HH-MM-SS.html&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💻 Relatório visual comparando antes e depois, com cores para valores adicionados ou removidos&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ⚙️ Requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Linux com &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt;&lt;br /&gt;
* Executar o script como &#039;&#039;&#039;root&#039;&#039;&#039;&lt;br /&gt;
* Diretório para salvar relatórios existente&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🏃‍♂️ Uso ==&lt;br /&gt;
&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-desktop/refs/heads/main/desktop-tuning-manager.sh&lt;br /&gt;
 sudo bash desktop-tuning-manager.sh&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Desktop&amp;diff=1136</id>
		<title>Tuning e Hardening - Desktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Desktop&amp;diff=1136"/>
		<updated>2026-02-08T10:16:20Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: Criou página com &amp;#039;== Sobre == Olá! Visitante, reunimos aqui, informações sobre o processo de Tuning em Sistemas GNU-Linux Desktop,ou seja, para uso em computadores e notebooks voltados para uso cotidiano, como navegar na internet, trabalhar com textos, arquivos, fazer stream, jogar e desenvolver. Se quer otimização para máquinas virtual veja a página dedicada para VM em Tuning_e_Hardening_-_VM . Sendo este procedimento realizado para aumentar o desempenho entre 5% a 20% depende...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Tuning em Sistemas GNU-Linux Desktop,ou seja, para uso em computadores e notebooks voltados para uso cotidiano, como navegar na internet, trabalhar com textos, arquivos, fazer stream, jogar e desenvolver. Se quer otimização para máquinas virtual veja a página dedicada para VM em [[Tuning_e_Hardening_-_VM]] . Sendo este procedimento realizado para aumentar o desempenho entre 5% a 20% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 🖥️ Desktop Tuning Manager =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Autor:&#039;&#039;&#039; Diego Costa (@diegocostaroot)  &lt;br /&gt;
&#039;&#039;&#039;Canal no youtube:&#039;&#039;&#039; Projeto Root ([https://www.youtube.com/projetoroot youtube.com/projetoroot])  &lt;br /&gt;
&#039;&#039;&#039;Wiki:&#039;&#039;&#039; ([https://wiki.projetoroot.com.br wiki.projetoroot.com.br])  &lt;br /&gt;
&#039;&#039;&#039;Versão:&#039;&#039;&#039; 1.0 | &#039;&#039;&#039;Ano:&#039;&#039;&#039; 2026  &lt;br /&gt;
&lt;br /&gt;
Gerenciador de perfis de tuning para Linux Desktop com backup, rollback e relatório HTML de diferenças.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🔧 Compatibilidade ==&lt;br /&gt;
&lt;br /&gt;
O script foi testado e é compatível com as seguintes distribuições e versões Linux Desktop:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sistema&lt;br /&gt;
! Versão Testada&lt;br /&gt;
! Observações&lt;br /&gt;
|-&lt;br /&gt;
| Debian&lt;br /&gt;
| 12 / 13&lt;br /&gt;
| Requer &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; instalado, executado como root&lt;br /&gt;
|-&lt;br /&gt;
| Ubuntu&lt;br /&gt;
| 22.04 / 24.04&lt;br /&gt;
| Funciona com desktops GNOME/KDE/CLI&lt;br /&gt;
|-&lt;br /&gt;
| Fedora&lt;br /&gt;
| 38 / 39&lt;br /&gt;
| Necessário ajustar &amp;lt;code&amp;gt;sysctl.d&amp;lt;/code&amp;gt; para SELinux permissivo&lt;br /&gt;
|-&lt;br /&gt;
| Pop!_OS&lt;br /&gt;
| 22.04 / 24.04&lt;br /&gt;
| Mesmos requisitos do Ubuntu&lt;br /&gt;
|-&lt;br /&gt;
| Linux Mint&lt;br /&gt;
| 21 / 22&lt;br /&gt;
| Testado com Cinnamon e Mate&lt;br /&gt;
|-&lt;br /&gt;
| Outros&lt;br /&gt;
| Qualquer distro Linux moderna&lt;br /&gt;
| Requer &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; e diretórios padrão &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
⚠️ &#039;&#039;&#039;Nota:&#039;&#039;&#039; Sistemas que não possuem &amp;lt;code&amp;gt;/etc/sysctl.d&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; não são compatíveis. Sempre execute como root.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🎛️ Perfis Disponíveis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Opção&lt;br /&gt;
! Perfil&lt;br /&gt;
! Arquivo Criado&lt;br /&gt;
! Efeito Principal&lt;br /&gt;
|-&lt;br /&gt;
| 1️⃣&lt;br /&gt;
| &#039;&#039;&#039;Desktop Geral&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| ⚡ Baseline básico do sysctl, sem ajustes extras&lt;br /&gt;
|-&lt;br /&gt;
| 2️⃣&lt;br /&gt;
| &#039;&#039;&#039;Gaming&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-gaming.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🎮 Otimizações TCP e memória para jogos, conexões e backlog aumentados&lt;br /&gt;
|-&lt;br /&gt;
| 3️⃣&lt;br /&gt;
| &#039;&#039;&#039;Laptop Economia&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-laptop.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💡 Economia de energia, swappiness médio, opcional runtime power saving (CPU, brilho, I/O)&lt;br /&gt;
|-&lt;br /&gt;
| 4️⃣&lt;br /&gt;
| &#039;&#039;&#039;Dev Workstation&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-dev.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💻 Limites altos de arquivos, processos e swappiness baixo para desenvolvimento&lt;br /&gt;
|-&lt;br /&gt;
| 5️⃣&lt;br /&gt;
| &#039;&#039;&#039;Streaming OBS&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-streaming.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 📹 Buffers de rede maiores, swappiness baixo, otimização para streaming&lt;br /&gt;
|-&lt;br /&gt;
| 6️⃣&lt;br /&gt;
| &#039;&#039;&#039;Economia de Energia&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-desktop-powersave.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🌱 Swappiness alto, cache pressure e scheduling para economia geral de energia&lt;br /&gt;
|-&lt;br /&gt;
| 7️⃣&lt;br /&gt;
| &#039;&#039;&#039;Restaurar Backup&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;99-rollback-manual.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| 🔄 Restaura qualquer backup válido do sysctl (runtime + permanente)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
⚠️ &#039;&#039;&#039;Nota:&#039;&#039;&#039; Opção 7 lista todos os backups disponíveis em &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt; e pede confirmação antes de restaurar.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📋 Fluxo de Execução ==&lt;br /&gt;
&lt;br /&gt;
# 💾 Cria backup atual do sysctl em &amp;lt;code&amp;gt;/var/backups/sysctl-tuning&amp;lt;/code&amp;gt;&lt;br /&gt;
# 📝 Captura snapshot &#039;&#039;&#039;Antes&#039;&#039;&#039;&lt;br /&gt;
# 🔍 Detecta perfil ativo&lt;br /&gt;
# 🖱️ Menu para escolher perfil&lt;br /&gt;
# 🚫 Bloqueia reaplicação do mesmo perfil&lt;br /&gt;
# 🗑️ Remove perfis antigos e aplica &#039;&#039;&#039;baseline&#039;&#039;&#039;&lt;br /&gt;
# ⚙️ Aplica perfil escolhido&lt;br /&gt;
# 🔧 Aplica &amp;lt;code&amp;gt;sysctl --system&amp;lt;/code&amp;gt; e faz rollback automático em caso de erro&lt;br /&gt;
# 📝 Captura snapshot &#039;&#039;&#039;Depois&#039;&#039;&#039;&lt;br /&gt;
# 🌐 Gera relatório HTML comparando antes/depois&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📄 Relatórios Gerados ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arquivo&lt;br /&gt;
! Conteúdo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_before_YYYY-MM-DD-HH-MM-SS.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
| Estado do sysctl &#039;&#039;&#039;antes&#039;&#039;&#039; do tuning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_after_YYYY-MM-DD-HH-MM-SS.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
| Estado do sysctl &#039;&#039;&#039;após&#039;&#039;&#039; o tuning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sysctl_diff_YYYY-MM-DD-HH-MM-SS.html&amp;lt;/code&amp;gt;&lt;br /&gt;
| 💻 Relatório visual comparando antes e depois, com cores para valores adicionados ou removidos&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ⚙️ Requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Linux com &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt;&lt;br /&gt;
* Executar o script como &#039;&#039;&#039;root&#039;&#039;&#039;&lt;br /&gt;
* Diretório para salvar relatórios existente&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🏃‍♂️ Uso ==&lt;br /&gt;
&lt;br /&gt;
bash&lt;br /&gt;
wget https://raw.githubusercontent.com/projetoroot/tuning-desktop/refs/heads/main/desktop-tuning-manager.sh&lt;br /&gt;
sudo bash desktop-tuning-manager.sh&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1135</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1135"/>
		<updated>2026-02-07T21:06:23Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Prefixo 99 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Genérica&#039;&#039;&#039;&lt;br /&gt;
| Serviços simples&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening básico&lt;br /&gt;
| Qualquer tuning adicional sem necessidade&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-vm&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse sua VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-vm/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente veja abaixo os procedimentos&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1134</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1134"/>
		<updated>2026-02-07T20:56:11Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Hardening adicional dentro das VMs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Genérica&#039;&#039;&#039;&lt;br /&gt;
| Serviços simples&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening básico&lt;br /&gt;
| Qualquer tuning adicional sem necessidade&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Host&amp;diff=1133</id>
		<title>Tuning e Hardening - Host</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Host&amp;diff=1133"/>
		<updated>2026-02-07T20:17:44Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Script Projeto Root */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Tuning em Sistemas GNU-Linux no bare metal,ou seja, no servidor físico, para máquinas virtual veja a página dedicada para VM em [[Tuning_e_Hardening_-_VM]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Compatibilidade&#039;&#039;&#039;: Este conjunto de parâmetros sysctl é compatível com distribuições Linux que utilizam kernel Linux 5.4 ou superior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Distribuições testadas e compatíveis:&lt;br /&gt;
- Debian 11, 12 e 13&lt;br /&gt;
- Ubuntu 20.04 LTS, 22.04 LTS e 24.04 LTS&lt;br /&gt;
- Proxmox VE 7, 8 e 9&lt;br /&gt;
- Rocky Linux 8 e 9&lt;br /&gt;
- AlmaLinux 8 e 9&lt;br /&gt;
- RHEL 8 e 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Kernel Tuning e Hardening =&lt;br /&gt;
&lt;br /&gt;
Este projeto apresenta um conjunto de configurações e scripts para ajuste de desempenho (tuning) e endurecimento de segurança (hardening) do kernel Linux.&lt;br /&gt;
&lt;br /&gt;
O foco é melhorar estabilidade, capacidade de rede e segurança do sistema, sem desabilitar proteções críticas do kernel ou utilizar parâmetros obsoletos.&lt;br /&gt;
&lt;br /&gt;
== Objetivos ==&lt;br /&gt;
&lt;br /&gt;
* Ajustar parâmetros do kernel para servidores&lt;br /&gt;
* Reduzir superfície de ataque&lt;br /&gt;
* Manter compatibilidade com auditorias técnicas&lt;br /&gt;
* Fornecer mecanismo simples de validação&lt;br /&gt;
&lt;br /&gt;
== Escopo ==&lt;br /&gt;
&lt;br /&gt;
Estas configurações foram pensadas para:&lt;br /&gt;
&lt;br /&gt;
* Servidores Linux listados como compatíveis&lt;br /&gt;
* Ambientes físicos ou virtualizados&lt;br /&gt;
* Serviços de rede e infraestrutura&lt;br /&gt;
* Uso institucional ou pessoal&lt;br /&gt;
&lt;br /&gt;
== Tabela impacto e o objetivo ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela descreve o impacto e o objetivo de cada grupo de ajustes aplicados diretamente no host, considerando estabilidade, segurança e isolamento entre VMs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Componente do host&lt;br /&gt;
! Objetivo do hardening&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Benefícios práticos&lt;br /&gt;
! Cuidados / Observações&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Kernel Linux&#039;&#039;&#039;&lt;br /&gt;
| Reduzir superfície de ataque do host&lt;br /&gt;
| Proteções de symlink e hardlink, restrição de dmesg, ptrace limitado, ASLR forçado&lt;br /&gt;
| Dificulta escalonamento de privilégios e vazamento de informações do kernel&lt;br /&gt;
| Pode impactar ferramentas de debug no host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Filesystem&#039;&#039;&#039;&lt;br /&gt;
| Evitar abuso de recursos do sistema&lt;br /&gt;
| fs.file-max elevado, desativação de core dumps setuid&lt;br /&gt;
| Previne esgotamento de descritores e vazamento de memória sensível&lt;br /&gt;
| Ajustes devem considerar capacidade real do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Memória&#039;&#039;&#039;&lt;br /&gt;
| Priorizar VMs em vez do host&lt;br /&gt;
| swappiness baixo, mmap mínimo elevado&lt;br /&gt;
| Reduz uso de swap no host e melhora previsibilidade&lt;br /&gt;
| Swap ainda é necessária para estabilidade extrema&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Scheduler&#039;&#039;&#039;&lt;br /&gt;
| Evitar priorização automática indevida&lt;br /&gt;
| Desativação de autogroup, ajuste de migration cost&lt;br /&gt;
| Menos jitter e melhor previsibilidade para cargas de virtualização&lt;br /&gt;
| Pode reduzir responsividade em sessões interativas&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Rede IPv4&#039;&#039;&#039;&lt;br /&gt;
| Proteger o host contra ataques de rede&lt;br /&gt;
| rp_filter, desativar redirects, source routing, log de pacotes inválidos&lt;br /&gt;
| Reduz spoofing, ataques de rota e tráfego malformado&lt;br /&gt;
| Não interfere no tráfego das VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stack TCP&#039;&#039;&#039;&lt;br /&gt;
| Estabilidade e proteção básica&lt;br /&gt;
| SYN cookies, redução de retries, timeout controlado&lt;br /&gt;
| Mitiga ataques de SYN flood e conexões zumbis&lt;br /&gt;
| Host não deve ser usado como servidor de aplicação&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ARP / Neighbor cache&#039;&#039;&#039;&lt;br /&gt;
| Estabilidade em ambientes grandes&lt;br /&gt;
| Limites elevados de gc_thresh, intervalos menores&lt;br /&gt;
| Evita estouro de cache ARP em ambientes com muitas VMs&lt;br /&gt;
| Valores devem crescer conforme número de VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IPv6&#039;&#039;&#039;&lt;br /&gt;
| Reduzir exposição desnecessária&lt;br /&gt;
| Desativação de RA e redirects no host&lt;br /&gt;
| Evita configuração automática indevida de rotas&lt;br /&gt;
| Não afeta IPv6 interno das VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Virtualização&#039;&#039;&#039;&lt;br /&gt;
| Isolamento entre guests&lt;br /&gt;
| Kernel hardening padrão + KVM intacto&lt;br /&gt;
| Reduz risco de impacto de uma VM comprometida&lt;br /&gt;
| Não substitui atualizações de segurança&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Estrutura do projeto ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Caminho !! Descrição&lt;br /&gt;
|-&lt;br /&gt;
| /etc/sysctl/99-custom.conf || Ajustes de desempenho&lt;br /&gt;
|-&lt;br /&gt;
| /etc/sysctl/99-hardening.conf || Ajustes de segurança&lt;br /&gt;
|-&lt;br /&gt;
| /bin/sysctl-check.sh || Script de validação&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Decisões de segurança ==&lt;br /&gt;
&lt;br /&gt;
* Mitigações de Meltdown e Spectre permanecem ativas&lt;br /&gt;
* Nenhum parâmetro depreciado ou removido é utilizado&lt;br /&gt;
* Hardening aplicado sem impacto relevante de desempenho&lt;br /&gt;
&lt;br /&gt;
== Aviso ==&lt;br /&gt;
&lt;br /&gt;
Estas configurações devem ser testadas em ambiente controlado antes da aplicação em produção.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-host&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse seu servidor/VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-host/refs/heads/main/install.sh &amp;amp;&amp;amp; bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente veja abaixo os procedimentos&lt;br /&gt;
&lt;br /&gt;
= Kernel Tuning – sysctl =&lt;br /&gt;
Crie o arquivo 99-custom.conf &lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.d/99-custom.conf&lt;br /&gt;
&lt;br /&gt;
== Arquivo: 99-custom.conf ==&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Limites de arquivos&lt;br /&gt;
############################&lt;br /&gt;
# Define o número máximo de arquivos abertos no sistema&lt;br /&gt;
fs.file-max = 1048576&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de memória&lt;br /&gt;
############################&lt;br /&gt;
# Reduz uso de swap, priorizando memória RAM&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
############################&lt;br /&gt;
# Portas efêmeras e conexões&lt;br /&gt;
############################&lt;br /&gt;
# Intervalo de portas locais para conexões de saída&lt;br /&gt;
net.ipv4.ip_local_port_range = 10000 65000&lt;br /&gt;
# Número máximo de conexões pendentes no listen&lt;br /&gt;
net.core.somaxconn = 65535&lt;br /&gt;
############################&lt;br /&gt;
# Buffers globais de rede&lt;br /&gt;
############################&lt;br /&gt;
# Buffer máximo de recepção&lt;br /&gt;
net.core.rmem_max = 16777216&lt;br /&gt;
# Buffer máximo de envio&lt;br /&gt;
net.core.wmem_max = 16777216&lt;br /&gt;
# Buffer padrão de recepção&lt;br /&gt;
net.core.rmem_default = 262144&lt;br /&gt;
# Buffer padrão de envio&lt;br /&gt;
net.core.wmem_default = 262144&lt;br /&gt;
############################&lt;br /&gt;
# Buffers TCP&lt;br /&gt;
############################&lt;br /&gt;
# Buffer TCP de recepção: min, default e max&lt;br /&gt;
net.ipv4.tcp_rmem = 4096 87380 16777216&lt;br /&gt;
# Buffer TCP de envio: min, default e max&lt;br /&gt;
net.ipv4.tcp_wmem = 4096 65536 16777216&lt;br /&gt;
############################&lt;br /&gt;
# Filas e backlog&lt;br /&gt;
############################&lt;br /&gt;
# Fila máxima de pacotes por interface&lt;br /&gt;
net.core.netdev_max_backlog = 50000&lt;br /&gt;
# Máximo de conexões SYN pendentes&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 32768&lt;br /&gt;
# Limite de conexões em TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_max_tw_buckets = 262144&lt;br /&gt;
############################&lt;br /&gt;
# Otimizações TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de espera no fechamento TCP&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
# Evita reinício lento após ociosidade&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
# Reduz tentativas de SYN&lt;br /&gt;
net.ipv4.tcp_syn_retries = 3&lt;br /&gt;
# Reduz tentativas de SYN-ACK&lt;br /&gt;
net.ipv4.tcp_synack_retries = 3&lt;br /&gt;
############################&lt;br /&gt;
# Buffers UDP&lt;br /&gt;
############################&lt;br /&gt;
# Buffer mínimo de recepção UDP&lt;br /&gt;
net.ipv4.udp_rmem_min = 8192&lt;br /&gt;
# Buffer mínimo de envio UDP&lt;br /&gt;
net.ipv4.udp_wmem_min = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Ajustes de TCP&lt;br /&gt;
############################&lt;br /&gt;
# Ativa escalonamento de janela TCP&lt;br /&gt;
net.ipv4.tcp_window_scaling = 1&lt;br /&gt;
############################&lt;br /&gt;
# Hardening IPv4&lt;br /&gt;
############################&lt;br /&gt;
# Não enviar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
# Não aceitar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
# Não aceitar source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
# Logar pacotes inválidos&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
############################&lt;br /&gt;
# Scheduler do kernel&lt;br /&gt;
############################&lt;br /&gt;
# Reduz migração excessiva de processos entre CPUs&lt;br /&gt;
kernel.sched_migration_cost_ns = 5000000&lt;br /&gt;
# Desativa agrupamento automático de processos&lt;br /&gt;
kernel.sched_autogroup_enabled = 0&lt;br /&gt;
############################&lt;br /&gt;
# Cache ARP&lt;br /&gt;
############################&lt;br /&gt;
# Intervalo de coleta de entradas ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_interval = 15&lt;br /&gt;
# Limite inicial do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh1 = 4096&lt;br /&gt;
# Limite intermediário do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh2 = 8192&lt;br /&gt;
# Limite máximo do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh3 = 16384&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Observações ==&lt;br /&gt;
&lt;br /&gt;
* Os valores priorizam estabilidade e throughput&lt;br /&gt;
* Não há impacto negativo em segurança&lt;br /&gt;
* Compatível com cargas de rede elevadas&lt;br /&gt;
&lt;br /&gt;
= Kernel Hardening – sysctl =&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo 99-hardening.conf &lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.d/99-hardening.conf&lt;br /&gt;
&lt;br /&gt;
== Arquivo: 99-hardening.conf ==&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Kernel hardening baseline&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de links simbólicos e hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
# Restringir acesso ao dmesg&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Restringir acesso a ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evitar core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
# Endurecer uso de ptrace&lt;br /&gt;
kernel.yama.ptrace_scope = 1&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de rede IPv4&lt;br /&gt;
############################&lt;br /&gt;
# Proteção contra IP spoofing&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 1&lt;br /&gt;
net.ipv4.conf.default.rp_filter = 1&lt;br /&gt;
# Não aceitar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;
# Não enviar redirecionamentos&lt;br /&gt;
net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.send_redirects = 0&lt;br /&gt;
# Não aceitar source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;
# Ativar SYN cookies&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
# Ignorar ICMP suspeitos&lt;br /&gt;
net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
net.ipv4.icmp_ignore_bogus_error_responses = 1&lt;br /&gt;
# Logar pacotes inválidos&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
net.ipv4.conf.default.log_martians = 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Aplicação das configurações sysctl =&lt;br /&gt;
&lt;br /&gt;
As configurações de tuning e hardening devem ser aplicadas por meio de arquivos&lt;br /&gt;
no diretório /etc/sysctl.d/.&lt;br /&gt;
&lt;br /&gt;
Não é recomendado editar diretamente o arquivo /etc/sysctl.conf.&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Validação das configurações sysctl =&lt;br /&gt;
&lt;br /&gt;
O script sysctl-check.sh valida se os parâmetros definidos estão ativos&lt;br /&gt;
no kernel em tempo de execução.&lt;br /&gt;
&lt;br /&gt;
== Script de validação ==&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - tuning e hardening&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;== Kernel hardening ==&amp;quot;&lt;br /&gt;
check fs.protected_hardlinks 1&lt;br /&gt;
check fs.protected_symlinks 1&lt;br /&gt;
check fs.protected_fifos 1&lt;br /&gt;
check fs.protected_regular 1&lt;br /&gt;
check kernel.dmesg_restrict 1&lt;br /&gt;
check kernel.kptr_restrict 2&lt;br /&gt;
check fs.suid_dumpable 0&lt;br /&gt;
check kernel.yama.ptrace_scope 1&lt;br /&gt;
check kernel.randomize_va_space 2&lt;br /&gt;
check vm.mmap_min_addr 65536&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Rede IPv4 ==&amp;quot;&lt;br /&gt;
check net.ipv4.conf.all.rp_filter 1&lt;br /&gt;
check net.ipv4.conf.default.rp_filter 1&lt;br /&gt;
check net.ipv4.conf.all.accept_redirects 0&lt;br /&gt;
check net.ipv4.conf.default.accept_redirects 0&lt;br /&gt;
check net.ipv4.conf.all.send_redirects 0&lt;br /&gt;
check net.ipv4.conf.default.send_redirects 0&lt;br /&gt;
check net.ipv4.conf.all.accept_source_route 0&lt;br /&gt;
check net.ipv4.conf.default.accept_source_route 0&lt;br /&gt;
check net.ipv4.tcp_syncookies 1&lt;br /&gt;
check net.ipv4.icmp_echo_ignore_broadcasts 1&lt;br /&gt;
check net.ipv4.icmp_ignore_bogus_error_responses 1&lt;br /&gt;
check net.ipv4.conf.all.log_martians 1&lt;br /&gt;
check net.ipv4.conf.default.log_martians 1&lt;br /&gt;
check net.ipv4.tcp_rfc1337 1&lt;br /&gt;
check net.ipv4.tcp_timestamps 1&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Rede IPv6 ==&amp;quot;&lt;br /&gt;
check net.ipv6.conf.all.accept_redirects 0&lt;br /&gt;
check net.ipv6.conf.default.accept_redirects 0&lt;br /&gt;
check net.ipv6.conf.all.accept_ra 0&lt;br /&gt;
check net.ipv6.conf.default.accept_ra 0&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Tuning essencial ==&amp;quot;&lt;br /&gt;
check fs.file-max 1048576&lt;br /&gt;
check vm.swappiness 1&lt;br /&gt;
check net.core.somaxconn 65535&lt;br /&gt;
check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: TODOS OS PARÂMETROS ESTÃO CORRETOS&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução.&lt;br /&gt;
 chmod +x /bin/sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
Executando:&lt;br /&gt;
 sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resultado ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#################################           &lt;br /&gt;
Validação de sysctl - tuning e hardening&lt;br /&gt;
Host: debian-base&lt;br /&gt;
Data: qua 18 fev 2026 18:18:18 -03&lt;br /&gt;
&lt;br /&gt;
== Kernel hardening ==&lt;br /&gt;
[ OK ] fs.protected_hardlinks                        = 1&lt;br /&gt;
[ OK ] fs.protected_symlinks                         = 1&lt;br /&gt;
[ OK ] fs.protected_fifos                            = 1&lt;br /&gt;
[ OK ] fs.protected_regular                          = 1&lt;br /&gt;
[ OK ] kernel.dmesg_restrict                         = 1&lt;br /&gt;
[ OK ] kernel.kptr_restrict                          = 2&lt;br /&gt;
[ OK ] fs.suid_dumpable                              = 0&lt;br /&gt;
[ OK ] kernel.yama.ptrace_scope                      = 1&lt;br /&gt;
[ OK ] kernel.randomize_va_space                     = 2&lt;br /&gt;
[ OK ] vm.mmap_min_addr                              = 65536&lt;br /&gt;
&lt;br /&gt;
== Rede IPv4 ==&lt;br /&gt;
[ OK ] net.ipv4.conf.all.rp_filter                   = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.default.rp_filter               = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.all.accept_redirects            = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.accept_redirects        = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.all.send_redirects              = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.send_redirects          = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.all.accept_source_route         = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.accept_source_route     = 0&lt;br /&gt;
[ OK ] net.ipv4.tcp_syncookies                       = 1&lt;br /&gt;
[ OK ] net.ipv4.icmp_echo_ignore_broadcasts          = 1&lt;br /&gt;
[ OK ] net.ipv4.icmp_ignore_bogus_error_responses    = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.all.log_martians                = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.default.log_martians            = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_rfc1337                          = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_timestamps                       = 1&lt;br /&gt;
&lt;br /&gt;
== Rede IPv6 ==&lt;br /&gt;
[ OK ] net.ipv6.conf.all.accept_redirects            = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.default.accept_redirects        = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.all.accept_ra                   = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.default.accept_ra               = 0&lt;br /&gt;
&lt;br /&gt;
== Tuning essencial ==&lt;br /&gt;
[ OK ] fs.file-max                                   = 1048576&lt;br /&gt;
[ OK ] vm.swappiness                                 = 1&lt;br /&gt;
[ OK ] net.core.somaxconn                            = 65535&lt;br /&gt;
[ OK ] net.ipv4.tcp_fin_timeout                      = 10&lt;br /&gt;
[ OK ] net.ipv4.tcp_tw_reuse                         = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_slow_start_after_idle            = 0&lt;br /&gt;
&lt;br /&gt;
Resultado final: TODOS OS PARÂMETROS ESTÃO CORRETOS&lt;br /&gt;
#################################&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O script pode ser usado em auditorias, automações ou validações periódicas.&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Host&amp;diff=1132</id>
		<title>Tuning e Hardening - Host</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Host&amp;diff=1132"/>
		<updated>2026-02-07T20:17:23Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Aviso */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Tuning em Sistemas GNU-Linux no bare metal,ou seja, no servidor físico, para máquinas virtual veja a página dedicada para VM em [[Tuning_e_Hardening_-_VM]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Compatibilidade&#039;&#039;&#039;: Este conjunto de parâmetros sysctl é compatível com distribuições Linux que utilizam kernel Linux 5.4 ou superior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Distribuições testadas e compatíveis:&lt;br /&gt;
- Debian 11, 12 e 13&lt;br /&gt;
- Ubuntu 20.04 LTS, 22.04 LTS e 24.04 LTS&lt;br /&gt;
- Proxmox VE 7, 8 e 9&lt;br /&gt;
- Rocky Linux 8 e 9&lt;br /&gt;
- AlmaLinux 8 e 9&lt;br /&gt;
- RHEL 8 e 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Kernel Tuning e Hardening =&lt;br /&gt;
&lt;br /&gt;
Este projeto apresenta um conjunto de configurações e scripts para ajuste de desempenho (tuning) e endurecimento de segurança (hardening) do kernel Linux.&lt;br /&gt;
&lt;br /&gt;
O foco é melhorar estabilidade, capacidade de rede e segurança do sistema, sem desabilitar proteções críticas do kernel ou utilizar parâmetros obsoletos.&lt;br /&gt;
&lt;br /&gt;
== Objetivos ==&lt;br /&gt;
&lt;br /&gt;
* Ajustar parâmetros do kernel para servidores&lt;br /&gt;
* Reduzir superfície de ataque&lt;br /&gt;
* Manter compatibilidade com auditorias técnicas&lt;br /&gt;
* Fornecer mecanismo simples de validação&lt;br /&gt;
&lt;br /&gt;
== Escopo ==&lt;br /&gt;
&lt;br /&gt;
Estas configurações foram pensadas para:&lt;br /&gt;
&lt;br /&gt;
* Servidores Linux listados como compatíveis&lt;br /&gt;
* Ambientes físicos ou virtualizados&lt;br /&gt;
* Serviços de rede e infraestrutura&lt;br /&gt;
* Uso institucional ou pessoal&lt;br /&gt;
&lt;br /&gt;
== Tabela impacto e o objetivo ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela descreve o impacto e o objetivo de cada grupo de ajustes aplicados diretamente no host, considerando estabilidade, segurança e isolamento entre VMs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Componente do host&lt;br /&gt;
! Objetivo do hardening&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Benefícios práticos&lt;br /&gt;
! Cuidados / Observações&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Kernel Linux&#039;&#039;&#039;&lt;br /&gt;
| Reduzir superfície de ataque do host&lt;br /&gt;
| Proteções de symlink e hardlink, restrição de dmesg, ptrace limitado, ASLR forçado&lt;br /&gt;
| Dificulta escalonamento de privilégios e vazamento de informações do kernel&lt;br /&gt;
| Pode impactar ferramentas de debug no host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Filesystem&#039;&#039;&#039;&lt;br /&gt;
| Evitar abuso de recursos do sistema&lt;br /&gt;
| fs.file-max elevado, desativação de core dumps setuid&lt;br /&gt;
| Previne esgotamento de descritores e vazamento de memória sensível&lt;br /&gt;
| Ajustes devem considerar capacidade real do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Memória&#039;&#039;&#039;&lt;br /&gt;
| Priorizar VMs em vez do host&lt;br /&gt;
| swappiness baixo, mmap mínimo elevado&lt;br /&gt;
| Reduz uso de swap no host e melhora previsibilidade&lt;br /&gt;
| Swap ainda é necessária para estabilidade extrema&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Scheduler&#039;&#039;&#039;&lt;br /&gt;
| Evitar priorização automática indevida&lt;br /&gt;
| Desativação de autogroup, ajuste de migration cost&lt;br /&gt;
| Menos jitter e melhor previsibilidade para cargas de virtualização&lt;br /&gt;
| Pode reduzir responsividade em sessões interativas&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Rede IPv4&#039;&#039;&#039;&lt;br /&gt;
| Proteger o host contra ataques de rede&lt;br /&gt;
| rp_filter, desativar redirects, source routing, log de pacotes inválidos&lt;br /&gt;
| Reduz spoofing, ataques de rota e tráfego malformado&lt;br /&gt;
| Não interfere no tráfego das VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stack TCP&#039;&#039;&#039;&lt;br /&gt;
| Estabilidade e proteção básica&lt;br /&gt;
| SYN cookies, redução de retries, timeout controlado&lt;br /&gt;
| Mitiga ataques de SYN flood e conexões zumbis&lt;br /&gt;
| Host não deve ser usado como servidor de aplicação&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ARP / Neighbor cache&#039;&#039;&#039;&lt;br /&gt;
| Estabilidade em ambientes grandes&lt;br /&gt;
| Limites elevados de gc_thresh, intervalos menores&lt;br /&gt;
| Evita estouro de cache ARP em ambientes com muitas VMs&lt;br /&gt;
| Valores devem crescer conforme número de VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IPv6&#039;&#039;&#039;&lt;br /&gt;
| Reduzir exposição desnecessária&lt;br /&gt;
| Desativação de RA e redirects no host&lt;br /&gt;
| Evita configuração automática indevida de rotas&lt;br /&gt;
| Não afeta IPv6 interno das VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Virtualização&#039;&#039;&#039;&lt;br /&gt;
| Isolamento entre guests&lt;br /&gt;
| Kernel hardening padrão + KVM intacto&lt;br /&gt;
| Reduz risco de impacto de uma VM comprometida&lt;br /&gt;
| Não substitui atualizações de segurança&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Estrutura do projeto ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Caminho !! Descrição&lt;br /&gt;
|-&lt;br /&gt;
| /etc/sysctl/99-custom.conf || Ajustes de desempenho&lt;br /&gt;
|-&lt;br /&gt;
| /etc/sysctl/99-hardening.conf || Ajustes de segurança&lt;br /&gt;
|-&lt;br /&gt;
| /bin/sysctl-check.sh || Script de validação&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Decisões de segurança ==&lt;br /&gt;
&lt;br /&gt;
* Mitigações de Meltdown e Spectre permanecem ativas&lt;br /&gt;
* Nenhum parâmetro depreciado ou removido é utilizado&lt;br /&gt;
* Hardening aplicado sem impacto relevante de desempenho&lt;br /&gt;
&lt;br /&gt;
== Aviso ==&lt;br /&gt;
&lt;br /&gt;
Estas configurações devem ser testadas em ambiente controlado antes da aplicação em produção.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script Projeto Root ==&lt;br /&gt;
Para facilitar deixamos um script para fazer todo o processo de forma automatizada, assim agilizando o processo de instalação, caso queira utilizar veja:&lt;br /&gt;
&lt;br /&gt;
https://github.com/projetoroot/tuning-host&lt;br /&gt;
&lt;br /&gt;
Para instalar automaticamente faça:&lt;br /&gt;
&lt;br /&gt;
Acesse seu servidor/VM ( Linux que será aplicado o tuning ) por ssh com usuário root e execute a linha abaixo&lt;br /&gt;
 wget https://raw.githubusercontent.com/projetoroot/tuning-host/refs/heads/main/install.sh &amp;amp;&amp;amp;  bash install.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Caso queira instalar manualmente veja abaixo os procedimentos&lt;br /&gt;
&lt;br /&gt;
= Kernel Tuning – sysctl =&lt;br /&gt;
Crie o arquivo 99-custom.conf &lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.d/99-custom.conf&lt;br /&gt;
&lt;br /&gt;
== Arquivo: 99-custom.conf ==&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Limites de arquivos&lt;br /&gt;
############################&lt;br /&gt;
# Define o número máximo de arquivos abertos no sistema&lt;br /&gt;
fs.file-max = 1048576&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de memória&lt;br /&gt;
############################&lt;br /&gt;
# Reduz uso de swap, priorizando memória RAM&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
############################&lt;br /&gt;
# Portas efêmeras e conexões&lt;br /&gt;
############################&lt;br /&gt;
# Intervalo de portas locais para conexões de saída&lt;br /&gt;
net.ipv4.ip_local_port_range = 10000 65000&lt;br /&gt;
# Número máximo de conexões pendentes no listen&lt;br /&gt;
net.core.somaxconn = 65535&lt;br /&gt;
############################&lt;br /&gt;
# Buffers globais de rede&lt;br /&gt;
############################&lt;br /&gt;
# Buffer máximo de recepção&lt;br /&gt;
net.core.rmem_max = 16777216&lt;br /&gt;
# Buffer máximo de envio&lt;br /&gt;
net.core.wmem_max = 16777216&lt;br /&gt;
# Buffer padrão de recepção&lt;br /&gt;
net.core.rmem_default = 262144&lt;br /&gt;
# Buffer padrão de envio&lt;br /&gt;
net.core.wmem_default = 262144&lt;br /&gt;
############################&lt;br /&gt;
# Buffers TCP&lt;br /&gt;
############################&lt;br /&gt;
# Buffer TCP de recepção: min, default e max&lt;br /&gt;
net.ipv4.tcp_rmem = 4096 87380 16777216&lt;br /&gt;
# Buffer TCP de envio: min, default e max&lt;br /&gt;
net.ipv4.tcp_wmem = 4096 65536 16777216&lt;br /&gt;
############################&lt;br /&gt;
# Filas e backlog&lt;br /&gt;
############################&lt;br /&gt;
# Fila máxima de pacotes por interface&lt;br /&gt;
net.core.netdev_max_backlog = 50000&lt;br /&gt;
# Máximo de conexões SYN pendentes&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 32768&lt;br /&gt;
# Limite de conexões em TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_max_tw_buckets = 262144&lt;br /&gt;
############################&lt;br /&gt;
# Otimizações TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de espera no fechamento TCP&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
# Evita reinício lento após ociosidade&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
# Reduz tentativas de SYN&lt;br /&gt;
net.ipv4.tcp_syn_retries = 3&lt;br /&gt;
# Reduz tentativas de SYN-ACK&lt;br /&gt;
net.ipv4.tcp_synack_retries = 3&lt;br /&gt;
############################&lt;br /&gt;
# Buffers UDP&lt;br /&gt;
############################&lt;br /&gt;
# Buffer mínimo de recepção UDP&lt;br /&gt;
net.ipv4.udp_rmem_min = 8192&lt;br /&gt;
# Buffer mínimo de envio UDP&lt;br /&gt;
net.ipv4.udp_wmem_min = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Ajustes de TCP&lt;br /&gt;
############################&lt;br /&gt;
# Ativa escalonamento de janela TCP&lt;br /&gt;
net.ipv4.tcp_window_scaling = 1&lt;br /&gt;
############################&lt;br /&gt;
# Hardening IPv4&lt;br /&gt;
############################&lt;br /&gt;
# Não enviar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
# Não aceitar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
# Não aceitar source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
# Logar pacotes inválidos&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
############################&lt;br /&gt;
# Scheduler do kernel&lt;br /&gt;
############################&lt;br /&gt;
# Reduz migração excessiva de processos entre CPUs&lt;br /&gt;
kernel.sched_migration_cost_ns = 5000000&lt;br /&gt;
# Desativa agrupamento automático de processos&lt;br /&gt;
kernel.sched_autogroup_enabled = 0&lt;br /&gt;
############################&lt;br /&gt;
# Cache ARP&lt;br /&gt;
############################&lt;br /&gt;
# Intervalo de coleta de entradas ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_interval = 15&lt;br /&gt;
# Limite inicial do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh1 = 4096&lt;br /&gt;
# Limite intermediário do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh2 = 8192&lt;br /&gt;
# Limite máximo do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh3 = 16384&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Observações ==&lt;br /&gt;
&lt;br /&gt;
* Os valores priorizam estabilidade e throughput&lt;br /&gt;
* Não há impacto negativo em segurança&lt;br /&gt;
* Compatível com cargas de rede elevadas&lt;br /&gt;
&lt;br /&gt;
= Kernel Hardening – sysctl =&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo 99-hardening.conf &lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.d/99-hardening.conf&lt;br /&gt;
&lt;br /&gt;
== Arquivo: 99-hardening.conf ==&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Kernel hardening baseline&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de links simbólicos e hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
# Restringir acesso ao dmesg&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Restringir acesso a ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evitar core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
# Endurecer uso de ptrace&lt;br /&gt;
kernel.yama.ptrace_scope = 1&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de rede IPv4&lt;br /&gt;
############################&lt;br /&gt;
# Proteção contra IP spoofing&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 1&lt;br /&gt;
net.ipv4.conf.default.rp_filter = 1&lt;br /&gt;
# Não aceitar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;
# Não enviar redirecionamentos&lt;br /&gt;
net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.send_redirects = 0&lt;br /&gt;
# Não aceitar source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;
# Ativar SYN cookies&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
# Ignorar ICMP suspeitos&lt;br /&gt;
net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
net.ipv4.icmp_ignore_bogus_error_responses = 1&lt;br /&gt;
# Logar pacotes inválidos&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
net.ipv4.conf.default.log_martians = 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Aplicação das configurações sysctl =&lt;br /&gt;
&lt;br /&gt;
As configurações de tuning e hardening devem ser aplicadas por meio de arquivos&lt;br /&gt;
no diretório /etc/sysctl.d/.&lt;br /&gt;
&lt;br /&gt;
Não é recomendado editar diretamente o arquivo /etc/sysctl.conf.&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Validação das configurações sysctl =&lt;br /&gt;
&lt;br /&gt;
O script sysctl-check.sh valida se os parâmetros definidos estão ativos&lt;br /&gt;
no kernel em tempo de execução.&lt;br /&gt;
&lt;br /&gt;
== Script de validação ==&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - tuning e hardening&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;== Kernel hardening ==&amp;quot;&lt;br /&gt;
check fs.protected_hardlinks 1&lt;br /&gt;
check fs.protected_symlinks 1&lt;br /&gt;
check fs.protected_fifos 1&lt;br /&gt;
check fs.protected_regular 1&lt;br /&gt;
check kernel.dmesg_restrict 1&lt;br /&gt;
check kernel.kptr_restrict 2&lt;br /&gt;
check fs.suid_dumpable 0&lt;br /&gt;
check kernel.yama.ptrace_scope 1&lt;br /&gt;
check kernel.randomize_va_space 2&lt;br /&gt;
check vm.mmap_min_addr 65536&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Rede IPv4 ==&amp;quot;&lt;br /&gt;
check net.ipv4.conf.all.rp_filter 1&lt;br /&gt;
check net.ipv4.conf.default.rp_filter 1&lt;br /&gt;
check net.ipv4.conf.all.accept_redirects 0&lt;br /&gt;
check net.ipv4.conf.default.accept_redirects 0&lt;br /&gt;
check net.ipv4.conf.all.send_redirects 0&lt;br /&gt;
check net.ipv4.conf.default.send_redirects 0&lt;br /&gt;
check net.ipv4.conf.all.accept_source_route 0&lt;br /&gt;
check net.ipv4.conf.default.accept_source_route 0&lt;br /&gt;
check net.ipv4.tcp_syncookies 1&lt;br /&gt;
check net.ipv4.icmp_echo_ignore_broadcasts 1&lt;br /&gt;
check net.ipv4.icmp_ignore_bogus_error_responses 1&lt;br /&gt;
check net.ipv4.conf.all.log_martians 1&lt;br /&gt;
check net.ipv4.conf.default.log_martians 1&lt;br /&gt;
check net.ipv4.tcp_rfc1337 1&lt;br /&gt;
check net.ipv4.tcp_timestamps 1&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Rede IPv6 ==&amp;quot;&lt;br /&gt;
check net.ipv6.conf.all.accept_redirects 0&lt;br /&gt;
check net.ipv6.conf.default.accept_redirects 0&lt;br /&gt;
check net.ipv6.conf.all.accept_ra 0&lt;br /&gt;
check net.ipv6.conf.default.accept_ra 0&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Tuning essencial ==&amp;quot;&lt;br /&gt;
check fs.file-max 1048576&lt;br /&gt;
check vm.swappiness 1&lt;br /&gt;
check net.core.somaxconn 65535&lt;br /&gt;
check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: TODOS OS PARÂMETROS ESTÃO CORRETOS&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução.&lt;br /&gt;
 chmod +x /bin/sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
Executando:&lt;br /&gt;
 sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resultado ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#################################           &lt;br /&gt;
Validação de sysctl - tuning e hardening&lt;br /&gt;
Host: debian-base&lt;br /&gt;
Data: qua 18 fev 2026 18:18:18 -03&lt;br /&gt;
&lt;br /&gt;
== Kernel hardening ==&lt;br /&gt;
[ OK ] fs.protected_hardlinks                        = 1&lt;br /&gt;
[ OK ] fs.protected_symlinks                         = 1&lt;br /&gt;
[ OK ] fs.protected_fifos                            = 1&lt;br /&gt;
[ OK ] fs.protected_regular                          = 1&lt;br /&gt;
[ OK ] kernel.dmesg_restrict                         = 1&lt;br /&gt;
[ OK ] kernel.kptr_restrict                          = 2&lt;br /&gt;
[ OK ] fs.suid_dumpable                              = 0&lt;br /&gt;
[ OK ] kernel.yama.ptrace_scope                      = 1&lt;br /&gt;
[ OK ] kernel.randomize_va_space                     = 2&lt;br /&gt;
[ OK ] vm.mmap_min_addr                              = 65536&lt;br /&gt;
&lt;br /&gt;
== Rede IPv4 ==&lt;br /&gt;
[ OK ] net.ipv4.conf.all.rp_filter                   = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.default.rp_filter               = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.all.accept_redirects            = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.accept_redirects        = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.all.send_redirects              = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.send_redirects          = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.all.accept_source_route         = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.accept_source_route     = 0&lt;br /&gt;
[ OK ] net.ipv4.tcp_syncookies                       = 1&lt;br /&gt;
[ OK ] net.ipv4.icmp_echo_ignore_broadcasts          = 1&lt;br /&gt;
[ OK ] net.ipv4.icmp_ignore_bogus_error_responses    = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.all.log_martians                = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.default.log_martians            = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_rfc1337                          = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_timestamps                       = 1&lt;br /&gt;
&lt;br /&gt;
== Rede IPv6 ==&lt;br /&gt;
[ OK ] net.ipv6.conf.all.accept_redirects            = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.default.accept_redirects        = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.all.accept_ra                   = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.default.accept_ra               = 0&lt;br /&gt;
&lt;br /&gt;
== Tuning essencial ==&lt;br /&gt;
[ OK ] fs.file-max                                   = 1048576&lt;br /&gt;
[ OK ] vm.swappiness                                 = 1&lt;br /&gt;
[ OK ] net.core.somaxconn                            = 65535&lt;br /&gt;
[ OK ] net.ipv4.tcp_fin_timeout                      = 10&lt;br /&gt;
[ OK ] net.ipv4.tcp_tw_reuse                         = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_slow_start_after_idle            = 0&lt;br /&gt;
&lt;br /&gt;
Resultado final: TODOS OS PARÂMETROS ESTÃO CORRETOS&lt;br /&gt;
#################################&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O script pode ser usado em auditorias, automações ou validações periódicas.&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1131</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1131"/>
		<updated>2026-02-06T23:44:24Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Sobre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Genérica&#039;&#039;&#039;&lt;br /&gt;
| Serviços simples&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening básico&lt;br /&gt;
| Qualquer tuning adicional sem necessidade&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1130</id>
		<title>Tuning e Hardening - VM</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_VM&amp;diff=1130"/>
		<updated>2026-02-06T23:43:53Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Sobre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
lá! Visitante, reunimos aqui, informações sobre o processo de tuning e hardening em máquinas virtuais (VMs) executadas sobre hosts Proxmox VE previamente ajustados ,ou seja, no servidor virtual, para máquinas bare metal veja a página dedicada para host em [[Tuning_e_Hardening_-_Host]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este documento descreve a aplicação de .&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;O princípio adotado é a separação de responsabilidades:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* O host Proxmox é responsável por tuning agressivo de rede, I/O e CPU.&lt;br /&gt;
&lt;br /&gt;
* As VMs aplicam hardening de segurança e tuning leve, focado no serviço.&lt;br /&gt;
&lt;br /&gt;
* Nenhuma VM deve repetir os ajustes globais do host.&lt;br /&gt;
&lt;br /&gt;
Todos os exemplos abaixo utilizam parâmetros sysctl, compatíveis com:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Debian 11, 12 e 13&lt;br /&gt;
* Ubuntu Server 20.04 LTS ou superior&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tabela de decisão por tipo de VM ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela define quais ajustes aplicar em cada tipo de VM, evitando tuning excessivo e conflitos com o host Proxmox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Tipo de VM&lt;br /&gt;
! Objetivo principal&lt;br /&gt;
! Arquivo sysctl recomendado&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Ajustes a evitar&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Base line&#039;&#039;&#039;&lt;br /&gt;
| Hardening mínimo comum&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening de kernel, proteção de filesystem, redução leve de swap&lt;br /&gt;
| Backlog alto, buffers de rede elevados&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Web / API&#039;&#039;&#039;&lt;br /&gt;
| Muitas conexões simultâneas&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-web.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| somaxconn moderado, backlog TCP, reuso de conexões&lt;br /&gt;
| Buffers TCP máximos, netdev backlog elevado&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Banco de Dados&#039;&#039;&#039;&lt;br /&gt;
| Consistência e memória&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-db.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| swappiness mínimo, controle de overcommit&lt;br /&gt;
| Tuning agressivo de rede&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Firewall / Proxy&#039;&#039;&#039;&lt;br /&gt;
| Processamento de tráfego&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-network.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| backlog de pacotes, fila TCP maior&lt;br /&gt;
| Valores idênticos aos do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VM Genérica&#039;&#039;&#039;&lt;br /&gt;
| Serviços simples&lt;br /&gt;
| &amp;lt;code&amp;gt;99-vm-baseline.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hardening básico&lt;br /&gt;
| Qualquer tuning adicional sem necessidade&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prefixo 99 ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
Exemplo prático:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10-default.conf&lt;br /&gt;
50-network.conf&lt;br /&gt;
99-vm-baseline.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O valor definido em &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039; vence, mesmo que os outros arquivos já tenham configurado o mesmo parâmetro.&lt;br /&gt;
&lt;br /&gt;
== VM Base line ==&lt;br /&gt;
&lt;br /&gt;
Configuração mínima recomendada para &#039;&#039;&#039;todas as VMs&#039;&#039;&#039;, independentemente da função.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-baseline.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-baseline.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Baseline de VM&lt;br /&gt;
############################&lt;br /&gt;
# Reduz o uso de swap, mantendo previsibilidade&lt;br /&gt;
vm.swappiness = 10&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de kernel&lt;br /&gt;
############################&lt;br /&gt;
# Restringe acesso ao buffer do kernel&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Oculta ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evita core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de filesystem&lt;br /&gt;
############################&lt;br /&gt;
# Bloqueia abuso de hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
# Bloqueia abuso de symlinks&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
# Protege FIFOs&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
# Protege arquivos regulares&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VM de aplicação web ou API ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
* Servidores web&lt;br /&gt;
&lt;br /&gt;
* APIs REST&lt;br /&gt;
&lt;br /&gt;
* Aplicações com muitas conexões simultâneas&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-web.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-web.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Web / API&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de conexões pendentes&lt;br /&gt;
net.core.somaxconn = 8192&lt;br /&gt;
# Aumenta backlog de conexões SYN&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Otimização de conexões TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de fechamento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 15&lt;br /&gt;
# Evita reinício lento após idle&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM de banco de dados == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* MySQL / MariaDB&lt;br /&gt;
&lt;br /&gt;
* Redis&lt;br /&gt;
&lt;br /&gt;
* MongoDB&lt;br /&gt;
&lt;br /&gt;
O foco aqui é &#039;&#039;&#039;memória&#039;&#039;&#039; e previsibilidade, não rede.&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-db.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-db.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
# Minimiza uso de swap&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
# Evita overcommit agressivo de memória&lt;br /&gt;
vm.overcommit_memory = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Observação importante:&#039;&#039;&#039;&lt;br /&gt;
O tuning principal deve ser feito no próprio banco, não no kernel.&lt;br /&gt;
&lt;br /&gt;
== VM de firewall ou proxy ==&lt;br /&gt;
&#039;&#039;&#039;Indicada para:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverse proxy&lt;br /&gt;
&lt;br /&gt;
* Load balancer&lt;br /&gt;
&lt;br /&gt;
* Firewall virtual&lt;br /&gt;
&lt;br /&gt;
* VPN&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-network.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/sysctl.d/99-vm-network.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# VM Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
# Aumenta fila de pacotes da interface&lt;br /&gt;
net.core.netdev_max_backlog = 10000&lt;br /&gt;
# Aumenta backlog de conexões TCP&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 16384&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de conexões&lt;br /&gt;
############################&lt;br /&gt;
# Reduz tempo de encerramento de conexões&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nunca utilizar os mesmos valores do host Proxmox.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Hardening adicional dentro das VMs ==&lt;br /&gt;
&lt;br /&gt;
Além do sysctl, recomenda-se aplicar hardening em limites de recursos e systemd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo: &#039;&#039;&#039;99-vm-limits.conf&#039;&#039;&#039;&lt;br /&gt;
 nano /etc/security/limits.d/99-vm-limits.conf&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite máximo de arquivos abertos por processo&lt;br /&gt;
* soft nofile 104857&lt;br /&gt;
* hard nofile 104857&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nano /etc/systemd/system.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Limite global de arquivos abertos&lt;br /&gt;
DefaultLimitNOFILE=104857&lt;br /&gt;
# Limite global de processos&lt;br /&gt;
DefaultLimitNPROC=32768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após alteração, executar:&lt;br /&gt;
 systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Observações finais&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Não replicar sysctl do host dentro das VMs&lt;br /&gt;
&lt;br /&gt;
* Ajustar apenas o necessário para o serviço&lt;br /&gt;
&lt;br /&gt;
* Documentar cada VM conforme seu perfil&lt;br /&gt;
&lt;br /&gt;
* Aplicar mudanças de forma controlada&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Script de validação de perfil de VM == &lt;br /&gt;
&lt;br /&gt;
Crie o arquivo sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
PROFILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$PROFILE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Uso: $0 {baseline|web|db|network}&amp;quot;&lt;br /&gt;
    exit 2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - Perfil de VM&amp;quot;&lt;br /&gt;
echo &amp;quot;Perfil selecionado: $PROFILE&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Baseline comum a todas as VMs&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
baseline_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Baseline ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 10&lt;br /&gt;
    check kernel.dmesg_restrict 1&lt;br /&gt;
    check kernel.kptr_restrict 2&lt;br /&gt;
    check fs.suid_dumpable 0&lt;br /&gt;
    check fs.protected_hardlinks 1&lt;br /&gt;
    check fs.protected_symlinks 1&lt;br /&gt;
    check fs.protected_fifos 1&lt;br /&gt;
    check fs.protected_regular 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Web / API&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
web_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Web / API ==&amp;quot;&lt;br /&gt;
    check net.core.somaxconn 8192&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 8192&lt;br /&gt;
    check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 15&lt;br /&gt;
    check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Banco de Dados&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
db_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Banco de Dados ==&amp;quot;&lt;br /&gt;
    check vm.swappiness 1&lt;br /&gt;
    check vm.overcommit_memory 1&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Perfil Firewall / Proxy&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
network_checks() {&lt;br /&gt;
    echo &amp;quot;== VM Firewall / Proxy ==&amp;quot;&lt;br /&gt;
    check net.core.netdev_max_backlog 10000&lt;br /&gt;
    check net.ipv4.tcp_max_syn_backlog 16384&lt;br /&gt;
    check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
    echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Execução por perfil&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$PROFILE&amp;quot; in&lt;br /&gt;
    baseline)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    web)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        web_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    db)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        db_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    network)&lt;br /&gt;
        baseline_checks&lt;br /&gt;
        network_checks&lt;br /&gt;
        ;;&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;Perfil inválido: $PROFILE&amp;quot;&lt;br /&gt;
        echo &amp;quot;Perfis válidos: baseline | web | db | network&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
############################&lt;br /&gt;
# Resultado final&lt;br /&gt;
############################&lt;br /&gt;
&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: PERFIL &#039;$PROFILE&#039; APLICADO CORRETAMENTE&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO PARA O PERFIL &#039;$PROFILE&#039;&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução&lt;br /&gt;
 chmod +x sysctl-vm-check.sh&lt;br /&gt;
&lt;br /&gt;
Execute conforme o perfil escolhido:&lt;br /&gt;
&lt;br /&gt;
 sysctl-vm-check.sh baseline&lt;br /&gt;
 sysctl-vm-check.sh web&lt;br /&gt;
 sysctl-vm-check.sh db&lt;br /&gt;
 sysctl-vm-check.sh network&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Host&amp;diff=1129</id>
		<title>Tuning e Hardening - Host</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Tuning_e_Hardening_-_Host&amp;diff=1129"/>
		<updated>2026-02-06T23:41:16Z</updated>

		<summary type="html">&lt;p&gt;Diegocosta: /* Sobre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre o processo de Tuning em Sistemas GNU-Linux no bare metal,ou seja, no servidor físico, para máquinas virtual veja a página dedicada para VM em [[Tuning_e_Hardening_-_VM]] . Sendo este procedimento realizado para aumentar o desempenho entre 10% a 40% dependendo do hardware até um pouco mais. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra, uma vez que por padrão o Kernel Linux vem em modo conservador, assim mantendo a compatibilidade entre os mais diversos tipos de utilização. Após os ajustes abaixo recomenda-se fazer reboot em seu equipamento, assim efetivando todas as modificações no processo de boot do sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Compatibilidade&#039;&#039;&#039;: Este conjunto de parâmetros sysctl é compatível com distribuições Linux que utilizam kernel Linux 5.4 ou superior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Distribuições testadas e compatíveis:&lt;br /&gt;
- Debian 11, 12 e 13&lt;br /&gt;
- Ubuntu 20.04 LTS, 22.04 LTS e 24.04 LTS&lt;br /&gt;
- Proxmox VE 7, 8 e 9&lt;br /&gt;
- Rocky Linux 8 e 9&lt;br /&gt;
- AlmaLinux 8 e 9&lt;br /&gt;
- RHEL 8 e 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Kernel Tuning e Hardening =&lt;br /&gt;
&lt;br /&gt;
Este projeto apresenta um conjunto de configurações e scripts para ajuste de desempenho (tuning) e endurecimento de segurança (hardening) do kernel Linux.&lt;br /&gt;
&lt;br /&gt;
O foco é melhorar estabilidade, capacidade de rede e segurança do sistema, sem desabilitar proteções críticas do kernel ou utilizar parâmetros obsoletos.&lt;br /&gt;
&lt;br /&gt;
== Objetivos ==&lt;br /&gt;
&lt;br /&gt;
* Ajustar parâmetros do kernel para servidores&lt;br /&gt;
* Reduzir superfície de ataque&lt;br /&gt;
* Manter compatibilidade com auditorias técnicas&lt;br /&gt;
* Fornecer mecanismo simples de validação&lt;br /&gt;
&lt;br /&gt;
== Escopo ==&lt;br /&gt;
&lt;br /&gt;
Estas configurações foram pensadas para:&lt;br /&gt;
&lt;br /&gt;
* Servidores Linux listados como compatíveis&lt;br /&gt;
* Ambientes físicos ou virtualizados&lt;br /&gt;
* Serviços de rede e infraestrutura&lt;br /&gt;
* Uso institucional ou pessoal&lt;br /&gt;
&lt;br /&gt;
== Tabela impacto e o objetivo ==&lt;br /&gt;
&lt;br /&gt;
Esta tabela descreve o impacto e o objetivo de cada grupo de ajustes aplicados diretamente no host, considerando estabilidade, segurança e isolamento entre VMs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
! Componente do host&lt;br /&gt;
! Objetivo do hardening&lt;br /&gt;
! Ajustes aplicados&lt;br /&gt;
! Benefícios práticos&lt;br /&gt;
! Cuidados / Observações&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Kernel Linux&#039;&#039;&#039;&lt;br /&gt;
| Reduzir superfície de ataque do host&lt;br /&gt;
| Proteções de symlink e hardlink, restrição de dmesg, ptrace limitado, ASLR forçado&lt;br /&gt;
| Dificulta escalonamento de privilégios e vazamento de informações do kernel&lt;br /&gt;
| Pode impactar ferramentas de debug no host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Filesystem&#039;&#039;&#039;&lt;br /&gt;
| Evitar abuso de recursos do sistema&lt;br /&gt;
| fs.file-max elevado, desativação de core dumps setuid&lt;br /&gt;
| Previne esgotamento de descritores e vazamento de memória sensível&lt;br /&gt;
| Ajustes devem considerar capacidade real do host&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Memória&#039;&#039;&#039;&lt;br /&gt;
| Priorizar VMs em vez do host&lt;br /&gt;
| swappiness baixo, mmap mínimo elevado&lt;br /&gt;
| Reduz uso de swap no host e melhora previsibilidade&lt;br /&gt;
| Swap ainda é necessária para estabilidade extrema&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Scheduler&#039;&#039;&#039;&lt;br /&gt;
| Evitar priorização automática indevida&lt;br /&gt;
| Desativação de autogroup, ajuste de migration cost&lt;br /&gt;
| Menos jitter e melhor previsibilidade para cargas de virtualização&lt;br /&gt;
| Pode reduzir responsividade em sessões interativas&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Rede IPv4&#039;&#039;&#039;&lt;br /&gt;
| Proteger o host contra ataques de rede&lt;br /&gt;
| rp_filter, desativar redirects, source routing, log de pacotes inválidos&lt;br /&gt;
| Reduz spoofing, ataques de rota e tráfego malformado&lt;br /&gt;
| Não interfere no tráfego das VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stack TCP&#039;&#039;&#039;&lt;br /&gt;
| Estabilidade e proteção básica&lt;br /&gt;
| SYN cookies, redução de retries, timeout controlado&lt;br /&gt;
| Mitiga ataques de SYN flood e conexões zumbis&lt;br /&gt;
| Host não deve ser usado como servidor de aplicação&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ARP / Neighbor cache&#039;&#039;&#039;&lt;br /&gt;
| Estabilidade em ambientes grandes&lt;br /&gt;
| Limites elevados de gc_thresh, intervalos menores&lt;br /&gt;
| Evita estouro de cache ARP em ambientes com muitas VMs&lt;br /&gt;
| Valores devem crescer conforme número de VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IPv6&#039;&#039;&#039;&lt;br /&gt;
| Reduzir exposição desnecessária&lt;br /&gt;
| Desativação de RA e redirects no host&lt;br /&gt;
| Evita configuração automática indevida de rotas&lt;br /&gt;
| Não afeta IPv6 interno das VMs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Virtualização&#039;&#039;&#039;&lt;br /&gt;
| Isolamento entre guests&lt;br /&gt;
| Kernel hardening padrão + KVM intacto&lt;br /&gt;
| Reduz risco de impacto de uma VM comprometida&lt;br /&gt;
| Não substitui atualizações de segurança&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Estrutura do projeto ==&lt;br /&gt;
&lt;br /&gt;
O papel do prefixo 99:&lt;br /&gt;
&lt;br /&gt;
Em sistemas Linux, os arquivos de configuração do &#039;&#039;&#039;sysctl&#039;&#039;&#039; em &#039;&#039;&#039;/etc/sysctl.d/&#039;&#039;&#039; são carregados em ordem alfanumérica. Ou seja, o kernel aplica os parâmetros seguindo esta ordem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. /usr/lib/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
2. /run/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
3. /etc/sysctl.d/*.conf&lt;br /&gt;
&lt;br /&gt;
4. /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dentro de cada diretório, os arquivos são lidos do menor para o maior nome.&lt;br /&gt;
&lt;br /&gt;
Usar &#039;&#039;&#039;99-&#039;&#039;&#039; garante que esses arquivos sejam aplicados por último.&lt;br /&gt;
&lt;br /&gt;
Eles sobrescrevam valores definidos por:&lt;br /&gt;
* Distribuição&lt;br /&gt;
&lt;br /&gt;
* Pacotes instalados&lt;br /&gt;
&lt;br /&gt;
* Outros arquivos genéricos de tuning&lt;br /&gt;
&lt;br /&gt;
* O comportamento fique previsível e auditável&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Caminho !! Descrição&lt;br /&gt;
|-&lt;br /&gt;
| /etc/sysctl/99-custom.conf || Ajustes de desempenho&lt;br /&gt;
|-&lt;br /&gt;
| /etc/sysctl/99-hardening.conf || Ajustes de segurança&lt;br /&gt;
|-&lt;br /&gt;
| /bin/sysctl-check.sh || Script de validação&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Decisões de segurança ==&lt;br /&gt;
&lt;br /&gt;
* Mitigações de Meltdown e Spectre permanecem ativas&lt;br /&gt;
* Nenhum parâmetro depreciado ou removido é utilizado&lt;br /&gt;
* Hardening aplicado sem impacto relevante de desempenho&lt;br /&gt;
&lt;br /&gt;
== Aviso ==&lt;br /&gt;
&lt;br /&gt;
Estas configurações devem ser testadas em ambiente controlado antes da aplicação em produção.&lt;br /&gt;
&lt;br /&gt;
= Kernel Tuning – sysctl =&lt;br /&gt;
Crie o arquivo 99-custom.conf &lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.d/99-custom.conf&lt;br /&gt;
&lt;br /&gt;
== Arquivo: 99-custom.conf ==&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Limites de arquivos&lt;br /&gt;
############################&lt;br /&gt;
# Define o número máximo de arquivos abertos no sistema&lt;br /&gt;
fs.file-max = 1048576&lt;br /&gt;
############################&lt;br /&gt;
# Gerenciamento de memória&lt;br /&gt;
############################&lt;br /&gt;
# Reduz uso de swap, priorizando memória RAM&lt;br /&gt;
vm.swappiness = 1&lt;br /&gt;
############################&lt;br /&gt;
# Portas efêmeras e conexões&lt;br /&gt;
############################&lt;br /&gt;
# Intervalo de portas locais para conexões de saída&lt;br /&gt;
net.ipv4.ip_local_port_range = 10000 65000&lt;br /&gt;
# Número máximo de conexões pendentes no listen&lt;br /&gt;
net.core.somaxconn = 65535&lt;br /&gt;
############################&lt;br /&gt;
# Buffers globais de rede&lt;br /&gt;
############################&lt;br /&gt;
# Buffer máximo de recepção&lt;br /&gt;
net.core.rmem_max = 16777216&lt;br /&gt;
# Buffer máximo de envio&lt;br /&gt;
net.core.wmem_max = 16777216&lt;br /&gt;
# Buffer padrão de recepção&lt;br /&gt;
net.core.rmem_default = 262144&lt;br /&gt;
# Buffer padrão de envio&lt;br /&gt;
net.core.wmem_default = 262144&lt;br /&gt;
############################&lt;br /&gt;
# Buffers TCP&lt;br /&gt;
############################&lt;br /&gt;
# Buffer TCP de recepção: min, default e max&lt;br /&gt;
net.ipv4.tcp_rmem = 4096 87380 16777216&lt;br /&gt;
# Buffer TCP de envio: min, default e max&lt;br /&gt;
net.ipv4.tcp_wmem = 4096 65536 16777216&lt;br /&gt;
############################&lt;br /&gt;
# Filas e backlog&lt;br /&gt;
############################&lt;br /&gt;
# Fila máxima de pacotes por interface&lt;br /&gt;
net.core.netdev_max_backlog = 50000&lt;br /&gt;
# Máximo de conexões SYN pendentes&lt;br /&gt;
net.ipv4.tcp_max_syn_backlog = 32768&lt;br /&gt;
# Limite de conexões em TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_max_tw_buckets = 262144&lt;br /&gt;
############################&lt;br /&gt;
# Otimizações TCP&lt;br /&gt;
############################&lt;br /&gt;
# Permite reutilização de conexões TIME_WAIT&lt;br /&gt;
net.ipv4.tcp_tw_reuse = 1&lt;br /&gt;
# Reduz tempo de espera no fechamento TCP&lt;br /&gt;
net.ipv4.tcp_fin_timeout = 10&lt;br /&gt;
# Evita reinício lento após ociosidade&lt;br /&gt;
net.ipv4.tcp_slow_start_after_idle = 0&lt;br /&gt;
# Reduz tentativas de SYN&lt;br /&gt;
net.ipv4.tcp_syn_retries = 3&lt;br /&gt;
# Reduz tentativas de SYN-ACK&lt;br /&gt;
net.ipv4.tcp_synack_retries = 3&lt;br /&gt;
############################&lt;br /&gt;
# Buffers UDP&lt;br /&gt;
############################&lt;br /&gt;
# Buffer mínimo de recepção UDP&lt;br /&gt;
net.ipv4.udp_rmem_min = 8192&lt;br /&gt;
# Buffer mínimo de envio UDP&lt;br /&gt;
net.ipv4.udp_wmem_min = 8192&lt;br /&gt;
############################&lt;br /&gt;
# Ajustes de TCP&lt;br /&gt;
############################&lt;br /&gt;
# Ativa escalonamento de janela TCP&lt;br /&gt;
net.ipv4.tcp_window_scaling = 1&lt;br /&gt;
############################&lt;br /&gt;
# Hardening IPv4&lt;br /&gt;
############################&lt;br /&gt;
# Não enviar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
# Não aceitar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
# Não aceitar source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
# Logar pacotes inválidos&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
############################&lt;br /&gt;
# Scheduler do kernel&lt;br /&gt;
############################&lt;br /&gt;
# Reduz migração excessiva de processos entre CPUs&lt;br /&gt;
kernel.sched_migration_cost_ns = 5000000&lt;br /&gt;
# Desativa agrupamento automático de processos&lt;br /&gt;
kernel.sched_autogroup_enabled = 0&lt;br /&gt;
############################&lt;br /&gt;
# Cache ARP&lt;br /&gt;
############################&lt;br /&gt;
# Intervalo de coleta de entradas ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_interval = 15&lt;br /&gt;
# Limite inicial do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh1 = 4096&lt;br /&gt;
# Limite intermediário do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh2 = 8192&lt;br /&gt;
# Limite máximo do cache ARP&lt;br /&gt;
net.ipv4.neigh.default.gc_thresh3 = 16384&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Observações ==&lt;br /&gt;
&lt;br /&gt;
* Os valores priorizam estabilidade e throughput&lt;br /&gt;
* Não há impacto negativo em segurança&lt;br /&gt;
* Compatível com cargas de rede elevadas&lt;br /&gt;
&lt;br /&gt;
= Kernel Hardening – sysctl =&lt;br /&gt;
&lt;br /&gt;
Crie o arquivo 99-hardening.conf &lt;br /&gt;
&lt;br /&gt;
 nano /etc/sysctl.d/99-hardening.conf&lt;br /&gt;
&lt;br /&gt;
== Arquivo: 99-hardening.conf ==&lt;br /&gt;
Copie e cole o conteúdo abaixo no arquivo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################&lt;br /&gt;
# Kernel hardening baseline&lt;br /&gt;
############################&lt;br /&gt;
# Proteção de links simbólicos e hardlinks&lt;br /&gt;
fs.protected_hardlinks = 1&lt;br /&gt;
fs.protected_symlinks = 1&lt;br /&gt;
fs.protected_fifos = 1&lt;br /&gt;
fs.protected_regular = 1&lt;br /&gt;
# Restringir acesso ao dmesg&lt;br /&gt;
kernel.dmesg_restrict = 1&lt;br /&gt;
# Restringir acesso a ponteiros do kernel&lt;br /&gt;
kernel.kptr_restrict = 2&lt;br /&gt;
# Evitar core dumps de binários setuid&lt;br /&gt;
fs.suid_dumpable = 0&lt;br /&gt;
# Endurecer uso de ptrace&lt;br /&gt;
kernel.yama.ptrace_scope = 1&lt;br /&gt;
############################&lt;br /&gt;
# Hardening de rede IPv4&lt;br /&gt;
############################&lt;br /&gt;
# Proteção contra IP spoofing&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 1&lt;br /&gt;
net.ipv4.conf.default.rp_filter = 1&lt;br /&gt;
# Não aceitar redirecionamentos ICMP&lt;br /&gt;
net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;
# Não enviar redirecionamentos&lt;br /&gt;
net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
net.ipv4.conf.default.send_redirects = 0&lt;br /&gt;
# Não aceitar source routing&lt;br /&gt;
net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;
# Ativar SYN cookies&lt;br /&gt;
net.ipv4.tcp_syncookies = 1&lt;br /&gt;
# Ignorar ICMP suspeitos&lt;br /&gt;
net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
net.ipv4.icmp_ignore_bogus_error_responses = 1&lt;br /&gt;
# Logar pacotes inválidos&lt;br /&gt;
net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
net.ipv4.conf.default.log_martians = 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Aplicação das configurações sysctl =&lt;br /&gt;
&lt;br /&gt;
As configurações de tuning e hardening devem ser aplicadas por meio de arquivos&lt;br /&gt;
no diretório /etc/sysctl.d/.&lt;br /&gt;
&lt;br /&gt;
Não é recomendado editar diretamente o arquivo /etc/sysctl.conf.&lt;br /&gt;
&lt;br /&gt;
== Aplicação ==&lt;br /&gt;
&lt;br /&gt;
Aplicar as configurações:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot não é obrigatório, mas recomendado em ambientes críticos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Validação das configurações sysctl =&lt;br /&gt;
&lt;br /&gt;
O script sysctl-check.sh valida se os parâmetros definidos estão ativos&lt;br /&gt;
no kernel em tempo de execução.&lt;br /&gt;
&lt;br /&gt;
== Script de validação ==&lt;br /&gt;
&lt;br /&gt;
 nano /bin/sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Validação de sysctl - tuning e hardening&amp;quot;&lt;br /&gt;
echo &amp;quot;Host: $(hostname)&amp;quot;&lt;br /&gt;
echo &amp;quot;Data: $(date)&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
FAIL=0&lt;br /&gt;
&lt;br /&gt;
check() {&lt;br /&gt;
    local key=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local expected=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    current=$(sysctl -n &amp;quot;$key&amp;quot; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$current&amp;quot; = &amp;quot;$expected&amp;quot; ]; then&lt;br /&gt;
        printf &amp;quot;[ OK ] %-45s = %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$current&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        printf &amp;quot;[FAIL] %-45s esperado: %s | atual: %s\n&amp;quot; &amp;quot;$key&amp;quot; &amp;quot;$expected&amp;quot; &amp;quot;${current:-N/A}&amp;quot;&lt;br /&gt;
        FAIL=1&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;== Kernel hardening ==&amp;quot;&lt;br /&gt;
check fs.protected_hardlinks 1&lt;br /&gt;
check fs.protected_symlinks 1&lt;br /&gt;
check fs.protected_fifos 1&lt;br /&gt;
check fs.protected_regular 1&lt;br /&gt;
check kernel.dmesg_restrict 1&lt;br /&gt;
check kernel.kptr_restrict 2&lt;br /&gt;
check fs.suid_dumpable 0&lt;br /&gt;
check kernel.yama.ptrace_scope 1&lt;br /&gt;
check kernel.randomize_va_space 2&lt;br /&gt;
check vm.mmap_min_addr 65536&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Rede IPv4 ==&amp;quot;&lt;br /&gt;
check net.ipv4.conf.all.rp_filter 1&lt;br /&gt;
check net.ipv4.conf.default.rp_filter 1&lt;br /&gt;
check net.ipv4.conf.all.accept_redirects 0&lt;br /&gt;
check net.ipv4.conf.default.accept_redirects 0&lt;br /&gt;
check net.ipv4.conf.all.send_redirects 0&lt;br /&gt;
check net.ipv4.conf.default.send_redirects 0&lt;br /&gt;
check net.ipv4.conf.all.accept_source_route 0&lt;br /&gt;
check net.ipv4.conf.default.accept_source_route 0&lt;br /&gt;
check net.ipv4.tcp_syncookies 1&lt;br /&gt;
check net.ipv4.icmp_echo_ignore_broadcasts 1&lt;br /&gt;
check net.ipv4.icmp_ignore_bogus_error_responses 1&lt;br /&gt;
check net.ipv4.conf.all.log_martians 1&lt;br /&gt;
check net.ipv4.conf.default.log_martians 1&lt;br /&gt;
check net.ipv4.tcp_rfc1337 1&lt;br /&gt;
check net.ipv4.tcp_timestamps 1&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Rede IPv6 ==&amp;quot;&lt;br /&gt;
check net.ipv6.conf.all.accept_redirects 0&lt;br /&gt;
check net.ipv6.conf.default.accept_redirects 0&lt;br /&gt;
check net.ipv6.conf.all.accept_ra 0&lt;br /&gt;
check net.ipv6.conf.default.accept_ra 0&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;== Tuning essencial ==&amp;quot;&lt;br /&gt;
check fs.file-max 1048576&lt;br /&gt;
check vm.swappiness 1&lt;br /&gt;
check net.core.somaxconn 65535&lt;br /&gt;
check net.ipv4.tcp_fin_timeout 10&lt;br /&gt;
check net.ipv4.tcp_tw_reuse 1&lt;br /&gt;
check net.ipv4.tcp_slow_start_after_idle 0&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
if [ $FAIL -eq 0 ]; then&lt;br /&gt;
    echo &amp;quot;Resultado final: TODOS OS PARÂMETROS ESTÃO CORRETOS&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Resultado final: EXISTEM PARÂMETROS FORA DO PADRÃO&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saia do arquivo e de permissão de execução.&lt;br /&gt;
 chmod +x /bin/sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
Executando:&lt;br /&gt;
 sysctl-check.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resultado ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#################################           &lt;br /&gt;
Validação de sysctl - tuning e hardening&lt;br /&gt;
Host: debian-base&lt;br /&gt;
Data: qua 18 fev 2026 18:18:18 -03&lt;br /&gt;
&lt;br /&gt;
== Kernel hardening ==&lt;br /&gt;
[ OK ] fs.protected_hardlinks                        = 1&lt;br /&gt;
[ OK ] fs.protected_symlinks                         = 1&lt;br /&gt;
[ OK ] fs.protected_fifos                            = 1&lt;br /&gt;
[ OK ] fs.protected_regular                          = 1&lt;br /&gt;
[ OK ] kernel.dmesg_restrict                         = 1&lt;br /&gt;
[ OK ] kernel.kptr_restrict                          = 2&lt;br /&gt;
[ OK ] fs.suid_dumpable                              = 0&lt;br /&gt;
[ OK ] kernel.yama.ptrace_scope                      = 1&lt;br /&gt;
[ OK ] kernel.randomize_va_space                     = 2&lt;br /&gt;
[ OK ] vm.mmap_min_addr                              = 65536&lt;br /&gt;
&lt;br /&gt;
== Rede IPv4 ==&lt;br /&gt;
[ OK ] net.ipv4.conf.all.rp_filter                   = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.default.rp_filter               = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.all.accept_redirects            = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.accept_redirects        = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.all.send_redirects              = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.send_redirects          = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.all.accept_source_route         = 0&lt;br /&gt;
[ OK ] net.ipv4.conf.default.accept_source_route     = 0&lt;br /&gt;
[ OK ] net.ipv4.tcp_syncookies                       = 1&lt;br /&gt;
[ OK ] net.ipv4.icmp_echo_ignore_broadcasts          = 1&lt;br /&gt;
[ OK ] net.ipv4.icmp_ignore_bogus_error_responses    = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.all.log_martians                = 1&lt;br /&gt;
[ OK ] net.ipv4.conf.default.log_martians            = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_rfc1337                          = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_timestamps                       = 1&lt;br /&gt;
&lt;br /&gt;
== Rede IPv6 ==&lt;br /&gt;
[ OK ] net.ipv6.conf.all.accept_redirects            = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.default.accept_redirects        = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.all.accept_ra                   = 0&lt;br /&gt;
[ OK ] net.ipv6.conf.default.accept_ra               = 0&lt;br /&gt;
&lt;br /&gt;
== Tuning essencial ==&lt;br /&gt;
[ OK ] fs.file-max                                   = 1048576&lt;br /&gt;
[ OK ] vm.swappiness                                 = 1&lt;br /&gt;
[ OK ] net.core.somaxconn                            = 65535&lt;br /&gt;
[ OK ] net.ipv4.tcp_fin_timeout                      = 10&lt;br /&gt;
[ OK ] net.ipv4.tcp_tw_reuse                         = 1&lt;br /&gt;
[ OK ] net.ipv4.tcp_slow_start_after_idle            = 0&lt;br /&gt;
&lt;br /&gt;
Resultado final: TODOS OS PARÂMETROS ESTÃO CORRETOS&lt;br /&gt;
#################################&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O script pode ser usado em auditorias, automações ou validações periódicas.&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
</feed>