Notes brutes pad formation Linux
- Formation "Je passe à Linux"
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[modifier | modifier le wikicode]
- 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[modifier | modifier le wikicode]
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[modifier | modifier le wikicode]
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==[modifier | modifier le wikicode]
@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[modifier | modifier le wikicode]
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==[modifier | modifier le wikicode]
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