Guest User

Untitled

a guest
Jan 23rd, 2018
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.24 KB | None | 0 0
  1. *Le projet :*
  2. -------------
  3.  
  4. Ce tp est la continuation du tp1, il a pour but d'installer avec une machine virtuelle (Virtual Box) de type Amd64 un serveur Linux avec la distribution stable GNU / Linux Debian 9 « Stretch », que nous allons configurer tout au long de l'installation. Par la suite l'installation et la configuration de ssh vont être nécessaire afin de pouvoir connecter un root distant à la machine.
  5.  
  6. *Connection SSH Root :*
  7. -----------------------
  8.  
  9. Pour cela, nous nous connectons à notre machine une fois celle-ci opérationnelle. Nous installons ssh grâce aux commandes suivantes :
  10. ```apt-get search ssh``` permet de chercher les paquets, ```apt-get install ssh``` permettant l'installation des paquets.
  11.  
  12. Il faut par la suite procéder à la configuration ssh disponible avec le chemin d'accès suivant :
  13. ```cd etc/ssh``` puis ```vim sshd_config``` (vim doit être installé grâce à la commande suivante ```apt-get install vim```
  14.  
  15. Puis modifier la ligne ```PermitRootLogin prohibit-password``` en ```PermitRootLogin yes```, il faut également ne pas oublier de décommenter la ligne afin que celle-ci soit prise en compte.
  16.  
  17. Après avoir changé la configuration ssh, nous passons à la connexion.
  18.  
  19. Plusieurs options s'offrent à nous :
  20.  
  21. * **forced-commands-only** qui n’autorise la connexion root qu'avec l'utilisation de clés dont l’option **command** est définie.
  22.  
  23. * **no** pour que le root ne puisse pas se connecter à la machine.
  24.  
  25. * **without-password** pour une connexion à la machine sans mot de passe.
  26.  
  27.  
  28. *Authentification et génération de clefs :*
  29. -------------------------------------------
  30.  
  31. Afin de générer une clé RSA j'utilise la commande suivante : ```ssh-keygen -t rsa```
  32.  
  33. *J'ai par la suite obtenu la clé suivante :* ```tMBlykX539uuGYgd6gJJlvWtQWAGVSwwSPnbRprdtbc``` que je peux retrouver dans le dossier ```/.ssh```.
  34.  
  35. Une **passphrase** est une petite phrase comprenant plusieurs mots dîte "sécurisé à vie" et facile à retenir. Cependant
  36.  
  37. *Authentification par clef / Connection serveur :*
  38. --------------------------------------------------
  39.  
  40. Par la suite, je sauvegarde la clé publique sur mon fichier authorized-keys présent dans le dossier **.ssh** grâce à la commande : ```cat id_rsa.pub | ssh root@134.157.46.182 "cat > ~/.ssh/authorized_keys"```
  41.  
  42. Afin de donner les droits de Lecture/Ecriture/Execution j'utilise la commande ```chmod 700 authorized_keys```, je peux après cela, remarquer que l'utilisateur possède les droits rwx.
  43.  
  44. *Authentification par clef : sous Windows :*
  45. --------------------------------------------
  46.  
  47. On modifie tout d'abord la valeur de **PermitRootLogin** a ```without-password``` puis on se connecte avec la commande ```ssh -i .ssh/id_rsa root@134.157.46.182```.
  48.  
  49. *Exercice : Securisez :*
  50. ------------------------
  51.  
  52. Afin de sécuriser l'accès à la machine contre plusieurs tentatives infructueuses, j'utilise **fail2ban**. Après un certain nombre de tentatives, l'adresse ip de la personne ayant obtenu un grand nombre d'échec est bannie.
  53.  
  54. Les attaques de type **brute-force ssh** consistent à essayer toutes sortes de combinaisons de clé possibles, ce qui est nuisible pour le serveur.
  55.  
  56. Nous pouvons également sécuriser l'accès à la machine avec les méthodes suivantes :
  57.  
  58. * Modifier la valeur de la ligne ```MaxAuthTries``` du fichier **sshd-config** afin de limiter les tentatives de connexion sur un nombre précis. (Même système que fail2ban).
  59.  
  60. * L'utilisation d'un pare feu SSH.
  61.  
  62.  
  63. *Etude des processus UNIX :*
  64. ----------------------------
  65.  
  66. * L'information **TIME** montre le temps processeur qui a été nécessaire à l'exécution de ce processus.
  67.  
  68. * Le processus ayant le plus utilisé le le processeur sur la machine est : ```-bash```.
  69.  
  70. * Le processus ayant été le premier lancé après le démarrage du système est : ```/bin/login```.
  71.  
  72. * La machine a été démarrer à 14:09 avec la commande ```ps u ou ps -ef```.
  73.  
  74. * Le nombre approximatif de processus créés depuis le démarrage **boot** est de 115 avec la commande ```ps aux```.
  75.  
  76.  
  77. La commande ```ps -o ppid= -p [num_PID]``` permet d'afficher le PPID d'un processus.
  78.  
  79. Il apparaît avec la commande ps la liste des processus qui sont :
  80.  
  81. * /bin/login
  82. * -bash
  83. * ps all
  84.  
  85. Avec la commande ```pstree``` que l'on installe avec ```apt-get install psmisc``` on obtient la liste ordonnée de tous les processus ancêtres de la commande ps en cours d'exécution :
  86. ```
  87. systemd─┬─cron
  88. ├─dbus-daemon
  89. ├─dhclient
  90. ├─fail2ban-server---2[fail2ban-server]
  91. ├─login──bash──pstree
  92. ├─rsyslogd├─in:imklog
  93. ├─in:imuxsock
  94. ├─rs:main Q:Reg
  95. ├─sshd
  96. ├─systemd────(sd-pam)
  97. ├─systemd─journal
  98. ├─systemd─logind
  99. ├─systemd─timesyn────[sd-resolve]
  100. ├─systemd─udevd
  101. ```
  102.  
  103. La commande ```top``` permet d'afficher les processus en fonction de la mémoire.
  104.  
  105. Le plus gros processus sur ma machine correspond à **sshd**
  106.  
  107. Il existe plusieurs commandes interactives permettant de :
  108.  
  109. * Passer en couleur avec ```z```.
  110.  
  111. * Mettre en avant la colonne de trie avec ```x```.
  112.  
  113. * Changer la colonne de trie avec ```<``` et ```>```.
  114.  
  115. Afin d'utiliser htop il faut tout d'abord l'installer avec la commande : ```apt-get install htop```
  116.  
  117. Par la suite, on peut remarquer que **htop** possède une interface en couleur et une structure plus simple, ce qui permet une meilleure visibilité et une compréhension plus simple.
  118.  
  119. *Arrêt d'un processus :*
  120. ----------------------
  121.  
  122. Un script shell permet d'automatiser une série d'opérations
  123.  
  124. Je crée un fichier **date.sh** avec la commande ```touch date.sh``` puis je l'édite avec ```vim date.sh```
  125.  
  126. J'accorde les permissions utilisateur sur le fichier avec la commande ```chmod 700 ./date.sh```
  127.  
  128. Par la suite, j'exécute le fichier en faisant ```./date.sh``` puis ```CTRL+Z```
  129.  
  130. Cela m'affiche :
  131.  
  132. ```
  133. date16:42:22
  134. date16:42:23
  135. date16:42:24
  136. date16:42:25
  137. date16:42:26
  138. ^Z
  139. [1] + Stoppé
  140. ```
  141.  
  142. Concernant le fichier **date-toto.sh**, il affiche la date mais 5 heures auparavant, on a donc :
  143.  
  144. ```
  145. date11:53:08
  146. date11:53:09
  147. date11:53:10
  148. date11:53:11
  149. ^Z
  150. [2] + Stoppé
  151. ```
  152. Avec la commande ```kill [ %kill_id ]``` et ```fg [ %job_id ]``` permet d'exécuter un script arrêter.
  153.  
  154. La commande ```CTRL -C``` permet de mettre fin à un script.
  155.  
  156. ```
  157. [1] Stoppé ./date.sh
  158. [2]-Stoppé ./date-toto.sh
  159. ```
  160.  
  161. La commande ```ps``` affiche les différentes exécutions des fichiers qui ont eu lieu.
  162.  
  163. **Explications des scripts**
  164.  
  165. Le script **date.sh**
  166.  
  167. * La première ligne **#!/bin/sh** indique au shell quel interpréteur doit être utilisé pour exécuter le script.
  168.  
  169. * **La boucle while** true permet d'exécuter indéfiniment le script.
  170.  
  171. * **do sleep 1** permet d'attendre le laps de temps passer en paramètre (ici 1)
  172.  
  173. * **echo -n 'date; date +%T** affiche la date actuelle, et uniquement l'heure.
  174.  
  175. Le script **date-toto.sh**
  176.  
  177. * Il s'agit du même script que pour **date.sh**, seulement ici, la date afficher est la date actuelle avec -5 heures produit par le bout de script suivant : ```date --date '5 hour ago'```
  178.  
  179.  
  180. *Les tubes :*
  181. ------------
  182.  
  183. **cat** permet d'afficher le contenu d'un fichier tandis que **tee** permet de lire sur l'entrée standard et écrire sur la sortie standard.
  184.  
  185. ```ls | cat``` affiche les fichiers sous forme de liste.
  186.  
  187. ```ls -l | cat > liste``` déplace le contenu de la liste dans le fichier liste.
  188.  
  189. ```ls -l | tee liste``` écrit la sortie dans le fichier liste.
  190.  
  191. ```ls -l | tee liste | wc -l``` affiche le nombre de lignes générées par la commande ```ls -l```.
  192.  
  193.  
  194. *Journal système rsylog :*
  195. --------------------------
  196.  
  197. Oui, le service rsyslog est activé sur le système, on peut le voir avec la commande ```rsyslogd```.
  198.  
  199. Le PID du démon est ici de 390 présent dans le fichier ```rsyslogd.pid```.
  200.  
  201. Les messages issus des services standars sont écrit dans le fichier **syslog** présent dans **/var/log**.
  202.  
  203. **Le service CRON :**
  204.  
  205. Ce service permet de planifier des tâches qui seront exécutées à une heure précise.
  206.  
  207. La commande ```tail -f``` permet d'afficher les 10 dernières lignes d'un fichier.
  208.  
  209. Le fichier **/etc/logrotate.conf** permet de limiter la taille des fichiers.
  210.  
  211. Avec la commande ```dmesg``` j'obtient :
  212.  
  213. ```IPv6: ADDRCONF (NETDEV_CHANGE): enp0s3```
Add Comment
Please, Sign In to add comment