ctrl + r : recherche dans l'historique des commandes.
!! : répète la dernière commande.
Exemple :
sudo !!
Les éditeurs (en ligne de commande)
vim : Éditeur de texte.
nano : Éditeur de texte.
Vous connaissez Nano… Mais Vim ?
i : mode insertion.
esc : sort du mode insertion.
:w : enregistre.
:q : quitte.
:wq : enregistre et quitte.
Certains l'adoreront, d'autres le détesteront.
C'est un choix personnel, comme l'OS. Mais en ligne de commande, c'est un outil puissant (et très rapide)
Avant de commencer
Qu'est-ce qu'un serveur ?
Un serveur est un ordinateur qui fournit des services à d'autres ordinateurs.
Web
Base de données
Fichiers
Concrètement…
C'est un ordinateur qui tourne 24h/24 et 7j/7.
Dans une salle spéciale, souvent climatisée.
OVH
Google
On parle souvent de Cloud
Le cloud, c'est « juste » l'ordinateur d'un autre.
Et si vous pensiez plus petit ?
Les raspberry pi sont des ordinateurs à 35€. Ils peuvent être utilisés comme serveur.
Créer un serveur à domicile permet réellement de progresser.
Gérer le serveur
Gérer l'installation
Gérer la configuration
Gérer la sécurité
Un bon moyen de se familiariser avec la notion de serveur.
Essayer d'être curieux, en code oui, mais aussi sur les serveurs.
Un instant…
Comment se représenter un serveur ?
Le système d'exploitation est la couche la plus basse.
C'est la couche qui permet de faire fonctionner le serveur. Dans notre cas Linux.
Les Ports : Ce sont des numéros qui permettent d'identifier un service.
Les ports vont permettre de rendre accessible le service depuis l'extérieur (de 1 à 65535).
Les utilisateurs : Une machine == au moins un utilisateur le root.
Pour respecter les bonnes pratiques, il est préférable de créer un utilisateur dédié à chaque service. Nous utiliserons l'approche du moindre privilège pour réstreindre les accès, et utiliser sudo pour les accès administratifs.
Les services : Ce sont définition des applications qui vont tourner en arrière-plan.
Par exemple, un serveur Web, un serveur de base de données, etc.
Les applications : Ce sont les binaires qui vont être exécutés.
Par exemple, Apache, MySQL, etc.
Les Logs : Ce sont des fichiers (habituellement dans le dossier /var/log) qui vont contenir les messages générés par les applications (erreurs, informations, etc.).
Les données : Ce sont des fichiers exemple le code source de vos applications, ou encore les données de la base de données.
Rendre un service moins visible
Changer le port d'écoute.
N'écouter que sur une adresse IP.
Utiliser un pare-feu.
Ne répondre que sur un domaine spécifique.
Utiliser un VPN.
Masquer les informations de version.
Penser sécurité dès le début.
Ne pas exposer un service si ce n'est pas nécessaire.
Ne pas exposer un service sur Internet si ce n'est pas nécessaire.
Configurer un pare-feu ou au minimum un accès SSH sécurisé (clé SSH, pas de mot de passe, pas de compte root, etc.).
Rappel SSHD
permitrootlogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers vbrosseau
Port 22 (ou autre)
PermitEmptyPasswords no
Serveur Web
Serveurs de fichiers.
Serveurs de code (PHP, Python, Node.js, etc.).
Des logiciels
Apache
Nginx
Autres (Lighttpd, Caddy, etc.)
Un point en commun
Les virtualhosts
Virtualhosts
Les ports ? Les noms de domaine ?
Les ports permettent de rendre accessible le service depuis l'extérieur.
Les noms de domaine permettent de rendre accessible le service depuis l'intérieur.
Deux solutions pour découper notre serveur :
Un port par site.
Un nom de domaine par site.
Les ports
80 : HTTP
443 : HTTPS
8080 : HTTP
8443 : HTTPS
…
En réalité, votre serveur possède 65 535 ports.
Les ports 80, 443, 8080, 8443 sont les ports par défaut du web… Mais vous pouvez en définir d'autres.