Preparare l'avvio per il primo utente

In base ai rischi di sicurezza descritti precedentemente, è necessario fare in modo che al primo accesso di un utente vengano svolte alcune attività come:

  • Re-installare openssh se è possibile accedere all'applicativo in questo modo.

  • Richiedere una nuova password utente.

  • Richiedere una nuova password di root per MySQL.

  • Rigenerare il certificato SSL se è possibile accedere all'applicativo via SSL.

Per fare tutto questo è necessario aggiungere quanto segue al file /etc/bash.bashrc:

if [ ! -e /etc/opt/sample-app/initial_config_done ]; then
  /opt/sample-app/bin/initial_config
  sudo touch /etc/opt/sample-app/initial_config_done
fi

Con queste righe, lo script /opt/sample-app/bin/initial_config viene eseguito al primo accesso se il file /etc/opt/sample-app/initial_config_done non esiste. È quindi necessario:

  • Creare la directory /etc/opt/sample-app/: sudo mkdir /etc/opt/sample-app/.

  • Creare lo script /opt/sample-app/bin/initial_config utilizzando sudo e un editor di testo e copiando quanto segue:

#!/bin/bash
# Let's change the user's password
echo "Grazie per aver scelto la nostra applicazione sample-app"
echo "Per ragioni di sicurezza, è necessario modificare la propria password."
passwd

# Now change the mysql password
echo "È anche necessario indicare un nuova password di root per MySQL"
let done=0
while [ $done -eq 0 ]; do
  read -e -s -r -p "Nuova password di root mysql:" PASS1
  echo ""
  read -e -s -r -p "Digitare nuovamente la password di root mysql:" PASS2
  if [[ "$PASS1" == "$PASS2" ]]; then
    let done=1
    #perform the actual change assuming that our initial password is default
    mysqladmin -u root --password='default' password $PASS1
  else
    echo "La due password non coincidono. Riprovare."
  fi
done

#Perform the reinstall of openssh so that the key is regenerated
echo "Generazione delle chiavi SSH..."
sudo apt-get --purge -y remove openssh-server
sudo apt-get install -y openssh-server

# You can add here any first user login actions that you require
  • Renderlo eseguibile: sudo chmod a+x /opt/sample-app/bin/initial_config