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
- ❓ Saiba Mais O que é certificado SSL?](https://www.cloudflare.com/pt-br/learning/ssl/what-is-an-ssl-certificate/)
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
- [❓ Saiba Mais O que é MTLS?](https://www.cloudflare.com/pt-br/learning/access-management/what-is-mutual-tls/)
O Acesso via mTLS precisa basicamente de 3 itens:
Utilizado para o acesso:
- Certificado SSL do client (Public key)
- 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