Nouveau Serveur Bonnes pratiques

Après avoir fraîchement installé son nouveau serveur il est important de vérifier la configuration et d’installer un certain nombre d’outils.

Tutoriel réalisé avec un serveur sous GNU/Linux Debian 9 (stretch).

Se connecter via un terminal !

Lors de la première connexion sur votre serveur, la machine depuis laquelle vous vous connectez vous demandera une confirmation car elle ne connaît pas le serveur.

1
2
3
4
$ ssh [email protected]
The authenticity of host '▓▓▓▓ (▓▓▓▓)' can't be established.
ECDSA key fingerprint is SHA256:▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓.
Are you sure you want to continue connecting (yes/no)?/ yes

Après avoir répondu yes, le prompt vous invite à entrer votre mot de passe :

1
2
3
4
5
6
7
8
9
10
11
12
[email protected]'s password: 

Linux ns442211 4.9.140-▓▓▓▓-std-ipv6-64 #474270 SMP Mon Nov 26 08:31:25 UTC 2018 x86_64
Debian GNU/Linux 9 (stretch)
Linux ns442211.ip-x-x-x.eu 4.9.140-▓▓▓▓-std-ipv6-64 #474270 SMP Mon Nov 26 08:31:25 UTC 2018 x86_64 GNU/Linux

Server : 293871
IPv4 : ▓▓▓▓
IPv6 : ▓▓▓▓▓▓▓▓
Hostname : ns442211.ip-▓▓▓▓.eu

Last login: Mon Nov 26 13:48:12 2018 from x.x.x.x

Changer son MDP

Dans le cas ou il vous a été attribué automatiquement. Si ce nouveau mot de passe est perdu il faudra réinstaller la machine pour de nouveau l’utiliser. Donc faire un essai en se déconnectant de ssh et en se reconnectant dès maintenant.

1
2
3
4
# passwd
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd: password updated successfully

Vérifier l’uptime

Parce que c’est toujours émouvant un serveur qui vient de naître ou renaître.

1
2
# uptime 
09:23:22 up 3 min, 1 user, load average: 0,03, 0,04, 0,00

Inspecter son environnement

Afficher la Ram

Pour afficher la ram :

1
2
3
4
5
# free -ht
total used free shared buff/cache available
Mem: 31G 181M 30G 9,7M 474M 30G
Swap: 1,5G 0B 1,5G
Total: 32G 181M 32G 1,5G 0B 1,5G

Afficher les informations CPU

Si vous avez par exemple un processeur 4c/8t vous aurez les information du processeur 0 au processeur 7.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# cat /proc/cpuinfo 
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 58
model name : Intel(R) Xeon(R) CPU E3-1245 V2 @ 3.40GHz
stepping : 9
microcode : 0x20
cpu MHz : 1600.183
cache size : 8192 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
[...]

Version du système

Afficher la version :

1
2
3
4
5
6
7
8
9
10
11
cat /etc/issue

Debian GNU/Linux 9 (stretch)

Linux ns▓▓▓▓.ip-▓▓▓▓.eu 4.9.140-▓▓▓▓-std-ipv6-64 #▓▓▓▓ SMP Mon Nov 26 08:31:25 UTC 2018 x86_64 GNU/Linux


Server : ▓▓▓▓
IPv4 : ▓▓▓▓
IPv6 : ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
Hostname : ns▓▓▓▓.ip-▓▓▓▓.eu

ou

1
2
# cat /etc/debian_version 
9.12

Afficher la distribution

Pour afficher la distribution :

1
2
# lsb_release -ds
Debian GNU/Linux 9.6 (stretch)

Version du noyau

Avec la commande uname :

1
2
# uname -r
4.9.0-8-amd64

Pour plus de détails :

1
2
# dpkg -l | grep 4.9.0-8-amd64
ii linux-image-4.9.0-8-amd64 4.9.144-3.1 amd64 Linux 4.9 for 64-bit PCs

Pour encore plus de détail (voir quel noyau se charge au démarrage) :

1
2
3
4
# cat /boot/grub/grub.cfg
[...]
'Debian GNU/Linux, avec Linux 4.9.0-8-amd64' --class debian --class gnu-linux --class gnu --class
[...]

Afficher l’espace disque

Pour afficher l’espace disque :

1
2
3
4
5
# lsblk -d
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1,8T 0 disk
sdb 8:16 0 1,8T 0 disk
sdc 8:32 1 1,8T 0 disk

Avec du RAID1 sur 3 disques

1
2
3
4
5
6
7
8
9
10
# df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev 16G 0 16G 0% /dev
tmpfs 3,2G 9,8M 3,2G 1% /run
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/md1 487M 30M 429M 7% /boot
/dev/md2 20G 747M 18G 5% /
/dev/md3 1,8T 68M 1,7T 1% /home
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1,8T 0 disk
├─sda1 8:1 0 511M 0 part
│ └─md1 9:1 0 511M 0 raid1 /boot
├─sda2 8:2 0 19,5G 0 part
│ └─md2 9:2 0 19,5G 0 raid1 /
├─sda3 8:3 0 1,8T 0 part
│ └─md3 9:3 0 1,8T 0 raid1 /home
└─sda4 8:4 0 511M 0 part [SWAP]
sdb 8:16 0 1,8T 0 disk
├─sdb1 8:17 0 511M 0 part
│ └─md1 9:1 0 511M 0 raid1 /boot
├─sdb2 8:18 0 19,5G 0 part
│ └─md2 9:2 0 19,5G 0 raid1 /
├─sdb3 8:19 0 1,8T 0 part
│ └─md3 9:3 0 1,8T 0 raid1 /home
└─sdb4 8:20 0 511M 0 part [SWAP]
sdc 8:32 1 1,8T 0 disk
├─sdc1 8:33 1 511M 0 part
│ └─md1 9:1 0 511M 0 raid1 /boot
├─sdc2 8:34 1 19,5G 0 part
│ └─md2 9:2 0 19,5G 0 raid1 /
├─sdc3 8:35 1 1,8T 0 part
│ └─md3 9:3 0 1,8T 0 raid1 /home
└─sdc4 8:36 1 511M 0 part [SWAP]

Avec du RAID1 et RAID5

1
2
3
4
5
6
7
8
9
10
# df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev 16G 0 16G 0% /dev
tmpfs 3,2G 41M 3,1G 2% /run
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/md1 487M 40M 419M 9% /boot
/dev/md2 96G 995M 91G 2% /
/dev/md3 3,4T 70M 3,3T 1% /home
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# lsblk 
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1,8T 0 disk
├─sda1 8:1 0 511M 0 part
│ └─md1 9:1 0 511M 0 raid1 /boot
├─sda2 8:2 0 97,7G 0 part
│ └─md2 9:2 0 97,7G 0 raid1 /
├─sda3 8:3 0 1,7T 0 part
│ └─md3 9:3 0 3,5T 0 raid5 /home
└─sda4 8:4 0 511M 0 part [SWAP]
sdb 8:16 0 1,8T 0 disk
├─sdb1 8:17 0 511M 0 part
│ └─md1 9:1 0 511M 0 raid1 /boot
├─sdb2 8:18 0 97,7G 0 part
│ └─md2 9:2 0 97,7G 0 raid1 /
├─sdb3 8:19 0 1,7T 0 part
│ └─md3 9:3 0 3,5T 0 raid5 /home
└─sdb4 8:20 0 511M 0 part [SWAP]
sdc 8:32 1 1,8T 0 disk
├─sdc1 8:33 1 511M 0 part
│ └─md1 9:1 0 511M 0 raid1 /boot
├─sdc2 8:34 1 97,7G 0 part
│ └─md2 9:2 0 97,7G 0 raid1 /
├─sdc3 8:35 1 1,7T 0 part
│ └─md3 9:3 0 3,5T 0 raid5 /home
└─sdc4 8:36 1 511M 0 part [SWAP]

Changer le hostname

Dès qu’un serveur vous est livré il possède un nom générique, ce nom apparaît dans votre console, exemples :

1
[email protected]:~#

Si vous voulez lui donner un autre nom, utiliser hostname :

1
# hostname VotreNom

En relançant une session dans un terminal vous devriez voir apparaître votre prompt avec le nouveau nom de votre machine.

Lister les paquets déjà installés

Ils est possible d’utiliser 2 méthodes :

1
2
3
# dpkg --list

# apt list --installed

Activer l’auto complétion

A placer dans votre fichier .bashrc pour l’utisateur.trice en question, pour que ce changement s’applique à tout le monde il faut décommenter les lignes 32 à 38 dans le fichier /etc/bash.bashrc.

1
2
3
4
5
6
7
8
# enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi

Pour parfaire l’autocomplétion il est utile d’installer le paquet bash-completion. Par exemple lorsque vous demanderez l’autocomplétion à une commande qui attend un argument, comme man celle ci sera en mesure de vous lister tous les manuels trouvés sur la distribution. La liste des completions automatiques se trouve dans /usr/share/bash-completion/completions/.

1
# apt install bash-completion

Plus d’info https://github.com/scop/bash-completion

Faire les mises à jours

Lancer vos MAJ avec apt :

1
2
# apt update  
# apt upgrade

Changer les alias pour éviter les drames

Pour éviter les mauvaises manipulations et pour éviter d’accuser votre chat, il est possible de mettre des alias pour les commandes à risques, il faut ouvrir le ficher .bashrc si c’est pour un·e seul·e utilisteur·trice ou /etc/bash.bashrc si c’est pour tout le monde et décommenter (ou écrire) les lignes suivantes :

1
2
3
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

Relancer ensuite le fichier .bashrc ou /etc/bash.bashrc.

1
2
# . ~/.bashrc
# . /etc/bash.bashrc

Si les commandes rm, cp rt mv sont entrées dans un terminal, l’option -i permettra de demander une confirmation avant d’exécuter la commande.

⚠️ Note importante ⚠️ : Sachez que ce n’est peut être pas une bonne habitude à prendre, vouloir supprimer un fichier ou un dossier sans en être vraiment sûr·e, en se disant que de toute façon il y aura une confirmation, n’est vraiment pas une bonne idée car tous les serveurs n’ont pas cette sécurité. Donc il vaut mieux systématiquement partir du principe qu’une commande de suppression est irréversible, et tant mieux si il y a une demande de confirmation.

Éditeur de texte par défaut

En ouvrant par exemple la crontab on tombe sur l’éditeur nano, pour celleux qui ne sont pas familiers avec il est possible d’en mettre un autre par défaut, par exemple Vim :

1
2
3
4
5
6
7
8
# select-editor

Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny

Choose 1-3 [1]: 2

Vous devriez avoir un nouveau fichier .selected_editor dans votre répertoire $HOME :

1
2
3
# cat .selected_editor 
# Generated by /usr/bin/select-editor
SELECTED_EDITOR="/usr/bin/vim.basic

Horodatage de l’historique des commandes

Pour mettre une date et un horaire à chaque commande effectuée il faut donner une valeur à la variable d’environnement HISTTIMEFORMAT, pour cela on modifier le fichier .bashrc pour l’utisateur.trice en question ou pour que ce changement s’applique à tout le monde il faut modifier le fichier /etc/bash.bashrc

Il faut donner une valeur à la variable d’environnement HISTTIMEFORMAT :

1
2
3
# Horodatage de l'historique
# %d/%m/%Y" : année/mois/jour-heure:minute:seconde
HISTTIMEFORMAT='%Y/%m/%d-%H:%M:%S → '

Relancer ensuite le fichier .bashrc ou /etc/bash.bashrc selon le cas :

1
2
# . ~/.bashrc
# . /etc/bash.bashrc

En lançant la commande history :

1
2
3
4
5
# history
49 2018/11/28-12:16:24 → ls
50 2018/11/28-12:16:32 → ls -l
51 2018/11/28-12:16:47 → cat zogzog.txt
52 2018/11/28-12:16:51 → history

Aspect Cosmétique, mettre des couleurs

Changer bash

A placer dans votre fichier .bashrc pour l’utisateur·trice en question, pour que ce changement s’applique à tout le monde il faut modifier le fichier /etc/bash.bashrc :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Personalisation du prompt
PS1='
\[\e[0;30m\]----------------------------------------------\
\[\e[38;5;63m\] [ Server SYS ] \
\[\e[0;30m\]----- \
\[\e[0;37m\]Debian 9.6 \
\[\e[38;5;63m\]Stretch \
\[\e[0;30m\]--- \t
\[\e[38;5;228m\][\
\[\e[38;5;63m\]\u\
\[\e[38;5;228m\]@\
\[\e[38;5;63m\]\h\
\[\e[38;5;63m\]:\
\[\e[0;37m\]\w\
\[\e[38;5;228m\]]\
\[\e[38;5;63m\]\$\
\[\e[0;0m\] \
'

Relancer ensuite le fichier .bashrc ou /etc/bash.bashrc selon le cas :

1
2
# . ~/.bashrc
# . /etc/bash.bashrc

Changer le manuel

Parce qu’un manuel avec des couleurs c’est quand même plus sympa. Pour l’affichage man utilise less, il faut donc ajouter les variables de la commande less avec des couleurs.

1
2
3
4
5
6
7
8
# Manuel en couleurs
export LESS_TERMCAP_mb=$'\e[0m'
export LESS_TERMCAP_md=$'\e[38;5;69m'
export LESS_TERMCAP_me=$'\e[0m'
export LESS_TERMCAP_se=$'\e[0m'
export LESS_TERMCAP_so=$'\e[38;5;140m'
export LESS_TERMCAP_ue=$'\e[0m'
export LESS_TERMCAP_us=$'\e[38;5;228m'

Changer la commande ls

Pour apporter de la couleur aux résultats de la commande ls, il faut ouvrir le ficher .bashrc pour l’utisateur·trice en question, pour que ce changement s’applique à tout le monde il faut modifier le fichier /etc/bash.bashrc :

1
2
3
4
# Coloration du résultat de ls
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'

Relancer ensuite le fichier .bashrc ou /etc/bash.bashrc selon le cas :

1
2
# . ~/.bashrc
# . /etc/bash.bashrc

Pour les utilisateur·trice·s de Vim

Il est possible de modifier les options de vim, deux méthodes sont possible : soit directement modifier le fichier /usr/share/vim/vim80/defaults.vim, soit copier ce fichier dans son répertoire $HOME/ en le renommant .vimrc, utile pour un.e utilisateur.trice avec des besoins bien particuliers.

Au lancement Vim va privilégier la configuration se trouvant dans le $HOME/.vimrc, s’il ne trouve rien il prendra celui de son répertoire par défaut.

Configuration

Désactiver le mode visuel

Ligne 70

1
2
3
4
if has('mouse')
"set mouse=a
set mouse-=a
endif

Coloration syntaxique

Ligne 78

1
2
3
4
" Active la coloration syntaxique
syntax on
" Pour éviter d'avoir des couleurs trop sombre sur le fond noir (@todo à tester)
set background=dark

Numérotation des Lignes

A la fin du fichier

1
2
" Afficher les numéro de lignes
set nu

Tabulations

A la fin du fichier

1
2
" Taille des tabulations
set tabstop=4

Le bash complet :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# ================================================= #
# Personalisations valables pour tous les users #
# ================================================= #
# Personalisation du prompt
PS1='
\[\e[0;30m\]----------------------------------------------\
\[\e[38;5;63m\] [ Server SYS ] \
\[\e[0;30m\]----- \
\[\e[0;37m\]Debian 9.6 \
\[\e[38;5;63m\]Stretch \
\[\e[0;30m\]--- \t
\[\e[38;5;228m\][\
\[\e[38;5;63m\]\u\
\[\e[38;5;228m\]@\
\[\e[38;5;63m\]\h\
\[\e[38;5;63m\]:\
\[\e[0;37m\]\w\
\[\e[38;5;228m\]]\
\[\e[38;5;63m\]\$\
\[\e[0;0m\] \
'
# Coloration du résultat de ls
export LS_OPTIONS='--color=auto'
eval "`dircolors`"

# Horodatage de l'historique
HISTTIMEFORMAT='%Y/%m/%d-%H:%M:%S → '

# Manuel en couleurs
export LESS_TERMCAP_mb=$'\e[0m'
export LESS_TERMCAP_md=$'\e[38;5;69m'
export LESS_TERMCAP_me=$'\e[0m'
export LESS_TERMCAP_se=$'\e[0m'
export LESS_TERMCAP_so=$'\e[38;5;140m'
export LESS_TERMCAP_ue=$'\e[0m'
export LESS_TERMCAP_us=$'\e[38;5;228m'

Partager