criptografia de arquivos em massa não funciona com openssl

0

Eu tenho vários arquivos de log que estou tentando criptografar com chave pública / privada usando o openssl e salvo no meu NAS, mas está falhando.

Meus arquivos de log estão no seguinte caminho:

/var/SYSLOGS/hosts/archive

Minha chave pública e chave privada estão em /etc/log-enc/

[root@NAG01 log-enc]# ls -l
total 8
-rw-r--r-- 1 root root 891 Jul 11 15:58 syslog_privalye_key.pem
-rw-r--r-- 1 root root 272 Jul 11 15:59 syslog_public_key.pem

Agora estou tentando executar o seguinte comando Se eu estou executando o mesmo comando um por um, então não há problema.

for file in 'find /var/SYSLOGS/hosts/archive/'
do  
FILE_BASE=$(basename $file)
echo "$file=>/NFS/Nag01/syslogs/hosts/$FILE_BASE.enc"
openssl rsautl -encrypt -inkey  /etc/log-enc/syslog_public_key.pem -pubin -in $file -out /NFS/Nag01/syslogs/hosts/$FILE_BASE.enc
done

Aqui estão os registros de erros

RSA operation error
140628568049480:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:rsa_pk1.c:151:
/var/SYSLOGS/hosts/archive/192.168.33.5.log-20160131.gz=>/NFS/Nag01/syslogs/hosts/192.168.33.5.log-20160131.gz.enc
RSA operation error
140123978278728:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:rsa_pk1.c:151:
/var/SYSLOGS/hosts/archive/app02.log-20160306.gz=>/NFS/Nag01/syslogs/hosts/app02.log-20160306.gz.enc
/var/SYSLOGS/hosts/archive/192.168.34.8.log-20160227.gz=>/NFS/Nag01/syslogs/hosts/192.168.34.8.log-20160227.gz.enc
RSA operation error
139777258493768:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:rsa_pk1.c:151:
/var/SYSLOGS/hosts/archive/192.168.31.3.log-20160511.gz=>/NFS/Nag01/syslogs/hosts/192.168.31.3.log-20160511.gz.enc

Aqui estão os arquivos brutos.

[root@NAG01 log-enc]# ls -l /var/SYSLOGS/hosts/archive/192.168.33.5.log-20160131.gz
-rw-------. 1 root root 3569 Jan 31 04:16 /var/SYSLOGS/hosts/archive/192.168.33.5.log-20160131.gz
[root@NAG01 log-enc]# ls -l /var/SYSLOGS/hosts/archive/192.168.34.8.log-20160227.gz
-rw-------. 1 root root 2142 Feb 27 03:11 /var/SYSLOGS/hosts/archive/192.168.34.8.log-20160227.gz
    
por Suyash Jain 11.07.2016 / 12:55

2 respostas

0

Isso funcionou para mim.

Primeiro crie as chaves

openssl req -x509 -nodes -newkey rsa:2048 -keyout private-key.pem -out public-key.pem

então o mesmo loop

for file in 'find /var/SYSLOGS/hosts/archive/'
do 
FILE_BASE=$(basename $file)
echo "$file=>/NFS/Nag01/syslogs/hosts/$FILE_BASE.enc"
openssl smime -encrypt -binary -aes-256-cbc -in  $file -out /NFS/Nag01/syslogs/hosts/$FILE_BASE.enc -outform DER public-key.pem

done
    
por 11.07.2016 / 13:45
0

Não use openssl para criptografar arquivos. Não é projetado para isso. ( openssl não é realmente projetado para nada.) Você está apenas se atrapalhando no escuro. Na jaula do tigre.

O GnuPG é projetado precisamente para criptografar arquivos. Instale-o da sua distribuição. Use gpg --gen-key para gerar uma nova chave. As chaves são armazenadas em ~/.gnupg . Use gpg --export para exportar uma chave pública de uma conta, gpg --export-secret-keys para exportar uma chave secreta e gpg --import para importá-la em outra conta.

Para criptografar um arquivo, use gpg -e /path/to/file . Para descriptografar, use gpg /path/to/file.gpg .

Não analise a saída de find , use find … -exec … . E sempre use aspas duplas em torno de substituições de variáveis e comandos. Talvez seus arquivos não possuam caracteres especiais agora, mas usar aspas duplas não pode causar nenhum dano e salvá-lo de uma violação de segurança um dia.

Seu script também é quebrado de outras maneiras, como tentar criptografar diretórios, causando erros espúrios. A partir da aparência do seu script, parece que você não espera encontrar subdiretórios em /var/SYSLOGS/hosts/archive/ . Nesse caso, você não precisa de find .

cd /var/SYSLOGS/hosts/archive/ &&
for x in *; do
  gpg -e -o "/NFS/Nag01/syslogs/hosts/$x.gpg" "$x"
done

Se houver subdiretórios:

cd /var/SYSLOGS/hosts/archive/ &&
find . -type f -exec sh -c '
  mkdir -p "${0%/*}" &&
  gpg -e -o "/NFS/Nag01/syslogs/hosts/$0.gpg" "$0"
'
    
por 12.07.2016 / 02:17