Mostrando postagens com marcador linux. Mostrar todas as postagens
Mostrando postagens com marcador linux. Mostrar todas as postagens

terça-feira, 2 de setembro de 2025

DNS Seguro e Safe-Search - Restringindo a internet de forma simples

Controles de DNS na Ludicando

Na Ludicando alguns controles eu faço no Mikrotik usando DNS restritivo e alterando alguns domínios para não responder e outros para tratarem o conteúdo para ser seguro para crianças.

Abaixo o link para o script (com comentários citando as fontes de cada produto):
https://gist.github.com/eduardomazolini/77466da39e7940b7d652b2bb5af6ef55

Serviços de DNS confiáveis/populares

OpenDNS

IPv4
208.67.222.222
208.67.220.220

IPv6
2620:119:35::35
2620:119:53::53

DoH
https://doh.opendns.com/dns-query

OpenDNS — Family Shield

IPv4
208.67.222.123
208.67.220.123

DoH
https://doh.familyshield.opendns.com/dns-query

Cloudflare

IPv4
1.1.1.1
1.0.0.1

IPv6
2606:4700:4700::1111
2606:4700:4700::1001

DoH
https://cloudflare-dns.com/dns-query

Cloudflare — Block malware

IPv4
1.1.1.2
1.0.0.2

IPv6
2606:4700:4700::1112
2606:4700:4700::1002

DoH
https://security.cloudflare-dns.com

Cloudflare — Block malware and adult content

IPv4
1.1.1.3
1.0.0.3

IPv6
2606:4700:4700::1113
2606:4700:4700::1003

DoH
https://family.cloudflare-dns.com
https://one.one.one.one/dns-query?name=cloudflare.com

Docs
https://developers.cloudflare.com/1.1.1.1/encryption/

Google Public DNS

IPv4
8.8.8.8
8.8.4.4

IPv6
2001:4860:4860::8888
2001:4860:4860::8844

DoH
https://dns.google/dns-query  (RFC 8484 - GET e POST)
https://dns.google/resolve?    (API JSON - GET)

Docs
https://developers.google.com/speed/public-dns/docs/doh?hl=pt-br

AdGuard DNS — Servidores padrão

AdGuard DNS bloqueará anúncios e rastreadores.

IPv4
94.140.14.14
94.140.15.15

IPv6
2a10:50c0::ad1:ff
2a10:50c0::ad2:ff

DoH
https://dns.adguard-dns.com/dns-query

Página
https://adguard-dns.io/pt_br/public-dns.html

AdGuard DNS — Servidores sem filtragem

IPv4
94.140.14.140
94.140.14.141

IPv6
2a10:50c0::1:ff
2a10:50c0::2:ff

DoH
https://unfiltered.adguard-dns.com/dns-query

AdGuard DNS — Proteção familiar

Bloqueia anúncios, rastreadores, conteúdo adulto e ativa a Pesquisa Segura / Modo seguro quando possível.

IPv4
94.140.14.15
94.140.15.16

IPv6
2a10:50c0::bad1:ff
2a10:50c0::bad2:ff

DoH
https://family.adguard-dns.com/dns-query

Referência adicional

Admin Console Google Workspace (suporte)
https://support.google.com/a/answer/6214622

quarta-feira, 23 de julho de 2025

FreeRadius bypass

Imaginem se um dia der M... você perdeu seu banco de dados, mas precisa acessar seus equipamentos, precisa liberar o mínimo de acesso aos clientes.

Eu ainda não passei por isso mas a alguns dias o MKSolutions deu uma travada quando eu atualizei um Mikrotik ele registra uma conta com data de 1900 e não remove, eu uso NTP em todos os equipamentos mas algo acontece e sempe que atualizo da verão 6 pra 7 o MKSolutions trava.

Bom isso me deixou muito incomodado e fiquei alguns dias batendo cabeça pra pensar quanto tempo eu levo pra levantar um freeradius genérico.

O modo mais rápido que achei foi baixar um conainer docker

docker run --name radius  -p 1812-1813:1812-1813/udp  -d freeradius/freeradius-server:latest -X

Agora a primeira limitação é que vc precisa saber o secret se seu nas manda o secret.

/etc/freeradius/clients.conf 

client generico {
         ipaddr = 0.0.0.0/0
         proto = *
         secret = testing123 #ajuste esse valor ou nada vai funcionar
         require_message_authenticator = no
         nas_type     = other 
}

Para autenticar os clientes vc tem 4 protocolos configurados mas pense que são 2 formas:

  • PAP onde a senha é enviada em texto claro e vc pode aceitar qualquer senha.
  • CHAP/MSCHAP/MSCHAP2 onde a senha não é enviada e vc ainda precisa retornar uma confirmação que vc sabia qual era a senha. Se todos os seus clientes tiverem usuários diferentes mas a mesma senha também não é um problema.

Para acessar o Mikrotik vc pode querer usar ssh e ai fica fácil nem te pede a senha, ou pode insistir em usar o Winbox que usa CHAP. Vc precisa saber qual é a senha.

Eu criei um modulo python3 vc vai olhar e se souber o minimo vai sacar o que deve mudar nele.

O arquivo radiusd.py fica em /etc/freeradius/mods-config/python3/radiusd.py mas só usei uma constante RLM_MODULE_OK o valor dela é 2 numérico se quiser colocar direto e não usar import.

#! /usr/bin/env python3

import radiusd

def authorize(p):

    reply = (
            ('Mikrotik-Group', 'full'), #libera acesso ao mikrotik
            ('Mikrotik-Address-List', 'radiusList'),
            ('Mikrotik-Rate-Limit', '440m/880m 0k/0k 0k/0k 0/0 8 60m/60m'),
            ('Huawei-Output-Average-Rate', '829440000'),
            ('Huawei-Input-Average-Rate', '409600000'),
            ('Framed-Pool', 'poolRadius'),
            ('Framed-IP-Address', '192.168.100.254'),
            ('Mikrotik-Wireless-PSK', '1234568'),
        )

    config = (
            ('Cleartext-Password', 'senha_padrao'), # necessario para mschap chap
            ('Auth-Type', 'authmod'),
        )

    return (radiusd.RLM_MODULE_OK, reply, config)

def authenticate(p):
    request = dict(p)
    print("*** authenticate ***")
    print(request.get("User-Name", "sem nome"))
    return radiusd.RLM_MODULE_OK

Você vai precisar declarar seu modulo:

/etc/freeradius/mods-enabled/python3
python3 authmod {
    module = authmod
    python_path = /etc/freeradius/python3
    mod_authorize = authmod
    func_authorize = authorize
    mod_authenticate = authmod
    func_authenticate = authenticate
}

E depois de declarar precisa usar então configurar o seu uso no "site".

Aqui temos uma decisão para tomar.

  • Se vc tirar # do que esta no arquivo abaixo vc consegue acesso ao mikrotik por ssh sem colocar senha, mas não vai conseguir acessar por winbox nem autenticar clientes pppoe por chap, só vão logar por PAP no PPPoE.
  • Sem tirar esse comentário qualquer usuário que usar a "senha_padrao" tem acesso. Ou seja não tem muita vantagem.
/etc/freeradius/sites-enabled/default
authorize {
    authmod
}
authenticate {
    # só tire o comentário para acessar por ssh sem senha 
    #Auth-Type mschap {
    #    authmod
    #}
    authmod
}

Espero que seja útil para alguém

Se vc não domina muito bem docker vou deixar alguns comandos que usei muito:

Copiar da sua maquina para o container e executar alguns comando dentro dele:

docker cp mods-available/python3 radius:/etc/freeradius/mods-available/python3
docker exec radius ln -s /etc/freeradius/mods-available/python3 /etc/freeradius/mods-enabled/python3
docker exec radius mkdir /etc/freeradius/python3
docker cp python3/authmod.py radius:/etc/freeradius/python3/authmod.py
docker cp python3/__init__.py radius:/etc/freeradius/python3/__init__.py
docker exec radius cp /etc/freeradius/mods-config/python3/radiusd.py /etc/freeradius/python3/
docker cp sites-available/default radius:/etc/freeradius/sites-available/default

Reiniciar o contaner e olhar o log

docker stop radius
docker start radius
docker logs radius

Exibir arquivos de configuração sem comentários:

docker exec radius grep -vE '^\s*$|^\s*#' /etc/freeradius/clients.conf 

Entrar no shell do container:

docker exec -it radius bash

Testar o login de forma básica

radtest edu 123 localhost 0 testing123

sexta-feira, 27 de junho de 2025

Fedora CoreOS

Para usar o Fedora Core é necessário criar um arquivo de inicialização semelhante à ideia do Cloud-init.

Mas o arquivo de configuração YAML (YAML Ain't Markup Language) é conhecido como Butane.

Esse arquivo precisa ser convertido para JSON, conhecido como Ignition.

Para definir a senha no arquivo, é preciso criar o hash usado no Linux. Uma forma de fazer isso é usando Podman:

podman run -ti --rm quay.io/coreos/mkpasswd --method=yescrypt

Exemplo do arquivo Butane que eu usei:

variant: fcos
version: 1.6.0
passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - ssh-ed25519 AAAAC3NzaXXXXXXXXXXXXXXXII/RsHt5CL/v5juZaj+qmQfw9G+n6J24PzTLu+hIuMOd
      password_hash: $y$j9T$GNBLbCycFxXXXXni1hs.$GHx/wq5SwJpqyXXXXXXXXXXtfDY9nSYqLx7jqpt2w99
storage:
  files:
    - path: /etc/hostname
      mode: 0644
      contents:
        inline: fcos01
    - path: /etc/vconsole.conf
      mode: 0644
      contents:
        inline: |
          KEYMAP=br-abnt2
systemd:
  units:
    - name: "install-qemu-guest-agent.service"
      enabled: true
      contents: |
        [Unit]
        Description=Ensure qemu-guest-agent is installed
        Wants=network-online.target
        After=network-online.target
        Before=zincati.service
        ConditionPathExists=!/var/lib/%N.stamp

        [Service]
        Type=oneshot
        RemainAfterExit=yes
        ExecStart=rpm-ostree install --allow-inactive --assumeyes --reboot qemu-guest-agent
        ExecStart=/bin/touch /var/lib/%N.stamp

        [Install]
        WantedBy=multi-user.target

Para converter o Butane em Ignition:

No Linux:

podman run -i --rm quay.io/coreos/butane --pretty --strict < fcos.bn | tee fcos.ign

No PowerShell:

Get-Content fcos.bn | 
    podman run -i --rm quay.io/coreos/butane --pretty --strict | 
    ConvertFrom-Json | 
    ConvertTo-Json -Depth 100 -Compress | 
    Set-Content fcos.minimized.ign -Encoding utf8

Ou:

Get-Content fcos.bn | 
    podman run -i --rm quay.io/coreos/butane --pretty --strict | 
    Tee-Object -FilePath fcos2.ign -Encoding utf8

Se for usar VirtualBox:

Depois de importar o arquivo OVA, crie o guestproperty:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" guestproperty set 'FCOS' /Ignition/Config "$(cat .\fcos.minimized.ign)"

No meu caso, a máquina chamava FCOS e o arquivo Ignition fcos.minimized.ign.

Se for usar Proxmox, uma opção é iniciar com ISO e depois baixar o ign previamente hospedado por HTTP:

curl -o coreos.ign http://<ip-address>:8080/coreos/coreos.ign
coreos-installer install /dev/sda -i coreos.ign

Outra opção é editar o arquivo:

/etc/pve/qemu-server/<vmid>.conf
args: -fw_cfg name=opt/com.coreos/config,file=path/to/example.ign

Adicione na máquina uma interface serial porque foi configurada como terminal.

quinta-feira, 26 de junho de 2025

PROXMOX - CLOUD-INIT

Como falei antes usar cloud-init e libguestfs é muito útil aqui vou escrever como eu usei.


Primeiro precisa instalar a ferramenta:

apt install libguestfs-tools -y


Eu guardo minhas ISOs em um NFS que não fica no servidor mas está montado nele, então vou trabalhar dele assim posso usar o resultado em todos os servidores da rede, use a pasta onde você guarda suas ISOs e templates.

cd /mnt/pve/nfs-remoto/

Baixe o arquivo da sua distribuição, observe que eu usei genericcloud e extensão raw.

wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.raw


Para facilitar minha vida criei um script pra deixar a imagem com os ajustes que eu uso. Mas você pode fazer linha por linha.

Eu criei o arquivo cloud-prep.sh:

#!/bin/bash
IMAGEM="debian-12-genericcloud-amd64.raw"
SERIAL_DEVICE="ttyS0"
BAUD_RATE="115200"

# Instala QEMU Guest Agent
virt-customize -a "$IMAGEM" \
  --install qemu-guest-agent

# Criar diretório de override para serial-getty
virt-customize -a "$IMAGEM" \
  --mkdir /etc/systemd/system/serial-getty@${SERIAL_DEVICE}.service.d

# Criar arquivo de override com autologin root
virt-customize -a "$IMAGEM" \
  --write "/etc/systemd/system/serial-getty@${SERIAL_DEVICE}.service.d/override.conf:[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin root --keep-baud ${BAUD_RATE},38400,9600 %I \$TERM
TTYVTDisallocate=no"

# Habilitar o serviço serial-getty
virt-customize -a "$IMAGEM" \
  --run-command "systemctl enable serial-getty@${SERIAL_DEVICE}.service"

# Configurar GRUB_CMDLINE_LINUX
virt-customize -a "$IMAGEM" \
  --edit '/etc/default/grub:s/^GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX="console=tty0 console='${SERIAL_DEVICE}','${BAUD_RATE}'"/'

# Configurar GRUB_TERMINAL
virt-customize -a "$IMAGEM" \
  --edit '/etc/default/grub:s/^#?GRUB_TERMINAL=.*/GRUB_TERMINAL="console serial"/'

# Configurar GRUB_SERIAL_COMMAND
virt-customize -a "$IMAGEM" \
  --edit '/etc/default/grub:s/^#?GRUB_SERIAL_COMMAND=.*/GRUB_SERIAL_COMMAND="serial --speed='${BAUD_RATE}' --unit=0 --parity=no --stop=1"/'

# Atualizar configuração do GRUB
virt-customize -a "$IMAGEM" \
  --run-command "update-grub"

echo "Configurado qemu-guest-agent"
echo "Configuração do console serial"

O arquivo deve ser executável:

chmod +x ~/cloud-prep.sh

Execute:

~/cloud-prep.sh

Então use o novo arquivo em suas VMs importando o disco, no exemplo o ID da VM é 101 altere para o de sua VM:

qm importdisk 101 debian-12-genericcloud-amd64.raw local-lvm

Por ultimo adicione ao Hardware da VM o CloudInit Drive para poder fazer as configurações. Eu usei EFI Disk também.

domingo, 9 de março de 2025

Editar imagem de disco sem iniciar o sistema operacional guest. (https://libguestfs.org/)


E nesse segundo que esse video tem a informação mais util.
Você edita um disco, o template da VM sem nem precisar iniciar a maquina.

Essa ferramenta é muito importante, não posso esquecer, mas é só isso mesmo.

https://libguestfs.org/

sábado, 8 de fevereiro de 2025

Cloudflare BROWSER SSH - MIkrotik

TL;DR

Crie um container Debian:12-slim
Instale ou compile Name Service Switch module All-To-One (libnss-ato).

Essa foi a grande descoberta que nem as inteligências artificiais conseguiram me dar a dica, penei muito para achar. Quero agradecer muito ao desenvolvedor Donapieppo por ter feito essa lib.

Para quem possa interessar os detalhes

Bom se você não me conhece, para colocar algo meu para rodar na sua rede sem saber como funciona, talvez você queira replicar minha experiencia e fazer sua versão.
 
Eu fiz o Dockerfile e disponibilizei no meu GitHub.

Lá está tudo bem explicado em 3 arquivos README.md separados.

https://github.com/eduardomazolini/cloudflare-mikotik

Obrigado!

sexta-feira, 14 de fevereiro de 2014

ls -R

Diversas vezes quis gerar uma lista de arquivos com o caminho completo.
Gostei muito da resposta que encontrei no Stackoverflow em http://stackoverflow.com/a/1767559/3310382.

ls -R /path | awk '
/:$/&&f{s=$0;f=0}
/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}
NF&&f{ print s"/"$0 }'
Autor: ghostdog74

terça-feira, 21 de abril de 2009

Resolvendo "Alt Gr + w" = "/" "Alt Gr + q" = "?" no teclado com layout ABNT2

Hoje recebi um notebook com a missão de deixar funcionando um linux.
De cara um problema, cade a / ?? rsrs. Cade a "/" e "?" ?
Penei, e achei só um cara dizendo que fez e colocou no blog mas o arquivo mesmo nada.
Então fiz também. Mas não vou dar o arquivo pronto não.

Estou usando uma distro baseada no CentoOS 5.2

1) Vamos configurar o layout do teclado:
O Arquivo a ser editado é o /etc/sysconfig/keyboard, o parâmetro deve ficar KEYTABLE="br-abnt2"
Note que o que esta entre parentes vai ser o nome do arquivo sem o .map.gz.

2) Alterar o arquivo br-abnt2.map.gz
Por segurança copiem esse arquivo pra outro lugar antes de alterar.
O arquivo que vamos alterar fica em /lib/kbd/keymaps/i386/qwerty/
Descompacte o arquivo com o comando gunzip br-abnt2.map.gz o arquivo .gz é apagado só fica o .map
Edite o arquivo e adicione as seguintes 2 linhas:
altgr keycode 16 = slash
altgr keycode 17 = question
Compacte novamente o arquivo com o comando gzip br-abnt2.map o arquivo .map é apagado só fica o .map.gz
3) Pra carregar sem precisar dar boot digite loadkeys br-abnt2

Observações:
O arquivo que alteramos inclui arquivos qwerty-layout.inc e linux-with-alt-and-altgr.inc da pasta /lib/kbd/keymaps/i386/include/
Entenda esses arquivos, eles foram fundamentais pro sucesso desta alteração.
Se vc não tiver usando outros softwares pra configurar sua console sugiro trocar o nome do arquivo alterado e usar esse mesmo nome no arquivo keyboard.

terça-feira, 7 de abril de 2009

DDNS direto do linux - DDClient

wget http://ufpr.dl.sourceforge.net/sourceforge/ddclient/ddclient-3.8.0.tar.gz
Esse projeto é bem legal e facil de usar, especialmente com o dyndns.
No meu caso configurei pra pegar o IP direto do site do roteador.

www.dyndns.org
www.dd-wrt.org

PPTP - VPN rápida

http://poptop.sourceforge.net/yum/stable/packages/ppp-2.4.4-9.0.rhel5.i386.rpm
http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-1.rhel5.1.i386.rpm
http://poptop.sourceforge.net/yum/stable/packages/dkms-2.0.17.5-1.noarch.rpm
http://poptop.sourceforge.net/yum/stable/packages/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm

Instalei esses arquivos e segui um tutorial do proprio site da poptop.

Como extrair os arquivos de um RPM

Dica rápida pra não perder.
Estava precisando só de um arquivo que vinha no rpm. Mas já tinha o asterisk instalado customizado. Então precisei dessa dica pra poder pegar o arquivo.
Se alguém sabe um modo melhor me avisa.

rpm2cpio asterisk-1.4.21.2-2.i386.rpm | cpio -idmv

segunda-feira, 1 de dezembro de 2008

Desabilitar autonegociação

Se vc vai usar um servidor com hardware conhecido ligado em um switch de rede conhecido.
POR QUE, depender do protocolo de auto negociação da placa de rede?
Por isso recomendo sempre editar o arquivo que inicia a placa de rede, para desabilitar.
Isso evita muitos problemas, principalmente quando existe voip.
Basta adicionar uma das linhas abaixo:

Para 100Mb Full duplex
ETHTOOL_OPTS=”speed 100 duplex full autoneg off”

Para 10Mb Halfd duplex
ETHTOOL_OPTS=”speed 10 duplex half autoneg off”

No meu caso os arquivos ficam em: /etc/sysconfig/network-scripts
O Nome do arquivo da minha 1a. placa de rede é: ifcfg-eth0