GERBELOTBARILLON.COM

Parce qu'il faut toujours un commencement...

Ubuntu version Serveur

Gestion du réseau

Lister les adresses ip affectées aux cartes réseau $ ip addr Afficher la table de routage $ ip route show Affecter une adresse IP statique -------------------------------- S'assurer que l'adresse IP n'est pas gérée par cloudinit $ sudo cat /etc/cloud/Cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg Cela devrait afficher le texte network: [config: disabled] Sauveagrder la configuration actuelle du réseau par $ sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.copy Editer ensuite le fichier par nano. Le contenu devrait ressembler à ceci network: version: 2 ethernets: addresses: - 192.168.x.y/24 gateway4: 192.168.1.1 nameservers: addresses: 8.8.8.8 search: [] Une fois la configuration sauvegardée, il faut l'appliquer par la commande $ sudo netplan apply

Gestion des paquets ------------------- Installer un package $ sudo apt install La commande apt recherche des informations de repository dans /etc/apt/sources.list Mettre à jour le système $ sudo apt update && sudo apt upgrade Rechercher un package $ sudo apt search net-tools Installation du package net-tools $ sudo apt install net-tools Récupérer des informations sur un paquet installé $ sudo apt show net-tools Supprimer un package ne supprime pas forcément les configurations faites à postériori de cette installation $ sudo apt remove net-tools Pour supprimer les configurations, il faut purger $ sudo apt purge net-tools Ou bien faire les deux commandes précédentes en une seule $ sudo apt remove --net-tools Un package disposant du format *.deb, il faut utiliser le gestionnaire de packages spécifique à Debian $ sudo dpkg -i Pour supprimer le package, $ sudo dpkg -r

Utiliser SSH ------------- $ sudo apt install openssh-server $ sudo nano /etc/ssh/sshd_config Décommenter la ligne du #Port 22 Décommenter ou ajouter la ligne PermitRootLogin no $ sudo systemctl restart ssh Pour se connecter à Ubuntu par ssh Linux : Ouvrir un terminal et faire ssh @ Valider l'ajout de la clé SSH Windows : Ouvrir une commande MS-DOS en tant qu'administrateur Taper : ssh @ Saisir le mot de passe de connexion Sinon il suffit d'installer Putty Création d'une clé SSH sous Windows pour ne pas avoir besoin du mot de passe SSH -------------------------------------------------------------------------------- Ouvrir un terminal Powershell PS> mkdir .ssh PS> cd .ssh PS> ssh-keygen Cela génère un couple de clés privée (id_rsa) et publique (id_rsa.pub) Pour copier cette clé sur le serveur distant, il est requis qu'un dossier .ssh soit créé avant sur le profil de l'utilisateur. Dans la commande scp, il est important de laisser le slash en fin de commande pour indiquer qu'il faut copier DANS un dossier et NON COMME un fichier PS> scp .\id_rsa.pub @:/home//.ssh/ Sur le serveur Ubuntu, $ cd .ssh $ cat id_rsa.pub > authorized_keys Donner ensuite les bonnes permissions $ cd .. $ chmod 0600 .ssh/* $ chmod 0700 .ssh Si tout est OK, la connexion ssh depuis Windows devrait s'effectuer sans demande de mot de passe > ssh @ Création d'une clé SSH sous Linux --------------------------------- Création des clés privées et publiques $ ssh-keygen -t rsa -b 4096 Dans le dossier des clés id_rsa générées, le fichier known_hosts n'a pas d'intérêt. Copier le fichier id_rsa.pub sur le serveur distant (en étant dans le dossier généré précédemment) : $ ssh-copy-id @ Sur le serveur distant, la commande précédente a génére un fichier nommé authorized_keys Par défaut le dossier .ssh devrait avoir dwrx------ (vérifier en faisant ls -ld .ssh) Pour mettre les bons paramètres, faire $ chmod 0700 .ssh $ chmod 0600 .ssh/*

Installation d'une GUI sur le serveur ------------------------------------- $ sudo apt install xfce4 xfce4-goodies tightvncserver Durant l'installation, choisir gdm3 en tant que gestionnaire de login Pour configurer le serveur vnc : $ sudo vncserver Saisir le mot de passe pour la connexion VNC Ensuite il faut stopper la session 1 du serveur vnc et faire une copie du fichier de configuration $ sudo vncserver -kill :1 $ cp ~/.vnc/xstartup ~/.vnc/xstartup.copy Nous éditons le fichier xstartup de vnc pour ajouter la ligne startxfce4 & à la fin du fichier $ nano ~/.vnc/xstartup Ajouter la ligne startxfce4 & $ chmod +x ~/.vnc/xstartup Relancer le serveur vnc par $ vncserver Il nous reste à ouvrir le port 5900 dans le firewall $ sudo ufw allow 5900 Depuis Windows, installer un viewer VNC (vnc viewer download sur google) Attention, sous Linux il peut y avoir plusieurs dispays. Spécifier : lors de la connexion (par exemple 127.0.0.1:1)

Transfert de fichiers vers le serveur Ubuntu -------------------------------------------- Sous Windows, nous pouvons utiliser l'utilitaire WinSCP (https://winscp.net) Cela permet de se connecter à travers une connexion SSH. Il suffit de l'installer et de se connecter sur le port 22 Depuis un client Linux, avec un terminal $ scp -P 22 hello.txt @: Avec Filezilla, il suffit également de mettre l'ip du serveur, le port 22 et de s'assurer que le protocole soit bien SFTP - SSH File Transfer Protocol

Gestion du stockage ------------------- Liste des disques et partitions disponibles $ sudo fdisk -l Affichage de l'espace occupé par les devices et les mountpoints $ sudo df -lh Création d'une partition sur le device /dev/sdb $ sudo fdisk /dev/sdb Formatage de la partition en EXT4 $ sudo mkfs.ext4 /dev/sdb1 Une partition doit être montée sur un mountpoint $ sudo mkdir /mnt/usbdisk $ sudo mount /dev/sbd1 /mnt/usbdisk Pour le montage automatique au démarrage, le système vérifie le contenu de fstab. Il s'agit pour nous de créer ce mountpoint dans ce fichier. Pour cela nous allons avoir besoin du UUID de la partition $ sudo blkid La commande nous liste les UUID. Il nous suffit de prendre ce UUID et de le copier dans le fichier fstab $ sudo nano /etc/fstab UUID= /mnt/usbdisk ext4 defaults 0 0 Il faut ensuite forcer la relecture du fichier fstab par $ sudo mount -a Pour voir l'espace disque utilisé $ df -h (h est mis pour une option human-readable) Cela affiche la liste de devices montés dans le système ainsi que les points de montage. Il est possible de filtrer par système de fichiers en faisant (pour obtenir les filesystems de type ext4) $ df -t ext4 Pour obtenir le volume des éléments $ df -h | more $ df -sh Pour obtenir par exemple les fichiers à plus fort volume $ du -sh * | sort -nr | head 3

Gestion des accès utilisateur ----------------------------- Accès root ---------- Par défaut sous Ubuntu le user root est désactivé (comme précisé dans le fichier /etc/shadow avec le symbole '*' dans le second champ). Pour le réactiver, il suffit de lui affecter un mot de passe $ sudo passwd La connexion en tant que root se fait par $ su - Pour désactiver l'accès root$ sudo passwd -l root Autres utilisateurs ------------------- $ whoami Ajout d'un utilisateur $ sudo adduser jdoe $ sudo addgroup jdoe sudo Lister les utilisateurs du système $ cat /etc/passwd Lister les utilisateurs appartenant à un groupe $ groups jdoe Suppression de l'appartance au groupe sudo $ sudo delgroup jdoe sudo Suppression de l'utilisateur $ sudo deluser jdoe Attention: par défaut, la suppression d'un utilisateur ne retire pas son dossier de profil dans le système. $ cd /home/ && ls -l Suppression du dossier de profil $ sudo rm -rf jdoe Suppresion de la référence $ sudo deluser jdoe Désactiver le compte $ sudo passwd -l Réactiver le compte $ sudo passwd -u Affichage de la dernière connexion de l'utilisateur $ sudo last Affiche le nom de l'utilisateur, le tty, de quel endroit la connexion a été réalisée Affichage des horaires de connexion d'un utilisateur $ w Pour déconnecter un utilisateur : $ ps -aux | grep jdoe La commande précédente permet d'afficher la liste des processus pour un utilisateur donné Admettons que l'affichage monter la ligne suivante : jdoe 29510 sshd: jdoe@pts/1 Pour déconnecter l'utilisateur, nous faisons simplement un $ sudo kill 29510

Gestion du firewall ------------------- Par défaut le firewall du serveur Ubuntu est désactivé. Il est possible d'utiliser UFW ou FIREWALLD pour cette tâche de protection du système Exemple avec FIREWALLD Installation du package firewalld $ sudo apt install firewalld $ sudo systemctl start firewalld $ sudo systemctl enable firewalld La configuration des règles s'effectue avec la commande firewall-cmd Activation de la règle pour le SSH sur le port 22 standard (configuré dans /etc/ssh/sshd_config) $ sudo firewall-cmd --permanent --add-port=22/tcp Autorisation de HTTP et HTTPS $ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https Prise en compte des nouvelles directives $ sudo firewall-cmd --reload Lister toutes les règles permanentes $ sudo firewall-cmd --permanent --list-all Firewall UFW (uncomplicated firewall) ------------------------------------- Activation du firewall (désactivé par défaut dans le système) $ sudo enable ufw Autorise le port 22 (SSH) $ sudo ufw allow 22 Autorise le port 80/tcp ( = http) $ sudo ufw allow http Interdit le passage du flux 80/tcp $ sudo ufw deny http Supprime une règle du firewall $ sudo ufw delete deny http Affichage de l'état du firewall [avec des numéros si besoin] $ sudo ufw status [numbered] Autorisation du protocole tcp depuis le port 10.0.0.2 au port 22 $ sudo ufw allow proto tcp from 10.0.0.12 to any port 22 Donner accès à tous les ordinateurs du réseau sur le protocole 80 $ sudo ufw allow proto tcp from 10.0.0.0/24 to any port http Activation des logs du firewall $ sudo ufw logging on Les logs sont dans /var/log/auth.log

Goodies / Tools

Installer l'outil neofetch (sudo apt install neofetch) qui permet d'obtenir les informations relatives au type de serveur, OS, résolution, shell, cpu, ram, ... en mode semi graphique. Un peu comme bginfo mais pas en fond d'écran...

Monitoring ---------- Ressources systèmes avec top Possibilité de killer un process en tapant k (pour kill) et en précisant le PID Un appui sur h affiche une page d'aide Un appui sur la touche 'u' permet d'afficher les processus pour l'utilisateur précisé L'intérêt de la commande top est de pouvoir s'exécuter dans un mode batch avec $ top -n 3 -b >> top.txt avec les options -n pour le nombre de snapshots et -b pour le mode batch Processus en cours d'exécution avec ps --------------------------------------- Par défaut, la commande ps n'affiche que le processus bash et ps, avec le Process ID et le tty depuis lequel la commande a été lancée. Pour ajouter des informations, lancer
ps -f (pour full)
. Cela affichera en plus le Process ID du parent (le processus depuis lequel vous avez lancé les commandes par exemple) ainsi que le nom de l'utilisateur. Pour afficher l'intégralité des processus, utilisez la commande
ps -ef | more (car oui, il y a beaucoup de processus dans le système)
. Pour que l'affichage soit plus sexy, utilisez
ps -ef --forest | more
qui symboliquement fera l'affichage sous forme d'un arbre de précédence des processus. Enfin pour afficher uniquement les processus de votre utilisateur (ou de clui fourni en paramètre) :
ps -fu [loginname] | more
. Pour afficher les éléments relatifs à un processus en particulier :
ps -fC processname (comme sshd, bash, ...)
Connexions réseau avec netstat ------------------------------