Esse blog é pra postar dicas sobre IT. Coisas que eu estou estudando. Coisas que não devo esquecer.
sábado, 8 de fevereiro de 2025
Asterisk e VIVO SIP (Atualização)
Acesso remoto Console Serial pela Cloudflare
Pessoal eu penei por um ano e meio para conseguir entender o que fazer e como fazer. Finalmente terminei.
Eu vi um consultor de TI usar um HUB de USB para ligar todos os cabos console a um equipamento que ele poderia acessar caso a rede estivesse fora. Eu comprei os Hubs USB em 8 de Setembro de 2023.
Pedi um Chip Vivo com modem USB para me fornecer o acesso também.
Só que o modem da Vivo tem bloqueio para acesso direto ao IP dele.
Em alguns caso o modem fica atrás de CGNAT também.
Como resolver?
1) VPN
Foi minha primeira ideia. Mas ai quem fosse resolver o meu problema teria que estar na mesma VPN com o mesmo software de VPN instalado eu teria que enviar as configurações do acesso.
2) WARP CloudFlare
Foi o que pensei por muito tempo e por isso estudei suas formas.
A vinda do MikroTik v7 com Wireguard parecia a solução.
Perdi um bom tempo para entender tudo por isso acabei publicando os artigos anterioes sobre WARP.
3) Cloudflare Tunnel (cloudflared)
Depois de entender que as aplicações na Cloudflare só funcionam com Cloudlared Tunnel e não com WARP. Precisava subir um servidor só para rodar o túnel.
Então vaio a ideia de fazer isso com container dentro do Mikrotik e essa é a solução.
Vou explicar no próximo post como fazer o container com o túnel.
Mas quem for acessar precisa fazer isso de forma muito rápida e acessar o MikroTik para depois fazer os acessos aos equipamentos me parecia limitado, bom seria ter um servidor Linux.
Quem estiver em meu socorro tem que lembrar usuário e senha do acesso que é usado uma vez só na vida ou quem sabe nunca se Deus quiser. Pra depois pular para os equipamentos de rede.
O Cloudflare BROWSER SSH é muito simples mas pede senha ou chave privada, depois de ter autenticado o usuário na página deles.
Para não precisar entra com senha ou chave privada podemos usar certificado, mas o usuário seria sempre o que estivesse antes do @ do e-mail.
Mas qual Vai ser o e-mail que meu amigo salvador que vai me ajudar no momento de crise tem para eu permitir ele acessar minha rede?
Eu teria que acessar, pra depois criar ele no Linux, mas se alguém vai me socorrer pode ser que um dos motivos é eu estar indisponível no momento.
Ai veio a ideia se eu criar um servidor Linux que aceite qualquer usuário como certificado?
Um servidor Linux com acesso SSH liberado exclusivamente para o IP do servidor de túnel.
Um servidor que não autentique por senha, mas todos os usuários teriam acesso aos mesmos arquivos.
Vou explicar no próximo post como fazer o servidor SSH.
Até lá!
sexta-feira, 17 de janeiro de 2025
Extraindo configuração do cliente WARP
Eu uso warp-cli em um container docker pra criar as conexões e com os comando abaixo da pra printar os valores dos JSON dos arquivos de configuração.
Lembre de não remover ou desconectar por linha de comando ou esses valores vão se tonar inválidos.
echo $(jq -r .secret_key < /var/lib/cloudflare-warp/reg.json)
echo $(jq -r .public_key < /var/lib/cloudflare-warp/conf.json)
echo $(jq -r '.endpoints[0].v4' /var/lib/cloudflare-warp/conf.json)
echo $(jq -r .interface.v4 < /var/lib/cloudflare-warp/conf.json)/12
fonte: https://github.com/AnimMouse/wgcf-connector/blob/main/wgcf-connector.sh
CloudFlare WARP p/ Mikrotik
A CloudFlare oferece o serviço o serviço Zero Trust que é gratuito até certo ponto e muito útil.
O que é o Zero Trust, como o nome diz é não confiar em ninguém então o usuário tem que estar em uma VPN e os Servidores também, as redes também.
Ela também oferece um serviço de VPN WARP que no fundo é uma VPN WireGuard.
Esse serviço ele tem 3 formas:
1) Versão para usuário simples ele não precisa nem de registro.
Não precisa de autenticação então é fácil de usar em um roteador mikrotik
endpoint:
engage.cloudflareclient.com
ipv4:162.159.192.1
2) Versão Zero Trust para usuários (time)
https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/
https://github.com/poscat0x04/wgcf-teams
Precisa autenticar a cada 24h pode ser feito com Service Token mas mesmo assim é chato o processo teria que criar uma automação, dentro do mikrotik fica dificil.
3) Versão Zero Trust para sites (gateway) (escritórios)
https://github.com/AnimMouse/wgcf-connector/
Esse que eu tive dificuldade de achava e é realmente útil.
Queria muito agradecer a grande diferencial foi a contribuição desse Anim Mouse.
Tipos de acesso
WARP User -> Internet
WARP Site -> Internet
WARP User -> WARP Site
WARP Site -> WARP Site
O acesso do tipo Internet -> site precisa do Cloudflared (CloudFlare Túnel).
https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/
O acesso do tipo WARP XXX -> WARP Site precisa que o cliente envie IPs privados para a CloudFlare para isso veja a configuração a baixo e remova os IPs privados que estão no site remoto da lista ou crie sua configuração como necessário.
Também vai ser preciso criar a regra de roteamento informando que rede esta atrás de qual WARP Conector na configuração do túnel.
!ATENÇÃO com endpoint!
endpoint:
ipv4: 162.159.193.1
O endpoint correto para o serviço Zero Trust é 193 162.159.193.1
Eu não achei um lugar oficial para confirmar o número exato a não ser o link a baixo e comentários no github.
https://github.com/poscat0x04/wgcf-teams/issues/5
No cliente WARP é possível ver o valor correto, escrevi os comandos que podem ser úteis.
https://blog.mazolini.com.br/2025/01/extraindo-configuracao-do-cliente-warp.html
Configurando o Mikrotik para usar WARP como uma VPN Wireguard
As ferramentas acima dos links do github vão gerar um texto que pode ser importado em alguns clientes wireguard, mas não no Mikrotik.
Também é possível extrair os valores do seu cliente linux, AQUI esta a lista de comandos.
Aqui vou mostrar como usar o texto para configurar o básico do mikrotik.
Como disse o básico só o que envolve criar a interface.
Arquivo wireguard de exemplo use o gerado por você!!!
# routing-id: 0x000000
[Interface]
PrivateKey = chave+privada
Address = 2606:4700:110:86cb:4b9d:6889:fe5e:dfee/128
Address = 100.96.0.1/32
DNS = 1.1.1.1
DNS = 2606:4700:4700::1111
MTU = 1420
[Peer]
PublicKey = bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
AllowedIPs = ::/0
AllowedIPs = 0.0.0.0/0
Endpoint = engage.cloudflareclient.com:2408
Criar a interface wireguard
Substitua a chave+privada
/interface wireguard add mtu=1420 name=Cloudflare-WARP private-key="chave+privada"
Criar a endpoint do wireguard
Observe se a chave publica não mudou mas parece sempre ser a mesma.
/interface wireguard peers add allowed-address=0.0.0.0/0,::/0 endpoint-address=162.159.193.1 endpoint-port=2408 interface=Cloudflare-WARP name=Cloudflare-PoP persistent-keepalive=2m public-key="bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo="
Crie os IPs nas interfaces
Muita atenção pq esse valores mudam
/ip address add address=100.96.0.1/12 interface=Cloudflare-WARP
/ipv6 address add address=2606:4700:110:8ced:11b5:d064:abc:ee89/128 interface=Cloudflare-WARP
Crie o NAT de saída
Atenção com o IP usado, poderia ser um masquerad mas sabemos o IP então não tem motivo para consumir processamento da RB atoa.
Lembre que em algumas situações esse nat não será necessário. Para acesso site-to-site não precisa do NAT, mas ai se trata de uma configuração mais avançada vc mesmo pense quais serão as regras para não fazer o NAT.
/ip firewall nat add action=src-nat chain=srcnat out-interface=Cloudflare-WARP to-addresses=100.96.0.1
Crie a rota de saída
Lembre que é uma VPN então vc não pode substituir rota de saída padrão simplesmente. Você deve saber o que fazer aqui então só vou descrever algumas opções.
1ª opção
Criar a rota para o endpoint em cima da rota padrão existente
Lembre de editar o seu gatway, o meu no exemplo é 192.168.0.1, troque esse valor.
/ip route
add dst-address=162.159.193.0/24 gateway=192.168.0.1
Subir a distancia da rota padrão
Criar uma nova rota padrão pela interface use o nome da interface (igual PPPoE)
2ª opção
Crie uma rota em tabela de roteamento alternativa
No firewall marque as conexões para usar a nova rota na tabela de roteamento alternativa.
3ª opção
Crie uma rota em tabela de roteamento alternativa
/ip route
add dst-address=0.0.0.0/0 gateway=Cloudflare-WARP routing-table=cloudFlare
Selecione a tabela de roteamento com base no ip de origem
No exemplo o range do Pool DHCP é 192.18.10.0/24
/routing table
add fib name=cloudFlare
/routing rule
add action=lookup disabled=no src-address=192.168.10.0/24 table=cloudFlare
sábado, 16 de março de 2024
UBUNTU 22.04 - Serial Console e qemu-client
QEMU AGENT
Instala o cliente qemu lembre de ativar na options da VM
sudo systemctl enable qemu-guest-agent
sudo systemctl start qemu-guest-agent
sudo systemctl status qemu-guest-agent
Ativar Serial Console
Altera o grub
Recomendo fazer um snapshot pq um erro no grub pode causar muita dor de cabeça
vi /etc/default/grub
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
Agora a ediçõa do arquivo vai ser aplicada ao grub de fato.
update-grub
fonte: https://help.ubuntu.com/community/SerialConsoleHowto
Serviço com autologin
Se alguém chegou no seu proxmox pra colocar um disco de boot alternativo e trocar sua senha da maquina ta fácil. Execto se vc realmente criptografou o disco. Mas nesse ponto ainda sim outros tantos problemas podem ocorrer. Se a maquina for sua e o proxmox também facilita sua vida. Nerds de segurança podem deixar comentários com uma lista de motivos pra não fazer isso.
Outra forma é criar um arquivo com serviço no sistema:
mkdir /etc/systemd/system/serial-getty@ttyS0.service.d
cd /etc/systemd/system/serial-getty@ttyS0.service.d
vi autologin.conf
ExecStart=
ExecStart=/sbin/agetty -a root --noclear %I 115200 vt102
Ative o serviço e inicie ele:
systemctl start serial-getty@ttyS0.service
Sudo
Para facilitar o acesso crie um arquivo pra cada usuário em
vi joao
joao ALL=(ALL:ALL) ALL
vi maria
maria ALL=NOPASSWD: ALL
João vai precisar digitar a senha dele pra virar root
Maria nem vai precisar lembrar a senha dela pra virar root. Aqui é vacilo pq se por algum serviço bugado alguém ganhar seu shell, já ganha o do root também.
terça-feira, 23 de janeiro de 2024
Proxmox - Falha backup VZDUMP
Sofri com isso no meu servidor pois o backup é remoto.
O log dizia:
command 'rsync --stats -h --numeric-ids -aH --delete --no-whole-file --sparse --one-file-system --relative '--exclude=/tmp/?*' '--exclude=/var/tmp/?*' '--exclude=/var/run/?*.pid' /proc/????/root//./ /mnt/pve/nfs-remoto/dump/vzdump-lxc-???-2024_01_20-01_21_54.tmp' failed: exit code 23
Só falhava backup de container com disco do tipo arquivo raw.
Comprei um SSD liguei na USB do servidor, montei ela e alterei o arquivo
vi /etc/vzdump.conf
tmpdir: /mnt/pve/temp #caminho pro meu SSD externo
fonte: https://forum.proxmox.com/threads/tmpdir-setting-in-vzdump-conf-is-ignored.76689/
Asterisk FreePBX - Completar ligações VIVO SIP para iPhone
Eu não conseguia completar ligações no SIP da Vivo para celulares iPhone.
Consegui resolver para mim e fiz pull request no projeto oficial.
O problema é o maxptime fixo até o momento em 150 que tem que ser multiplo do tamanho do pacote enviado, normalmente 20ms. Uma outra solução seria reduzir para 10ms
O que sugeri foi alterar o valor para 140ms que é multiplo de 20ms e 10ms
https://github.com/asterisk/testsuite/commit/2acead229ff85003ad63cd8e2e2ed66d66ef9bd9
https://github.com/asterisk/testsuite/commits?author=eduardomazolini
https://github.com/asterisk/asterisk/issues/260
https://github.com/asterisk/asterisk/commit/91e368c4858bd578b07a70f98f961f3f85e41195
https://github.com/asterisk/asterisk/commits?author=eduardomazolini
Mas como recompilar o asterisk atual (2023) do freePBX
yum install git
cd /usr/src/
git clone --depth 1 --branch 16.30.0 https://github.com/asterisk/asterisk.git asterisk-16.30.0
vi /usr/src/asterisk-16.30.0/main/codec_builtin.c
Editei todos os valores ".maximum_ms" impar para 10 a menos.
yum install bzip2
yum install openssl
yum install openssl-devel
yum install patch
yum install libedit
yum install libedit-devel
yum install uuid
yum install uuid-devel
yum install libuuid-devel
yum install jansson
yum install jansson-devel
yum install libxml2-devel
yum install libxml2
yum install sqlite
yum install libsqlite3x
yum install libsqlite3x-devel
./configure
make
POSTFIX PROXMOX 7.4.1
Como eu configurei meu Proxmox para enviar e-mail
O e-mail de origem é editado em:
Datacenter -> Options -> Email from address
Editar /etc/postfix/main.cf
.
.
.
#relayhost =
.
.
.
#Inserido por Eduardo xx/xx/2024
relayhost = [smtp-server.example.com]:587
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_tls_note_starttls_offer = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options = noanonymous
# foi necessario instalar pacote: apt install libsasl2-modules
Instalar pacote
apt install libsasl2-modules
Editar /etc/postfix/sasl/sasl_passwd
[smtp-server.example.com]:587 userSMTP:passSMTP
Gerar hash da senha no .db
postmap /etc/postfix/sasl/sasl_passwd
chmod 600 /etc/postfix/sasl/sasl_passwd /etc/postfix/sasl/sasl_passwd.db
Reiniciar postfix
service postfix restart
Testar
echo "Corpo do e-mail" | mail -s "Assunto do e-mail" destino@example.com
quarta-feira, 15 de março de 2023
Serverless
Altrenativas para serverless on-premise
Antes de usar serverless precisa pensar onde rodar
- Docker - para situações mais simples
- Kuberntes
- Apache Mesos
Vamos a lista por popularidade
1) Dokku
fonte: https://dokku.com/
An open source PAAS alternative to Heroku.
Dokku helps you build and manage the lifecycle of applications from building to scaling.
Dokku Manager Interface Dashboard on https://github.com/beydogan/dokku-man
Ledokku is a beautiful web dashboard powered by dokku. With Ledokku you will be able to deploy apps in most popular programming languages, link them to most popular databases and all that with almost zero configuration from your side. Apart from all these amazing features it will also save you money along the way. fonte: https://www.ledokku.com/
2) OpenFaaS
fonte: https://www.openfaas.com/
Serverless Functions, Made Simple.
OpenFaaS® makes it simple to deploy both functions and existing code to Kubernetes.
3) CapRover
fonte: https://caprover.com/
CapRover is an extremely easy to use app/database deployment & web server manager for your NodeJS, Python, PHP, ASP.NET, Ruby, MySQL, MongoDB, Postgres, WordPress (and etc...) applications! It's blazingly fast and very robust as it uses Docker, nginx, LetsEncrypt and NetData under the hood behind its simple-to-use interface.
4) OpenWhisk
fonte: https://openwhisk.apache.org/
Apache OpenWhisk is an open source, distributed Serverless platform that executes functions (fx) in response to events at any scale. OpenWhisk manages the infrastructure, servers and scaling using containers. Options include many of today's popular Container frameworks such as Kubernetes and OpenShift, and Compose.
5) Fn Project
fonte: https://fnproject.io/
Open Source. Container-native. Serverless platform.
Dashbord in UI - Fn Sub-projects: https://github.com/fnproject/ui
X) Parse
fonte: https://parseplatform.org/
The Complete Application Stack. Build applications faster with object and file storage, user authentication, push notifications, dashboard and more out of the box.
Parse-Dashborad A dashboard for managing Parse Server
Cloud Code is built into Parse Server. The default entry point for your Cloud
X) Fission
fonte: https://fission.io/
Open source Kubernetes-native Serverless Framework
X) Iron.IO
fonte: https://open.iron.io/
Functions is an open source serverless computing platform for any cloud - private, public, or hybrid.
Kubernetes, Docker Swarm and Mesosphere support
X) Nuclio
fonte: https://nuclio.io/
The simplest way to explore Nuclio is to run its graphical user interface (GUI) of the Nuclio dashboard. All you need to run the dashboard is Docker.
https://knative.dev/docs/
https://kyma-project.io/
segunda-feira, 28 de dezembro de 2020
Ferramentas de test
Lista de ferramentas que existem mas não uso no dia a dia e por isso acabo esquecendo.
social-engineer-toolkit
Cria clone de sites.
https://github.com/trustedsec/social-engineer-toolkit
Beef
Faz Cross-Site Scripting (XSS), permitindo executar scripts no navegador dos clientes que estão com site aberto, ex: pop-up emulando uma janela do facebook pedindo para digitar a senha novamente.
https://beefproject.com/
SQL Map
Explora uma falha de sql injection de forma automática extraindo informações do banco.
http://sqlmap.org/
Weevely
Cria um terminal através do servidor apache, caso seja possível fazer upload de um arquivo PHP.
https://github.com/epinna/weevely3
OWASP ZAP
Cria um relatório de vulnerabilidades
https://www.zaproxy.org/
mitmf
mitmf --arp --spoof --target [IP vítima] --gateway [IP roteador] -i [interface]
Slowloris
nmap zenmap
netcat