Notes brutes pad formation Linux

De Movilab.org

Le 26, 27 et 28 mai 2015

Organisateur : http://www.openfactory42.org/ Hote : http://www.comptoir-numerique.fr/

Page MoviLab liée : http://movilab.org/index.php?title=Je_passe_%C3%A0_Linux

Licence et droits d'auteur : http://movilab.org/index.php?title=Accueil/Licences_et_conditions_d%27utilisation


Formateur : Stéphane PERNET Durée : 3 jours

Objectifs : - mettre l'accent sur l'auto-hébergement et la protection des données* - développer l'autonomie de l'auditeur - optimiser la mise en place d'un système d'exploitation libre, que ce soit pour une simple station de travail ou la gestion d'un serveur.

article principales lignes de commande : http://www.linux.com/learn/tutorials/842251-must-know-linux-commands-for-new-users


Avant propos

Pourquoi participez vous à cette formation ?

   - Aurélien : consolider mes connaissances, mieux comprendre ce qui sous tend l'informatique
   - Adrien :régler mon environnement informatique, gérer des bases de données, programme simple sur bash
   - Sylvain : avoir des bases en OS libre ; Objectif d'application en Rasberry pour la boîte noire des tiers-lieux. Pouvoir garder le contrôle sur mes données, savoir être en sécurité sur les réseaux et anonyme, être indépendant des licences non libre ...
   - Yoann : accroitre mes compétences techniques lors de la mise en oeuvre et donc de la vente de Tiers Lieux éphémères (http://movilab.org/index.php?title=Tiers_Lieux_%C3%A9ph%C3%A9m%C3%A8re) 
   - Corentin : consolider les bases pour devenir autonome sur une machine et sur des projets raspberry
   - Anthony : parceque je vous emmerde (toi tu mérite d'être sous BSD - viens avec nous....viens...viens)


JOUR 1 : les distributions

Partie 1: Les bases et la découverte du système


- Historique (quelques dates clés : des années 60 aux années 90)


Un logiciel doit faire une chose mais bien = philosophie des systèmes Unix et Linux

Outils indispensables :

   - ssh => connexion à une machine de façon sécurisé (chiffrement des communications)
   - Outils de diagnostic de réseaux 
   
   - Outils de Chiffrement : 
       
   - GPG (chiffrement email)
         - Tor (chiffrement web)
         - TrueCrypt (chiffrement disques dur, clés usb,...)


DATES CLES :

   Années 60 : Les Hippies
   
   1969 Unix (ATT Bell Labs) Ken Thompson et Denis Ritchie (inventeur langage C, langage de programmation de la plupart des systèmes d'exploitation modernes.
   
   Histoire des différents Unix et des personnages importantes de cette époque => http://www.levenez.com/unix/


PC : différents niveaux de langages de programmation

1 microprocesseur = 1 assembleur dédié

   un programme peut être compiler pour différentes architectures (amd, i386, arm, ...)


       langage C++ --> programmation orienté objet


       prgm infoQ : Python ; Java ; Ruby ; ...


   1981 : MS-DOS (dirty operatin system)
   
   1984 : ProjetGNU (Free Software Foundation)  GnU is not UNIX
   hurd => système d'exploitation (http://fr.wikipedia.org/wiki/GNU_Hurd)
   
   

film-documentaire : Histoire de l'informatique https://www.youtube.com/watch?v=EvBff7Stw38&list=PLF459C297098B6CE1

   1991 : Linux => Linus Torvald ( http://fr.wikipedia.org/wiki/Linux)
   
   Documentaire sur Linux => Nom de code Linux (https://www.youtube.com/watch?v=wa4Lz3c-BCY)
   
   Projet GNU : juste des programmes de bases : copie de fichier (cp), compilateur (gcc), ...   GNU : couche d'outils 
   
   Linux coeur système exploitation => le kernel (clone d'UNIX)
   
   Definition système d'exploit : outil logiciel qui se place entre le matériel et les programmes, on peut faire la comparaison avec un chef d'orchestre
   OS libre : accès au code source : https://github.com/torvalds/linux
   du plus proche de la machine
   Linux OS orienté réseau => millier de programmeurs ont collaborés de par le monde
   Linux clône d'Unix, les programmes ont été complètement ré-écrits
   
       Ressources : http://www.onirik.net/Symbiose-emission-du-2-novembre   (http://www.partage-fichiers.com/upload/shkyyedi/symbiose-20.ogg)


   Les Licences 
   => plus de 100 : les droits qu'on donne. != des licences propriétaire qui impose des contraintes 
   logiciel libre donne des droits : modif, distrib, copier, obtenir les sources
   2 obligs : Mention de la propriété intellectuelle
   Copie de la GPL 
   
   licence basé et s'appuie sur le droit
   deux types de droit : techno, intel (brevets)   
   
   => GNU/GPL 
    Liste des licences
    MAC et Windows on utilisés du code sous licence BSD pour intégrer des partie de codes dans leurs systèmes => droit d'intégrer du codelibre  dans un programme propriétaire 
    
    Pour avoir une petite idée du nombre de licences => https://tldrlegal.com/
    
    Distrowatch : le site pour avoir un aperçu de toutes les distributions GNU/Linux : http://distrowatch.com/
    
    
    
    Distrubution :  Mais quésaco ? 

Recette pour faire une distribution :

   - Un logiciel d'installation
   - Gestionnaire de logiciels : rappatriement d'un logiciel depuis un dépot 
   - Des programmes préisntallés. 
   
   Des distrib peuvent être gérées soit par des assos (ex: Debian) soir par des entreprises (ex : RedHat). La diff : accès paynat pour avoir droit à un support technique. 
   

Choisir une distribution

Nous nous concentrons sur Debain et Ubuntu pour des raisons du "nombre" d'utilisateurs de cette distribution

Plusieurs possibilités pour une installation :


   - remplacer le système existants, en faisant un backup avant !
   - possibilié de créer un double boot : Windows & GNU/Linux.
   - Avoir un PC dédié.
   - Installer une machine virtuelle à l'aide du logiciel de virtualisation:  VirtualBox.


Télécharger Virtualbox https://www.virtualbox.org/wiki/Downloads , installer le plateform package et le VM VirtualBox Extension Pack (attention au choix 64 /32)


L'installation peut se faire par par clé usb, cdrom, réseau...

Travail pratique

Faire une installation : mode normal ou expert

Note:

   Installation LVM => gérer ses partitions plus finement, pouvoir augmenter ou reduire la taille des partitions de façon dynamique,
   notion avancé pour l'installation d'un système, mais devient indispensable si l'on veut installer et administrer un serveur.


VitrualBox : installation d'une distrib Debian en machine virtuel

dans les options :

réseau => Accès par pont : permet à la machine virtuel d'être intégré dans le réseau local


Ligne de commande utile

   connaitre sa version de Ubuntu : cat /etc/issue.net 
   connaître son processeur : uname -a



VirtualBox

   Créer un pC virtuel : rame, disque dur, mémoire


VDI, dynamiquement alloué > 8 Go de disque virtuel est suffisant pour des tests

Réglage des paramètre de virtualbox = partie device

Aller chercher l'iso sur le site http://www.debian.org/

   Réglages de paramètres => Dossier partagées entre les machines (virtuels ou non)



   Configurer un réseau : 
       DHCP par la box (automatique)
       sinon config manuel


       Différence Sudo/ Root/ Users 
       configurer l'horloge 
   Partitionnement : historiquement utilisé dans MSWindows pour séparer le système DOS des données utilisateurs.
   séparer le Root :             / (équivalent au C:\\)
   le SWAP (ram virtuel)     SWAP                  }  version bourrin


   le démarage(GRUB,kernel)   /boot 
   le SWAP :                                    SWAP                  }  version propre 
   le Root :                                        /         
   les variables:                               /var
   le home :                                      /home   
   les temporaire                             /tmp 
   les utilisateurs:                            /usr
   les configs :                                 /etc
   les données en ligne                /srv


Hiérarchie des systèmes de fichiers : http://fr.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

ATTENTION: L'ordre de partition est important car on met constamment "début". 1. /boot => primaire 2. / =>primaire 3. swap => primaire 4 partition étendue

   5. /tmp
   6. /var
   7. /usr
   8. /etc
   9. /srv
   10. /home


   LVM / LVM chiffré (Logic volume manager): partition à taille dynamique (variable)


   Important : il faut penser finement dès le départ la partition ! (plus que sur windows = pas même logique)


   Partition primaire = jusqu a 4
   Partition étendue (ou logique) = plus de 16
   choix début / fin : mettre début tout le temps pour que les partitions se suivent.


   cfg outil de gestion de paquets : "non" car nous faisons une install sur le réseau


   ATTENTION : pour les Mac Apple il faut valider les claviers Mac dans le choix des langues.


   PROGRAMMES DE BASES 
   (après installation mode-expert)


   ceci va dépendre si votre instalation est pour une station de travaille ou un serveur


   xorg (server graphique)
   openbox (environement de bureau hyper léger ("en kit" ) + obconf + obmenu
   links (navigateur Web dans terminal)
   iceweasel (navigateur web graphique = Firefox)
   build-essential (outils de compilation pour installation, utils si les logiciels souhaités ne sont pas dans les dépots officiels) 
   tree (affichage de l'arboresence un peu plus graphique)


   COMMANDE


   http://doc.ubuntu-fr.org/console
   http://juliend.github.io/linux-cheatsheet/


   Terminer un processus dans le terminal : Ctrl + C
   Nettoyer un terminal : clear
   Passer admin : sudo (besoin d'etre dans le group sudo ou avoir un véritable compte admin sur la machine)
   Passer en admin sur un logociel graphique: gksudo
   Mise à jour des dépots : sudo apt-get update 
   Naviguer de dossier en dossier : cd  / 
   Ou nous sommes dans le système : pwd
   Lister ce qu'il y a dans le répertoire : ls
   Lire ce qu'il y a dans un fichier : cat
   -> chemin absolu : ex : cd /home/utilisateur/Documents   depuis n'importe où
   ->chemin relatif :    ex : cd Documents   si je suis dans /home/utilisateur/ (relatif d'où je me trouve)

apt-cache search => chercher un logiciel apt-cache depends "nom du logiciel" => liste les dépendances logiciels apt-get install => installation d'un logiciel apt-get => outil pour gérer les softs | less => paginer un résultat de commandes startx => lancer le serveur graphique setxkbmap fr => mettre le clavier en français (azerty) sudo dpkg -i "nom du paquet" (.deb) => installation d'un paquet df -h => voir les infos du disque reboot => redémarrer l'application man apropos

eg : outil permatant d'avoir des exemples de lignes de shell pour certains outils :

    sudo apt-get install python-pip && sudo pip install eg
    eg ls
    eg tar => exemple de lignes de cmd

A la fin du 1er jour je connais :


   les fondement de la culture GNU/Linux
   les bases de l'architecture d'une distribution GNU/Linux
   le fonctionnement général d'une distribution GNU/Linux
   accéder au terminal et les commandes de base


A la fin du 1er jour je sais :


   installer VirtualBox sur mes machines (MacBook Pro et PC Dell sous Ubuntu)
   configurer la pré-installation d'une distribution GNU/Linux dans VirtualBox
   trouver et télécharger des images iso de distributions GNU/Linux (utilisation d'un client torrent)
   installer une distribution dans VirtualBox à partir d'une image iso
   accéder et utiliser un terminal
   me repérer et me déplacer dans l'arborescence du système en ligne de commande (sans souris)
   lire le contenu de fichier en ligne de commande
   chercher et installer des logiciels en ligne de commande 
   mettre à jour mon système et ses dépots


FeedBack et questions du 1er jour

J'ai vraiment un pb sur mon pc et mon install "en dur" (un Ubuntu).... il repère du 64 bit par la ligne de commande uname -a hors quand j'installe par exemple Kali sur VirtualBox ça bug en disant que je ne suis pas sur le bon CPU... je télécharge le 32bit... mais la pareil, pas le bon CPU... #WTF ! Sans compter le bug graphique... bref, demain ça serait bien de réinstaller "en dur" une distribution stable et les bon pilotes. @YOANN

J'ai un pbm de détection de réseau sur VB Desbian sous W7pro. Il faut tout réinstaller ? @Sylvain

JOUR 2 : le réseau

   Savoir communiquer par T'chat


Utilisation du terminal

exemple de commande pour aller lire le contenu d'un dossier dans le shell
   nom de la commande : ls
   option : -a 
   arguments (facultatif) : /etc/nom


Installation des manuels

accès aux pages en ligne : http://manpagesfr.free.fr/consulter.html

Rechercher : sudo apt-cache search manpages

Installer : sudo apt-get install manpages-fr manpages-fr-dev manpages-fr-extra

Lancer le manuel du manuel : man man

apropos "nom de la recherche" > exemple apropos wireless Ensuite taper : man "nom du manuel voulu"

&& permet d'enchainer des comandes, exemple : cd / && ls = affiche les fichier à la racine


La hierarchie des fichiers

http://fr.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

RAPPEL : sous GNU/Linux... tout est fichier ! (mêmes les périphériques...)

Editer un fichier avec la commande nano "nom du fichier à éditer"

Installer l'extension eg : http://korben.info/ne-manquez-plus-dexemples-sous-linux.html

cd / => rentrer en racine du systeme commande directory eg --list => possibilités de la commande eg opt => dossier non touché quand on compil les programm proc => donne tous les infos dans le systeme et permet en virtuel de cfg le noyau

sudo -s permet de passer en compte root (mais à faire attention car actions irrévocables) pour en sortir taper exit

sudo which [COMMANDE] afficher où se trouve l'executable d'une commande dans le système


Synthèse matinée  : bien (re)lire à quoi correspond les fichiers de l'arborescence GNU/Linux ici http://fr.wikipedia.org/wiki/Filesystem_Hierarchy_Standard


Le Réseau

document de travaille sur le réseau = http://movilab.org/index.php?title=Reseaux

Diagnotisque système

- cat /etc/issue.net => distribution système d'exploitation utilisé
- uname -a => système d'exploitation
- lspci => caractéristique hardware
- df -h => voir partition du disque
- dpkg -l => liste paquet installés


ls => pour voir e qu'il y a ds les fichiers ls -l =>affiche les autorisations CS => pour CD.. => retour en arrire mkdir => créer un dossier touch nom_fichier.txt => créer un fichier cp => copier

- cd = retour home
- cd / = déplacement dans l'arborescence
- cd .. = retour dossier présedent (chemin relatif)
- pwd = situation dans l'arborescence
- ls = afficher les fichiers
- apt-cache search = 
- apt-cache depends = afficher les dépendences
- apt-get update = mise à jour sources
- apt-get upgrade = mise à jour des logiciels
- apt-get install = installer un programme
- cat / = ouvrir un fichiers
- sudo = administrateur
- gksudo = administrateur sous système graphique
- CD /nomdossier | grep mot (ex http) => permet de filtrer la recher avec le mot
- ls = lister un repertoire, ex: ls /home/nom_user/nom_dossier

~ = alias qui remplace le dossier racine avec mon nom d'utilisateur -> /home/monnomduilisateur - du -sh = permet de connaitre l'espace de stockage utilisé dans /home - df -h = permet la taille d'un répertoire donné ls -l = donne les règles de partage des dossiers ls -a cat /etc/group = CHOWN =Modifier le propriétaire et le groupe d'un fichier CHMOD =change les permissions

- sudo ifconfig => donne la configuration du réseau

        - - -   |   - - -   |   - - -
        User | Group | Others

ex : rwx | r-x | r-- username username_group mon_super_fichier.txt

dans cette exemple, le fichier est accessible en lecture, ecriture et execution pour l'utilisateur 'username'

    le fichier est accessible en lecture et execution pour l'utilisateur 'username'
    le fichier est accessible en lecture pour les autres


Lecture de la gestion des droits

- = fichier D=dossier

R =read W =write x= execute g = group g+ =donner permission g- =enlever permission

[COMMANDE] espace [OPTION] espace [ARGUMENT]lsl

top => permet de voir ce qui prend de la ressource echo $VARIABLE =afficher une variable > ex : echo $SHELL

alias = raccourcis de commande alias la commande raccourci = la fonction pour ouvrir/créer/modifier les alias aller dans .bashrc


image iso et support amovible

   download iso
   par le terminal aller dans le dossier => Téléchargements
   sudo dd if=kali-linux-1.1.0a-amd64.iso of=/dev/sdb && sync


Serveurs

sudo ifconfig = visualiser les interfaces réseau et outil permettant de configurer une interface réseau

Notion de réseau

ip : doit etre unique dans un reseau, un pc peut avoir plusieurs ip par contre adresse ip privé ( pas routable sur internetif)

traceroute => outil pour visualiser le chemin parcouru par un paquet vers une cible, ex; traceroute google.fr


Pour sortir proprement de SSHFS

fusermount -u /home/nomuser/nomfichier (que je veux démonter)


ls / : lire les dossier à la racnie du bash

time devant une fonction permet d'afficher le temps que l'opération à prise



=Travaux perso fin de journée 2==

@Yoann

   installation de Ubuntu en dur > plus sur VirtualBox
   pb (visiblement) lors du transfert de l'image iso de Kali sur une clé usb ,= bug à l'installation === à refaire
   depuis réinstallation Ubuntu plus de bug d'affichage de la carte graphique (pour l'instant en tout cas)
   réglé seul le pb de reconnaissance de la carte wifi => récupéré la bonne carte avec la commande iwconfig puis lspci | grep -i net pour connaitre le nom exact de la carte wifi et chipset qu'elle utilise (soyons précis) => page d'aide : http://doc.ubuntu-fr.org/wifi_liste_carte
   installation de divers logiciels par le terminal comme tomboy, terminator, xchat, etc... pas de problème particulier (apt-cache search nomdulogiciel et/ou (directement) apt-get install nomdulogiciel)



A la fin de la 2ème journée je connais :


   les principales ligne de commande pour :
   me déplacer
   me repérer
   lister un dossier
   lire un fichier
   éditer un fichier
   créer un dossier
   le déplacer
   créer un fichier
   le déplacer
   les supprimer
   l'arborescence "universel" d'une distribution (/etc /var /tmp /usr ...)
   la différence entre Windows, Apple et... GNU/Linux !
   comment est conceptualisé un réseau internet sur la base d'un réseau de téléphone (métaphore)
   comment communique des machines connectée entre elles par un réseau internet (IP)


A la fin de la 2ème journée je sais :


   mettre en pratique (à minima) mes connaissances acquises
   mettre ma "nouvelle" logique en situation de cas pratique
   identifier une envie/besoin/choix et la mettre en oeuvre sur la base des connaissances acquises


FeedBack et questions de la 2ème journée

Comment fait-on la sauce de la Poutine ? qui a le secret.com ?


Un très bon lien pour installer des services sur un serveur, pour différents ditributions : http://www.server-world.info/en/


JOUR 3 : la sécurité

Bis : notions de bases sur les réseaux http://movilab.org/index.php?title=Reseaux

les protocoles


adresse IP => 198.168.0.1 masques et sous réseaux : 255.255.255.0

outil pour calculer des plages d'adresse ip : http://www.gestioip.net/cgi-bin/subnet_calculator.cgi


3 protocoles "couches basses" du réseau

TCP => avec "accuse de reception" => lent mais stable , pour les réseau longue distance UDP =>sans "accuse de reception" => rapide mais instable, pour les réseau proche (local) ICMP =>protocole de diagnostique, utilisé par exemple par ping

- sudo ifconfig => donne la configuration du réseau


Exemple d'usage avec le port :80

- CD /nomdossier | grep mot (ex http) => permet de filtrer la recher avec le mot

cd /etc => cat services | grep http

http 80/tcp www # WorldWideWeb HTTP http 80/udp # HyperText Transfer Protocol https 443/tcp # http protocol over TLS/SSL https 443/udp http-alt 8080/tcp webcache # WWW caching service http-alt 8080/udp


Les bons geste de la semaine... du mois...

   mise à jour des repo (source) : sudo apt-get update 
   mise à jour des paquets (déjà installé): sudo apt-get upgrade
   mise à jour du système (peu remplacer les programes): sudo apt-get dist-upgrade
   autres... :


SSH

OpenSSH ,http://www.openssh.com/

installer openssh-server [ sudo apt-get install openssh-server ]

par défaut utilise le port :22

très important de le sécuriser = changer le port, et securiser le serveur pour une utilisation par clé

installer [ sudo apt-get install gpm ]

pour se connecter sur le serveur [ ssh user@192.168.0.xxx ] avec la commande who nous voyons qui est connecté sur le serveur passwd =changer le mot de passe


Configurer le .hosts

[ sudo nano /etc/hosts ] = faire des alias sur le réseau pour éviter de reconnaitre des adress ip => "adressip alias" https://lite6.framapad.org/p/LinuxCamp tar =décompresser un fichier wget =télécharger un fichier sur le serveur

[ sudo nano /etc/ssh/ssh_config ] =aller dans les paramétrages du SSH


Configurer le .bashrc

/home/user/.bashrc

Pourquoi ? Ajouter ou modifier votre fichier de configuration personnel > meme chose et endroit que pour la création des alias

Créer une variable dans le .bashrc => nano .bashrc Pour appliquer l'enregistrement de la variable : source .bashrc

exemple : export PS1="\033[32m\u - \h - \w => \033[00m"

= permet de changer la couleur d'écriture dans le terminal (ici vert) et inscrit l'utilisateur / le host / l'endroit ou vous vous trouvez dans l'arborescence



Changer le port ssh de la machine (de 1 à 65000)

pourquoi = limite les attaques bot sur le port de base (:22)

éditer le fichier : sudo nano /etc/ssh/sshd_config

vérifier la modification : cat /etc/ssh/sshd_config | grep Port

relancer le service : sudo service ssh restart (nb=> un server = un service = des fichiers de conf)

  opération 1 : installer SSHFS [ sudo apt-get install sshfs ] =

[ sudo apt-get install fuse ] =format et options pour les Fuse file systems

crontab =permet de programmer l'heure de lancement d'une commande 'time' à ajouter à la fin d'une ligne de cde pour connaitre la durée d'une exécution (install, ...)


fermer une session pour relancer et valider les paramètres serveur


Pour installer un chat à la volée sur une machine (pc / serveur)

installer netcat => sudo apt-get install netcat

le serveur => netcat -l -p + numéro d'un port

le client => netcat adresse IP serveur + numéro port

attention, ce n'est pas un outil sécurisé, l'équivalent version chiffré est cryptcat

$ sudo apt-get install cryptcat



BlackJoke

a ne jamais faire => sudo rm -Rf /* Ecrase votre disque dur... et donc le système...


Liens (en vrac)/

   http://forum.ubuntu-fr.org/  
   https://www.debian.org/doc/manuals/debian-reference/
   http://manpagesfr.free.fr/consulter.htmlcd .....;;CD
   http://formation-debian.via.ecp.fr/
   http://www.linux-france.org 
   http://irp.nain-t.net/doku.php
   http://irp.nain-t.net/doku.php 
   http://guide.andesi.org/html/index.html


Commandes :

    http://fr.wikibooks.org/wiki/Le_syst%C3%A8me_d%27exploitation_GNU-Linux/Commandes_de_base


   http://wiki.linux-france.org/wiki/Les_commandes_fondamentales_de_Linux


    http://juliend.github.io/linux-cheatsheet/


    http://cli.handylinux.org/
    
=Travaux pratiques fin de journée 3==

Yoann

Installation Ubuntu serveur

A - sur une tour fixe

   Installer Ubuntu serveur sur la tour 
   télécharger la dernière version de Ubuntu Serveur
   créer l'iso sur une clé usb
   booter sur la clé
   installer Ubuntu Serveur
   Installer et configurer SSH
   Prendre la main depuis le pc portable
   Configurations
   Configurations incontournables
   Configurations importantes
   Configuration conseillées
   Installer des services simples
   PAD
   PirateBox
   Doom
   Installer des services complexes
   PHP / MySQL
   Wordpress
   MediaWiki



puis idem sur...


B - sur un Raspberry pi 2


___________________________

BONUS GAME TP reseaux : https://www.youtube.com/user/Hak5Darren/playlists