Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 big_smile)

#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 tongue


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)