terça-feira, 15 de outubro de 2019

OpenSSL Shell linha de comando Criar Chaves Certificado, Assinar , Validar Cifrar e Decifrar.

Resultado de imagem para shell bash



Assinar e verificar texto/arquivos:

para chaves públicas através da Linha de Comando OpenSSL


Introdução: Existem muitas maneiras de fazer essa uma delas:


Este pequeno guia mostra-lhe como utilizar a Linha de Comandos do OpenSSL para assinar um arquivo e como verificar a assinatura deste arquivo.
A prática da assinatura digital e fundamental para garantir a integridade e a autoria do documento, podemos ainda reforçar este propósito com a criptografia. para provar a propriedade de uma chave ou para provar que um arquivo não foi modificado desde que você o assinou.
Isto funciona tanto com pequenos ficheiros de texto como com grandes fotografias, documentos ou ficheiros PDF.

Sou escritor e blogueiro freelancer, não tenho nenhum, tipo de patrocínio se você gosta de meus post se eles estão sendo úteis considere fazer uma doação através do botão doação, grato.

Gerar um par de chaves

Vamos gerar um novo par de chaves para isto. Uma par de chaves Publica e Privada são necessários para poder assinar criptografar, e fazer o caminho inverso.
Você também pode usar um já existente. Altere o coteúdo da mensagem no seguinte comando e execute-o para gerar um par de chaves auto assinado:

openssl req -nodes -x509 -sha256 -newkey rsa:4096 -keyout edpesPV.key -out edpesKey.crt -days 365 -subj "/C=NL/ST=Zuid Brasil/L=SaoPaulo O=Edson Pessotti OU=IT Dept/CN=”edpes Sign Key"".

root@criativo:/home/edpes/SSLtest# openssl req -nodes -x509 -sha256 -newkey rsa:4096 -keyout edpesPV.key -out edpesKey.crt -days 365 -subj "/C=NL/ST=Zuid Brasil/L=SaoPaulo O=Edson Pessotti OU=IT Dept/CN=”edpes Sign Key"
Generating a 4096 bit RSA private key
........................................................++
......++
writing new private key to 'edpesPV.key'
-----
root@criativo:/home/edpes/SSLtest# ls
edpesKey.crt edpesPV.key teste.txt teste.txt.sha256

Crie também um pequeno arquivo de texto para testar o processo de assinatura:

echo "Olá, Mundo!" > teste.txt

Assine o arquivo

Use o seguinte comando para assinar o arquivo. Nós realmente pegamos o hash sha256 do arquivo e assinamos isso, tudo em um comando openssl:

openssl dgst -sha256 -sign edpesPV.key -out teste2.txt.sha256 teste.txt
Isso resultará em um arquivo sign.txt com o conteúdo, e o arquivo sign.txt.sha256 com o hash assinado deste arquivo.

Você pode colocar o arquivo e a chave pública na internet ou onde quiser. Mantenha a chave privada muito segura e privada.

Verifique a assinatura

Para verificar a assinatura, você precisa da chave pública do certificado específico. Podemos obter isso a partir do certificado usando o seguinte comando:

root@criativo:/home/edpes/SSLtest# openssl dgst -sha256 -verify <(openssl x509 -in edpesKey.crt -pubkey -noout) -signature teste2.txt.sha256 teste.txt
Verified OK


Se a validação falhou, isso significa que o hash de arquivo não corresponde ao hash assinado. O arquivo provavelmente foi modificado ou adulterado. O resultado de uma validação falhada tem a aparência abaixo:

Falha na verificação
Assinatura

Converter para o Formato base64

Para obter uma versão de texto da assinatura (o arquivo contém conteúdo binário) você pode usar o comando base64. A versão textual é mais fácil de publicar online com o arquivo:

base64 sign.txt.sha256 > sign.txt.sha256.txt
Para voltar à saída parsable do openssl, use o comando base64 -d:

base64 -d sign.txt.sha256.txt > sign.txt.sha256

Até aqui conseguimos garantir que o arquivo não foi adulterado, e a sua autoria, no entanto a mensagem em si continuara vísivel, para garantir a confidencialidade presisaremos criptografar o arquivo, podemos fazer criando uma nova pasta e copiando o arquivo e seu hash para a nova pasta , em seguida criptografamos a pasta com a chave privada, e enviamos a pasta criptografrada para seu destino, onde o recepetor de posse da chave pública previamente enviada poderá decriptar e verificar a assinatura do arquivo recebido.

Criptografar arquivo com algoritmo assimétrico RSA

#openssl rsautl -in teste.txt -out teste.rsa -encrypt -pubin -inkey chaveprivada


Descriptografar arquivo com algoritmo assimétrico RSA

#openssl rsautl -in teste.rsa -out teste.rec -decrypt -inkey  chavepublica

Deste forma os três pilares básicos da Segurança da Informação estão realizados de forma satisfatória. Garantindo a Confiabilidade a Integridade e a Autoria.



quinta-feira, 24 de maio de 2018

Linux Cron e Crontab

Usando cron e crontab para agendar tarefas O cron é um recurso presente no Linux que permite a execução automática de tarefas em datas e horários pré-determinados. O objetivo deste texto é mostrar como utilizá-lo. Suponha que você seja dono de um serviço de hospedagem de sites e diariamente precisa disponibilizar, numa pasta acessível por FTP, o arquivo de log de acessos de um cliente. É trabalhoso fazer isso manualmente e na pior das hipóteses, você pode esquecer. Felizmente o Linux conta com o serviço cron, que permite a realização de tarefas periodicamente e em dias e datas determinados por você. O objetivo deste artigo é mostrar como fazer isso. O que é cron O cron pode ser interpretado como um serviço do Linux que é carregado durante o processo de boot do sistema. Trata-se de uma ferramenta que permite programar a execução de comandos e processos de maneira repetitiva ou apenas uma única vez. No caso citado da introdução, você poderia usar o cron para que o arquivo de log do cliente fosse disponibilizado todos os dias às 12 horas, por exemplo. Isso é possível porque o daemon (uma espécie de programa que executa tarefas em segundo plano) do cron executa os comandos nas datas e horários especificados. A cada minuto o cron é acionado para verificar se há tarefas a serem realizadas. Para executar as tarefas, o cron usa uma espécie de tabela conhecida como crontab. O arquivo crontab geralmente fica localizado no diretório /etc, mas também pode estar em um diretório que cria um crontab para cada usuário do sistema, geralmente em /var/spool/cron/. O cron é um recurso presente no Linux que permite a execução automática de tarefas em datas e horários pré-determinados. O objetivo deste texto é mostrar como utilizá-lo. Como usar o cron O primeiro passo é abrir o crontab. Para isso, você pode usar editores de textos como vi e o emacs. Também é possível digitar o comando "crontab -e" para editar o arquivo exclusivo de seu usuário. Neste caso, a edição é feita como se você estivesse usando o vi. O crontab tem o seguinte formato: [minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando] O preenchimento de cada campo é feito da seguinte maneira: Minutos: informe números de 0 a 59; Horas: informe números de 0 a 23; Dias do mês: informe números de 1 a 31; Mês: informe números de 1 a 12; Dias da semana: informe números de 0 a 7; Usuário: é o usuário que vai executar o comando (não é necessário especificá-lo se o arquivo do próprio usuário for usado); Comando: a tarefa que deve ser executada. Repare que a ordem desses valores indica o nome correspondente do campo. Por exemplo, no campo mês, 1 a 12 quer dizer de "Janeiro a Dezembro". No caso de dias da semana, 0 a 6 quer dizer de "Domingo a Sábado". Note que o número 7 também pode ser usado. Neste caso, assim como o número 0, o 7 equivale ao dia de "Domingo". No lugar desses valores, você pode informar * (asterisco) para especificar uma execução constante. Por exemplo, se o campo dias do mês conter *, o comando relacionado será executado todos os dias. Você também pode informar intervalos no preenchimento, separando os números de início e fim através de - (hífen). Por exemplo, se no campo horas for informado 2-5, o comando relacionado será executado às 2, 3, 4 e 5 horas. E se o comando tiver que ser executado às 2 horas, entre 15 e 18 horas e às 22 horas? Basta informar 2,15-18,22. Nestes casos, você separa os parâmetros por vírgula. Vamos a um exemplo: # tarefa 1 30 22 2,10 * * echo "Porque nós amamos a liberdade" Neste exemplo, a frase "Porque nós amamos a liberdade" é exibida às 22 horas e 30 minutos, nos dias 2 e 10, em todos os meses e em todos os dias da semana. Repare na linha "#tarefa 1". Trata-se de um comentário. Digite # e tudo o que for digitado na linha não será considerado pelo cron. É um recurso útil para inserir descrições quando se tem várias tarefas a serem executadas. Finalizando Os recursos do cron não se limitam aos mostrados anteriormente. Você pode ainda agendar tarefas mais complexas e poupar muito trabalho nessas execuções automáticas. É possível, por exemplo, configurar o cron para emitir-lhe um aviso de quando uma tarefa é executada. A dica para lidar com o cron é testá-lo. Experimente-o bastante. Mesmo que você seja apenas um usuário doméstico, certamente encontrará alguma utilidade para o cron. Por: Emerson Alecrim em 18/01/2005

quarta-feira, 6 de setembro de 2017

Como saber qual é a versão de seu MYSQL..

E muito comum ocorrer  problemas decompatibilidade de versões com o MYSQL, quando desenvolvemos um aplicativo com base em uma  versão, ao instalarmos o mesmo em outro computador podem ocorrer certos problemas,  as queryes podem simplesmente não funcionar.

E importante checar antes se  a  versões são as mesmas,  e fazer as alterações que forem necessárias

Para saber a versão do  mysql atual instalado em sua maquina, podem ser utilizados vários recursos, do PHP PHPMYADMIN, Workbeanch, etc.

Vamos utilizar os recursos do próprio mysql, abrindo o terminal de comando:

Inicie o mysql:
mysql -u root -p

logado de o comando
 mysql> select VESION();

O resultado é esse:



Versão 5.7.19-Oubuntu016.06.1.

Pronto agora e so estudar  quais são as possibilidades.

Bye.



sexta-feira, 12 de maio de 2017

Converter arquivos PDF para arquivos texto

OI;

Já vi muita gente pirar na hora de converter um arquivo  pdf para texto e acabar pagando para sites para fazer  a conversão, muitos softwares enormes e caros etc

Pois pirem no linux basta  apenas um simples comando no shell e pronto rápidinho, seu arquivo  está convertido em texto


pessotti@edson-H61M-DS2:~/Down$ pdftotext camina*pdf      celpdp.txt

pessotti@edson-H61M-DS2:~/Down$ ls
Apache_OpenOffice_4.1.3_Linux_x86_install-deb_pt-BR.tar.gz
backuptot.sql
bluegriffon_2.3.1-1ubuntu1_i386.deb
camina.pdf
celpdp.txt


é muito simples sem complicação

pdftotext arquivoPDFaconverter  arquivoasergerado.txt


inte a proxima

sexta-feira, 14 de abril de 2017

Atualizar o Linux com cdrom via linha de comando

Oi !!

Na hora de atualizar a distro Linux muita gente perde tempo para fazer este trabalho, principalmente se for fazer em uma rede de computadores, fazer o download dos pacotes para cada desktop.

Uma maneira de atualizar o Linux bem fácil e usar o apt-cdrom para incluir um cd com uma distro mais recente. assim o sistema vai copiar os pacotes direto do cdrom e poupara um tempo valioso.

Para fazer isso no terminal :
Baixa a ISO  mais recente de sua distribuição, e grave em um DVD coloque o DVD no  drive e de o comando :

edson@edson-H61M-DS2:~$ sudo apt-cdrom add
[sudo] senha para edson:
Usando ponto de montagem de CD-ROM /media/cdrom/
Desmontando CD-ROM...
Aguardando por disco...
Please insert a Disc in the drive and press [Enter]

Apos esse comomando o cd sera incluido nas sources do apt, feito isso usar o comando:

edson@edson-H61M-DS2:~$ sudo apt-get update

tambem e possivel atualizar o sistema com o comando update-manager  -d

 edson@edson-H61M-DS2:~$ update-manager -d
Gtk-Message: Failed to load module "topmenu-gtk-module"
/usr/bin/update-manager:28: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
  from gi.repository import Gtk
/usr/lib/python3/dist-packages/UpdateManager/UnitySupport.py:29: PyGIWarning: Dbusmenu was imported without specifying a version first. Use gi.require_version('Dbusmenu', '0.4') before import to ensure that the right version gets loaded.
  from gi.repository import Dbusmenu, Unity
/usr/lib/python3/dist-packages/UpdateManager/UnitySupport.py:29: PyGIWarning: Unity was imported without specifying a version first. Use gi.require_version('Unity', '7.0') before import to ensure that the right version gets loaded.
  from gi.repository import Dbusmenu, Unity
edson@edson-H61M-DS2:~$


pronto em minutos seu sistema estará atualizado.

Até 
Edson

quarta-feira, 12 de abril de 2017

Shell Script bash para back-up de banco de dados MYSQL.

#!/bin/sh
#----------------------------------------------------
# Um script shell básico para back-up de banco de dadso mysql
# Author Edson Pessotti / 2017
#----------------------------------------------------
#----------------------------------------------------
# Variáveis para p mysqldump.
FILE=Meubackup.sql.'date +"%Y%m%d"'
DBSERVER=127.0.0.1
DATABASE="nome do banco"
USER="ome do usuario"
PASS= " senha "
# Para remover as versões anteriores no caso de mais de um backup por dia
unalias rm 2> /dev/null
rm ${FILE} 2> /dev/null
rm ${FILE}.gz 2> /dev/null
# Fazendo o back=up com o mysqldump;
# Use este comando para um servidor de banco de dados em um host separado:
#mysqldump --opt --protocol=TCP --user=${USER} --password=${PASS} --host=${DBSERVER} ${DATABASE} > ${FILE}
# Use este comando para um servidor de banco de dados em localhost. Adicionar outras opções, se necessário.
mysqldump --opt --user=${USER} --password=${PASS} ${DATABASE} > ${FILE}
# Compactando o arquivo criado com gzip
gzip $FILE
#Monstrando o resultado a usuario
echo "${FILE}.gz  foi criado:"
ls -l ${FILE}.gz | echo " bye inte a proxima "


terça-feira, 2 de agosto de 2016

Um Servidor DHCP com subredes e impressora .

Configurando o servidor DHCP para gerenciar sub-redes

Esta configuração  um outro exemplo de um Servidor DHCP.
vejamos o exemplo desta configuração:

#Define valores globais para todo o sistema
max-lease-time 604800;
default-lease-time 86400;
option domain-name "Minha.rede.br";
option domain-name-servers 10.10.0.2, 10.10.0.101;
option pop-server 10.10.0.106;

#Define  endereços dinâmicos 

subnet 10.10.0.0 netmask 255.255.0.0 {
#  roteador  principal,

option routers 10.10.0.7; 
option broadcast-address 10.10.255.255;
range 10.10.0.10 10.10.0.30;
}
#
subnet 10.10.3.0 netmask 255.255.255.0 {
option routers 10.10.3.202;
option broadcast-address 10.10.3.255;
range 10.10.3.31 10.10.3.50;
}
#
subnet 10.10.4.0 netmask 255.255.255.0 {
option routers 10.10.4.208;
option broadcast-address 10.10.4.255;
range 10.10.4.51 10.10.4.70;
}
#
# Define os host dos clientes que obteram
endereços IP estáticos
#
group {
use-host-decl-names true;
host lab100 {
  hardware ethernet 00:80.c7:aa:a8:04;
   fixed-address 10.10.0.2;
}
#
host lab110 {
 Hardware ethernet 00:00:c0:a1:5e:10;
  fixed-address 10.10.0.101;

}
#
###Reservando IPs Fixos para Impressora e Servidor de Arquivos
 host impressora_A {
  hardware ethernet 00:03:11:11:11:11;
   fixed-address 192.168.1.10;
    }
#
 host servidor_arquivos {
   hardware ethernet 00:01:12:12:12:12;
    fixed-address 192.168.1.11;
    }


}