TP: Installation d'un serveur GNU/Linux Administration du serveur Nom :
Prénom :
Date : Loisel.jp
© 2010 – rev . 2013
1 Contenu Objectifs :
Installer un PC serveur GNU/Linux (installation en utilisant le premier DVD de la distribution Fedora).
Effectuer les configurations de base Bureau / Utilisateurs, Effectuer les mises à jour, Installer les outils d'administration de Base / Webmin / SSh / Firestarter / Clamav, Installer et configurer le serveur LAMP et son administration, Installer un serveur FTP, Créer une procédure de sauvegarde automatique,
Terminer la formation par une évaluation sous forme de QCM et d'une étude de cas.
Les illustrations de ce document reprennent des vues réalisées lors du suivi de ce TP effectués avec une distribution "Fedora 11 i386". Matériel : - DVDrom d'installation d'une version GNU Linux Fedora. - 1 PC ou machine virtuelle, avec disque dur suffisant pour l'installation (10 à 20 Go), compatible Linux. - Accès Internet pour le poste, - Accès réseau avec serveur DHCP, - Ce document accessible (sur PC indépendant ou papier). Note typographique - Ce symbole signifie une action à effectuer. Les commandes d'installation, lectures.. sont à lancer ou exécuter, - Ce symbole signifie une note importante, - Ce symbole indique une information, - Ce style de caractères «azerty» signifie qu'une commande, un texte sera entré sous cette forme, - Ce style de caractères «passwd utilisateur» signifie qu'une commande, une ligne de texte est à saisir telle qu'indiqué, - Les zones laissées libre sont à compléter.
Administration Unix /Linux LoiselJP ©2010
page 1/40
Rappel sur le déroulement de la formation - Jour 1 Présentation du programme, Rappels sur Linux, rappel sur les commandes du Shell, les scripts, les fichiers, Installation d'un serveur Fedora, système de fichiers LVM, Configuration du bureau, arrêt de l'interface graphique, Installation d'un script de sauvegarde automatique, Installation des outils administrateur, Installation du serveur LAMP, serveur FTP, serveur proxy (Squid), Samba, NFS. - Jour 2 Configuration du pare-feu, Manipulation de LVM, Configuration des serveurs: Apache, PHP, Mysql, Webmin, FTP, Squid, Installation / utilisation des outils de log et de surveillance (log-rotate, Squid report, Squidguard,...), Ajout d'utilisateurs et gestion des droits Mysql, Evaluations. Conclusion
Administration Unix /Linux LoiselJP ©2010
page 2/40
2 Pré-requis Cette formation arrive en complément d'une formation GNU/Linux. Il n'est donc pas question de voir ou revoir toutes les bases de Linux. On suppose alors que sont acquis : - Les principes de base du GNU Linux sont connus: - Les grandes lignes de la genèse de Linux, - Les distributions (libre/propriétaires), - Les principales différences entre distributions, - La gestion des utilisateurs: - Ajout/suppression d'utilisateur, - Gestion des mots de passe, - Processus init: - Le lancement des services et démons, - Les runlevels, leur signification, - Scripts de lancement des services, - L'installation de logiciel: - Principe des paquets et leurs dépendances, - Les "dépots" de paquets, - L'installation automatique de paquets (par frontend), - Principe d'installation manuelle, - Les principales commandes du shell, - Utilisation du programme man et l'aide des commandes.
3 Rappels a - Les commandes principalement utilisées:
cd - changer de répertoire, vi - éditeur système, cat - lister le contenu d'un fichier, df - afficher l'espace disponible, more - afficher un fichier page à page, (la touche x permet de passer une page), grep - filtrer la sortie, chmod - changer les droits d'accès à un fichier, (chmod +x rendre un fichier exécutable), cp - copier des fichiers, find - rechercher des fichiers, man - afficher l'aide sur une commande, mkdir - créer un dossier, mv - déplacer un fichier, passwd - changer le mot de passe, ps - lister des process, pwd - afficher le chemin du dossier en cours, rm - détruire un fichier, adduser - useradd (suivant la distribution et l'installation) ajouter un utilisateur, delluser - userdell (suivant la distribution et l'installation) supprimer un utilisateur,
Administration Unix /Linux LoiselJP ©2010
page 3/40
wget - permet de télécharger un fichier, elle est souvent utilisée pour les installations manuelles,
b - Autres commandes utiles:
at - exécute une action à une heure définie, awk - langage de programmation pour traiter des fichiers, chgrp - change un fichier de groupe, chown - changement de propriétaire d'un fichier, cut - coupe une chaîne (surtout utilisé dans les scripts), date - affiche/modifie la date, diff - affiche la différence entre 2 fichiers, du - indique l'espace disque utilisé, egrep - recherche dans un fichier, ftp - transfert de fichiers, grep - recherche dans un fichier, history - liste des dernières commandes utilisées, kill - arrêter un process, sh ou ksh ou rsh - appel d'un shell (interpréteur de commandes), ln - crée un lien sur un fichier, lp ou lpr - redirection vers l'imprimante, lpstat - information sur les imprimantes, ls - liste des fichiers, mail; mailx - affiche et envoie des messages, rlogin user - changement d'utilisateur, rlogin -l user machine - connexion sur une autre machine, rmdir - détruit un dossier, rsh -l user machine - exécute une commande sur une machine distante, rusers - liste les utilisateurs connectés au réseau, (Pas installée par défaut. A installer pour être utilisée) set - afficher les variables d'environnement, sh - appel du shell de base (Bourne shell sous Unix), sort - trie les lignes d'un fichier, tar - sauvegarde / compresse, tee - duplique un flux de données, telnet - connexion à un autre système, w ou who ou whoami - liste les utilisateurs connectés au système, write - envoie un message à un utilisateur du système.
c - Combinaison des commandes: Le signe | (Pipe) permet de combiner les commandes ainsi par exemple: ls -l - liste les fichiers. grep .conf - filtre la sortie en ne laissant passer que le lignes contenant ".conf". combinées ls -l | grep .conf liste les fichiers contenant .conf. Le signe > permet de rediriger la sortie standard vers un fichier: ls -l > /tmp/liste - liste les fichiers mais ne les affiche pas: ils sont enregistrés dans le fichier /tmp/liste. Administration Unix /Linux LoiselJP ©2010
page 4/40
Le double signe > (">>") permet de rediriger la sortie standard vers un fichier sans en effacer le contenu : ls -l >> /tmp/liste - liste les fichiers en les ajoutant au bout du fichier /tmp/liste .
d - Les dossiers et fichiers /etc - contient la plupart des fichiers de configuration du système Linux, /dev - contient les fichiers correspondant au matériel, par exemple: - /dev/hda - correspond au premier disque IDE, - /dev/hda1 - correspond à la partition 1 du premier disque IDE, - /dev/hdb - correspond au second disque IDE, - /dev/sda - correspond au premier disque série (Sérial ATA, USB...), - .... /proc - contient les fichiers de processus, avec pour les fichiers portant un numéro: leur ID, /var - contient la plupart des variables, /var/log - contient la plupart des fichiers de log générés par le système,
init.d/ - contient les scripts de démarrage (/etc/init.d) mysql/ - contient les fichiers de configuration de mysql, (/etc/mysql) network/ - contient la configuration des couches réseau, (/etc/netword) ppp/ - contient la configuration de ppp (modems...), rc.boot/ - contient les scripts de démarrage System V, rcx.d/ - contient les scripts de démarrage correspondant au niveau runlevel X (X peut être: 0 1 2 3 4 5 ou 6), skel/ - contient le squelette pour adduser, ssh/ - contient les fichiers de configuration pour SSH, snmp/ - contient les fichiers de configuration du démon SNMP, terminfo/ - contient la base de données sur les terminaux,
Les dossiers sont variables d'une distribution à l'autre: /var/cache/apt - n'existe que sur les distributions utilisant aptitude (apt-get) , /var/www - contient les fichiers du serveur http sur la distribution suse ce dossier se trouve en /srv/www /etc/init.d - contient les scripts de démarrage, mais se trouve sur certaines distributions en rc.d/
e - Les fichiers: L'administrateur Linux doit faire preuve de largesse d'esprit avec les fichiers, dossiers et commandes. Bien que très proches dans la plupart des cas, on peut noter quelques différences d'une distribution à l'autre.
inittab - contient la configuration des procédures de démarrage (runlevels), fstab - contient les points de montage permanents, /var/log/messages - contient les messages système, /etc/apt/sources.list - Contient les sources de paquets (uniquement pour une distribution avec aptitude), /etc/sudoers - contient la configuration du programme sudo qui autorisera le lancement d'applications nécessitant des droits root à un utilisateur, Administration Unix /Linux LoiselJP ©2010
page 5/40
f - Les scripts: Sous Linux la plupart des actions sont exécutées à partir de scripts, les principaux scripts se trouvent dans /etc. /etc/init.d contient les scripts de démarrage et d'arrêt du serveur. - La toute première ligne du fichier doit contenir le nom de l'interpréteur à utiliser. Cette ligne doit commencer par "#!" suivi de l'exécutable à utiliser. Pour un shell-script bash, on aura donc en début de fichier : "#!bash" ou "#!/bin/bash" alors que pour sh cela sera "#!sh", - Une ligne commençant par "#" n'est pas exécutée. La ligne est donc en commentaire, - Une variable est reconnaissable par sa première lettre "$", - La variable $1 contient le 1er paramètre passé, la variable $2 le second.... - La variable $0 contient le nom du script, alors que la variable $* contient la ligne d'argument, - Le fichier devra être exécutable pour cela la commande chmod +x nom_du_script permet de placer en mode exécutable le script voulu. Il n'est pas nécessaire pour l'administrateur d'avoir une grande culture sur le contenu d'un script, mais il est indispensable d'en maîtriser le minimum, il est courrant de développer quelques lignes pour la création de sauvegarde, pour une action particulière définie dans le crontab...
Administration Unix /Linux LoiselJP ©2010
page 6/40
4 Installation du serveur Installation réseau GNU/Linux pour un serveur. L'adresse IP du serveur utilisée pour l'installation sera précisée en séance / à défaut l'installation se fera en DHCP, Afin d'éviter tout conflit de nom, le poste sera nommé au nom de l'administrateur qui installe le poste. Par exemple "loiseljp" installe le poste qui portera le nom "loiseljp", Le groupe de travail utilisé sera "Workgroup", Le mot de passe administrateur sera "azerty", Le compte utilisateur sera "utilisateur" avec pour mot de passe "azerty".
a - Installation de la distribution Fedora. Les bases de Linux étant acquises, l'installation d'une distribution ne sera donc pas le sujet principal des exercices proposés, une installation "standard" sera donc privilégiée. Cependant, l'installation correspondra à un serveur tel qu'il pourrait se présenter dans le cadre de production, il répondra donc à quelques points particuliers (tels que partitions séparées, utilisation de lvm..). Booter sur le DVD et lancer l'installation:
Passer le test d'intégrité du DVD fourni l'installation qui sera effectuée): Administration Unix /Linux LoiselJP ©2010
(l'opération est longue et n'est nécessaire qu'en fonction de
page 7/40
L'installation de la Fedora est très visuelle grâce à son interface graphique:
Langue : Europe – Français / Clavier : Français / Niveau de sécurité : standard (si nécessaire) Initialiser au besoin le disque, Choisir le nom d'hôte du poste (au nom de l'administrateur) Placer l'heure de Paris, entrer le mot de passe root, Utiliser le partitionnement automatique, en utilisant le disque entier. L'observation de la structure permettra de constater que Fedora s'installe automatiquement avec LVM par défaut (ce qui permet un redimentionnement de partition "à la volée". Cette distribution étant orientée serveur les moyens sont mis a disposition de l'administrateur) et utilise le système de fichier Ext4.
Suivant l'utilisation / destination certains logiciels non indispensables peuvent être désélectionnés (ici la suite bureautique).
Dans le cas de RedHat /Fedora, il est intéressant d'ajouter les dépôts au cours de l'installation de base.
Cette sélection des dépôts au cours de l'installation peut éviter de devoir les ajouter par la suite.
Administration Unix /Linux LoiselJP ©2010
page 8/40
Résumé de l'installation et fin
A déterminer suivant les idées de chacun... En fin d'installation se connecter sur le compte "utilisateur", Fedora n'accepte pas la connexion de root en direct. * Fedora propose par défaut le bureau gnome.
* Pour les adeptes d'autres bureaux il sera possible de l'installer en utilisant le gestionnaire de paquets. il est inutile pour l'instant d'installer d'autres bureaux, cette opération sera réalisée au cours des différentes manipulations. Administration Unix /Linux LoiselJP ©2010
page 9/40
Configurer le fond d'écran, l'écran de veille, la barre des tâches, son comportement, Placer un raccourci sur le bureau du navigateur de fichier, le gestionnaire de paquetages, la corbeille, un terminal, s’il est installé, le traitement de texte,...
Post installation, information sur le matériel, fichiers de configuration Ouvrir un terminal, puis se connecter en administrateur:
Quel est le nombre de commandes disponibles?
Dans cet exemple il y a 2670 commandes disponibles.
b - Informations sur le boot et les périphériques reconnus au boot Visualiser les messages de boot avec la commande dmesg. dmesg
Utiliser cette commande pour plus de visibilité: dmesg | more
Filtrer la sortie de dmesg pour afficher la fréquence du bus IDE (respecter les majuscules dans les commandes): dmesg | grep ide | grep MHz Administration Unix /Linux LoiselJP ©2010
page 10/40
Pour toute difficulté d'exécution de ces commandes de base, se reporter au chapitre 2 - les commandes nouvelles ou spécifiques seront détaillées.
c - Informations sur le matériel du PC : pseudo filesystem /proc Lister le contenu du répertoire /proc (répertoire contenant les processus) . La commande ls permet de lister les fichiers d'un dossier: ls -l /proc | more On pourra utiliser "man more" pour connaître les touches de raccourci pour se déplacer avec "more". La touche "f" permet de passer à la page suivante (par défaut). Visualiser les informations sur le CPU : cat
/proc/cpuinfo
Type du processeur ?
Fréquence d'horloge du processeur ?
Taille du cache ?
Visualiser les informations sur la mémoire : cat
/proc/meminfo
Total de la RAM en kB ?
Capacité du swap ? Visualiser les informations sur le BUS PCI avec la commande
lspci [-v]
Type de la carte graphique ?
Taille de la mémoire de la carte graphique ?
d - Détecter les traces de l'activité du système Traces de l'activité du système : rsyslog
Administration Unix /Linux LoiselJP ©2010
page 11/40
En début de ce document il est fait mention que l'administrateur Linux doit faire preuve d'ouverture d'esprit face aux commandes: Les commandes "Syslog","Syslogd", habituellement trouvées dans les distributions peuvent apparaître sous cette forme "Rsyslog" ou "Rsyslogd" c'est le cas dans Fedora.
Vérifier le statut du service rsyslog. - Se connecter en root puis : /etc/init.d/rsyslog status
Visualiser le fichier : vi /var/log/messages
Visualiser en continu /var/log/messages : tail -f /var/log/messages
Administration Unix /Linux LoiselJP ©2010
page 12/40
5 Configuration du bureau et de l'interface graphique a - Arrêt du chargement de l'interface graphique Sous Fedora, la gestion des runlevels est quelque peu plus complète que dans d'autres distributions. A la lecture du fichier inittab (vi /etc/inittab ) on constate qu'il y a un runlevel associé au démarrage de l'interface graphique X11. Placer le démarrage par défaut à 4 permettra un démarrage sans interface graphique.
Redémarrer le serveur (init 6) et vérifier que le démarrage s'arrête avant l'interface graphique.
Sensiblement ce résultat confirmera l'arrêt du serveur au bon runlevel. init 5 passera en runlevel 5 et redémarrera l'interface graphique.
b - Choix de l'interface graphique Inutile de s'encombrer désormais avec une interface graphique lourde, depuis l'interface graphique, lancer le frontend (logiciel qui facilite, sous forme graphique, l'emploi d'un autre logiciel souvent en ligne de commande) de gestion des paquets. Sélectionner et installer XFCE.
Administration Unix /Linux LoiselJP ©2010
page 13/40
Une fois XFCE installé, fermer la session puis la redémarrer sous ce nouvel environnement.
* Sélectionner alors Xfce4 Xfce n'est pas la seule interface graphique légère disponible sous Fedora. Fluxbox est également un bureau très léger. Cette fois il sera installé depuis un terminal. Pour cela: * Lancer un terminal ( * Passer en root (su), * Installer fluxbox:
),
yum install fluxbox
Rappel : RedHat est le créateur du système de paquet rpm. Fedora qui est la version gratuite de RedHat utilise les paquets RPM. Il n'est donc nul question d'utiliser apt-get install ou yast install pour installer un paquet. L'application installant les paquets sous RedHat est Yum d'où la commande yum install.
Administration Unix /Linux LoiselJP ©2010
page 14/40
* Depuis la console passer en init 4 puis init 5 afin de choisir le nouveau bureau (fluxbox): init 4
puis : init 5
* Sélectionner cette fois fluxbox:
Flux box est une simple interface permettant de lancer des applications fenêtrées. * Depuis le menu de fluxbox (click droit sur le bureau) il suffit alors de regénérer les menus, ce qui permettra ensuite le lancement d'applications.
Fluxbox propose l'une des interfaces les plus légères qui soient. Ce qui reste très largement suffisant dans le cadre d'un serveur.
Administration Unix /Linux LoiselJP ©2010
page 15/40
6 Administration de base a - Installation d'un script de sauvegarde automatique Parmi les principaux soucis de l'administrateur, la sauvegarde de fichiers est un réel souci. * Il est donc indispensable de disposer d'un script qui sera exécuté à intervalle régulier. Définir les données à sauvegarder: - Le dossier /home qui contient les données des utilisateurs, - Le dossier /root qui contient les données de l'administrateur, - Le fichier fstab pour les points de montage, - Les fichiers de log indispensable pour la partie administrative. Définir le logiciel de compression utilisé: - Zip, Gzip ou Tar - Vérifier l'installation du logiciel choisi "zip" - Au besoin l'installer (yum install tar) Créer le script qui permettra d'effectuer la sauvegarde: mkdir /sauvegardes vi /sauvegardes/script_sauvegardes Ajouter au fichier: (attention au choix de l'interpréteur de commande!) #!/bin/bash # supprime la sauvegarde la plus ancienne rm -f /sauvegardes/Sauv5.zip # déplace les anciens fichiers mv /sauvegardes/Sauv4.zip /sauvegardes/Sauv5.zip mv /sauvegardes/Sauv3.zip /sauvegardes/Sauv4.zip mv /sauvegardes/Sauv2.zip /sauvegardes/Sauv3.zip mv /sauvegardes/Sauv1.zip /sauvegardes/Sauv2.zip # compresse les fichiers voulus dans /sauvegardes/Sauv1 zip /sauvegardes/Sauv1.zip -r /home/ /root/ /var/log/ /etc/fstab /etc/inittab On comprendra vite à la lecture de ce script qu'il est facile de réaliser cette sauvegarde. D'autres méthodes sont possibles: en utilisant la date et supprimant les fichiers trop vieux.... Rendre ensuite le script exécutable "chmod +x /sauvegardes/script_sauvegardes", Administration Unix /Linux LoiselJP ©2010
page 16/40
Vérifier le fonctionnement du script en l'exécutant. Comment exécuter le script automatiquement? Ouvrir en édition le fichier /etc/crontab, Créer une ligne d'exécution du script, toutes les heures (on désire que la sauvegarde du serveur se fasse toutes heures à la 1/2 heure): Ajouter la ligne: 30 * * * * root /sauvegardes/script_sauvegardes On notera que dans l'exemple donné dans le fichier crontab..
La ligne "command" est au format "utilisateur commande_a_executer"
Dans le cadre de la production une sauvegarde sera réalisée chaque soir entre 23h et 3h. Suivant le travail continu ou non du Week-end avec prise en charge des jours de la semaine. - La sauvegarde pourra être doublée sur bande ou sur support amovible. Redémarrer cron avec la commande /etc/init.d/crond restart Vérifier le fonctionnement des sauvegardes...
b - Installation des outils administrateur b-1 Installation de Webmin L'outil d'administration par excellence reste Webmin, c'est l'un des outils qui sera donc installé en premier lieu:
Télécharger le Webmin, dans le dossier /tmp , - Fichier à télécharger: http://download.webmin.com/download/yum/webmin-1.510-1.noarch.rpm
Quelle commande taper pour télécharger un fichier depuis l'Internet en ligne de commande?
Administration Unix /Linux LoiselJP ©2010
page 17/40
Installer webmin, ( L'outil d'installation RedHat est "rpm"!) rpm -i webmin-1.510-1.noarch.rpm
Un message vous indique le bon déroulement de l'installation:
Il est parfois nécessaire de porter attention aux messages, suivant l'installation, on peut remarquer quelques différences notoires comme ci-dessous le protocole "http" au lieu de "https".
Vérifier alors le bon fonctionnement de Webmin:
Suivant la reconnaissance des DNS dans le réseau employé, il est parfois nécessaire d'employer l'adresse IP au lieu du nom d'hôte.
b-2 Installation de SSH Par défaut, Fedora propose ssh il ne suffit plus que de vérifier sa présence: Administration Unix /Linux LoiselJP ©2010
page 18/40
ssh --help Le fichier /etc/motd peut contenir un message d'accueil pour votre serveur (ce message est visible également lors d'une connexion en console...). Voici un petit exemple:
(A remplir suivant l'utilisation du poste) Ce qui donnera lors d'une connexion ssh:
Pour un message avant le login, il suffira décommenter dans le sshd_config la ligne correspondant à "banner". Ce qui peut donner:
Créer le message (vi /etc/ssh/message), Relancer le deamon ssh (/etc/init.d/sshd restart) Ce qui pourrait donner par exemple:
Administration Unix /Linux LoiselJP ©2010
page 19/40
b-2 Installation de Firestarter Iptables est le module de gestion des paquets réseau sous linux. Cependant Iptables est fortement redouté par les administrateurs aux vues de sa complexité d'emploi: man iptables
iptables -L
L'administrateur préfèrera utiliser un frontend évitant toute mauvaise manipulation (un pare-feu mal configuré ne sert à rien). yum install firestarter
Dès l'installation de Firestarter il est indispensable d'ouvrir les ports qui seront utilisés: SSH, messagerie, http, https, celui de Webmin....
b-3 Installation de Clamav Clamav est l'un des antivirus les plus populaires de Linux: Administration Unix /Linux LoiselJP ©2010
page 20/40
yum install clamav Clamav-server est la version serveur antivirus liée à cette version: yum install clamav-server Clamav-update permet la mise à jour automatique de l'antivirus: yum install clamav-update ClamTK permettra d'utiliser Clamav sous forme graphique: yum install clamtk Mettre à jour Clamav: - Sous forme graphique clamav peut être mis a jour simplement en cherchant les mises à jour. - Depuis la console, c'est "freshclam" qui s'en occupe. freshclam Lors de la première utilisation de freshclam il est nécessaire de le configurer. Le fichier freshclam.conf (/etc/freshclam.conf) propose un exemple de configuration. Il suffira donc de commenter l'exemple (ligne "example") pour utiliser cette configuration:
La commande "freshclam" met ensuite automatiquement l'antivirus à jour!
c - Installation d'un serveur Il existe de nombreux serveurs: Apache (http), PHP, Mysql, NFS, SAMBA, DNS, DHC, FTP, Sendmail,... suivant la destination du poste différents serveurs pourront être installés. Dans ce paragraphe les serveurs seront juste installés, un chapitre sera dédié à leur configuration.
c-1 Installation d'un serveur LAMP (Linux Apache Mysql Php) Sous Fedora le serveur apache s'installe par la commande : yum install httpd
Administration Unix /Linux LoiselJP ©2010
page 21/40
C'est le deamon httpd qui le lancera /etc/init.d/httpd start Le bon fonctionnement du serveur pourra être vérifié depuis un navigateur:
Le serveur PHP s'installera par la commande : yum install php Vérifier le bon fonctionnement du serveur php: Créer un fichier "index.php" dans le dossier /var/www/hmtl, y entrer le contenu sous cette forme:
Redémarrer le serveur http (/etc/init.d/httpd restart) L'ouverture de la page d'accueil donne alors les informations sur le serveur:
Administration Unix /Linux LoiselJP ©2010
page 22/40
Le serveur Mysql s'installera par la commande yum install mysql mais s'installé généralement avec son outils d'adminsitration phpmyadmin. La commande sera alors: yum install mysql phpmyadmin mysql-server La connexion à l'outil de gestion mysql (phpmyadmin) se fera alors au travers une authentication. La connexion demandera alors une configuration du serveur (suivant le type de distribution utilisée), cette étape sera abordée dans un prochain chapitre.
c-2 Installation d'un serveur FTP Un serveur Apache sans serveur FTP est certes courant, mais cela est parfois indispensable. Plusieurs serveurs sont disponibles. GFTP, VSFTP sont des serveurs FTP disponibles sous Fedora. GFTP s'installera avec la commande yum install gftp mais de nombreus administrateurs préféreront la versions très sécurisée de VSFTP (Very Securised File Transfert Protocol deamon). VSFTd s'installera avec la commande: yum install vsftpd Démarrer le serveur avec la commande /etc/init.d/vsftpd start La commande ps -x | grep vsftpd permettra de savoir si le serveur est démarré. On pourra également vérifier l'accès au serveur depuis un navigateur: à cette adresse ftp://localhost
c-3 Installation d'un serveur Proxy Dans le cadre de l'amélioration de la navigation, il peut être nécessaire d'installer un serveur proxy. Le serveur aura pour avantage de filtrer les URL mais également de mettre dans un cache les fichiers tout en évitant de les retélécharger. Squid est le plus connu et le plus performant de ces serveurs. Son installation se fait simplement par la commande : yum install squid Le serveur Squid ne pourra être démarré qu'après génération de son cache, et sa configuration.
c-4 Installation d'un serveur Samba / NFS Les serveurs Samba et NFS seront utilisés pour les serveurs de fichiers: Samba pour les partages Microsoft et NFS pour le système de fichiers Linux. NFS est installé par défaut sous Fedora pour vérifier: nfsstat Administration Unix /Linux LoiselJP ©2010
page 23/40
NFS retournera les paquets transmis au travers du réseau. Quand à Samba, quelle commande installe le serveur (en toute logique): (installer le serveur) Samba sera également employé dans la création de contrôleur de domaine Windows. LDAP (annuaire OpenLdap). A cette étape de l'installation OpenLdap est installé dans Fedora. La commande ps -x | grep smb permettra de savoir si le serveur est démarré. Au besoin le démarrer avec la commande: Revérifier son démarrage.
Administration Unix /Linux LoiselJP ©2010
page 24/40
7 Configuration du pare-feu Face à la complexité d'emploi de nombreuses sociétés font appel à des pares feu matériel plutôt que rencontrer cette difficulté. L'aide d'iptables confirme la difficulté à configurer le pare-feu. man iptables Bien qu'une fois comprise, il est facile d'ajouter "iptables -A FORWARD " ou supprimer une règle "iptables -D FORWARD " pour un protocole donné "iptables -A FORWARD -p udp" les paquets d'une adresse ou d'un masque "iptables -A FORWARD -p udp -s 192.168.0.0/16"....
Pour commodité de l'emploi d'Ipatables Firestarter a été installé à l'étape précédente. Des règles d’entrée sortie y ont été ajoutées (cf:paragraphe 5-b-2 pages 25/26 ) ce qui évite cette difficulté de configuration.
Par Init 6 redémarrer le serveur. La configuration du serveur arrête l'initialisation en runlevel 4. Ouvrir la session, depuis cette session vérifier la configuration du pare feu: iptables -L Le résultat indique le pare feu n'est pas configuré. Le stratégie Entrée (INPUT), Sortie (OUTPUT), Entrée/Sortie (redirection FORWARD) tout est accepté. Comment forcer la configuration de firestarter à ce runlevel? la commande "/etc/init.d/firestarter start" démarre le pare-feu La création d'un script de démarrage règlera la problème vi /etc/init.d/start_pare- feu Ajouter les lignes suivantes #!bin/bash /etc/init.d/firestarter start Rendre le script exécutable chmod +x /etc/init.d/start_pare- feu Créer un lien symbolique vers rc4.d ln -s /etc/init.d/start_pare- feu /etc/rc4.d/S99start_pare-feu Cette solution était plus rapide.... ln -s /etc/init.d/firestarter /etc/rc4.d/S99firestarter (Sans oublier de supprimer le script d'arret de firestarter K*firestarter) Administration Unix /Linux LoiselJP ©2010
page 25/40
Redémarrer le serveur init 6 Vérifier en runlevel 4 si le pare feu est configuré iptables -L Les moyens, les solutions disponibles sont très diverses. Les Geeks préfèreront une méthode entièrement "à la main", dans le cadre de l'administration de serveur, le résultat obtenu reste primordial.
8 Utilisation de LVM La distribution Fedora propose par défaut une installation avec LVM (Logical Volume Manager) un gestionnaire de volume logique. Grace à LVM il est alors possible de renommer des volumes, modifier/créer et redimentionner des partitions sans redémarrage du poste. Ce qui apportera un très large intérêt notamment dans la télémaintenance. Lancer LVM: lvm L'invite de commande de Lvm se présente alors de la sorte: > Obtenir de l'aide: help Informations sur les volumes physique (PV): pvscan Informations sur les volumes logiques: lvscan Informations sur les Groupes de volumes logiques: gvscan Affichage des informations du volume logique principal (à adapter suivant le nom sur le serveur): lvdisplay /dev/vg_loiseljp/lv_root Depuis une version de secours (SystemRecueCD par exemple), il sera possible de "monter" (commande "mount") la partition ainsi affichée par exemple: mount /dev/vg_loiseljp/lv_root /mnt ce qui permettra la récupération de données... LVM avec la commande "lvresize" permet de redimentionner une partition. Le redimentionnement est possible "A chaud" (sur une partition montée), pour agrandir cette partition uniquement ce qui reste le cas le plus courant. Des commandes de réduction de taille sont disponibles "lvresize", "lvreduce", mais le résultat reste encore trop aléatoire.
Administration Unix /Linux LoiselJP ©2010
page 26/40
a - Pourquoi utiliser LVM ? Si LVM ne peut redimentionner une partition qu'en l'agrandissant, il présente aussi l'avantage de pouvoir chaîner les disques entre eux! C'est là que LVM devient intéressant: sur la plupart des serveurs il est possible de plugger un disque à chaud! ensuite avec LVM, la partition est agrandie sans démontage et sans arrêt du serveur!
9 Configuration des serveurs (Apache, PHP, Mysql, Webmin, FTP, Squid) Suivant les installations, distributions, les serveurs pourront être démarrés automatiquement ou non. Rappel: Pour démarrer un service, il suffit alors de repérer le script du service considéré puis de le lier dans les différents dossiers de runlevel (rc3.d, rc4.d ou rc5.d. rc4.d si inittab est placé a ce niveau). La création d'un lien de démarrage règlera le problème: ln -s /etc/init.d/httpd /etc/rc4.d/S99httpd
Ne pas oublier la suppression de l'arrêt serveur s'il existe (ici "/etc/rc4.d/K15httpd" "/etc/rc5.d/K15httpd").
et
Passer en mode graphique pour vérifier le fonctionnement du serveur http: init 5
Sans quitter le mode graphique revenir sur la console précédente: taper les touches: CTRL+ALT+F1
Avec la combinaison de touche CTRL+ALT+F1 2 3 4 5 6 7, on constate que 7 utilisateurs peuvent être gérés ou utilisé simultanément (6 utilisateurs en console tty1 à 6 et 1 en mode graphique).
a - Configuration du serveur Apache (http) Sur Fedora, le serveur apache est lancé depuis le demon httpd, le fichier de configuration est httpd.conf Trouver le fichier httpd.conf (avec la commande find)
Visualiser le fichier httpd.conf vi ......(voir ligne_au _dessus_pour_le_chemin)...httpd.conf
Il est très commenté il est alors facile de le modifier....
Administration Unix /Linux LoiselJP ©2010
page 27/40
Modifier le chemin du serveur par défaut: - Repérer la ligne correspondante "documentroot...." - Passer dans une autre console (CTRL+ALT+F2), déplacer le chemin actuel du serveur vers sa nouvelle destination: /home/www mv /var/www/html /home/www
- Vérifier la bascule des fichiers: ls /var/www ls /home/www
- Modifier le paramètre "documentroot...." de httpd.conf en "documentroot = "/home/www"
- Redémarrer le serveur http /etc/init.d/httpd restart
- Rebasculer dans tty7 (interface graphique - avec les touches CTRL+ALT+F7) - Eventuellement effectuer une petite modification du fichier "/home/www/index.php" puis vérifier le bon fonctionnement du serveur.
Administration Unix /Linux LoiselJP ©2010
page 28/40
b - Configuration du serveur PHP Le serveur php, ne présente pas une grosse configuration: Trouver le fichier php.conf (avec la commande find) Visualiser le fichier php.conf On y notera la possibilité de modifier le fichier d'index.
c - Configuration du serveur FTP ( Précédemment VSFTP a été installé, vérifier le fonctionnement du serveur (processus vsftpd):
( Au besoin créer un script de démarrage automatique.... (C.F. début de chapitre 8 )
( Ouvrir le fichier de configuration (vsftpd.conf) ( On notera que le fichier de configuration par défaut est un exemple de configuration, mais reste correct pour une configuration de base. ( Modifier le message d'accueil du serveur (paramètre ftpd_banner) ( Afin de pouvoir tester le serveur localement, laisser les utilisateurs locaux se connecter (paramètre à changer), Administration Unix /Linux LoiselJP ©2010
page 29/40
( Redémarrer le serveur pour prendre en compte les changements.
( Vérifier si le logiciel "gftp" est installé, puis depuis l'interface graphique, exécuter le programme et se connecter sur le serveur ftp. - Vérifier le message d'accueil du serveur. - Vérifier la connexion au serveur.
( Lors de la connexion FTP, on remarquera la possibilité à l'utilisateur de naviguer dans les différents dossiers. Le paramètre "chroot" permettra d'enfermer l'utilisateur dans son dossier personnel.
( Désactiver les utilisateurs locaux sur les connections locales (paramètre à changer), ( Redémarrer le serveur pour prendre en compte les changements, ( Vérifier le refus de connexion.
d - Configuration du serveur Webmin Webmin sera accessible suivant le cas en http://lacalhost:10000, https://lacalhost:10000, http://adresse_ip:10000 .... dans le cas de Fedora (rpm), le protocole utilisé sera en fonction de l'installation. Se connecter sur Webmin en utilisant le compte root avec son mot de passe. Modifier la langue par défaut.
Mettre à jour de Webmin - Cliquer sur "Webmin" sur la frame de gauche, puis sur "Configuration de Webmin" et enfin sur "Mise à niveau de Webmin" - Dans l'onglet Update modules mettre à jour la totalité des modules (y compris les modules complémentaires). Administration Unix /Linux LoiselJP ©2010
page 30/40
Webmin étant un outil de base de l'administration Linux. Il est supposé qu'un minimum de manipulation sur ce serveur a déjà été effectué (lancement de commande, manipulation d'utilisateur, visite des menus...).
e - Configuration du serveur M ysql L'administration d'un serveur Mysql est un emploi à part entière. Seuls quelques paramètres seront abordés ici. - Repérer le fichier de configuration du serveur "my.cnf" (il porte parfois le nom my.ini, mysql.ini, mysql.conf... suivant les distributions). - Afin de faciliter la configuration du serveur quelques fichier exemples sont proposés (chercher les fichiers "my-*.cnf") Placer my-medium.cnf comme fichier de configuration (copier "my-mediulm.cnf" vers le fichier de configuration my.cnf"). Quelques options intéressantes à modifier: language = /usr/share/mysql/french
Choisir la langue par défaut pour les messages du serveur (français) key_buffer = 32M
Taille du cache des index query_cache_limit = 2M
Taille limite du cache par requête query_cache_size = 32M
Taille totale du cache des requêtes #log_bin = /var/log/mysql/mysql-bin.log #expire_logs_days = 10
Désactiver le log binaire en commentant ces deux lignes grâce à # (le log binaire n'est utile que dans le cas de réplications avec serveurs maître-esclave) log_slow_queries = /var/log/mysql/mysql-slow.log
Mettre en log les requêtes lentes (utile pour les repérer et les optimiser) long_query_time = 2
Durée (en secondes) à partir de laquelle une requête est considérée comme lente [mysqld] default-character-set = utf8
Jeu de caractères par défaut pour le serveur Administration Unix /Linux LoiselJP ©2010
page 31/40
default-collation = utf8_general_ci
Collation du jeu de caractères [client] default-character-set = utf8
Jeu de caractères par défaut pour le client Ne pas oublier de redémarrer le serveur... Un script pour débutants: Il n'est pas très aisé de configurer le serveur Mysql pour un débutant, il existe un script qui permettra de proposer des recommandations en fonction du système: mysqltuner Télécharger le script wget http://mysqltuner.com/mysqltuner.pl
Puis: chmod +x mysqltuner.pl
Exécuter le script ./mysqltuner.pl
Sécurisation du serveur: Il est facile de mettre en place quelques règles simples pour sécuriser le serveur, grâce au script : mysql_secure_installation (exécuter le script) Ne pas oublier de redémarrer le serveur....
f - Configuration du serveur Squid La lecture du fichier de configuration (squid.conf), va apparaître dans un premier temps très complexe (le fichier fait plusieurs centaines de lignes). Très vite il sera compris qu'il est très largement commenté et le rend très simple à configurer. ( Repérer et visualiser le fichier de configuration. ( Facile à configurer des exemples de squid.conf peuvent être trouvé sans difficultés. Arrêter le serveur squid /etc/init.d/squid start Après confguration, activer le répertoire de swap de Squid par : /usr/sbin/squid -z
Relancer le serveur squid /etc/init.d/squid start
Tester le bon fonctionnement par : /usr/sbin/squid Administration Unix /Linux LoiselJP ©2010
page 32/40
Suivant le serveur de dns, il est possible de squid ne trouve pas le host_name du poste, (message "please set 'visible_hostname'"). Il suffit alors de d'ajouter cette ligne au squid.conf visible_hostname nom_machine
g - Configuration des serveurs Les paramètres de configuration des serveurs sont très nombreux seuls quelques paramètres sont abordés ici, chaque serveur peut nécessiter une formation complète à part entière.
10 Installation des outils de surveillance Installation / utilisation des outils de log et de surveillance (log-rotate, Squid report, Squidguard,...). Différents outils de surveillance sont proposés sur Linux, le premier "log_rotate", permet la "rotation" (archivage) de fichiers de log en les compressant puis les renommant. - Log-rotate est installé sur Fedora. - L'édition du fichier logrotate.conf permet de placer la rotation des log. Placer la rotation des logs journalièrement:
Squid-report permet la surveillance du proxy squid Sarg, est l'un des Squid report les plus utilisés. wget http://dag.wieers.com/rpm/packages/sarg/sarg-2.2.1-1.el4.rf.i386.rpm
Installer Sarg... (on utilise l'outil "rpm") Sarg s'installe là ou se trouve par défaut les fichiers du serveur http. Dans "/var/www" Il sera peut-être nécessaire de le déplacer au bon endroit afin de pouvoir consulter les statistiques d'utilisation du serveur Squid....
Administration Unix /Linux LoiselJP ©2010
page 33/40
Sarg génèrera un rapport lorsque Squid sera utilisé. Dans le cas du serveur présent, Sarg ne retourne aucun rapport! Exécution de sarg depuis Crontab Afin que sarg génère un rapport chaque jour sur l'utilisation de Squid il est nécessaire qu'il soit exécuté. Il suffit alors de rajouter la tâche dans le fichier "/etc/crontab". 2 Solutions sont possibles: Ajouter l'exécution du script sarg tous les soirs (pour exécuter tous les scripts du dossier "/etc/cron.daily"): run-parts --report /etc/cron.daily
Ou celle-ci /etc/cron.daily/sarg
Ce qui donne cette ligne (pour une sauvegarde à 23h par exemple): 00 23 * * * root /etc/cron.daily/sarg
Squidguard permet le filtrage des données passant par le proxy squid SquidGuard demande beaucoup de temps pour une configuration correcte, dans ce chapitre seul le principe est abordé. Si le temps accordé le permet, il est alors possible de configurer une rubrique bloquée afin qu'elle soit testée. Installer squiGuard yum install squidGuard
Afin de savoir quels sites filtrer il est alors nécessaire de télécharger une "blacklist" des sites (dans tmp par exemple): Administration Unix /Linux LoiselJP ©2010
page 34/40
wget ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz
Décompresser ensuite le fichier téléchargé: tar xzvf blacklists.tar.gz -C /var/lib/squidguard/db/
(au besoin créer les dossiers nécessaires) A partir de la liste des fichiers à bloquer (fichiers décompressés), configurer squidguard vi /etc/squid/squidGuard.conf
Le fichier squidGuard.conf pourra alors avoir cette forme: ##### /etc/squid/squidGuard.conf par Loisel JP ##### dbhome /var/lib/squidguard/db/blacklists logdir /var/log/squid # # s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat time travail { weekly mtwhf 07:00-12:00 13:00-17:30 } # source LAN_SQUID { ip
192.168.0.0/16
} # dest Predefini { urllist
perso/urls
domainlist
perso/domains
} # dest Adultes { urllist
adult/urls
domainlist
adult/domains
expressionlist adult/very_restrictive_expression } # dest Audio-video { urllist
audio-video/urls
domainlist
audio-video/domains
}
Cette première partie contient les différentes rubriques qui seront bloquées. La rubrique suivante (du même fichier) contient sous quelles conditions elles seront bloquées: Pendant les heures de travail: les sites pour adulte, les sites perso et vidéo seront bloqués. En dehors des heures de travail seuls les sites pour adultes sont bloqués. Par défaut tout est bloqué.
Administration Unix /Linux LoiselJP ©2010
page 35/40
acl { LAN_SQUID within travail { pass !Predefini !Adultes !Audio-video ################## redirection suivant le choix #################### # redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u redirect http://127.0.0.1/squid/rapport.php?clientaddr=%a&clientname=%n&clientident=%i&srcclass=%s&targetclass=%t&url=%u } # LAN_SQUID outside travail { pass !Adultes ################## redirection suivant le choix #################### # redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u redirect http://127.0.0.1/squid/rapport.php?clientaddr=%a&clientname=%n&clientident=%i&srcclass=%s&targetclass=%t&url=%u } # default { # redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u ################## redirection suivant le choix #################### # redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u redirect http://127.0.0.1/squid/rapport.php?clientaddr=%a&clientname=%n&clientident=%i&srcclass=% s&targetclass=%t&url=%u pass none } } #### END /etc/squid/squidGuard.conf ####
On remarquera dans l'exemple ci-dessus (fonctionnel) une rubrique "Predefini" avec un dossier "perso". Qui pourra contenir une liste de d'URLs et pages qui peuvent être définie par l'administrateur lui même. Il est possible de vérifier la bonne configuration de squidguard en testant la connexion à une URL autorisée ou non: echo "http://www.jeux.fr 10.0.0.1/ - - GET" | squidGuard -c /etc/squid/squidGuard.conf -d Configurer squid afin qu'il prenne en compte squidguard: ajouter /etc/squid/squid.conf redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
cette
ligne
au
fichier
Redémarrer le serveur Squid afin que les modifications soient prises en compte.
11 Ajout d'utilisateurs et gestion des droits Mysql Tous comme sur les produits Microsoft, il est possible de se connecter au serveur Mysql avec la commande "mysql". Mais il est cependant plus pratique d'utiliser l'outil installé à cette effet dans les chapitres précédents: PhpMyAdin. L'ajout, la gestion d'utilisateur depuis PhpMyAdmin ne demande aucune connaissance particulière mais nécessite d'être effectuée au minimum une fois. Il sera peut-être nécessaire de veiller à ce que le serveur Mysql soit démarré! Dans la plupart des distributions, mysql utilise le mot de passe root par défaut. - Il se peut que l'on ne puisse pas se connecter car le mot de passe root n'est pas initialisé dans mysql: Initialiser le mot de passe root dans mysql (exécuter mysql avec accès sur la base mysql) Administration Unix /Linux LoiselJP ©2010
page 36/40
mysql mysql
Dans l'invité de commande mysql (mysql>) modifier le mot de passe root (dans l'exemple cidessous le mot de passe est "azerty"): UPDATE user SET Host="localhost";
password=PASSWORD('azerty')
WHERE
User="root"
AND
Quitter l'interface mysql: quit
Redémarrer le serveur mysql: /etc/init.d/mysqld restart
D'autres méthodes sont utilisables pour modifier le mot de passe ("mysqladmin -u root password ...), Réinitialiser un mot de passe root perdu: arrêter le serveur puis "mysqld_safe --skip-grant-tables &". Se connecter à PhpMyadmin: - Depuis le navigateur, se rendre sur le serveur htttp, puis dans le sous dossier PhpMyAdmin: http://localhost/phpmyadmin - Se connecter sur le compte Root avec son mot de passe (ou le mot de passe prédéfini dans les lignes précédentes), - Visiter les bases présentes. Elles correspondent à la gestion du serveur.
La base de données "mysql" contient la structure du logiciel,
Administration Unix /Linux LoiselJP ©2010
page 37/40
La fenêtre principale permettra de gérer la base, les utilisateurs et leurs privilèges. Depuis le lien "privilèges" créer un nouvel utilisateur (commercer par le nom de l'administrateur....), sur tout le serveur, Créer une base de donnée au nom du nouvel utilisateur (bouton radio ou case à cocher), Donner tous les droits sur cette base, - On remarque la possibilité de fixer des limites d'utilisation (indispensable sur les serveur Web à location d'espace, - On remarquera aussi la possibilité d'interdire la création de nouvelle base.... Quitter PHP myadmin (se déconnecter), Se connecter sur le compte du nouvel utilisateur, vérifier ses droits.... Depuis le lien "privilèges" créer un nouvel utilisateur ("utilisateur"....), sur tout le serveur, avec aucun privilège global, Quitter PHP myadmin (se déconnecter), puis se connecter sur le compte du nouvel utilisateur, vérifier ses droits.... Suivant les droits attribué au nouvel utilisateur, il pourra utiliser tout ou partie du serveur. La structure de son code php de connexion pourra sensiblement ressembler à ceci: Vérifiez les paramètres de connexion dans mysql.php.
"); ?>
Administration Unix /Linux LoiselJP ©2010
page 38/40
12 Conclusion Malgré les nombreuses informations contenues dans ce document on peut remarquer que le sujet est à peine abordé. SquidGuard, le serveur FTP, Apache, PHP, Mysql pourraient nécessiter chacun une formation particulière. Et après eux d'autres points pourront encore être abordés. Il l'a déjà été abordé: la formation principale de l'administrateur Linux est basé sur la lecture des manuels et la consultation de l'Internet. N'hésitez pas à utiliser ces moyens pour compléter vos connaissances. Il est certains que Linux à un bon avenir dans le mode Informatique. A chacun de saisir cette chance d'en devenir l'expert.
___________________________ _______________________
# init 0
Administration Unix /Linux LoiselJP ©2010
page 39/40
©Propriété Installation d'un serveur GNU/Linux Jean Paul Loisel 56 Rue Philippe de Girard 59160 Lomme
[email protected] 07 70 32 35 67
Licence Ce document est distribué en "Public Documentation License". The contents of this Documentation are subject to the Public Documentation License . You may only use this Documentation if you comply with the terms of this License. A copy of the License is available at this mail
[email protected]. The Original Documentation is "TP: Installation d'un serveur GNU/Linu x". The Initial Writer of the Original Documentation is Jean Paul LOISEL © 2014. All Rights Reserved.
Contributor(s): ______________________________________. Portions created by ______ are Copyright ©_________[Insert year(s)]. All Rights Reserved. (Contributor contact(s):________________[Insert hyperlink/alias]).
The text of this chapter may differ slightly from the text of the notices in the files of the Original Documentation. You should use the text of this chapter rather than the text found in the Original Documentation for Your Modifications.
Administration Unix /Linux LoiselJP ©2010
page 40/40