#!/usr/bin/env bash
# ===================================================================================================
# Module de securite (privileges EUID & sanitization)
# ===================================================================================================
# Verification des privileges d'execution (EUID == 0 ou acces autorise)
check_privileges(){
# Si l'utilisateur possede un EUID==0 il s'agit d'un root et c'est ce que nous voulons. Dans le cas contraire on renvoie un code d'erreur
if [[ "${EUID}" -ne 0 ]] ; then
echo "[!] ERREUR DE SECURITE: Privileges insuffisants. Execution requise en tant que root.">&2
fi
return 0
}
# Assainissement du chemin du repertoire cible afin de se premunir des injections et des traversees
sanitize_directory(){
# Recuperation du parametre indiquant le repertoire des logs a traiter
local target_dir="${1}"
# Verification si le parametre est vide, si oui, retourner une erreur
if [[ -z "${target_dir}" ]] ; then
echo "[!] ERREUR DE SECURITE: Aucun repertoire specifie." >&2
return 2
fi
# Detection de traversee potentielle de repertoire (les .. en commande Unix permettent de remonter dans l'arborescence)
# L'operateur =~ sert a effectuer une operation avec une expression reguliere
if [[ "${target_dir}" =~ \.\. ]] ; then
echo "[!] ERREUR DE SECURITE: Tentative de traversee de repertoire non autorisee." >&2
return 2
fi
# Detection des caracteres dangereux (tous les caracteres speciaux permettant de faire executer des commandes Unix), auquel cas, on renvoie une erreur
if [[ "${target_dir}" =~ [\|\;\&|$\'\>\<\(\)] ]] ; then
echo "[!] ERREUR DE SECURITE: Metacaractere d'injection de commande detecte." >&2
return 2
fi
# Verification de l'existence effective d'un repertoire, dans le cas contraire, retourner une erreur
if [[ ! -d "${target_dir}" ]] ; then
echo "[!] ERREUR DE SECURITE: Le repertoire specifie '${target_dir}' n'existe pas. " >&2
return 2
fi
return 0
}