umgeher's changelog

Openbsd

OpenBSD - Encrypt Thumbdrive

Para criar um thumbdrive com crypto no OpenBSD.

Primeiro coloque o seu drive no seu pc. Use o dmesg para pegar o id do device que voce acabou de colocar, deve ser as ultimas linhas, logo:

dmesg | tail

No meu caso retornou:

sd2 at scsibus4 targ 1 lun 0: <Kingston, DataTraveler 3.0, PMAP> removable serial.09511666E3A08995038B
sd2: 59148MB, 512 bytes/sector, 121135104 sectors

OK, agora eu sei que o device que coloquei esta’ como sd2. Vamos limpar de fato o nosso device.

dd if=/dev/urandom of=/dev/rsd2c bs=1m

Isso vai escrever por todo device random bytes, limpando o que estiver la’ dentro. Isso pode/vai demorar um pouco.

Depois de zerar nosso device, vamos criar o registro MBR nele.

fdisk -iy sd2

Agora podemos criar uma particao com o formato RAID usando o disklabel.

disklabel -E sd2

Agora que criamos nossa particao a do tipo RAID. Vamos criar, um device raidsoft0 usando crypto.

bioctl -c C -l sd2a softraid0

Ele vai te perguntar o passphrase que voce deseja usar.

No final do processo ele vai te indicar o device id que foi gerado. No meu caso foi sd5. Agora podemos organizar o device e criar nossa particao e filesystem.

dd if=/dev/zero of=/dev/rsd5c bs=1m count=1
fdisk -iy sd5
disklabel -E sd5

O processo de criacao da particao e’ o mesmo que o anterior, porem agora vamos deixar o FS type padrao.

Por fim, criando o filesystem…

newfs sd5a

Seu device esta’ pronto para mount e uso.

Lembre-se de utilizar o bioctl depois de usar seu device.

bioctl -d sd5

OpenBSD - Monero

Para compilar a toolchain do monero no OpenBSD, devemos ter os seguintes pacotes instalados… cmake, gmake, zeromq, libiconv e boost. Temos todos em pkg.

pkg_add cmake gmake zeromq libiconv boost

Agora vamos clonar o projeto…

git clone https://github.com/monero-project/monero.git

Dentro do diretorio do projeto, execute:

ulimit -d 2000000 ; env DEVELOPER_LOCAL_TOOLS=1 BOOST_ROOT=/usr/local gmake release-static

Agora voce tem a toolchain do monero dentro do diretorio ./build/OpenBSD/master/release/bin.

Machine: lite & Instalacao OpenBSD

Ganhei um novo laptop para trabalhar. Um Lenovo Thinkpad T14.

Nao e’ segredo que sou maniaco de Thinkpads. E’ literalmente o unico laptop que recomendo.

Hardware

Esse T14 esta’ com uma configuracao sensacional, pelo menos para mim.

AMD Ryzen Pro 5
16GB DDR4
NVMe Samsung MZALQ256
14.0" FHD (1920x1080)

De longe e’ a maquina com maior recurso que tenho em casa. Sim, nao sou aquelas pessoas que ficam comprando maquinas bizarras, tenho ate' um preconceito com quem tem essas maquinas. Normalmente e’ a pessoa que fica mais tempo no youtube sem fazer nada.

Ele e’ super leve, talvez o mesmo peso do meu antigo e morto X1 Carbon. Alias, acredito que sejam iguais. Em termos de tamanho e peso. O que me deixou muito feliz, ja’ tenho varios “utils” para esse bodyframe.

Keyboard / Trackpoint

Unica coisa que fico triste e’ do teclado nao ser padrao US. (Fica a dica ai, quem quiser me doar um teclado americano para esse laptop, nao se faca de dificil.)

E sim, nao e’ mais o padrao antigo dos Thinkpads quando a IBM fabricava, acredito que nunca mais vamos ter keyboards de laptops que nem aqueles antigos. Uma pena.

Mas o icone continua la’. O trackpoint vermelho. Nao e’ a antiga “borracha de lapis”, mas esta’ la’. Eu achei mais preciso do que do meu antigo X1 Carbon, mas nada ultra melhor. Talvez seja porque ainda e’ pouco usado.

Logo abaixo do trackpoint temos os 3 botoes de “mouse” (esquerda, scroll e direita) fisicos! Nada daquela porcaria de botao virtual.

O touchpad eu nao vou comentar, ja’ que nao uso e desligo ele na BIOS. Mas o tamanho e’ adequado.

RJ45

Temos entrada de RJ45! Um ponto positivo em cima do antigo X1 Carbon. Isso me fazia falta o tempo todo. Mesmo que seja um laptop, sempre que possivel eu prefiro ficar no cabo.

Software

Vamos instalar o OpenBSD nele e deixar quase pronto para o meu uso do dia dia.

Download

Nessa pagina voce pode vai encontrar todas as opcoes de imagens disponiveis.

  • installXX.img - imagem completa para gravar em um memstick, inclui todos os file sets. Ou seja, voce pode instalar o sistema completo sem a necessidade de rede/internet.
  • minirootXX.img - imagem de instalacao apenas, nao inclui os file sets. Voce vai precisar de rede/internet para terminar a instalacao.
  • installXX.iso - imagem completa para gravar em CD/DVD.

Lembrando que o XX e’ um placeholder para o numero da versao. No dia que escrevo esse post a versao atual e’ 7.0.

Escolha a imagem que deseja utilizar, no meu caso e’ o “miniroot70.img”.

curl -sL "https://cdn.openbsd.org/pub/OpenBSD/7.0/amd64/miniroot70.img" > i

Depois de feito o download, precisamos gravar ele em uma midia para continuar com a instalacao. Eu tenho um memstick da Sony de 64GB de longa data que sempre utilizo para instalacao do OpenBSD. Mas voce pode utilizar qualquer um que tenha espaco suficiente para gravar a imagem. O legal e’ voce sempre ter esse memstick disponivel. Nunca se sabe quando um amigo vai pedir para voce instalar o OpenBSD na maquina dele.

Coloque o seu memstick na porta USB e veja no dmesg qual endereco ele ganhou. Caso fique em duvida, use o seguinte comando:

dmesg | grep "^[sw]d"

Ele vai apresentar a lista dos enderecos de storage. Exemplo:

~> dmesg  | grep "^[sw]d" 
sd0 at scsibus1 targ 0 lun 0: <ATA, WDC WD5000AAKX-0, 15.0> naa.50014ee25e2ecf04
sd0: 476940MB, 512 bytes/sector, 976773168 sectors
sd1 at scsibus4 targ 1 lun 0: <Sony, Storage Media, 0100> removable serial.054c06b1610302980156
sd1: 61552MB, 512 bytes/sector, 126058496 sectors
~>

No meu caso, tenho o meu HDD no endereco sd0 e o memstick da Sony, como comentei, esta’ no sd1. Agora vamos gravar a imagem no memstick.

ATENCAO: tenha certeza do local onde voce vai gravar a imagem. Esse procedimento nao tem volta. Caso coloque o endereco do seu HDD, voce vai perder tudo o que tem nele.

dd if=i of=/dev/sd1c bs=1M

Esse processo pode demorar caso seu disco e/ou memstick seja meio lento.

Depois de terminar, estamos com tudo pronto para continuar a instalacao. Nao e’ mesmo Olga?

Instalacao

O processo de instalacao do OpenBSD e’ muito simples e rapido. E mesmo “complicando” as coisas, ainda continua muito simples.

Depois de dar boot pelo memstick. Voce vai ver a seguinte informacao.

Welcome to the OpenBSD/amd64 7.0 installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell?

Agora voce pode escolher em Instalar, fazer Upgrade, Autoinstalacao ou S.

Caso voce deseja escrever no disco com cryptografia (o que eu recomendo em caso de laptop), sigua normalmente aqui o texto, caso nao, pule para o header Copia.

Crypto!

Vamos formatar o disco e deixar ele configurado para gravar tudo com cryptografia.

Digite S e de ENTER.

Agora voce tem acesso ao shell da instalacao do OpenBSD. Normalmente seu disco de instalacao vai ser o primeiro, principalmente de um laptop. Mas de toda forma se quiser verificar, voce pode digitar dmesg | grep "^[sw]d" para exibir os discos disponiveis.

No meu caso o disco que vou usar para instalar o sistema e’ o sd0.

Primeiro passo e’ voce ativar o device sd0, para isso entre em /dev e execute o MAKEDEV.

cd /dev
sh MAKEDEV sd0

Agora que o sistema criou os enderecos para o sd0 vamos escrever a particao GPT. Digite:

fdisk -iy -g -b 960 sd0

Podemos criar a nossa particao. Execute o programa disklabel da seguinte forma:

disklabel -E sd0

Dentro do disklabel voce pode ter acesso ao help digitando ?. Neste momento devemos criar nossa particao. Digite:

a a 

Ele vai perguntar o offset, size e FS type. Ambos offset e size voce pode informar o que ele sugerir. No caso do FS type informe RAID.

Agora voce deve escrever as particoes, digite w e q para sair do disklabel.

Com a particao criada, vamos ativar a cryptografia utilizando o bioctl.

bioctl -c C -l sd0a softraid0

O bioctl vai perguntar por uma senha, digite a que quiser. Lembre dela para sempre… Caso contrario, voce vai perder tudo que esta’ no seu disco.

O retorno do bioctl e’ a particao que de fato vamos usar para instalar o sistema. Lembre dela. No meu caso e’ a sd2.

Agora execute o comando exit para sair do shell e voltar para o primeiro passo da instalacao.

Setup

Podemos iniciar o setup da instalacao. Digite I para iniciar a instalacao.

Primeira pergunta e’ sobre o seu layout de teclado. Eu so’ uso o default que e’ o padrao americano.

Depois voce pode escolher o hostname da sua maquina, no meu caso vou colocar lite.

Esse hardware me apresentou duas interfaces de rede, a re0 e re1. A interface wifi nao foi apresentada. Agora sei que o firmware das interfaces de rede sao RealTek. Depois eu vejo o que faco com wifi, nao uso muito ele mesmo e quando uso de fato gosto de usar um dongle1. Escolhi a interface re1 por experiencia passada. A re0 nao vai responder2.

Deixo autoconf para ele auto configurar a interface de rede. Ele mostra que conseguiu configurar e digito done para passar para proxima pergunta.

Agora a senha do root e’ fornecida e confirmada.

Proximo passo e’ informar se voce deseja que o sshd inicie no boot do sistema. Como essa maquina e’ um laptop, eu coloco no.

Agora pergunta se desejamos que inicie o xenodm (ambiente grafico) no boot. Como e’ um laptop, eu digo que yes.

O momento de criar o seu usuario chegou, coloque o nome do seu user como quiser. No meu caso e’ umgeher. As proximas perguntas vao ser nome completo do user (caso queira), senha e confirmacao da senha.

Depois de criar o seu usuario, ele vai perguntar sobre o timezone onde voce se encontra, eu uso UTC ate’ em relogio de pulso… Logo coloco UTC.

Agora vem a parte de voce escolher o destino da instalacao. No meu caso o disco e’ o sd2, que foi criado a partir do sd0 com crypto. Caso voce nao tenha feito o processo de cryptografia do disco, o endereco deve ser sd0.

Logo depois de escolher o disco para instalacao, ele vai apresentar a tabela de particao deste diso. No meu caso, tenho duas, uma do EFI Sys e outra com o OpenBSD. Eu seleciono GPT com o char g. Agora ele vai apresentar como ele vai dividir esse espaco alocado, recomendo usar o auto layout mesmo, com o char a.

Depois que ele teminar de escrever os dados na tabela, digite done para seguir o processo.

OK, agora e’ a hora de apontar onde estao os file sets, no meu caso, como usei o miniroot, vou usar o mirror que esta’ no Brasil. Informo http.

Nao uso proxy. O mirror que vou usar e’ o openbsd.c3sl.ufpr.br*, e o diretorio que esta’ os arquivos e’ pub/OpenBSD/7.0/amd64.

Escolha os sets que queira instalar, na duvida, deixe tudo mesmo. O sistema ja’ e’ muito minimalista, nao vai fazer diferenca instalar tudo.

Depois do processo de copia, verificacao e instalacao do sets. Apenas de um enter.

Parabens, voce acabou de instalar o OpenBSD.

Apenas de um enter e o sistema vai dar um reboot, lembre de tirar o memstick da sua maquina.

Bem vindo ao OpenBSD.

Proximos passos…

Agora e’ a hora de deixar com minha cara essa maquina. Vou escrever como faco e ir postando aqui no changelog. Quando eu fizer o post vou atualizar esse com o link da continuacao.


  1. No meu campo de trabalho, nunca e’ bom voce divulgar o seu MAC Address, por motivos obvios. Sempre uso um dongle USB para trabalhar. Assim voce cria um proxy de MAC Address. ↩︎

  2. Depois eu verifico isso, talvez responda e estou comendo bola por um problema antigo que tive. ↩︎

setxkbmap - nocaps

Para trocar o CapsLock para Ctrl.

setxkbmap -option ctrl:nocaps

SSH

Secure Shell (SSH) e’ um protocolo de rede cryptografado. Usamos SSH para ter acesso a outro computador de forma segura em um ambiente nao seguro.

“A little bit of math can accomplish what all the guns and barbed wire can’t: a little bit of math can keep a secret.”

– Edward Snowden

Historia

Tatu Ylönen, pesquisador na Teknillinen korkeakoulu, em Helsinki, Finlandia, criou o SSH em 1995. A primeira versao do protocolo leva o nome de SSH-1. O objetivo do protocolo e' subtistuir os protocolos telnet, ftp, rlogin e rsh. Fornecendo autenticacao e seguranca na comunicao entre as maquinas.

Em 1999, desenvolvedores do OpenBSD fizeram um fork da ultima versao open-source do SSH (1.2.12), e esse fork ganhou o nome de OpenSSH.

O OpenSSH se tornou a implementacao mais popular e usada no ano de 2005. Ele e’ o servidor default de varios sistemas operacionais e distribuicoes.

OpenSSH

OpenSSH

Existem varias implementacoes de servidores SSH. Porem a mais usada, conhecida e (na minha opiniao) melhor versao e’ do OpenBSD, chamado de OpenSSH. Deste ponto para frente, irei tratar OpenSSH apenas como SSH.

Instalacao

SSHD (servidor do SSH) ja’ deve estar instalado em seu sistema operacional. Caso nao, recomendo voce trocar de sistema operacional.

Configuracao

Normalmente o arquivo de configuracao do SSHD esta’ localizado em /etc/ssh/sshd_config.

Algumas opcoes que eu gosto de deixar configurado:

AuthorizedKeysFile .ssh/authorized_keys
ChallengeResponseAuthentication no
PasswordAuthentication no
PermitEmptyPasswords no
PermitRootLogin no
PubkeyAuthentication yes

AuthorizedKeysFile

Local onde as chaves publicas sao colocadas para serem usadas/aceitas como authentication para um usuario. Recomendo deixar no default (.ssh/authorized_keys .ssh/authorized_keys2).

ChallengeResponseAuthentication

Diz se o usuario pode logar usando o teclado… =) Eu sempre deixo como no.

Detalhe, ChallengeResponseAuthentication e’ um alias hoje, o nome da opcao agora e’ KbdInteractiveAuthentication.

PasswordAuthentication

Diz se o usuario pode usar password para authentication. Nunca deixe yes aqui… sempre no.

PermitEmptyPasswords

Configura se um usuario pode ser logar sem password. Deixe como no.

PermitRootLogin

Configura se o servidor vai aceitar o root fazer login. Recomendo deixar sempre em no.

PubkeyAuthentication

Especifica se usuario pode entrar usando chaves primarias contra chaves publicas. Deixe como yes.

Client

Novamente, seu sistema ja’ deve vir com OpenSSH Client instalado. Caso nao, recomendo mudar de sistema operacional!

Gerar Chaves

Devemos usar sempre chaves para fazer authentication. Para gerar um par de chaves, use o comando:

ssh-keygen -t ed25519

Segue um screen-shot mostrando o ssh-keygen.

sshkeygen

Eu setei o destino da chave criada para /tmp/ssh-demo so’ para nao re-escrever a minha chave atual. Se for a primeira vez que esta' criando a chave, apenas aceite o default.

Use uma senha forte, que voce nao vai esquecer!

E nao use RSA! Use ed25519.

Authentication

Para voce configurar um user conseguir logar usando a chave privada dele. Coloque a chave publica do user no ~/.ssh/authorized_keys.

sshauth

Nesse exemplo, eu usei minha chave publica, localizada em ~/.ssh/id_ed25519.pub no arquivo ~/.ssh/authorized_keys.

Conectar

Para conectar a um SSHD, simplemente use o comando:

ssh seuUserNaMaquinDestino@maquinaDestino

Exemplo:

ssh umgeher@umgeher.org

Tunnel SSH

Com SSH podemos criar um tunnel de uma forma muito simples.

Vamos usar o seguinte senario.

Eu estou na minha workstation, chamada raven. Vou conectar em uma maquina remota, chamada, tyr. A maquina tyr esta’ dentro de uma rede que existe varios servicos la’ dentro, porem quero conectar na maquina lunna que tem um HTTPd servido uma intranet. Eu via SSH consigo fazer com que meu browser local, na maquina raven, consiga conectar na intranet na maquina remota lunna.

Um simples comando:

ssh -L 8080:192.168.20.245:80 umgeher@tyr

No caso, lunna tem um ip fixo dentro da rede, onde tyr tem acesso, 192.168.20.245. No meu browser eu vou acessar a intranet via localhost:8080. Essa porta esta’ ligada a porta 80 da maquina lunna via a minha connection ssh da maquina tyr.

Explicando o argumento -L, Porta Local : IP Destino : Porta Destino.