Ajout section whitelist par IP

This commit is contained in:
whirigoyen 2022-01-26 11:50:45 +01:00
parent 9a6244668d
commit 79fc55f094

View file

@ -33,7 +33,7 @@ ProFTPD Version 1.3.5b
## Configuration
### Configuration simple
### Configuration simple
Le fichier de configuration principal est `/etc/proftpd/proftpd.conf`.
@ -79,13 +79,13 @@ UseIPv6 off
D'une manière similaire à [Apache](HowtoApache), on peut isoler des configurations FTP dans différents VirtualHost.
Cela permet notamment de faire écouter ProFTPD sur 2 ports différents en même temps.
Cela permet notamment de faire écouter ProFTPD sur 2 ports différents en même temps. Par exemple, pour mettre en place à la fois un FTP classique et un SFTP.
Ainsi, on peut mettre en place à la fois un FTP classique et un SFTP.
Note : A Evolix, nous ne proposons pour l'instant pas, sauf exception, les protocoles SFTP et FTPS.
Par exemple, on laisse la configuration par défaut écouter sur le port 21, et on fait écouter un VirtualHost sur le port 8887.
Autre exemple : on laisse la configuration par défaut écouter sur le port 21, et on fait écouter un VirtualHost sur le port 8887.
Note : La balise `VirtualHost` accepte les adresses IP et les noms de domaine.
La balise `VirtualHost` accepte les adresses IP et les noms de domaine.
Voici un exemple de configuration classique qui écoute sur un port différent dans un VirtualHost :
@ -118,7 +118,7 @@ Voici un exemple de configuration classique qui écoute sur un port différent d
</VirtualHost>
~~~
Si l'on veut faire écouter deux VirtualHost sur deux IPs différentes (publique ou LAN), mais sur le même port, il faut utiliser ces options avant la directive `<VirtualHost>` :
Si l'on veut faire écouter deux VirtualHost sur deux IPs différentes (publique ou LAN) mais sur le même port, il faut utiliser ces options avant la directive `<VirtualHost>` :
~~~
Port 0
@ -238,15 +238,21 @@ Pour supprimer un compte :
~~~
### Directive `Limit`
## Restriction des commandes et accès avec la directive Limit
Documentation : <http://www.proftpd.org/docs/howto/Limit.html>
Documentation :
La directive `Limit` permet d'autoriser ou empêcher l'exécution de commande FTP bas niveau.
* <http://www.proftpd.org/docs/howto/Limit.html>
* <http://www.proftpd.org/docs/howto/ConnectionACLs.html>
La directive `Limit` permet d'autoriser ou empêcher l'exécution de commandes FTP bas niveau.
**Attention :** C'est puissant et dangereux, car on pourrait croire que l'on empêche la lecture d'un fichier, mais il faut avoir en tête qu'il existe plusieurs commandes FTP pour faire cela. Il existe des groupes de commandes : LOGIN, DIRS, READ, WRITE et enfin ALL (tout sauf LOGIN).
Voici un exemple d'utilisation pour empêcher toutes opérations sauf dans un répertoire :
Si on a plusieurs vhost qui doivent avoir les mêmes limites, on créé un fichier `/etc/proftpd/access_control.conf` dans lequel on définit la gestion commune des droits. Puis, on l'inclus dans les différents vhost avec la directive `Include /etc/proftpd/access_control.conf`.
### Empêcher toutes les opérations sauf dans un répertoire
~~~
<Directory *>
@ -262,7 +268,8 @@ Voici un exemple d'utilisation pour empêcher toutes opérations sauf dans un r
</Directory>
~~~
Ou encore autoriser **uniquement** le dépôt de fichiers dans un répertoire :
### Autoriser uniquement le dépôt de fichiers dans un répertoire
~~~
<Directory $path>
@ -275,7 +282,8 @@ Ou encore autoriser **uniquement** le dépôt de fichiers dans un répertoire :
</Directory>
~~~
Pour avoir un utilisateur en lecture seule, confiné dans son `$ftp_home` :
### Avoir un utilisateur en lecture seule, confiné dans son `$ftp_home`
~~~
<Directory ~$ftp_user>
@ -289,7 +297,8 @@ Pour avoir un utilisateur en lecture seule, confiné dans son `$ftp_home` :
</Directory>
~~~
Pour blacklister les connexions depuis une IP ou un hôte, mais en autorisant seulement certains comptes :
### Blacklister les connexions depuis une IP ou un hôte, en autorisant seulement certains comptes
~~~
<Limit LOGIN>
@ -299,11 +308,34 @@ Pour blacklister les connexions depuis une IP ou un hôte, mais en autorisant se
</Limit>
~~~
Cette configuration refuse toutes les connexions au serveur depuis l'IP $IP, mais accepte les connexions aux utilisateur $ftp_user1 et $ftp_user2, à l'exception de tous les autres utilisateurs.
Cette configuration refuse toutes les connexions au serveur depuis `$IP`, mais accepte les connexions aux utilisateurs `$ftp_user1` et `$ftp_user2`, à l'exception de tous les autres utilisateurs.
**Attention :** Dans ce dernier cas, s'il y a plusieurs blocs / directives LOGIN dans la configuration ou le VirtualHost, il faut autoriser les utilisateurs dans toutes ces directives, sinon l'accès sera refusé tout le temps.
### Filtrer l'accès à un compte par IP (whitelist)
~~~
<Limit LOGIN>
AllowUser $ftp_user1
AllowUser $ftp_user2
AllowUser $ftp_user3
DenyAll
</Limit>
<IfUser $ftp_user3>
<Limit LOGIN>
Allow from $IP1 $IP2/24
Allow from $IP3
# Et autres ACLs
DenyAll
</Limit>
</IfUser>
~~~
**Attention** : Bien respecter l'ordre des directives et des blocs, sinon l'effet sera différents de celui attendu.
## Divers
Pour limiter les uploads de fichiers de taille supérieure à 50 Mo :
@ -419,6 +451,8 @@ Ou même effacer toutes les données de quota d'un utilisateur :
## FTPS (FTP over SSL/TLS)
Note : A Evolix, nous ne proposons pour l'instant pas, sauf exception, les protocoles SFTP et FTPS.
On peut activer SSL/TLS en créant un fichier `/etc/proftpd/tls.conf` contenant les directives suivantes :
~~~{bash}
@ -462,6 +496,8 @@ Si l'on peut lire le contenu du répertoire, alors la connexion est fonctionnell
## SFTP (FTP over SSH)
Note : A Evolix, nous ne proposons pour l'instant pas, sauf exception, les protocoles SFTP et FTPS.
On peut configurer SFTP avec les directives suivantes :
~~~