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

Script : Color_bash.sh

Travaillant actuellement sur une fonction d’affichage pour les scripts bash, je vous partage un petit qui vous affichera dans le terminal les couleurs et leur code associé en bash.

#!/bin/bash
#
#   This file echoes a bunch of color codes to the
#   terminal to demonstrate what's available.  Each
#   line is the color code of one forground color,
#   out of 17 (default + 16 escapes), followed by a
#   test use of that color on all nine background
#   colors (default + 8 escapes).
#
#   Author: Giles Orr
#   URL: http://gilesorr.com/bashprompt/howto/c350.html
#   License: GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation;
#            http://gilesorr.com/bashprompt/howto/a1004.html


T='gYw'   # The test text

echo -e "\n                 40m     41m     42m     43m\
     44m     45m     46m     47m";

for FGs in '    m' '   1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' \
           '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' \
           '  36m' '1;36m' '  37m' '1;37m';
  do FG=${FGs// /}
  echo -en " $FGs \033[$FG  $T  "
  for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
    do echo -en "$EINS \033[$FG\033[$BG  $T  \033[0m";
  done
  echo;
done
echo

echo -e "\e[0mNO_COLOR"
echo -e "\e[1;37mCOLOR_WHITE\t\e[0;30mCOLOR_BLACK"
echo -e "\e[0;34mCOLOR_BLUE\t\e[1;34mCOLOR_LIGHT_BLUE"
echo -e "\e[0;32mCOLOR_GREEN\t\e[1;32mCOLOR_LIGHT_GREEN"
echo -e "\e[0;36mCOLOR_CYAN\t\e[1;36mCOLOR_LIGHT_CYAN"
echo -e "\e[0;31mCOLOR_RED\t\e[1;31mCOLOR_LIGHT_RED"
echo -e "\e[0;35mCOLOR_PURPLE\t\e[1;35mCOLOR_LIGHT_PURPLE"
echo -e "\e[0;33mCOLOR_YELLOW\t\e[1;33mCOLOR_LIGHT_YELLOW"
echo -e "\e[1;30mCOLOR_GRAY\t\e[0;37mCOLOR_LIGHT_GRAY"

skynet.tomzone.fr - PuTTY_2

Source : https://github.com/fikovnik/bin-scripts

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