#1 Le 29/08/2007, à 22:48
- winael
Script d'installation et config. rapide d'un serveur FTP sécurisé
Bonjour à tous
Je vous propose un petit script pour automatisé l'installation et la configuration d'un serveur FTP, assez sécurisé. Ce script ce base sur le How-to Proftpd de kiendilian disponible ici (Merci à lui pour ses tutos et ses cours)
Attention cependant : Ceci est mon premier script (ya ptete des erreurs), et ne maitrisant pas encore la commande "sed" certaines informations de configuration (comme la redirection du port d'écoute) doivent encore se voir modifiée à la mano.
Pour les même raison je n'ai pas non plus encore intégré le cryptage TLS (certificat de type x509), mais ca devrait pas tarder.
Merci à tous pour vos remarques
#!/bin/bash
# Script Install Proftpd v1.0
#Le protocole FTP est l'un des protocoles les plus connus avec HTTP(s), il permet à plusieurs personnes de partager des fichiers. ProFTPD est l'un des serveurs FTP les plus connus sous Unix, il possède plusieurs fonctions avancées, comme les ratios ou les virtuals hosts. Si vous souhaitez en savoir plus je vous conseille de vous rendre à http://www.proftp.org
#1. Installation :
#On met à jour la liste des paquets
aptitude update
#Puis on installe proftpd
aptitude install proftpd
#2. Configuration :
#2.1 L'utilisateur nobody :
#Par défaut le daemon proftpd se lance avec les privilèges de root et cela pose évidemment des problèmes de sécurité. C'est pourquoi il est conseiller d'utiliser un utilisateur sans droits particuliers. Le plus indiqué étant nobody du groupe nobody. Il existe probablement déjà, mais il est conseiller de le recréer plus sécurisé. Pour des soucis de sécurité on utilisera ici le shell /bin/false à la place du shell par défaut, car /bin/false ne permet pas d'ouvrir un shell.
userdel nobody
useradd -d / -g nobody -s /bin/false nobody
#on renseigne le système qu'on utilise /bin/false dans la liste des shells sinon proftpd retourne une erreur 530 (et on archive l'ancien fichier /etc/shells)
cp /etc/shells /etc/shells.old
echo "/bin/false" >> /etc/shells
#2.2 Création du partage :
#On crée l'arborescence du serveur ftp. Il est conseillé de créer une partition et de monter cette partition dans un dossier /ftp créé à la racine /, dans lequel on crée les dossiers images, music, vidéos et docs
echo -n "Entrez le nom du dossier que vous voulez creer pour la racine ftp : "
read racine
mkdir $racine
cd $racine
mkdir images music videos docs
#On applique les droits maximum au dossier ftp, notamment d'execution ce qui va permettre de pouvoir parcourir ce dossier
chmod -R 777 $racine
#2.3 Création de la blacklist :
#Pour ne pas qu'un utilisateur malveillant utilise un compte utilisé par le système (voir la liste avec la commande "cat /etc/passwd") on ajoute tout ces comptes dans la blacklist
cat /etc/passwd | cut -d: -f1 > /etc/ftpusers
#On ajoute ensuite l'utilisateur "anonymous" dans cette blacklist, toujours pouur des raisons de sécurité
echo "anonymous" >> /etc/ftpusers
#2.2 Les utilisateurs :
#On crée 2 utilisateurs, le premier, adminftp qui sera le login qui vous permettra de vous loguer depuis le net pour rajouter des fichiers sur votre PC serveur FTP. Le second userftp qui sera le login que devront entrer vos utilisateurs pour se loguer à votre FTP.
#Les utilisateurs auront un accès en lecture seule. Si vous souhaitiez que d'autres utilisateurs puissent déposer des fichiers sur votre serveur, soit vous leur donnez le mot de passe d'adminftp, soit vous leur créer un compte : pierre, paul ou jacques.
#Il n'y a pas non plus d'utilisateur anonyme.
useradd adminftp -s /bin/false
useradd userftp -s /bin/false
#On leurs affecte bien sûr des mots de passe :
echo "Entrez le pass pour l utilisateur adminftp :"
passwd adminftp
passwd userftp
#3. Configuration de Proftpd
#Dans une prochaine version du script on pourra ici configurer aisément le fichier conf de Proftpd qui se trouve dans "/etc/proftpd.conf" notemment la désactivation de l'IPv6, la redéfinition du port d'écoute (par défaut port : 21) ainsi que la redéfinition du Umask (par défaut Umask=022)
#On active la balcklist
echo "UseFtpUsers on
DefaultRoot $racine #On indique la racine du répertoire ftp
AllowStoreRestart on #On donne la possibilité de reprendre un téléchargement en cours
" >> /etc/proftpd/proftpd.conf
#On défini le nombre de clients maximum en simultané
echo -n "Nombre de clients en simultané"
read MaxClients
echo "MaxClient $MaxClient" >> /etc/proftpd/proftpd.conf
#On défini le nombre maximum de clients par addresse IP
echo -n "Nombre de clients par adresse IP"
read MaxClientsPerHost
echo "MaxClientPerHost $MaxClientPerHost" >> /etc/proftpd/proftpd.conf
#On ajoute la fonctionnalité Fxtp (Bounce) à notre serveur ftp
echo "AllowForeignAddress on
AccessGrantMsg "Connexion Réussie, Bienvenue u%" #On défini une petite phrase de bienvenue personnalisée
" >> /etc/proftpd.conf
#On défini les droits d'écriture sur /ftp pour adminftp seulement
echo "<Directory /ftp>
<Limit WRITE>
AllowUser adminftp
DenyAll
</Limit>
</Directory>
" >> /etc/proftpd/proftpd.conf
#4. Lancement du serveur FTP
#On redémarre le serveur FTP
/etc/init.d/proftpd restart
Dernière modification par winael (Le 31/08/2007, à 01:59)
Libre, non pas comme dans entrée libre, mais comme dans Liberté
(Bouyop)Mon PC c 1 MAC boulet ! G pas windows, donc je pe pas intaller linux !
(pankkake) Windows VISTA : Virus, Infections, Spyware, Trojans, Adware.
OPEN your mind, you'll discover a FREE world
Hors ligne
#2 Le 30/08/2007, à 01:50
- winael
Re : Script d'installation et config. rapide d'un serveur FTP sécurisé
Quelqu'un pourrait-il m'expliquer simplement comment utiliser la commande
$ sed
afin que je puisse rajouter dans le script de quoi modifier le /etc/proftpd/proftpd.conf ?:|
Libre, non pas comme dans entrée libre, mais comme dans Liberté
(Bouyop)Mon PC c 1 MAC boulet ! G pas windows, donc je pe pas intaller linux !
(pankkake) Windows VISTA : Virus, Infections, Spyware, Trojans, Adware.
OPEN your mind, you'll discover a FREE world
Hors ligne
#3 Le 30/08/2007, à 14:09
- pmadfm
Re : Script d'installation et config. rapide d'un serveur FTP sécurisé
Bonjour,
Attention !
Si la BL ftpusers existe déjà ne pas utiliser :
echo "anonymous" > /etc/ftpusers
Mais :
echo "anonymous" >> /etc/ftpusers
Ce qui ajoute Anonymous plutôt que de vider la liste.
Hors ligne
#4 Le 31/08/2007, à 01:58
- winael
Re : Script d'installation et config. rapide d'un serveur FTP sécurisé
oui d'aillers c apreil a tous les echo et de ce pas je met une version corrigé du script qui est meme un epu plus interactif
sorry je debute:|
Libre, non pas comme dans entrée libre, mais comme dans Liberté
(Bouyop)Mon PC c 1 MAC boulet ! G pas windows, donc je pe pas intaller linux !
(pankkake) Windows VISTA : Virus, Infections, Spyware, Trojans, Adware.
OPEN your mind, you'll discover a FREE world
Hors ligne
#5 Le 23/10/2007, à 23:31
- Fausto
Re : Script d'installation et config. rapide d'un serveur FTP sécurisé
Salut Winael ! Excellent ton code !
Sauf au moment le plus redouté (en ce qui me concerne tout du moins) : le lancement, il m'affiche :
root@fausto-desktop:~# /etc/init.d/proftpd restart
* Stopping ftp server proftpd [ OK ]
* Starting ftp server proftpd
- Fatal: DefaultRoot: (mkdir) absolute pathname required on line 74 of '/etc/proftpd/proftpd.conf'
[fail]
Moi aussi je débute... à la ligne 74 en question j'ai :
<Directory> /home/FTP-shared/upload/>
Umask 022 022
AllowOverwrite on
<Limit READ RMD DELE>
DenyAll <---------------------------------------------- ligne 74
</Limit>
<Limit STOR CWD MKD>
AllowAll
</Limit>
</Directory>
J'ai essayé de remplacer par "AllowAll" et autres "allowuser"... mais rien y fait et je ne comprends pas vraiment la source du problème.
Tu pourrait m'aider ? (ou une autre âme charitable )
#6 Le 24/10/2007, à 00:43
- winael
Re : Script d'installation et config. rapide d'un serveur FTP sécurisé
Désolé je vois assez mal d'ou viens le pb car normallement l'instruction ou on défini le DenyAll est comprise dans le bloc final du script :
echo "<Directory /ftp>
<Limit WRITE>
AllowUser adminftp
DenyAll
</Limit>
</Directory>
" >> /etc/proftpd/proftpd.conf
et donc en théorie tu dois trouver dans ton /etc/proftpd/proftpd.conf le meme bloc
<Directory /ftp>
<Limit WRITE>
AllowUser adminftp
DenyAll
</Limit>
</Directory>
Bon j'ai pris du retard pour ma version améliorée mais qui aura l'énorme avantage normallement de généré un nouveau fichier de conf pour proftpd (et backup du conf initiale quand meme je ne suis pas un barbare) voila quoi sorry de pas pouvoir t'aider. Pourrais tu mettre en copie tout ton fichier de conf de proftpd ?
Libre, non pas comme dans entrée libre, mais comme dans Liberté
(Bouyop)Mon PC c 1 MAC boulet ! G pas windows, donc je pe pas intaller linux !
(pankkake) Windows VISTA : Virus, Infections, Spyware, Trojans, Adware.
OPEN your mind, you'll discover a FREE world
Hors ligne
#7 Le 24/10/2007, à 01:02
- dexinou
Re : Script d'installation et config. rapide d'un serveur FTP sécurisé
Tu pourrais aussi mettre
<Directory $racine>
<Limit WRITE>
AllowUser adminftp
DenyAll
</Limit>
</Directory>
car il est déjà en variable
Dernière modification par dexinou (Le 24/10/2007, à 01:03)
Ubuntu 9.10 64bits ext4 ® Core 2 Duo
Unix..... il y a moins bien mais c'est plus cher.
Si t'as pas compris la réponse, pose mieux ta question.
Tutoriaux Linux, apache, pure-ftpd, bind, mysql, qmail...
Hors ligne
#8 Le 24/10/2007, à 03:46
- winael
Re : Script d'installation et config. rapide d'un serveur FTP sécurisé
Ah tiens oui c'est même mieux d'ailleurs pasque si l'utilisateur défini un autre nom comme c'est peut être le cas ici à mon avis il va planter... J'etait passé a coté de celui la
Libre, non pas comme dans entrée libre, mais comme dans Liberté
(Bouyop)Mon PC c 1 MAC boulet ! G pas windows, donc je pe pas intaller linux !
(pankkake) Windows VISTA : Virus, Infections, Spyware, Trojans, Adware.
OPEN your mind, you'll discover a FREE world
Hors ligne
#9 Le 24/10/2007, à 09:16
- Fausto
Re : Script d'installation et config. rapide d'un serveur FTP sécurisé
Merci à vous ! j'ai essayé ton code dexinou mais sans succès..
Le fait que j'ai utilisé plusieurs tuotos peut jouer dans le fait que gproftpd plante, il y a peut-être imcompatibilité entre 2 tutos... enfin, voici mon .conf :
#DenyFilter \*.*/
# I don't choose to use /etc/ftpusers file (set inside the users you want to ban, not useful for me)
UseFtpUsers off
# Allow to restart a download
AllowStoreRestart on
# Port 21 is the standard FTP port, so you may prefer to use another port for security reasons (choose here the port you want)
Port 21
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 8
# Set the user and group that the server normally runs at.
User nobody
Group nogroup
# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask 022 022
PersistentPasswd off
MaxClients 8
MaxClientsPerHost 8
MaxClientsPerUser 8
MaxHostsPerUser 8
# Display a message after a successful login
AccessGrantMsg "Bienvenue à toi ! :)"
# This message is displayed for each access good or not
ServerIdent on "A la recherche des cours de 1ère année..."
# Set /home/FTP-shared directory as home directory
DefaultRoot /home/FTP-shared
# Lock all the users in home directory, ***** really important *****
DefaultRoot ~
MaxLoginAttempts 5
#VALID LOGINS
<Limit LOGIN>
AllowUser userftp
DenyALL
</Limit>
<Directory /home/FTP-shared>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>
<Directory /home/FTP-shared/download/*>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>
<Directory> /home/FTP-shared/upload/>
Umask 022 022
AllowOverwrite on
<Limit READ RMD DELE>
DenyAll
</Limit>
<Limit STOR CWD MKD>
AllowAll
</Limit>
</Directory>
#10 Le 24/10/2007, à 18:56
- Fausto
Re : Script d'installation et config. rapide d'un serveur FTP sécurisé
Sinon, si ça peut compléter, voici la configuration que j'ai dans l'interface de gproftpd :
ServerType standalone
DefaultServer on
Umask 022
ServerName "192.168.0.100"
ServerIdent on "Nom du Blog"
ServerAdmin admin@server
IdentLookups on
UseReverseDNS off
Port 21
PassivePorts 49153 65534
#MasqueradeAddress None
TimesGMT off
MaxInstances 30
MaxLoginAttempts 3
TimeoutLogin 300
TimeoutNoTransfer 120
TimeoutIdle 120
DisplayLogin welcome.msg
DisplayFirstChdir .message
User nobody
Group nobody
DirFakeUser off nobody
DirFakeGroup off nobody
DefaultTransferMode binary
AllowForeignAddress on
AllowRetrieveRestart on
AllowStoreRestart on
DeleteAbortedStores off
TransferRate RETR 30
TransferRate STOR 40
TransferRate STOU 40
TransferRate APPE 40
SystemLog /var/log/secure
RequireValidShell off
#gp_random_username_length 6
#gp_random_password_length 6
#gp_randomize_case lower
#gp_useradd_homedir_path /var/ftp
#gp_useradd_upload_path /home/FTP-shared/upload
#gp_html_path /var/www/html/ftp.htm
#gp_welcome_name welcome.msg
<IfModule mod_tls.c>
TLSEngine off
TLSRequired off
TLSVerifyClient off
TLSProtocol TLSv1
TLSLog /var/log/proftpd_tls.log
TLSRSACertificateFile /etc/gproftpd/gproftpd.pem
</IfModule>
<Limit LOGIN>
AllowUser news
AllowALL
</Limit>
<Anonymous /var/ftp>
User news
Group news
AnonRequirePassword on
MaxClients 3 "The server is full, hosting %m users"
DisplayLogin welcome.msg
DisplayFirstChdir .msg
AllowOverwrite off
<Limit LOGIN>
Allow from all
</Limit>
<Limit ROOT_DIR_ALLOW RETR LIST NLST MDTM SIZE STAT CWD XCWD PWD XPWD CDUP XCUP>
AllowAll
</Limit>
<Limit ROOT_DIR_DENY DELE APPE STOR STOU SITE_CHMOD SITE_CHGRP RNFR RNTO MKD XMKD RMD XRMD>
DenyAll
</Limit>
</Anonymous>
UseFtpUsers on
DefaultRoot mkdir $racine
cd $racine
mkdir images music video docs
AllowStoreRestart on
UseFtpUsers on
DefaultRoot mkdir $racine
cd $racine
mkdir images music video docs
AllowStoreRestart on
MaxClient
MaxClientPerHost
<Directory /ftp>
<Limit WRITE>
AllowUser adminftp
DenyAll
</Limit>
</Directory>
Dernière modification par slasher-fun (Le 17/04/2011, à 12:18)