<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos Segurança - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/seguranca/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/seguranca</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Sun, 10 Aug 2025 22:29:25 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.remontti.com.br/wp-content/uploads/2024/09/icone-rr-80x80.png</url>
	<title>Arquivos Segurança - Remontti</title>
	<link>https://blog.remontti.com.br/tag/seguranca</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Guia Passo a Passo para Instalar o Typebot em seu servidor próprio</title>
		<link>https://blog.remontti.com.br/7656</link>
					<comments>https://blog.remontti.com.br/7656#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 22 Sep 2023 15:32:29 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[automação]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[Certbot]]></category>
		<category><![CDATA[Chatbot]]></category>
		<category><![CDATA[Configuração]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[instalaçao]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[passo a passo]]></category>
		<category><![CDATA[PM2]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[Prisma]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Servidor]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Typebot]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7656</guid>

					<description><![CDATA[<p>O Typebot é uma ferramenta de código aberto que permite criar aplicativos ou formulários conversacionais de forma simples e eficaz. Ele oferece uma alternativa robusta a outras plataformas como o Landbot. Com o Typebot,&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7656">Guia Passo a Passo para Instalar o Typebot em seu servidor próprio</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img fetchpriority="high" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot.jpeg" alt="" width="1024" height="640" class="alignnone size-full wp-image-7666" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot.jpeg 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-300x188.jpeg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-768x480.jpeg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>O <a href="https://typebot.io" rel="noopener" target="_blank"><strong>Typebot</strong></a> é uma ferramenta de código aberto que permite criar aplicativos ou formulários conversacionais de forma simples e eficaz. Ele oferece uma alternativa robusta a outras plataformas como o Landbot. Com o Typebot, você pode criar diferentes tipos de aplicativos conversacionais, como:</p>
<p>&#8211; Qualificação de leads<br />
&#8211; Lançamento de produtos<br />
&#8211; Integração de usuários<br />
&#8211; Suporte ao cliente</p>
<p>O Typebot é amado por equipes e criadores em todo o mundo e oferece uma experiência de construção fácil. Você pode arrastar e soltar blocos para criar seu aplicativo e integrá-lo facilmente em qualquer plataforma. Além disso, ele permite coletar resultados em tempo real, o que é uma grande vantagem.</p>
<p><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-scaled.webp" alt="" width="2560" height="1465" class="alignnone size-full wp-image-7664" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-scaled.webp 2560w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-300x172.webp 300w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-1024x586.webp 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-768x439.webp 768w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-1536x879.webp 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-2048x1172.webp 2048w" sizes="(max-width: 2560px) 100vw, 2560px" /></p>
<h4>Exemplos de Uso</h4>
<p><strong>&#8211; Coleta de Informações de Contato:</strong> Substitua seus formulários tradicionais por um chatbot que pode coletar nomes, e-mails e outros detalhes de forma interativa.<br />
<strong>&#8211; Suporte ao Cliente:</strong> Use o Typebot para responder automaticamente a perguntas frequentes e fornecer suporte em tempo real.<br />
<strong>&#8211; Integração de Usuários:</strong> Facilite o processo de integração, fornecendo aos novos usuários um guia passo a passo interativo.<br />
&#8211; Campanhas de Marketing: Utilize o Typebot em suas landing pages para aumentar as taxas de conversão e engajamento.<br />
<strong>&#8211; Pesquisas e Feedback:</strong> Colete feedback do usuário ou conduza pesquisas de forma mais envolvente e interativa.</p>
<h4>Requesitos</h4>
<p><a href="https://blog.remontti.com.br/7236" rel="noopener" target="_blank">Debian 12 bookworm (Instalação Limpa)</a></p>
<h4>DNS</h4>
<p>Crie duas entradas em seu DNS exemplo:<br />
&#8211; typebot.remontti.cum.br apontando para os IPs do servidor<br />
&#8211; typebotapi.remontti.cum.br apontando para os IPs do servidor</p>
<p>Se você<a href="https://blog.remontti.com.br/5958" rel="noopener" target="_blank"> já é da turma do blog</a> vai entender o que temos a baixo la no amigo bind9:</p>
<pre class="remontti-code-plain">typebot       A       192.168.0.100
              AAAA    2001:db8:bebe:cafe::100

typebotapi    A       192.168.0.100
              AAAA    2001:db8:bebe:cafe::100</pre>
<h4>Atualização e Instalação de Pacotes</h4>
<pre class="remontti-code"># apt update; apt upgrade -y</pre>
<p>Instale os pacotes necessários para o projeto</p>
<pre class="remontti-code"># apt install -y nodejs npm git nginx postgresql postgresql-contrib</pre>
<p>Instala globalmente os pacotes pm2 e pnpm usando npm</p>
<pre class="remontti-code"># npm install -g pm2 pnpm</pre>
<h4>Configuração do PostgreSQL</h4>
<p>Alterne para o usuário postgres</p>
<pre class="remontti-code"># su - postgres</pre>
<p>Crie um novo usuário chamado &#8216;typebot&#8217; em seguida inserira uma senha.</p>
<pre class="remontti-code">$ createuser --pwprompt typebot</pre>
<p>Crie um novo banco de dados &#8216;typebot&#8217; e define &#8216;typebot&#8217; como o proprietário</p>
<pre class="remontti-code">$ createdb -O typebot typebot</pre>
<p>Sai do usuário postgres</p>
<pre class="remontti-code">$ exit</pre>
<h4>Preparando formas de autenticação</h4>
<p>Vou deixar 3 formas que são as mais fáceis, você pode optar em usar apenas uma.</p>
<h4>Email</h4>
<p>A mais fácil de todas, basta você utilizar um email, assim toda vez que você for logar ele ira lhe mandar um e-mail com o link. </p>
<h4>Google</h4>
<p>Crie um novo projeto em <a href="https://console.developers.google.com/apis/credentials" rel="noopener" target="_blank">https://console.developers.google.com/apis/credentials</a></p>
<pre class="remontti-code-plain">
Cria um novo projeto
&gt; OAuth consent screen
	&gt; externo 
	Nome: Typebot
	User support email: seu!
	Developer contact information: seu!
	 SAVE

	 ADD OR REMOVE SCOPES
	   	.../auth/userinfo.email
	   	.../auth/userinfo.profile
	   	 SAVE

	   	 SAVE

	   	 BACK TO DASH
&gt; Credentials 
	+ CREATE CREDENTALS
	  &gt; Create OAuth client ID 
		Application type: Web application
		Name: Typebot

		Authorized redirect URIs
		https://typebot.remontti.cum.br/api/auth/callback/google

	Client ID
	Anote

	Client secret
	Anote</pre>
<p>Será usado em:</p>
<pre class="remontti-code-plain">GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=</pre>
<h4>Github</h4>
<p>Acesse <a href="https://github.com/settings/developers" rel="noopener" target="_blank">https://github.com/settings/developers</a> e clique em <strong>New OAuth Apps</strong></p>
<pre class="remontti-code-plain">Application name: Typebot
Homepage URL: https://typebot.remontti.cum.br
Application description: Typebot Auth
Authorization callback URL: https://typebot.remontti.cum.br/api/auth/callback/github</pre>
<p>Anote o <strong>Client ID</strong> e clique em <strong>Generate a new client secret</strong> anote os dois para ser usado em </p>
<pre class="remontti-code-plain">GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=</pre>
<h4>Configuração do Projeto Typebot no Servidor</h4>
<p>Vamos armazenar o projeto mo diretório /opt. </p>
<pre class="remontti-code"># cd /opt/
# git clone https://github.com/baptisteArno/typebot.io.git</pre>
<p>Entre no diretório do projeto<br />
cd typebot.io</p>
<p>Crie arquivo <strong>.env</strong> onde irá ficar as <a href="https://docs.typebot.io/self-hosting/configuration" rel="noopener" target="_blank">variáveis de ambiente</a>.</p>
<pre class="remontti-code"># vim /opt/typebot.io/.env</pre>
<p>Faça os ajustes:</p>
<pre class="remontti-code-plain"># Define a chave de criptografia (Gere aqui https://senhasegura.remontti.cum.br/)
ENCRYPTION_SECRET=i9eRecwVJQeKENqdcrQeizOXFHzQdwAp

# Define a URL de conexão com o banco de dados PostgreSQL
DATABASE_URL=postgresql://typebot:minhasupersenha@localhost:5432/typebot

# Define as URLs para autenticação e API
NEXTAUTH_URL=https://typebot.remontti.cum.br
NEXT_PUBLIC_VIEWER_URL=https://typebotapi.remontti.cum.br

# Define o e-mail do administrador
ADMIN_EMAIL=typebot@remontti.cum.br

# Define as configurações para o servidor SMTP
SMTP_USERNAME=typebot@remontti.cum.br
SMTP_PASSWORD=minhasenha
SMTP_HOST=mail.remontti.cum.br
SMTP_PORT=25
NEXT_PUBLIC_SMTP_FROM=typebot@remontti.cum.br
SMTP_SECURE=false
SMTP_AUTH_DISABLED=false

# Configurações para autenticação via Google e GitHub (opcional)
# Google
GOOGLE_CLIENT_ID=98916e5d5dd1-e3lfmixxuditlz2egexp0n8bfwf3oie3.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=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

# GitHub
GITHUB_CLIENT_ID=6ewyvfeumndg2ve5kve1
GITHUB_CLIENT_SECRET=7r78f2vpmihgriebkp7p4b0ervd4qc7ufu1uu5nx

# Permite ou desabilita o cadastro de novas contas
DISABLE_SIGNUP=false</pre>
<p>Instale todas as dependências do projeto</p>
<pre class="remontti-code"># cd /opt/typebot.io/
# pnpm install</pre>
<p>Saída:</p>
<pre class="remontti-code-plain">Scope: all 19 workspace projects
Lockfile is up to date, resolution step is skipped
Packages: +2398
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Downloading registry.npmjs.org/next/13.4.3: 12,32 MB/12,32 MB, done
[...]
[...]
[...]
devDependencies:
+ cross-env 7.0.3
+ cz-emoji 1.3.2-canary.2
+ husky 8.0.3
+ prettier 2.8.8
+ turbo 1.10.12

. prepare$ husky install
│ husky - Git hooks installed
└─ Done in 288ms
Done in 2m 12.5s</pre>
<p>Compile os aplicativos</p>
<pre class="remontti-code"># cd /opt/typebot.io/
# pnpm run build:apps</pre>
<p>Saída</p>
<pre class="remontti-code-plain">&gt; typebot-os@2.17.2 build:apps /root/typebot.io
&gt; turbo run build --filter=builder... --filter=viewer...
[...]
[...]
[...]
[...]
builder:build: ○  (Static)  automatically rendered as static HTML (uses no initial props)
builder:build: 

 Tasks:    9 successful, 9 total
Cached:    0 cached, 9 total
  Time:    5m28.928s 

⠋ ...writing to cache...  [1s] 

─────────┴──────────┴──────────┘</pre>
<p>Copie o arquivo .env para os diretórios dos aplicativos</p>
<pre class="remontti-code"># cp /opt/typebot.io/.env /opt/typebot.io/apps/builder/
# cp /opt/typebot.io/.env /opt/typebot.io/apps/viewer/</pre>
<p>Configuração e migrações do banco de dados</p>
<pre class="remontti-code"># cd /opt/typebot.io/
# pnpm prisma generate &amp;&amp; pnpm db:migrate</pre>
<p>Saída:</p>
<pre class="remontti-code-plain">Environment variables loaded from .env
prisma:warn We could not find your Prisma schema at `prisma/schema.prisma`.
If you have a Prisma schema file in a custom path, you will need to run
`prisma generate --schema=./path/to/your/schema.prisma` to generate Prisma Client.
If you do not have a Prisma schema file yet, you can ignore this message.


&gt; typebot-os@2.17.2 db:migrate /opt/typebot.io
&gt; cd packages/prisma &amp;&amp; pnpm run db:migrate


&gt; @typebot.io/prisma@0.1.0 db:migrate /opt/typebot.io/packages/prisma
&gt; pnpm migrate:deploy


&gt; @typebot.io/prisma@0.1.0 migrate:deploy /opt/typebot.io/packages/prisma
&gt; dotenv -e ./.env -e ../../.env -- tsx scripts/migrate-deploy.ts

Executing for PostgreSQL schema
┌─────────────────────────────────────────────────────────┐
│  Update available 5.0.0 -&gt; 5.3.1                        │
│  Run the following to update                            │
│    npm i --save-dev prisma@latest                       │
│    npm i @prisma/client@latest                          │
└─────────────────────────────────────────────────────────┘</pre>
<p>Inicia os aplicativos com o PM2</p>
<pre class="remontti-code"># pm2 start --name=typebotwww --cwd /opt/typebot.io/apps/builder/ &quot;pnpm -- next start -p 54001&quot;
# pm2 start --name=typebotapi --cwd /opt/typebot.io/apps/viewer/ &quot;pnpm -- next start -p 54002&quot;</pre>
<pre class="remontti-code-plain">┌────┬───────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name          │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├────┼───────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 1  │ typebotapi    │ default     │ N/A     │ fork    │ 819      │ 0s     │ 0    │ online    │ 0%       │ 10.8mb   │ root     │ disabled │
│ 0  │ typebotwww    │ default     │ N/A     │ fork    │ 760      │ 19s    │ 0    │ online    │ 0%       │ 97.2mb   │ root     │ disabled │
└────┴───────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘</pre>
<p>Salva a configuração atual do PM2 e configura para iniciar com o sistema</p>
<pre class="remontti-code"># pm2 save
# pm2 startup</pre>
<h5>Configuração do Nginx</h5>
<p>Cria os arquivos de configuração do Nginx para os subdomínios</p>
<pre class="remontti-code"># vim /etc/nginx/sites-available/typebot.remontti.cum.br.conf</pre>
<pre class="remontti-code-plain">
server {
    listen 80;
    listen [::]:80;
 
    server_name typebot.remontti.cum.br;

    location / {
        proxy_pass http://localhost:54001;
        proxy_set_header Host $host;
    }
}

</pre>
<pre class="remontti-code"># vim /etc/nginx/sites-available/typebotapi.remontti.cum.br.conf</pre>
<pre class="remontti-code-plain">
server {
    listen 80;
    listen [::]:80;
 
    server_name typebotapi.remontti.cum.br;
 
    location / {
        proxy_pass http://localhost:54002;
        proxy_set_header Host $host;
    }
}
</pre>
<p>Ativa os sites no Nginx</p>
<pre class="remontti-code"># ln -s /etc/nginx/sites-available/typebot.remontti.cum.br.conf /etc/nginx/sites-enabled/
# ln -s /etc/nginx/sites-available/typebotapi.remontti.cum.br.conf /etc/nginx/sites-enabled/
# rm /etc/nginx/sites-enabled/default</pre>
<p>Verifica a sintaxe e reinicia o Nginx</p>
<pre class="remontti-code"># nginx -t
# systemctl restart nginx</pre>
<h5>Configuração do Certbot/Let&#8217;s Encrypt para HTTPS</h5>
<p>Instala o Certbot e o plugin do Nginx</p>
<pre class="remontti-code"># apt install certbot python3-certbot-nginx</pre>
<p>Executa o Certbot para obter os certificados SSL</p>
<pre class="remontti-code">certbot</pre>
<p>Responda: </p>
<pre class="remontti-code-plain">Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter &#039;c&#039; to cancel): noc@remontti.cum.br

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y &lt;&lt;&lt;&lt;&lt;

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let&#039;s Encrypt project and the non-profit organization that
develops Certbot? We&#039;d like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N &lt;&lt;&lt;&lt;
Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: typebotapi.remontti.cum.br
2: typebot.remontti.cum.br
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter &#039;c&#039; to cancel):  &lt;&lt;&lt;&lt;
Requesting a certificate for typebotapi.remontti.cum.br and typebot.remontti.cum.br

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/typebotapi.remontti.cum.br/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/typebotapi.remontti.cum.br/privkey.pem
This certificate expires on 2023-12-20.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for typebotapi.remontti.cum.br to /etc/nginx/sites-enabled/typebotapi.remontti.cum.br.conf
Successfully deployed certificate for typebot.remontti.cum.br to /etc/nginx/sites-enabled/typebot.remontti.cum.br.conf
Congratulations! You have successfully enabled HTTPS on https://typebotapi.remontti.cum.br and https://typebot.remontti.cum.br

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let&#039;s Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</pre>
<h5>Configuração do Cron para Renovação Automática do Certificado SSL.</h5>
<p>Adicione uma tarefa cron para renovar automaticamente o certificado SSL todo dia 1 de cada mês à meia-noite, e reinicie o cron.</p>
<pre class="remontti-code"># echo &#039;00 00   1 * *   root    /usr/bin/certbot renew -q&#039; &gt;&gt; /etc/crontab
# systemctl restart cron.service</pre>
<h5>Acessando a aplicação</h5>
<p>Abra seu navegador e acesse: https://typebot.remontti.cum.br<br />
<img decoding="async" src="https://blog.remontti.cum.br/wp-content/uploads/2023/09/typebot-remontti.png" alt="" width="900" height="403" class="alignnone size-full wp-image-7661" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti.png 900w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-300x134.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-768x344.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></p>
<p>Clique em <strong>Registre-se gratuitamente</strong><br />
Escolha a forma desejada.</p>
<h4><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2757.png" alt="❗" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2757.png" alt="❗" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2757.png" alt="❗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </h4>
<p>Os registros <strong>ficam aberto</strong>, então registre toda sua equipe e em seguida desativa a possibilidade de novos registros nos arquivos .env (<strong>DISABLE_SIGNUP=true</strong>)<br />
Com o comando sed</p>
<pre class="remontti-code"># sed -i &#039;s/DISABLE_SIGNUP=false/DISABLE_SIGNUP=true/&#039; /opt/typebot.io/.env
# sed -i &#039;s/DISABLE_SIGNUP=false/DISABLE_SIGNUP=true/&#039; /opt/typebot.io/apps/viewer/.env
# sed -i &#039;s/DISABLE_SIGNUP=false/DISABLE_SIGNUP=true/&#039; /opt/typebot.io/apps/builder/.env</pre>
<p>Reinicie o pm2 </p>
<pre class="remontti-code"># systemctl restart pm2-root.service</pre>
<p>Se deseja realizar novos cadastros basta alterar <strong>DISABLE_SIGNUP=true</strong> para <strong>DISABLE_SIGNUP=false</strong> e reiniciar novamente.</p>
<pre class="remontti-code"># sed -i &#039;s/DISABLE_SIGNUP=true/DISABLE_SIGNUP=false/&#039; /opt/typebot.io/.env
# sed -i &#039;s/DISABLE_SIGNUP=true/DISABLE_SIGNUP=false/&#039; /opt/typebot.io/apps/viewer/.env
# sed -i &#039;s/DISABLE_SIGNUP=true/DISABLE_SIGNUP=false/&#039; /opt/typebot.io/apps/builder/.env</pre>
<p>Reinicie o pm2 </p>
<pre class="remontti-code"># systemctl restart pm2-root.service</pre>
<p>Se desejar fazer alterações faça os arquivos:</p>
<pre class="remontti-code-plain">/opt/typebot.io/.env
/opt/typebot.io/apps/viewer/.env
/opt/typebot.io/apps/builder/.env</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.cum.br/wp-content/uploads/2023/09/typebot-remontti-1.png" alt="" width="1050" height="411" class="alignnone size-full wp-image-7662" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-1.png 1050w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-1-300x117.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-1-1024x401.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-1-768x301.png 768w" sizes="auto, (max-width: 1050px) 100vw, 1050px" /></p>
<p>A parte mais complicada está feita!<br />
Existe vários videos no <a href="https://www.youtube.com/results?search_query=typebot" rel="noopener" target="_blank">YouTube</a> sobre como mexer nessa criança. Inclusive no <a href="https://www.youtube.com/@typebot4666" rel="noopener" target="_blank">canal oficial </a>dos desenvolvedores. <em>Dica ative a legenda e selecione traduzir!</em></p>
<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/jp3ggg_42-M?si=xPi09hAm6AqyZfcU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></p>
<p>Gostou e quer me ajudar manter o blog sem a inconveniência de anúncios intrusivos ou a imposição de taxas? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.cum.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.cum.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p><strong>Fonte:</strong><br />
<a href="https://docs.typebot.io/" rel="noopener" target="_blank">https://docs.typebot.io/</a></p>
<p>O post <a href="https://blog.remontti.com.br/7656">Guia Passo a Passo para Instalar o Typebot em seu servidor próprio</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7656/feed</wfw:commentRss>
			<slash:comments>17</slash:comments>
		
		
			</item>
		<item>
		<title>Guia passo a passo: Instalando NFDUMP, NFSEN e NFSEN-NG para Análise de Fluxo de Rede no Debian 12 Bookworm</title>
		<link>https://blog.remontti.com.br/7610</link>
					<comments>https://blog.remontti.com.br/7610#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 11 Jul 2023 22:13:53 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Administração de Rede]]></category>
		<category><![CDATA[Análise]]></category>
		<category><![CDATA[Análise de Segurança]]></category>
		<category><![CDATA[Análise de Tráfego]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[Debian 12 Bookworm]]></category>
		<category><![CDATA[Debian12]]></category>
		<category><![CDATA[Ferramentas de Análise]]></category>
		<category><![CDATA[Ferramentas de Rede]]></category>
		<category><![CDATA[Fluxo de Rede]]></category>
		<category><![CDATA[Gerenciamento de Tráfego]]></category>
		<category><![CDATA[GuiaPassoAPasso]]></category>
		<category><![CDATA[instalaçao]]></category>
		<category><![CDATA[monitoramento]]></category>
		<category><![CDATA[Monitoramento de Tráfego]]></category>
		<category><![CDATA[NFDUMP]]></category>
		<category><![CDATA[NFSEN]]></category>
		<category><![CDATA[NFSEN-NG]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[software livre]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7610</guid>

					<description><![CDATA[<p>Neste tutorial você adquirirá conhecimentos e habilidades relacionadas à análise de fluxo de rede bem como a área de segurança. Você poderá examinar os dados de fluxo de rede capturados e identificar padrões, tendências&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7610">Guia passo a passo: Instalando NFDUMP, NFSEN e NFSEN-NG para Análise de Fluxo de Rede no Debian 12 Bookworm</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-nfsen-nfsen-ng-nfcap-debian-12-bokworm.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7619" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-nfsen-nfsen-ng-nfcap-debian-12-bokworm.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-nfsen-nfsen-ng-nfcap-debian-12-bokworm-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-nfsen-nfsen-ng-nfcap-debian-12-bokworm-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Neste tutorial você adquirirá conhecimentos e habilidades relacionadas à análise de fluxo de rede bem como a área de segurança. Você poderá examinar os dados de fluxo de rede capturados e identificar padrões, tendências e anomalias no tráfego de rede. Isso pode ajudar a detectar atividades suspeitas, como ataques cibernéticos, tráfego malicioso ou congestionamentos.</p>
<h4>Distribuição Utilizada</h4>
<p><strong><a href="https://blog.remontti.com.br/7236" rel="noopener" target="_blank">Debian 12 bookworm (Instalação Limpa)</a></strong></p>
<h4>Requisitos de hardware</h4>
<p>Para o que vamos utilizar aqui não precisamos nada tão agressivo, porém o armazenamento vai depender muito de quanto tempo você for deixar salvo, em média você pode colocar 2GB a 4GB (por source) de dados por dias (mas isso é bem relativo), em questão de CPU e memoria 2 CPU e 2GB de memória já da conta, mas se puder coloca mais melhor para processar os dados.</p>
<h4>Pacotes Requeridos</h4>
<pre class="remontti-code"># apt install \
 curl wget unzip man-db tcpdump htop tree dialog git \
 build-essential autoconf pkg-config flex byacc bison \
 php php-dev apache2 libapache2-mod-php autogen \
 libtool librrd-dev libbz2-dev libpcap-dev rrdtool \
 libcurl4-openssl-dev librrds-perl libsocket6-perl \
 librrdp-perl libio-socket-inet6-perl libmailtools-perl \
 libnet-telnet-perl libnet-whois-ip-perl libnet-snmp-perl \
 libio-socket-ssl-perl libgd-perl git -y</pre>
<p>Crie o diretório onde iremos baixar nossos arquivos extras</p>
<pre class="remontti-code"># mkdir /root/nf</pre>
<h3>NFDUMP</h3>
<p><strong><a href="https://github.com/phaag/nfdump" rel="noopener" target="_blank">NFDUMP</a></strong> é um conjunto de ferramentas para coletar e processar dados netflow/ipfix e sflow, enviados de dispositivos compatíveis com netflow/sflow.</p>
<p>O conjunto de ferramentas contém vários coletores para coletar dados de fluxo:</p>
<ul>
<li>nfcapd suporta netflow v1, v5/v7, v9 e IPFIX</li>
<li>sfcapd suporta sflow.</li>
<li>nfpcapd converte dados pcap lidos de uma interface de host ou de arquivos pcap.</li>
</ul>
<p>O nfdump possui um filtro de fluxo muito poderoso para processar fluxos. A sintaxe do filtro é muito semelhante ao tcpdump, mas adaptada e estendida para filtragem de fluxo. Um filtro de fluxo também pode conter matrizes de muitos milhares de endereços IP, etc., para pesquisar registros específicos.</p>
<p>O nfdump pode agregar fluxos de acordo com um número de elementos definido pelo usuário. Isso mascara certos elementos e permite somar registros de fluxo correspondentes aos mesmos valores.</p>
<p>A combinação de filtragem e agregação de fluxo como entrada para qualquer estatística de fluxo permite processamento de fluxo complexo. Os dados de fluxo pré-filtrados e agregados também podem ser gravados de volta em um arquivo de fluxo binário, que novamente pode ser processado com nfdump</p>
<p>O nfdump pode enriquecer a listagem de fluxos com informações de localização geográfica e informações de AS, a menos que as informações de AS já estejam disponíveis nos registros de fluxo. Os endereços IP podem ser marcados com um código de país de duas letras ou com uma etiqueta de localização mais longa contendo a região geográfica, o país e a cidade. A localização geográfica e as informações AS são recuperadas do banco de dados geoDB opcional, criado pelo programa geolookup das ferramentas nfdump. geolookup usa o banco de dados Maxmind GeoDB ou GeoLite2 para criar um banco de dados de pesquisa binária para nfdump.</p>
<p><strong>Instalação:</strong><br />
O nfdump até se encontra no repositório do Debian 12 (na versão 1.7.1) como um serviço de coleta, como a ideia é mais voltada a depois utilizar o nfsen, irei baixar a ultima versão que inclusive tem alguns recursos interessantes que você pode se aprofundar posteriormente.  </p>
<pre class="remontti-code"># mkdir /root/nf
# cd /root/nf
# git clone https://github.com/phaag/nfdump.git
# cd nfdump
# ./autogen.sh</pre>
<p>Na compilação podemos ativar algumas features adicionais, para ver mais sobre use o comando:</p>
<pre class="remontti-code"># ./configure --help</pre>
<p>Estarei instalando as seguintes: (&#8211;enable-influxdb &#8211;enable-maxmind opcional)</p>
<pre class="remontti-code"># ./configure --enable-nfprofile --enable-nftrack --enable-jnat --enable-influxdb --enable-maxmind 
# make ; make install</pre>
<p>Atualize o cache das bibliotecas dinâmicas.</p>
<pre class="remontti-code"># ldconfig</pre>
<p>Iremos ter uma lista de novos binários em /usr/local/bin/</p>
<pre class="remontti-code-plain">├── geolookup
├── nfanon
├── nfcapd
├── nfdump
├── nfexpire
├── nfprofile
├── nfreplay
├── nftrack
└── updateGeoDB.sh</pre>
<p>Configure seu roteador para enviar dados de netflow para porta 2055, e com o comando a baixo vamos analisar se os mesmo estão chegando em nosso servidor e capturados pelo nfcap.</p>
<pre class="remontti-code"># nfcapd -E -p 2055 -w /tmp/</pre>
<pre class="remontti-code-plain">
Verbose log level: 3
Add flow source: ident: none, IP: any IP, flowdir: /tmp
Bound to IPv4 host/IP: any, Port: 2055
Init v1
Init v5/v7: Default sampling: 1
Init v9: Max number of v9 tags enabled: 105, default sampling: 1
Init IPFIX: Max number of ipfix tags enabled: 88, default sampling: 1
Startup nfcapd.
Process_v9: New v9 exporter: SysID: 1, Domain: 2166325505, IP: 10.10.10.255
Process_v9: New v9 exporter: SysID: 2, Domain: 18841857, IP: 10.10.10.255
^CFile Block Header: type: 3, size: 64, NumRecords: 2
Ident: &#039;none&#039; Flows: 0, Packets: 0, Bytes: 0, Sequence Errors: 0, Bad Packets: 0
Terminating nfcapd.
</pre>
<p><strong>Ctrl+C</strong> Para cancelar (Não precisa deixar em execução, deixe apenas alguns segundos para ver se esta chegando os flows)</p>
<pre class="remontti-code"># ls -lh /tmp/nfcapd.*</pre>
<p>Se tudo ocorreu bem você ira ter uma arquivo da captura com o nome nfcapd.AAAAMMDDHHMM [ANO MÊS DIA HORA MINUTO]</p>
<pre class="remontti-code-plain">-rw-r--r-- 1 root root 149K jul 11 14:54 /tmp/nfcapd.202307111450</pre>
<p>Nfdump é muito poderoso, para dar apenas uma provinha do que estamos falando testes os comandos a baixo para visualizar as saídas. O ultimo comando você vai gostar!</p>
<pre class="remontti-code"># nfdump -r /tmp/nfcapd.202307111450
# nfdump -r /tmp/nfcapd.202307111450 dst ip 8.8.8.8
# nfdump -r /tmp/nfcapd.202307111450 dst ip 8.8.8.8 and dst port 53
# nfdump -r /tmp/nfcapd.202307111500 dst port 80 or dst port 443 -s srcip/bytes
# nfdump -r /tmp/nfcapd.202307111450 -s record/bytes
# nfdump -r /tmp/nfcapd.202307111450 -s dstip/bytes
# nfdump -r /tmp/nfcapd.202307111450 -s dstas/bytes
# nfdump -r /tmp/nfcapd.202307111450 -s dstas/bytes
# nfdump -r /tmp/nfcapd.202307111450 &#039;net 200.200.200.0/22 and (dst port 80 or dst port 443)&#039; -s dstas/bytes -n 20</pre>
<p>Para mais informações de como utiliza-lo use comando <strong>man</strong> para ver o manual do nfdump.</p>
<pre class="remontti-code"># man nfdump</pre>
<p>Mas não se preocupe ainda em aprender todas as possibilidades, para isso vamos aprender agora utilizar duas ferramentar que poderão ser uteis para você. Mas ler <a href="https://blog.remontti.com.br/wp-content/uploads/2023/07/NFDUMP.txt" rel="noopener" target="_blank">esse manual</a> não vai cair o braço. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f602.png" alt="😂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h3>NFSEN</h3>
<p>O <a href="https://github.com/phaag/nfsen" rel="noopener" target="_blank">NfSen</a> é uma ferramenta de código aberto para análise e visualização de dados de fluxo de rede. Com uma interface web intuitiva (estilo anos 90 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f602.png" alt="😂" class="wp-smiley" style="height: 1em; max-height: 1em;" />), ele coleta registros de fluxo de diferentes dispositivos e os apresenta de forma compreensível. Além disso, oferece recursos avançados, como detecção de ataques e armazenamento de dados de fluxo histórico, tornando-o uma opção popular para monitoramento e solução de problemas em redes de grande porte.</p>
<pre class="remontti-code"># cd /root/nf
# wget https://github.com/phaag/nfsen/archive/v1.3.9.tar.gz
# tar -vxzf v1.3.9.tar.gz
# cd nfsen-1.3.9
# sed -i &#039;s/\$USER\s*=\s*&quot;netflow&quot;;/\$USER    = &quot;www-data&quot;;/&#039; etc/nfsen-dist.conf
# sed -i &#039;s/\$WWWUSER\s*=\s*&quot;www&quot;;/\$WWWUSER  = &quot;www-data&quot;;/&#039; etc/nfsen-dist.conf
# sed -i &#039;s/\$WWWGROUP\s*=\s*&quot;www&quot;;/\$WWWGROUP = &quot;www-data&quot;;/&#039; etc/nfsen-dist.conf
# sed -i &#039;s/\$HTMLDIR\s*=\s*&quot;\/var\/www\/nfsen\/&quot;;/\$HTMLDIR    = &quot;\/var\/www\/html\/nfsen\/&quot;;/&#039; etc/nfsen-dist.conf
# sed -i &#039;s/\$BUFFLEN = 200000;/\$BUFFLEN = 1073741824;/&#039; etc/nfsen-dist.conf</pre>
<p>Vamos definir nosso enviadores de fluxos (sim você pode enviar de vários locais)</p>
<pre class="remontti-code"># vim etc/nfsen-dist.conf</pre>
<p>Procure pela seguintes linhas:</p>
<pre class="remontti-code-plain">
%sources = (
    &#039;Borda&#039;        =&gt; { &#039;port&#039; =&gt; &#039;2055&#039;, &#039;col&#039; =&gt; &#039;#0D47A1&#039;, &#039;type&#039; =&gt; &#039;netflow&#039; },
    &#039;Cgnat&#039;        =&gt; { &#039;port&#039; =&gt; &#039;3055&#039;, &#039;col&#039; =&gt; &#039;#B71C1C&#039;, &#039;type&#039; =&gt; &#039;netflow&#039; },
);
</pre>
<p>No exemplo acima estarei incluindo analise do meu <strong>Cgnat</strong> para fins de investigação de problemas <strong>(Mas se prepare que os arquivos capturados serão gigantes</strong>). Vale lembrar que para <strong>cada source a porta não pode ser a mesma</strong>!</p>
<p>Caso você queira adicionar ou remover um novo source edite o arquivo <strong>/data/nfsen/etc/nfsen.conf</strong> e rode o comando <strong>/data/nfsen/bin/nfsen reconfig</strong></p>
<p>Vamos criar o diretório /data/nfsen onde ficarão nossos dados do sistema.</p>
<pre class="remontti-code"># mkdir -p /data/nfsen
# ./install.pl etc/nfsen-dist.conf</pre>
<p>De um ENTER ao perguntar:  Perl to use: [/usr/bin/perl]</p>
<pre class="remontti-code-plain">
  Check for required Perl modules: All modules found.
  Setup NfSen:
  Version: 1.3.9: install.pl 2022-12-19

  Perl to use: [/usr/bin/perl]  [ENTER]
  Setup php and html files.
  mkdir /var/www/html/nfsen/

  Copy NfSen dirs etc bin libexec plugins doc ...
  Copy config file &#039;/etc/nfsen.conf&#039;

  In directory: /data/nfsen/bin ...
  Update script: nfsen
...
...</pre>
<p>Vamos ajustar o <a href="https://www.php.net/manual/pt_BR/timezones.america.php" rel="noopener" target="_blank">timezone</a> do PHP</p>
<pre class="remontti-code"># vim /etc/php/8.2/apache2/php.ini</pre>
<p>Localize e altere: (remova &#8220;;&#8221; do início para descomentar)</p>
<pre class="remontti-code-plain">date.timezone = &#039;America/Sao_Paulo&#039;</pre>
<pre class="remontti-code"># vim /etc/php/8.2/cli/php.ini</pre>
<p>Localize e altere:</p>
<pre class="remontti-code-plain">date.timezone = &#039;America/Sao_Paulo&#039;</pre>
<p>Reinicie p apache</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Agora vamos criar um serviço no systemd para nosso amigo nfsen </p>
<pre class="remontti-code"># ln -s /data/nfsen/bin/nfsen /etc/init.d/nfsen</pre>
<p>Crie o arquivo:</p>
<pre class="remontti-code"># vim /lib/systemd/system/nfsen.service</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">[Unit]
Description=nfsen
After=network-online.target

[Service]
Type=simple
#Type=oneshot
RemainAfterExit=yes
ExecStart=/data/nfsen/bin/nfsen start
ExecStop=/data/nfsen/bin/nfsen stop
ExecReload=/data/nfsen/bin/nfsen restart
 
[Install]
WantedBy=multi-user.target</pre>
<p>Recarregue o daemon e vamos por para rodar </p>
<pre class="remontti-code"># systemctl daemon-reload
# systemctl enable nfsen
# systemctl start nfsen
# systemctl status nfsen</pre>
<p>Verificar logs</p>
<pre class="remontti-code"># journalctl -u nfsen 
# journalctl -u nfsen -p err</pre>
<p>Vamos ver se as portas estão na escuta</p>
<pre class="remontti-code"># ss -putan | grep nfcapd</pre>
<pre class="remontti-code-plain">
udp   UNCONN 0      0     0.0.0.0:2055     0.0.0.0:*     users:((&quot;nfcapd&quot;,pid=20756,fd=3))
udp   UNCONN 0      0     0.0.0.0:3055     0.0.0.0:*     users:((&quot;nfcapd&quot;,pid=20752,fd=3))</pre>
<p>Se quiser testar se algo esta chegando o tcpdump pode ser uma boa escolha também.</p>
<pre class="remontti-code"># tcpdump -i enp0s3 -n udp port 2055 -T cnfp -c 10
# tcpdump -i enp0s3 -n udp port 3055 -T cnfp -c 10
</pre>
<p><strong>Vamos entender como os dados vão ser armazenados</strong><br />
Em /data/nfsen/profiles-data/live/ todos nossos sources terão uma pasta, outra pasta com ano, mes, dia. Cada arquivos criado tem um intervalo de 5 minutos. Aguarde uns 15min e rode o seguinte comando:</p>
<pre class="remontti-code"># tree /data/nfsen/profiles-data/live/</pre>
<p>Iremos ver que alguns arquivos e diretórios já foram criados. </p>
<pre class="remontti-code-plain">
├── Borda
│   ├── 2023
│   │   └── 07
│   │       └── 11
│   │           ├── nfcapd.202307111600
│   │           ├── nfcapd.202307111605
│   │           ├── nfcapd.202307111610
│   │           ├── nfcapd.202307111615
│   │           └── nfcapd.202307111620
│   └── nfcapd.current.29124
└── Cgnat
    ├── 2023
    │   └── 07
    │       └── 11
    │           ├── nfcapd.202307111600
    │           ├── nfcapd.202307111605
    │           ├── nfcapd.202307111610
    │           ├── nfcapd.202307111615
    │           └── nfcapd.202307111620
    └── nfcapd.current.29128

9 directories, 12 files
</pre>
<p>Projeto não tem uma index então para não precisar informar na url nfsen.php crie um atalho apontando para index.php</p>
<pre class="remontti-code"># ln -s /var/www/html/nfsen/nfsen.php /var/www/html/nfsen/index.php</pre>
<p>Agora acesse: <strong>http://__endereco_servidor/nfsen/</strong><br />
E temos nossa bela interface anos 90! Não me preocupo com isso, a ferramenta é o que importa. Recomendo você dar uma olha na <a href="https://nfsen.sourceforge.net/#mozTocId391879" rel="noopener" target="_blank">documentação</a>.</p>
<h3>NFSEN-NG</h3>
<p>O projeto <a href="https://github.com/mbolli/nfsen-ng" rel="noopener" target="_blank">NfSen-NG</a> é uma implementação melhorada do NfSen, que oferece recursos avançados para coleta, análise e visualização de dados de tráfego de rede. Com sua interface web intuitiva e poderosa, o &#8220;nfsen-ng&#8221; permite aos usuários monitorar e analisar o tráfego em tempo real, realizar pesquisas detalhadas em dados históricos e criar relatórios personalizados, facilitando a detecção de problemas, a análise de desempenho e a tomada de decisões relacionadas à rede.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12.png" alt="" width="1199" height="778" class="alignnone size-full wp-image-7613" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12.png 1199w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-300x195.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-1024x664.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-768x498.png 768w" sizes="auto, (max-width: 1199px) 100vw, 1199px" /></p>
<pre class="remontti-code"># cd /var/www/html
# git clone https://github.com/mbolli/nfsen-ng /var/www/html/nfsen-ng
# cd /var/www/html/nfsen-ng/
# chmod +x backend/cli.php
# cp backend/settings/settings.php.dist backend/settings/settings.php
# mkdir /var/www/html/nfsen-ng/backend/datasources/data/
# chown -R www-data: /var/www/html/nfsen-ng/</pre>
<p>Vamos fazer alguns ajustes para ler nossa mesma base de dados do nfsen.</p>
<pre class="remontti-code"># vim backend/settings/settings.php</pre>
<p>Localize os sources.</p>
<pre class="remontti-code-plain">        &#039;sources&#039; =&gt; array(
            &#039;source1&#039;, &#039;source2&#039;,
        ),</pre>
<p>Informe os seus:</p>
<pre class="remontti-code-plain">        &#039;sources&#039; =&gt; array(
            &#039;Borda&#039;, &#039;Cgnat&#039;,
        ),</pre>
<p>Se desejar incluir algumas porta para analisar os gráficos.</p>
<pre class="remontti-code-plain">
        &#039;ports&#039; =&gt; array(
            80, 22, 53,
        ),</pre>
<p>No meu vou alterar para:</p>
<pre class="remontti-code-plain">        &#039;ports&#039; =&gt; array(
            0, 22, 53, 80, 443,
        ),</pre>
<p>Localize e altere:</p>
<pre class="remontti-code-plain">        &#039;binary&#039; =&gt; &#039;/usr/bin/nfdump&#039;,
        &#039;profiles-data&#039; =&gt; &#039;/var/nfdump/profiles-data&#039;,</pre>
<p>Por</p>
<pre class="remontti-code-plain">        &#039;binary&#039; =&gt; &#039;/usr/local/bin/nfdump&#039;,
        &#039;profiles-data&#039; =&gt; &#039;/data/nfsen/profiles-data&#039;,</pre>
<p>Enable apache modules</p>
<pre class="remontti-code"># a2enmod rewrite expires</pre>
<p>Configure a biblioteca RRD para o PHP</p>
<pre class="remontti-code"># pecl install rrd
# echo &quot;extension=rrd.so&quot; &gt; /etc/php/8.2/mods-available/rrd.ini
# phpenmod rrd</pre>
<p>Configure virtual host para ler o .htaccess</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/000-default.conf</pre>
<p>Deve ficar assim:</p>
<pre class="remontti-code-plain">&lt;VirtualHost *:80&gt;
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    &lt;Directory /var/www/html/&gt;
        Options FollowSymLinks Indexes
        AllowOverride All
    &lt;/Directory&gt;

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
&lt;/VirtualHost&gt;</pre>
<p>Reinicie o serviço web</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Vamos criar um &#8220;serviço&#8221; no systemd para iniciar o /var/www/html/nfsen-ng/backend/cli.php. </p>
<pre class="remontti-code"># vim /lib/systemd/system/nfsen-ng.service</pre>
<p>Adicione?</p>
<pre class="remontti-code-plain">[Unit]
Description=nfsen-ng
After=network-online.target
 
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=su - www-data --shell=/bin/bash -c &#039;/var/www/html/nfsen-ng/backend/cli.php start&#039;
ExecStop=su - www-data --shell=/bin/bash -c &#039;/var/www/html/nfsen-ng/backend/cli.php stop&#039;
 
[Install]
WantedBy=multi-user.target</pre>
<p>Recarregue o daemon e vamos por para rodar</p>
<pre class="remontti-code"># systemctl daemon-reload
# systemctl enable nfsen-ng
# systemctl start nfsen-ng
# systemctl status nfsen-ng</pre>
<p>Acesse agora: <strong>http://__endereco__/nfsen-ng/</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph.png" data-rel="lightbox-gallery-qt0smI9S" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph.png" alt="" width="2560" height="967" class="alignnone size-full wp-image-7614" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph.png 2560w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph-300x113.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph-1024x387.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph-768x290.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph-1536x580.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph-2048x774.png 2048w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph-1320x500.png 1320w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat.png" data-rel="lightbox-gallery-qt0smI9S" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat.png" alt="" width="1920" height="1059" class="alignnone size-full wp-image-7615" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat-300x165.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat-1024x565.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat-768x424.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat-1536x847.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a></p>
<p>Utilizando um filtro Ex: &#8220;dst as 15169 OR dst as 2906 OR dst as 32934&#8221; obtém um informações com destino aos 3 AS.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2.png" data-rel="lightbox-gallery-qt0smI9S" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2.png" alt="" width="1920" height="992" class="alignnone size-full wp-image-7616" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2-300x155.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2-1024x529.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2-768x397.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2-1536x794.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a><br />
Se notar na parte verde temos o comando executado no terminal</p>
<pre class="remontti-code"># nfdump -M &#039;/data/nfsen/profiles-data/live/Borda&#039; -R &#039;2023/07/11/nfcapd.202307111605:2023/07/11/nfcapd.202307111730&#039; -s &#039;dstas/pps&#039; &#039;dst as 15169 OR dst as 2906 OR dst as 32934&#039;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix.png" data-rel="lightbox-gallery-qt0smI9S" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix.png" alt="" width="2292" height="316" class="alignnone size-full wp-image-7617" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix.png 2292w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix-300x41.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix-1024x141.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix-768x106.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix-1536x212.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix-2048x282.png 2048w" sizes="auto, (max-width: 2292px) 100vw, 2292px" /></a><br />
Pode ser um bom &#8220;meio de você aprender os comandos&#8221;. </p>
<p>Algo legal do NfSen-Ng é que ele tem uma API: <strong>http://__endereco__//nfsen-ng/api/config</strong> de uma lida em <a href="https://github.com/mbolli/nfsen-ng/blob/master/README.md" rel="noopener" target="_blank">https://github.com/mbolli/nfsen-ng/blob/master/README.md</a> como utiliza, com um pouco de imaginação você pode fazer algumas coisas bem legais.</p>
<h4>Script para ir apagando arquivos mais antigos</h4>
<pre class="remontti-code"># mkdir /root/scripts/
# vim /root/scripts/faxina_nf.sh</pre>
<p>Adicione (ajuste os dias para realidade do seu disco)</p>
<pre class="remontti-code-plain">#!/bin/bash
  
# Defina o diretório do NFSen
nf_dir=&quot;/data/nfsen/profiles-data/live/&quot;

#Define o número de dias a ser removido
ref_date=$(date -d &#039;60 days ago&#039; +%Y%m%d)

# Ativar o modo de depuração
debug=false

# Percorre os diretórios e exclui os arquivos antigos
find &quot;$nf_dir&quot; -type f -name &#039;nfcapd.*&#039; | while read -r file; do
    # Obtém a data do arquivo em vez do diretório
    file_date=$(date -r &quot;$file&quot; +%Y%m%d)
    if [[ &quot;$file_date&quot; -lt &quot;$ref_date&quot; ]]; then
        if [[ &quot;$debug&quot; = true ]]; then
            echo &quot;$(date -r &quot;$file&quot;) - $file excluído&quot;
        fi
        rm &quot;$file&quot;
    fi
done</pre>
<p>Agende o script para roda todos os dias as 4h da manhã</p>
<pre class="remontti-code"># crontab -e</pre>
<p>Adcione</p>
<pre class="remontti-code-plain">
# m h  dom mon dow   command
# Apaga coletas
00 04  *   *   *     /root/scripts/faxina_nf.sh</pre>
<p>Reinicie o cron</p>
<pre class="remontti-code"># systemctl  restart cron</pre>
<p>Para verificar o tamanho do diretório use o comando</p>
<pre class="remontti-code"># du -sh /data/nfsen/profiles-data/live/</pre>
<p>E para ver o disco use:</p>
<pre class="remontti-code"># df -h</pre>
<p>Gostou e quer me ajudar manter o blog? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p><strong>Fonte:</strong><br />
<a href="https://github.com/phaag/nfdump" rel="noopener" target="_blank">https://github.com/phaag/nfdump</a><br />
<a href="https://github.com/phaag/nfsen" rel="noopener" target="_blank">https://github.com/phaag/nfsen</a><br />
<a href="https://nfsen.sourceforge.net/#mozTocId391879" rel="noopener" target="_blank">https://nfsen.sourceforge.net/</a><br />
<a href="https://github.com/mbolli/nfsen-ng" rel="noopener" target="_blank">https://github.com/mbolli/nfsen-ng</a><br />
<a href="https://github.com/phaag/nfinflux" rel="noopener" target="_blank">https://github.com/phaag/nfinflux</a><br />
<a href="https://github.com/phaag/nfexporter" rel="noopener" target="_blank">https://github.com/phaag/nfexporter</a><br />
<a href="https://github.com/phaag/go-nfdump" rel="noopener" target="_blank">https://github.com/phaag/go-nfdump</a></p>
<p>O post <a href="https://blog.remontti.com.br/7610">Guia passo a passo: Instalando NFDUMP, NFSEN e NFSEN-NG para Análise de Fluxo de Rede no Debian 12 Bookworm</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7610/feed</wfw:commentRss>
			<slash:comments>29</slash:comments>
		
		
			</item>
		<item>
		<title>Um pouco do meu ambiente de trabalho com Debian 12 Bookworm e Gnome 43</title>
		<link>https://blog.remontti.com.br/7512</link>
					<comments>https://blog.remontti.com.br/7512#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Mon, 19 Jun 2023 23:13:31 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[AmbienteDeTrabalho]]></category>
		<category><![CDATA[Aplicativos]]></category>
		<category><![CDATA[Artigo]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[Comunidade.]]></category>
		<category><![CDATA[Configuração]]></category>
		<category><![CDATA[ConfiguraçõesAvançadas]]></category>
		<category><![CDATA[Customização]]></category>
		<category><![CDATA[Debian12]]></category>
		<category><![CDATA[Desempenho]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[Estabilidade]]></category>
		<category><![CDATA[Experiência]]></category>
		<category><![CDATA[Extensões]]></category>
		<category><![CDATA[GerenciadorDeArquivos]]></category>
		<category><![CDATA[Gnome43]]></category>
		<category><![CDATA[Inovação]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[Multitarefa]]></category>
		<category><![CDATA[NavegadorWeb]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Personalização]]></category>
		<category><![CDATA[produtividade]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[SistemaOperacional]]></category>
		<category><![CDATA[SoftwareLivre]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[tema]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[Usabilidade]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7512</guid>

					<description><![CDATA[<p>Voltando ao Debian ❤️ Desde o tempo que a distribuição Kurumin era &#8220;gente&#8221; (minha primeira experiência com linux) tenho um grande apreço por este mundo. Acabei de sair do Ubuntu 22, que não deixa&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7512">Um pouco do meu ambiente de trabalho com Debian 12 Bookworm e Gnome 43</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/remontti_debian_12.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7529" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/remontti_debian_12.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/06/remontti_debian_12-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/remontti_debian_12-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Voltando ao Debian <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2764.png" alt="❤" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<p>Desde o tempo que a distribuição Kurumin era &#8220;gente&#8221; (minha primeira experiência com linux) tenho um grande apreço por este mundo. Acabei de <a href="https://blog.remontti.com.br/6853" rel="noopener" target="_blank">sair do Ubuntu 22</a>, que não deixa de ser um &#8220;Debian 12&#8221;, pois ele é totalmente baseado nele. Já comentei sobre os motivos que acabei utilizando ubuntu no artigo <em><a href="https://blog.remontti.com.br/6853" rel="noopener" target="_blank">Como é meu desktop de trabalho com Ubuntu</a></em>. </p>
<p>Eu não utilizo o PC para jogar e o intuito aqui é para meus amigos e colegas da área mais de telecom que utilizam mais para trabalho. Como tenho acesso a muitos servidores e roteador eu me sinto inseguro em realizar um acesso a partir de um Windows, e me sinto em paz ao usar Linux. Mas se você gosta de jogos instalar em dual boot pode ser uma boa alternativa. Vai jogar entra no windows, vai trabalhar da uma chance pro Linux:-) além do mais o GNOME te deixa com uma pegada mais produtiva!</p>
<p>Faça download neste link: <strong> <a href="https://cdimage.debian.org/mirror/cdimage/archive/12.0.0-live/amd64/iso-hybrid/" rel="noopener" target="_blank">Debian 12 Live Desktop (amd64) Gnome</a></strong> localize por <strong>debian-live-12.x.x-amd64-gnome.iso</strong>, você irá baixar a ISO com o Gnome, mas se deseja outra interface fica a seu critério, mas estarei utilizando o Gnome.</p>
<p><strong>INICIANDO LIVE CD</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live.png" alt="" width="640" height="480" class="alignnone size-full wp-image-7513" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live.png 640w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-300x225.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>Ao entrar no live, ao clicar em instalar irá solicitar uma <strong>senha</strong>, é <strong>live</strong>. Prossiga com a instalação ao seu gosto.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-password-installer.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-password-installer.png" alt="" width="1364" height="765" class="alignnone size-full wp-image-7514" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-password-installer.png 1364w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-password-installer-300x168.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-password-installer-1024x574.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-password-installer-768x431.png 768w" sizes="auto, (max-width: 1364px) 100vw, 1364px" /></a></p>
<p><strong>APÓS INSTALAÇÃO</strong><br />
Ao logar pela primeira vez (ou não) ao clicar no campo para digita a senha, clique sobre a engrenagem no canto direito inferior e selecione: <strong>GNOME sobre Xorg</strong> (você só precisa fazer 1x), o padrão utiliza o Wayland, no entanto alguma aplicações como Anydesk, TeamViewer entre outras e uso de cabo HDMI, infelizmente o Wayland não está preparado para tudo ainda, então vamos de motor gráfico Xorg!<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/debian_xorg.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/debian_xorg.png" alt="" width="1334" height="786" class="alignnone size-full wp-image-7540" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/debian_xorg.png 1334w, https://blog.remontti.com.br/wp-content/uploads/2023/06/debian_xorg-300x177.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/debian_xorg-1024x603.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/debian_xorg-768x453.png 768w" sizes="auto, (max-width: 1334px) 100vw, 1334px" /></a></p>
<p>Como a pegada Debian é mais hardcore já sabe, vamos começar abrindo o terminal, de cara vamos remover toda a cacetada de idiomas que o firefox vem instalado e deixar só pt-br.</p>
<pre class="remontti-code">$ sudo apt purge firefox-esr-l10n-* -y 
$ sudo apt install firefox-esr-l10n-pt-br -y </pre>
<p>certifique-se de estar tudo atualizado, antes de começar</p>
<pre class="remontti-code">$ sudo apt update; sudo apt upgrade -y</pre>
<p><strong>REPOSITÓRIO</strong><br />
Por mais que agora contamos também com non-free-firmware, vamos adicionar o <strong>contrib e o non-free </strong>, </p>
<pre class="remontti-code">$ sudo nano /etc/apt/sources.list</pre>
<p>Ficando assim:</p>
<pre class="remontti-code-plain"># See https://wiki.debian.org/SourcesList for more information.
deb http://deb.debian.org/debian bookworm main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian bookworm main non-free-firmware contrib non-free

deb http://deb.debian.org/debian bookworm-updates main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian bookworm-updates main non-free-firmware contrib non-free

deb http://security.debian.org/debian-security/ bookworm-security main non-free-firmware contrib non-free
deb-src http://security.debian.org/debian-security/ bookworm-security main non-free-firmware contrib non-free

# Backports allow you to install newer versions of software made available for this release
deb http://deb.debian.org/debian bookworm-backports main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian bookworm-backports main non-free-firmware contrib non-free

</pre>
<p>Agora instale o firmware-linux</p>
<pre class="remontti-code">$ sudo apt update
$ sudo apt install firmware-linux</pre>
<p><strong>PLACA DE VÍDEO</strong><br />
O terror da maioria das pessoas!<br />
<strong><a href="https://wiki.debian.org/NvidiaGraphicsDrivers#Debian_12_.22Bookworm.22" rel="noopener" target="_blank">Nvidia</a></strong></p>
<pre class="remontti-code">$ apt install nvidia-driver firmware-misc-nonfree</pre>
<p>Dificuldades? <a href="https://wiki.debian.org/NVIDIA%20Optimus" rel="noopener" target="_blank">Esse link</a> pode lhe ajudar.</p>
<p><strong><a href="https://wiki.debian.org/AtiHowTo" rel="noopener" target="_blank">AMD/ATI</a></strong></p>
<pre class="remontti-code">$ apt installfirmware-amd-graphics</pre>
<p><strong>GRUB + KERNEL</strong><br />
Eu desativo algumas proteções do kernel (Nuca faça essa M** em um servidor) pois se tratando de desktop sei que não terei exemplo um serviço web rodando para o mundo, então para ganhar performance vou colocar <strong>mitigations</strong> em <strong>off</strong>, se você gosta do nome das interfaces de rede como eth0 wlan0 use o <strong>net.ifnames</strong> e <strong>biosdevname</strong> em <strong>0</strong>, se você quiser <strong>ver tudo </strong>que esta sendo carregado no sistema também<strong> pode remover quiet splash</strong> se desejar. Se não sabe o que ta fazendo pule essa parte! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<pre class="remontti-code">$ sudo nano /etc/default/grub</pre>
<p>Adicione ao <strong>GRUB_CMDLINE_LINUX_DEFAULT</strong> , vai ficar assim, porem resume= é sei UID!</p>
<pre class="remontti-code-plain">GRUB_CMDLINE_LINUX_DEFAULT=&quot;mitigations=off net.ifnames=0 biosdevname=0 quiet splash resume=UUID=7c3fc737-...&quot;
</pre>
<pre class="remontti-code">$ sudo update-grub</pre>
<p>Mais ajustes</p>
<pre class="remontti-code">$ sudo su -</pre>
<p>Se você tem SSD/NVME e execute os 2 comandos</p>
<pre class="remontti-code"># echo &quot;vm.vfs_cache_pressure=50&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;vm.dirty_background_ratio = 5&quot; &gt;&gt; /etc/sysctl.conf</pre>
<p>Se tiver mais que 4GB de memória ram.</p>
<pre class="remontti-code"># echo &quot;vm.swappiness=10&quot; &gt;&gt; /etc/sysctl.conf</pre>
<p>Carregue e reinicie</p>
<pre class="remontti-code"># sysctl -p
# exit
$ sudo reboot</pre>
<p><strong>ZSH + POWERLEVEL10K</strong><br />
Já que nosso &#8220;negócio&#8221; é terminal que tal dar uma tunada com ZSH, primeiramente baixa as fontes MesloLGS</p>
<pre class="remontti-code">$ sudo apt install wget -y
$ cd /usr/local/share/fonts
$ sudo wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf
$ sudo wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf
$ sudo wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf
$ sudo wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf</pre>
<p>Configure o terminal com a fonte MesloLGS NF<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-1.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-1.png" alt="" width="867" height="470" class="alignnone size-full wp-image-7516" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-1.png 867w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-1-300x163.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-1-768x416.png 768w" sizes="auto, (max-width: 867px) 100vw, 867px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-2.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-2.png" alt="" width="896" height="591" class="alignnone size-full wp-image-7517" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-2.png 896w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-2-300x198.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-2-768x507.png 768w" sizes="auto, (max-width: 896px) 100vw, 896px" /></a></p>
<p>Se deseja alter a cor do terminal:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-3.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-3.png" alt="" width="1267" height="709" class="alignnone size-full wp-image-7518" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-3.png 1267w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-3-300x168.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-3-1024x573.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-3-768x430.png 768w" sizes="auto, (max-width: 1267px) 100vw, 1267px" /></a></p>
<p>Instale os pacotes necessários:</p>
<pre class="remontti-code">$ sudo apt install git zsh zsh-autosuggestions zsh-syntax-highlighting fzf -y
$ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/.powerlevel10k
$ echo &#039;source ~/.powerlevel10k/powerlevel10k.zsh-theme&#039; &gt;&gt;~/.zshrc
$ zsh</pre>
<p>Várias perguntas serão feitas, para chegar ao resultado a baixo respondi com:<br />
<strong>y y y y 3 1 n 1 1 1 1 2 2 2 n 1 y</strong>, mas ajuste ao seu gosto.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-4.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-4.png" alt="" width="933" height="187" class="alignnone size-full wp-image-7519" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-4.png 933w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-4-300x60.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-terminal-zsh-4-768x154.png 768w" sizes="auto, (max-width: 933px) 100vw, 933px" /></a></p>
<p>Para reconfigurar novamente execute:</p>
<pre class="remontti-code">$ p10k configure</pre>
<p>Vai ser necessário colocar algumas entradas em nosso ~/.zshrc</p>
<pre class="remontti-code">$ nano ~/.zshrc</pre>
<p>Deixe assim:</p>
<pre class="remontti-code-plain">
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r &quot;${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh&quot; ]]; then
  source &quot;${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh&quot;
fi

source ~/.powerlevel10k/powerlevel10k.zsh-theme

# share history across multiple zsh sessions
setopt SHARE_HISTORY
# append to history
setopt APPEND_HISTORY
# adds commands as they are typed, not at shell exit
setopt INC_APPEND_HISTORY
# do not store duplications
setopt HIST_IGNORE_DUPS
# ignore duplicates when searching
setopt HIST_FIND_NO_DUPS
# removes blank lines from history
setopt HIST_REDUCE_BLANKS

# setup autocompletion
autoload -Uz compinit &amp;&amp; compinit
zstyle &#039;:completion:*&#039; matcher-list &#039;m:{a-z}={A-Za-z}&#039;
# autocompletion using arrow keys (based on history)
bindkey &#039;\e[A&#039; history-search-backward
bindkey &#039;\e[B&#039; history-search-forward

setopt prompt_subst
autoload -U colors &amp;&amp; colors
local resetColor=&quot;%{$reset_color%}&quot;
PS1=&quot;&quot;
PS1=&quot;%F{cyan}&quot;&#039;($(basename &quot;$CONDA_DEFAULT_ENV&quot;)) &#039;&quot;$resetColor&quot;
PS1+=&#039;%n%{$reset_color%}@$(scutil --get ComputerName):&#039;&quot;$resetColor&quot;
PS1+=$&#039;\e[38;5;211m$(short_cwd) &#039;;
PS1+=$&#039;\e[38;5;48m[$(git_repo):$(git_branch)] &#039;;
PS1+=&#039;$resetColor$ &#039;;

bindkey &quot;^[[1;5D&quot; backward-word
bindkey &quot;^[[1;5C&quot; forward-word

source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /usr/share/doc/fzf/examples/key-bindings.zsh

export LS_OPTIONS=&#039;--color=auto&#039;
eval &quot;`dircolors`&quot;
alias ls=&#039;ls $LS_OPTIONS&#039;
alias ll=&#039;ls $LS_OPTIONS -l&#039;
alias l=&#039;ls $LS_OPTIONS -lha&#039;

alias grep=&#039;grep --color&#039;
alias egrep=&#039;egrep --color&#039;
alias ip=&#039;ip -c&#039;
alias diff=&#039;diff --color&#039;
alias meuip=&#039;curl ifconfig.me; echo;&#039;
alias tail=&#039;grc tail&#039;
alias ping=&#039;grc ping&#039;
alias ps=&#039;grc ps&#039;
alias netstat=&#039;grc netstat&#039;
alias dig=&#039;grc dig&#039;
alias traceroute=&#039;grc traceroute&#039;
alias apt=&#039;sudo apt&#039;
alias l=&#039;ls -lh&#039;
alias la=&#039;ls -lha&#039;

HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory

# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

</pre>
<p>Adicione comando personalizado em preferencias para sempre que abrir o terminal carregar o zsh<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/zsh_terminal.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/zsh_terminal.png" alt="" width="1132" height="709" class="alignnone size-full wp-image-6940" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/zsh_terminal.png 1132w, https://blog.remontti.com.br/wp-content/uploads/2022/11/zsh_terminal-300x188.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/zsh_terminal-1024x641.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/11/zsh_terminal-768x481.png 768w" sizes="auto, (max-width: 1132px) 100vw, 1132px" /></a></p>
<p><strong>FERRAMENTAS &#038; UTILITÁRIO</strong><br />
Como utilizo muito o vim no meu dia a dia faço alguns ajustes.</p>
<pre class="remontti-code">$ apt install vim
$ cat &lt;&lt;EOF &gt;~/.vimrc
set showmatch &quot; Mostrar colchetes correspondentes
set ts=4 &quot; Ajuste tab
set sts=4 &quot; Ajuste tab
set sw=4 &quot; Ajuste tab
set autoindent &quot; Ajuste tab
set smartindent &quot; Ajuste tab
set smarttab &quot; Ajuste tab
set expandtab &quot; Ajuste tab
&quot;set number &quot; Mostra numero da linhas
EOF
$ sudo sed -i &#039;s/&quot;syntax on/syntax on/&#039; /etc/vim/vimrc
$ sudo sed -i &#039;s/&quot;set background=dark/set background=dark/&#039; /etc/vim/vimrc
</pre>
<p>Sou amante do terminal e muitas da ferramentas de terminal ajudam a debugar problemas, recomendo uma leitura do artigo: <a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank">Como melhorar a produtividade</a>. Tem alguns aplicações extras ai no meio também como filezilla, mas garanto tudo é útil!</p>
<pre class="remontti-code">$ sudo apt install htop iotop iftop hdparm locate traceroute tree \
  ipcalc sipcalc mtr-tiny whois dnsutils net-tools ncdu apt-transport-https \
  neofetch breeze bash-completion fzf curl grc bgpq4 nmap lm-sensors ncal \
  rtorrent links arping bmon tcpdump ethtool iptraf-ng mutter qbittorrent \
  filezilla vinagre rdesktop icedtea-netx default-jre kolourpaint -y
</pre>
<p>Provavelmente você utiliza VPNs então os pacotes a baixo não podem falar:</p>
<pre class="remontti-code">$ sudo apt install network-manager-gnome \
 network-manager-pptp-gnome \
 network-manager-vpnc-gnome \
 network-manager-ssh-gnome \
 network-manager-openvpn-gnome \
 network-manager-l2tp-gnome 
</pre>
<p>Eu gosto de dar uma personalizada no GNOME, vou deixar aqui algumas extensões que curto. (Use se te agradar).</p>
<pre class="remontti-code">$ sudo apt install gnome-shell-extension-manager gnome-tweaks  -y</pre>
<p>Abra a aplicação: <strong>Gereciador de Extensões</strong> e clique em <strong>Navegar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao1.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao1.png" alt="" width="862" height="654" class="alignnone size-full wp-image-7520" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao1.png 862w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao1-300x228.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao1-768x583.png 768w" sizes="auto, (max-width: 862px) 100vw, 862px" /></a></p>
<p>Na buscar pesquise por:<br />
<a href="https://extensions.gnome.org/extension/3193/blur-my-shell/" rel="noopener" target="_blank"><strong>Blur my Shell</strong></a> ela vai deixar acompanhado o papel de parede.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao2.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao2.png" alt="" width="1280" height="800" class="alignnone size-full wp-image-7521" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao2.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao2-300x188.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao2-1024x640.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao2-768x480.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p><a href="https://extensions.gnome.org/extension/4158/gnome-40-ui-improvements/" rel="noopener" target="_blank"><strong>Gnome 4x UI Improvements</strong></a> irá exibir as áreas de trabalho, inclusive você pode arrastar uma aplicação para dentro dela.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao3.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao3.png" alt="" width="1280" height="800" class="alignnone size-full wp-image-7522" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao3.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao3-300x188.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao3-1024x640.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Debian-12-Live-extensao3-768x480.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p><a href="https://extensions.gnome.org/extension/2890/tray-icons-reloaded/" rel="noopener" target="_blank"><strong>Tray Icons: Reloaded</strong></a> caso você tem problema com algum ícones que não é exibido na barra, pode tentar usa-lo.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/tray-icon.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/tray-icon.png" alt="" width="400" height="200" class="alignnone size-full wp-image-6887" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/tray-icon.png 400w, https://blog.remontti.com.br/wp-content/uploads/2022/11/tray-icon-300x150.png 300w" sizes="auto, (max-width: 400px) 100vw, 400px" /></a></p>
<p><a href="https://extensions.gnome.org/extension/4679/burn-my-windows/" rel="noopener" target="_blank"><strong>Burn My Windows</strong></a> se você é das antigas e lembra do compiz vai gostar desse, janelinha explodindo, pegando fogo, e muitas animações. Nas configurações dessa extensão você encontra muita frescura rsrsrs<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/firulagem.gif" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/firulagem.gif" alt="" width="320" height="200" class="alignnone size-full wp-image-6888" /></a></p>
<p><a href="https://extensions.gnome.org/extension/4648/desktop-cube/" rel="noopener" target="_blank"><strong>Desktop Cube</strong></a> vai tornar suas áreas de trabalho em um cubo.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/cube.gif" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/cube.gif" alt="" width="320" height="180" class="alignnone size-full wp-image-6889" /></a></p>
<p><a href="https://extensions.gnome.org/extension/3724/net-speed-simplified/" rel="noopener" target="_blank"><strong>Net speed Simplified</strong></a> se você quiser acompanhar o trafego da sua interface de rede.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/trafego.gif" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/trafego.gif" alt="" width="356" height="64" class="alignnone size-full wp-image-6891" /></a></p>
<p><a href="https://extensions.gnome.org/extension/3396/color-picker/" rel="noopener" target="_blank"><strong>Color Picker</strong></a> se você precisa descobrir uma cor de qualquer objeto do seu desktop essa é uma ótima extensão.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/colorpicker.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/colorpicker.png" alt="" width="454" height="345" class="alignnone size-full wp-image-6892" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/colorpicker.png 454w, https://blog.remontti.com.br/wp-content/uploads/2022/11/colorpicker-300x228.png 300w" sizes="auto, (max-width: 454px) 100vw, 454px" /></a></p>
<p><a href="https://extensions.gnome.org/extension/750/openweather/" rel="noopener" target="_blank"><strong>OpenWeather</strong></a> informações de clima.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/clima.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/clima.png" alt="" width="606" height="302" class="alignnone size-full wp-image-6894" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/clima.png 606w, https://blog.remontti.com.br/wp-content/uploads/2022/11/clima-300x150.png 300w" sizes="auto, (max-width: 606px) 100vw, 606px" /></a></p>
<p><a href="https://extensions.gnome.org/extension/2458/bubblemail/" rel="noopener" target="_blank">Bubblemail</a> se você precisa acompanhar seus e-mails esse cara pode lhe ajudar bastante. é necessário a instalação do <a href="http://bubblemail.free.fr/downloads" rel="noopener" target="_blank">bubblemail</a>.</p>
<pre class="remontti-code">$ cd /tmp; wget http://bubblemail.free.fr/releases/debian/bubblemail_1.8-1_all.deb 
sudo apt install ./bubblemail_1.8-1_all.deb</pre>
<p>Agora basta configurar sua conta na extensão.</p>
<p>Existe muita personalização possíveis, para icones novos e themas crie dois diretórios. </p>
<pre class="remontti-code">$ mkdir ~/.themes
$ mkdir ~/.icons</pre>
<p>Vamos supor que queira alterar o cursor para um novo, vou baixar o <a href="https://www.gnome-look.org/p/999927/" rel="noopener" target="_blank">Cursor Breeze</a> que eu gosto (herança do KDE) faça download do mesmo. <em>(Ignore meus prints do ubuntu, reaproveitei)</em><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/breeze.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/breeze.png" alt="" width="625" height="71" class="alignnone size-full wp-image-6896" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/breeze.png 625w, https://blog.remontti.com.br/wp-content/uploads/2022/11/breeze-300x34.png 300w" sizes="auto, (max-width: 625px) 100vw, 625px" /></a><br />
<strong>Extraia</strong> o mesmo e mova para a pasta breeze para dentro de <strong>.icons</strong> que esta dentro da sua<strong> Pasta Pessoal</strong>, no linux tudo que começa com ponto é oculto, para exibi-los pressione <strong>CRTL+H</strong>.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/cursor.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/cursor.png" alt="" width="1281" height="799" class="alignnone size-full wp-image-6897" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/cursor.png 1281w, https://blog.remontti.com.br/wp-content/uploads/2022/11/cursor-300x187.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/cursor-1024x639.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/11/cursor-768x479.png 768w" sizes="auto, (max-width: 1281px) 100vw, 1281px" /></a><br />
Em seguida abra <strong>Ajustes</strong>, em <strong>Aparência</strong>, <strong>Cursor</strong> selecione <strong>Breeze</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/cursor2.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/cursor2.png" alt="" width="1281" height="791" class="alignnone size-full wp-image-6898" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/cursor2.png 1281w, https://blog.remontti.com.br/wp-content/uploads/2022/11/cursor2-300x185.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/cursor2-1024x632.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/11/cursor2-768x474.png 768w" sizes="auto, (max-width: 1281px) 100vw, 1281px" /></a></p>
<p>Alguns pacotes de icones/themas você encontra no repositório também. Um bem bonito é o Papirus.</p>
<pre class="remontti-code">$ sudo apt install papirus-icon-theme</pre>
<p>Vou deixar alguns Icones/Temas que acho bonito para os temas basta colocar eles na pasta  ~/.themes<br />
<a href="https://www.gnome-look.org/p/1477945" rel="noopener" target="_blank">https://www.gnome-look.org/p/1477945</a><br />
<a href="https://www.gnome-look.org/p/1201366" rel="noopener" target="_blank">https://www.gnome-look.org/p/1201366</a><br />
<a href="https://www.gnome-look.org/p/1357889" rel="noopener" target="_blank">https://www.gnome-look.org/p/1357889</a><br />
<a href="https://www.gnome-look.org/p/1013030" rel="noopener" target="_blank">https://www.gnome-look.org/p/1013030</a><br />
<a href="https://www.gnome-look.org/p/1661983" rel="noopener" target="_blank">https://www.gnome-look.org/p/1661983</a><br />
<a href="https://www.gnome-look.org/p/1678986" rel="noopener" target="_blank">https://www.gnome-look.org/p/1678986</a><br />
<a href="https://www.gnome-look.org/p/1348081" rel="noopener" target="_blank">https://www.gnome-look.org/p/1348081</a><br />
<a href="https://www.pling.com/p/1280977" rel="noopener" target="_blank">https://www.pling.com/p/1280977</a></p>
<p><strong>GOOGLE CHROME</strong><br />
Você pode manipular as extensões pelo Google Chrome também. Primeiramente vamos instala-lo.</p>
<pre class="remontti-code">$ cd /tmp/
$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
$ sudo apt install ./google-chrome-stable_current_amd64.deb chrome-gnome-shell -y</pre>
<p>Acesse no Google Chrome: <a href="https://chrome.google.com/webstore/detail/gnome-shell-integration/gphhapmejobijbbhgpjhcjognlahblep" rel="noopener" target="_blank">Integração com GNOME Shell</a> Clique em Usar no Chrome. Agora com a extensão instalada você pode administrar acessando: <a href="https://extensions.gnome.org/local/" rel="noopener" target="_blank">https://extensions.gnome.org/local/</a></p>
<p><strong>TELEGRAM</strong><br />
Telegram até esta no repositório porem recebe atualizações sempre atrasadas, etão vamos fazer a instalação manual, abra seu terminal:</p>
<pre class="remontti-code">$ cd /tmp/
$ wget https://telegram.org/dl/desktop/linux -O tsetup.tar.xz
$ tar xvf tsetup.tar.xz
$ sudo mv Telegram/ /opt/
$ sudo chown $USER: /opt/Telegram/ -R
$ sudo ln -sf /opt/Telegram/Telegram /usr/bin/telegram
$ telegram &amp;</pre>
<p><strong>VIRTUALBOX 7</strong><br />
Vamos atualizar o repositório oficial do <a href="https://www.virtualbox.org/wiki/Linux_Downloads" rel="noopener" target="_blank">Vbox</a>.</p>
<pre class="remontti-code">$ wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo \
   gpg --dearmor --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg</pre>
<pre class="remontti-code">$ sudo nano /etc/apt/sources.list.d/virtualbox.list </pre>
<pre class="remontti-code-plain">deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg]  https://download.virtualbox.org/virtualbox/debian bookworm contrib</pre>
<p>Salve e feche.</p>
<pre class="remontti-code">$ sudo apt update
$ sudo apt install virtualbox-7.0 -y
$ sudo usermod -a -G vboxusers $USER
$ cd /tmp
$ wget https://download.virtualbox.org/virtualbox/7.0.12/Oracle_VM_VirtualBox_Extension_Pack-7.0.12.vbox-extpack
$ VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-7.0.12.vbox-extpack</pre>
<p>Uma extensão do GNOME que você pode gostar é a <a href="https://extensions.gnome.org/extension/1415/virtualbox-applet/" rel="noopener" target="_blank"><strong>Virtualbox Applet</strong></a></p>
<p><strong>DROPBOX</strong></p>
<pre class="remontti-code">$ cd /tmp/
$ sudo apt install python3-gpg -y
$ wget &quot;https://www.dropbox.com/download?dl=packages/ubuntu/dropbox_2022.12.05_amd64.deb&quot; \
  -O dropbox.deb
$ sudo apt install ./dropbox.deb -y
$ apt update
$ apt upgrade
</pre>
<p>Não achei solução ainda para o erro apt-key, então comenti a linha do repositorio.</p>
<pre class="remontti-code">$ sudo nano /etc/apt/sources.list.d/dropbox.list</pre>
<p><strong>SUBLIME-TEXT</strong></p>
<pre class="remontti-code">$ wget -O- https://download.sublimetext.com/sublimehq-pub.gpg \
  | gpg --dearmor | sudo tee /usr/share/keyrings/sublimehq-archive-keyring.gpg &amp;&gt;/dev/null
$ echo &quot;deb [signed-by=/usr/share/keyrings/sublimehq-archive-keyring.gpg] \
  https://download.sublimetext.com/ apt/stable/&quot; | \
  sudo tee /etc/apt/sources.list.d/sublime-text.list
$ sudo apt update ; sudo apt install sublime-text -y</pre>
<p><strong>VSCODE</strong></p>
<pre class="remontti-code">$ cd /tmp
$ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor &gt; packages.microsoft.gpg
$ sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
$ sudo sh -c &#039;echo &quot;deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main&quot; &gt; /etc/apt/sources.list.d/vscode.list&#039;
$ sudo apt update ; sudo apt install code -y</pre>
<p><strong>TEAMVIEWER</strong></p>
<pre class="remontti-code">$ cd /tmp/
$ wget https://download.teamviewer.com/download/linux/teamviewer_amd64.deb
$ sudo apt install ./teamviewer_amd64.deb -y</pre>
<p><strong>ANYDESK</strong></p>
<pre class="remontti-code">$ wget -qO - https://keys.anydesk.com/repos/DEB-GPG-KEY \
  | sudo tee /usr/share/keyrings/anydesk.asc
$ echo &quot;deb [signed-by=/usr/share/keyrings/anydesk.asc] \
  http://deb.anydesk.com/ all main&quot; \
  |sudo tee /etc/apt/sources.list.d/anydesk-stable.list
$ sudo apt update
$ cd /tmp 
$ wget http://ftp.br.debian.org/debian/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5+b2_amd64.deb
$ sudo apt install ./libpangox-1.0-0_0.0.2-5+b2_amd64.deb -y
$ sudo apt install anydesk -y
$ sudo systemctl disable anydesk</pre>
<p><strong>SKYPE</strong><br />
Para os mais idosos (e olha que eu já abandonei ele :-D)</p>
<pre class="remontti-code">$ cd /tmp/
$ wget https://repo.skype.com/latest/skypeforlinux-64.deb
$ sudo apt install ./skypeforlinux-64.deb -y</pre>
<p>Vai precisar ajustar o repositório para nao ter erro, como não uso não pesquisei. Mas remove do repositório que esta resolvido, se precisar atualizar baixe e instale novamente.</p>
<pre class="remontti-code">$ sudo rm /etc/apt/sources.list.d/skype-stable.list</pre>
<p><strong>ONLYOFFICE</strong><br />
Melhor pacote office na minha opnião.</p>
<pre class="remontti-code">$ cd /tmp
$ wget https://download.onlyoffice.com/install/desktop/editors/linux/onlyoffice-desktopeditors_amd64.deb 
$ sudo apt install ./onlyoffice-desktopeditors_amd64.deb -y</pre>
<p><strong>GOOGLE EARTH</strong></p>
<pre class="remontti-code">$ cd /tmp/
$ wget https://dl.google.com/dl/earth/client/current/google-earth-pro-stable_current_amd64.deb
$ sudo apt install ./google-earth-pro-stable_current_amd64.deb -y</pre>
<p><strong>CALCULADORA IPV6</strong></p>
<pre class="remontti-code">$ sudo apt install python3-pip
$ pip install --break-system-packages ipaddr
$ sudo wget https://blog.remontti.com.br/arquivos/ip6calc_py3 -O /bin/ip6calc
$ sudo chmod a+x /bin/ip6calc
$ ip6calc 2804:f123::/32</pre>
<p><strong>AJUSTES INICIALIZAÇÃO</strong><br />
Você pode estranhar o NumLock não vir ativado na inicialização para resolver isso:</p>
<pre class="remontti-code">$ sudo apt install numlockx -y
$ mkdir ~/.config/autostart/ &amp;&gt;/dev/null
$ nano ~/.config/autostart/numlockx.desktop</pre>
<p>Adicione:</p>
<pre class="remontti-code">[Desktop Entry]
Type=Application
Exec=/usr/bin/numlockx on
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[pt_BR]=Inicia NumLock Ativo
Name=Inicia NumLock Ativo
Comment[pt_BR]=Inicia NumLock Ativo
Comment=Inicia NumLock Ativo
</pre>
<p>Outro problema que você pode encontrar dependendo do seu teclado, é que o ponto no teclado numérico ao usar algum aplicativo que esteja sendo executado pelo wine/playonlinux saia uma virgula. Abra seu winbox ai e teste. Se for seu caso abra o terminal e execute:</p>
<pre class="remontti-code">$ /usr/bin/xmodmap -e &#039;keycode 129 = period</pre>
<p>Resolveu, crie uma entrada na inicialização!<br />
$ nano ~/.config/autostart/pontowine.desktop<br />
Adicione:</p>
<pre class="remontti-code">[Desktop Entry]
Type=Application
Exec=/usr/bin/xmodmap -e &#039;keycode 129 = period&#039;
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[pt_BR]=Ponto Wine
Name=Ponto Wine
Comment[pt_BR]=Ponto Wine
Comment=Ponto Wine
</pre>
<p><strong>PRINT COM FLAMESHOT</strong><br />
Gnome melhorou bastante o print nas ultimas versões mais ainda gosto mais do flameshot</p>
<pre class="remontti-code">$ sudo apt install flameshot -y</pre>
<p>Para criar um atalho abra <strong>Configurações</strong> &#8211; <strong>Teclado</strong> > <strong>Atalhos de teclado</strong> > <strong>Veja e personalize atalhos</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_atalho.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_atalho.png" alt="" width="1033" height="785" class="alignnone size-full wp-image-6930" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_atalho.png 1033w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_atalho-300x228.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_atalho-1024x778.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_atalho-768x584.png 768w" sizes="auto, (max-width: 1033px) 100vw, 1033px" /></a></p>
<p>Clique em <strong>Atalhos personalizados</strong> e Adicione um novo<br />
Nome: <strong>Print Flame</strong><br />
Comando: <strong>/usr/bin/flameshot gui</strong><br />
Associar a tecla Print (Meu exemplo vou usar CTRL+Print)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_atalho2.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_atalho2.png" alt="" width="997" height="636" class="alignnone size-full wp-image-6931" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_atalho2.png 997w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_atalho2-300x191.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_atalho2-768x490.png 768w" sizes="auto, (max-width: 997px) 100vw, 997px" /></a></p>
<pre class="remontti-code">$ flameshot config </pre>
<p>Faça os ajustes de configurações com as suas necessidades, eu desativo as notificações e uso Enter para copiar para área de transferência. </p>
<p><strong>GIMP</strong><br />
Se você precisa editar algumas imagens (É o concorrente do photoshop)</p>
<pre class="remontti-code"> sudo apt install gimp</pre>
<p><strong>SPOTIFY</strong></p>
<pre class="remontti-code">$ curl -sS https://download.spotify.com/debian/pubkey_7A3A762FAFD4A51F.gpg \
 | sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/spotify.gpg
$ echo &quot;deb http://repository.spotify.com stable non-free&quot; | sudo \
 tee /etc/apt/sources.list.d/spotify.list
$ sudo apt update; sudo apt install spotify-client -y</pre>
<p><strong>PLAYONLINUX</strong><br />
Para executar algumas aplicações <strong>.exe</strong> Exemplo um Winbox, The Dude (Os que mais me perguntam)&#8230; </p>
<pre class="remontti-code">$ sudo dpkg --add-architecture i386 ; sudo apt update ; sudo apt upgrade
$ sudo apt install playonlinux msttcorefonts</pre>
<p>Vou demonstrar como instalar o Dude e Winbox com o playonlinux, faça download dos mesmo, vamos te terminal né!</p>
<pre class="remontti-code">$ $ cd ~/Downloads
$ wget https://download.mikrotik.com/routeros/6.48.7/dude-install-6.48.7.exe
$ wget https://download.mikrotik.com/winbox/3.38/winbox.exe</pre>
<p>Abra o Playonlinux e clique em <strong>Instalar um program</strong> e em seguida <strong>Instalar um programa não listado</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_1.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_1.png" alt="" width="946" height="619" class="alignnone size-full wp-image-6901" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_1.png 946w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_1-300x196.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_1-768x503.png 768w" sizes="auto, (max-width: 946px) 100vw, 946px" /></a></p>
<p><strong>Avançar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_2.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_2.png" alt="" width="847" height="566" class="alignnone size-full wp-image-6902" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_2.png 847w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_2-300x200.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_2-768x513.png 768w" sizes="auto, (max-width: 847px) 100vw, 847px" /></a></p>
<p><strong>Avançar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_3.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_3.png" alt="" width="857" height="570" class="alignnone size-full wp-image-6903" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_3.png 857w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_3-300x200.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_3-768x511.png 768w" sizes="auto, (max-width: 857px) 100vw, 857px" /></a></p>
<p><strong>Avançar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_4.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_4.png" alt="" width="850" height="563" class="alignnone size-full wp-image-6904" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_4.png 850w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_4-300x199.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_4-768x509.png 768w" sizes="auto, (max-width: 850px) 100vw, 850px" /></a><br />
Selecione <strong>Editar ou atualizar um aplicativo existente </strong>e <strong>Avançar</strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_5.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_5.png" alt="" width="869" height="567" class="alignnone size-full wp-image-6905" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_5.png 869w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_5-300x196.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_5-768x501.png 768w" sizes="auto, (max-width: 869px) 100vw, 869px" /></a></p>
<p>Marque <strong>Exibir unidade virtuais</strong> selecione <strong>default</strong> e <strong>Avançar</strong>.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_6.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_6.png" alt="" width="862" height="561" class="alignnone size-full wp-image-6906" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_6.png 862w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_6-300x195.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_6-768x500.png 768w" sizes="auto, (max-width: 862px) 100vw, 862px" /></a></p>
<p><strong>Avançar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_7.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_7.png" alt="" width="838" height="550" class="alignnone size-full wp-image-6907" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_7.png 838w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_7-300x197.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_7-768x504.png 768w" sizes="auto, (max-width: 838px) 100vw, 838px" /></a></p>
<p>Selecione <strong>32bits </strong>e <strong>Avançar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_8.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_8.png" alt="" width="847" height="556" class="alignnone size-full wp-image-6908" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_8.png 847w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_8-300x197.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_8-768x504.png 768w" sizes="auto, (max-width: 847px) 100vw, 847px" /></a></p>
<p>Clique em <strong>Navegar</strong>, e procure o <em>dude-install-6.xx.x.exe</em> em Downloads e clique em <strong>Avançar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_9.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_9.png" alt="" width="848" height="553" class="alignnone size-full wp-image-6909" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_9.png 848w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_9-300x196.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_9-768x501.png 768w" sizes="auto, (max-width: 848px) 100vw, 848px" /></a></p>
<p>Instalador será iniciado, então clique em <strong>I Agree, Next, Next</strong>, mas <font color="red">não em <strong>Close</strong></font><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_10.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_10.png" alt="" width="867" height="569" class="alignnone size-full wp-image-6912" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_10.png 867w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_10-300x197.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_10-768x504.png 768w" sizes="auto, (max-width: 867px) 100vw, 867px" /></a></p>
<p><font color="red">Não clique em <strong>Close</strong></font> ainda!<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_13.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_13.png" alt="" width="887" height="577" class="alignnone size-full wp-image-6910" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_13.png 887w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_13-300x195.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_13-768x500.png 768w" sizes="auto, (max-width: 887px) 100vw, 887px" /></a></p>
<p>Abra o explore entre na pasta Download e copie o <strong>winbox.exe </strong>para<strong> PlayOnLinux&#8217;s virtual drives/default/drive_c/Program Files/Dude</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_14.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_14.png" alt="" width="1280" height="778" class="alignnone size-full wp-image-6913" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_14.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_14-300x182.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_14-1024x622.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_14-768x467.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a><br />
Se preferir pelo terminal:</p>
<pre class="remontti-code">$ cp ~/Downloads/winbox.exe \
   ~/PlayOnLinux\&#039;s\ virtual\ drives/default/drive_c/Program\ Files/Dude/</pre>
<p>Feito isso agora sim pode clicar em <strong>Close</strong>, desta forma todos os .exe do diretório da instalação irão aparecer para criar um atalho.</p>
<p>Selecione <strong>winbox.exe</strong> e clique em <strong>Avançar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_15.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_15.png" alt="" width="847" height="554" class="alignnone size-full wp-image-6914" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_15.png 847w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_15-300x196.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_15-768x502.png 768w" sizes="auto, (max-width: 847px) 100vw, 847px" /></a></p>
<p>De o nome <strong>Winbox </strong>para aplicação, e clique em <strong>Avançar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_16.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_16.png" alt="" width="847" height="547" class="alignnone size-full wp-image-6915" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_16.png 847w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_16-300x194.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_16-768x496.png 768w" sizes="auto, (max-width: 847px) 100vw, 847px" /></a></p>
<p>Faça o mesmo para o dude.exe<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_17.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_17.png" alt="" width="855" height="562" class="alignnone size-full wp-image-6917" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_17.png 855w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_17-300x197.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_17-768x505.png 768w" sizes="auto, (max-width: 855px) 100vw, 855px" /></a></p>
<p>Agora para finalizar escolha:<strong> Eu não quero criar outro atalho</strong>, e clique em <strong>Avançar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_18.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_18.png" alt="" width="842" height="554" class="alignnone size-full wp-image-6918" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_18.png 842w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_18-300x197.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_18-768x505.png 768w" sizes="auto, (max-width: 842px) 100vw, 842px" /></a></p>
<p>Pode fechar o PlayOnLinux<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_19.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_19.png" alt="" width="841" height="552" class="alignnone size-full wp-image-6919" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_19.png 841w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_19-300x197.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_19-768x504.png 768w" sizes="auto, (max-width: 841px) 100vw, 841px" /></a></p>
<p>Dois atalhos/arquivos [Dude.desktop Winbox.desktop] foram criado na Área de trabalho, porém você não irá ver nada nela, pois por ao logarmos no sistema com Gnome, a extensão Desktop con NG foi desativada (Caso queira ativar) eu não gosto ehehehe. Eu irei mover eles para o menu de aplicações do sistema, para isso basta mover esses atalhos para ~/.local/share/applications, vou fazer por comando que é menos print para esse tutorial hehehe.</p>
<pre class="remontti-code">$ mv ~/Área\ de\ trabalho/*.desktop ~/.local/share/applications</pre>
<p>Pronto você pode clicar com o direito e Fixar aos favoritos.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_20.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_20.png" alt="" width="1274" height="796" class="alignnone size-full wp-image-6920" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_20.png 1274w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_20-300x187.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_20-1024x640.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_20-768x480.png 768w" sizes="auto, (max-width: 1274px) 100vw, 1274px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_21.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_21.png" alt="" width="1266" height="790" class="alignnone size-full wp-image-6921" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_21.png 1266w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_21-300x187.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_21-1024x639.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/11/ubuntu_play_21-768x479.png 768w" sizes="auto, (max-width: 1266px) 100vw, 1266px" /></a></p>
<p>Um dia também interessante é copiar as fontes da MS para a unidade virtal, assim as aplicações não ficam bugadas.</p>
<pre class="remontti-code">$ cp /usr/share/fonts/truetype/msttcorefonts/* \
   ~/PlayOnLinux\&#039;s\ virtual\ drives/default/drive_c/windows/Fonts/</pre>
<p><strong>CLIENTE SSH</strong><br />
Meu cliente SSH é o próprio terminal, porém você deve usar um desses programinhas de fresco que tem salvo joão, josé e maria&#8230; <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Como sou das antigas acabei que criando um Shell Script (usando dialog) para ir &#8220;catalogando&#8221; todos os servidores/roteadores que tenho acesso. Veja um exemplo simples:</p>
<pre class="remontti-code">$ sudo apt install dialog</pre>
<p>Crie um arquivo com:</p>
<pre class="remontti-code">$ nano vaiplaneta</pre>
<pre class="remontti-code-plain">#!/bin/bash
# Requer dialog
while : ; do
    resposta=$(
      dialog --stdout               \
             --title &#039;Acesso SSH&#039;  \
             --menu &#039;Selecione o Servidor:&#039; \
            0 0 0                   \
            1 &#039;IDENTIFICA - LALALA&#039; \
            2 &#039;IDENTIFICA - LALALA&#039; \
            3 &#039;IDENTIFICA - LALALA&#039; \
            4 &#039;IDENTIFICA - LALALA&#039; \
            5 &#039;IDENTIFICA - LALALA&#039; \
            6 &#039;IDENTIFICA - LALALA&#039; \
            7 &#039;IDENTIFICA - LALALA&#039; \
            8 &#039;IDENTIFICA - LALALA&#039; \
            9 &#039;IDENTIFICA - LALALA&#039; \
            0 &#039;Sair&#039; )

    [ $? -ne 0 ] &amp;&amp; break

    case &quot;$resposta&quot; in
         1) ssh -p 12345 usuario@10.10.10.10 ;;
         2) ssh -p 12345 usuario@10.10.10.10 ;;
         3) ssh -p 12345 usuario@10.10.10.10 ;;
         4) ssh -p 12345 usuario@10.10.10.10 ;;
         5) ssh -p 12345 usuario@10.10.10.10 ;;
         6) ssh -p 12345 usuario@10.10.10.10 ;;
         7) ssh -p 12345 usuario@10.10.10.10 ;;
         8) ssh -p 12345 usuario@10.10.10.10 ;;
         9) ssh -p 12345 usuario@10.10.10.10 ;;
         0) break ;;
    esac
done</pre>
<pre class="remontti-code">$ chmod +x vaiplaneta
$ ./vaiplaneta
</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/dialog.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/11/dialog.png" alt="" width="845" height="569" class="alignnone size-full wp-image-6943" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/11/dialog.png 845w, https://blog.remontti.com.br/wp-content/uploads/2022/11/dialog-300x202.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/11/dialog-768x517.png 768w" sizes="auto, (max-width: 845px) 100vw, 845px" /></a></p>
<p>Outro modelinho mais elaborado sub seleção&#8230;</p>
<pre class="remontti-code">$ nano gogo</pre>
<pre class="remontti-code-plain">#!/bin/bash
# Requer dialog

janela=inicial

while : ; do

    case &quot;$janela&quot; in
        inicial)
            grupo=$(
                dialog --stdout \
                    --backtitle &#039;Acessos Remoto&#039; \
                    --title &#039;ACESSO&#039; \
                    --menu &#039;Selecione o Grupo:&#039;\
                    0 0 0 \
                    1 &#039;Selecionou 1&#039; \
                    2 &#039;Selecionou 2&#039; \
            )
            [ $? -ne 0 ] &amp;&amp; break
            case &quot;$grupo&quot; in
                1) janela=selecionou_1 ;;
                2) janela=selecionou_2 ;;
            esac
        ;;

        #####

        selecionou_1)
            anterior=inicial
            selecionou_1=$(
              dialog --stdout               \
                     --title &#039;Acesso SSH&#039;  \
                     --menu &#039;Selecione o Servidor:&#039; \
                    0 0 0                   \
                    1 &#039;IDENTIFICA 1a - LALALA&#039; \
                    2 &#039;IDENTIFICA 1b - LALALA&#039; \
                    3 &#039;IDENTIFICA 1c - LALALA&#039; \
                    0 &#039;Sair&#039; )

            [ $? -ne 0 ] &amp;&amp; janela=$anterio

            case &quot;$selecionou_1&quot; in
                 1) clear; echo &quot;IDENTIFICA 1a&quot;; ssh -p 12345 usuario@10.10.10.10 ;;
                 2) clear; echo &quot;IDENTIFICA 1b&quot;; ssh -p 12345 usuario@10.10.10.10 ;;
                 3) clear; echo &quot;IDENTIFICA 1c&quot;; ssh -p 12345 usuario@10.10.10.10 ;;
                 0) break ;;
            esac
        ;;

       #####

        selecionou_2)
            anterior=inicial
            selecionou_2=$(
              dialog --stdout               \
                     --title &#039;Acesso SSH&#039;  \
                     --menu &#039;Selecione o Servidor:&#039; \
                    0 0 0                   \
                    1 &#039;IDENTIFICA 2a - LALALA&#039; \
                    2 &#039;IDENTIFICA 2b - LALALA&#039; \
                    3 &#039;IDENTIFICA 2c - LALALA&#039; \
                    0 &#039;Sair&#039; )

            [ $? -ne 0 ] &amp;&amp; janela=$anterio

            case &quot;$selecionou_2&quot; in
                 1) clear; echo &quot;IDENTIFICA 2a&quot;; ssh -p 12345 usuario@10.10.10.10 ;;
                 2) clear; echo &quot;IDENTIFICA 2b&quot;;ssh -p 12345 usuario@10.10.10.10 ;;
                 3) clear; echo &quot;IDENTIFICA 2c&quot;;ssh -p 12345 usuario@10.10.10.10 ;;
                 0) break ;;
            esac
        ;;

        #####

        *)
            echo Abortado...
            exit

        #####

    esac

    retorno=$?
    [ $retorno -eq 1   ] &amp;&amp; janela=$anterior   # cancelar
    [ $retorno -eq 255 ] &amp;&amp; break              # Esc

done</pre>
<pre class="remontti-code">$ chmod +x gogo
$ ./gogo
</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/gogo1.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/gogo1-300x161.png" alt="" width="300" height="161" class="alignnone size-medium wp-image-7585" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/gogo1-300x161.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/gogo1-768x411.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/06/gogo1.png 848w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/gogo2.png" data-rel="lightbox-gallery-E0KWylsR" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/gogo2-300x166.png" alt="" width="300" height="166" class="alignnone size-medium wp-image-7584" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/gogo2-300x166.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/gogo2-768x426.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/06/gogo2.png 856w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>No meu caso utilizo Dropbox como nuvem, salvo meus script lá, então crio uma alias, assim em todos meus desktops ficam sincronizados os mesmo atalhos.<br />
No ZSH</p>
<pre class="remontti-code">$ nano ~/.zshrc</pre>
<p>No Bash</p>
<pre class="remontti-code">$ nano ~/.bashrc</pre>
<p>Adicione </p>
<pre class="remontti-code-plain">alias vaiplaneta=&#039;~/Dropbox/scripts/vaiplaneta&#039;
alias gogo=&#039;~/Dropbox/scripts/gogo&#039;</pre>
<p>Vou deixar aqui um manual para manualzinho do <a href="https://blog.remontti.com.br/wp-content/uploads/2022/11/Dialog.manual.zip">Dialog para download</a>.</p>
<p>Um outro problema que tive foi com alguns equipamentos antigos (KexAlgorithms) algumas OLTs por exemplo, nete caso editei /etc/ssh/ssh_config e fiz as entradas de acordos com os prefixos, como no meu caso todas estão na classe 172.18.0.0/24</p>
<pre class="remontti-code">$ sudo nano /etc/ssh/ssh_config</pre>
<p>Adicionei ao final do arquivo:</p>
<pre class="remontti-code-plain">Host 172.18.0.*
    HostKeyAlgorithms ssh-dss
    KexAlgorithms diffie-hellman-group1-sha1</pre>
<p><strong>CHAVES SSH </strong><br />
Gerando as chaves</p>
<pre class="remontti-code">$ ssh-keygen -t rsa
$ nautilus ~/.ssh</pre>
<p>Salve suas chaves: id_rsa  id_rsa.pub<br />
Para instalar a chave em um servidor use o comando:</p>
<pre class="remontti-code">$ ssh-copy-id -p 22 remontti@xxx.xxx.xxx.xxx</pre>
<p>Se um dia precisar recuperando chaves do backup</p>
<pre class="remontti-code">$ cd /onde/vc/salvou/as/chaves/
$ cp id_rsa* /home/$USER/.ssh
$ chmod 600 /home/$USER/.ssh/id_rsa
$ chmod 644 /home/$USER/.ssh/id_rsa.pub</pre>
<p>Se quiser remover os jogos que vem nele (Gosto só do gnome-chess)</p>
<pre class="remontti-code">$ sudo apt purge \
 gnome-2048 \
 aisleriot \
 atomix \
 gnome-chess \
 five-or-more \
 hitori \
 iagno \
 gnome-klotski \
 lightsoff \
 gnome-mahjongg \
 gnome-mines \
 gnome-nibbles \
 quadrapassel \
 four-in-a-row \
 gnome-robots \
 gnome-sudoku \
 swell-foop \
 tali \
 gnome-taquin \
 gnome-tetravex
$ sudo apt autoremove
</pre>
<p>Uma coisa que estava acostumado era usar o botão Backspace para voltar um diretório, que atualmente é Alt + seta para esqueda. Para contornar isso:</p>
<pre class="remontti-code">$ sudo apt install python3-nautilus
$ nano ~/.local/share/nautilus-python/extensions/BackspaceBack.py</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain"># Nautilus Backspace Back Extension
#
# Place me in ~/.local/share/nautilus-python/extensions/,
# ensure you have python-nautilus package, restrart Nautilus, and enjoy :)
#
# This script was written by molaeiali and is released to the public domain

import os, gi
gi.require_version(&#039;Nautilus&#039;, &#039;4.0&#039;)
from gi.repository import GObject, Nautilus, Gtk, Gio, GLib

def back():
                app = Gtk.Application.get_default()
                if not app.get_actions_for_accel(&quot;BackSpace&quot;):
                        app.set_accels_for_action( &quot;win.up&quot;, [&quot;BackSpace&quot;] )


class BackspaceBack(GObject.GObject, Nautilus.InfoProvider):
                def __init__(self):
                        pass

                def update_file_info(self, file):
                        back()
                        return None

</pre>
<p><strong>Cliente PPPoE</strong><br />
Crie o arquivo de configuração do PPPoE</p>
<pre class="remontti-code">$ sudo vim /etc/ppp/peers/meu-pppoe</pre>
<p>Adicione as linhas alterando eth0 pelo nome da sua interface de rede e user e password</p>
<pre class="remontti-code-plain">
# Interface de rede para a conexão PPPoE
plugin rp-pppoe.so eth0

# Nome de usuário e senha
user &quot;usuario&quot;
password &quot;senha&quot;

# Use o protocolo PAP para autenticação
noauth

# Persiste tentando a conexão em caso de falha
persist

# Use as opções padrão do pppd
usepeerdns
defaultroute

# Configurações para IPv6
+ipv6
ipv6cp-use-ipaddr
ipv6cp-accept-local
ipv6cp-accept-remote
</pre>
<p>Conectar PPPoE (Não esqueça de desativar a conexão cabeada pois ela vence o pppoe)</p>
<pre class="remontti-code">$ sudo pon meu-pppoe</pre>
<p>Para desativar a conexão PPPoE</p>
<pre class="remontti-code">$ sudo poff meu-pppoe</pre>
<h4>Firewall</h4>
<p>Para quem sai com seu computador por ai, que tal deixar um firewall de verdade!</p>
<pre class="remontti-code">$ sudo vim /etc/nftables.conf</pre>
<p>Ajuste para:</p>
<pre class="remontti-code-plain">
#!/usr/sbin/nft -f
flush ruleset

table inet filter {

    set ALLOWED_MACS {
        type ether_addr
        elements = {
            00:11:22:33:44:AA,
            00:11:22:33:44:BB,
        }
    }
    chain input {
        type filter hook input priority 0; policy drop;
        iif lo accept
        ct state established,related accept

        # Mikrotik Neigbor
        udp dport 5678 ct state new accept
        # Mikrotik permite os MAC
        meta l4proto udp meta pkttype { unicast } ether saddr @ALLOWED_MACS accept
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}</pre>
<p>Se você utiliza mikrotik, para que o Neigbor funcione precisa liberar a porta 5678 udp, e cadastrar os MAC do dispositivo que ira acessar (eu falei firewall de verdade!)</p>
<pre class="remontti-code">$ sudo systemctl enable nftables
$ sudo systemctl restart nftables</pre>
<p>Formata esse Windows ai p***** <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
Abraço!</p>
<p><strong>Gostou? Se quiser apoiar o blog e fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>O post <a href="https://blog.remontti.com.br/7512">Um pouco do meu ambiente de trabalho com Debian 12 Bookworm e Gnome 43</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7512/feed</wfw:commentRss>
			<slash:comments>20</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do Zabbix 6 LTS + NGINX + PostgreSQL + Debian 12 Bookworm</title>
		<link>https://blog.remontti.com.br/7411</link>
					<comments>https://blog.remontti.com.br/7411#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 14 Jun 2023 18:23:53 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[administração]]></category>
		<category><![CDATA[automação]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[Configuração]]></category>
		<category><![CDATA[configuração do NGINX]]></category>
		<category><![CDATA[Debian 12 Bookworm]]></category>
		<category><![CDATA[escalabilidade]]></category>
		<category><![CDATA[ferramenta]]></category>
		<category><![CDATA[gerenciamento]]></category>
		<category><![CDATA[infraestrutura]]></category>
		<category><![CDATA[instalaçao]]></category>
		<category><![CDATA[instalação do Zabbix]]></category>
		<category><![CDATA[integração com o PostgreSQL]]></category>
		<category><![CDATA[monitoramento]]></category>
		<category><![CDATA[monitoramento de rede]]></category>
		<category><![CDATA[monitoramento de servidores]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[redes]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Servidor]]></category>
		<category><![CDATA[servidores web]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[TI]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[tutorial Debian 12 Bookworm]]></category>
		<category><![CDATA[tutorial NGINX]]></category>
		<category><![CDATA[tutorial passo a passo]]></category>
		<category><![CDATA[tutorial PostgreSQL]]></category>
		<category><![CDATA[tutorial Zabbix 6 LTS]]></category>
		<category><![CDATA[Zabbix 6 LTS]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7411</guid>

					<description><![CDATA[<p>O Zabbix é uma solução de nível enterprise, de código aberto. O Zabbix é um software que monitora vários parâmetros da rede, dos servidores e da saúde dos serviços. Utiliza-se de um mecanismo flexível&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7411">Instalação do Zabbix 6 LTS + NGINX + PostgreSQL + Debian 12 Bookworm</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/zabbix_6_debian_12.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7421" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/zabbix_6_debian_12.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/06/zabbix_6_debian_12-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/zabbix_6_debian_12-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>O <strong>Zabbix</strong> é uma solução de nível enterprise, de código aberto. O Zabbix é um software que monitora vários parâmetros da rede, dos servidores e da saúde dos serviços. Utiliza-se de um mecanismo flexível de notificação que permite configurar alertas por e-mail entre outros como Telegram, para praticamente qualquer evento. As notificações permitem que se reaja rapidamente à problemas no ambiente. O Zabbix oferece excelentes recursos de relatórios e visualização de dados armazenados. Isso faz com que o Zabbix seja a ferramenta ideal para planejamento de capacidade.</p>
<h4>Requisitos Debian 12 Bookworm </h4>
<p>&#8211; <a href="https://blog.remontti.com.br/7236" rel="noopener" target="_blank">Instalação do Debian 12 Bookworm limpa passo-a-passo</a><br />
&#8211; <a href="https://blog.remontti.com.br/7413" rel="noopener" target="_blank">Servidor WEB NGINX + PHP 8.2 + PostgreSQL +Let’s Encrypt Debian 12 Bookworm (LNP)</a></p>
<h1>Instalação do Zabbix 6 LTS </h1>
<p>Para instalação do Zabbix vamos incluir o repositório do oficial do Zabbix Versão 6 LTS.</p>
<pre class="remontti-code"># su -
# cd /tmp
# apt install wget</pre>
<p><strong>Repositório  Debian 12</strong></p>
<pre class="remontti-code"># cd /tmp/
# wget https://repo.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-release/zabbix-release_6.0-5+debian12_all.deb
# apt install ./zabbix-release_6.0-5+debian12_all.deb
# apt update; apt upgrade -y; apt update</pre>
<pre class="remontti-code"># apt install zabbix-server-pgsql zabbix-frontend-php php-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent</pre>
<p>Vamos criar uma base de dados chamada <strong>zabbix</strong> e um usuário também chamado de zabbix no PostgreSQL.<br />
Não esqueça de alterar a senha: Use o gerador de senha: <a href="https://senhasegura.remontti.com.br/" rel="noopener noreferrer" target="_blank">https://senhasegura.remontti.com.br/</a></p>
<pre class="remontti-code"># su - postgres
$ createuser --pwprompt zabbix
Digite a senha para a nova role:  &lt;SENHA ZABBIX&gt;
Digite-a novamente: &lt;SENHA ZABBIX&gt;
Senha: &lt;SENHA POSTGRES CASO TENHA DEFINIDO NA INSTALAÇÃO DO MESMO&gt;

$ createdb -O zabbix zabbix
Senha: &lt;SENHA POSTGRES&gt;</pre>
<p>Importe o esquema inicial e os dados. Você será solicitado a inserir a senha que foi criada anteriormente.</p>
<pre class="remontti-code">$ zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | psql -U zabbix -d zabbix &amp;&gt;/dev/null
Senha para usuário zabbix: : &lt;SENHA ZABBIX&gt;
$ exit</pre>
<p>Edite o arquivo zabbix_server.conf para informar os dados para conexão com do PostgreSQL.</p>
<pre class="remontti-code"># vim /etc/zabbix/zabbix_server.conf</pre>
<p>Procure por <strong># DBPassword=</strong> descomente e sete sua senha.</p>
<pre class="remontti-code">#...
DBPassword=&lt;SENHA ZABBIX&gt;
#...</pre>
<p>Ajuste o arquivo /etc/zabbix/php-fpm.conf, descomente e defina o fuso horário correto. <a href="https://secure.php.net/manual/pt_BR/timezones.america.php" rel="noopener noreferrer" target="_blank">timezone</a> Sua região</a>.</p>
<pre class="remontti-code"># vim /etc/zabbix/php-fpm.conf</pre>
<p>Adicione:</p>
<pre class="remontti-code">php_value[date.timezone] = America/Sao_Paulo</pre>
<p>Ajuste as configurações do nginx.</p>
<pre class="remontti-code"># vim /etc/nginx/conf.d/zabbix.conf </pre>
<p>Deixei algumas linhas comentadas como exemplo, faça de acordo com sua necessidade.</p>
<pre class="remontti-code">server {
        listen 80;
        listen [::]:80;
        server_name    zabbix.remontti.com.br localhost;
        #server_name   OU_SEU_IP;

        # Metodo simples para quem quer rodar em uma determinada porta
        #listen 8181;
        #listen [::]:8181;
        #server_name     _;

        root    /usr/share/zabbix;
        index   index.php;

        # Desmomente para deixar restringido apenas para determinados prefixos
        #allow  192.168.87.0/24;
        #allow  127.0.0.1;
        #allow  2001:0db8::/32;
        #allow  ::1;
        #deny   all;
        #error_page  403   http://www.remontti.com.br;

        client_max_body_size 100M;
 
        location = /favicon.ico {
                log_not_found   off;
        }

        location / {
                try_files       $uri $uri/ =404;
        }

        location /assets {
                access_log      off;
                expires         10d;
        }

        location ~ /\.ht {
                deny            all;
        }

        location ~ /(api\/|conf[^\.]|include|locale) {
                deny            all;
                return          404;
        }

        location ~ [^/]\.php(/|$) {
                fastcgi_pass    unix:/var/run/php/zabbix.sock;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_index   index.php;

                fastcgi_param   DOCUMENT_ROOT   /usr/share/zabbix;
                fastcgi_param   SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
                fastcgi_param   PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;

                include fastcgi_params;
                fastcgi_param   QUERY_STRING    $query_string;
                fastcgi_param   REQUEST_METHOD  $request_method;
                fastcgi_param   CONTENT_TYPE    $content_type;
                fastcgi_param   CONTENT_LENGTH  $content_length;

                fastcgi_intercept_errors        on;
                fastcgi_ignore_client_abort     off;
                fastcgi_connect_timeout         60;
                fastcgi_send_timeout            180;
                fastcgi_read_timeout            180;
                fastcgi_buffer_size             128k;
                fastcgi_buffers                 4 256k;
                fastcgi_busy_buffers_size       256k;
                fastcgi_temp_file_write_size    256k;
        }
}
</pre>
<p>Inicie o servidor Zabbix e os processos do agente e configure-os para que sejam iniciados durante o boot do sistema.</p>
<pre class="remontti-code"># systemctl enable zabbix-server zabbix-agent</pre>
<pre class="remontti-code"># vim /etc/php/8.2/fpm/php.ini</pre>
<p>Localize <strong>max_execution_time</strong> e altere de 30 para 600</p>
<pre class="remontti-code">max_execution_time = 600</pre>
<pre class="remontti-code"># systemctl restart zabbix-server zabbix-agent nginx php8.2-fpm</pre>
<p>Acesse em seu navegador <strong>http://seu_ip:porta</strong> ou <strong>http://zabbix.seudominio.com.br</strong></p>
<p><strong>Selecione o Edioma, e Próximo passo</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_1.png" alt="" width="1562" height="827" class="alignnone size-full wp-image-6360" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_1.png 1562w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_1-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_1-1024x542.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_1-768x407.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_1-1536x813.png 1536w" sizes="auto, (max-width: 1562px) 100vw, 1562px" /></p>
<p>Se tudo estiver ok: <strong>Próximo passo</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_2.png" alt="" width="1562" height="1275" class="alignnone size-full wp-image-6361" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_2.png 1562w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_2-300x245.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_2-1024x836.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_2-768x627.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_2-1536x1254.png 1536w" sizes="auto, (max-width: 1562px) 100vw, 1562px" /></p>
<p>Selecione <strong>PostgreSQL</strong> e informe a <strong>senha do usuário zabbix </strong>criada anteriormente, clique em <strong>Próximo passo</strong>.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_3.png" alt="" width="1562" height="804" class="alignnone size-full wp-image-6362" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_3.png 1562w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_3-300x154.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_3-1024x527.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_3-768x395.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_3-1536x791.png 1536w" sizes="auto, (max-width: 1562px) 100vw, 1562px" /></p>
<p><strong>Defina um nome, e selecione o Tema padrão e clique em Próximo passo</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_4.png" alt="" width="1562" height="766" class="alignnone size-full wp-image-6363" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_4.png 1562w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_4-300x147.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_4-1024x502.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_4-768x377.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_4-1536x753.png 1536w" sizes="auto, (max-width: 1562px) 100vw, 1562px" /></p>
<p><strong>Se tudo estiver ok, Próximo passo</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_5.png" alt="" width="1562" height="766" class="alignnone size-full wp-image-6364" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_5.png 1562w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_5-300x147.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_5-1024x502.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_5-768x377.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_5-1536x753.png 1536w" sizes="auto, (max-width: 1562px) 100vw, 1562px" /></p>
<p><strong>Fim</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_6.png" alt="" width="1562" height="766" class="alignnone size-full wp-image-6365" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_6.png 1562w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_6-300x147.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_6-1024x502.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_6-768x377.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_6-1536x753.png 1536w" sizes="auto, (max-width: 1562px) 100vw, 1562px" /></p>
<p>Entre com Usuário <strong>Admin</strong> e senha <strong>zabbix</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_7.png" alt="" width="1562" height="766" class="alignnone size-full wp-image-6366" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_7.png 1562w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_7-300x147.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_7-1024x502.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_7-768x377.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_7-1536x753.png 1536w" sizes="auto, (max-width: 1562px) 100vw, 1562px" /></p>
<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_8.png" alt="" width="1562" height="1151" class="alignnone size-full wp-image-6367" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_8.png 1562w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_8-300x221.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_8-1024x755.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_8-768x566.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/zabbix_6_install_8-1536x1132.png 1536w" sizes="auto, (max-width: 1562px) 100vw, 1562px" /></p>
<p>Simples né? Gostou e quer me ajudar? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>Fontes:<br />
<a href="https://www.zabbix.com/documentation/" rel="noopener" target="_blank">https://www.zabbix.com/documentation/</a></p>
<p>O post <a href="https://blog.remontti.com.br/7411">Instalação do Zabbix 6 LTS + NGINX + PostgreSQL + Debian 12 Bookworm</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7411/feed</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
		<item>
		<title>Fortalecendo a Resiliência da Rede: Detecção de Ataques DDoS com FastNetMon, FRRouting, Grafana e Implementação em Debian 12 com Huawei &#038; RouterOS</title>
		<link>https://blog.remontti.com.br/7322</link>
					<comments>https://blog.remontti.com.br/7322#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 31 May 2023 20:38:50 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[alertas]]></category>
		<category><![CDATA[Análise de Tráfego]]></category>
		<category><![CDATA[Ataque]]></category>
		<category><![CDATA[Código Aberto]]></category>
		<category><![CDATA[Comunidade.]]></category>
		<category><![CDATA[Configuração]]></category>
		<category><![CDATA[ddos]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[Defesa]]></category>
		<category><![CDATA[Detecção]]></category>
		<category><![CDATA[detecção de ataques DDoS]]></category>
		<category><![CDATA[fastnetmon]]></category>
		<category><![CDATA[Firewalls]]></category>
		<category><![CDATA[frrouting]]></category>
		<category><![CDATA[Geração de Relatórios]]></category>
		<category><![CDATA[grafana]]></category>
		<category><![CDATA[Infraestrutura de Rede]]></category>
		<category><![CDATA[integração]]></category>
		<category><![CDATA[Melhores Práticas]]></category>
		<category><![CDATA[mitigação]]></category>
		<category><![CDATA[monitoramento]]></category>
		<category><![CDATA[Monitoramento em Tempo Real]]></category>
		<category><![CDATA[NE-Huawei]]></category>
		<category><![CDATA[notificações]]></category>
		<category><![CDATA[Políticas]]></category>
		<category><![CDATA[proteção]]></category>
		<category><![CDATA[resiliência da rede]]></category>
		<category><![CDATA[Roteadores]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Tráfego]]></category>
		<category><![CDATA[tutorial]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7322</guid>

					<description><![CDATA[<p>Este tutorial combina e aprimora dois tutoriais anteriores do blog sobre fastnetmon, incorporando melhorias e ideias compartilhadas pela comunidade ao longo do tempo. Espero que aprecie! Vamos aprender como identificar os ataques Dos/DDoS e&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7322">Fortalecendo a Resiliência da Rede: Detecção de Ataques DDoS com FastNetMon, FRRouting, Grafana e Implementação em Debian 12 com Huawei &#038; RouterOS</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><center><a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/fastnetmon.jpg" data-rel="lightbox-gallery-DDr0ErMj" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/fastnetmon.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7359" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/fastnetmon.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/05/fastnetmon-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/fastnetmon-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></a></center></p>
<p><strong><em>Este tutorial combina e aprimora dois tutoriais anteriores do blog sobre fastnetmon, incorporando melhorias e ideias compartilhadas pela comunidade ao longo do tempo. Espero que aprecie!</em></strong></p>
<p>Vamos aprender como identificar os ataques Dos/DDoS e anunciar os prefixo atacados (ou atacantes) <strong>de seu AS</strong> em envia-los para uma blackhole, e repassar os mesmo para sua operadora. (Acordo)</p>
<p>Vamos utilizar o <a href="https://github.com/pavel-odintsov/fastnetmon/" rel="noopener noreferrer" target="_blank"><strong>FastNetMon</strong></a> (<strong>Community Edition</strong>) que é um analisador de carga DoS/DDoS de alto desempenho, construído sobre vários mecanismos de captura de pacotes (NetFlow, IPFIX, sFlow, AF_PACKET, SnabbSwitch, netmap, PF_RING, PCAP). </p>
<p>Farei a instalação no <a href="https://blog.remontti.com.br/7236" rel="noopener" target="_blank"><strong>Debian 12 (Instalação Limpa)</strong></a>. O hardware utilizado por ser bem generoso, 4CPU (se for usar o influx/grafana recomendo 8CPU) e 4GB de memoria. </p>
<p>Adicione <strong>contrib non-free</strong> ao repositório.</p>
<pre class="remontti-code"># vim /etc/apt/sources.list</pre>
<p>Irá ficar assim:</p>
<pre class="remontti-code-plain">deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free

deb http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free
deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free

deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian/ bookworm-updates main non-free-firmware contrib non-free</pre>
<p>Atualize agora o repositório, e os pacotes. </p>
<pre class="remontti-code"># apt update ; apt upgrade -y
# apt install firmware-linux firmware-linux-free firmware-linux-nonfree</pre>
<p>Instale também alguns pacotes que iremos utilizar mais a frente.</p>
<pre class="remontti-code"># apt install wget tcpdump net-tools zip curl -y</pre>
<p><strong>Cenário fictício de exemplo:</strong><br />
Seu AS: 260072 <em>(Madruga Telecom)</em><br />
Operadora AS: 71 <em>(BrUxa71 Telecom)</em><br />
10.52.52.1/24 &#8211; Huawei/RouterOS<br />
10.52.52.2/24 &#8211; Servidor</p>
<h3>Configurando a interface de Rede</h3>
<p>Antes de iniciar a instalação do seu do seu servidor em meu exemplo estou usando o IP 10.52.52.2/30, porém eu NUNCA faria um NAT no roteador de borda então porque utilizar o IP privado? Simples por que ele não é acessível logo não pode ser atacado, mas por outro lado se ele não tiver internet você não poderá fazer a instalação e ele não poderá te notificar pelo telegram. Solução que eu gosto muito de aplicar em servidores é a seguinte (falo muito de como configurar interface de redes <a href="https://blog.remontti.com.br/5848" rel="noopener" target="_blank">nesse tutorial</a>, recomendo uma leitura). </p>
<p>Vamos supor que seu prefixo seja 72.72.72.0/22 e você vai alocar o ip 72.72.72.255<strong>/32</strong> para ser o IP de &#8220;loopback&#8221;. <em>Dica que esse IP não seja próximo a do prefixo público que utiliza em seus servidores</em>. Irei também configurar um IPv6 roteador da mesma forma para que ele tenha uma conectividade IPv6 qual o telegram pode se beneficiar para enviar um alerta por exemplo.</p>
<pre class="remontti-code"># vim /etc/network/interfaces</pre>
<pre class="remontti-code-plain">allow-hotplug enp0s3
iface enp0s3 inet static
    address 72.72.72.255/32

iface enp0s3 inet static
    address 10.52.52.2/24
    post-up /usr/sbin/ip route add default via 10.52.52.1 src 72.72.72.255

iface enp0s3 inet6 static
    pre-up modprobe ipv6
    address 2804:1234:bebe:caff::f0da/128

iface enp0s3 inet6 static
    pre-up modprobe ipv6
    address fd00:cafe::2/64
    post-up ip -6 route add default via fd00:cafe::1 src 2804:1234:bebe:caff:1:f0da:2:ff1f
</pre>
<p>Perceba que nós estaremos conversando com nosso roteador de borda pelo prefixo privado 10.100.0.0/30 porém todo o pacote de origem do servidor sai pelo o IP público. Caso este ip seja atacado o mesmo poderá cair em blackhole que o nosso servidor ainda terá comunicação com a borda. </p>
<p>Mas para que seu IP publico tenha rota será necessário criar um rota em seu roteador de borda apontando o IP público para o privado.</p>
<pre class="remontti-code">
RouterOS# /ip   address add interface=ether1 address=10.52.52.1/24
RouterOS# /ipv6 address add interface=ether1 address=fd00:cafe::1/64 advertise=no 
RouterOS# /ip   route add dst-address=72.72.72.255/32 gateway=10.52.52.2
RouterOS# /ipv6 route add dst-address=2804:1234:bebe:caff:1:f0da:2:ff1f/128 gateway=fd00:cafe::1
</pre>
<pre class="remontti-code">
&lt;HUAWEI&gt; system-view
[~HUAWEI] interface 25GE0/1/36
[*HUAWEI] description INTERFACE_SERVIDOR
[*HUAWEI] undo shutdown
[*HUAWEI] ipv6 enable
[*HUAWEI] ip address 10.52.52.1 255.255.255.0
[*HUAWEI] ipv6 address FD00:CAFE::1/64
[*HUAWEI] quit
[*HUAWEI] ip route-static 72.72.72.255 255.255.255.255 10.52.52.2 description FASTNETMON
[*HUAWEI] ipv6 route-static 2804:1234:bebe:caff:1:f0da:2:ff1f 128 2001:FD00:CAFE::1 description FASTNETMON
[*HUAWEI] commit
</pre>
<p>É claro que neste caso ficará sem internet, mas podemos aplicar um firewall para enviar que ele fique respondendo, apenas para deixar ele &#8220;escondidinho&#8221;. E para isso vamos usar o nftables (Que já vem instalado por padrão no Debian 11 substituindo o iptables)<br />
Habilite o mesmo para iniciar com o sistema:</p>
<pre class="remontti-code"># systemctl enable nftables</pre>
<p>Vamos montar nosso firewall de forma que apenas conexoes que forem abertas pelo servidor seja respondidas.</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<pre class="remontti-code-plain">#!/usr/sbin/nft -f

flush ruleset

# IP SERVIDOR
define IPV4_SERV = { 72.72.72.255 }
define IPV6_SERV = { 2804:1234:bebe:caff:1:f0da:2:ff1f }

# Portas aberta para ADM (vou deixar só SSH e a do Grafana)
define PORTS_ACCEP_ADM = { 22, 3000 }

table inet filter {

    set ACESSO_TOTAL4 {
        type ipv4_addr
        flags interval
        # Lista dos IPv4 com permissão
        elements = {
            127.0.0.0/8,
            192.168.0.0/16,
            172.16.0.0/12,
            10.0.0.0/8,
            100.64.0.0/10,
            72.72.72.0/24
        }
    }
    set ACESSO_TOTAL6 {
        type ipv6_addr
        flags interval
        # Lista dos IPv6 com permissão
        elements = {
            ::1,
            2804:1234:bebe::/48
        }
    }

    chain input {
        type filter hook input priority 0;

        # Aceita ICMP apenas das origens com permissão
        ip saddr @ACESSO_TOTAL4 ip protocol icmp icmp type echo-request accept
        ip6 nexthdr icmpv6 ip6 saddr @ACESSO_TOTAL6 icmpv6 type echo-request accept

        # Permite acesso as portas vindo das origens com permissão
        ip  saddr @ACESSO_TOTAL4 tcp dport { $PORTS_ACCEP_ADM } counter accept
        ip6 saddr @ACESSO_TOTAL6 tcp dport { $PORTS_ACCEP_ADM } counter accept

        # Fecha todo resto
        ip  daddr { $IPV4_SERV } ct state related,established counter accept
        ip  daddr { $IPV4_SERV } counter drop
        ip6 daddr { $IPV6_SERV } ct state related,established counter accept
        ip6 daddr { $IPV6_SERV }  counter drop

        type filter hook input priority 0;
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}
</pre>
<p>Inicie o nftables</p>
<pre class="remontti-code"># systemctl enable nftables
# systemctl start nftables</pre>
<p>Você pode simplesmente rodar um scanner de porta no seu IP público bem como um ping, o mesmo não deve responde. </p>
<h3>Instalação FastNetMon (Edição da comunidade)</h3>
<p>FastNetMon se encontra no repositório do Debian 12</p>
<pre class="remontti-code"># apt search fastnetmon</pre>
<pre class="remontti-code-plain">Sorting... Pronto
Full Text Search... Pronto
fastnetmon/testing 1.2.4-2 amd64
  fast DDoS analyzer with sflow/netflow/mirror support (community edition)</pre>
<pre class="remontti-code"># apt install fastnetmon -y</pre>
<p>Adicione todos os prefixos do seu AS, são esses os IPs serão feito analise. Dica: se você for usar o grafana recomendo cadastras todos os prefixos /24 para poder visualizar o trafego de cada prefixo em especifico</p>
<pre class="remontti-code"># vim /etc/networks_list</pre>
<pre class="remontti-code-plain">72.72.72.0/24
72.72.73.0/24
72.72.74.0/24
72.72.75.0/24
</pre>
<p>Crie também o arquivo que irá conter a lista branca de IPs (Explico mais a frente)</p>
<pre class="remontti-code"># &gt; /etc/networks_whitelist</pre>
<p>As configurações do Fastnetmon ficam em <strong>/etc/fastnetmon.conf</strong>, vamos fazer alguns ajustes básicos:<br />
Vamos começar ativando o serviço de netflow. Utilizarei o comando <strong>sed</strong> que irá buscar no arquivo <strong>netflow = off</strong> e alterar para <strong>netflow = on</strong>, nos comandos seguintes farei o mesmo, se desejar acesse o arquivo e edite manualmente.</p>
<pre class="remontti-code"># sed -i &#039;s/netflow = off/netflow = on/&#039; /etc/fastnetmon.conf</pre>
<p><strong>Ajustes para Huawei</strong></p>
<pre class="remontti-code"># sed -i &#039;s/average_calculation_time = 5/average_calculation_time = 15/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/netflow_sampling_ratio = 1/netflow_sampling_ratio = 1024/&#039; /etc/fastnetmon.conf</pre>
<p><strong>Ajustes para Mikrotik</strong></p>
<pre class="remontti-code"># Não precisa alterar nada aqui</pre>
<p>Defina por quanto tempo em segundos um IP ficará em blackhole o padrão é 1900 seg. No comando estou alterando para 10min: </p>
<pre class="remontti-code"># sed -i &#039;s/ban_time = 1900/ban_time = 600/&#039; /etc/fastnetmon.conf</pre>
<p>Altera o top 7 para o top 10 ao usar o comando fastnetmon_client (Ao seu gosto)</p>
<pre class="remontti-code"># sed -i &#039;s/max_ips_in_list = 7/max_ips_in_list = 10/&#039; /etc/fastnetmon.conf</pre>
<p>Temos diferentes abordagens para detecção dos ataques: Pacotes por segundos, largura de banda e por fluxo (flows), protocolos, nessa parte irei habilitar todos filtros, mas cada caso é uma realidade.</p>
<pre class="remontti-code"># sed -i &#039;s/ban_for_flows = off/ban_for_flows = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_tcp_bandwidth = off/ban_for_tcp_bandwidth = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_udp_bandwidth = off/ban_for_udp_bandwidth = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_icmp_bandwidth = off/ban_for_icmp_bandwidth = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_tcp_pps = off/ban_for_tcp_pps = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_udp_pps = off/ban_for_udp_pps = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_icmp_pps = off/ban_for_icmp_pps = on/&#039; /etc/fastnetmon.conf</pre>
<p>Se desejar ter mais detalhes no log, aumenta de 20 para até 200 linhas de registro no log.</p>
<pre class="remontti-code"># sed -i &#039;s/ban_details_records_count = 20/ban_details_records_count = 200/&#039; /etc/fastnetmon.conf</pre>
<p>Como temos todas as detecções ativas, precisamos ajustar cada situação para sua realidade. Você precisa ter em mente qual é o maior tráfego que pode atingir por um IP da sua rede (seu maior plano) com base nisso tenha em mente que a cada 100MB gera em torno de 10.000 pps por segundo, <strong>isso não é regra</strong> mas pode ser uma base inicial. Vamos imaginar então que meu maior plano seja 900MB, farei uma ajuste no <strong>threshold_pps</strong> para 110.000 pps para não pegar alguma rajada inicial. <strong>Mas vale lembrar que inicialmente você precisa estudar sua rede e adaptar a sua realidade.</strong></p>
<pre class="remontti-code"># sed -i &#039;s/threshold_pps = 20000/threshold_pps = 110000/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/threshold_tcp_pps = 100000/threshold_tcp_pps = 90000/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/threshold_udp_pps = 100000/threshold_udp_pps = 90000/&#039; /etc/fastnetmon.conf</pre>
<p>Agora em <strong>threshold_mbps</strong> seria o maior tráfego que você irá permitir, eu normalmente não altero e deixo no padrão 1gb. E em <strong>threshold_flows</strong> o fluxos de limite qual também mantenho o mesmo valor 3500.</p>
<pre class="remontti-code"># sed -i &#039;s/threshold_mbps = 1000/threshold_mbps = 999/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/threshold_tcp_mbps = 100000/threshold_tcp_mbps = 900/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/threshold_udp_mbps = 100000/threshold_udp_mbps = 900/&#039; /etc/fastnetmon.conf</pre>
<p>Ajustes de ICMP</p>
<pre class="remontti-code"># sed -i &#039;s/threshold_icmp_mbps = 100000/threshold_icmp_mbps = 100/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/threshold_icmp_pps = 100000/threshold_icmp_pps = 10000/&#039; /etc/fastnetmon.conf</pre>
<p>O netflow ouve a porta padrão 2055 se desejar alterar basta alterar o valor de <strong>netflow_port</strong>. Irei alterar para 52055.</p>
<pre class="remontti-code"># sed -i &#039;s/netflow_port = 2055/netflow_port = 52055/&#039; /etc/fastnetmon.conf</pre>
<p>Ainda em /etc/fastnetmon.conf temos <strong>notify_script_path</strong> que sempre que o fastnetmon identificar um ataque irá executar o script <strong>/usr/local/bin/notify_about_attack.sh</strong>, identificando o IP da sua rede que está sofrendo <strong>(incoming)</strong> o ataque ou que está atacando <strong>(outgoing)</strong> alguém. <strong>Ele NÃO irá identificar os IPs de origem</strong>, pois em um ataque quase sempre as origens são alteradas por milhares de IPs aleatórios.  </p>
<p>Faça alguns ajustes nos parâmetros do kernel</p>
<pre class="remontti-code"># vim /etc/sysctl.conf</pre>
<p>Adicione ao final do arquivo, observe enp0s3 é o nome da sua interface de rede coloque o nome da sua, pode usar o comando ip addr para visualizar </p>
<pre class="remontti-code-plain">
net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.enp0s3.rp_filter = 0</pre>
<p>Carregue as alterações:</p>
<pre class="remontti-code"># sysctl -p</pre>
<p>Habilite e reinicie o fastnetmon para carregar as novas configurações.</p>
<pre class="remontti-code"># systemctl enable fastnetmon
# systemctl restart fastnetmon</pre>
<p>Verifique se a porta 52055/udp esta ouvindo:</p>
<pre class="remontti-code"># netstat -putan  | grep 52055</pre>
<pre class="remontti-code-plain">udp        0      0 0.0.0.0:52055           0.0.0.0:*                           2522/fastnetmon     </pre>
<p>Bom mas antes de criarmos nosso script notify_about_attack.sh, precisamos preparar algumas coisas, e antes de mais nada vamos configurar nosso Huawei para enviar os dados.</p>
<p><strong>Roteador RuterOS/Mikrotik:</strong><br />
Informe apenas suas interfaces de upstream (operadoras) ex: spf1,sfp1.100</p>
<pre class="remontti-code">
RouterOS# /ip traffic-flow set active-flow-timeout=5s cache-entries=1k inactive-flow-timeout=1s interfaces=spf1,sfp1.100
RouterOS# /ip traffic-flow target add dst-address=10.52.52.2 v9-template-refresh=5 v9-template-timeout=1s
</pre>
<p><strong>Roteador Huawei:</strong></p>
<pre class="remontti-code">&lt;HUAWEI&gt; system-view
[~HUAWEI] ip netstream export version ipfix peer-as bgp-nexthop ttl
[*HUAWEI] ip netstream export template sequence-number fixed
[*HUAWEI] ip netstream export index-switch 32
[*HUAWEI] ip netstream as-mode 32
[*HUAWEI] ip netstream timeout active 1
[*HUAWEI] ip netstream timeout inactive 15
[*HUAWEI] ip netstream export template timeout-rate 1
[*HUAWEI] ip netstream export template option sampler
[*HUAWEI] ip netstream export template option application-label
[*HUAWEI] ip netstream sampler fix-packets 1024 inbound
[*HUAWEI] ip netstream sampler fix-packets 1024 outbound
[*HUAWEI] ip netstream export source 10.52.52.1
[*HUAWEI] ip netstream export host 10.52.52.2 52055</pre>
<p>slot 0 NE8000F1A / slot 10 ou 9 NE8000 M8 / slot 3 NE40</p>
<pre class="remontti-code">[*HUAWEI] slot &lt;0-10&gt;
[*HUAWEI] ip netstream sampler to slot self
[*HUAWEI]  ipv6 netstream sampler to slot self</pre>
<p>Será necessário adicionar em todas suas interfaces de Uplink: </p>
<pre class="remontti-code-plain"> ip netstream inbound
 ip netstream outbound</pre>
<p>Exemplo:</p>
<pre class="remontti-code">
interface 40GE0/1/49.71
 vlan-type dot1q 71
 description BruxaDo71Telecom
 ip address 71.71.71.2 255.255.255.252
 statistic enable
 ip netstream inbound
 ip netstream outbound
</pre>
<p>Com o tcpdump vamos monitorar a interface para ver o que esta chegando na porta.</p>
<pre class="remontti-code"># tcpdump -i enp0s3 -n udp port 52055 -T cnfp -c 10</pre>
<p>Se seu NE estiver mandado os pacotes você terá um resultado como:</p>
<pre class="remontti-code-plain">tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes
14:25:19.601113 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.608068 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.668054 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.691123 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.768055 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.781129 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.831133 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.858054 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.941124 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.958060 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
10 packets captured
10 packets received by filter
0 packets dropped by kernel</pre>
<p>Agora com o comando: </p>
<pre class="remontti-code"># fastnetmon_client</pre>
<p>Iremos visualizar os TOP IPs</p>
<pre class="remontti-code-plain">FastNetMon 1.1.3 master git- Pavel Odintsov: stableit.ru
IPs ordered by: packets
Incoming traffic       724347 pps   6998 mbps    161 flows
72.72.72.238            51973 pps    569 mbps      0 flows  *banned*
72.72.72.112            14390 pps    154 mbps      0 flows
72.72.72.93             14000 pps    150 mbps      0 flows
72.72.72.161            11705 pps    129 mbps      0 flows
72.72.72.118             8797 pps     86 mbps      0 flows
72.72.72.43              7602 pps     84 mbps      0 flows
72.72.72.111             6669 pps     64 mbps      0 flows

Outgoing traffic       291008 pps    705 mbps    101 flows
72.72.72.238            18009 pps     14 mbps      0 flows  *banned*
72.72.72.112             7929 pps      5 mbps      0 flows
72.72.72.93              7110 pps     10 mbps      0 flows
72.72.72.14              4910 pps     40 mbps      0 flows
72.72.72.43              4887 pps      2 mbps      0 flows
72.72.72.161             4537 pps      2 mbps      0 flows
72.72.72.111             3933 pps     14 mbps      0 flows

Internal traffic             0 pps      0 mbps

Other traffic              420 pps      0 mbps

Screen updated in:              0 sec 331 microseconds
Traffic calculated in:          0 sec 854 microseconds
Total amount of IPv6 packets related to our own network: 0
Not processed packets: 0 pps 

Subnet load:
72.72.72.0/22      pps in: 256000   out: 52000    mbps in: 9630  out: 1077
100.100.0.6/32     pps in: 0        out: 0        mbps in: 0     out: 0
</pre>
<p>Perceba que o IP <strong>72.72.72.238</strong> foi banido, pois o mesmo excedeu os pps de 50.000, no entanto este é um dos IPs que então em meu CGNAT, e vai ser natural este ter um comportamento diferente. Para que o <strong>fastnetmon ignore o mesmo</strong> você pode cria uma <strong>lista branca</strong>. Não se preocupe se isso acontecer com você o fastnetmon não ira fazer nenhuma ação, pois não configuramos nada ainda.<br />
Para criar a lista branca <strong>networks_whitelist</strong> com os IPs ou prefixo que deseja ignorar.</p>
<pre class="remontti-code"># vim /etc/networks_whitelist</pre>
<p>Exemplo</p>
<pre class="remontti-code-plain">72.72.72.224/28
72.72.73.224/28</pre>
<p>Reinicie para carregar as novas configurações.</p>
<pre class="remontti-code"># systemctl restart fastnetmon</pre>
<h3>Bot Telegram</h3>
<p>Para receber notificações pelo Telegram juntamente com o arquivo de log, vai ser necessário criar um bot do telegram para o uso do mesmo. Se você não sabe como criar um Bot para telegram basta você falar com o <a href="https://telegram.me/BotFather" rel="noopener" target="_blank">@BotFather</a> e enviar para ele <strong>/newbot</strong>, ele irá pedir qual nome você gostaria de dar a seu bot, e em seguida ira gera um token que vamos precisar a seguir. </p>
<p>Para o Telegram vamos usar um scriptzinho que criei.</p>
<pre class="remontti-code"># cd /tmp/
# wget https://github.com/remontti/TelegramCMD/archive/master.zip
# unzip /tmp/master.zip
# chmod a+x /tmp/TelegramCMD-master/telegram
# mv /tmp/TelegramCMD-master/telegram* /usr/local/bin/
# ln -s /usr/local/bin/telegram /bin/telegram</pre>
<p>Edite o token.conf e altere para o seu TOKEN.</p>
<pre class="remontti-code"># vim /usr/local/bin/telegram.conf/token.conf</pre>
<pre class="remontti-code">######################################
# Telegram bot                       #
# Create a new bot with @BotFather   #
# get TOKEN                          #
######################################

TOKEN=&quot;123456789:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF&quot;</pre>
<p>Esse script você pode usar para diversas coisas, ele será capaz de zipar um diretorio e lhe enviar o arquivo bem como enviar apenas uma mensagem. Como usar? É importante você saber que o IDs de grupos tem um &#8220;-&#8221; no inicio do ID, já usuários não. Para descobrir o ID do seu usuário fale com o bot <a href="https://telegram.me/myidbot" rel="noopener" target="_blank"><strong>@myidbot</strong></a> e envie para ele <strong>/getid</strong>, para saber de um grupo adicione <strong>@myidbot</strong> ao seu grupo e envie <strong>/getgroupid@myidbot</strong>. Realize um teste com um dos comandos: (Não esqueça de alterar pelo seu ID)</p>
<pre class="remontti-code-plain">Uso: telegram [Opções]
  -m: Para enviar uma mensagem
     ex: telegram -m &quot;ID Chat&quot; &quot;Meu assunto&quot; &quot;Minha mensagem...&quot;
     ex: telegram -m &quot;-123456789&quot; &quot;Notificação&quot; &quot;Mensagem para um grupo ID&quot;
     ex: telegram -m &quot;123456789&quot; &quot;Notificação&quot; &quot;Mensagem para direta/privado&quot;

  -f: Para enviar um arquivo
     ex: telegram -f &quot;ID Chat&quot; &quot;/diretorio/arquivo&quot; &quot;nome do arquivo zip&quot; &quot;Comentário&quot;
     ex: telegram -f &quot;12345689&quot; /var/log/syslog syslog &quot;Logs do sistema para user privado&quot;
     ex: telegram -f &quot;-12345689&quot; /var/log/syslog syslog &quot;Logs do sistema para um grupo&quot;

  -t: Para enviar um arquivo sem compactar
     ex: telegram -f &quot;ID Chat&quot; &quot;/diretorio/arquivo.txt&quot; &quot;Mensagem&quot;
     ex: telegram -f &quot;-12345689&quot; /var/log/fastnetmon.log &quot;Logs do sistema&quot;</pre>
<h3>FRR</h3>
<p>Vamos realizar a instalação do <a href="http://frrouting.org/" rel="noopener" target="_blank">FRRouting</a> (FRR) para fechar sessão BGP entre o roteador de borda e servidor.</p>
<pre class="remontti-code"># apt install frr frr-doc</pre>
<p>Ative o modulo BGP</p>
<pre class="remontti-code"># sed -i &#039;s/bgpd=no/bgpd=yes/&#039; /etc/frr/daemons</pre>
<p>Reinicie o FRR</p>
<pre class="remontti-code"># systemctl restart frr</pre>
<p>Entre no shell VTY do FRR.</p>
<pre class="remontti-code"># vtysh</pre>
<p>Rode o comando: `show running-config`</p>
<pre class="remontti-code-plain">Hello, this is FRRouting (version 8.4.2).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

fastnetmon#  show running-config 
Building configuration...

Current configuration:
!
frr version 8.4.2
frr defaults traditional
hostname fastnetmon
log syslog informational
no ipv6 forwarding
service integrated-vtysh-config
!
end
</pre>
<p>Agora entre no modo de configuração, e vamos preparar nosso peer com o router de borda. No exemplo está praticamente auto explicativo, vamos fechar o peer e <strong>deixar</strong> ser anunciado <strong>apenas nossos prefixos</strong> e aplicaremos a community <strong>65001:666</strong> para prefixos <strong>/32</strong> e <strong>65001:777</strong> para prefixos <strong>/24</strong></p>
<pre class="remontti-code">configure terminal
!
ip prefix-list FASTNETMON_EXPORT_32 seq 5 permit 72.72.72.0/22 le 32
!
ip prefix-list FASTNETMON_EXPORT_24 seq 5 permit 72.72.72.0/22 le 24
!
route-map MARK_FASTNETMON_IMPORT deny 10
exit
!
route-map MARK_FASTNETMON_EXPORT permit 10
 match ip address prefix-list FASTNETMON_EXPORT_24
 set community 65001:777
exit
! 
route-map MARK_FASTNETMON_EXPORT permit 20
 match ip address prefix-list FASTNETMON_EXPORT_32
 set community 65001:666
exit

!
router bgp 260072
 bgp router-id 10.52.52.2
 neighbor 10.52.52.1 remote-as 260072
 neighbor 10.52.52.1 description &quot;BORDA&quot;
 !
 address-family ipv4 unicast
  neighbor 10.52.52.1 route-map MARK_FASTNETMON_IMPORT in
  neighbor 10.52.52.1 route-map MARK_FASTNETMON_EXPORT out
 exit-address-family
exit
!
end
write memory
exit</pre>
<h4>Configuração RouterOS/Mikrotik </h4>
<p>Crie um filtro de entrada que todas as rotas /32 e /24 aprendida do fastnetmon seja setadas como blackhole ou como prefixo para mitigação, e não ensine nada para ele.</p>
<pre class="remontti-code">/routing filter
add action=accept chain=FASTNETMON_IMPORT_IPV4 prefix-length=32 \
 set-bgp-communities=65444:666 set-distance=1 set-type=blackhole
add action=accept chain=FASTNETMON_IMPORT_IPV4 prefix-length=24 \
 set-bgp-communities=65444:777 set-distance=1 set-type=blackhole
add action=discard chain=FASTNETMON_IMPORT_IPV4
add action=discard chain=FASTNETMON_EXPORT_IPV4</pre>
<p>Atenção para a instance que deve estar selecionada corretamente (use a mesma que você usa com sua operadora).</p>
<pre class="remontti-code">/routing bgp peer add name=FASTNETMON remote-as=260072 \
 in-filter=FASTNETMON_IMPORT_IPV4 out-filter=FASTNETMON_EXPORT_IPV4 \
 remote-address=10.52.52.2 update-source=10.52.52.1</pre>
<p>Exemplo de configuração para filtro para operadora</p>
<pre class="remontti-code">/routing filter
add action=accept bgp-communities=65444:666 \
 chain=OPERADORA_IPv4_EXPORT prefix-length=32 set-bgp-communities=71:666
add action=accept chain=OPERADORA_IPv4_EXPORT \
 prefix=72.72.72.0/22 prefix-length=22-24 set-bgp-communities=&quot;&quot;
add action=discard chain=OPERADORA_IPv4_EXPORT</pre>
<p>Exemplo de configuração para filtro para mitigação</p>
<pre class="remontti-code">/routing filter
add action=accept bgp-communities=65444:777 \
 chain=MITIGACAO_IPv4_EXPORT prefix=72.72.72.0/22 \
 prefix-length=24 set-bgp-communities=19000:666
add action=discard chain=MITIGACAO_IPv4_EXPORT</pre>
<h4>Configurações do Huawei</h4>
<pre class="remontti-code">&lt;HUAWEI&gt; system-view
Enter system view, return user view with return command.</pre>
<p>Crie uma rota estática de Blackhole</p>
<pre class="remontti-code">[~HUAWEI] ip route-static 192.0.2.1 255.255.255.255 NULL0 description BLACKHOLE</pre>
<p>Crie um filtro que irá aceitar qualquer rota /32</p>
<pre class="remontti-code">[*HUAWEI] ip ip-prefix  ACCEP_PREFIX_MASK32_FASTNETMON_IPV4 index 10 permit 0.0.0.0 0 greater-equal 32</pre>
<p>Crie um filtro que irá aceitar as rota /24 de seu prefixo</p>
<pre class="remontti-code">[*HUAWEI] ip ip-prefix  ACCEP_PREFIX_MASK24_FASTNETMON_IPV4 index 10 permit 72.72.72.0 22 greater-equal 24</pre>
<p>Crie filtro se desejar rejeitar algum IP ou prefixo atacado atacado, caso você deixar o fastnetmon anúnciar seu NE pode rejeitar (Ex IP Servidores ou CGNAT)</p>
<pre class="remontti-code">[*HUAWEI] ip ip-prefix  IGNORE_PREFIX_FASTNETMON_IPV4 index 10 permit 72.72.72.224 28 greater-equal 28 less-equal 32
[*HUAWEI] ip ip-prefix  IGNORE_PREFIX_FASTNETMON_IPV4 index 20 permit 72.72.73.224 28 greater-equal 28 less-equal 32</pre>
<p>Crie um filtro para nossas community  65001:666 65001:777</p>
<pre class="remontti-code">[*HUAWEI] ip community-filter basic COMM_FASTNETMON_BLACKHOLE_32 index 10 permit 65001:666
[*HUAWEI] ip community-filter basic COMM_FASTNETMON_BLACKHOLE_24 index 10 permit 65001:777</pre>
<p>Defina community para usar nos RP das operadoras</p>
<pre class="remontti-code">[*HUAWEI] ip community-filter basic COMM_BLACKHOLE_32 index 10 permit 65444:666
[*HUAWEI] ip community-filter basic COMM_BLACKHOLE_24 index 10 permit 65444:777</pre>
<p>Vamos montar agora nosso route policy de import (rotas que iremos receber). A 1ª é ignorar os prefixos <strong>IGNORE_PREFIX_FASTNETMON_IPV4</strong></p>
<pre class="remontti-code">[*HUAWEI] route-policy FASTNETMON_IMPORT_IPV4 deny node 1000
[*HUAWEI]  if-match ip-prefix IGNORE_PREFIX_FASTNETMON_IPV4</pre>
<p>A 2º é o que vir marcado do fastnetmon com 65001:666 (COMM_FASTNETMON_BLACKHOLE_32) jogar para blackhole e aplicar uma community nova <strong>65444:666</strong>, como no exemplo aqui meu AS é de 32bits vou usar um AS privado, mas onde seu AS é de 16bits o mais comunity de se encontrar é AS:666. Assim se você for trânsito de outro AS você pode montar em suas route policy para aceitar prefixos do AS dele com /32 marcados com AS:666 e jogar para blackhole também fica dica!</p>
<pre class="remontti-code">[*HUAWEI] route-policy FASTNETMON_IMPORT_IPV4 permit node 1010
[*HUAWEI]  if-match community-filter COMM_FASTNETMON_BLACKHOLE_32
[*HUAWEI]  apply local-preference 999
[*HUAWEI]  apply ip-address next-hop 192.0.2.1
[*HUAWEI]  apply community 65444:666
[*HUAWEI]  if-match ip-prefix ACCEP_PREFIX_MASK32_FASTNETMON_IPV4</pre>
<p>Vamos preparar também para receber os prefixos /24 caso for anunciar para um mitigação por exemplo.</p>
<pre class="remontti-code">
[*HUAWEI] route-policy FASTNETMON_IMPORT_IPV4 permit node 1020
[*HUAWEI]  if-match community-filter COMM_FASTNETMON_BLACKHOLE_24
[*HUAWEI]  apply local-preference 999
[*HUAWEI]  apply ip-address next-hop 192.0.2.1
[*HUAWEI]  apply community 65444:777
[*HUAWEI]  if-match ip-prefix ACCEP_PREFIX_MASK24_FASTNETMON_IPV4</pre>
<p>E a 3ª ignoramos o resto como boas praticas.</p>
<pre class="remontti-code">[*HUAWEI] route-policy FASTNETMON_IMPORT_IPV4 deny node 9999</pre>
<p>Para as route policy de export (Rotas que o NE irá ensinar) colocarei apenas um Deny pois ele não precisa ensinar nada.</p>
<pre class="remontti-code">[*HUAWEI] route-policy FASTNETMON_EXPORT_IPV4 deny node 9999
[*HUAWEI] commit</pre>
<p>Vamos ao peer</p>
<pre class="remontti-code">[~HUAWEI] bgp 260072
[~HUAWEI] undo peer 10.52.52.2
[*HUAWEI]  peer 10.52.52.2 as-number 260072
[*HUAWEI]  peer 10.52.52.2 description BORDA_VS_FASTNETMON_IPV4
[*HUAWEI]  peer 10.52.52.2 timer connect-retry 1
[*HUAWEI]  peer 10.52.52.2 connect-interface 10.52.52.1
[*HUAWEI]  peer 10.52.52.2 timer keepalive 10 hold 30 
           y
[*HUAWEI]  ipv4-family unicast
[*HUAWEI]   peer 10.52.52.2 enable
            y
[*HUAWEI]   peer 10.52.52.2 public-as-only
[*HUAWEI]   peer 10.52.52.2 route-policy FASTNETMON_IMPORT_IPV4 import
[*HUAWEI]   peer 10.52.52.2 route-policy FASTNETMON_EXPORT_IPV4 export
[*HUAWEI]   peer 10.52.52.2 next-hop-local
[*HUAWEI]   peer 10.52.52.2 advertise-community
[*HUAWEI]   peer 10.52.52.2 advertise-ext-community
[*HUAWEI] commit
[~HUAWEI] run save </pre>
<p>Em caso de alguma <strong>emergência</strong>, para <strong>baixar</strong> a sessão use:</p>
<pre class="remontti-code">[~HUAWEI] bgp 260072
[*HUAWEI] peer 10.52.52.2 ignore
[*HUAWEI] commit</pre>
<p>Para <strong>subir</strong> novamente:</p>
<pre class="remontti-code">[~HUAWEI] bgp 260072
[*HUAWEI] undo peer 10.52.52.2 ignore
[*HUAWEI] commit</pre>
<p>Verifique se sua sessão subiu:</p>
<pre class="remontti-code">[*HUAWEI] display bgp peer | include 10.52.52.2</pre>
<pre class="remontti-code-plain"> BGP local router ID : x.x.x.x
 Local AS number : 260072
 Total number of peers : 13                 Peers in established state : 13

  Peer                             V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State  PrefRcv
  10.52.52.2                       4       260072   897801  1088107     0 2496h26m Established        0</pre>
<p>No FRR use `show bgp summary`</p>
<pre class="remontti-code"># vtysh</pre>
<pre class="remontti-code-plain"># show bgp summary
IPv4 Unicast Summary:
BGP router identifier 10.52.52.2, local AS number 260072 vrf-id 0
BGP table version 0
RIB entries 0, using 0 bytes of memory
Peers 1, using 21 KiB of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt
10.52.52.1      4     260072         5         5        0    0    0 00:02:52            0        0

Total number of neighbors 1
# exit</pre>
<p>Para repassar os prefixos marcados como blackhole para sua operadora você precisará saber qual é a community que a mesma utiliza e se ela lhe oferece esse recurso, em seguida você irá adicionar a route policy da sua operadora uma nova regra:</p>
<p>No exemplo tudo que recebemos do fastnetmon passamos a aplicar a community 65444:666, logo tudo que for marcado com a mesma iremos repassar para operadora, com o community da operadora.</p>
<pre class="remontti-code">[~HUAWEI] route-policy UPSTREAM_OP_BRUXADO71_EXPORT_IPV4 permit node 2070
[*HUAWEI]  if-match community-filter COMM_BLACKHOLE_32
[*HUAWEI]  apply community 71:666</pre>
<p>Agora tudo que marcamos com community 65444:777 enviamos para mitigraçação</p>
<pre class="remontti-code">[*HUAWEI] route-policy UPSTREAM_MITIGAAI_EXPORT_IPV4 permit node 2070
[*HUAWEI]  if-match community-filter COMM_BLACKHOLE_24
[*HUAWEI]  apply community 1000:9999</pre>
<p>Pronto agora que já temos nosso peer Up entre router e servidor, nosso Bot mandando mensagem, iremos criar o script que será executado sempre que um ataque for identificado <strong>BAN</strong> ou <strong>UNBAN</strong>. Irei criar um diretório /var/log/fastnetmon_attacks/ataques qual irá ficar os ataques finalizados.</p>
<pre class="remontti-code"># mkdir /var/log/fastnetmon_attacks/ataques -p
# vim /usr/local/bin/notify_about_attack.sh</pre>
<p>Altere <strong>ID_CHAT=&#8217;-1000000000000&#8242;</strong> pelo ID do seu usuário ou grupo.<br />
Para anunciar os prefixos /24 do IP atacado altere <strong>ANUNCIAR_24</strong> para <strong>sim</strong><br />
Se não quiser receber o arquivo de log altere <strong>ARQUIVO_DE_LOG</strong> para <strong>nao</strong><br />
Dei uma encrementada para identificar a categoria do IP, que iremos ver em seguido o script que ira identificar, em <strong>IDENT_CATEGORIA</strong> vai poder classificar exemplo se um ip é de CGNAT, servidor&#8230; </p>
<pre class="remontti-code">#!/usr/bin/env bash
#
# Este script receberá os seguintes parâmetros:
# $1 IP do cliente
# $2 INCOMING -&gt; Vindo de fora da rede | OUTGOING -&gt; Saindo da sua rede
# $3 Pacotes por seguncoes
# $4 Ação (ban ou unban)
#
#--------------------------------------------------------------------------------
# Defina o ID do Chat ou Grupo  do Telegram (Grupos sempre começam com &quot;-&quot; )
ID_CHAT=&#039;-1000000000000&#039;
#
# Deseja anunciar prefixos /24? (sim/nao)
ANUNCIAR_24=&#039;nao&#039;
#
# Deseja enviar arquivo de log compactado para o telegram? (sim/nao)
ARQUIVO_DE_LOG=&#039;sim&#039;
#
# Deseja identificar a categoria do endereço atacado (sim/nao)
# script python /opt/rr_fastnetmon/prefixos.txt
IDENT_CATEGORIA=&#039;sim&#039;
#
# Seu ASN
ASN=260072
#--------------------------------------------------------------------------------
#
# Pegando prefixo 24
ip32=$1
prefixo24=&quot;${ip32%.*}.0/24&quot;
#
quebralinha=&quot;
&quot;
#
if [ &quot;$2&quot; = &quot;incoming&quot; ]; then
  TIPO=&quot;Sendo atacado&quot;
else
  TIPO=&quot;Realizando um ataque&quot;
fi
#
if [ &quot;$IDENT_CATEGORIA&quot; = &quot;sim&quot; ]; then
  CATEGORIA=$(/opt/rr_fastnetmon/categoria_ip.py $1)
else
  CATEGORIA=&quot;&quot;
fi
#
# Desbanindo um IP
if [ &quot;$4&quot; = &quot;unban&quot; ]; then
  # Remove IP do anuncio para o FRR
  if [ $ANUNCIAR_24 = &quot;sim&quot; ]; then
    /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;&lt;b&gt;(UNBAN) Anúncios removido&lt;/b&gt;&quot; &quot;&lt;code&gt; Blackhole: $1/32$quebralinha Prefixo: $prefixo24&lt;/code&gt;&quot;
    vtysh --command &quot;configure terminal
    no ip route $1/32 lo
    no ip route $prefixo24 lo
    router bgp $ASN
     address-family ipv4 unicast
      no network $1/32
      no network $prefixo24
    &quot;
  else
    /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;&lt;b&gt;(UNBAN) Anúncio removido&lt;/b&gt;&quot; &quot;&lt;code&gt; Blackhole: $1/32$quebralinha&lt;/code&gt;&quot;
    vtysh --command &quot;configure terminal
    no ip route $1/32 lo
    router bgp $ASN
     address-family ipv4 unicast
      no network $1/32
    &quot;
  fi
  # Movemos os logs para pasta ataques pois não queremos mais receber elas.
  mv /var/log/fastnetmon_attacks/$1* /var/log/fastnetmon_attacks/ataques
  exit 0
fi
#
# Banindo um IP
if [ &quot;$4&quot; = &quot;ban&quot; ]; then
  cp /var/log/fastnetmon_attacks/$1* /var/log/fastnetmon_attacks/$1.log.txt &amp;&gt;/dev/null
  # Anuncia IP ao FRR
  if [ $ANUNCIAR_24 = &quot;sim&quot; ]; then
    /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;&lt;b&gt;(BAN) $TIPO&lt;/b&gt; [ $3 pps ]&quot; &quot;Anunciando$quebralinha&lt;code&gt; Blackhole: $1/32$quebralinha Prefixo: $prefixo24&lt;/code&gt;$quebralinha &lt;i&gt;$CATEGORIA&lt;/i&gt;&quot;
    vtysh --command &quot;configure terminal
    ip route $1/32 lo
    ip route $prefixo24 lo
    router bgp $ASN
     address-family ipv4 unicast
      network $1/32
      network $prefixo24
    &quot;
  else
    /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;&lt;b&gt;(BAN) $TIPO&lt;/b&gt; [ $3 pps ]&quot; &quot;Anunciando$quebralinha&lt;code&gt; Blackhole: $1/32&lt;/code&gt;$quebralinha &lt;i&gt;$CATEGORIA&lt;/i&gt;&quot;
    vtysh --command &quot;configure terminal
    ip route $1/32 lo
    router bgp $ASN
     address-family ipv4 unicast
      network $1/32
    &quot;
  fi
  # Envio de log
  if [ $ARQUIVO_DE_LOG = &quot;sim&quot; ]; then
    /usr/local/bin/telegram -t &quot;$ID_CHAT&quot; /var/log/fastnetmon_attacks/$1.log.txt &quot;Logs do ataque&quot;
  fi
  sleep 2
  rm /var/log/fastnetmon_attacks/$1.log.txt &amp;&gt;/dev/null
  exit 0
fi
#
if [ &quot;$4&quot; == &quot;attack_details&quot; ]; then
  # Null
  exit 0
fi
</pre>
<p>De permissão para execução</p>
<pre class="remontti-code"># chmod a+x /usr/local/bin/notify_about_attack.sh</pre>
<p>Crie um diretório em /opt/rr_fastnetmon onde iremos colocar nossos scripts complementares</p>
<pre class="remontti-code"># mkdir /opt/rr_fastnetmon</pre>
<p>Crie o arquivo categoria_ip.py que utiliza python3 (Não se preocupe em instalar o python)</p>
<pre class="remontti-code"># vim /opt/rr_fastnetmon/categoria_ip.py</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">
#!/usr/bin/env python3

import sys
import ipaddress

if len(sys.argv) != 2:
    print(&quot;Uso: categoria_ip.py &lt;endereço IP&gt;&quot;)
    sys.exit(1)

ip = sys.argv[1]

# Converter o endereço IP fornecido em um objeto ipaddress.IPv4Address
endereco_ip = ipaddress.IPv4Address(ip)

# Procurar a categoria correspondente ao endereço IP no arquivo prefixos.txt
categoria = None

with open(&quot;/opt/rr_fastnetmon/prefixos.txt&quot;) as arquivo:
    for linha in arquivo:
        prefixo, cat = linha.strip().split(&quot; &quot;)
        rede = ipaddress.IPv4Network(prefixo)
        if endereco_ip in rede:
            categoria = cat
            break

if categoria is None:
    print(&quot;Categoria não encontrada para o endereço IP&quot;)
else:
    print(&quot;Categoria:&quot;, categoria)


</pre>
<pre class="remontti-code"># chmod +x /opt/rr_fastnetmon/categoria_ip.py</pre>
<p>Agora crie um arquivo prefixos.txt nele você pode classificar seus IPs assim no alarme ira lhe ajudar (ou você pode invetar algo novo). Coloque sempre os mais especificos primeiro caso você não queira declarar todos os prefixos.</p>
<pre class="remontti-code"># vim /opt/rr_fastnetmon/prefixos.txt</pre>
<p>Exemplo:</p>
<pre class="remontti-code-plain">
72.72.72.0/26 Servidor
72.72.72.128/26 CGNAT
72.72.73.0/24 Cliente_Dedicado
72.72.72.0/22 Clientes_Dinamico
</pre>
<p>Teste o script executando como no exemplo:</p>
<pre class="remontti-code"># /opt/rr_fastnetmon/categoria_ip.py 72.72.72.20
Categoria: Servidor

# /opt/rr_fastnetmon/categoria_ip.py 72.72.72.140
Categoria: CGNAT

# /opt/rr_fastnetmon/categoria_ip.py 72.72.73.100
Categoria: Cliente_Dedicado

# /opt/rr_fastnetmon/categoria_ip.py 72.72.72.80
Categoria: Clientes_Dinamico

# /opt/rr_fastnetmon/categoria_ip.py 72.72.75.9
Categoria: Clientes_Dinamico</pre>
<p>Exemplo de alarme no telegram<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/telegram.jpg" data-rel="lightbox-gallery-DDr0ErMj" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/telegram.jpg" alt="" width="356" height="742" class="alignnone size-full wp-image-7368" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/telegram.jpg 356w, https://blog.remontti.com.br/wp-content/uploads/2023/05/telegram-144x300.jpg 144w" sizes="auto, (max-width: 356px) 100vw, 356px" /></a></p>
<p>Restarte o fastnetmon</p>
<pre class="remontti-code"># systemctl restart fastnetmon</pre>
<p>Se quiser fazer um teste manual simulando um anuncio de um IP (Cuidado se estiver anunciando prefixo) exemplo: 72.72.73.255/32</p>
<pre class="remontti-code"> # /usr/local/bin/notify_about_attack.sh 72.72.73.255 incoming 9996 ban</pre>
<p>Verificando se esta enviando:</p>
<pre class="remontti-code"># vtysh --command &quot; show ip bgp neighbors 10.52.52.1 advertised-routes&quot;</pre>
<pre class="remontti-code-plain">BGP table version is 3, local router ID is 10.52.52.2, vrf id 0
Default local pref 100, local AS 260072
Status codes:  s suppressed, d damped, h history, * valid, &gt; best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop&#039;s vrf id, &lt; announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          Next Hop            Metric LocPrf Weight Path
*&gt; 72.72.73.255/32  0.0.0.0                  0         32768 i

Total number of prefixes 1</pre>
<p>Para remover:</p>
<pre class="remontti-code"> # /usr/local/bin/notify_about_attack.sh 72.72.73.255 incoming 9996 unban</pre>
<p>Finalizamos a primeira parte sem fazer nenhum estrago ao servidor (CPU) <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<p>Seria interessante fazer alguns testes de ataques (coisa pequena) mas com características reais de dentro da sua rede e de fora, escolha uma IP que não esteja em uso para tal! Para realizar esse ataque user o a ferramenta criada pelo ekovegeance: <a href="https://github.com/ekovegeance/DDOS" rel="noopener noreferrer" target="_blank">https://github.com/ekovegeance/DDOS</a> Cuidado você pode criar um alto uso de Hardware na sua rede!!!</p>
<p>Em um servidor/desktop linux vai precisar ter instalado os pacotes bash sudo curl netcat hping3 openssl stunnel nmap whois dnsutils.<br />
<a href="https://github.com/ekovegeance/DDOS/archive/v1.2.4.zip">Baixe os arquivos</a>, extraia entre em sua pasta e execute o arquivo ddos.</p>
<pre class="remontti-code">$ wget https://github.com/ekovegeance/DDOS/archive/v1.2.4.zip
$ unzip v1.2.4.zip 
$ cd DDOS-1.2.4/
$ ./ddos</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png" data-rel="lightbox-gallery-DDr0ErMj" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png" alt="" width="676" height="881" class="alignnone size-full wp-image-3988" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png 676w, https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos-230x300.png 230w" sizes="auto, (max-width: 676px) 100vw, 676px" /></a></p>
<h3>Gráficos Grafana</h3>
<p>Habilite o graphite no fastnetmon</p>
<pre class="remontti-code"># sed -i &#039;s/graphite = off/graphite = on/&#039; /etc/fastnetmon.conf</pre>
<p>Vamos instalar o <strong>influxdb</strong> para ser a base de dados</p>
<pre class="remontti-code"># apt install gnupg2 -y
# cd /tmp
# wget -q https://repos.influxdata.com/influxdata-archive_compat.key
# echo &#039;393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key&#039; \
  | sha256sum -c &amp;&amp; cat influxdata-archive_compat.key \
  | gpg --dearmor \
  | tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg &gt; /dev/null
# echo &#039;deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main&#039;\
  | tee /etc/apt/sources.list.d/influxdata.list
# apt update
# apt install influxdb -y</pre>
<p>Crie uma cópia do arquivo de configuração, e edite o mesmo</p>
<pre class="remontti-code"># cp /etc/influxdb/influxdb.conf /etc/influxdb/influxdb.conf.orig
# vim /etc/influxdb/influxdb.conf</pre>
<p>Localize [[graphite]] e insira a baixo as seguintes linhas:</p>
<pre class="remontti-code-plain">
[[graphite]]
  enabled = true
  bind-address = &quot;:2003&quot;
  protocol = &quot;tcp&quot;
  consistency-level = &quot;one&quot;
  separator = &quot;.&quot;
  templates = [
    &quot;fastnetmon.hosts.* app.measurement.cidr.direction.function.resource&quot;,
    &quot;fastnetmon.networks.* app.measurement.cidr.direction.resource&quot;,
    &quot;fastnetmon.total.* app.measurement.direction.resource&quot;
  ]</pre>
<p>Reinicie o influxdb</p>
<pre class="remontti-code"># systemctl restart influxdb</pre>
<p>Em seguida o fastnetmon</p>
<pre class="remontti-code"># systemctl restart fastnetmon</pre>
<p>Agora vamos acessar o o influxdb para ver se o banco e verificar se o graphite foi criado.</p>
<pre class="remontti-code"># influx</pre>
<pre class="remontti-code-plain">Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10</pre>
<pre class="remontti-code">&gt; SHOW databases</pre>
<pre class="remontti-code-plain">name: databases
name
----
_internal
graphite</pre>
<pre class="remontti-code">&gt; USE graphite</pre>
<pre class="remontti-code-plain">Using database graphite</pre>
<pre class="remontti-code">&gt; SHOW MEASUREMENTS</pre>
<pre class="remontti-code-plain">name: measurements
name
----
hosts
networks
total</pre>
<p>Se você tem pouco disco e deseja não salvar por tanto tempo, você pode ajustar o tempo de retenção dos dados, no comando estarei informando 90 dias (padrão é infinito) com métrica de tráfego para 7 dias (padrão ja é 7 dias), será necessário apagar o banco e recria-lo.</p>
<pre class="remontti-code">&gt; SHOW RETENTION POLICIES ON graphite</pre>
<pre class="remontti-code-plain">name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true</pre>
<p>Vamos remover o banco, criar novamente com os tempos desejados</p>
<pre class="remontti-code">&gt; DROP DATABASE graphite
&gt; CREATE DATABASE graphite WITH DURATION 90d SHARD DURATION 7d
&gt; SHOW RETENTION POLICIES ON graphite</pre>
<pre class="remontti-code-plain">name    duration  shardGroupDuration replicaN default
----    --------- ------------------ -------- -------
autogen 2160h0m0s 168h0m0s           1        true</pre>
<pre class="remontti-code">&gt; exit</pre>
<p>Reinicie os serviços novamente</p>
<pre class="remontti-code"># systemctl restart influxdb fastnetmon</pre>
<p>Você pode optar pelo modo bruto e remover com script.</p>
<pre class="remontti-code"># vim /root/limpa_graphite.sh</pre>
<p>Ajuste o número de dias que deseja que fique salvo apenas.</p>
<pre class="remontti-code">
#!/bin/bash

# Manter por quantos dias?
DIAS=&quot;7&quot;

# Define o banco de dados
DATABASE=&quot;graphite&quot;

# Define os comandos
COMMANDS=(&quot;DELETE FROM hosts WHERE time &lt; now() - ${DIAS}d&quot; &quot;DELETE FROM networks WHERE time &lt; now() - ${DIAS}d&quot; &quot;DELETE FROM total WHERE time &lt; now() - ${DIAS}d&quot;)

# Executa cada comando
for cmd in &quot;${COMMANDS[@]}&quot;; do
    echo &quot;Executing: $cmd&quot;
    influx -database &quot;$DATABASE&quot; -execute &quot;$cmd&quot;
done

echo &quot;Todos os comandos executados com sucesso&quot;
</pre>
<p>De permissão e execute, se desejar pode adicionar ao cron:</p>
<pre class="remontti-code"># chmod +x /root/limpa_graphite.sh
# /root/limpa_graphite.sh</pre>
<h4>Grafana</h3>
<p>Adicione o repositório do grafana e instale-o</p>
<pre class="remontti-code"># wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
# echo &quot;deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main&quot; | tee -a /etc/apt/sources.list.d/grafana.list
# apt update; apt install grafana -y</pre>
<p>Habilite serviço para inicialização e inicie o mesmo</p>
<pre class="remontti-code"># systemctl enable grafana-server
# systemctl start grafana-server</pre>
<p>Acesse em seu navegador <strong>http://ip_privado:3000</strong> e entre com <strong>usuário e senha admin</strong> em seguida defina uma nova senha. Atualmente o grafana esta na versão 9.5.x caso você instale uma versão superior no futuro os passos não devem mudarem muito de locais.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_1.png" data-rel="lightbox-gallery-DDr0ErMj" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_1.png" alt="" width="1453" height="777" class="alignnone size-full wp-image-7334" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_1.png 1453w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_1-300x160.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_1-1024x548.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_1-768x411.png 768w" sizes="auto, (max-width: 1453px) 100vw, 1453px" /></a></p>
<p>No menu vá em  <strong>Connections</strong>, clique em <strong>Connect data</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a2.png" data-rel="lightbox-gallery-DDr0ErMj" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a2.png" alt="" width="1445" height="728" class="alignnone size-full wp-image-7338" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a2.png 1445w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a2-300x151.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a2-1024x516.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a2-768x387.png 768w" sizes="auto, (max-width: 1445px) 100vw, 1445px" /></a><br />
Localize influxDB e clique nele<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a3.png" data-rel="lightbox-gallery-DDr0ErMj" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a3.png" alt="" width="1445" height="530" class="alignnone size-full wp-image-7339" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a3.png 1445w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a3-300x110.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a3-1024x376.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a3-768x282.png 768w" sizes="auto, (max-width: 1445px) 100vw, 1445px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_aa3.png" data-rel="lightbox-gallery-DDr0ErMj" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_aa3.png" alt="" width="1451" height="583" class="alignnone size-full wp-image-7340" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_aa3.png 1451w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_aa3-300x121.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_aa3-1024x411.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_aa3-768x309.png 768w" sizes="auto, (max-width: 1451px) 100vw, 1451px" /></a></p>
<p>Preencha apenas:<br />
URL:<strong> http://localhost:8086</strong><br />
Database: <strong>graphite</strong><br />
E clique em <strong>Save & test</strong>, você deve ter a resposta <strong>atasource is working. 3 measurements found</strong>.<br />
Mas antes de sair anote o uid que esta na <strong>URL</strong> no meu caso: <strong>da56a879-9ae6-42ca-aeb5-236e8b439be4</strong>, vamos precisar dele para facilitar ao importar as dashs.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_6.png" data-rel="lightbox-gallery-DDr0ErMj" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_6.png" alt="" width="1428" height="878" class="alignnone size-full wp-image-7341" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_6.png 1428w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_6-300x184.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_6-1024x630.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_6-768x472.png 768w" sizes="auto, (max-width: 1428px) 100vw, 1428px" /></a></p>
<p>Faça <a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/Fastnetmon-Grafana.zip"><strong>download aqui</strong></a> das Dashs e importe.<br />
- Fastnetmon - Home<br />
- Fastnetmon - Painel Geral<br />
- Fastnetmon - Top PPs<br />
- Fastnetmon - Top Prefixos<br />
- Fastnetmon - Top Hosts MBs<br />
- Fastnetmon - Top Tráfego saída<br />
- Fastnetmon - Tráfego por Prefixo<br />
- Fastnetmon - Tráfego por endereço IPv4</p>
<p>Extraia o arquivo zip e abra em um editor de texto os arquivos .json localize <strong>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</strong> e substitua pelo seu <strong>uid</strong>, assim lhe poupará de fazer ajustes manuais.<br />
Se seu desktop é um linux use o comando sed e faça em um unico comando:<br />
`sed -i 's/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/da56a879-9ae6-42ca-aeb5-236e8b439be4/' *.json`<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_7a.png" data-rel="lightbox-gallery-DDr0ErMj" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_7a.png" alt="" width="1272" height="578" class="alignnone size-full wp-image-7343" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_7a.png 1272w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_7a-300x136.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_7a-1024x465.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_7a-768x349.png 768w" sizes="auto, (max-width: 1272px) 100vw, 1272px" /></a></p>
<p>Volte para o menu <strong>e clique em Dashboards</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_4.png" data-rel="lightbox-gallery-DDr0ErMj" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_4.png" alt="" width="1440" height="479" class="alignnone size-full wp-image-7336" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_4.png 1440w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_4-300x100.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_4-1024x341.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_4-768x255.png 768w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></a><br />
Importe uma a um das Dashs.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_5.png" data-rel="lightbox-gallery-DDr0ErMj" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_5.png" alt="" width="1444" height="580" class="alignnone size-full wp-image-7337" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_5.png 1444w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_5-300x120.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_5-1024x411.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_5-768x308.png 768w" sizes="auto, (max-width: 1444px) 100vw, 1444px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral.png" data-rel="lightbox-gallery-DDr0ErMj" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral.png" alt="" width="2560" height="947" class="alignnone size-full wp-image-7374" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral.png 2560w, https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral-300x111.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral-1024x379.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral-768x284.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral-1536x568.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral-2048x758.png 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /></a></p>
<p>Gostou? Se sentindo mais seguro agora? É consultor e ganha $ com isso!?</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>Fontes:<br />
<a href="https://fastnetmon.com/install/" rel="noopener" target="_blank">https://fastnetmon.com/install/</a><br />
<a href="https://docs.frrouting.org/en/latest/bgp.html" rel="noopener" target="_blank">https://docs.frrouting.org/en/latest/bgp.html</a><br />
<a href="https://deb.frrouting.org/" rel="noopener" target="_blank">https://deb.frrouting.org/</a><br />
<a href="https://fastnetmon.com/docs/influxdb_integration/" rel="noopener" target="_blank">https://fastnetmon.com/docs/influxdb_integration/</a><br />
<a href="https://grafana.com/docs/grafana/latest/installation/debian/" rel="noopener" target="_blank">https://grafana.com/docs/grafana/latest/installation/debian/</a></p>
<p>O post <a href="https://blog.remontti.com.br/7322">Fortalecendo a Resiliência da Rede: Detecção de Ataques DDoS com FastNetMon, FRRouting, Grafana e Implementação em Debian 12 com Huawei &#038; RouterOS</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7322/feed</wfw:commentRss>
			<slash:comments>24</slash:comments>
		
		
			</item>
		<item>
		<title>Sistema de software de vigilância por vídeo de código aberto: ZoneMinder</title>
		<link>https://blog.remontti.com.br/6786</link>
					<comments>https://blog.remontti.com.br/6786#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 15 Sep 2022 19:14:51 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[cctv]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[vigilância]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6786</guid>

					<description><![CDATA[<p>ZoneMinder é um conjunto integrado de aplicativos que fornecem uma solução completa de vigilância que permite a captura, análise, gravação e monitoramento de qualquer CCTV ou câmeras de segurança conectadas a uma máquina baseada&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6786">Sistema de software de vigilância por vídeo de código aberto: ZoneMinder</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://zoneminder.com/" rel="noopener" target="_blank">ZoneMinder</a> é um conjunto integrado de aplicativos que fornecem uma solução completa de vigilância que permite a captura, análise, gravação e monitoramento de qualquer CCTV ou câmeras de segurança conectadas a uma máquina baseada em Linux. Ele foi projetado para ser executado em distribuições que suportam a interface Vídeo para Linux (V4L) e foi testado com câmeras de vídeo conectadas a placas BTTV, várias câmeras USB e também suporta a maioria das câmeras de rede IP.</p>
<p><strong>Distribuição utilizada neste tutorial:</strong><br />
Debian 11 (Bullseye) 64 bits <a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank">instalação mínima</a><br />
<a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank">Como melhorar a produtividade no seu Debian após instalação</a> (Recomendado)</p>
<p><strong>Atualize e instale os pacotes necessários</strong></p>
<pre class="remontti-code"># apt update -y 
# apt upgrade -y 
# apt install vim wget apache2 mariadb-server php libapache2-mod-php php-mysql lsb-release gnupg2 sudo -y</pre>
<p><strong>Adicione o repositório do Zoneminder</strong></p>
<pre class="remontti-code"># echo &quot;deb https://zmrepo.zoneminder.com/debian/release-1.36 &quot;`lsb_release -c -s`&quot;/&quot; &gt; /etc/apt/sources.list.d/zoneminder.list
# wget -O - https://zmrepo.zoneminder.com/debian/archive-keyring.gpg | apt-key add -
# apt update</pre>
<h4>Instalação</h4>
<pre class="remontti-code"># apt install zoneminder</pre>
<p>Ajustando o timezone do PHP</p>
<pre class="remontti-code"># sed -i &quot;s/;date.timezone =/date.timezone = $(sed &#039;s/\//\\\//&#039; /etc/timezone)/g&quot; /etc/php/7.4/apache2/php.ini</pre>
<p>Habilitaremos as configurações do zoneminder para o apache bem como ativar alguns mods. </p>
<pre class="remontti-code"># a2enconf zoneminder
# a2enmod rewrite headers expires cgi</pre>
<p>Reinicie o apache</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Crie um banco de dados para o zoneminder</p>
<pre class="remontti-code"># mariadb -u root</pre>
<p>Altere ALTERE_3ST4_SENHA para sua senha.</p>
<pre class="remontti-code-plain">CREATE DATABASE zm;
GRANT ALL PRIVILEGES ON zm.* TO &#039;zm&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;ALTERE_3ST4_SENHA&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Altere em /etc/zm/zm.conf ZM_DB_USER e ZM_DB_PASS para os calores criados.</p>
<pre class="remontti-code"># vim /etc/zm/zm.conf</pre>
<pre class="remontti-code-plain">ZM_DB_USER=zm
ZM_DB_PASS=ALTERE_3ST4_SENHA</pre>
<p>Habilite o zoneminder para iniciar no boot e start o mesmo.</p>
<pre class="remontti-code"># systemctl enable zoneminder
# systemctl start zoneminder</pre>
<p>Por segurança recomendo definir uma senha para o root do mariaDB<br />
Para aumentar a seguraçã vamos definir uma senha para o usuário root do MariDB, não esqueça de alterar ALTERE_3ST4_SENHA pela sua senha.</p>
<pre class="remontti-code"># mariadb -u root</pre>
<pre class="remontti-code-plain">USE mysql;
ALTER USER &#039;root&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;ALTERE_3ST4_SENHA&#039;;
FLUSH PRIVILEGES;
EXIT;</pre>
<p>Apague seus rastros, em /root/.mysql_history temos um histórico com todos os comandos dado no terminal do MariaDB, então não é legal deixar lá em texto puro a senha!</p>
<pre class="remontti-code"># &gt; /root/.mysql_history</pre>
<p>Abra o Zoneminder em seu navegador acessando<strong> http://___IP___/zm </strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start.png" data-rel="lightbox-gallery-YUq0Ud6Z" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start-300x206.png" alt="" width="300" height="206" class="alignnone size-medium wp-image-6792" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start-1024x703.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start-768x528.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start-1536x1055.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Clique em <strong>APPLY</strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01.png" data-rel="lightbox-gallery-YUq0Ud6Z" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01-300x75.png" alt="" width="300" height="75" class="alignnone size-medium wp-image-6793" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01-300x75.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01-1024x255.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01-768x191.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01-1536x382.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Para alterar para Portugues acesse o menu <strong>Options</strong> localize <strong>LANG_DEFAULT</strong> e altere para <strong>pt_br</strong> e clique em <strong>SAVE</strong>. Recarregue a pagina para atualiza.</p>
<p>Para mais ajuda acesse: <strong><a href="https://zoneminder.readthedocs.io/en/stable/userguide/index.html" rel="noopener" target="_blank">Guia do Usuário</a></strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02.png" data-rel="lightbox-gallery-YUq0Ud6Z" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02-300x120.png" alt="" width="300" height="120" class="alignnone size-medium wp-image-6801" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02-300x120.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02-1024x411.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02-768x308.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02-1536x617.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02.png 1666w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>FONTES:<br />
<a href="https://zoneminder.readthedocs.org/" rel="noopener" target="_blank">https://zoneminder.readthedocs.org/</a><br />
<a href="https://wiki.zoneminder.com/Debian_11_Bullseye_with_Zoneminder_1.36.x" rel="noopener" target="_blank">https://wiki.zoneminder.com/Debian_11_Bullseye_with_Zoneminder_1.36.x</a><br />
<a href="https://github.com/ZoneMinder/ZoneMinder" rel="noopener" target="_blank">https://github.com/ZoneMinder/ZoneMinder</a><br />
RECOMENDADO:<br /><a href="https://github.com/pliablepixels/zmeventnotification" rel="noopener" target="_blank">https://github.com/pliablepixels/zmeventnotification</a><br /><a href="https://github.com/pliablepixels/zmMagik" rel="noopener" target="_blank">https://github.com/pliablepixels/zmMagik</a><br /><a href="https://github.com/manupap1/libzoneminder-plugin-openalpr" rel="noopener" target="_blank">https://github.com/manupap1/libzoneminder-plugin-openalpr</a></p>
<p>O post <a href="https://blog.remontti.com.br/6786">Sistema de software de vigilância por vídeo de código aberto: ZoneMinder</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6786/feed</wfw:commentRss>
			<slash:comments>19</slash:comments>
		
		
			</item>
		<item>
		<title>NTS – Mantenha a hora certa em seu servidor com segurança!</title>
		<link>https://blog.remontti.com.br/5691</link>
					<comments>https://blog.remontti.com.br/5691#comments</comments>
		
		<dc:creator><![CDATA[Iulisloi Zacarias]]></dc:creator>
		<pubDate>Sat, 26 Jun 2021 13:32:22 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[hora]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[nts]]></category>
		<category><![CDATA[Segurança]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5691</guid>

					<description><![CDATA[<p>Este tutorial foi escrito pelo meu amigo: Iulisloi Zacarias Manter o relógio dos seus servidores corretamente ajustado pode evitar muita dor de cabeça. Alguns softwares simplesmente podem não funcionar com a hora incorreta, como&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5691">NTS – Mantenha a hora certa em seu servidor com segurança!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/06/Network-Time-Security.png" alt="" width="720" height="340" class="alignnone size-full wp-image-5695" /></p>
<p><strong>Este tutorial foi escrito pelo meu amigo:</strong> <a href="https://telegram.me/izacarias" target="_blank" rel="noopener">Iulisloi Zacarias</a></p>
<p>Manter o relógio dos seus servidores corretamente ajustado pode evitar muita dor de cabeça. Alguns softwares simplesmente podem não funcionar com a hora incorreta, como exemplo cito aqui o DNSSEC e estrutura de chaves RPKI (nada muito grave, não é mesmo?!). Vale lembrar também que rastrear um problema ou conduzir uma auditoria fica muito mais fácil e assertivo se você manter os registros de data e hora nos <em>logs</em> com a informação correta.</p>
<p>O NTP é um protocolo que é utilizado para sincronizar a hora dos seus servidores e computador com uma fonte confiável de informação de hora, como por exemplo os servidores do projeto NTP.br. Há um tutorial muito completo sobre como manter seus servidores com a data correta <a href="https://blog.remontti.com.br/5608" target="_blank" rel="noopener">aqui</a>.</p>
<p>Mas você já parou para pensar sobre a segurança do NTP. As informações trafegam pela rede de forma aberta (isso não é um problema, já que saber a hora não é nenhum segredo) e sem mecanismos que permitam verificar se ela foi modificada, e isto sim pode ser um problema. Este tipo de ataque é chamado de ataque man-in-the-middle e consiste em um indivíduo mal-intencionado modificar a informação enquanto ela trafega pela rede. Além disso outro ataque bem comum é o “replay” de pacotes, ou seja, um atacante captura um pacote da comunicação original, e em seguida cria vários pacotes com as mesmas informações do pacote original, mas manipulando os campos que ele tem interesse e em seguida envia para as máquinas que ele deseja atacar. Pensando em resolver este problema de segurança, o NTS foi proposto (<a href="https://datatracker.ietf.org/doc/rfc8915/" target="_blank" rel="noopener">RFC 8915</a> https://datatracker.ietf.org/doc/rfc8915/).</p>
<p>Neste tutorial vamos utilizar o NTPsec, que é um “fork” da implementação de referência NTP e vêm ganhando popularidade no mundo Linux por ser umas das primeiras implementações NTP a ter suporte ao NTS.</p>
<p><strong><span style="color: red">É importante lembrar que o NTPsec têm a mesma função do pacote ntp no Debian e você não deve usar os dois ao mesmo tempo!</span></strong></p>
<p>Lembrando que utilizei o Debian 10:</p>
<pre class="remontti-code"># cat /etc/os-release</pre>
<pre class="remontti-code">PRETTY_NAME=&quot;Debian GNU/Linux 10 (buster)&quot;
NAME=&quot;Debian GNU/Linux&quot;
VERSION_ID=&quot;10&quot;
VERSION=&quot;10 (buster)&quot;
VERSION_CODENAME=buster
ID=debian
HOME_URL=&quot;https://www.debian.org/&quot;
SUPPORT_URL=&quot;https://www.debian.org/support&quot;
BUG_REPORT_URL=&quot;https://bugs.debian.org/&quot;</pre>
<p><strong>IMPORTANTE:</strong><br />
O uso do TLS 1.3 é obrigatório para o NTS e portanto este tutorial <strong>NÃO funcionará com Debian 9 ou Ubuntu 16.04</strong>.<br />
Neste tutorial uso o repositório <strong>backports</strong> do Debian. As versões dos programas são testadas no Debian stable, no entanto não são testadas tão extensivamente como as versões dos repositórios padrão do Debian.</p>
<p><strong><span style="color: red">Se você for um usuário iniciante no Debian/Linux, não recomendo fazer esta configuração em um servidor em produção!!!!</span></strong></p>
<p>Sem mais delongas, vamos lá…<br />
<strong>Iniciando</strong><br />
Torne-se root no seu sistema utilizando o comando “su -”</p>
<pre class="remontti-code">$ su -</pre>
<p>(OBS: utilize o comando “su menos”)<br />
Vamos garantir que outros clientes NTP não estejam em execução:</p>
<pre class="remontti-code"># systemctl stop ntp
# systemctl stop chrony
# systemctl stop openntpd
# systemctl stop systemd-timesyncd.service
# systemctl disable ntp
# systemctl disable chrony
# systemctl disable openntpd
# systemctl disable systemd-timesyncd.service
</pre>
<p><strong>Instalação do NTPsec e suas dependências</strong></p>
<p>Como o <strong>NTS</strong> é bem recente, vamos precisar instalar o NTPsec 1.2.0. No momento em que estou escrevendo este tutorial a versão do NTPsec nos repositórios padrão do Debian 10 é a 1.1.3. Nós vamos habilitar o repositório backports (stable-bpo) para que seja possível instalar a versão 1.2.0 do NTPsec no nosso Debian 10. Será necessário instalar também o pacote “ca-certificates” para podermos validar os certificados que os servidores vão nos oferecer.</p>
<pre class="remontti-code"># echo &quot;deb http://deb.debian.org/debian buster-backports main&quot; | tee /etc/apt/sources.list.d/buster-backports.list
# apt update
# apt install -y ntpsec/buster-backports ca-certificates</pre>
<p>Vamos ajustar as configurações do NTPsec para utilizar os servidores da Netnod (uma empresa que mantém servidores de hora para o governo da Suécia) e da Cloudflare. Por enquanto não temos servidores oficiais de hora no Brasil com suporte ao NTS (hey <a href="https://ntp.br/" target="_blank" rel="noopener">NTP.br</a>, vamos?!). Você pode incluir outros servidores NTS quando eles forem disponibilizados. Seguindo a metodologia do <a href="https://telegram.me/remontti" target="_blank" rel="noopener">Remontti</a>, vamos criar um arquivo para a nossa configuração e manter cópia do arquivo de configuração original:</p>
<pre class="remontti-code"># mv /etc/ntpsec/ntp.conf /etc/ntpsec/ntp.conf.orig
# vim /etc/ntpsec/ntp.conf</pre>
<p>Conteúdo do arquivo:</p>
<pre class="remontti-code"># /etc/ntpsec/ntp.conf, configuração para o ntpd; veja ntp.conf(5) para ajuda
# Configuraçao do drift file para o NTPsec computar os erros do relógio do seu computador
driftfile /var/lib/ntpsec/ntp.drift
leapfile /usr/share/zoneinfo/leap-seconds.list

# Configuracao do diretório de log
statsdir /var/log/ntpsec/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Lista dos servidores com suporte NTS, você pode adicionar mais servidores à lista
server nts.netnod.se:4460 nts iburst
server sth1.nts.netnod.se:4460 nts iburst
server sth2.nts.netnod.se:4460 nts iburst
server time.cloudflare.com:4460 nts

# Permite trocar informações de hora com qualquer computador mas não permite configuração
# Segundo o guia do netnod essa configuração atende 99% dos casos ;-)
restrict default kod limited nomodify nopeer noquery
restrict -6 default kod limited nomodify nopeer noquery

# Permite consultas locais
restrict 127.0.0.1
restrict -6 ::1</pre>
<p>Crie o arquivo ntp.drift e o diretório para os logs e reinicie o serviço</p>
<pre class="remontti-code"># touch /var/lib/ntpsec/ntp.drift
# chown ntpsec:ntpsec /var/lib/ntpsec/ntp.drift
# mkdir /var/log/ntpsec
# chown -R ntpsec:ntpsec /var/log/ntpsec
# systemctl restart ntpsec</pre>
<p>Vamos verificar com quais servidores estamos tentando sincronizar:</p>
<pre class="remontti-code"># ntpq -p -u -w</pre>
<p>Irá listar algo como</p>
<pre class="remontti-code">     remote                                   refid      st t when poll reach   delay   offset   jitter
=======================================================================================================
+sth-ts.nts.netnod.se                    96.180.207.109   2 8   22   64   77 310.16ms 7.2680ms 10.631ms
*ntsts.sth1.ntp.se                       96.180.207.109   2 8   18   64   77 307.50ms 6.5467ms 13.046ms
+sth2-ts.nts.netnod.se                   156.133.237.214  2 8   22   64   77 305.86ms 4.2228ms 9.6702ms
-162.159.200.1                           10.191.8.4       3 8   23   64   77 61.953ms -31.52ms 19.442ms</pre>
<p>Verifique a coluna “st”. Esta coluna indica o stratum (ou estrato) e o valor 16 indica que o servidor está inoperante. No meu exemplo todos os servidores estão em operação pois os valores são 2, 2, 2, e 3. Veja também que há uma linha que inicia com um asterisco (*ntsts.sth1.ntp.se), esta informação indica que o NTPsec decidiu usar este servidor como principal referência para sincronização.</p>
<p>A coluna “refid” indica o servidor de referência do servidor NTS que você está consultando, isto é, onde o servidor NTS busca sua informação de hora. Se você observar o valor “.NTS.” na coluna “refid” no lugar dos IPs ou nomes de servidores, significa que o NTPsec ainda está negociando a conexão segura com o servidor e ainda não foi capaz de buscar informações de hora. Outra informação importante está na coluna “t” (quarta coluna da esquerda para a direita) que indica a quantidade de “cookies” que seu computador têm para usar com o servidor. Este valor deve ser 8. Números menores na coluna “t” indica conexões interrompidas (o valor 7 pode indicar que uma requisição está em progresso).</p>
<p>Por fim se tudo estiver funcionando corretamente, você pode incluir o NTPsec na inicialização do Linux:</p>
<pre class="remontti-code"># systemctl enable ntpsec</pre>
<p>É isso, agora a sincronização do seu relógio está protegida pela tecnologia mais avançada em termos de NTP <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>OBS:</strong> se a data do computador estiver muito atrasada ou muito adiantada, o NTS pode encontrar problemas em estabelecer uma conexão com o servidor de chaves do NTS e neste caso você precisa ajustar a data do servidor para um valor aproximado do atual (um dia de atraso não chega a ser um problema). Use o comando abaixo para ajustar a data, escrevendo a data no formato YYYYMMDD (Ano com quatro dígitos, Mês com dois dígitos e Dia com dois dígitos).</p>
<pre class="remontti-code">date +%Y%m%d -s &quot;20210617&quot;</pre>
<h4>Criando um servidor NTS</h4>
<p>Como dito anteriormente, o NTS é uma forma segura de sincronizar a hora do seu computador, para tanto ele usa uma camada de segurança baseada em TLS 1.3 e assim é OBRIGATÓRIO que você use um certificado digital. O certificado não pode ser autoassinado pois não funcionará (até funciona, com algumas “gambiarras”). A maneira mais fácil é usando um certificado Let’s Encrypt, mas vai precisar que seu servidor tenham um nome FQDN (ou seja, precisará de um domínio registrado, por exemplo: nts.meuservidor.com.br).<br />
Só para facilitar, lista dos requisitos:</p>
<ul>
<li>Debian 10</li>
<li>Certificado Digital</li>
<li>Um nome FQDN (domínio registrado)</li>
<li>Cliente NTS já configurado e funcionando</li>
</ul>
<p>Se você já tem um certificado válido no seu servidor e você vai usar o mesmo nome de máquina para o servidor NTS, você pode reusar o mesmo certificado. Caso contrário será necessário usar o certbot para solicitar um novo certificado.</p>
<p>Instale o certbot para obtermos o certificado digital:</p>
<pre class="remontti-code"># apt install certbot</pre>
<p><strong>Pare qualquer servidor HTTP antes de solicitar o novo certificado.</strong></p>
<pre class="remontti-code">systemctl stop apache2
systemctl stop nginx</pre>
<p>Solicite um novo certificado:</p>
<pre class="remontti-code"># certbot certonly --standalone</pre>
<p>Preencha os dados do seu certificado (no meu caso eu chamei meu servidor de nts.remontti.com.br, adapte para seu servidor) e responda o resto das perguntas como o modelo abaixo</p>
<pre class="remontti-code">Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices) (Enter &#039;c&#039; to
cancel): seumelhoremail@example.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let&#039;s Encrypt project and the non-profit
organization that develops Certbot? We&#039;d like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Please enter in your domain name(s) (comma and/or space separated)  (Enter &#039;c&#039;
to cancel): nts.remontti.com.br
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for nts.remontti.com.br
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/nts.remontti.com.br/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/nts.remontti.com.br/privkey.pem
   Your cert will expire on 2021-09-21. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   &quot;certbot renew&quot;
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let&#039;s Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le</pre>
<p><strong>Agora você á pode reiniciar o servidor HTTP, caso tenha parado o serviço antes de solicitar o certificado.</strong></p>
<p>Vamos copiar o certificado para a pasta do NTPsec para garantir a segurança do mesmo, afinal não queremos dar permissões em excesso para o arquivo possibilitando que alguém roube nossa chave privada invalidando toda nossa segurança.<br />
<strong>Não esqueça de ajustar o caminho dos arquivos do certificado digital, pois o certbot usa o nome do domínio para criar a estrutura de pastas utilizada para armazenar estes arquivos.</strong></p>
<pre class="remontti-code"># cp -v /etc/letsencrypt/live/nts.remontti.com.br/privkey.pem /etc/ntpsec/key.pem
# cp -v /etc/letsencrypt/live/nts.remontti.com.br/fullchain.pem /etc/ntpsec/cert-chain.pem
# chown ntpsec:ntpsec /etc/ntpsec/key.pem
# chown ntpsec:ntpsec /etc/ntpsec/cert-chain.pem
# chmod 600 /etc/ntpsec/key.pem
# chmod 600 /etc/ntpsec/cert-chain.pem</pre>
<p>Para ativar o servidor NTS no NTPsec, vamos editar o arquivo de configuração que criamos anteriormente</p>
<pre class="remontti-code"># vim /etc/ntpsec/ntp.conf</pre>
<p>Ao final do arquivo /etc/ntpsec/ntp.conf por volta da linha 28 (ative o número de linhas no vim com o comando &#8220;:set nu&#8221;), adicione as configurações abaixo:</p>
<pre class="remontti-code"># Servidor NTS
nts enable
nts key /etc/ntpsec/key.pem
nts cert /etc/ntpsec/cert-chain.pem
nts cookie /var/lib/ntpsec/nts-keys</pre>
<p>O conteúdo do arquivo ficará semelhante ao reproduzido abaixo:</p>
<pre class="remontti-code"># Configuraçao do drift file para o NTPsec computar os erros do relógio do seu computador
driftfile /var/lib/ntpsec/ntp.drift
leapfile /usr/share/zoneinfo/leap-seconds.list

# Configuracao do diretório de log
statsdir /var/log/ntpsec/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Lista dos servidores com suporte NTS, você pode adicionar mais servidores à lista
server nts.netnod.se:4460 nts iburst
server sth1.nts.netnod.se:4460 nts iburst
server sth2.nts.netnod.se:4460 nts iburst
server time.cloudflare.com:4460 nts

# Permite trocar informações de hora com qualquer computador mas não permite configuração
# Segundo o guia do netnod essa configuração atende 99% dos casos ;-)
restrict default kod limited nomodify nopeer noquery
restrict -6 default kod limited nomodify nopeer noquery

# Permite consultas locais
restrict 127.0.0.1
restrict -6 ::1

nts enable
nts key /etc/ntpsec/key.pem
nts cert /etc/ntpsec/cert-chain.pem
nts cookie /var/lib/ntpsec/nts-keys</pre>
<p>Crie o arquivo utilizado pelo NTPsec para armazenar os cookies dos clientes e configure as permissões do mesmo:</p>
<pre class="remontti-code"># touch /var/lib/ntpsec/nts-keys
# chown ntpsec:ntpsec /var/lib/ntpsec/nts-keys
# chmod 600 /var/lib/ntpsec/nts-keys</pre>
<p>Por fim, reinicie o NTPsec:</p>
<pre class="remontti-code"># systemctl restart ntpsec</pre>
<p>Para verificar se tudo está correto, use o comando abaixo:</p>
<pre class="remontti-code"># systemctl status ntpsec</pre>
<p>Verifique o campo “Active:” a informação “active (running)” indica que o NTPsec está em execução. Não se assuste com algumas linhas em vermelho, se sua saída for semelhante ao texto abaixo (principalmente a última linha “NTSs: Private Key OK”), tudo está bem:</p>
<pre class="remontti-code">jun 18 16:49:44 nts ntpd[54392]: NTSs: starting NTS-KE server listening on port 4460
jun 18 16:49:44 nts ntpd[54392]: NTSs: OpenSSL security level is 2
jun 18 16:49:44 nts ntpd[54392]: NTSs: starting NTS-KE server listening on port 4460
jun 18 16:49:44 nts ntpd[54392]: NTSs: listen4 worked
jun 18 16:49:44 nts ntpd[54392]: NTSs: listen6 worked
jun 18 16:49:44 nts ntpd[54392]: NTSc: Using system default root certificates.
jun 18 16:49:44 nts ntpd[54392]: NTSs: loaded certificate (chain) from /etc/ntpsec/cert-chain.pem
jun 18 16:49:44 nts ntpd[54392]: NTSs: loaded private key from /etc/ntpsec/key.pem
jun 18 16:49:44 nts ntpd[54392]: NTSs: Private Key OK</pre>
<p>Caso não veja estas informações com o comando acima, você pode tentar usar o comando o</p>
<pre class="remontti-code">journalctl -u ntpsec.service</pre>
<p>para verificar as informação de inicialização do NTPsec e rastrear possíveis erros.</p>
<p><strong>Firewall com nftables</strong></p>
<p>Nosso servidor está configurado e funcionando e apesar de o NTS ser muito mais seguro que o NTP, ainda assim não custa nada implementarmos um Firewall. Vamos utilizar o mesmo script do tutorial que o @Remontti preparou para o NTP.<br />
Instale o nftables e o habilite para inciar com o sistema</p>
<pre class="remontti-code"># apt install -y nftables
# systemctl enable nftables</pre>
<p>Crie o arquivo com as regras do nftables. Observe que temos duas listas chamadas acesso-ntp-local-v4 e acesso-ntp-local-v6 onde informamos todos os IPs que podem solicitar informação de hora na nossa rede (Informe os IPs de sua rede!).</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<pre class="remontti-code">#!/usr/sbin/nft -f

flush ruleset
 
table inet filter {
 
    # Permite os ips da sua rede
    set acesso-ntp-v4 {
        type ipv4_addr
        flags interval
        elements = { 127.0.0.1, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, 100.64.0.0/10, 200.200.200.0/22 }
    }
    set acesso-ntp-v6 {
        type ipv6_addr
        flags interval
        elements = { ::1,  2804:ff4:bebe::/48 }
    }
 
    chain input {
        type filter hook input priority 0;
 
        # NTP
        ip saddr  @acesso-ntp-v4 tcp dport 4460 counter accept
        ip saddr  @acesso-ntp-v4 udp dport 123 counter accept
        ip6 saddr @acesso-ntp-v6 tcp dport 4460 counter accept
        ip6 saddr @acesso-ntp-v6 udp dport 123 counter accept
        tcp dport 4460 counter drop
        udp dport 123 counter drop
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}</pre>
<p>Reinicie o nftables em seguida verifique se as regras foram carregadas:</p>
<pre class="remontti-code"># systemctl restart nftables
# nft list ruleset</pre>
<h4>Script para renovação automática do certificado</h4>
<p>O certificado digital oferecido gratuitamente pelo Let&#8217;s Encrypt tem validade de 90 dias. Para evitar que o nosso servidor NTS fique com um certificado expirado (vencido), vamos criar um script de renovação que será executado periodicamente pelo cron.</p>
<p>Crie o arquivo renovassl.sh</p>
<pre class="remontti-code"># vim /etc/letsencrypt/renovassl.sh</pre>
<p>com o seguinte conteúdo:</p>
<pre class="remontti-code">#!/bin/bash

# Variaveis
CHAINFILE=$(cat /etc/letsencrypt/renewal/* | awk -F &#039;=&#039; &#039;$1~/fullchain/{print $2;exit}&#039;)
KEYFILE=$(cat /etc/letsencrypt/renewal/* | awk -F &#039;=&#039; &#039;$1~/privkey/{print $2;exit}&#039;)

# Para temporariamente o servidor web
# Precisamos da porta 80 e 443 livre para o certbot conseguir renovar o certificado
# - Remova o comentário (#) da linha correspondente ao seu servidor web
# /usr/bin/systemctl stop apache2
# /usr/bin/systemctl stop nginx

# Permite o certbot se conectar a porta 80 e 443 para renovar o certificado
nft add rule inet filter input tcp dport 80 counter accept
nft add rule inet filter input tcp dport 443 counter accept


# Aguarda 10 seg (tempo do apache parar) 
sleep 10

# Renova o certificado
/usr/bin/certbot -q renew

# Aguarda o certificado renovar
sleep 30

# Aguarda 2 seg
sleep 2
 
# Restarta o servidor web
# Caso você tenha um servidor web (Apache, Nginx, Lighttpd...), reinicie o serviço
# /usr/bin/systemctl restart apache2
# /usr/bin/systemctl restart nginx

# Para o serviço ntpsec
/usr/bin/systemctl stop ntpsec

# Copia cadeia de certificado e chave privada para o diretorio do NTPsec
/usr/bin/cp $CHAINFILE /etc/ntpsec/cert-chain.pem
/usr/bin/cp $KEYFILE /etc/ntpsec/key.pem

# Altera as permissoes para o usuário speedtest conseguir ler os certificados
/usr/bin/chown ntpsec:ntpsec /etc/ntpsec/cert-chain.pem
/usr/bin/chown ntpsec:ntpsec /etc/ntpsec/key.pem
/usr/bin/chmod 600 /etc/ntpsec/cert-chain.pem
/usr/bin/chmod 600 /etc/ntpsec/key.pem

# Reinicia o serviço NTPsec
/usr/bin/systemctl start ntpsec

# Reinicia o nftables para restaurar as regras
/usr/bin/systemctl restart nftables</pre>
<p><strong>Lembre-se de ajustar o script conforme sua necessidade. Você pode ajustar o caminho da chave privada e da cadeia de certificados atribuindo o caminho dos arquivos correspondentes às variávies CHAINFILE e KEYFILE.</strong></p>
<p>Dê permissão de execução ao arquivo renovassl.sh</p>
<pre class="remontti-code"># chmod +x /etc/letsencrypt/renovassl.sh</pre>
<p>E adicione o script ao cron para que a tarefa seja executada periodicamente:</p>
<pre class="remontti-code"># echo &#039;00 00   1 * *   root    /etc/letsencrypt/renovassl.sh&#039; | tee -a /etc/crontab</pre>
<p>Dica, se desejar desativar o TLS1.0 e TLS1.1 após criar um certificado um arquivo é criado /etc/letsencrypt/options-ssl-apache.conf, então edite e inclua no SSLProtocol TLSv1 -TLSv1.1</p>
<pre class="remontti-code"># vim /etc/letsencrypt/options-ssl-apache.conf</pre>
<p>Ficando</p>
<pre class="remontti-code">#SSLProtocol            all -SSLv2 -SSLv3
SSLProtocol             all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1</pre>
<p>Reinicie o Apache:</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Para testar acesse: <a href="https://www.cdn77.com/tls-test/" rel="noopener" target="_blank">https://www.cdn77.com/tls-test/</a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste.png" data-rel="lightbox-gallery-imXXtjIZ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-300x182.png" alt="" width="300" height="182" class="alignnone size-medium wp-image-6158" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-300x182.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-1024x620.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-768x465.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste.png 1099w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Gostou? Quer ajudar o blog? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário ficaremos felizes em saber que ajudamos. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" target="_blank" rel="noopener noreferrer">clique aqui.</a></p>
<p>O post <a href="https://blog.remontti.com.br/5691">NTS – Mantenha a hora certa em seu servidor com segurança!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5691/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Port knocking, aprenda a melhorar as política de segurança de seu firewall Linux e Mikrotik</title>
		<link>https://blog.remontti.com.br/5390</link>
					<comments>https://blog.remontti.com.br/5390#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 13 Mar 2021 21:23:34 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[knocking]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[pptp]]></category>
		<category><![CDATA[proteção]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[vpn]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5390</guid>

					<description><![CDATA[<p>Port knocking é um método de abrir portas externamente em um firewall, realizando tentativas de conexões em uma sequemcia de portas fechadas pré-especificadas, e depois que esta sequência estiver correta as regras de firewall&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5390">Port knocking, aprenda a melhorar as política de segurança de seu firewall Linux e Mikrotik</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Port knocking é um método de abrir portas externamente em um firewall, realizando tentativas de conexões em uma sequemcia de portas fechadas pré-especificadas, e depois que esta sequência estiver correta as regras de firewall são modificadas temporariamente para permitir que o host que &#8220;bateu&#8221; nas portas tenha acesso. </p>
<p>Vou ensinar realizar Port knocking no Linux com <strong>nftables</strong> e <strong>iptables</strong> e <strong>Mikrotik</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Primeiramente precisamos escolher 4 portas que iremos bater para ganhar acesso.<br />
No meu exemplo irei usar as portas: <strong>52341, 28001, 60541, 30951</strong></p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/03/toctoc.png" alt="" width="651" height="182" class="alignnone size-full wp-image-5392" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/03/toctoc.png 651w, https://blog.remontti.com.br/wp-content/uploads/2021/03/toctoc-300x84.png 300w" sizes="auto, (max-width: 651px) 100vw, 651px" /></p>
<p>Neste exemplo vou estar liberando as portas 22 e 23 após &#8220;batermos&#8221; nas portas 52341, 28001, 60541, 30951, e por 1min após bater nas portas teremos acesso as portas 22 e 23. </p>
<p>Se você é amante de linux, e seu desktop é um lindo linux instale o &#8220;batedor&#8221; knockd, não vamos usa-lo ainda, mas já podemos instala-lo!</p>
<pre class="remontti-code">$ sudo apt install knockd
$ knock -h
  -u, --udp       make all ports hits use UDP (default is TCP)
  -d, --delay &lt;t&gt;      wait &lt;t&gt; milliseconds between port hits
  -v, --verbose   be verbose
  -V, --version   display version
  -h, --help      this help</pre>
<p>Ele funciona assim:</p>
<pre class="remontti-code">$ knock -d 500 -v 192.168.1.1 52341 28001 60541 30951
hitting tcp 192.168.1.1:52341
hitting tcp 192.168.1.1:28001
hitting tcp 192.168.1.1:60541
hitting tcp 192.168.1.1:30951</pre>
<h3>Linux Nftables</h3>
<p>Primeiramente tenha o nftables instalado. Para distribuição baseadas em Debian use:</p>
<pre class="remontti-code"># apt install nftables
# systemctl enable nftables.service</pre>
<p>O arquivo de configuração padrão do nftables fica em /etc/nftables.conf, então vamos edita-lo:</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<p>Lembre-se de criar o seu padrão de sequencia e portas, e adicione ao final do arquivo:</p>
<pre class="remontti-code">define protege_portas = {22,23}

table inet portknock {
   set clientes_ipv4 {
      type ipv4_addr
      flags timeout
   }

   set clientes_ipv6 {
      type ipv6_addr
      flags timeout
   }

   set toctoc_aberta_ipv4 {
      type ipv4_addr . inet_service
      flags timeout
   }

   set toctoc_aberta_ipv6 {
      type ipv6_addr . inet_service
      flags timeout
   }

   chain input {
      type filter hook input priority -10; policy accept;

      iifname &quot;lo&quot; return

      tcp dport 52341 add @toctoc_aberta_ipv4 {ip  saddr . 28001 timeout 60s}
      tcp dport 52341 add @toctoc_aberta_ipv6 {ip6 saddr . 28001 timeout 60s}
      tcp dport 28001 ip  saddr . tcp dport @toctoc_aberta_ipv4 add @toctoc_aberta_ipv4 {ip  saddr . 60541 timeout 60s}
      tcp dport 28001 ip6 saddr . tcp dport @toctoc_aberta_ipv6 add @toctoc_aberta_ipv6 {ip6 saddr . 60541 timeout 60s}
      tcp dport 60541 ip  saddr . tcp dport @toctoc_aberta_ipv4 add @toctoc_aberta_ipv4 {ip  saddr . 30951 timeout 60s}
      tcp dport 60541 ip6 saddr . tcp dport @toctoc_aberta_ipv6 add @toctoc_aberta_ipv6 {ip6 saddr . 30951 timeout 60s}
      tcp dport 30951 ip  saddr . tcp dport @toctoc_aberta_ipv4 add @clientes_ipv4 {ip  saddr timeout 10s} log prefix &quot;Portknock bem-sucedido: &quot;
      tcp dport 30951 ip6 saddr . tcp dport @toctoc_aberta_ipv6 add @clientes_ipv6 {ip6 saddr timeout 10s} log prefix &quot;Portknock bem-sucedido: &quot;

      tcp dport { $protege_portas } ip  saddr @clientes_ipv4 counter accept
      tcp dport { $protege_portas } ip6 saddr @clientes_ipv6 counter accept
      tcp dport { $protege_portas } ct state established,related counter accept
      tcp dport { $protege_portas } counter reject with tcp reset
   }
}
</pre>
<p>Restarte o nftables</p>
<pre class="remontti-code"># systemctl enable nftables.service</pre>
<p>Se você não usa linux em seu deskop <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> para usar o knock, basta você jogar no seu navegador ip:porta, ex 192.168.1.1:52341 192.168.1.1:28001 192.168.1.1:60541 192.168.1.1:30951, lembre-se que você tem 1 minuto para bater nas portas e realizar sua conexão. Já já ensino como ter um servido web e liberar a porta em um click!</p>
<pre class="remontti-code">$ knock -d 500 -v 192.168.1.1 52341 28001 60541 30951</pre>
<p>Para acompanhar os logs:</p>
<pre class="remontti-code">#  tail -f /var/log/messages</pre>
<p>Realize o SSH (ou acesse o a porta que tenha protegido para testar)</p>
<h3>Linux Iptables</h3>
<p>Vou deixar um modelo com iptables, mas recomendo você ir migrando para nftables que em um futuro sera seu sucessor. Não esqueça de alterar as portas para sua realidade, em seu arquivo de firewall tenha:</p>
<pre class="remontti-code">#!/bin/bash
iptables -F
iptables -X
iptables -Z

iptables -N INTO-TOCTOC2
iptables -A INTO-TOCTOC2 -m recent --name TOCTOC1 --remove
iptables -A INTO-TOCTOC2 -m recent --name TOCTOC2 --set

iptables -N INTO-TOCTOC3
iptables -A INTO-TOCTOC3 -m recent --name TOCTOC2 --remove
iptables -A INTO-TOCTOC3 -m recent --name TOCTOC3 --set

iptables -N INTO-TOCTOC4
iptables -A INTO-TOCTOC4 -m recent --name TOCTOC3 --remove
iptables -A INTO-TOCTOC4 -m recent --name TOCTOC4 --set
iptables -A INTO-TOCTOC4 -j LOG --log-prefix &quot;Portknock bem-sucedido: &quot;

iptables -A INPUT -m recent --update --name TOCTOC1

iptables -A INPUT -p tcp --dport 52341 -m recent --set --name TOCTOC1
iptables -A INPUT -p tcp --dport 28001 -m recent --rcheck --seconds 30 --name TOCTOC1 -j INTO-TOCTOC2
iptables -A INPUT -p tcp --dport 60541 -m recent --rcheck --seconds 30 --name TOCTOC2 -j INTO-TOCTOC3
iptables -A INPUT -p tcp --dport 30951 -m recent --rcheck --seconds 60 --name TOCTOC3 -j INTO-TOCTOC4

# Para uma unica porta
#iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A INPUT -p tcp --dport 22 -m recent --rcheck --seconds 60 --name TOCTOC4 -j ACCEPT
#iptables -A INPUT -p tcp --dport 22 -j DROP

# Multiplas portas
iptables -A INPUT -p tcp -m multiport --dport 22,23 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport 22,23 -m recent --rcheck --seconds 60 --name TOCTOC4 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport 22,23 -j DROP</pre>
<p>Pode realizar os mesmo procedimento anteriores</p>
<h3>Mikrotik</h3>
<p>Aqui vai uma observação muito importante para quem usa routerOS, FIREWALL TEM LUGAR PARA SER FEITO, então não sai aplicando Port Knocking em todo o lugar. Por exemplo, muitos provedores tem o costume de deixar na sua borda routerOS o serviço PPTP ativo para fazer uma conexão quando esta fora da sua rede, este é um bom exemplo de NÃO se seguir, routerOS tem q ter muito cuidado quando se cria firewall, recomendo que para esse tipo de serviço como PPTP Server, seja rodado em um router paralelo (pode ser uma hAP lite, uma VM com o routerOS mas nunca em uma borda) até por que é muito fácil de quebrar o PPTP, então para não deixar a porta 1723/PPTP aberta iremos realizar o Port Knocking, aproveitei e inclui a porta 22, altere de acordo com suas necessidades. </p>
<pre class="remontti-code">/ip firewall filter
add action=add-src-to-address-list address-list=toc_toc_1  \
    address-list-timeout=30s chain=input comment=&quot;Port Knocking&quot;  \
    connection-state=new dst-port=52341 protocol=tcp
add action=add-src-to-address-list address-list=toc_toc_2  \
    address-list-timeout=30s chain=input connection-state=new dst-port=28001  \
    protocol=tcp src-address-list=toc_toc_1
add action=add-src-to-address-list address-list=toc_toc_3  \
    address-list-timeout=30s chain=input connection-state=new dst-port=60541  \
    protocol=tcp src-address-list=toc_toc_2
add action=add-src-to-address-list address-list=toc_toc_4 address-list-timeout=2m  \
    chain=input connection-state=new dst-port=30951 log=yes log-prefix=&quot;Portknock bem-sucedido&quot;  \
    protocol=tcp src-address-list=toc_toc_3
add action=drop chain=input connection-state=new dst-port=1723,22  \
    protocol=tcp src-address-list=!toc_toc_4</pre>
<p>Se você não usa linux em seu deskop <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> para usar o knock, basta você jogar no seu navegador ip:porta, ex 192.168.1.1:52341 192.168.1.1:28001 192.168.1.1:60541 192.168.1.1:30951, lembre-se que você tem 1 minuto para bater nas portas e realizar sua conexão. Já já ensino como ter um servido web e liberar a porta em um click!</p>
<pre class="remontti-code">$ knock -d 500 -v 192.168.1.1 52341 28001 60541 30951</pre>
<p>para acompanhar, abra os <strong>Log</strong> sempre que um host acertar as sequencias de porta um log com <strong>Portknock bem-sucedido</strong> será exibido. Verifique também em IP-> Firewall -> Address List.</p>
<p>Realize o sua conexão PPTP ou SSH (ou acesse o a porta que tenha protegido para testar)</p>
<h3>Que tal uma central &#8220;toc toc&#8221; para nosso Port knocking <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h3>
<p>Leituras recomendadas:<br />
<strong><a href="https://blog.remontti.com.br/3464" rel="noopener" target="_blank">Como ter diversos sub/domínios no mesmo servidor?</a></strong><br />
<strong><a href="https://blog.remontti.com.br/3006" rel="noopener" target="_blank">Passo-a-passo como criar um servidor WEB</a></strong><br />
<strong><a href="https://blog.remontti.com.br/3086" rel="noopener" target="_blank">Servidor DNS seguro com Bind9</a></strong><br />
Crie um subdomínio em exemplo toctoc em seu servidor DNS apontando para algum servidor web que você tenha rodando.<br />
Ajustes o subdomíno em seu servidor web, neste ex com apache estou estarei incluído uma senha para acesso.</p>
<pre class="remontti-code"># mkdir /var/www/toctoc/
# htpasswd -c /var/www/toctoc/.htpasswd admin</pre>
<p>E defina a senha para seu acesso.</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/toctoc.conf</pre>
<pre class="remontti-code">&lt;virtualhost *:80&gt;
   ServerName toctoc.remontti.com.br
   ServerAdmin noc@remontti.com.br
   DocumentRoot /var/www/toctoc
   &lt;Directory /var/www/toctoc/&gt;
      Options FollowSymLinks
      AllowOverride All
      Require all denied
      &lt;RequireAll&gt;
          Require valid-user
          AuthBasicProvider file
          AuthType Basic
          AuthName &quot;Login&quot;
          AuthUserFile /var/www/toctoc/.htpasswd
      &lt;/RequireAll&gt;
   &lt;/Directory&gt; 
   ErrorLog ${APACHE_LOG_DIR}/error_toctoc.log
   CustomLog ${APACHE_LOG_DIR}/access_toctoc.log combined
&lt;/VirtualHost&gt;</pre>
<p>Criei uma paginazinha com php + javascript para executar nosso trabalho para não precisar decorar portas, sinta-se a vontade para melhorar o código: <a href="https://github.com/remontti/PortKnockingPHP" rel="noopener" target="_blank">https://github.com/remontti/PortKnockingPHP</a><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/03/toctoc-pork-knocking.png" alt="" width="1366" height="793" class="alignnone size-full wp-image-5402" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/03/toctoc-pork-knocking.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2021/03/toctoc-pork-knocking-300x174.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/03/toctoc-pork-knocking-1024x594.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/03/toctoc-pork-knocking-768x446.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></p>
<pre class="remontti-code"># cd /var/www/toctoc/
# wget https://raw.githubusercontent.com/remontti/PortKnockingPHP/main/index.php</pre>
<p>Edite o arquivo index.php e altere a lista de seus servidores&#8230;</p>
<pre class="remontti-code"> # Nome - IP - Porta 1 - Porta 2 - Porta 3 - Porta 4 #
$array = [
    [&quot;RouterOS PPTP&quot;,&quot;192.168.1.1&quot;,&quot;1000&quot;,&quot;2000&quot;,&quot;3000&quot;,&quot;4000&quot;],
    [&quot;Servicor 2&quot;,&quot;192.168.2.1&quot;,&quot;111&quot;,&quot;222&quot;,&quot;333&quot;,&quot;4444&quot;],
    [&quot;Servicor 3&quot;,&quot;192.168.3.1&quot;,&quot;1000&quot;,&quot;2000&quot;,&quot;3000&quot;,&quot;4000&quot;],
    [&quot;Servicor 4&quot;,&quot;192.168.4.1&quot;,&quot;1000&quot;,&quot;2000&quot;,&quot;3000&quot;,&quot;4000&quot;],
];</pre>
<p>Agora acesse seu &#8220;<em><strong>toctoc.remontti.com.br</strong></em>&#8221; e seja feliz, e não se preocupe em estar decorando portas, basta você clicar em <strong>Toc Toc</strong>.</p>
<h4>Aplicativos para Celular/PC Windows</h4>
<p><em>Dica dos leitores</em><br />
<strong>Para iPhone:</strong> <a href="https://apps.apple.com/us/app/knockond/id333206277" rel="noopener" target="_blank">https://apps.apple.com/us/app/knockond/id333206277</a><br />
<strong>Para Android:</strong> <a href="https://play.google.com/store/apps/details?id=com.xargsgrep.portknocker&#038;hl=pt_BR&#038;gl=US" rel="noopener" target="_blank">https://play.google.com/store/apps/details?id=com.xargsgrep.portknocker&#038;hl=pt_BR&#038;gl=US</a><br />
<strong>Para PC Win.:</strong> <a href="http://gregsowell.com/?p=2020" rel="noopener" target="_blank">http://gregsowell.com/?p=2020</a></p>
<p>Espero que tenha gostado! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>O post <a href="https://blog.remontti.com.br/5390">Port knocking, aprenda a melhorar as política de segurança de seu firewall Linux e Mikrotik</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5390/feed</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Assinando DNSSEC em seus domínios autoritativos (Bind9)</title>
		<link>https://blog.remontti.com.br/4672</link>
					<comments>https://blog.remontti.com.br/4672#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 30 Jun 2020 17:36:16 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[bind9]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[debian 8]]></category>
		<category><![CDATA[Debian 9]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[dnssec]]></category>
		<category><![CDATA[Segurança]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=4672</guid>

					<description><![CDATA[<p>Nesse tutorial vamos aprender configurar o DNSSEC (Domain Name System SECurity extensions) em seus domínios autoritativos. Usarei um exemplo de configuração seguindo a topologia adotada já em tutoriais do bind9 publicados aqui no blog.&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/4672">Assinando DNSSEC em seus domínios autoritativos (Bind9)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Nesse tutorial vamos aprender configurar o DNSSEC (Domain Name System SECurity extensions) em seus domínios autoritativos.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/capa-dnssec.png" alt="" width="720" height="340" class="alignnone size-full wp-image-4701" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/capa-dnssec.png 720w, https://blog.remontti.com.br/wp-content/uploads/2020/06/capa-dnssec-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/capa-dnssec-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /><br />
Usarei um exemplo de configuração <a href="https://blog.remontti.com.br/3086" rel="noopener noreferrer" target="_blank">seguindo a topologia adotada já em tutoriais do bind9 publicados aqui no blog</a>. Então neste exemplo usarei de modelo o domínios <a href="https://blog.remontti.com.br/curso-bind9">cursodns.com.br</a> (Aproveitando fazer um merchandising do meu curso). </p>
<p>Como de costume gosto de ter os diretórios/arquivos organizados, logo em nosso diretório padrão <strong>/var/cache/bind/</strong> crio sempre um diretório para dizer se é <strong>master</strong> ou <strong>slave</strong> deixando o nome da pasta &#8220;master-aut&#8221; ou &#8220;salve-aut&#8221; <strong>aut</strong> de autoritativo, e como vamos assinar nosso domínio irei criar mais um diretório para o domínio, pois iremos ter vários arquivos para cada domínio e mais ainda, irei criar a pastinha onde ficarão as keys. Não gosto de &#8220;bagunça na casa&#8221;, pelo menos no servidor. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<p>Antes de mais nada já com o domínio configurado. Segue um exemplo aqui para ilustrar as demais configurações, mas recomendo a leitura do tutorial:  <a href="https://blog.remontti.com.br/3086" rel="noopener noreferrer" target="_blank">Servidor DNS seguro com Bind9 (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10 Buster</a></p>
<pre class="remontti-code"># mkdir /var/cache/bind/master-aut/
# mkdir /var/cache/bind/master-aut/cursodns.com.br
# mkdir /var/cache/bind/master-aut/cursodns.com.br/keys
# vim /var/cache/bind/master-aut/cursodns.com.br/cursodns.com.br.hosts</pre>
<pre class="remontti-code">$ORIGIN .
$TTL 86400 ; 1 day
cursodns.com.br           IN SOA  ns1.cursodns.com.br. hostmaster.cursodns.com.br. (
                            2020071900 ; serial
                            10800      ; refresh (3 hours)
                            3600       ; retry   (1 hour)
                            2419200    ; expire  (4 weeks)
                            300        ; minimum (5 minutes)
                            )
 
                        NS      ns1.cursodns.com.br.
                        NS      ns2.cursodns.com.br.
 
                        A       200.200.200.4
                        AAAA    2804:ffff:bebe:cafe::2
                        MX      10 mail.cursodns.com.br.
                        TXT     &quot;v=spf1 a mx -all&quot;
                        SPF     &quot;v=spf1 a mx -all&quot;

$ORIGIN cursodns.com.br.
_dmarc                  TXT &quot;v=DMARC1; p=none&quot;
_domainkey              TXT &quot;t=y; o=~;&quot;

$ORIGIN _domainkey.cursodns.com.br.
mail                    TXT &quot;v=DKIM1; k=rsa; p=1234/1234/abcdf+1234+abcdf+1234+abcfg&quot;

$ORIGIN cursodns.com.br.
$TTL 10800   ; 3 hours
ns1                     A       200.200.200.2
                        AAAA    2804:ffff:bebe:cafe::2
hostmaster              A       200.200.200.2
                        AAAA    2804:ffff:bebe:cafe::2
ns2                     A       200.200.200.3
                        AAAA    2804:ffff:bebe:cafe::3
www                     A       200.200.200.4
                        AAAA    2804:ffff:bebe:cafe::4
ftp                     A       200.200.200.4
                        AAAA    2804:ffff:bebe:cafe::4
imap                    A       200.200.200.4
                        AAAA    2804:ffff:bebe:cafe::4
pop                     A       200.200.200.4
                        AAAA    2804:ffff:bebe:cafe::4
smtp                    A       200.200.200.4
                        AAAA    2804:ffff:bebe:cafe::4
mail                    A       200.200.200.4
                        AAAA    2804:ffff:bebe:cafe::4</pre>
<p>Configurações da zona cursodns.com.br em named.conf.local  </p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<pre class="remontti-code">zone &quot;cursodns.com.br&quot; {
        type master;
        file &quot;/var/cache/bind/master-aut/cursodns.com.br/cursodns.com.br.hosts&quot;;
};</pre>
<p>É extremamente dar permissões ao diretórios para que o bind possa acessar e criar as configurações do DNSSEC.</p>
<pre class="remontti-code"># chown  bind. /var/cache/bind/master-aut -R</pre>
<p>Agora vamos proprimamente para as configurações do DNSSEC:</p>
<p>Ajuste as configurações de DNSSEC em named.conf.options adicionando `dnssec-enable yes;` `dnssec-validation yes;`  e `dnssec-lookaside auto;` dentro de options {&#8230;}.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<pre class="remontti-code">options {
...
  dnssec-enable yes;
  dnssec-validation auto;
...
}</pre>
<p>Reinicie os serviços </p>
<pre class="remontti-code"># systemctl restart bind9</pre>
<p>Até aqui é o que você já teria que ter configurado, ou acabou de configurar. </p>
<p>Agora vamos a criação das chaves:</p>
<pre class="remontti-code"># cd /var/cache/bind/master-aut/cursodns.com.br/keys</pre>
<pre class="remontti-code"># dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE cursodns.com.br</pre>
<pre class="remontti-code-plain">Generating key pair...........+++++ ...................+++++ 
Kcursodns.com.br.+007+00095
</pre>
<pre class="remontti-code"># dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE cursodns.com.br</pre>
<pre class="remontti-code-plain">Generating key pair.......................................................
....................................................................++++ 
.....................................................++++</pre>
<p>Os comandos acima irão gerar 4 arquivos com extensões .key e .private</p>
<pre class="remontti-code-plain">├── cursodns.com.br.hosts
├── Kcursodns.com.br.+007+00095.key
├── Kcursodns.com.br.+007+00095.private
├── Kcursodns.com.br.+007+12531.key
└── Kcursodns.com.br.+007+12531.private</pre>
<p>Altere as permissões de diretórios/arquivos para que o bind consiga criar as assinaturas de forma automaticamente.</p>
<pre class="remontti-code"># chown bind. /var/cache/bind/master-aut/ -R</pre>
<p>Vamos ajustar nossa zona para que o bind crie a assinatura automaticamente, e renove a mesma também. </p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<p>Vamos incluir as variáveis key-directory, auto-dnssec, inline-signing e serial-update-method.</p>
<pre class="remontti-code">zone &quot;cursodns.com.br&quot; {
        type master;
        file &quot;/var/cache/bind/master-aut/cursodns.com.br/cursodns.com.br.hosts&quot;;
        key-directory &quot;/var/cache/bind/master-aut/cursodns.com.br/keys/&quot;;
        auto-dnssec maintain;
        inline-signing yes;
        serial-update-method unixtime;
};</pre>
<p>Reinicie os serviços </p>
<pre class="remontti-code"># systemctl restart bind9</pre>
<p>Novos arquivos são gerados .jbk .signed .signed.jnl</p>
<pre class="remontti-code-plain">├── cursodns.com.br
│   ├── cursodns.com.br.hosts
│   ├── cursodns.com.br.hosts.jbk
│   ├── cursodns.com.br.hosts.signed
│   ├── cursodns.com.br.hosts.signed.jnl
│   └── keys
│       ├── Kcursodns.com.br.+007+04514.key
│       ├── Kcursodns.com.br.+007+04514.private
│       ├── Kcursodns.com.br.+007+14961.key
│       └── Kcursodns.com.br.+007+14961.private
</pre>
<p>Depois de qualquer edição no “cursodns.com.br.hosts” <strong>nunca esqueça de alterar o serial</strong> do mesmo para que ao reiniciar o bind reassine automaticamente. O BIND 9.7.0 introduziu a atualização automática de assinaturas no servidor e a substituição automática de chaves. Se desejar verificar a versão do seu bind use o comando:</p>
<pre class="remontti-code"># bind9-config --version</pre>
<pre class="remontti-code-plain">VERSION=9.11.5-P4-5.1+deb10u1-Debian</pre>
<p>Não podemos esquecer de ajustar as configurações na zona do seu servidor <strong>Slave</strong> incluído um <strong>.signed</strong> que o bind tratará de fazer o resto.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<pre class="remontti-code">zone &quot;cursodns.com.br&quot; {
        type slave;
        file &quot;/var/cache/bind/slave-aut/cursodns.com.br.hosts.signed&quot;;
        masters { 200.200.200.2; };
        allow-notify { 200.200.200.2; };
};</pre>
<p>Visualizando a chave DS que será informada no registro.br </p>
<pre class="remontti-code"># (d=cursodns.com.br; dig @127.0.0.1 +norecurse &quot;$d&quot;. DNSKEY | dnssec-dsfromkey -f - &quot;$d&quot; | head -1)</pre>
<pre class="remontti-code-plain">cursodns.com.br. IN DS 12531 7 1 09436D3E76B37CB6836EF918992279334530ED18</pre>
<p>Sendo &#8220;12531&#8221; sua <strong>keytag</strong> e &#8220;09436D3E76B37CB6836EF918992279334530ED18&#8221; seu <strong>digest</strong></p>
<p>Você deve também validar a mesma utilizando as ferramentas do registro.br<br />
<a href="https://registro.br/tecnologia/ferramentas/verificacao-de-ds/" rel="noopener noreferrer" target="_blank">https://registro.br/tecnologia/ferramentas/verificacao-de-ds/ </a><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_remontti.com_.br_.png" alt="" width="1170" height="836" class="alignnone size-full wp-image-4694" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_remontti.com_.br_.png 1170w, https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_remontti.com_.br_-300x214.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_remontti.com_.br_-1024x732.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_remontti.com_.br_-768x549.png 768w" sizes="auto, (max-width: 1170px) 100vw, 1170px" /></p>
<p>Tudo certo, acesse sua conta no <a href="https://registro.br/login/" rel="noopener noreferrer" target="_blank">registro.br</a> e <strong>altera os servidores DNS</strong> do seu domínios, em seguida para informar seu DS clique no botão <strong>[ + DNSSEC ]</strong> e informe sua keytag e seu digest. Como no exemplo:</p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_remontti.com_.br_2.png" alt="" width="789" height="651" class="alignnone size-full wp-image-4695" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_remontti.com_.br_2.png 789w, https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_remontti.com_.br_2-300x248.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_remontti.com_.br_2-768x634.png 768w" sizes="auto, (max-width: 789px) 100vw, 789px" /></p>
<p>Salve as configurações, e aguarde a publicação. </p>
<p>Validando externamente após configurado:<br />
<a href="https://dnsviz.net" rel="noopener noreferrer" target="_blank">https://dnsviz.net</a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_teste.png" data-rel="lightbox-gallery-zAaNgs2A" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_teste-150x150.png" alt="" width="150" height="150" class="alignnone size-thumbnail wp-image-4706" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_teste-150x150.png 150w, https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_teste-80x80.png 80w, https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_teste-320x320.png 320w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a><br />
<a href="https://dnssec-analyzer.verisignlabs.com/" rel="noopener noreferrer" target="_blank">https://dnssec-analyzer.verisignlabs.com/</a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_teste2.png" data-rel="lightbox-gallery-zAaNgs2A" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_teste2-150x150.png" alt="" width="150" height="150" class="alignnone size-thumbnail wp-image-4707" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_teste2-150x150.png 150w, https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_teste2-80x80.png 80w, https://blog.remontti.com.br/wp-content/uploads/2020/06/dnssec_teste2-320x320.png 320w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a></p>
<p>Comandos para verificar</p>
<pre class="remontti-code"># dig DNSKEY cursodns.com.br. @localhost +multiline</pre>
<pre class="remontti-code-plain">; &lt;&lt;&gt;&gt; DiG 9.11.5-P4-5.1+deb10u1-Debian &lt;&lt;&gt;&gt; DNSKEY cursodns.com.br. @localhost +multiline
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 49504
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: b580d5ebb228d8ca5aa8e9d75eec2ea4fe508863e452094c (good)
;; QUESTION SECTION:
;cursodns.com.br.       IN DNSKEY

;; ANSWER SECTION:
cursodns.com.br.        86400 IN DNSKEY 257 3 7 (
                                AwEAAcLJ5zXdPByA/kIJBI0Oo8I5K+8fsa3Cd69pMGTr
                                ECIWGIRhIJyqC5qIWEUNKDcfC3OEfo4RFQKz5XsDEIPW
                                7FuY98mL9Bc73ov0iscYW6XSIYWYrSCsGn5/fsuRVM12
                                sR4yTAZ3k01n7uJRUHCaFB9Z2KbevUpU+Hj5CZYfzwOW
                                nP2uPKs/DGzhW415CK8HGeGzmfMen4wQZcqxiI3sy512
                                g0+BToj9DUso2FrWjM659mZAgTqb093WX5vuO4tNDqSm
                                6hx6loisbpWwehpeFch/hEbI8SV+3GjUaHo+S+fcJsU2
                                XLDv28U51PgNQyzRHAD/0qzzPUiQPZNxjTc409CRCQhQ
                                6X7VCreN+LfPNGCnJYwAnqbfMDo6sPoBG+gS3pLht7QQ
                                72wpEJVKuUrdmSzy/qLhDdKwhsaV
                                ) ; KSK; alg = NSEC3RSASHA1 ; key id = 12531
cursodns.com.br.        86400 IN DNSKEY 256 3 7 (
                                AwEAAaYiokjVqvIGsWzU5QSJqiLAFQQEo5kEbqLZ3DC1
                                foiL18m3fd0XMFdI05vRx31BLzhXn2gSf+VCFjVeCd/r
                                fdgJJyrRT4yeNEUlDy8T0s4QyQoxAElel44sN7M=
                                ) ; ZSK; alg = NSEC3RSASHA1 ; key id = 35849

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: sex jun 19 00:19:00 -03 2020
;; MSG SIZE  rcvd: 880</pre>
<pre class="remontti-code"># dig A cursodns.com.br. @localhost +noadditional +dnssec +multiline</pre>
<pre class="remontti-code-plain">; &lt;&lt;&gt;&gt; DiG 9.11.5-P4-5.1+deb10u1-Debian &lt;&lt;&gt;&gt; A cursodns.com.br. @localhost +noadditional +dnssec +multiline
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 16455
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
; COOKIE: f992cf3f88f7fbf0db5fb2ce5eec2e873855b0078162adf7 (good)
;; QUESTION SECTION:
;cursodns.com.br.       IN A

;; ANSWER SECTION:
cursodns.com.br.        86400 IN A 168.181.117.178
cursodns.com.br.        86400 IN RRSIG A 7 3 86400 (
                                20200701053116 20200619021212 35849 cursodns.com.br.
                                wmtl/WPY0ukcYnrmZokd8WOV1wAuewKbUpDc6YvXgA0A
                                08FBP7OUvSKA9M+uFZlIQazOLPEHHWFcXBaMc8yI8kcW
                                sMsUL4eCMwjF8tXIRulFxWs/JUXYENHGMQ== )

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: sex jun 19 00:18:31 -03 2020
;; MSG SIZE  rcvd: 391</pre>
<pre class="remontti-code"># dig +trace +noadditional DS cursodns.com.br. @8.8.8.8 | grep DS</pre>
<pre class="remontti-code-plain">; &lt;&lt;&gt;&gt; DiG 9.11.5-P4-5.1+deb10u1-Debian &lt;&lt;&gt;&gt; +trace +noadditional DS cursodns.com.br. @8.8.8.8
br.                     86400   IN      DS      2471 13 2 5E4F35998B8F909557FA119C4CBFDCA2D660A26F069EF006B403758A 07D1A2E4
br.                     86400   IN      RRSIG   DS 8 1 86400 20200701170000 20200618160000 48903 . 0ga5/MymkCjtQiVuTxNfsVpg/vKI6ZPpBjSHNtk/59/298cREbeycihL x/dUNLCi1HA9rD548kn9wINWwB7odAd+nZWvSiowehOgPv0vJx+gxBvU t6hANjB1hxEJ3i4dPxsjSrJPunsgJdgCGRxGeNyWEQomtvaIrfhCqAuL fqFxMARv/Nfo28d317dz3xTAMaxsd1gwIGGaItebmUEzrOkc8B+gEFhF nma2wA==
cursodns.com.br.        3600    IN      DS      12531 7 1 09436D3E76B37CB6836EF918992279334530ED18
cursodns.com.br.        3600    IN      RRSIG   DS 13 3 3600 20200702211009 20200618201009 33095 com.br. H7Y04YKIa0i7ZjOr0U2OKej+0RULQWQruA4z9yyCbodMg7bgDyCeRM/b XbxUsEuMG7xP76mmlPLjBR5mg8kaCw==</pre>
<pre class="remontti-code"># whois cursodns.com.br</pre>
<pre class="remontti-code-plain">domain:      cursodns.com.br
owner:       Rudimar Remontti
ownerid:     00.000.000/0000-00
responsible: Rudimar Remontti
country:     BR
owner-c:     NICBR
admin-c:     NICBR
tech-c:      NICBR
billing-c:   NICBR
nserver:     ns1.cursodns.com.br
nsstat:      20200719 AA
nslastaa:    20200719
nserver:     ns2.cursodns.com.br
nsstat:      20200719 AA
nslastaa:    20200719
dsrecord:    12531 RSASHA1-NSEC3-SHA1 09436D3E76B37CB6836EF918992279334530ED18
dsstatus:    20200719 DSOK
dslastok:    20200719
status:      published</pre>
<p>Curtiu o conteúdo? Quer me ajudar? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Conheça meu curso DNS ao vivo: <a href="https://blog.remontti.com.br/curso-bind9" rel="noopener noreferrer" target="_blank">Curso Bind9</a></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento! (Esse deu trabalho!)</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Abraço!</p>
<p><strong>Referencias</strong>:<br />
<em><a href="https://wiki.debian.org/DNSSEC" rel="noopener noreferrer" target="_blank">https://wiki.debian.org/DNSSEC</a><br />
<a href="https://downloads.isc.org/isc/dnssec-guide/html/dnssec-guide.html" rel="noopener noreferrer" target="_blank">https://downloads.isc.org/isc/dnssec-guide/html/dnssec-guide.html</a><br />
<a href="https://ftp.isc.org/isc/dnssec-guide/dnssec-guide.pdf" rel="noopener noreferrer" target="_blank">https://ftp.isc.org/isc/dnssec-guide/dnssec-guide.pdf</a><br />
<a href="https://registro.br/tecnologia/dnssec/tutoriais/" rel="noopener noreferrer" target="_blank">https://registro.br/tecnologia/dnssec/tutoriais/</a><br />
<a href="https://wiki.debian.org/Bind9" rel="noopener noreferrer" target="_blank">https://wiki.debian.org/Bind9</a></em></p>
<p>O post <a href="https://blog.remontti.com.br/4672">Assinando DNSSEC em seus domínios autoritativos (Bind9)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/4672/feed</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>Criando backup do RouterOS/Mikrotik via FTP</title>
		<link>https://blog.remontti.com.br/3878</link>
					<comments>https://blog.remontti.com.br/3878#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 18 Dec 2019 00:40:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[backuk]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[pure-ftpd]]></category>
		<category><![CDATA[routeos]]></category>
		<category><![CDATA[salvar]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[seguro]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3878</guid>

					<description><![CDATA[<p>Neste exemplo vou ensinar como fazer um backup do seu routerOS/Mikroitk via FTP. Testei com as versões > 6.48.x e > 7.6 Requisitos ter um servidor FTP 😛 Sugestão: Como criar um servidor FTP&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3878">Criando backup do RouterOS/Mikrotik via FTP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/12/mikrotik_backup_ftp.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-3886" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/12/mikrotik_backup_ftp.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2019/12/mikrotik_backup_ftp-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2019/12/mikrotik_backup_ftp-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /><br />
Neste exemplo vou ensinar como fazer um backup do seu routerOS/Mikroitk via FTP.</p>
<p>Testei com as versões > 6.48.x  e > 7.6</p>
<p>Requisitos ter um servidor FTP <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
Sugestão: <a href="https://blog.remontti.com.br/3865" rel="noopener noreferrer" target="_blank">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados (MariaDB) usando Debian 10</a></p>
<p>Vamos ao script, você precisa alterar:<br />
:global host <strong>____IP/DNS_SERVIDOR_FTP____</strong><br />
:global usuario <strong>____USER____</strong><br />
:global senha<strong> ____SENHA____</strong><br />
:global diretorio<strong> ____pastaX____</strong></p>
<p>Acesse o menu: <strong>System</strong> >> <strong>Script</strong> e depois em [+]<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp.png" data-rel="lightbox-gallery-KjMwSF81" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp.png" alt="" width="1680" height="909" class="alignnone size-full wp-image-3882" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp-300x162.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp-1024x554.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp-768x416.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp-1536x831.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>O nome do arquivo será o mesmo que você definiu em <strong>System</strong> >> <strong>Identity</strong>, serão criado dois arquivos, uma backup e um export (AAAA-MM-DD.NOME.backup AAAA-MM-DD.NOME.rsc) </p>
<pre class="remontti-code">:log warning &quot;***************************************&quot;
# Conexão FTP
:global host ____IP/DNS_SERVIDOR_FTP____
:global usuario ____USER____
:global senha ____SENHA____
:global diretorio ____pastaX____
# Pega o nome do Router
:global identifica [/system identity get name ];
# Gera data no formato AAAA-MM-DD
:global data [/system clock get date]
:global meses (&quot;jan&quot;,&quot;feb&quot;,&quot;mar&quot;,&quot;apr&quot;,&quot;may&quot;,&quot;jun&quot;,&quot;jul&quot;,&quot;aug&quot;,&quot;sep&quot;,&quot;oct&quot;,&quot;nov&quot;,&quot;dec&quot;);
:global ano ([:pick $data 7 11])
:global mestxt ([:pick $data 0 3])
:global mm ([ :find $meses $mestxt -1 ] + 1);
:if ($mm &lt; 10) do={ :set mm (&quot;0&quot; . $mm); }
:global mes ([:pick $ds 7 11] . $mm . [:pick $ds 4 6])
:global dia ([:pick $data 4 6])
:log info &quot;Gerando backup: $ano-$mes-$dia.$identifica.backup&quot;;
/system backup save name=&quot;$ano-$mes-$dia.$identifica&quot;;
:log info &quot;Gerando export: $ano-$mes-$dia.$identifica.rsc&quot;;
/export file=&quot;$ano-$mes-$dia.$identifica&quot;
:log info &quot;Processando...&quot;;
:delay 5s
:log info &quot;Conectando FTP Server...&quot;;
:log info &quot;Enviando Backup [$ano-$mes-$dia.$identifica.backup] ...&quot;;
/tool fetch address=$host src-path=&quot;$ano-$mes-$dia.$identifica.backup&quot; user=&quot;$usuario&quot; password=&quot;$senha&quot; port=21 upload=yes mode=ftp dst-path=&quot;$diretorio/$ano-$mes-$dia.$identifica.backup&quot;
:log info &quot;Enviando Export [$ano-$mes-$dia.$identifica.rsc] ...&quot;;
/tool fetch address=$host src-path=&quot;$ano-$mes-$dia.$identifica.rsc&quot; user=&quot;$usuario&quot; password=&quot;$senha&quot; port=21 upload=yes mode=ftp dst-path=&quot;$diretorio/$ano-$mes-$dia.$identifica.rsc&quot;
:delay 1
:log info &quot;Backup enviado com sucesso...&quot;;
:log info &quot;Removendo arquivos...&quot;;
 /file remove &quot;$ano-$mes-$dia.$identifica.backup&quot;
 /file remove &quot;$ano-$mes-$dia.$identifica.rsc&quot;
:log info &quot;Rotina de backup finalizada...&quot;;
:log warning &quot;***************************************&quot;;</pre>
<p>Agora será preciso agenda-lo para execução a cada X período, no meu exemplo vou definir que todos os meio dias a cada 3 dias. Ajuste de acordo com suas necessidades:<br />
Acesse o menu: <strong>System</strong> >> <strong>Scheduler</strong> [+]<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp2.png" data-rel="lightbox-gallery-KjMwSF81" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp2.png" alt="" width="1353" height="785" class="alignnone size-full wp-image-3884" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp2.png 1353w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp2-300x174.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp2-1024x594.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp2-768x446.png 768w" sizes="auto, (max-width: 1353px) 100vw, 1353px" /></a></p>
<p>Se estiver com preguiça <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> pode copiar as linhas abaixo e colar no terminal, depois só alterar as variáveis.</p>
<pre class="remontti-code">/system script
add dont-require-permissions=no name=backup_ftp owner=remontti policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=&quot;:log warning \&quot;***************************************\&quot;\r\
    \n# Conex\E3o FTP\r\
    \n:global host ____IP/DNS_SERVIDOR_FTP____\r\
    \n:global usuario ___USUARIO___\r\
    \n:global senha ___SENHA___\r\
    \n:global diretorio ___NOME_DA_PASTA___\r\
    \n# Pega o nome do Router\r\
    \n:global identifica [/system identity get name ];\r\
    \n# Gera data no formato AAAA-MM-DD\r\
    \n:global data [/system clock get date]\r\
    \n:global meses (\&quot;jan\&quot;,\&quot;feb\&quot;,\&quot;mar\&quot;,\&quot;apr\&quot;,\&quot;may\&quot;,\&quot;jun\&quot;,\&quot;jul\&quot;,\&quot;aug\&quot;,\&quot;sep\&quot;,\&quot;oct\&quot;,\&quot;nov\&quot;,\&quot;dec\&quot;);\r\
    \n:global ano ([:pick \$data 7 11])\r\
    \n:global mestxt ([:pick \$data 0 3])\r\
    \n:global mm ([ :find \$meses \$mestxt -1 ] + 1);\r\
    \n:if (\$mm &lt; 10) do={ :set mm (\&quot;0\&quot; . \$mm); }\r\
    \n:global mes ([:pick \$ds 7 11] . \$mm . [:pick \$ds 4 6])\r\
    \n:global dia ([:pick \$data 4 6])\r\
    \n:log info \&quot;Gerando backup: \$ano-\$mes-\$dia.\$identifica.backup\&quot;;\r\
    \n/system backup save name=\&quot;\$ano-\$mes-\$dia.\$identifica\&quot;;\r\
    \n:log info \&quot;Gerando export: \$ano-\$mes-\$dia.\$identifica.rsc\&quot;;\r\
    \n/export file=\&quot;\$ano-\$mes-\$dia.\$identifica\&quot;\r\
    \n:log info \&quot;Processando...\&quot;;\r\
    \n:delay 5s\r\
    \n:log info \&quot;Conectando FTP Server...\&quot;;\r\
    \n:log info \&quot;Enviando Backup [\$ano-\$mes-\$dia.\$identifica.backup] ...\&quot;;\r\
    \n/tool fetch address=\$host src-path=\&quot;\$ano-\$mes-\$dia.\$identifica.backup\&quot; user=\&quot;\$usuario\&quot; password=\&quot;\$senha\&quot; port=21 upload=yes mode=ftp dst-path=\&quot;\$diretorio/\$ano-\$mes-\$dia.\$identifica.backup\&quot;\
    \r\
    \n:log info \&quot;Enviando Export [\$ano-\$mes-\$dia.\$identifica.rsc] ...\&quot;;\r\
    \n/tool fetch address=\$host src-path=\&quot;\$ano-\$mes-\$dia.\$identifica.rsc\&quot; user=\&quot;\$usuario\&quot; password=\&quot;\$senha\&quot; port=21 upload=yes mode=ftp dst-path=\&quot;\$diretorio/\$ano-\$mes-\$dia.\$identifica.rsc\&quot;\r\
    \n:delay 1\r\
    \n:log info \&quot;Backup enviado com sucesso...\&quot;;\r\
    \n:log info \&quot;Removendo arquivos...\&quot;;\r\
    \n /file remove \&quot;\$ano-\$mes-\$dia.\$identifica.backup\&quot;\r\
    \n /file remove \&quot;\$ano-\$mes-\$dia.\$identifica.rsc\&quot;\r\
    \n:log info \&quot;Rotina de backup finalizada...\&quot;;\r\
    \n:log warning \&quot;***************************************\&quot;;&quot;

/system scheduler
add interval=3d name=backup_ftp on-event=backup_ftp policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=dec/17/2019 start-time=12:00:00</pre>
<p>Simples né! Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!<br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/3878">Criando backup do RouterOS/Mikrotik via FTP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3878/feed</wfw:commentRss>
			<slash:comments>19</slash:comments>
		
		
			</item>
		<item>
		<title>Modelo simples e funcional de Firewall com iptables</title>
		<link>https://blog.remontti.com.br/2435</link>
					<comments>https://blog.remontti.com.br/2435#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 04 May 2018 21:10:53 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bloqueio]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[portas]]></category>
		<category><![CDATA[Segurança]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=2435</guid>

					<description><![CDATA[<p>Neste tutorial vou deixar um scrip bem simples para criar seu firewall, a ideia é que ele seja funcional sem precisar ter que está alterando diversas linhas. Primeiramente precisamos saber quais os serviços (portas)&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/2435">Modelo simples e funcional de Firewall com iptables</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/iptables-remontti-300x177.png" alt="" width="300" height="177" class="aligncenter size-medium wp-image-2451" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/iptables-remontti-300x177.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/iptables-remontti-768x454.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/05/iptables-remontti-1024x605.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/iptables-remontti.png 1115w" sizes="auto, (max-width: 300px) 100vw, 300px" /><br />
Neste tutorial vou deixar um scrip bem simples para criar seu firewall, a ideia é que ele seja funcional sem precisar ter que está alterando diversas linhas.</p>
<p>Primeiramente precisamos saber quais os serviços (portas) estão rodando em nosso servidor, para que possamos saber o que queremos proteger. Você pode usar o comando nmpa para fazer scanner de portas, instale ele com apt, e utilize <em>ex: nmap localhost</em>. </p>
<p>No meu exemplo vamos suporte que nosso servidor esteja com SSH e o APACHE instalado, logo temos a porta 22, e a porta 80. Agora preciso saber quem irá ter acesso a este servidor, quais IPs qual eu chamo normalmente de <em>&#8220;IPs de gerencia&#8221;</em> </p>
<p>Agora que sei que vou fechar as portas 22 e 80 e que meus IPs de gerencia são 192.168.254.0/24, 250.250.250.0/28 vamos as alterações do nosso script:</p>
<p>Defina as portas que deseja proteger separada por &#8220;<strong><font color="red">;</font></strong>&#8221;</p>
<pre class="remontti-code">PORTAS=&quot;22;80&quot;</pre>
<p>Defina os IPv4s que terão acesso separado por &#8220;<strong><font color="red">;</font></strong>&#8221;<br />
<em>É válido lembrar do IP de localhost <strong>127.0.0.1</strong>, caso contrário alguma aplicações local não ira funcionar ex.: mysql seria uma.</em></p>
<pre class="remontti-code">IP4GERENCIA=&quot;127.0.0.1;192.168.254.0/24;250.250.250.0/28&quot;</pre>
<p>Defina os IPv4s que terão acesso. (localhost <strong>::1</strong>)</p>
<pre class="remontti-code">IP6GERENCIA=&quot;::1;2001:db8:bebe:c0ca::/64&quot;</pre>
<p>Crie o arquivo do nosso script /etc/init.d/rr-firewall, irei utilizar o editor vim, mas você pode usar o seu favorito.</p>
<pre class="remontti-code"># vim /etc/init.d/rr-firewall</pre>
<pre class="remontti-code">#!/bin/bash
### BEGIN INIT INFO
# Provides:          rr-firewall
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
### END INIT INFO

#Defina as portas que deseja proteger
PORTAS=&quot;22;80&quot;
#Defina os IPv4s que terão acesso a estas portas
IP4GERENCIA=&quot;127.0.0.1;192.168.254.0/24;250.250.250.0/28&quot;
#Defina os IPv4s que terão acesso a estas portas
IP6GERENCIA=&quot;::1;2001:db8:bebe:c0ca::/64&quot;

# Não altere as linhas abaixo
VERMELHO=&#039;\033[1;31m&#039;
VERDE=&#039;\033[1;32m&#039;
AZUL=&#039;\033[1;36m&#039;
AMARELO=&#039;\033[1;33m&#039;
ROSA=&#039;\033[1;35m&#039;
NC=&#039;\033[0m&#039;

function startFirewall(){
    /sbin/iptables -F
    /sbin/iptables -X
    /sbin/iptables -t nat -F
    /sbin/iptables -X -t nat
    /sbin/iptables -F -t mangle
    /sbin/iptables -X -t mangle
    /sbin/ip6tables -F
    /sbin/ip6tables -X
    /sbin/ip6tables -F -t mangle
    /sbin/ip6tables -X -t mangle
    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe ip_nat_ftp
    /sbin/modprobe ipt_state
    /sbin/modprobe ipt_limit
    /sbin/modprobe ipt_MASQUERADE
    /sbin/modprobe ipt_LOG
    /sbin/modprobe iptable_nat
    /sbin/modprobe iptable_filter
    /sbin/modprobe ip_gre
    #Protege portas IPv4
    echo; echo -e &quot;[${ROSA} Regras IPv4 ${NC}]&quot;; echo
    portas=$(echo $PORTAS | tr &quot;;&quot; &quot;\n&quot;)
    for porta in $portas
    do
        ip4s=$(echo $IP4GERENCIA | tr &quot;;&quot; &quot;\n&quot;)
        for ip4 in $ip4s
        do
            /sbin/iptables -A INPUT -s $ip4 -p tcp --dport $porta -j ACCEPT
            /sbin/iptables -A INPUT -s $ip4 -p udp --dport $porta -j ACCEPT
            echo -e &quot;[${VERDE} ok ${NC}] Porta ${AMARELO}[$porta]${NC} aberta para ${AZUL}$ip4${NC}&quot;
            sleep 0.1
        done
    done
    portas=$(echo $PORTAS | tr &quot;;&quot; &quot;\n&quot;)
    for porta in $portas
    do
        /sbin/iptables -A INPUT -p tcp --dport $porta -j DROP
        echo -e &quot;[${VERDE} ok ${NC}] Porta ${VERMELHO}[$porta]${NC} fechada&quot;
        sleep 0.1
    done
    #Protege portas IPv6
    echo; echo -e &quot;[${ROSA} Regras IPv6 ${NC}]&quot;; echo

    portas=$(echo $PORTAS | tr &quot;;&quot; &quot;\n&quot;)
    for porta in $portas
    do
        ip6s=$(echo $IP6GERENCIA | tr &quot;;&quot; &quot;\n&quot;)
        for ip6 in $ip6s
        do
            /sbin/ip6tables -A INPUT -s $ip6 -p tcp --dport $porta -j ACCEPT
            /sbin/ip6tables -A INPUT -s $ip6 -p udp --dport $porta -j ACCEPT
            echo -e &quot;[${VERDE} ok ${NC}] Porta ${AMARELO}[$porta]${NC} aberta para ${AZUL}$ip6${NC}&quot;
        done
    done
    portas=$(echo $PORTAS | tr &quot;;&quot; &quot;\n&quot;)
    for porta in $portas
    do
        /sbin/ip6tables -A INPUT -p tcp --dport $porta -j DROP
        echo -e &quot;[${VERDE} ok ${NC}] Porta ${VERMELHO}[$porta]${NC} fechada&quot;
        sleep 0.1
    done
}

function stopFirewall(){
    /sbin/iptables -F
    /sbin/iptables -X
    /sbin/iptables -t nat -F
    /sbin/iptables -X -t nat
    /sbin/iptables -F -t mangle
    /sbin/iptables -X -t mangle

    /sbin/ip6tables -F
    /sbin/ip6tables -X
    /sbin/ip6tables -F -t mangle
    /sbin/ip6tables -X -t mangle

    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe ip_nat_ftp
    /sbin/modprobe ipt_state
    /sbin/modprobe ipt_limit
    /sbin/modprobe ipt_MASQUERADE
    /sbin/modprobe ipt_LOG
    /sbin/modprobe iptable_nat
    /sbin/modprobe iptable_filter
    /sbin/modprobe ip_gre
}

case &quot;$1&quot; in
    start )
        startFirewall
        echo; echo -e &quot;[${VERDE} Firewall carregado ${NC}]&quot;; 
        echo &quot;Use: /etc/init.d/rr-firewall status&quot;
        echo &quot;para verificar as regras&quot;
        ;;

    stop )
        stopFirewall
        echo; echo -e &quot;[${VERDE} Regras de firewall removidas ${NC}]&quot;; echo
        ;;

    restart )
        stopFirewall
        sleep 1
        startFirewall
        ;;

    status )
        echo; echo -e &quot;[${VERDE} Regras IPv4 ${NC}]&quot;; echo
        /sbin/iptables -nL
        echo; echo -e &quot;[${VERDE} Regras IPv6 ${NC}]&quot;; echo
        /sbin/ip6tables -nL
        ;;

    * )
        echo &quot;Opção inválida, use rr-firewall start | stop | restart | status&quot;
        ;;
esac</pre>
<p>Por fim aplicamos as permissões necessárias.</p>
<pre class="remontti-code"># chmod a+x  /etc/init.d/rr-firewall</pre>
<p>Para executa-lo use:<br />
<strong>/etc/init.d/rr-firewall start </strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175400.png" data-rel="lightbox-gallery-AlZCNhXZ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175400-300x188.png" alt="" width="300" height="188" class="alignnone size-medium wp-image-2441" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175400-300x188.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175400-768x482.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175400-1024x643.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175400.png 1354w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>/etc/init.d/rr-firewall status</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175413.png" data-rel="lightbox-gallery-AlZCNhXZ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175413-300x188.png" alt="" width="300" height="188" class="alignnone size-medium wp-image-2442" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175413-300x188.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175413-768x482.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175413-1024x643.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175413.png 1354w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>/etc/init.d/rr-firewall stop</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175430.png" data-rel="lightbox-gallery-AlZCNhXZ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175430-300x188.png" alt="" width="300" height="188" class="alignnone size-medium wp-image-2443" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175430-300x188.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175430-768x482.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175430-1024x643.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175430.png 1354w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>/etc/init.d/rr-firewall restart   </strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175449.png" data-rel="lightbox-gallery-AlZCNhXZ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175449-300x188.png" alt="" width="300" height="188" class="alignnone size-medium wp-image-2444" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175449-300x188.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175449-768x482.png 768w, https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175449-1024x643.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/Screenshot_20180504_175449.png 1354w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
<em>Nos prints estou fechando a porta 3306 e 80</em></p>
<p>Pronto! Seu servidor já vai estar protegido <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Como carregar ele na inicialização? Acesse: <a href="https://blog.remontti.com.br/2478" rel="noopener noreferrer" target="_blank"> Como usar o systemd para iniciar seu script/Aplicação no Debian</a></p>
<p>Dúvidas sugestões deixe seu comentário.</p>
<p>O post <a href="https://blog.remontti.com.br/2435">Modelo simples e funcional de Firewall com iptables</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/2435/feed</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title>Aumentando o nível de seguraça na conexão SSH</title>
		<link>https://blog.remontti.com.br/97</link>
					<comments>https://blog.remontti.com.br/97#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 01 Jun 2016 05:10:46 +0000</pubDate>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian buster]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[sshd]]></category>
		<guid isPermaLink="false">http://www.remontti.com.br/blog/?p=97</guid>

					<description><![CDATA[<p>Distribuição testada: Debian 10 Buster Requisitos SSH intalado # apt install ssh Primeiramente vamos mudar a porta do SSH  de preferencia para uma porta bem alta (são mais difíceis serem escaneadas) e após definir&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/97">Aumentando o nível de seguraça na conexão SSH</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Distribuição testada: Debian 10 Buster</p>
<p>Requisitos SSH intalado</p>
<pre class="remontti-code"># apt install ssh</pre>
<p>Primeiramente vamos mudar a porta do SSH  de preferencia para uma porta bem alta (são mais difíceis serem escaneadas) e após definir apenas um único usuário para conexão<br />
<span id="more-97"></span></p>
<pre class="remontti-code"># vim /etc/ssh/sshd_config</pre>
<p>Aletere as seguintes linhas:</p>
<pre class="remontti-code"># Aqui vai da porta
Port 60321 
# Tempo que o usuario tem para fazer login
LoginGraceTime 10 
# Não permita que o usuário root se conecte
PermitRootLogin prohibit-password 
</pre>
<p>Adicione a linha:</p>
<pre class="remontti-code"># Apenas este usuário chamado &quot;seu_usuario&quot; irá conseguir 
# conectar-se via ssh por mais que exita outros usuários que 
# teriam permissões de acessa o bash.
AllowUsers seu_usuario </pre>
<p>Salve e reinicie o serviço:</p>
<pre class="remontti-code"># /etc/init.d/ssh restart</pre>
<p>Pronto!</p>
<pre class="remontti-code"># ssh usuariodossh@seuip -p 60321</pre>
<p>Agora sua porta de conexão SSH é a 60321, e só loga pleo &#8220;seu_usuario&#8221; terminou? Não!!!</p>
<p>Que tal enganar um pouco! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
Vamos criar uma regra de firewall com iptables, caso você já tenha um script de firewall adicione a ele. A regra será um DROP na porta 22 assim vai dar uma falsa impressão que sua porta está protegia quando alguém usar algum scanner, vai passar aquele impressão: <em>&#8220;- iii tem firewall na 22, vamos procurar outro&#8230;.&#8221;</em></p>
<p>Drop falso na porta 22</p>
<pre class="remontti-code"># iptables -A INPUT -p tcp --dport 22 -j DROP</pre>
<p>Se desejar filtrar sua porta de SSH (60321) e deixar apenas IP X ou Y conectarem-se, no meu exemplo deixo apenas os IP 200.1.2.3 e toda a classe 10.0.0.0-10.0.0.255.</p>
<pre class="remontti-code"># iptables -A INPUT -s 200.1.2.3 -p tcp --dport 60321 -j ACCEPT # IP Especifico 
# iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 60321 -j ACCEPT # Uma Classe
# ip6tables -A INPUT -s 3001:1234::/32 -p tcp --dport 60321 -j ACCEPT # Uma Classe v6
# iptables -A INPUT -p tcp --dport 60321 -j DROP
# ip6tables -A INPUT -p tcp --dport 60321 -j DROP v6</pre>
<p>Como dito no momento que seu servidor for scanear seu servidor a porta 22 ira aparecer como filtrada.<br />
Para verificar os filtros </p>
<pre class="remontti-code">iptables -nL
ip6tables -nL</pre>
<p>Mas você ira precisar criar um script e colocar ele para iniciarlizar, e é por isso q eu recomendo você usar o nftables o nftables em vez do iptables, já que provavelmente vamos ver ele próximas distribuições no lugar do iptables. (Mas quis explicar o iptables também) </p>
<pre class="remontti-code"># apt install nftables
# systemctl enable nftables
# nft list ruleset
# vim /etc/nftables.conf </pre>
<pre class="remontti-code">#!/usr/sbin/nft -f
  
flush ruleset

table inet filter {
        chain input {
                type filter hook input priority 0;
                ip saddr 200.1.2.3 tcp dport 60123 counter accept
                ip saddr 10.0.0.0/24 tcp dport 60123 counter accept
                ip6 saddr 3001:1234::/32 tcp dport 60123 counter accept
                tcp dport 60123 counter drop
                tcp dport 22 counter drop
        }
        chain forward {
                type filter hook forward priority 0;
        }
        chain output {
                type filter hook output priority 0;
        }
}</pre>
<p>Reinicie o serviço, verifique as regras</p>
<pre class="remontti-code"># systemctl restart nftables
# nft list ruleset</pre>
<p>Instale o nmpa e faça um scanner</p>
<pre class="remontti-code"># apt install nmap
# nmap localhost</pre>
<p>Resultado:</p>
<pre class="remontti-code">Not shown: 1674 closed ports
PORT STATE SERVICE
22/tcp filtered ssh</pre>
<p>Assim já estou &#8220;protegido&#8221;! Legal!!!<br />
Suficiente? Eu sou mais paranoico, então se desejar prossiga <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
O que vamos fazer, é meio que redundante como que fizemos no firewall, porém se por alguma &#8220;zica&#8221; seu firewall não tiver rodando/ou foi quebrado o próximo passo vai salvar! Vamos configurar nos hosts para bloquear o serviço SSH e liberar apenas para seu IP ou classe.</p>
<pre class="remontti-code"># vim /etc/hosts.allow</pre>
<p>Adicione:</p>
<pre class="remontti-code">sshd: 200.1.2.3 # Ip Especifico
sshd: 10.0.0.0/24 # Uma Classe de IP</pre>
<pre class="remontti-code"># vim /etc/hosts.deny</pre>
<p>Adicione:</p>
<pre class="remontti-code">sshd: ALL</pre>
<p>Agora sim né! Humm.. Sei não que tal instalar o <strong><a href="http://www.fail2ban.org/">fail2ban</a></strong>?</p>
<pre class="remontti-code"> # apt install fail2ban</pre>
<p>Por padrão o modulo de proteção do SSH vem ativo (true) no Debian, no parâmetro <strong>maxretry</strong> você define o número de tentativas que poderá errar a senha para conexão a partir de um determinado IP.</p>
<p>Para alterar as configurações do fail2ban edite o arquivo <strong>/etc/fail2ban/jail.conf</strong></p>
<pre class="remontti-code">vim /etc/fail2ban/jail.conf</pre>
<p>Por padrão os tempos de banimento é de 10m e numero de tentativas é 5</p>
<pre class="remontti-code">bantime = 10m # Duração para um IP ficar banido
findtime = 10m # Se nenhuma correspondência nos logs é encontrada dentro de X tempo
maxretry = 5 # Tentativas ate o banimento</pre>
<p>Adicione também a porta 60123 já que alteramos a mesma</p>
<pre class="remontti-code">[sshd]
# To use more aggressive sshd modes set filter parameter &quot;mode&quot; in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See &quot;tests/files/logs/sshd&quot; or &quot;filter.d/sshd.conf&quot; for usage example and details.
#mode   = normal
port    = ssh,60123
logpath = %(sshd_log)s
backend = %(sshd_backend)s
</pre>
<p>O filtro fica ativo em /etc/fail2ban/jail.d/defaults-debian.conf, você pode incluir maxretry so para ele bem como bantime, personalizando somente o filtro SSH. Ex.:</p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.d/defaults-debian.conf</pre>
<pre class="remontti-code">[sshd]
enabled = true
maxretry = 2
bantime  = 12h</pre>
<p>Estamos 100% seguro? Nada é 100% seguro, mas certamente você levou seu nível de segurança a um nível &#8220;hard core&#8221;!</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento! (Esse deu trabalho!)</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/97">Aumentando o nível de seguraça na conexão SSH</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/97/feed</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Dica de segurança (.bashrc)</title>
		<link>https://blog.remontti.com.br/270</link>
					<comments>https://blog.remontti.com.br/270#respond</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 02 Jan 2015 17:19:30 +0000</pubDate>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[ssh]]></category>
		<guid isPermaLink="false">http://www.remontti.com.br/blog/?p=270</guid>

					<description><![CDATA[<p>Aqui vai uma dica rápida. Se você desejar que não seja gravado os comandos ssh user@ip -p 22  que você digita em seu terminal, que são salvos no arquivo bash_history adicione a seguinte linha no&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/270">Dica de segurança (.bashrc)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Aqui vai uma dica rápida.<br />
Se você desejar que não seja gravado os comandos <strong><span style="color: #000000;">ssh user@ip -p 22 </span></strong> que você digita em seu terminal, que são salvos no arquivo bash_history adicione a seguinte linha no arquivo ~<span style="color: #000080;">/<strong>.bashrc</strong></span><br />
<span style="color: #999999;"><em>/home/$user/.bashrc </em>ou<em> /root/.bashrc</em></span></p>
<pre class="remontti-code">export HISTIGNORE=&quot;&amp;:ssh *&quot;</pre>
<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>O post <a href="https://blog.remontti.com.br/270">Dica de segurança (.bashrc)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/270/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Verificando integridade do nosso sistema</title>
		<link>https://blog.remontti.com.br/391</link>
					<comments>https://blog.remontti.com.br/391#respond</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 13 Jun 2009 14:00:54 +0000</pubDate>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[chkrootkit]]></category>
		<category><![CDATA[rootkit]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[sistema]]></category>
		<guid isPermaLink="false">http://www.remontti.com.br/blog/?p=391</guid>

					<description><![CDATA[<p>Uma ótima ferramenta para verificar se nosso sistema não foi vitima de qualquer “craker” é o chkrootkit. Pois bem, uma vez instalado, um rootkit em nossa máquina, irá alterar os arquivos binários do sistema,&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/391">Verificando integridade do nosso sistema</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">Uma ótima ferramenta para verificar se nosso sistema não foi vitima de qualquer “craker” é o chkrootkit. Pois bem, uma vez instalado, um  rootkit em nossa máquina,  irá alterar os arquivos binários do sistema, instalar novos módulos no Kernel e alterar o comportamento do sistema de várias formas para que não seja facilmente detectável. O processo do rootkit não aparecerá ao rodar o &#8220;ps -aux&#8221;, o módulo que ele inseriu no Kernel para alterar o comportamento do sistema não vai aparecer ao rodar o &#8220;lsmod&#8221;, e assim por diante.</p>
<p><span id="more-391"></span><br />
Para instalar utilize o comando:<br />
<span style="color: #ff6600;"><strong># apt-get install chkrootkit<br />
# chkrootkit</strong></span></p>
<p style="text-align: justify;">Fique atendo nas mensagens que vão aparecer, as seguintes mensagens devem aparecer para que seu Server/PC não esteja com algum tipo de infecção: <span style="color: #ff0000;"><strong>not found, not infected, nothing found e nothing deleted</strong></span>. Qualquer mensagem diferente você provavelmente estará um alguma praga.</p>
<p style="text-align: justify;">Infelizmente o teste do chkrootkit não é confiável caso seja executado em uma máquina já infectada, pois muitos rootkits modificam os binários do sistema, de forma que ele não descubra as alterações feitas.</p>
<p style="text-align: justify;">A única forma realmente confiável de fazer o teste é dar boot em algum live-CD e executar o teste a partir dele, um sistema limpo.</p>
<p style="text-align: justify;">Neste caso, monte a partição onde o sistema principal está instalado e execute o chkrootkit usando o parâmetro &#8220;-r&#8221;, que permite especificar o diretório onde será feito o teste:</p>
<p># mount /dev/hda1 /mnt/hda1<br />
# chkrootkit /mnt/hda1</p>
<p><strong>Fonte:</strong><br />
<em>Livro: Linux, Guia Prático<br />
Google.com.br<br />
http://www.chkrootkit.org/</em></p>
<p>O post <a href="https://blog.remontti.com.br/391">Verificando integridade do nosso sistema</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/391/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
