Le système d'exploitation choisi est la distribution serveur d'Ubuntu. Son installation est relativement simple, il suffit de procéder comme suit:
  1. Télécharger l'ISO d'Ubuntu serveur. il s'agit de la version 64 bits 
  2. Créer une clé USB bootable grâce à l'utilitaire LinuxLive USB Creator (LiLi USB Creator)
  3. Booter sur la clé et suivre les menus en faisant attention à la partie concernant le partionnement des disques afin de ne pas effacer les données que l'on souhaite conserver. Pour conserver des partitions pre-existantes, il faut choisir  "Manual" comme "partionning method". Pour le reste, choisir les options par défaut.

Configuration du routeur

La configuration du réseau est la suivante:

                                             
ETH0 ETH1 postes
Internet----Modem ------ Serveur ------ Hub ---- reliés par
| ethernet
| WLAN0
|
postes reliés
par wifi

Afin de découpler les connexions WAN (vers internet) et LAN (local), il convient de créer un pont (bridge) reliant les connexions filaires (ETH1) et sans-fil (WLAN0) du domaine local.

Pour permettre la gestion des ponts, il faut installer le paquet bridge-utils

sudo apt-get install bridge-utils

puis configurer la couche réseau en éditant le fichier /etc/network/interfaces

sudo nano /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

#interface to ethernet lan
iface eth1 inet manual

#interface to wireless lan
iface wlan0 inet manual

#Bridge interfaces
auto br0
  iface br0 inet static
  address 192.168.1.1
  network 192.168.1.0
  netmask 255.255.255.0
  bridge-ports eth1 wlan0

et enfin, activer la redirection de paquets IPv4 et, optionnellement, désactiver l'IPv6  pour gagner un peu en vitesse. Ceci peut être réalisé en éditant le fichier /etc/sysctl.conf :

sudo nano /etc/sysctl.conf

net.ipv4.ip_forward=1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Configuration du service de DNS et DHCP

Le serveur DNS/DHCP sera pris en charge par DNSMasq

sudo apt-get install dnsmasq

Editer le fichier dnsmasq.conf :

sudo nano/etc/dnsmasq.conf

# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv
#  Listen for DHCP and DNS requests only on specified interfaces
interface=br0
#Set the domain for dnsmasq
domain=lan
# range of addresses available for lease and optionally a lease time
dhcp-range=192.168.1.101,192.168.1.150,12h

Configuration du point d'accès WIFI

Les connexions sans fil au serveur seront gérées par Hostapd

sudo apt-get install hostapd

Editer le fichier hostapd.conf en faisant attention à remplacer le driver par celui correspondant à la carte wifi utilisée:

sudo nano/etc/hostapd/hostapd.conf

interface=wlan0
bridge=br0
# driver à modifier en fonction de la carte wifi si nl80211 ne convient pas
driver=nl80211
# ssid à modifier
ssid=LeNomDeMonPointDAcces
ignore_broadcast_ssid=0
# canal à modifier en choisissant le canal le moins encombré dans le voisinage
channel=3
hw_mode=g
rsn_preauth=1
auth_algs=1
wpa=2 # authentification WPA2
wpa_passphrase=MonsuperMotdePasse
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
macaddr_acl=0
wmm_enabled=1
ieee80211n=1
# laisser commenter la ligne suivante ou la modifier en fonction des capacités de sa carte wifi
#ht_capab=[HT40-][HT40+][SHORT-GI-40][TX-STBC][RX-STBC1][DSSS_CCK-40]

Indiquer le chemin vers le fichier de configuration de hostapd en éditant le fichier /etc/default/hostapd:

sudo nano /etc/default/hostapd

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Configuration du pare-feu

Le pare-feu a pour objet de filtrer les paquets IP afin de protéger le serveur et les postes qui y sont connectés. A cet effet, on utilisera les lPTables.

sudo apt-get install iptables

Configurer les iptables à l'aide du générateur de règles iptables de Scott Morizot en validant les paramètres suivants:

  • Gateway/Firewal : active
  • Allow Inbound Services: active
  • Internal Network Interface = br0
  • SSH = active
  • Web Server = active with SSL = active

Valider et sauvegarder le résultat dans le fichier /etc/iptables

Pour activer les iptables au démarrage, éditer le fichier rc.local :

sudo nano /etc/rc.local

# load iptables rules
/etc/iptables start
exit 0

Configuration du serveur SSH

Le service SSH permet de se connecter de façon sécurisé sur le serveur depuis un poste distant sur lequel aura été installé un client SSH. Ce service sera pris en charge par openSSH

Installer le paquet open-ssh

sudo apt-get openssh-server

Configurer le serveur open-ssh en éditant le fichier de /etc/ssh/sshd_config :

sudo nano /etc/ssh/sshd_config

AllowUsers  *@127.0.0.1 *@192.168.1.*
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
PermitRootLogin no
MaxAuthTries 3
RSAAuthentication no
PasswordAuthentication no

Générer les clés d'authentification pour votre compte utilisateur:

mkdir ~/.ssh
cd ~/.ssh
ssh-keygen -t dsa

Il reste maintenant a copier les clés d'authentification (id_dsa et id_dsa.pub) vers le répertoire ~/.ssh des machines a partir des quelles on souhaite se connecter. Si l'on souhaite se connecter depuis une machine Windows, utiliser putty. Il faudra d'abord convertir les clés open-ssh avec l'utilitaire puttygen.exe avant de se connecter avec le programme putty.exe

Configuration du serveur Samba

Le serveur Samba gère le partage de fichier entre le serveur et les postes distants.

Lors de l'installation choisir le démarrage en "daemons" plutôt que "inetd":

sudo apt-get install samba cifs-utils

Désinstaller le paquet ufw qui aura été installé avec samba et qui entre en conflit avec la configuration des iptables

sudo apt-get remove ufw

Configurer samba en éditant le fichier /etc/samba/smb.conf

sudo nano /etc/samba/smb.conf

interfaces = 127.0.0.0/8 br0
[homes]
   comment = Home Directories
   browseable = no

Le home dir de chaque compte utilisateur sera alors accessible aux adresses:

  • smb://<nom_du_serveur>/<compte_utilisateur> sur linux
  • \\<nom_du_serveur>\<compte_utilisateur> sur windows

Configuration du serveur web

Le serveur web utilisé est NGINX. C'est un serveur web léger et performant qui convient tout à fait à notre besoin.

sudo apt-get install nginx

Dés l'installation, on obtient une page par défaut à l'adresse http://192.168.1.1.  Cet article n'ira pas plus loin sur le sujet de la configuration de Nginx. Pour plus d'information visiter le wiki.

Et voilà!

Votre serveur est prêt à fonctionner et pour cela, il faut le redémarrer:

sudo reboot