Finissons-en avec notre dossier en 4 partie sur l'installation et la configuration d'un Ubuntu Server ! Ceci est la dernière partie, au cours de laquelle vous allez apprendre à mettre en place un serveur de fichiers FTP, et où je vais vous donner quelques astuces et conseils supplémentaires. Si vous n'avez pas encore lu les épisodes précédents, jetez un coup d'œil au #1, #2 et #3 !
Après avoir installé et configuré notre serveur FTP, nous verrons des choses plus succinctes qui pourraient vous sauver la vie dans certaines situations, donc portez-y attention !
1. Déploiement du serveur FTP
Avoir un FTPd est parfois très utile (même avec SSH), pour certains scripts PHP tels que WordPress qui demandent un accès aux fichiers via FTP (installation d'extensions, mises à jour) pour certaines configurations. Aussi, si vous proposez un hébergement des sites web de personnes externes, vous n'aurez qu'à créer un utilisateur FTP virtuel et hop !
Bon, fini de parler, voyons comment installer PureFTPd, un serveur FTP relativement simple à mettre en place :
sudo apt-get install pure-ftpd
Ceci fait, il nous faut, comme d'habitude, ouvrir certains ports. Ouvrez le port 21 (port pour le mode actif), et les ports 3000 à 3005 (ports pour le mode passif). Puis, définissons les ports utilisés par le mode passif :
sudo nano /etc/pure-ftpd/conf/PassivePortRange
Dans le fichier ouvert, entrez : 3000 3005 puis enregistrez et fermez-le.
Ensuite, entrez cette commande :
sudo nano /etc/pure-ftpd/conf/ChrootEveryone
Dans ce fichier, tapez : yes et enregistrez-le avant de le fermer.
Enfin, pour ajouter un utilisateur, vous n'aurez plus qu'à utiliser la commande suivante :
sudo pure-pw useradd ftp-user -u unix-user -g unix-group -d /home/unix-user/web/web-dir
Dans cette commande, prenez soin de modifier les éléments soulignés avec :
- ftp-user : l'utilisateur FTP ;
- unix-user : l'utilisateur UNIX qui a les droits sur les fichiers à accéder via le FTP ;
- unix-group : normalement la même chose que l'unix-user ;
- /home/unix-user/web/web-dir : le chemin absolu vers le dossier à monter via le FTP
Puis, lorsque vous presserez la touche Entrée, le mot de passe de l'utilisateur à créer sera demandé. Une fois l'opération achevée, nous allons reconstruire la base de donnée d'utilisateurs PureFTPd avec la commande :
sudo pure-pw mkdb
Notez qu'à chaque ajout d'utilisateur vous devrez effectuer ceci !
Et enfin, redémarrons le serveur FTP étant donné de nos modifications de configuration du début :
sudo /etc/init.d/pure-ftpd restart
Hopla, et voilà ! Maintenant, testez votre serveur FTP avec l'aide d'un logiciel comme FileZilla, normalement vous serez bel et bien connecté à votre répertoire partagé ! Pour plus d'informations sur la configuration de PureFTPd, visualisez cette page.
2. Choses diverses
Bon, je vais vous le dire franchement, c'est avec le temps que l'expérience viendra, et surtout la facilité à manier la ligne de commande. À force de répéter les mêmes actions, cela en devient un automatisme.
Il existe des centaines de commandes que nous n'avons pas vu (en fait, je ne sais même pas si nous avons vu 1% des commandes). C'est pour cela que je vous ai concocté une liste des commandes les plus utiles :
- ls : lister les fichiers d'un répertoire (ls -a pour voir les cachés) ;
- cd : se déplacer dans un dossier ;
- rm : supprimer un fichier (rm -R pour un dossier) ;
- touch : créer un nouveau fichier ;
- mkdir : créer un nouveau dossier ;
- cp : copier un fichier ;
- history : afficher les 500 dernière commandes exécutées ;
- chmod : modifier les permissions sur un fichier/dossier ;
- zip/unzip : compresser/décompresser un ZIP ;
- tar -zcvf/tar -zxvf : compresser/décompresser un Tarball GZ ;
- find : rechercher un élément dans le système de fichiers ;
- ps aux : afficher tous les processus en cours d'exécution ;
- free : afficher la mémoire vive libre ;
- ping : pinger une machine sur le réseau (local ou Internet) ;
- traceroute : tracer le chemin réseau vers une machine distante ;
- ifconfig : obtenir les connexions réseau actives avec les IP ;
- ssh : se connecter à une machine distante en SSH ;
- wget : obtenir un fichier en HTTP ;
- nano : éditer un fichier texte ;
- whoami : afficher l'utilisateur connecté ;
- reboot : redémarrer la machine ;
- shutdown : arrêter la machine
Et n'oubliez pas : sous Ubuntu, un sudo avant une commande lui donne les droits d'administrateur (ne l'utilisez qu'en cas de besoin, elle peut être dangereuse cette petite commande !).
3. Quelques conseils
Avec mon expérience de 2 ans sur des serveurs Unix (petite pour certains), j'ai quelques conseils à vous donner pour éviter les problèmes ou tout simplement vous simplifier la vie !
Premier conseil : quand vous souhaitez répéter une commande exécutée il n'y a pas longtemps, appuyez sur la flèche du haut pour faire défiler les dernières commandes utilisées et ainsi les répéter. Pratique non ?
Deuxième conseil : créez des alias pour les grosses commandes que vous utilisez le plus ! Pour en définir, ouvrez le fichier .bashrc (nano .bashrc) et ajoutez simplement une ligne de ce style :
alias nouvelalias='ancienne commande ici'
Et hop, déconnectez-vous, puis reconnectez-vous et vous n'aurez plus qu'à entrer nouvelalias (votre alias) à la place de votre ancienne commande.
Troisième conseil : faites très attention aux permissions appliquées aux dossiers et fichiers ! Un bon 644 par défaut me semble convenable, et 777 pour les éléments nécessitant les droits d'écriture pour un serveur web.
Quatrième conseil : n'utilisez que des mots de passe forts pour les comptes d'administration ! Se faire hacker via SSH peut arriver plus vite que l'on ne pense...
Cinquième conseil : n'ouvrez jamais tous les ports sur votre routeur (je pense tout particulièrement à la zone DMZ de la Livebox), c'est très très dangereux !
Sixième conseil : faites des backups (copies de sauvegarde) réguliers, vous n'êtes jamais à l'abri d'une défaillance matérielle. Quand ça arrivera, vous n'aurez que vos yeux pour pleurer...
4. Pour aller plus loin
Pour pouvoir faire encore plus avec votre serveur, je vous recommande de visiter la page de la documentation Ubuntu-fr dédiée aux machines de type serveur, ainsi que cet excellent site dédié à l'auto-hébergement.
Aussi, si vous souhaitez vous faciliter la vie pour les tâches d'administrations, vous pouvez installer Webmin, qui vous permet d'administrer via une interface web la totalité de votre système (mises à jour, apache, etc...). Personnellement, je préfère la ligne de commande car plus rapide quand on a l'habitude (si si !). Faites donc votre choix ! Si vous souhaitez sécuriser à fond votre installation, lisez sur la sécurité réseau.
Enfin ! Nous en avons fini avec cette série de billets ! Maintenant, vous devriez avoir un serveur prêt pour toutes les épreuves qui l'attendent. J'espère aussi que ceci vous a appris des choses, et vous permettra de continuer à vous ouvrir sur Linux et le Logiciel Libre, pour peut-être vous diriger vers d'autres OS : FreeBSD ou Solaris...
C'est maintenant à nous tous de résister pour que l'Internet ne se transforme pas en Minitel 2.0 ! Faites tourner ces billets (ramenez du monde sur mon weblog) afin de propager la bonne parole !
1 mars 2010 à 17:19
Bonjour,
Le 777 pour les fichiers web me paraît un peu violent. Par contre, un 700 ou un 770 avec les bons uid et gid serait un peu plus secure (=
Blaque.
1 mars 2010 à 17:41
Bonjour.
Un petite remarque. Pour prendre en compte les changements du fichier ~/.bashrc (ajout d'alias par exemple), unutile de se déconnecter/reconnecter, il suffit de "relire" le fichier à l'aide de la commande ". ~/.bashrc" raccourci pour "source ~/.bashrc".
1 mars 2010 à 18:41
petit detail, j'ai plus l'habitude de tar -cvzf et tar -xvzf : le x et c concerne l'action de compression/decompression, donc je le mets en prems ...
1 mars 2010 à 19:15
Pour des idée d'alias, des trucs chopés à gauche et à droite :
alias apache2="/etc/init.d/apache2"
alias ..="cd .."
alias load_bashrc=". ~/.bashrc"
alias edit_bashrc="sudo nano ~/.bashrc"
function ii() # Get current host related info.
{
echo -e "\nYou are logged on ${RED}$HOST"
echo -e "\nAdditionnal information:$NC " ; uname -a
echo -e "\n${RED}Users logged on:$NC " ; w -h
echo -e "\n${RED}Current date :$NC " ; date
echo -e "\n${RED}Machine stats :$NC " ; uptime
echo -e "\n${RED}Memory stats :$NC " ; free
my_ip 2>&- ;
echo -e "\n${RED}Local IP Address :$NC" ; echo ${MY_IP:-"Not connected"}
echo -e "\n${RED}ISP Address :$NC" ; echo ${MY_ISP:-"Not connected"}
echo -e "\n${RED}Open connections :$NC "; netstat -pan --inet;
echo
}
if [ -x /usr/games/fortune ]; then
/usr/games/fortune -s # Makes our day a bit more fun....
fi
function _exit() # Function to run upon exit of shell.
{
echo -e "${RED}Hasta la vista, baby${NC}"
}
trap _exit EXIT
#fonction qui extrait tout !
function extract() # Handy Extract Program.
{
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xvjf $1 ;;
*.tar.gz) tar xvzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xvf $1 ;;
*.tbz2) tar xvjf $1 ;;
*.tgz) tar xvzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo "'$1' cannot be extracted via >extract<" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
1 mars 2010 à 21:17
moi j'aime pas pure-ftp
je lui préfère vsftpd
Le shtroumph grognon
et sinon oui, nivo sécu faut revoir ta copie, ca craint là...
1 mars 2010 à 22:49
Vous dites : "Quatrième conseil : n'utilisez que des mots de passe forts pour les comptes d'administration ! Se faire hacker via SSH peut arriver plus vite que l'on ne pense..."
Le plus simple et le plus fiable est de se passer de mot de passe et d'utiliser une clé RSA ou DSA à fort chiffrage.
Le mot de passe c'est has-been !
3 mars 2010 à 09:11
Belle série d'articles, à la fois simple et concis
Je n'ajouterais qu'une petite remarque pour les alias.
Plutôt que de manipuler en permanence le fichier .bashrc qui est assez sensible voilà un conseil :
- Ouvrir le fichier .bashrc (ex: gedit .bashrc &)
- Cherchez le bloc : (ligne 73)
#if [ -f ~/.bash_aliases ]; then
# . ~/.bash_aliases
#fi
- "Decommentez" le en enlevant les #
- Enregistrez et quittez.
Ensuite à la racine de votre home (/home/votrenom) créez le fichier .bash_aliases (touch .bash_aliases) et mettez tous vos alias dedans!
Voilou.
3 mars 2010 à 14:09
Yopla tout le monde, merci pour vos commentaires, vos lectures et vos compliments !
Je suis désolé, j'ai été un peu pris au début de la semaine, je n'ai pas pu répondre à temps (en fait, le billet était programmé pour publication automatique dans mon WordPress), je vais essayer de vous répondre :
: j'ai toujours utilisé le 777 pour les fichiers "publics" on va dire, qui nécessitent les droits d'écriture. Bon, après il y a ceux d'exécution c'est vrai que c'est un peu violent, mais pour le moment, jamais eu de soucis de sécurité !
-mai : tiens je savais pas, tu m'apprends quelque-chose ! Parce-que sur mon laptop, il suffisait de fermer la fenêtre du terminal et la réouvrir, je n'ai donc pas cherché plus loin meilleure solution !
@jpp : histoire d'habitude, une fois lancée les commande que j'ai mis te pondent la même chose que avec celle que tu as proposé.
: intéressant, merci pour le code. Et heu... c'est quoi le jeu "fortune" ? Un truc de geek ?
: niveau sécurité ? Tu parles du FTP ? J'ai mis de mettre "yes" dans le ChrootEveryone, ça suffit pour moi ça...
: ouais, les mots de passe c'est un peu dépassé. Sauf que ça sert à déverrouiller sa clé privée GPG, donc c'est encore utile ! Et puis, niveau sécurité, c'est un peu pareil un gros mot de passe illisible et une clé GPG, mais au niveau rapidité je préfère GPG personnellement.
: c'est une possibilité, oui. Après si on fait gaffe à pas toucher à tout et n'importe quoi dans le fichier, ça passe avec la méthode "classique" !
6 mars 2010 à 19:56
Petite question sur PureFTP : comment autoriser l'accès anonyme ?
6 mars 2010 à 20:26
: essaie de regarder par là : http://zero202.free.fr/cs68-ftp/html/ar01s02.html dans "2.2.3. [TP] Activation du support des connexions anonymes".