Archives de la catégorie ‘Securité’

1. Gestion des utilisateurs sous Unix/Linux

Unix est multi-utilisateurs. Pour cette raison, tout le monde ne peut pas tout faire, à part l’administrateur système (traditionnellement nommé root), qui à le droit de lire et d’écrire tous les fichiers de tous les répertoires.

Chaque utilisateur est désigné de manière unique par son login (son « nom »). De plus, chaque utilisateur appartient à un ou plusieurs groupes. Par exemple, sous Red Hat Linux, chaque utilisateur est par défaut seul membre de son groupe personnel et membre du groupe users. Ainsi, sur ma machine, j’ai un utilisateur damien qui est membre des groupes damien et users. L’intêret d’avoir chaque utilisateur unique membre d’un groupe dépasse le cadre de cet article.

Un fichier ou un répertoire appartient toujours à un utilisateur et à un groupe. D’autre part, un fichier peut être accessible en lecture, en écriture et en exécution. Les permissions sont distinctes pour l’utilisateur propriétaire du fichier, pour le groupe propriétaire et pour le reste du monde. Ces permissions sont affichées par la commande ls quand on lui passe l’option -l:

-rw-r--r--  1 damien   users  297 Jun 07 10:31 toto

Cette ligne signifie que le fichier toto appartient à l’utilisateur damien et au groupe users, avec les droits -rw-r--r--. Les autres valeurs (1, 297 et la date) ne nous intéressent pas ici.

Décryptage des droits -rw-r–r– : le premier caractère représente le type de fichier: « – » pour un fichier normal, « d » pour un répertoire, « p » pour un tube, « b » ou « c » pour un périphérique, « l » pour un lien symbolique.

Les trois suivants représentent les droits de l’utilisateur propriétaire du fichier.

  • « r » représente le droit de lecture,
  • « w » le droit d’écriture
  • « x » le droit d’exécution

Ici, « rw- » signifie que l’utilisateur damien peut lire et écrire dans le fichier, mais pas l’exécuter.
Les trois caractères suivants représentent les permissions du groupe; ici, tous les membres du groupe users peuvent lire le fichier, mais pas y écrire.
Enfin, les trois derniers caractères ont une signification analogue pour le reste du monde.

Une astruce mnémotechnique : pensez au prénom HUGO et vous retrouverez UGO : User, Group, Other

Une petite nuance pour les répertoires: si un utilisateur a le droit d' »exécution » sur un répertoire, cela signifie qu’il peut y entrer avec la commande cd ou équivalent.

Comment fixer les droits : on a vu que les droits d’accès sont fixés pour UGO et sont en rwx.

  rwx
  ||+-- 1
  |+--- 2
  +---- 4

Ainsi, fixer les droits sur un répertoire ou un fichier peut être synthétiser par en additionnant les valeurs pour chaque UGO.

Par exemple, un groupe « rwx » est représenté par 4+2+1=7. Un groupe « r– » par 4+0+0=4. Un groupe « –x » par 0+0+1=1. Ainsi, les permissions rw-r--r-- de notre fichier toto s’écrivent 644.

Fixer les droits :

chmod 644 toto

2. Setuid sur un script Shell ou un programme

Rappel : une ligne de commande précédée par $ indique un utilisateur lambda. Une ligne de commande précédée par # indique que cette commande est exécutée par l’utilisateur ROOT

Dans l’exemple ci-dessous, on modifie les droits du script monshell.sh par un SETUID=4 (on fixe l’utilisateur d’exécution à ROOT) :

# chown root:root monshell.sh
# chmod 4755 monshell.sh
# exit
$ ./monshell.sh

L’utilisateur exécute ici le script monshell.sh avec les droits ROOT et ce, bien que n’étant pas dans le groupe ROOT !

Publicités

La matrice RACI aide à définir les rôles et les responsabilités au sein d’un projet. Elle vous aide à clarifier les acteurs et à être efficace dans vos actions.

Bien évidemment, la matrice RACI évolue en fonction des acteurs du projet (les départs, les arrivées et des nouvelles prises de fonctions). Quoiqu’il en soit elle vous évitera les batailles et autres interventions surprises qui remettent en cause les décisions.

1. RACI : c’est quoi ?

RACI est ni plus ni moins que l’acronyme de :

  • R : Responsible
  • A : Accountable
  • C : Consulted
  • I : Informed

2. Construction de la matrice RACI

R : le ou les R réalisent l’action. Il y a au moins un R pour chaque action. Le A peut aussi jouer le rôle de R. Le A est responsable de l’organisation du travail du ou des R. Si les R ne remplissent pas leurs objectifs (action et délai), le A est responsable de la situation.

A : le A est celui qui rends des comptes sur l’avancement de l’action. Il y a toujours un et un seul A pour chaque action. « Avoir le A » signifie être totalement responsable d’une action

C : le ou les C sont les participants qui doivent être consultés. Sur consultation du A et des R, ils donnent leur avis sur les sujets où ils sont experts. Les C n’ont pas autorité. C’est le A qui décide de prendre en compte ou non l’avis des C.

I : les I sont les personnes qui doivent être informés. Elles sont classiquement indirectement impactées par le projet, comme les utilisateurs, les responsables de projets périphériques…

3. Exemple de fichier Microsoft Excel

RACI-MariageRJ : ici on prend un exemple volontairement utopique. L’organisation du mariage civil de Roméo et Juliette :). On suppose que les querelles et autres vengeances, meurtres, … ne font pas partie de décor.

1. Installation du serveur

#apt-get install nis

2. Configuration

2.1 Configuration : /etc/default/nis

#NISSERVER=false
NISSERVER=master
NISCLIENT=true
YPPWDDIR=/etc
YPCHANGEOK=chsh
NISMASTER=
YPSERVARGS=
YPBINDARGS=-no-dbus
YPPASSWDDARGS=
YPXFRDARGS=

2.2 Configuration : /etc/YPServ.conf

#
# ypserv.conf   In this file you can set certain options for the NIS server,
#               and you can deny or restrict access to certain maps based
#               on the originating host.
#
#               See ypserv.conf(5) for a description of the syntax.
#
# The following, when uncommented,  will give you shadow like passwords.
# Note that it will not work if you have slave NIS servers in your
# network that do not run the same server as you.
Host                       : Domain  : Map              : Security
*                          : *       : passwd.byname    : port/mangle
*                          : *       : passwd.byuid     : port/mangle
# This is the default - restrict access to the shadow password file,
# allow access to all others.
*                            : *       : shadow.byname    : port
*                            : *       : passwd.adjunct.byname : port
*                            : *       : *                : none

2.3 Configuration : /etc/yp.conf

#
# yp.conf       Configuration file for the ypbind process. You can define
#               NIS servers manually here if they can't be found by
#               broadcasting on the local net (which is the default).
#
#               See the manual page of ypbind for the syntax of this file.
#
# IMPORTANT:    For the "ypserver", use IP addresses, or make sure that
#               the host is in /etc/hosts. This file is only interpreted
#               once, and if DNS isn't reachable yet the ypserver cannot
#               be resolved and ypbind won't ever bind to the server.
# ypserver ypserver.network.com
ypserver monserveurnis.mondomaine.priv

2.4 Configuration : /etc/defaultdomain

mondomaine.priv

2.4 Configuration : /etc/ypserv.securenets

#
# securenets    This file defines the access rights to your NIS server
#               for NIS clients (and slave servers - ypxfrd uses this
#               file too). This file contains netmask/network pairs.
#               A clients IP address needs to match with at least one
#               of those.
#
#               One can use the word "host" instead of a netmask of
#               255.255.255.255. Only IP addresses are allowed in this
#               file, not hostnames.
#
# Always allow access for localhost
255.0.0.0       127.0.0.0
# This line gives access to everybody. PLEASE ADJUST!
0.0.0.0         0.0.0.0

3. Initialisation

Création de la base de données d’authentification

#/usr/lib/yp/ypinit -m

3.1 Installation du client NIS

# yp.conf       Configuration file for the ypbind process. You can define
#               NIS servers manually here if they can't be found by
#               broadcasting on the local net (which is the default).
#
#               See the manual page of ypbind for the syntax of this file.
#
# IMPORTANT:    For the "ypserver", use IP addresses, or make sure that
#               the host is in /etc/hosts. This file is only interpreted
#               once, and if DNS isn't reachable yet the ypserver cannot
#               be resolved and ypbind won't ever bind to the server.
# ypserver ypserver.network.com
ypserver monserveurnis.mondomaine.priv

3.2 Configuration du client NIS

3.2.1 /etc/hosts

10.11.12.13          monserveurnis.mondomaine.priv     monserveurnis

3.2.2 /etc/defaultdomain

mondomaine.priv

3.2.3 /etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd:         nis compat
group:          compat
shadow:         compat
hosts:          files nis mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

3.2.4  Modification des fichiers locaux

# echo "+::::::" >>/etc/passwd
# echo "+::::::::" >>/etc/shadow
# echo "+:::" >>/etc/group

4. Maintenance

4.1 Création d’un utilisateur

Sur le serveur client configuré Client NIS :

NIS client # mkdir /home/<user>
NIS client # chown <user>:<user> <user>

Sur le serveur NIS :

NIS server # adduser <user>
NIS server # cd /var/yp
NIS server # make

4.2 Modification d’un mot de passe

NIS server # yppasswd <user>
NIS server # mot de passe root :
NIS server # nouveau mot de passe :
NIS server #
NIS server # cd /var/yp
NIS server # make

4.3 Supprimer un utilisateur

Sur le serveur client configuré Client NIS :

NIS client # rm –r /home/<user>

Sur le serveur NIS :

NIS server # deluser <user>
NIS server # cd /var/yp
NIS server # make
Ce script a pour objectif de changer le mot de passe d’un compte passé en paramètre sur l’ensemble des serveurs UNIX de votre parc.
Pré-requis :
  • Se connecter en tant que ROOT sur votre serveur
  • Configurer un échange de clés SSH entre votre serveur et l’ensemble des serveurs de votre parc
  • Une liste des serveurs cibles dans le fichier /root/scripts/listedesserveursatraiter
Utilisation :
#ChangePasswd.sh <nom du compte>

ex : #ChangePasswd.sh root
Code :
#!/bin/bash

compte = $1

echo "Modification du mot de passe $compte sur l'ensemble des serveurs"
read -s -p "Nouveau mot de passe : " mdp
echo ""
if test -z "$mdp" ; then
        echo "Le mot de passe ne peut pas être vide"
        exit
fi
read -s -p "Vérification du mot de passe saisi : " mdp2
if test "$mdp" != "$mdp2" ; then
        echo "Les mots de passe saisis ne correspondent pas"
        exit
fi

echo "Modification du mot de passe du compte $compte"

SERVEUR=/root/scripts/listedesserveursatraiter
for serveur in `cat $SERVEUR|grep "^[^#].*$"`
do
        echo "Traitement du serveur : $serveur"
        ssh $serveur "echo $compte:$mdp|chpasswd"
done

echo "Après avoir VERIFIE LES CONNEXIONS sur CHAQUE SERVEUR, vous pouvez fermer ce shell"

echo "Après avoir VERIFIE LES CONNEXIONS sur CHAQUE SERVEUR, vous pouvez fermer ce shell"
 
Commentaires :  le fichier /root/scripts/listedesserveursatraiter contient la liste des serveurs :
serveur1
serveur2
#ce serveur ne sera pas traité
Parce que la connexion SSH est configurée par échange de clés, le script se charge d’envoyer, sans authentification, la commande chpasswd <nom du compte>:<mot de passe> à tous les serveurs.

1. Un SBS : c’est quoi ?

Bon nombre de petites et moyennes entreprises sacrifient l’informatique et la sécurité sur l’autel de la trésorerie et du manque de moyens.

Un SBS (Small Business Server) vous permettra de profiter d’un service informatique complet et autonome.

Complet, car vous profiterez d’une solution de messagerie et Webmail, d’un serveur d’impression, d’un serveur de fichiers central, d’une mise en réseau de vos postes de travail (Windows, Linux, …) facile, d’un accès Internet sécurisé, d’un antispam, d’un pare-feu, …

Autonome, une interface graphique (Web) vous permettra de configurer vos différents services.

2. Installation depuis le CD-ROM

La méthode la plus facile pour installer Zentyal sur un serveur (ou ordinateur) from scratch est l’utilisation du CD-ROM. Ce CD contient Zentyal et toutes ses dépendances. La version 3.0 repose sur la distribution Ubuntu Server 12.04 et est disponible en 32bits et 64bits.

Si vous souhaitez configurer votre partition ou spécifier votre serveur proxy, sélectionnez « expert mode ».

Une fois que l’installation est terminée, vous avez accès à l’interface web

https://<adresse IP du serveur Zentyal>

Loguez-vous en utilisant le nom d’utilisateur et le mot de passe deamandé lors de l’installation. Cepenadant, un utilisateur membre du groupe « admin » peut se loguer.

3. Installation depuis le dépôt Zentyal

3.1 Configuration du source.list

Sous Ubuntu 12.04 :

Ajoutez à votre fichier /etc/apt/sources.list

deb http://ppa.launchpad.net/zentyal/3.0/ubuntu precise main
deb http://archive.zentyal.org/zentyal 3.0 main extra

Le dépôt Zentyal et le PPA nécessitent une authentification.

Importez la clé public :

#apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 10E239FF
#wget -q http://keys.zentyal.org/zentyal-3.0-archive.asc -O- | apt-key add -

Vous pouvez aussi copier/coller la commande suivante :

#apt-get install -y python-software-properties && add-apt-repository ppa:zentyal/3.0 && apt-get update

3.2 Installation

L’architecture logcielle de Zentyal est modulaire, ce qui vous permet d’ajouter et supprimer des modules selon votre besoin. Vous disposez à ce jour de plus de 30 modules.

Zentyal simplifie son utilisation en proposant des profils. Chaque profil contient un groupe d’applications. Vous trouverez ci-dessous la liste des profils et de leurs applications :

  • zentyal-office: zentyal-samba, zentyal-printers, zentyal-antivirus, zentyal-ebackup, zentyal-remoteservices
  • zentyal-communication: zentyal-mail, zentyal-jabber, zentyal-asterisk, zentyal-mailfilter, zentyal-antivirus, zentyal-ebackup, zentyal-remoteservices
  • zentyal-gateway: zentyal-squid, zentyal-trafficshaping, zentyal-l7-protocols, zentyal-ebackup, zentyal-remoteservices
  • zentyal-infrastructure: zentyal-dhcp, zentyal-dns, zentyal-openvpn, zentyal-webserver, zentyal-ftp, zentyal-ntp, zentyal-ebackup, zentyal-remoteservices

Après modification de votre fichier sources.list, vous devez mettre à jour votre base de données :

#apt-get update
#apt-get install zentyal

Une fois que l’installation est terminée, vous avez accès à l’interface web

https://<adresse IP du serveur Zentyal>

Une interface graphique complète est disponible (je ne vous la recommande pas, SSH suffit) :

#apt-get install zenbuntu-desktop

Enfin rebootez votre serveur.

3.3 Installation de modules supplémentaires

Installation de tous les modules :

#apt-get install zentyal-all

Installation d’un module au choix :

#apt-get install zentyal-office
  • zentyal-antivirus : antivirus ClamAV
  • zentyal-asterisk : une solution de ToIP
  • zentyal-ca : serveur de certificats
  • zentyal-dhcp : attribution dynamique d’adresses IP
  • zentyal-dns : résolution de noms
  • zentyal-ebackup : sauvegarde en réseau
  • zentyal-firewall : pare-feu
  • zentyal-ftp : transfert de fichier
  • zentyal-ids : détection d’intrusion réseau
  • zentyal-jabber : messagerie instantanée
  • zentyal-l7-protocols : traffic shapping (optimisation des flux réseau) et QoS via layer 7
  • zentyal-ltsp : virtualisation des postes de travail
  • zentyal-mail : messagerie électronique
  • zentyal-mailfilter : anti-spam
  • zentyal-monitor : supervision
  • zentyal-network : interface web d’admistration Zentyal
  • zentyal-ntp : serveur de temps identique à cet article
  • zentyal-nut : interface Web d’administration des onduleurs du type UPS
  • zentyal-objects
  • zentyal-openvpn : accès VPN
  • zentyal-printers : serveur d’impressions
  • zentyal-remoteservices
  • zentyal-samba : serveur de fichiers
  • zentyal-services : gestion des services
  • zentyal-software : gestion des mises à jour
  • zentyal-squid : proxy
  • zentyal-trafficshaping : traffic shapping (optimisation des flux réseau)
  • zentyal-users : activation PAM et SSH
  • zentyal-usercorner : LDAP
  • zentyal-webserver : serveur apache
  • zentyal-radius : authentification réseau sécurisée
  • zentyal-webmail : serveur apache accès à votre messagerie
  • zentyal-zarafa : groupware

4. Machines virtuelles

Les installation des machines virtuelles ne sont pas réalisées régulièrement. Il peut donc y avoir des paquets non à jour. Si vous avez une connexion Internet, les dernières mises à jour seront appliquées durant l’installation.

1. Installation et configuration de la gestion des quotas

Se connecter en tant qu’administrateur :

#apt-get install quota quotatool

2.  Configuration

2.1.                Mise en place à chaud des quotas sur une partition

  • Editer le fichier /etc/fstab :

/dev/sdb1       /Data           ext3    defaults,usrquota,grpquota        0       1

  • Créer les fichiers de gestion des quotas

#touch /Data/aquota.user

#touch /Data/aquota.group

#chmod 600 /Data/aquota.*

  • Remonter la partition

#mount -a

3.1.          Configuration du quota pour un utilisateur

  • #edquota –u <utilisateur>

Quotas disque pour user <utilisateur> (uid 1XXX) :

Système de fichiers          blocs       souple     stricte   inodes    souple   stricte

/dev/sdb1                        20     100000     120000          5   100000   120000

 

Ici avertissement à 100 Mo et limitation à 120 Mo

3.2.          Configuration du quota pour un groupe

  • #edquota –g <groupe>

Quotas disque pour user <groupe> (uid 1X) :

Système de fichiers          blocs       souple     stricte   inodes    souple   stricte

/dev/sdb1                        20     100000     120000          5   100000   120000

 

Ici avertissement à 100Mo et limitation à 120Mo

4.  Administration des quotas

4.1.          Rapport de quotas

# repquota -uvg /dev/sdb1

*** Rapport pour les quotas user sur le périphérique /dev/sdb1

Période de sursis bloc : 7days ; période de sursis inode : 7days

Limites bloc               Limites fichier

Utilisateur     utilisé souple stricte sursis utilisé souple stricte sursis

———————————————————————-

root      —  154232       0       0              4     0     0

sysadmin  —      20       0       0              5     0     0

toto      —      20       0       0              5     0     0

Ici l’utilisateur toto est bien en dessous des limitations de quotas

# repquota -uvg /dev/sdb1

*** Rapport pour les quotas user sur le périphérique /dev/sdb1

Période de sursis bloc : 7days ; période de sursis inode : 7days

Limites bloc               Limites fichier

Utilisateur     utilisé souple stricte sursis utilisé souple stricte sursis

———————————————————————-

root      —  154232       0       0              4     0     0

sysadmin  —      20       0       0              5     0     0

toto      +-  120000  100000  120000  7days       6 100000 120000

Ici l’utilisateur toto a utilisé tout son quota

1.  FTPS : c’est quoi ?

Le FTPS, ou File Transfer Protocol Secure, est un protocole réseau permettant l’échange de fichiers informatiques.

Il se base sur le protocole FTP (RFC 959) mais ajoute une couche de chiffrage des échanges avec les protocoles SSL ou TLS. Ainsi, il permet au visiteur de vérifier l’identité du serveur auquel il accède grâce à un certificat d’authentification.

2. Quel chiffrement ?

La connexion s’effectue sur le port 21, le port de commande FTP standard, et puis soit:

  • la commande « AUTH TLS » (anciennement « AUTH TLS-C ») demande au serveur de chiffrer le transfert de commande en TLS, et le chiffrement du transfert de données se fait par la commande « PROT P ».
  • (non standard) la commande « AUTH SSL » (anciennement « AUTH TLS-P ») demande au serveur de chiffrer le transfert de commande et de données en SSL.

Cette approche est compatible avec les serveurs ou clients FTP ne supportant pas le chiffrement SSL/TLS, auquel cas une connexion non chiffrée pourra être utilisée ou bien refusée.

Le schéma d’URI est ftpes:// ou simplement ftp://

3.  Installation du service FTP

3.1.          Installation de ProFTP

Se connecter sur le serveur cible en tant qu’administrateur

#apt-get install proftpd

4.  Génération du certificat SSL

4.1.          Installation de la couche SSL

#apt-get install openssl

4.2.          Génération du certificat SSL

4.2.1.1.                      Type de certificat

Certificat : DHE-RSA-AES256-SHA (256 bits)

Durée de validité : 365 jours

4.2.1.2.                      Génération

# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/macleftp.cert.pem -keyout /etc/ssl/certs/macleftp.key.pem

4.2.1.3.                      Configuration

Country Name (2 letter code) [AU]:FR

State or Province Name (full name) [Some-State]:Orleans

Locality Name (eg, city) []:Orleans

Organization Name (eg, company) [Internet Widgits Pty Ltd]:NOM DE MA SOCIETE

Organizational Unit Name (eg, section) []:

Common Name (eg, YOUR name) []:URL DE MON SERVICE FTPS

Email Address []:EMAIL DE L ADMIN FTPS

5. Configuration du service FTPS

#

# /etc/proftpd/proftpd.conf — This is a basic ProFTPD configuration file.

# To really apply changes reload proftpd after modifications.

#

# Includes DSO modules

Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.

UseIPv6                           on

# If set on you can experience a longer connection delay in many cases.

IdentLookups               off

ServerName                 « FTP »

ServerType                 inetd

#cacher l’identite du serveur

#DeferWelcome              off

ServerIdent                on « FTP Server ready »

DeferWelcome               on

# Autoriser l’usage de /etc/ftpusers pour interdire des users

#TO DO: voir quels comptes sont a interdire

UseFtpUsers                on

MultilineRFC2228           on

DefaultServer              on

ShowSymlinks               on

TimeoutNoTransfer          600

TimeoutStalled                    600

TimeoutIdle                1200

DisplayLogin                    welcome.msg

DisplayChdir                      .message true

ListOptions                       « -l »

DenyFilter                 \*.*/

# Users require a valid shell listed in /etc/shells to login.

# Use this directive to release that constrain.

# RequireValidShell        off

# Port 21 is the standard FTP port.

Port                       21

# In some cases you have to specify passive ports range to by-pass

# firewall limitations. Ephemeral ports can be used for that, but

# feel free to use a more narrow range.

# PassivePorts                  49152 65534

# If your host was NATted, this option is useful in order to

# allow passive tranfers to work. You have to use your public

# address and opening the passive ports used on your firewall as well.

# MasqueradeAddress        1.2.3.4

# This is useful for masquerading address with dynamic IPs:

# refresh any configured MasqueradeAddress directives every 8 hours

<IfModule mod_dynmasq.c>

# DynMasqRefresh 28800

</IfModule>

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

# Set the user and group that the server normally runs at.

#User                      proftpd

User                       nobody

Group                      nogroup

#####################

# SUPPORT SSL/TLS : #

#####################

#####################

# SUPPORT SSL/TLS : #

#####################

#Securisation des transferts avec TLS – generer le certificat x509 via la commande :

#openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/macleftp.cert.pem -keyout /etc/ssl/certs/macleftp.key.pem

TLSEngine on

#On force toutes les connections avec ssl

TLSRequired on

# logs

TLSLog /var/log/proftpd/proftpd.tls_log

# Protocole

TLSProtocol SSLv23

TLSOptions NoCertRequest

# Certif et key

TLSRSACertificateFile /etc/ssl/certs/macleftp.cert.pem

TLSRSACertificateKeyFile /etc/ssl/certs/macleftp.key.pem

TLSVerifyClient off

# Restreint le range ports sur lequel votre serveur FTPS renverra ces informations
# PASV command from a client. Use IANA-registered ephemeral port range of
# 49152-65534
PassivePorts 49152 65534

###########################################################

# Umask 022 is a good standard umask to prevent new files and dirs

# (second parm) from being group and world writable.

Umask                      022  022

# Normally, we want files to be overwriteable.

AllowOverwrite                    on

# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:

# PersistentPasswd         off

# This is required to use both PAM-based authentication and local passwords

# AuthOrder                mod_auth_pam.c* mod_auth_unix.c

# Be warned: use of this directive impacts CPU average load!

# Uncomment this if you like to see progress and transfer rate with ftpwho

# in downloads. That is not needed for uploads rates.

#

# UseSendFile              off

#####################

#   FORMATS LOGS :  #

#####################

LogFormat            default « %h %l %u %t \ »%r\ » %s %b »

# Log des logins

#ExtendedLog          /var/log/proftpd/proftpd.auth_log      AUTH auth

# Pour les parranos que nous sommes :

ExtendedLog          /var/log/proftpd/proftpd.paranoid_log  ALL default

#The TransferLog directive configures the full path to the « wu-ftpd style » file transfer log (par defaut)

TransferLog /var/log/xferlog

##########################################################

#TransferLog /var/log/proftpd/xferlog

#SystemLog   /var/log/proftpd/proftpd.log

<IfModule mod_quotatab.c>

QuotaEngine off

</IfModule>

<IfModule mod_ratio.c>

Ratios off

</IfModule>

# Delay engine reduces impact of the so-called Timing Attack described in

# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02

# It is on by default.

<IfModule mod_delay.c>

DelayEngine on

</IfModule>

<IfModule mod_ctrls.c>

ControlsEngine        off

ControlsMaxClients    2

ControlsLog           /var/log/proftpd/controls.log

ControlsInterval      5

ControlsSocket        /var/run/proftpd/proftpd.sock

</IfModule>

<IfModule mod_ctrls_admin.c>

AdminControlsEngine off

</IfModule>

#

# Alternative authentication frameworks

#

#Include /etc/proftpd/ldap.conf

#Include /etc/proftpd/sql.conf

#

# This is used for FTPS connections

#

#Include /etc/proftpd/tls.conf

# A basic anonymous configuration, no upload directories.

# <Anonymous ~ftp>

#   User                          ftp

#   Group                         nogroup

#   # We want clients to be able to login with « anonymous » as well as « ftp »

#   UserAlias              anonymous ftp

#   # Cosmetic changes, all files belongs to ftp user

#   DirFakeUser     on ftp

#   DirFakeGroup on ftp

#

#   RequireValidShell             off

#

#   # Limit the maximum number of anonymous logins

#   MaxClients                    10

#

#   # We want ‘welcome.msg’ displayed at login, and ‘.message’ displayed

#   # in each newly chdired directory.

#   DisplayLogin                  welcome.msg

#   DisplayChdir           .message

#

#   # Limit WRITE everywhere in the anonymous chroot

#   <Directory *>

#     <Limit WRITE>

#       DenyAll

#     </Limit>

#   </Directory>

#

#   # Uncomment this if you’re brave.

#   # <Directory incoming>

#   #   # Umask 022 is a good standard umask to prevent new files and dirs

#   #   # (second parm) from being group and world writable.

#   #   Umask                     022  022

#   #            <Limit READ WRITE>

#   #            DenyAll

#   #            </Limit>

#   #            <Limit STOR>

#   #            AllowAll

#   #            </Limit>

#   # </Directory>

#

# </Anonymous>

#####################

#    CONTEXTES :    #

#####################

# Contexte GLOBAL :

<Global>

# Limite les accès depuis Intranet : adresses privées classe B

#        <Limit ALL LOGIN>

#               Order Allow,Deny

#               Allow from 192.168.

#                DenyAll

#        </Limit>

# Chrooter users : Les limiter à leur répertoire personnel

DefaultRoot ~

# NB Pour interdire le ftp à un utilisateur : Ajoutez son nom a la liste contenue dans le fichiers /etc/ftpusers

# Seul le propriétaire d’un fichier peut le modifier.

Umask  022  022

# Messages a l’utilisateur

AccessDenyMsg « Acces non autorise pour l’utilisateur : %u. »

AccessGrantMsg « Bienvenue %u. sur le FTP. »

ListOptions « -l »

HiddenStores on

# Authoriser la reprise des telechargements :

AllowStoreRestart on

AllowRetrieveRestart on

#Filtres

DenyFilter \*.*/

ShowSymlinks on

# Authorise l’ecriture d’un fichier sur un fichier portant le meme nom :

AllowOverwrite on

</Global>

<Directory /home>

<Limit  LOGIN>

DenyAll

</Limit>

</Directory>

#<Directory /~>

#        HideNoAccess on

# Filtrage par IP internes :

#        <Limit LOGIN CWD CDUP RETR STOR RNFR RNTO DELE RMD MKD PWD LIST NLIST>

#                Order Allow,Deny

#               Allow from 192.168.

#                DenyAll

#                IgnoreHidden on

#       </Limit>

#</Directory>

# Contexte Pages Persos :

#<Directory ~/public_html>

#        <Limit LOGIN CWD CDUP RETR STOR RNFR RNTO DELE RMD MKD PWD LIST NLIST>

#                AllowAll

#                IgnoreHidden on

#        </Limit>

#</Directory>

##########################################################

7. FTPS et Firewall

Votre administrateur réseau et sécurité était votre ami ? Il ne l’est plus.

En effet, le protocole FTPS fonctionne différemment des autres protocoles.

Le client distant se connecte sur le port 21 de votre firewall. Ce dernier doit renvoyer le flux vers votre serveur FTPS et lequel renvoit les informations sur un port au hasard mais différent du port 21 !!!

C’est pourquoi vous ajoutez

# PASV command from a client. Use IANA-registered ephemeral port range of
# 49152-65534
PassivePorts 49152 65534

La configuration du firewall devra autoriser les connexions distantes sur le port 21 vers le serveur FTPS et autoriser – sans control – l’envoi d’informations depuis le serveur FTPS vers Internet et sur les prots entre 49152 et 65534