Intallation d'un Serveur
1 - Le Serveur
1.1 Installation du serveur (UBUNTU 9.04 Serveur)
Une fois que l'ordinateur a démarré à partir du CD, apparaît une page d'accueil demandant le type d'installation souhaité. Pour utiliser le mode serveur, il faut donc saisir "server" et valider avec la touche "Entrée".
1.2 Configurer les adresses IP
Dans le cadre d'un nouveau réseau de peu de machines, il est possible d'utiliser les adresses 192.168.1.X. La 2ème fenêtre demandera le masque de sous réseaux (ici 255.255.255.0). Pour terminer la passerelle par défaut peut rester nulle si le serveur est directement connecté à internet (sinon adresse de la passerelle).
Ensuite donner un nom à la machine (exemple: mezoticam).
1.3 Partitionner le Disque
L'avant dernière étape consiste à partitionner le disque dure. Diviser le disque en plusieurs partie et faire une installation plus avancée c'est ici qu'il faut le faire. Pour le serveur le choix sera d'utiliser l'installation par défaut et donc de prendre tout l'espace disque.
1.4 Créer l'Utilisateur
Pour terminer Il faut créer un premier utilisateur afin de pouvoir ouvrir une session sur la machine une fois l'installation terminée. Pour se faire il faut saisir le nom complet de l'utilisateur par exemple « FRONTON Camille », puis le login qui sera celui qui sera demandé pour ouvrir la session. Une autre fenêtre demandera le mot de passe de l'utilisateur.
Note
Attention : Ubuntu ne possède pas de super utilisateur root (correspondant l'administrateur de Windows) c'est ce dernier qui à tous les droits sur la machine.
Donc pour pouvoir installer des programmes il suffit d'utiliser la commande :
sudo su
Après cette phase d'installation, il faut pouvoir maintenant installer les programmes nécessaires pour transformer le serveur afin qu'il puisse répondre aux besoins fixés.
2 - L'APT
L'avantage d'ubuntu réside dans l'APT (Advance Package Tool) installé par défaut. Cet outil installe automatiquement les programmes nécessaires, après avoir téléchargés sur Internet les packages désirés.
Pour plus de détail consulter :
http://wiki.ubuntu-fr.org/depots
http://wiki.ubuntu-fr.org/apt-get?s[]=apt&s[]=get
2.1 Configuration de l'APT
Pour le serveur il faudra des programmes qui ne sont pas installés par défaut. Afin d'avoir un bref aperçu de la configuration et de l?utilisation de l'APT, il faut tout d'abord connaître le fichier de configuration /etc/apt/source.list qui contient les sites sur lequel l'APT se connecte pour installer un programme.
Remarque : Durant toute l'installation l'éditeur de texte nano sera utilisé.
nano /etc/apt/source.list
Il contiendra des sites configurés à l'avance :
#Ubuntu Jauntry Jackalope deb http://fr.archive.ubuntu.com/ubuntu/ jauntry main restricted deb-src http://fr.archive.ubuntu.com/ubuntu/ jauntry main restricted deb http://fr.archive.ubuntu.com/ubuntu/ jauntry universe deb-src http://fr.archive.ubuntu.com/ubuntu/ jauntry universe deb http://fr.archive.ubuntu.com/ubuntu/ jauntry-updates universe deb-src http://fr.archive.ubuntu.com/ubuntu/ jauntry-updates universe deb http://fr.archive.ubuntu.com/ubuntu/ jauntry multiverse deb-src http://fr.archive.ubuntu.com/ubuntu/ jauntry multiverse deb http://fr.archive.ubuntu.com/ubuntu/ jauntry-updates multiverse deb-src http://fr.archive.ubuntu.com/ubuntu/ jauntry-updates multiverse ...
La majorité des fichiers de configuration utilise le caractère «#» pour désigner une ligne en commentaire. Ce qui signifie que toutes les lignes commencent par «#» ne sont pas pris en compte. Il est donc possible soit les supprimer, soit d'enlever le commentaire pour activer la ligne en question. Exemple il faut donc enlever le «#» devant les lignes des sites suivants :
deb http://fr.archive.ubuntu.com/ubuntu/ jauntry-backports ../..
main restricted universe multiverse deb-src http://fr.archive.ubuntu.com/ubuntu/ jauntry-backports ../..
main restricted universe multiverse
2.2 Utilisation APT
Commandes essentielles nécessaires :
apt-get update apt-get install nom_du_programme
La première actualise la liste les programmes que l'apt peut installer à partir des sites.
Et la seconde installe le programme passé en paramètre (nom_du_programme).
3 - Dsnmasq (DHCP & DNS)
3.1 Installation de Dnsmasq
L'opération d'installation du logiciel nommé dnsmasq se fait grâce à l'APT. Une seule ligne de commande est nécessaire:
apt-get install dnsmasq
Attention : si le logiciel n'est pas trouvé c'est qu'il y a eu un oubli à propos des lignes du fichier /etc/apt/source.list.
deb http://acm.cs.umn.edu/ubp jauntry-backports main universe multiverse restricted deb http://acm.cs.umn.edu/ubp jauntry-extras main universe multiverse restricted
3.2 Configuration de Dnsmasq
Comme la plupart des logiciels, dnsmasq utilise un fichier de configuration, s'il est déjà présent, il est possible de le modifier ou le supprimer et en crée un nouveau.
Pour le supprimer :
rm /etc/dnsmasq.conf
Ou alors le renommer :
mv /etc/dnsmasq.conf /etc/dnsmasq.conf.defaut
Le fichier permettra de configurer le serveur DNS et DHCP en même temps, pour le créer :
nano /etc/dnsmasq.conf
Il contiendra les informations suivantes
domain-needed expand-hosts bogus-priv#définie sur quelle carte réseau sera rattaché le serveur DHCP
interface=eth1#Le nom du domaine
domain=mezoticam#Plage d?adresse ip qui va être attribuer aux clients 12h/baie ip
dhcp-range= 192.168.1.50,192.168.1.150,12h
Pour relancer le serveur afin que les paramètres soit pris en compte.
. /etc/init.d/dnsmasq restart
4 - VSFTPD
4.1 Installation des paquets nécessaires
Mise en place d'un serveur ftp en utilisant le programme vsftpd. Pour cela rien de plus simple. Il faut être super utilisateur pour pouvoir installer un logiciel (sudo su).
apt-get install vsftpd
En parallèle du serveur ftp, il est nécessaire d'avoir un service qui gérera les authentifications (PAM). Pour l'installer une seconde commande est nécessaire :
apt-get install libdb3-util
4.2 Configuration de VSFTPD
Mise en place des utilisateurs virtuels qui seront répertoriés dans une base de données gérée par PAM.
Dans une première partie, un fichier sera généré, contenant les logins et mots de passe des utilisateurs qui auront le droit de se connecter au serveur ftp.
#Création vi users
Celui-ci aura le format suivant :
camille <- login fronton <- mot de passe Utilisateur2 <- login Mot_de_pass_de_utilisateur2 <- mot de passeetc...
Ainsi est défini le couple login et mot de passe de chaque utilisateur. (login=camille, mot de passe=fronton)...
Puis il faut générer la base de donnée des utilisateurs à l'aide du fichier précédent. Pour se faire la commande suivante est exécutée :
db3_load -T -t hash -f users /etc/vsftpd/login.db
Puis attribution des droits nécessaires à ce fichier généré :
chmod 600 /etc/vsftpd/login.db
La base de donnée étant générée il faut indiquer au service PAM où se situe le fichier, à l'aide d'un fichier nommé vsftpd.
vi /etc/pam.d/vsftpd
Contenu du fichier :
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
Malgré la création des utilisateurs qui seront authentifiés par vsftpds, une seconde étape consiste à créer un utilisateur virtuel reconnu par le system d'exploitation.
Pour réaliser cette étape il faut utiliser les commandes suivantes :
groupadd ftp useradd -g ftp -d /home/ftp/virtual/ virtual mkdir -p /home/ftp/virtual chown root.ftp ~virtual/ chmod 2750 ~virtual/
La troisième étape sera la configuration de vsftpd. Il faut créer un fichier nommée vsftpd.conf qui va définir le comportement global du serveur ftp.
Création du fichier de configuration :
vi /etc/vsftpd/vsftpd.conf
Qui contiendra les lignes suivantes :
listen=YES#Interdiction des connexion anonyme
anonymous_enable=NO#Autorisation des utilisateurs virtuel de la machine
local_enable=YES guest_enable=YES guest_username=virtual#Interdiction d'écriture et d'upload sur le répertoire pour les utilisateurs par défaut
write_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO anon_world_readable_only=NO#Restriction des utilisateurs à leur home directory
chroot_local_user=YES#Définition du nombre maximum de connexion
max_clients=20#Définition du nombre de session par adresse ip
max_per_ip=4#Sécurité du ftp
secure_chroot_dir=/var/run/vsftpd#utilisation de l'authentification par le service pam
pam_service_name=vsftpd#Permet d'attribuer des droits supplémentaires spécifiques à chaque utilisateur
user_config_dir=/etc/vsftpd/users
Dès maintenant le serveur est configuré pour fonctionner de façon très restrictive. Il suffit de le démarrer afin qu'il prenne on compte la configuration :
. /etc/init.d/vsftpd restart
Il est possible maintenant de se connecter en utilisant un client ftp avec comme login et mot de passe (ceux saisie dans le fichier users).
La phase finale consiste à personnaliser les comptes des utilisateurs ftp (Exemple : Pour que l'utilisateur camille aie des droits supplémentaires, il suffit de créer un fichier nommée « camille » avec les droits correspondants). Pour exemple, le droit d'écrire dans un sous répertoire upload.
Il faut créer le répertoire avec les droits appropriés :
mkdir ~virtual/upload/ chmod 770 ~virtual/upload/
Puis il faut créer le fichier camille :
vi etc/vsftpd/users/camille
Contenant les lignes suivantes :
write_enable=YES#Autorise l'upload de donnée
anon_upload_enable=YES
Cela indique au serveur vsftpd que l'utilisateur camille aura le droit d'écrire et d'uploader dans le sous répertoire upload (Néanmoins, il ne peut pas uploader n'importe où, car les droit d'écriture n'ont été mis que sur le répertoire upload (chmod 770 ~virtual/upload/)).
5 - Serveur SAMBA
5.1 Installation de SAMBA
Comme pour l'installation des logiciels précédents la commande est la suivante :
apt-get install samba
De même le fichier de configuration du serveur samba sera situé dans le répertoire /etc/samba sous le nom de smb.conf :
vi /etc/samba/smb.conf
5.2 Configuration de Samba
Le fichier smb.conf par défaut permet aux utilisateurs d'accéder à leur home dès qu'il se "log" sur le serveur samba. C'est aussi dans ce fichier que l?on ajoute les répertoires partagés, ainsi que leurs droits.
Fichier par défaut :
[global] workgroup = MSHOME server string = %h server (Samba, Ubuntu) dns proxy = noetc...
Voici un exemple qui ajoutera un répertoire compta qui sera ainsi accessible via les postes clients Windows. Pour se faire, il faut ajouter ces lignes à la fin du fichier :
[compta]#chemin du répertoire
path=/usr/compta#Commentaire associé au répertoire partagé
comment=compta#Autorise la navigation des sous répertoire.
browseable=yes#Autorise l'écriture dans le répertoire.
writable=yes
Pour notre exemple nous allons ajouter un utilisateur et lui attribuer un mot de passe. Sachant qu'il faut que l'utilisateur existe sur le serveur:
smbpasswd -a camille Saisir le mot de passe : ******
Pour plus d'information :
http://wiki.ubuntu-fr.org/applications/samba/outils
Si l'utilisateur n'existe pas encore il faut le créer. Pour se faire utiliser la commande :
adduser login
Une série de questions guidera pour la création de l'utilisateur tel que le nom, le mot de passe, etc...
Pour relancer le serveur afin que les paramètres soient pris en compte:
. /etc/init.d/samba restart
6 - Sécurisation du réseau à l'aide d'IPTABLES
6.1 Configuration du partage de connexion
Il faut savoir qu'Iptables est déjà installé par défaut sur ubuntu. Iptables permet de gérer le routage des paquets. Il peut donc être utilisé comme firewall pour protéger notre réseau des attaques provenant de l'extérieur tout en partageant la connexion Internet.
Dans un premier temps nous allons éditer le fichier /etc/network/options pour que la transmission d?information se fasse aussi entre les cartes réseaux.
On met la valeur ip_forward à yes pour que les trames soient forwarder d'une carte réseau à l'autre :
Original
ip_forward=no spoofprotect=yes syncookies=no
Personnalisé
ip_forward=yes spoofprotect=yes syncookies=no
6.2 Script d'IPTABLES
Puis il faut créer un script qui définira les règles du firewall.
vi /etc/init.d/iptables
Contenu du fichier iptables
#!/bin/sh#Réinitialisation des règles
iptables -F iptables -X#Définition de la stratégie par défaut
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT#Autorisation de toutes les connexions locales
iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT#Création d?une règle personnelle
iptables -N MAregle#Mise en place d?une règle qui acceptera les connexions selon les requêtes
iptables -A MAregle -m state --state NEW -i! eth0 -j ACCEPT iptables -A MAregle -m state --state ESTABLISHED,RELATED -j ACCEPT#Application de la règle à tous les ordinateurs du réseau
iptables -A INPUT -j MAregle iptables -A FORWARD -j MAregle#Partage de la connexion Internet
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
Attention : eth0 correspond à la carte réseau qui est directement connectée à Internet. Si ce n'est pas le cas, adapter le script et remplacer eth0 par la connexion Internet, de même pour l'adresse réseau 192.168.1.0.
Pour ne pas exécuter manuellement IPTABLES à chaque redémarrage du pc, une commande démarre automatiquement le script.
sudo update-rc.d iptables start 99 2 . stop 00 2 0 1 6 .
7 - Gestion des Sauvegardes de fichiers
Dans le cas de petites quantités de données à sauvegarder, il est possible d'effectuer une copie en local ou encore sur un serveur ftp. Comment automatiser ces taches ?
7.1 Script de backup avec tar
Tout d'abord il faut créer un script qui se chargera de sauvegarder les données :
vi backup-compta
Contenu du script backup-compta :
#!/bin/sh DATE=$(date +%d-%m-%Y) Tar zcf /usr/backup/compta${DATE}.tar.gz /usr/compta/*
Le script crée un fichier compressé comprenant toutes les informations du répertoire /usr/compta.
[Fichier nommé avec la date de sauvegarde (exemple compta10-10-2009.tar.gz) afin de distinguer chaque sauvegarde].
7.2 Script de backup avec ftp
Autre façon de sauvegarder les données: uploader sur un serveur ftp.
Création du script
vi ftp-script
Contenu :
#!/bin/sh HOST='ftp.backup' USER='backup' PASSWD='backup' REP='/usr/compta' ftp -n $HOST <END_SCRIPT quote USER $USER quote PASS $PASSWD prompt verbose lcd $REP mput * quit END_SCRIPT exit 0
Ce script va envoyer toutes les données du répertoire /usr/compta vers un ftp (ftp.backup). Avec pour login et mot de passe 'backup'.
Pour se faire, création d'un fichier de paramètres pour CRONTAB (définition de la commande, du jour et de l'heure de ce travail) :
vi jobs
Contenu possible :
30 12,18 * * * . /etc/init.d/backup-compta 0 22 * * 5 . /etc/init.d/ftp-script
Format d'entrée des informations pour CRONTAB
m h j Mois J comande_a_effectuer
|
Entrer de la liste des tâches dans CRONTAB
crontab jobs
Crontab garde en mémoire les tâches à effectuer. Il n'est donc pas nécessaire de le lancer au démarrage.
Dans l'exemple le script se lance deux fois par jours à 12h30 et 18h30,
la deuxième tâche (l'exécution de ftp-script) s'effectue tous les vendredi à 22h00.
Note
La mise en place d'un système de sauvegarde automatisé pourra se faire selon les besoins.