Linux

2FA avec oathtool - Authentification à deux facteurs

Mes exemples et mon utilisation est faite sous GNU/Linux.

De plus en plus de sites/applications imposent l'utilisation de l'authentification à deux facteurs. Ce qui est bien pour la sécurité.

Mais attention de ne pas déléguer votre sécurité à des services obscure.

Installation

Documentation de OATH Toolkit.

Utilisation

La commande : oathtool

Les options :

Paramètres :

Exemple :

oathtool -b --totp LA_CLE_TRANSMISE_PAR_LE_TIERS

Stockage des clé tiers

Je garde les clés des tiers dans mon gestionnaire de mot de passe habituel : pass.

J'y ajoute les clés dans un dossier « 2fa ».

Ajout de la clé tiers dans pass :

pass edit "2fa/NOM_DU_TIERS"

La commande ouvre un éditeur de fichier, il suffit d'enregistrer la clé du tiers dedans et fermer.

Générer le code d'authentification :

pass show "2fa/NOM_DU_TIERS" | xargs -d '\n' oathtool -b --totp

Bépo - redéfinir les touches clavier (keybinding)

Modifier les touches des différents logiciels.

Commandes utiles

Tar

Création d'une archive : tar -czf chemin/du/tar/filchier.tar.gz dossier/a/tarrer Décompresset une archeve : tar -xzf chemin/du/tar/filchier.tar.gz

Détails des options

SCP

Envoyer un dossier : scp -rp chemin/local utilisateur@le.serveur.distant:chemin/distant Evoyer un fichier : scp -p chemin/local/fichier.txt utilisateur@le.serveur.distant:chemin/distant/fichier.txt

Détails des options

xmllint

Indenter un fichier xml : xmllint data.xml --format > destination.xml

Chroot : changement de dossier racine

La comande "chroot" permet de changer le répertoire racine vers un nouvel emplacement.

Tout ce passe en root.

Créer le répertoire où monter le système : mkdir /mnt

Monter la partition : mount /mnt

Préparation du dosser spécial "dev" : mount -o bind /mnt/dev

Préparation du dosser spécial "proc" : mount -t proc /proc /mnt/proc

Préparation du dosser spécial "sys" (pas obligatoire mais ça peut servir) : mount -t sysfs /sys /mnt/sys

Bash prompt

Voici mon bash color.

Il colore le prompt et affiche la branche en verte. Si le git est détaché du "HEAD", il affiche l'élément en bleu.

Téléchargez le ou prenez ce qui vous plait ci dessous :

#########################################
## [Colorize bash prompt with git branch #](linux/100_bash_prompt.md)
## [          By Marc EYMARD             #](linux/100_bash_prompt.md)
## [ Follow me on twitter: @MarcEymard   #](linux/100_bash_prompt.md)
#########################################

      BLACK="\[\033[0;30m\]"
        RED="\[\033[0;31m\]"
   RED_BACK="\[\033[41m\]"
     YELLOW="\[\033[0;33m\]"
      GREEN="\[\033[0;32m\]"
       BLUE="\[\033[0;34m\]"
  BLUE_BACK="\[\033[44m\]"
  LIGHT_RED="\[\033[1;31m\]"
LIGHT_GREEN="\[\033[1;32m\]"
      WHITE="\[\033[1;37m\]"
 WHITE_BACK="\[\033[47m\]"
 LIGHT_GRAY="\[\033[0;37m\]"
 COLOR_NONE="\[\e[0m\]"

function parse_git_branch {

  git rev-parse --git-dir &> /dev/null
  git_status="$(git status 2> /dev/null)"
  branch_pattern="^On branch ([^${IFS}]*)"
  tag_pattern="^HEAD detached at ([^${IFS}]*)"
  remote_pattern="Your branch is (.*) of"
  diverge_pattern="Your branch and (.*) have diverged"
  if [[ ! ${git_status}} =~ "working directory clean" ]]; then
    state="${LIGHT_RED}⚡"
  fi
  # add an else if or two here if you want to get more specific
  if [[ ${git_status} =~ ${remote_pattern} ]]; then
    if [[ ${BASH_REMATCH[1]} == "ahead" ]]; then
      remote="${YELLOW}↑"
    else
      remote="${YELLOW}↓"
    fi
  fi
  if [[ ${git_status} =~ ${diverge_pattern} ]]; then
    remote="${YELLOW}↕"
  fi
  if [[ ${git_status} =~ ${branch_pattern} ]]; then
    branch=${BASH_REMATCH[1]}
    echo " (${branch})${remote}${state}"
  elif [[ ${git_status} =~ ${tag_pattern} ]]; then
    branch=${BASH_REMATCH[1]}
    echo " ${BLUE}(${branch})${remote}${state}"
  fi
}

function prompt_func() {
    previous_return_value=$?;
    if [ "$TERM" != "linux" -a -z "$EMACS" ]
    then
        TITLEBAR="\[\e]2;\u@\h:\w\a\]"
    else
        TITLEBAR=""
    fi
    prompt="${TITLEBAR}${BLUE}[${COLOR_NONE}${BLUE}\u${WHITE}@${RED}\h ${YELLOW}\w${GREEN}$(parse_git_branch)${BLUE}]${COLOR_NONE}"

    if test $previous_return_value -eq 0
    then
        PS1="${prompt}${GREEN}\\\$${COLOR_NONE} "
    else
        PS1="${prompt}${LIGHT_RED}\\\$${COLOR_NONE} "
    fi
}

PROMPT_COMMAND=prompt_func