Alguns dias atrás Eu disse a eles sobre FlatPress, uma aplicação web (CMS) através da qual você pode ter um blog ou algo semelhante sem ter que usar bancos de dados ou se complicar muito
Bem, eu tenho no meu laptop um FlatPress para anotações pessoais, coisas que não quero esquecer e é por isso que as escrevo neste diário pessoal. Mas, como muitos de vocês já devem saber... sou um tanto paranóico em relação à segurança e, se se trata da segurança dos MEUS pensamentos, vocês não têm ideia de quão paranóico posso ser
Então, me deparei com o problema: como, usando o FlatPress, posso proteger todo o conteúdo dele?
Pensei em vários aplicativos que permitem a criptografia de dados, mas ... nenhum deles fazia exatamente o que eu queria, então assumi a tarefa de programar o que eu queria.
Agora vou mostrar um script que fiz, que faz o seguinte:
1. Ele mostra uma caixa de diálogo perguntando se você é KZKG ^ Gaara, se você pressionar NÃO o script fecha, se você pressionar SIM, tudo continuará normalmente.
2. Mostre uma caixa de texto perguntando qual é a senha:
3. Se você pressionar Cancelar o script fecha, agora vem um dos truques do script ...
3.1. A lógica é que o script compara a senha que escrevemos com uma que já está predefinida no mesmo script, e se as senhas corresponderem, ele continua a execução, e se as senhas não corresponderem, uma mensagem de erro aparece. O problema é que, se colocarmos a senha correta dentro do script assim, qualquer pessoa que abrir o script com um editor de texto poderá ver claramente a senha correta... e isso, meus amigos, é simplesmente uma falha imperdoável
3.2. Para evitar colocar a senha como esta em texto simples no script, usei MD5. Ou seja, no início do script, declarei que a senha correta é «2dac690b816a43e4fd9df5ee35e3790d«, E este é o MD5 de:«desdelinux«. ... Não entendo nada!! …
Vamos detalhar um pouco mais. Se eu escrever em um arquivo (por exemplo ~ / pass.txt) de texto: desdelinux
Se em um terminal escrevo: md5sum ~ / pass.txt
Ele vai voltar para mim: 2dac690b816a43e4fd9df5ee35e3790d sum
E ... como você pode ver, aquela primeira coluna que tem muitos números e letras em nenhuma ordem aparente, é idêntica à que coloquei acima, e é a que está no script declarado.
Bem, essa primeira coluna é o MD5 de desdelinux
Se colocarem o seguinte, retornará apenas a 1ª coluna, que é a que nos interessa: md5sum ~/pass.txt | awk '{print $1}'
4. Portanto, a operação do script nesta parte específica é:
4.1. O script irá colocar a senha que você escreveu em um arquivo temporário chamado temp.txt, e ele extrairá o MD5 do conteúdo desse arquivo usando o comando:
md5sum temp.txt | awk '{print $1}'
4.2. Se o MD5 da senha que você acabou de escrever NÃO for o mesmo que foi definido (ou seja, o que está escrito no script), ele será fechado e exibirá um erro:
4.3. Se a senha corresponder, perfeito... o script continua
5. Quando a senha corresponder, o script executará uma série de etapas, no meu caso:
5.1. Vai entrar na pasta / home / compartilhado / hospedado / - » cd / home / compartilhado / hospedado /
5.2. A pasta FlatPress se chama "me" e está compactada em .RAR protegida por uma senha (a senha é a mesma que deveria ser definida antes), então o script descompactará esse arquivo (me.rar) - » rar x me.rar -hp $ MWORD
raro x - »O que ele faz é descompactar arquivos e pastas mantendo a mesma ordem que estão.
eu.raro - »Este é o arquivo que desejo descompactar.
-hp $ MWORD - »Aqui te digo que você deve usar senha para descompactar o arquivo, e a senha é a variável $ MWORD (esta variável é a senha que inserimos antes)
5.3. Então, se ele foi descompactado corretamente, eu prossigo para excluir o arquivo me.rar ... por quê? Bem, porque não faz sentido que o .rar exista se eu estiver trabalhando com os arquivos que tenho dentro, e esses arquivos estão mudando porque estou escrevendo coisas novas no blog - » rm me.rar
5.4. Devo alterar as permissões para que tudo funcione bem - » chmod 777 -R me / (lembre-se que a pasta me / é o que continha o me.rar compactado)
5.5. Ele vai me mostrar uma janela que me diz que tenho 10 segundos para abrir "o" navegador…. WTF!, O que isso significa? ...
5.5 (a). Simples, muito simples… … abro o navegador (neste caso rekonq) e estou trabalhando em uma nova postagem, mas quando fecho o navegador, o script compacta a pasta me / novamente em .rar (permanecendo em me.rar).
Isso é possível porque o script verifica a cada 3 segundos se o Rekonq está aberto ou não, se detectar que está aberto, o script não faz nada, mas se detectar que NÃO está aberto, ele executa: rar a me.rar -hp $ MWORD me / * && rm -R me /
O que significa que irá compactar a pasta mim/ en eu.raro (e vai colocar uma senha, que seria a mesma que já vimos), e depois de compactá-lo e se não houver erros, ele excluirá a pasta mim/ com todo o seu conteúdo.
5.5 (b). Como isso nos ajuda? …simples, isso evita que tenhamos que lembrar de proteger nosso conteúdo novamente, pois basta parar de trabalhar nele (fechar o navegador) e o script fará todo o resto do trabalho
6. Pronto, tudo isso foi explicado de forma geral
… embora ainda haja outro detalhe
O script tem uma proteção ainda maior, a proteção que está desabilitada (comentada) são estas linhas:
if [ "$USER" != "$ME" ]; then
rm *.sh
kdialog --error "Sorry but u are not me. Auto-destroying..." --title "Im Me..."
exit
fi
O que isso faz é simples. A variável $ USER é uma variável global do sistema, se em um terminal colocar:
echo $USER
Você verá o que seu usuário mostra a você ... bem, a lógica dessas linhas é simples.
Se $ USER não corresponder à variável $ ME (e foi declarado por mim no script, e é: "gaara") o script excluirá TODOS os arquivos .sh que estão nessa pasta, ou seja, ele se autodestruirá
Isso evita que outra pessoa execute o script em outro computador hehehehe.
E bem, acho que não há muito mais a explicar, deixo o roteiro:
Eu sei que muitos acharão isso extremamente complexo, mas na verdade é mais assustador do que deveria ... o script tem uma lógica de trabalho muito simples, para um propósito simples.
Fiz isso para atender a uma necessidade muito específica minha, compartilho esperando que alguma outra linha ou ideia explicada aqui possa ser útil para alguém
A propósito, o script é destinado ao KDE, porque as caixas de diálogo (janelas) que ele exibe são do KDE (usando o KDialog), mas pode ser adaptado para o Gnome / Unity / Cinnamon / Mate usando Zenidade, ou use-o 100% no terminal simplesmente usando o comando de diálogo.
E sim, o script ainda tem algumas falhas, por exemplo se o script descompactar o .rar, e então alguém fechar (matar) o script à força, o conteúdo do .rar ficará desprotegido, há alguns detalhes que ainda precisam ser polidos …mas ei! Também temos que garantir que ninguém possa verificar nosso computador
Por fim, quero esclarecer que NÃO sou programador, longe disso, não me considero um, imagino que você possa otimizar linhas no código, ou utilizar alguma função para melhorar o funcionamento do script... mas como eu disse, não sou programador
Se você tiver alguma dúvida sobre isso, diga-me, embora o script possa não ser útil para você porque você não precisa dele, você sempre pode aprender outras dicas com ele
lembranças
PD: Sei que elav. ele vai dizer que sou muito paranóico ... ou que perco meu tempo, mas não é assim. Eu queria algo muito específico, um sistema de segurança muito específico, e eu mesmo o programei ... quão geek é isso? … RI MUITO!!
Isso é interessante, mas acho que a questão do sim / não é muito peido xD
E o que você acha, em vez de usar o rar que é proprietário e não oferece segurança verdadeira, troque-o pelo gpg, que é um software de segurança mais do que comprovado ao longo dos anos e que existe em praticamente todas as distros 😉
Outra coisa, você pode passar uma string ao md5sum, você não precisa criar um arquivo temporário. Aqui também recomendo que você vá para o sha que é muito mais seguro, experimente no terminal: shasum
SAludos!
Olá e obrigado pelo seu comentário 😀
GPG me permite empacotar um diretório com todo o seu conteúdo? Na verdade, só o usei para arquivos individuais, não para diretórios que contêm subdiretórios e arquivos.
ooo ... ótimo sobre shasum, eu não o conhecia 😀
Continuarei modificando o script para usar este e ... sim !! verdade, com simplesmente: echo "$ PASSWORD" | shasum Já recebi a string, na verdade não há necessidade de gravá-la em um arquivo :)
Muito obrigado pelo seu comentário, já aprendi algo novo 🙂
lembranças
é a mesma coisa que eu estava perguntando ...
O que você precisa é descobrir como criptografar um arquivo com GPG e passar a senha na mesma linha ... por exemplo:
gpg -e arquivo.tar.gz –password elpassword qualquer
Alguma ideia de como fazer isso? 🙂
Para criptografar um diretório c / gpg, você deve primeiro compactá-lo com tar.
então, para este caso, é conveniente usar criptografia simétrica, com o parâmetro -c (veja a wikipedia para a diferença entre criptografia simétrica e assimétrica).
isso seria algo como:
tar -czf destination.tgz source_directory / && echo $ passwd | gpg –batch –compress-level 0 -c –passphrase-fd 0
isso criará um arquivo compactado chamado "destination.tgz" e o arquivo criptografado chamado "destination.tgz.gpg". tanto o diretório de origem quanto a própria compactação devem ser removidos por segurança (observe o comando shred)
para descriptografar:
echo $ passwd | gpg –batch -d –passphrase-fd 0 encryption_file.tgz.gpg | tar -xz
que extraia os arquivos do diretório atual (então mv pode ser usado para movê-los para outro lugar)
Qualquer dúvida, responda a este comentário 🙂
saudações!
ehm, cuidado com os hifens duplos (-) e os hifens simples (-) ... existe uma maneira de escrever algo como se fosse um código para que o formato não mude?
prueba de codigo -- -
[código] código de teste - - [/ código]
Eu gasto mais prolixo
compactar e criptografar:
tar -czf destino.tgz directorio_fuente/ && echo $passwd | gpg –batch –compress-level 0 -c –passphrase-fd 0
Observe que aqui estão duas etapas: primeiro crie o arquivo compactado e, em seguida, se não houver erro, continue com a criptografia (encadeamento com &&)
descriptografar e descompactar:
echo $passwd | gpg –batch -d –passphrase-fd 0 archivo_cifrado.tgz.gpg | tar -xz
saudações!
Sim, na verdade ontem em casa eu li o gpg man e havia tudo que eu precisava 😀
Na verdade eu não fiz bem assim, não usei eco nem compressão, fiz um post sobre isso, acabei de postar.
Muito obrigado pela ajuda amigo, realmente agradeço.
Que maravilha! Eu estava procurando algo assim e me deparei com seu artigo. Vou testá-lo para proteger meus dados. Quando se trata de segurança de computador, você nunca pode ser muito paranóico. Obrigado
Obrigada haha.
Você entendeu como o script funciona, certo?
Parece muito mais complexo do que realmente é lol.
Obrigado pelo comentário, sério 😀
lembranças
PS: Na verdade, segurança nunca é suficiente hahaha.
Demorei um pouco para entender (li 3 vezes), já que uso o Linux há pouco tempo. Mas é muito simples e é sempre bom aprender coisas assim. Saudações e obrigado novamente.
O importante é entender hehe. Tentei explicar tudo extremamente detalhado, mas acho que estendi muito hahaha.
Graças a você 🙂
Nossa, roteiro muito bom 🙂
PS: Paranóia é mais de 9000! xD
hahahahahahaha esse sou eu… LOL !!
Olhando para o seu script, acho que pode ser feito com xdialog caso você não tenha o kde :)! Felicidades
Oh, eu não sabia sobre xdialog ... Vou ter que dar uma olhada para ver 😀
Obrigado pela dica.
em vez de rar, por que não usar tar.xz / gz e gpg?
é porque você já tem em rar onde você tem seu CMS
Excelente @ KZKG ^ Gaara dias atrás eu estava pensando em algo assim, mas estou fazendo exames, então não tive tempo para nada, e de repente vejo seu artigo….
Vou tentar na próxima semana 🙂
Obrigado, qualquer detalhe aqui estou 😀
xD Eu não entendi nada uu, mas se eu gostaria de como usar o kdialog corretamente nos scripts, como obter uma mensagem no notificador do KDE
Para obter mensagens nas notificações do KDE, tente instalar o pacote: libnotify-bin
Então, em um terminal você coloca:
notify-send "texto texto texto"
E você verá como é legal 😀… e isso funciona para KDE, Gnome, Unity, Cinnamon, Mate e Xfce 😉
No entanto, neste script, não uso notificações como tal, mas apenas janelas do KDialog. Em um tipo de terminal:
kdialog
E você verá a ajuda lá 😉
Saudações 😀
Muito obrigado o /
Olá, bom post, só uma sugestão, vale a pena que com o md5 não seja visto a olho nu, mas alguns curiosos podem usar uma rainbow table para ver se a senha convertida para md5 está lá dentro, recomendo usar bcrypt (http://bcrypt.sourceforge.net/), é apenas uma sugestão, você pode aproveitar para qualquer ocasião, Saudações.
obrigado
Na verdade sim, o MD5 não é perfeito e tem quem conseguisse obter senhas, vou dar uma olhada neste aplicativo 😉
Obrigado pelo seu comentário.
com o simétrico apenas no kdialog ele pede a senha
e com o assimétrico usando uma chave pública.
Devo esclarecer que não tenho nenhum vestígio de programador.
Sim, já consegui criptografar com GPG (na verdade acabei de colocar um post sobre isso) hehe.
KZKG ^ Gaara sempre lê sua postagem.
Crie um para usar com o XFCE.
Beijo. Caro
Olá e antes de mais nada seja bem vindo ao blog 😀
hahaha obrigado, sei que às vezes fica difícil porque escrevo coisas um tanto técnicas, mas procuro sempre explicar tudo da forma mais clara possível 🙂
Vou experimentar um pouco com o XDialog ou o Zenity para ver se funciona para o Xfce haha, farei os testes em um Xubuntu virtual 🙂
lembranças
Homem bastante útil, obrigado!
Saudações!
Obrigado, vai me ajudar muito a proteger alguns arquivos
Tive que adaptá-lo para o zenity porque não tenho o kde no momento: \
Deixo aqui o esqueleto que vou usar adaptado ao zenity
http://paste.desdelinux.net/4641
Obrigado novamente e saudações 😀
oooo ótimo, muito obrigado 😀 😀
Eu lembro que alguém pediu isso mas para o Xfce, com o Zenity funcionaria no Xfce certo?
Sim, só que sobrou o comando para adicionar os comandos a executar, após passar a senha do shasum ou md5
Teria que ser modificado para necessidades diferentes de cada pessoa, para proteger coisas diferentes em rotas diferentes com comandos diferentes
Ou talvez adicionando outra parte (GUI) para criar a configuração de segurança do nosso arquivo
Saudações 😀
Tive tempo e xfce (no Archlinux) e já adaptei totalmente o script como estava, para xfce usando zenity (eu acho), já que o que deixei acima era apenas o esqueleto que usei
http://paste.desdelinux.net/4644
Ele pode ser editado se tiver um bug da pasta?
O que acontece é que tenho vários shells gráficos e não sei se vai funcionar no clean xfce, por exemplo no xubuntu
Saudações 😀
Che interessante !!! Boa contribuição !!!!!!
Eu sou muito novo em programação, estou aprendendo BASH aos poucos ... mas algumas coisas me ocorreram e podem ou não ser úteis para você.
Quando você diz que o script despojado tem a senha incorporada e seria imperdoável alguém abri-lo e lê-lo dali ... você propõe todo esse truque de embutir o MD5 como medida de proteção.
O que é muito bom como um primeiro passo para tornar a vida difícil para o possível intruso, mas verifique as seguintes ideias (que podem até ser aplicadas uma em cima da outra)
IDÉIA 1) E se você salvar a senha em um arquivo em sua máquina e não hospedá-la no script?
EJ: em um txt coloque a chave e salve em / home / /bla/bla/key.txt
Em seu script você chama a chave como KEY = "$ (cat $ HOME / blah / bla / key.txt)", então você joga o if $ questionkey = $ KEY, então .. etc etc
Desta forma, você está conseguindo 3 coisas +1 vantagem:
1) Que a senha nunca estava no script. (Você evita o MD5)
2) O caminho onde a senha está, depende do nome de usuário. (Quem quiser abri-lo redireciona para qualquer lugar) Em 99.9% dos casos o script irá falhar.
3) Caso deseje mais segurança, remova todas as permissões do arquivo key.txt para todos os outros usuários, exceto o seu.
4) Vantagem: Portabilidade para alterar a senha sempre que quiser, sem editar o script. Porque a verificação é externa por meio de um arquivo.
IDEIA 2) Que tal você ofuscar todo o script bash, para que ele nem possa ser aberto?
Uma maneira de fazer isso é aproveitar o fato de que você precisa compilar em C.
Então, ele introduz o script dentro de um código C que tudo o que ele faz é chamar aquele Script (mas isso está dentro do programa). Na hora de compilar ... tudo é deixado dentro e sua saída é um executável ... e não mais um script. Tem uma pessoa que já fez um “script” que faz o processo de ofuscação, que é muito prático.
Mais informações aqui: http://es.wikibooks.org/wiki/El_Manual_de_BASH_Scripting_B%C3%A1sico_para_Principiantes/Compilar_%28ofuscar%29_BASH_scripts_con_C_-_SHC
IDÉIA 3) E se você colocar uma condição virtual no script em que é necessária uma senha de administrador?
Por exemplo, execute uma condição usando "sudo" e continue com o script, se não, pare.
Desta forma, toda a proteção seria uma ponte sobre sua senha ROOT.
Bem, nada mais ...
Felicidades!!!!!!!! e segure BASH.
HAHAHAHA Obrigado 😀
Na verdade, agora estou usando SHA512 porque é muito melhor que MD5: https://blog.desdelinux.net/como-saber-la-suma-md5-o-sha-de-una-palabra-oracion-o-archivo/
Bem como GPG como meio de proteção em vez de compactar com .RAR: https://blog.desdelinux.net/como-proteger-datos-con-gpg-de-forma-simple/
O problema de colocar a senha em um arquivo diferente, é que então colocaria a senha em outro lugar, sim, mas seria em texto simples? Se eu tiver que criptografá-lo (o que é recomendado), deixo no mesmo script, bom ... duvido muuuito que alguém possa quebrar o SHA512 hahahaha (veja o primeiro link e você entenderá)
Em relação às permissões, se alguém usa um LiveCD, pode abrir o .txt usando a raiz do LiveCD, portanto, as permissões não são inteiramente a melhor opção.
Sobre ofuscar o código do Bash ... sim, já tinha pensado nisso e a ideia é ÓTIMA, o problema é que não sei como fazer, na verdade nem sei se dá para fazer HAHAHA.
Oh espere ... agora eu li o resto do comentário O_O ... hehe, eu não sabia que você poderia fazer isso. Não tenho ideia de C ou C ++, mas valeria a pena tentar rs.
Sobre a ideia 3, nada mal 😀
Fiz várias melhorias no script desde que publiquei este post, 2 são as que mencionei nos links no início deste comentário, outra é que se você alterar qualquer caractere no script, ele será excluído. E agora eu tenho que tentar isso para ofuscar o código hahahaha.
Obrigado pelo seu comentário e ... sim, espere um pouco, bash !!! HAHA
WTF!
Já usei o SHC… GE-NI-AL !!!! O_O
Muito bom script, hey e se você usa um verificador de raiz, para poder executar o script como sudo ./script
Você só teria que adicionar este código no início
http://paste.desdelinux.net/4663
Uma saudação
KZKG ^ Gaara, meu amigo, acho que elaborar uma explicação não é o problema, isso é bom para quem não tem tanto conhecimento. Artigos que não ensinam foram publicados aqui mesmo, eles só dão informações sobre algo que existe. Portanto, não se desculpe e deixe haver mais explicações detalhadas.
Para coisas assim eu uso http://www.truecrypt.org/
Alguém poderia compartilhar o script? Estou curioso e todos os links estão fora do ar. 🙁
Obrigado.