Installation d’un serveur Debian 9

Salut les amis.

Hier, j’ai réussi à avoir un serveur Kimsufi avec 2 To de HDD pour le prix d’un serveur avec 1 To. à 10€ par mois je ne vais pas regarder trop les performances pures et dures du serveur, sachant que ce serveur sera là pour remplacer mon vieillissant Kimsufi, qui n’a qu’un disque de 512 Go (que je pense reconvertir en serveur de Backup) … Ce nouveau serveur servira de serveur web, serveur de cloud privé, seedbox, serveur GIT, de test pour docker … enfin un peu tout.

Plutôt que de simplement migrer facilement mon serveur Debian 8 vers le nouveau, je vais réécrire ici les procédures d’installation from scratch, mais je pense que ceci aboutira à l’utilisation d’un script post-install … Oui car on est flemmard ou on ne l’est pas !

Partitionnement

La grande question du partitionnement

Alors pour expliquer rapidement.

Un / de 20 Go, suffisant.

/home qui fait pour l’instant 1 To, je vais stocker les fichiers de ma seedbox 😀

/var/log qui fait 5 Go (oui j’ai eu une fois une appli verbeuse, qui m’a généré tellement de log que j’en ai perdu mon serveur … Je préfère donc toujours mettre mon dossier de log dans une partition à part et qu’elle reste isolée du reste du système … Les logs ça grossi vite 🙂

Et le reste ?? Et bien le reste je vais voir. Est ce que j’agrandis mon /home ? est ce que je dédie une partition à autre chose ? Je ne sais pas … de toute façon c’est du LVM donc je verrai avec le temps ! 😉

Premier Démarrage

Création d’un compte utilisateur

Pour commencer, si vous n’avez pas de compte perso, ajoutez en un, si vous en avez un passez cette étape

Je vais donc me créer un compte sur le serveur et définir son mot de passe.

useradd -m -G sudo tom
passwd tom

Maintenant il va falloir personnaliser mon environnement de travail (logiciel, bashrc …)

Pour commencer, c’est personnel, je vais importer mon bashrc et mon env shell. Pour cela j’héberge sur GitHub les fichiers nécessaires

cd /tmp
# On installe git si pas encore installé
sudo apt install git
git clone https://www.github.com/SckyzO/bashrc
cd bashrc
# Copie dans le home directory de l'utilisateur
cp .bashrc .dircolors $HOME
# Copie dans le home directory de root
sudo cp .bashrc .dircolors /root
# On delete :)
rm /tmp/bashrc

Mise en place des dépôts

Nous allons ajouter les dépôts “contrib” et “non-free” ainsi que le rétro-portage Backports

 vi /etc/apt/sources.list
# Les dépôts officiels Debian Jessie :
deb http://httpredir.debian.org/debian/ stretch main contrib non-free
#deb-src http://httpredir.debian.org/debian/ stretch main contrib non-free

# Debian Jessie, mises-à-jour de sécurité :
deb http://security.debian.org/ stretch/updates main contrib non-free
#deb-src http://security.debian.org/ stretch/updates main contrib non-free

# Debian Jessie, mises-à-jour "volatiles" :
deb http://httpredir.debian.org/debian/ stretch-updates main contrib non-free
#deb-src http://httpredir.debian.org/debian/ stretch-updates main contrib non-free

# Debian Jessie, dépôt de rétro-portages ("backports") :
deb http://httpredir.debian.org/debian stretch-backports main contrib non-free
#deb-src http://httpredir.debian.org/debian stretch-backports main contrib non-free

Mise à jour système

apt-get update && apt-get upgrade && apt-get dist-upgrade

Installation des programmes

Divers

apt-get install man manpages-fr manpages-fr-extra manpages-fr-dev bash-completion curl locales fortunes nano python-pip wget zip unzip bzip2 linux-kernel-headers screen ca-certificates fortune-mod lsof strace sudo tree coreutils htop ccze vim-runtime vim-common vim-nox vim vim-syntastic vim-addon-manager vim-runtime build-essential subversion autoconf screen g++ gcc ntp curl git unrar unzip mediainfo ffmpeg

Je ne vais pas rentrer dans les détails des programmes installés. C’est mon environnement

Ajout de mon MOTD Dynamique

Pour ceux qui ne savent pas, je vous renvoie vers le lien suivant :

Création d’un MOTD dynamique : dynmotd

 

Un peu de Sécurité

Sécuriser son serveur SSH, c’est quand même la base. Par défaut la configuration est bien pour une utilisation locale. Mais sur internet, mieux vaut prendre quelques précautions.

Perso, je change le port de connexion par défaut, cela évitera quelques petits soucis (mes amis les bots …), et je n’autorise pas la connexion SSH à l’utilisateur root (non sans déconner !!)

Il vous faudra éditer le fichier /etc/ssh/sshd_config

Changer le port par défaut (évitez de mettre un port compris en 1 et 1024 …)

[ . . . ]
Port 1234 # (mettez le port que vous souhaitez)
[ . . . ]
Protocol 2
[ . . . ]
PermitRootLogin no
[ . . . ]
# Cette variable permet uniquement aux utilisateurs listés après la variable AllowUsers de pouvoir se connecter en ssh (Fonctionne aussi avec AllowGroups)
AllowUsers username1 username2
AllowGroups groupe1 groupe2

Voila le principal est fait. J’écrirai un autre article à destination de la sécurité sur un serveur Linux (ssh, fail2ban, port-knocking …)

Et Ensuite ?

Et bien ensuite va s’en suivre plusieurs articles, pour l’installation et la configuration de plusieurs softs. Je pense à terme faire pas mal de docker. Je reviendrai dessus dans les jours prochains.
Pour l’instant on va s’installer “normalement” une petite seedbox sur le serveur. Je vous présenterai cela par la suite.

 

Et vous vous installez aussi votre Debian comme ceci ?

Mon bashrc

[UPDATE : 17-01-2017 : Mise à jour du code du bashrc ]

Suite à l’article sur mon motd dynamique, je vous propose en téléchargement mon fichier bashrc personnalisé.

Explication de la personnalisation de Bash (source : Mistra.fr)

Pour personnaliser l’invite de commande bash nous allons devoir modifier quelques fichiers de configuration relatifs à bash.

 

Voici les fichiers qui configurent un bash à son lancement :

  • /etc/profile : ce fichier est chargé quel que soit le shell utilisé (en particulier bash) et quel que soit l’utilisateur. Il ne doit pas contenir d’instruction spécifiques à bash, car sinon cela risque de perturber les autres shells.
  • /etc/bash.bashrc : ce fichier est chargé par tous utilisateurs au lancement d’un bash. Selon la distribution Linux ce fichier peut porter un nom légèrement différent, par exemple /etc/bash/bashrc.
  • ~/.bash_login : ce fichier est spécifique à un utilisateur (en tant que fichier situé dans son home directory) quand il se loggue. Ce fichier n’existe pas forcément, donc si vous en avez besoin n’hésitez pas à le créer.
  • ~/.bashrc : ce fichier est chargé au lancement d’un bash par cet utilisateur. C’est un contexte un peu plus général que se logguer (typiquement lorsqu’on lance la commande “bash”).

Concrètement nous allons travailler dans ~/.bashrc car nous ne souhaitons pas forcément modifier le prompt des autres utilisateurs. On aurait pu travailler dans /etc/bash.bashrc  pour modifier tous les prompts d’un coup.

Continuer la lecture de Mon bashrc

Création d’un MOTD dynamique : dynmotd


Depuis que je m’occupe de la gestion d’un parc de serveurs Linux, environ 200, j’ai mis en place certaines petites customisations maison.

Ainsi, dès que je me connecte en SSH à un serveur, un motd dynamique s’exécute et il m’est donc simple de savoir quel est le serveur sur lequel je me connecte. Qu’est ce que le motd me demanderont certains ? Simplement l’abréviation de Message Of The Day.

Mettre en place un motd dynamique est très simple.

Suivez le tutoriel ci-dessous

<Mise à jour du 29 Avril 2016>

  • Mise à jour pour dû à un bug du TERM qui bloquait les transfert en SCP
  • Mise à jour du fichier dynmotd.sh avec : optimisation des variables
  • Mise en place du dynmotd uniquement pour le compte root et le groupe admin

</Mise à jour>

Continuer la lecture de Création d’un MOTD dynamique : dynmotd

La gestion des archives sous Linux

Voici un petit récapitulatif des commandes les plus utiles pour gérer les formats d’archives les plus rencontrés sous Linux (ligne de commande)

Format de compression

  • gzip (*.gz)
  • bzip2 (*.bz2)

Format d’archivage ou archivage + compression

  • tar (*.tar)
  • tar gzipé (*.tar.gz,*.tgz)
  • tar bzipé (*.tar.bz2)
  • zip (*.zip)
  • rar (*.rar)

Continuer la lecture de La gestion des archives sous Linux

La gestion des packages sous Debian

La distribution Debian propose un outil de gestion de package permettant d’automatiser l’installation, la configuration et la mise à jour des logiciels installés : APT-GET

Les packages sont des fichiers portant l’extension .deb et peuvent être installés manuellement, via la ligne de commande :

dpkg -i nom_du_package.deb

En plus de cela, le gestionnaire est capable, grâce à un système complémentaire de gérer les dépendance entre les différents packages, et va ainsi permettre de mettre à jour les affiliations de packages par simple mise à jour: il s’agit du système apt (Advanced Packaging Tool). Ce système fonctionne à partir d’une liste de sources (emplacements auxquels des paquetages sont disponibles) présente dans le fichier /etc/apt/sources.list.

Commandes des fonctionnalités principales :

Installation: pour installer le package « nom_du_package » il suffira de taper :

apt-get install nom_du_package

ou bien après avoir récupéré manuellement un package spécifique (avec l’extension .deb)

dpkg --install nom_du_package.deb

Continuer la lecture de La gestion des packages sous Debian