SEGURANÇA - Rone-Gleison/SRE GitHub Wiki

HARDENING

HARDENING | FS

HIDEPID=2

proc  /proc proc rw,nosuid,nodev,noexec,relatime,hidepid=2 0 0
tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0

HARDENING | GRUB

Gerar o hash da senha:

grub-mkpasswd-pbkdf2

Criar arquivo /etc/grub.d/01_password com permissão 0755 e adicione o conteúdo, com:

#!/bin/sh
set -e
cat << EOF
set superusers=""root""
password_pbkdf2 root SUBSTITUIR_PELO_HASH_GERADO
EOF

Aplicar as alterações:

update-grub2

CRIPTOGRAFIA

CRIPTOGRAFAR ARQUIVOS

GERAR CHAVES

Chave Privada:

openssl genpkey -algorithm RSA -out private.pem

Chave publica:

openssl rsa -pubout -in private.pem -out public.pem

CRIPTOGRAFAR ARQUIVO

openssl pkeyutl -encrypt -pubin -inkey public.pem -in arquivo.txt -out encrypted.bin

DESCRIPTOGRAFAR ARQUIVO

openssl pkeyutl -decrypt -inkey private.pem -in encrypted.bin -out decrypted.txt

Caso o arquivo tenha sido enviado em codificado em base64. Ex:

Cs7Xwg7fZHDBNGySRJI9vBwvVqRNyC/LM6JWDIXvaWFZ2LkGASYD5CvKCxaROLMO0bQI7dDKFEQ4+bKxVEv9SHPNIQ4h1R8bQoVvTQkdyvQqxLsbf0HxbLDHECR1CqOyysHl2588ks0UOO9pDQtn4nC7INnkUa9KitNh5sSCk2IZ3nw+qh3v8MvVe7aHMXJqvLhst/R1/DUCCpKbF5xu4PSIskINKOmbvHE5kL+VYmPUzVlRCE1KWqqfzK42Yu8wHXZpMJxA5Q5h6VV6mKbmXyhPUhBiBSsVYU+r60yg8gFm8ejcUcI/GzjPoOmXbFJv50dGwglRIaZ7MzD2Nc9YNw==

crie o arquivo com o conteudo
converta o arquivo para binário. Após repita o passo anterior:

base64 -d hexadecimal.txt > encrypted.bin

CRIPTOGRAFAR SENHA

Execute o comando abaixo:

openssl passwd -6

Irá solicitar a senha. A saída será o hash da senha com 512 bits

CERTIFICADO SSL

A segurança por trás do certificado SSL é baseada na criptografia, tecnologia que codifica mensagens por meio de chaves eletrônicas. São utilizadas uma chave pública e uma chave privada para codificar e decodificar o significado dos dados.

CRIAR CERTIFICADO

Para gerar o certificado SSL autoassinado é necessario seguir alguns passos:

1 - Gerar Key, chave privada:

openssl genpkey -algorithm RSA -out cert_private.key

2 - Requisição do certificado SSL, necessário para gerar o SSL emistido e assinado por uma CA ou autossinado.
Gerar a requisição:

openssl req -new -key cert_private.key -out cert_req.csr

Visualizar informações do arquivo CSR, tais como: chave publica, titular e outros detalhes.

openssl req -in cert_req.csr -text -noout

3 - Gerar o certificado autoassinado (chave publica) para 1 ano (365 dias):

openssl x509 -req -days 365 -in cert_req.csr -signkey cert_private.key -out cert_SSL.crt

CRIAR CSR COM BASE EM CRT

openssl x509 -x509toreq -in psfapp.crt -out psfapp.csr -signkey psfapp.key

CONVERTER CRT EM PFX

openssl pkcs12 -export -out certificado.pfx -inkey chave.key -in certificado.crt -certfile ca.crt

CONVERTER PFX EM PEM

openssl pkcs12 -in certificado.pfx -nokeys -out certificado.pem

CERTIFICADO MTLS

CRIAR CERTIFICADO MTLS

O Acesso via mTLS precisa basicamente de 3 itens:

Utilizado para o acesso:

  1. Certificado SSL do client (Public key)
  2. Private Key do certificado do cliente

Confiuração:
3. Plublic Key da CA (Autoridade certificadora: CertiSign, godaddy, entre outras)
3.1 Geralmente Presente no certificado SSL, porem pode vim em um arquivo separado. Necessário separar as cadeias da CA e anexar em um arquivo crt.

CONFIGURAR MTLS NGINX

    #ssl_certificate /etc/ssl/certs/ssl.com.br.crt; # certificado SSL do servidor
    #ssl_certificate_key /etc/ssl/certs/ssl.com.br.key; # chave do certificado SSL
    #ssl_session_cache shared:SSL:10m;
    #ssl_session_timeout 10m;
    #ssl_buffer_size 64k;
    ssl_client_certificate /etc/ssl/certs/CA.crt; # certificado publico da certificadora
    ssl_verify_client on; #Habilita o mTLS
    #ssl_protocols TLSv1.2 TLSv1.3;
    #ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-  SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

SSL ICP-BRASIL v10 SOLUTI (mTLS)

Para emissão do certificado SSL pela Soluti é necessário criar CSR e assinar o termo digital. O conteúdo do CSR e o valor em Base64 serão utilizados em seus respectivos campos no momento de gerar o certificado.

GERAR PRIVATE KEY

openssl genrsa -aes256 -out mtls_private.key 4096

GERAR REQUISIÇÃO(CSR) COM BASE EM CRT ATUAL

Importante utilizar o certificado anterior como base, assim trará as infomações preenchidas.

openssl x509 -x509toreq -in mtls_atual.crt -out cert_mtsl.csr -signkey mtls_private.key

ASSINAR O TERMO DIGITAL

Após salvar o hash do termo digital, faça a conversão de hexa para binário:

xxd -r -p digitalterm_hash.hex digitalterm_hash.bin

FAÇA A ASSINATURA DIGITAL

openssl rsautl -sign -in digitalterm_hash.bin -inkey mtls_private.key -out signature.bin

CONVETER PARA BASE64

base64 -w 64 -i signature.bin

VALIDAR A ASSINATURA DIGITAL

Primeiro exporte a chave pública a partir da chave privada:

openssl rsa -in mtls_private.key -pubout -out cert1.pub

Enter pass phrase for cert1.key: <senha de proteção da chave privada> writing RSA key

E depois execute a verificação:

openssl pkeyutl -verify -in digitalterm_hash.bin -pubin -inkey cert1.pub -sigfile signature.bin