diff --git a/0eval.yml b/0eval.yml deleted file mode 100644 index d5585f8..0000000 --- a/0eval.yml +++ /dev/null @@ -1,39 +0,0 @@ ---- -- hosts: b1 - user: root - gather_facts: false - vars_prompt: - - name: script - prompt: "script? " - private: false - - name: result_file - prompt: "result file ? " - private: false - - pre_tasks: - - name: insert header - lineinfile: - path: "{{ result_file }}" - line: "machine\tuser\tquestions.." - state: present - create: true - delegate_to: localhost - - tasks: - - name: copy script - copy: - src: "{{ script }}" - dest: /root - mode: 0700 - - - name: exec script - command: "/root/{{ script }}" - register: result - - post_tasks: - - name: get result - lineinfile: - path: "{{ result_file }}" - line: "{{ result.stdout }}" - create: true - delegate_to: localhost diff --git a/Correction.md b/Correction.md deleted file mode 100644 index 59768d7..0000000 --- a/Correction.md +++ /dev/null @@ -1,19 +0,0 @@ -## Sur votre windows dans un terminal -ssh-keygen -scp -P #machine .ssh\.id_rsa.pub epsi@cours.opendoor.fr: - -## Sur le container connecté en tant qu'utilisateur epsi - -mkdir -pm 0700 ~/.ssh -cat id_rsa.pub >> .ssh/authorized_keys -chmod 600 .ssh/authorized_keys - -sudo vim /etc/ssh/sshd_config - -... -PermitRootLogin without-password -... -AllowUsers root@100.0.0.1 epsi -PasswordAuthentication no - -sudo systemctl restart sshd diff --git a/README.txt b/README.txt deleted file mode 100644 index 6e9f55c..0000000 --- a/README.txt +++ /dev/null @@ -1 +0,0 @@ -better run eval playbook with -f 1 to avoid result overwriting \ No newline at end of file diff --git a/eval.sh b/eval.sh deleted file mode 100644 index 2645218..0000000 --- a/eval.sh +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/bash -# this script is meant to be run by ansible - -source functions.sh -# check that alias has been tried -addHeader -fileMustContain ~epsi/.ssh/authorized_keys 'ssh-rsa' -fileMustContain ~epsi/.ssh/authorized_keys 'tom@workine' -fileMustContain /etc/ssh/sshd_config ' Allow(Groups|Users)' -fileMustContain /etc/ssh/sshd_config "^PermitRootLogin no" -fileMustContain /etc/ssh/sshd_config "^PasswordAuthentication no" - diff --git a/eval.yml b/eval.yml deleted file mode 100644 index 9974bca..0000000 --- a/eval.yml +++ /dev/null @@ -1,36 +0,0 @@ ---- -- hosts: - - b2 - gather_facts: false - vars: - result_file: "tp_ssh.csv" - - pre_tasks: - - name: insert header - lineinfile: - path: "{{ result_file }}" - line: "machine\tuser\tauth keys etu\tauth key tom\tallow groups/user\tpermit root login\tpassword auth" - state: present - create: true - delegate_to: localhost - - tasks: - - name: copy script - copy: - src: "{{ item }}" - dest: /root - mode: 0700 - loop: - - functions.sh - - eval.sh - - - name: exec script - command: /root/eval.sh - register: result - - - name: get result - lineinfile: - path: "{{ result_file }}" - line: "{{ result.stdout }}" - create: true - delegate_to: localhost \ No newline at end of file diff --git a/functions.sh b/functions.sh deleted file mode 100644 index 151735f..0000000 --- a/functions.sh +++ /dev/null @@ -1,163 +0,0 @@ -#! /bin/bash - -#ok if given program returns given code -# arg1: program to run -# arg2: expected return code (default 0) -function exitCodeOk { - program=$1 - code=${2:=0} - $program &> /dev/null - if [ $? -eq $code ] ; then echo -ne "1\t" ; else echo -ne "0\t" ; fi -} - -#Ok if file size > X -# arg1: file -# arg2: min size -function fileBiggerThan { - if [ ! -f $1 ] ; then echo -ne "0\t" ; return 0 ; fi - filesize=$(stat --format "%s" $1) - if [ $filesize -lt $2 ] ; then echo -ne "0\t" ; else echo -ne "1\t" ; fi -} - -#Ok if file exists -# arg1: file to check -function fileMustExist { -if [ -f ${1} ] ; then echo -ne "1\t" - else echo -ne "0\t" -fi -} - -#Ok if file DOESNOT exists -# arg1: file to check -function fileMustNOTExist { -if [ -f ${1} ] ; then echo -ne "0\t" - else echo -ne "1\t" -fi -} - -#Ok if dir exists -# arg1: dir to check -function dirMustExist { -if [ -d ${1} ] ; then echo -ne "1\t" - else echo -ne "0\t" -fi -} -# Ok if given dir DOESNOT exists -# arg1: dir -function dirMustNOTExist { -if [ -d ${1} ] ; then echo -ne "0\t" - else echo -ne "1\t" -fi -} - -# Ok if file contains at least one occurence of pattern -# arg1: file -# arg2: pattern -function fileMustContain { - file=$1 - shift - string=$@ - if [ ! -f $file ] ; then echo -ne "0\t" ; return 0 ;fi - if ( grep -i -qE "${string}" $file ) ; - then echo -ne "1\t" - else - echo -ne "0\t" - fi -} - -# Return num of occurences of pattern -# arg1: file -# arg2: pattern -function fileCountPattern { - file=$1 - shift - string=$@ - if [ ! -f $file ] ; then echo -ne "0\t" ; return 0 ;fi - num=$(grep -ciE "${string}" $file ) - echo -ne "$num\t" -} - -# Ok if file contains N pattern -# arg1: file -# arg2: num of expected item -# arg3: pattern -function fileMustContainNItem { - file=$1 - n=$2 - shift - string=$@ - if [ ! -f $file ] ; then echo -ne "0\t" ; return 0 ;fi - num=$(grep -ciE "${string}" $file ) - if [ $num -eq $1 ] ; - then echo -ne "1\t" - else - echo -ne "0\t" - fi -} - -# Ok if file DOESNOT contain pattern -# Arg1: file -# ArgN: pattern -function fileMustNOTContain { - file=$1 - shift - string=$@ - if [ ! -f $file ] ; then echo -ne "0\t" ; return 0 ; fi - if ( grep -i -qE "${string}" $file ) ; - then echo -ne "0\t" - else - echo -ne "1\t" - fi -} - -# insert hostname at beginning of result line -function addHeader { - test -f /etc/motd && user="$(cat /etc/motd | sed 's/\n//')\t" - echo -ne "${user}$(hostname -s)\t" -} - -# Ok if given package is installed -# arg1: pkg to check -function pkgInstalled { - pkglist=/tmp/pkg.list - test -f $pkglist || rpm -qa > $pkglist - if ( grep -qi $1 $pkglist ) ; then echo -ne "1\t" ; else echo -ne "0\t" ; fi -} - -# ok if given process is running -# arg1: process to check -function processIsRunning { - if ( pgrep -f $1 &> /dev/null ) ; then echo -ne "1\t" ; else echo -ne "0\t" ; fi -} - -#Ok if given command returns 0 -# arg1: command to be run -function commandIsWorking { - command=$1 - if ( $command &> /dev/null ) ; then echo -ne "1\t" ; else echo -ne "0\t" ; fi -} - -# ok if given pattern is detected on command's stdout or stderr -# arg1: command -# arg2: pattern -function commandStdoutPattern { - command=$1 - shift - pattern=$@ - if ( $command 2>&1 | grep -qiE "${pattern}" ) ; then echo -ne "1\t" ; else echo -ne "0\t" ; fi -} - -# ok if given service is enabled -# arg1: service -function serviceIsEnabled { - service=$1 - if ( systemctl is-enabled $1 &> /dev/null ) ; then echo -ne "1\t" ; else echo -ne "0\t" ; fi -} - -# ok if given service is active -# arg1: service -function serviceIsActive { - service=$1 - if ( systemctl is-active $1 &> /dev/null ) ; then echo -ne "1\t" ; else echo -ne "0\t" ; fi -} - diff --git a/tp_ssh.md b/tp_ssh.md deleted file mode 100644 index 36b4277..0000000 --- a/tp_ssh.md +++ /dev/null @@ -1,46 +0,0 @@ -# TP SSH - -## Objectif - -Renforcer la sécurité des accès - -## Prérequis: - -Le compte epsi doit avoir été créé (tp prise en main) et disposer d'un mot de passe - - -## Authentification par clé - -On va faire en sorte que la connexion ssh en tant qu'utilisateur epsi -se fasse par clé publique et non pas par mot de passe. - -_sur votre machine_: utiliser la commande ssh-keygen (ou le programme puttygen) si votre windows n'est pas équipé d'un client ssh natif pour générer une paire de clé publique / clé privée. - -_sur le container_: il faut rajouter la clé publique (le contenu du fichier id_rsa.pub se trouvant sur *votre* machine) dans le fichier *~epsi/.ssh/authorized_keys* - -Il sera peut-être nécessaire de créer le répertoire ~epsi/.ssh - -Attention au permissions: ce répertoire doit appartenir à epsi et avoir les permissions 700 le fichier authorized_keys doit appartenir à epsi et avoir les permissions 600 - -### Validation: - -Garder votre connexion ssh active. - -Ouvrez une nouvelle connexion ssh: on doit vous demander la passphrase protégeant votre clé privée, si vous en avez définie une. - -Si on vous demande un mot de passe de connexion vous avez raté une étape. - - -## Renforcer la sécurité de ssh - -Une fois que l'authentification par clé fonctionne, modifiez la configuration du serveur ssh ( fichier /etc/ssh/sshd_config, page de man sshd_config) pour: - - * Directive PermitRootLogin: n'autoriser que les connexions en root sans mot de passe. - * Directives AllowUser: n'autoriser que l'utilisateur epsi depuis n'importe quelle machine, ainsi que l'utilisateur root depuis l'adresse 100.0.0.1 - * Directives PasswordAuthentication: interdir l'authentification par mot de passe - -### Validation: - -Vous devez toujours pouvoir vous connecter en tant qu'utilisateur epsi - -La connexion en root doit être refusée \ No newline at end of file