vendredi 2 novembre 2012

Installation d'un micro-serveur, part 1: BASICS


Hello amis lecteurs,

Il y a quelques temps, je me suis fait plaisir, j'ai investi dans un micro-serveur Hewlett Packard ProLiant N40L.

  • Pas trop gros
  • Suffisamment puissant pour mes besoins (enfin, j'espère !) [Architecturé autour d'un AMD Turion II]
  • Equipé d'origine avec 2Go de mémoire (extensible à 4Go ECC)
  • Et, bonne surprise au déballage, d'un disque dur de 250Go ! (je pensais qu'il n'y en avait pas...)
  • Il me reste donc 3 emplacement 3,5" disponible, en sus de l'emplacement 5,25" ;)

Mais ce charmant petit serveur est livré "nu"... et c'est d'ailleurs ce qui m'a attiré, car je vais ainsi pouvoir m'amuser à y installer un vrai petit système "fait main" avec tout mon amour pour Linux :)

Voici donc les étapes de son installation !



Installation du système Debian de base
(Librement inspiré de l'article "Install et conf de base d'une Debian" de l'ami Guillaume Vaillant :))
Création de la clé USB bootable
  • Téléchargement de l'image ISO amd64 du CD1 sur debian.org
  • [Linux] Installer l'image ISO sur une clé USB (1Go minimum) à l'aide de la commande dd if= of= bs=4M; sync, avec le nom de l'image ISO à copier (CD1.iso), le nom du device où copier (/dev/sdX), bs=4M permet de lire/écrire des blocs de 4 Mo et améliore les performances, et sync permet de finaliser les opérations d'écriture avant la fin de la commande.
  • [Windows] Installer l'image ISO sur une clé USB (1Go minimum) à l'aide de UNetbootin

Installation et paramètres de base
  • Brancher un clavier, insérer la clé USB Debian, et démarrer le serveur :)
  • Suivre les étapes de l'installeur en mode texte :)
  • Installation en anglais
  • Clavier configuré en AZERTY
  • Langue et locale configurées en "en_US.UTF-8"

Partitionnement
  • montage: /boot, taille: 200Mo, type: ext3, options: nodev, nosuid, noexec, label: /boot, bootable flag: oui
  • montage: none, taille: 4000Mo, type: swap, label: swap
  • montage: /, taille: 20Go, type: ext4, options: relatime, label: /
  • montage: /tmp, taille: 10Go, type: ext4, options: relatime, nodev, nosuid, noexec, label: /tmp
  • montage: /var, taille: 10Go, type: ext4, options: relatime, nodev, label: /var
  • montage: /home, taille: 10Go, type: ext4, options: relatime, nodev, nosuid, label: /home
  • montage: /data, taille: le reste (180Go), type: ext4, options: relatime, nodev, nosuid, label: /data

Configuration du gestionnaire de packages
  • Editer le fichier /etc/apt/sources.list pour qu'il contienne:
deb http://ftp2.fr.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb http://ftp2.fr.debian.org/debian/ squeeze-updates main contrib non-free
deb http://backports.debian.org/debian-backports squeeze-backports main

deb-src http://ftp2.fr.debian.org/debian/ squeeze main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://ftp2.fr.debian.org/debian/ squeeze-updates main contrib non-free
deb-src http://backports.debian.org/debian-backports squeeze-backports main
  • Mettre à jour le gestionnaire: aptitude update
  • Mettre à jour le système: aptitude safe-upgrade

Installation des packages de base

Installation des packages suivants, avec "aptitude install xxx" (on peut lister tous les packages les uns à la suite des autres, séparés par des espaces)
  • atop: moniteur de ressources système et d'activité de processus (voir aussi htop)
  • bind9-host: Version de "host" intégrée avec BIND 9.x (pour le serveur DNS il faut ajouter aussi Bind9...)
  • bridge-utils: Utilitaires destinés à configurer le pont Ethernet sous Linux
  • bsd-mailx: Agent de courriel(MUA)  utilisateur simple (à priori, avec Exim4 installé par défaut en tant que MTA)
  • cron-apt: Automatic update of packages using apt-get
  • dmidecode: Extraction des données Desktop Management Interface
  • dnsutils: Clients fournis avec Bind
  • ethtool: Affiche ou change les paramètres des périphériques Ethernet
  • geoip-database: IP lookup command line tools that use the GeoIP library (country database)
  • hdparm: Optimisation des paramètres des disques durs
  • htop: moniteur de ressources système et d'activité de processus (voir aussi atop)
  • ifenslave: Attach and detach slave interfaces to a bonding device
  • inetutils-telnet: Telnet client (pas sûr que ça serve sur ce serveur :)
  • inotify-tools: Programmes en ligne de commande fournissant une interface simple à inotify
  • iptraf: Moniteur IP LAN interactif et coloré
  • less: Programme de pagination similaire à more
  • logrotate: Utilitaire de rotation de fichier journal
  • lshw: Informations sur la configuration matérielle
  • lsof: Liste des fichiers ouverts
  • minicom: Programme de communication série piloté par menus conviviaux
  • mlocate: Trouver rapidement des fichiers sur le système de fichiers d'après leur nom
  • mtr: Outil traceroute X11 et ncurses plein écran
  • multitail: View multiple logfiles windowed on console
  • nfs-common: Fichiers de support NFS communs au client et au serveur
  • nmap: Cartographe de réseau
  • ntpdate: Client pour définir l'horloge système à partir de serveurs NTP
  • parted: Programme de redimensionnement de partitions GNU Parted
  • pciutils: Utilitaires PCI Linux
  • psmisc: Utilitaires qui utilisent le système de fichiers proc
  • python: Langage interactif de haut niveau orienté objet
  • resolvconf: Name server information handler
  • rsync: Programme de copie de fichiers à distance rapide
  • screen: Multiplexeur d'écran avec émulation de terminal VT100/ANSI
  • smartmontools: Contrôle et surveillance de système de stockage utilisant S.M.A.R.T.
  • snmp: SNMP applications
  • snmpd: SNMP agents
  • ssmtp: Extremely simple MTA to get mail off the system to a mail hub (à voir si je garde ou pas...)
  • sudo: Fournit des privilèges super-utilisateurs à des clients spécifiques
  • tcpdump: Outil puissant pour la surveillance de réseau et l'acquisition de données
  • unzip: Extraction d'archives ZIP
  • vim-nox: Vim sans serveur X
  • vlan: User mode programs to enable VLANs on your ethernet devices
  • whois: Client whois intelligent
Configuration de base

Editeurs de texte
  • Editeur par défaut: update-alternatives --set editor /usr/bin/vim.nox
  • Pager par défaut: update-alternatives --set pager /bin/less
  • Configuration de Vim : Créer un fichier /etc/vim/vimrc.local avec le contenu suivant:
syntax on
set hls
set showmatch
set laststatus=2
set statusline=%t\ %y%r%{&ff}%m%=[%c%V,%1,%P]
set modeline
set modelines=1
set titlestring=%{expand($USER) }@%{hostname()}:vim\ %F%m%r
set title

Configuration de SSH et SSHd
  • Modifier le fichier /etc/ssh/sshd_config pour qu'il contienne:
Host *
ForwardAgent no
ForwardX11 no
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
BatchMode no
CheckHostIP yes
StrictHostKeyChecking ask
IdentityFile ~/.ssh/identity
Port 22
Protocol 2
Cipher blowfish
EscapeChar ~
FallBackToRsh no
UseRsh no
  • Modifier le fichier /etc/ssh/sshd_config pour qu'il contienne:
Port 22
# ListenAddress 0.0.0.0 # si on veut binder le service sur une seul interface
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin no # On n'accepte pas que le Root se logue
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes # Authentication par mot de passe acceptée
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
X11Forwarding no # On désactive le X11 forwarding (environnement graphique)
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
# Déconnexion si pas de réponse pendant 3x300s = 30min.
ClientAliveInterval 300
ClientAliveCountMax 3
UseDNS no

Configuration du logrotate

  • Modifier le fichier /etc/logrotate.con pour qu'il contienne:
daily
rotate 31
create
include /etc/logrotate.d

/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0660 root utmp
    rotate 1
}


Et voilà ! Nous avons maintenant un Microserveur avec un système Debian assez minimaliste auquel on peut accéder de façon sécurisée par SSH et qui ne demande plus qu'à évoluer vers quelque chose d'un peu plus "utile" :)

A bientôt pour la suite :)

Aucun commentaire:

Enregistrer un commentaire