auf-serveur-openvpn-nomades: configs
authorThomas NOEL <thomas.noel@auf.org>
Wed, 5 Nov 2008 11:48:16 +0000 (11:48 +0000)
committerThomas NOEL <thomas@thomas-pc.sn.auf>
Wed, 5 Nov 2008 11:48:16 +0000 (11:48 +0000)
auf-serveur-openvpn-nomades/auf-nomades.conf [new file with mode: 0644]
auf-serveur-openvpn-nomades/auf-nomades.conf.local.ex [new file with mode: 0755]

diff --git a/auf-serveur-openvpn-nomades/auf-nomades.conf b/auf-serveur-openvpn-nomades/auf-nomades.conf
new file mode 100644 (file)
index 0000000..3d95de4
--- /dev/null
@@ -0,0 +1,344 @@
+#
+# Configuration par defaut d'un *serveur* OpenVPN pour l'accès nomade au réseau
+# privé virtuel de l'AUF.
+#
+# Pour toutes les options en detail : man openvpn
+#
+
+#
+# NE PAS MODIFIER CE FICHIER ! Si vous pensez qu'une modification est
+# indispensable, contactez d'abord thomas.noel@auf.org pour en parler.
+#
+
+
+# Configuration locale à cette implantation
+
+# --config
+#   Load additional config options from file where each line corresponds to one
+#   command line option, but with the leading '--' removed.
+# AUF RPV : fichier de configuration local (adresses IP du serveur et push vers
+# le client) généré lors de l'installation de auf-rpv
+config /etc/openvpn/auf-nomades.conf.local
+
+
+
+# Configuration générale à tous les serveurs RPV2 de l'AUF
+# NE PAS MODIFIER... Si vous détectez un soucis, signalez-le à
+# thomas.noel@auf.org pour qu'il étudie le problème dans sa globalité.
+
+
+# Debug et autres
+
+
+# --verb n
+#   Set output verbosity to n (default=1).  Each level shows all info from the
+#   previous levels.  Level 3 is recommended if you want a good summary of what’s
+#   happening without being swamped by output.
+#   0 -- No output except fatal errors.
+#   1 to 4 -- Normal usage range.
+#   5 -- Output R and W characters to the console for each packet read and
+#     write, uppercase is used for TCP/UDP packets and lowercase is used for
+#     TUN/TAP packets.
+#   6 to 11 -- Debug info range (see errlevel.h for additional information on
+#     debug levels).
+verb 1
+
+# --syslog [progname]
+#   Direct log output to system logger, but do not become a daemon. See
+#   --daemon directive above for description of progname parameter.
+syslog openvpn/nomades
+
+
+
+# Mode serveur sur udp/1194, sur un périphérique TUN
+
+# --mode m
+#   Set  OpenVPN  major mode.  By default, OpenVPN runs in point-to- point mode
+#   ("p2p").  OpenVPN 2.0 introduces a new  mode  ("serv‐ er") which implements
+#   a multi-client server capability.
+mode server
+
+# --dev-type device-type
+#   Which  device  type  are  we using?  device-type should be tun or tap.  Use
+#   this option only if the TUN/TAP device used with  --dev does not begin with
+#   tun or tap.
+# AUF RPV : l'interface sera une IPv4 virtuelle de type "tun"
+dev-type tun
+
+# --dev tunX | tapX | null
+#   TUN/TAP virtual network device ( X can be omitted for a  dynamic device.)
+#   tun devices encapsulate IPv4 while tap devices encapsulate ethernet 802.3.
+#   You must use either tun devices on both ends of  the  connection or  tap
+#   devices on both ends.  You cannot mix them, as they represent different
+#   underlying protocols.
+# AUF RPV: Creation d'une interface IP virtuelle nommmee "nomades"
+dev nomades
+
+# --persist-tun
+#   Don’t close and reopen TUN/TAP  device  or  run  up/down  scripts across
+#   SIGUSR1 or --ping-restart restarts.
+#   SIGUSR1  is  a restart signal similar to SIGHUP, but which offers
+#   finer-grained control over reset options.
+persist-tun
+
+# --proto p
+#   Use protocol p for communicating with remote host.  p can be udp,
+#   tcp-client, or tcp-server.
+# AUF RPV : tunnel sur UDP/IP
+proto udp
+
+# --port port
+#   TCP/UDP  port  number for both local and remote.  The current default of
+#   1194 represents the official IANA port number assignment for OpenVPN and
+#   has been used since version 2.0-beta17.  Previous versions used port 5000
+#   as the default.
+# AUF RPV : par defaut se connecter sur le port 1194
+port 1194
+
+# --comp-lzo
+# Use  fast LZO compression -- may add up to 1 byte per packet for
+# incompressible data.
+comp-lzo
+
+
+
+# Delais pour coupure d'un tunnel
+
+
+# --inactive n
+#   (Experimental) Causes OpenVPN to exit after n seconds of inactivity on the
+#   TUN/TAP device.  The time length of inactivity is measured since the last
+#   incoming tunnel packet.
+# AUF RPV : Fin du tunnel au bout d'une heure d'inactivite
+inactive 3600
+# AUF RPV : on force l'inactivité à une heure sur les clients qui se connectent
+push "inactive 3600"
+
+# --ping n
+#   Ping remote over the TCP/UDP control channel if no  packets have been sent
+#   for at least n seconds (specify --ping on both peers to cause ping packets
+#   to be sent in both  directions since  OpenVPN ping  packets are not echoed
+#   like IP ping packets).  When used in one of OpenVPN’s secure modes (where
+#   --secret,  --tls-server,  or --tls-client is specified), the ping packet
+#   will be cryptographically secure.
+#   This option has two intended uses:
+#   (1) Compatibility with stateful  firewalls.   The  periodic  ping will
+#       ensure  that  a stateful firewall rule which allows OpenVPN UDP packets
+#       to pass will not time out.
+#   (2) To provide a basis for the remote to test  the  existence  of
+#       its peer using the --ping-exit option.
+# AUF RPV : Envoie d'un "ping" au correspondant toutes les 10 secondes
+ping 10
+# AUF RPV : on force sur le client
+push "ping 10"
+
+# --ping-exit n
+#   Causes  OpenVPN to exit after n seconds pass without reception of a ping or
+#   other packet from remote.  This option can be combined with  --inactive,
+#   --ping, and --ping-exit to create a two-tiered inactivity disconnect.
+#   For example,
+#       openvpn [options...] --inactive 3600 --ping 10 --ping-exit 60
+#   when used on both peers will cause OpenVPN to exit within 60 seconds  if
+#   its peer disconnects, but will exit after one hour if no actual tunnel data
+#   is exchanged.
+# AUF RPV : Abandon du tunnel si pas de reponse au bout de deux minutes
+ping-exit 120
+# AUF RPV : on force sur le client à quitter au bout d'une seule minute
+push "ping-exit 60"
+
+# NOTE : les 4 ping/ping-exit ci-dessus peuvent aussi s'écrire : keepalive 10 120
+
+# --ping-timer-rem
+#   Run the --ping-exit / --ping-restart timer only if we have a remote
+#   address.  Use this option if you are starting the daemon in listen  mode
+#   (i.e.  without an explicit --remote peer), and you don’t want to start
+#   clocking timeouts until a remote  peer  connects.
+ping-timer-rem
+
+
+
+# Securisation système
+
+
+# --mlock
+#    Disable paging by calling the POSIX mlockall function. Requires that
+#    OpenVPN be initially run as root (though OpenVPN can subsequently
+#    downgrade its UID using the --user option).
+#    Using this option ensures that key material and tunnel data are never
+#    written to disk due to virtual memory paging operations which occur under
+#    most modern operating systems. It ensures that even if an attacker was
+#    able to crack the box running OpenVPN, he would not be able to scan the
+#    system swap file to recover previously used ephemeral keys, which are used
+#    for a period of time governed by the --reneg options (see below), then are
+#    discarded.
+#    The downside of using --mlock is that it will reduce the amount of
+#    physical memory available to other applications.
+mlock
+
+# TODO
+# --chroot dir
+#   Chroot to dir after initialization. --chroot essentially redefines dir as
+#   being the top level directory tree (/). OpenVPN will therefore be unable to
+#   access any files outside this tree. This can be desirable from a security
+#   standpoint.
+#   Since the chroot operation is delayed until after initialization, most
+#   OpenVPN options that reference files will operate in a pre-chroot context.
+#   In many cases, the dir parameter can point to an empty directory, however
+#   complications can result when scripts or restarts are executed after the
+#   chroot operation.
+#chroot /var/lib/openvpn.nomades
+# --up cmd
+#   Shell  command  to run after successful TUN/TAP device open (pre --user UID
+#   change).  The up  script  is  useful  for  specifying route  commands which
+#   route IP traffic destined for private sub‐ nets which exist at the other
+#   end of the VPN connection into the tunnel.
+# AUF RPV : ce script desactive les rp_filter sur l'interface TUN et créée
+# la prison chroot
+#up /etc/openvpn/scripts/up-server
+# AUF RPV : Variable d'environnement pour emplacement de la prison (utilisé par
+# le script "up-server")
+#setenv chroot_jail /var/lib/openvpn.nomades
+
+
+
+# --user user
+#   Change the user ID of the OpenVPN process to user after initial‐ ization,
+#   dropping privileges in the  process.   This  option  is useful to protect
+#   the system in the event that some hostile par‐ ty was able to gain control
+#   of an OpenVPN session.  Though Open‐ VPN’s  security features make this
+#   unlikely, it is provided as a second line of defense.
+# AUF RPV : personne...
+user nobody
+# --group group
+#   Similar  to  the --user option, this option changes the group ID of the
+#   OpenVPN process to group after initialization.
+# AUF RPV : personne...
+group nogroup
+
+
+
+
+# Adressage des clients
+
+# --ifconfig-pool-persist file [seconds]
+#   Persist/unpersist ifconfig-pool data to file, at seconds intervals
+#   (default=600), as well as on program startup and shutdown.
+#   The goal of this option is to provide a long-term association between
+#   clients (denoted by their common name) and the virtual IP address assigned
+#   to them from the ifconfig-pool. Maintaining a long-term association is good
+#   for clients because it allows them to effectively use the --persist-tun
+#   option.
+#   file is a comma-delimited ASCII file, formatted as <Common-Name>,<IP-address>.
+#   If seconds = 0, file will be treated as read-only. This is useful if you
+#   would like to treat file as a configuration file.
+#   Note that the entries in this file are treated by OpenVPN as suggestions
+#   only, based on past associations between a common name and IP address. They
+#   do not guarantee that the given common name will always receive the given
+#   IP address. If you want guaranteed assignment, use --ifconfig-push
+# AUF RPV : Tant que la prison n'est pas refaite à chaque reboot, c'est utile.
+ifconfig-pool-persist /var/tmp/openvpn-nomades.leases 60
+
+
+
+# Connexion d'un client : routage
+
+
+# Config particulieres : non utilisees pour l'instant, les bidouilles
+# on verra si on en a besoin plus tard...
+# client-config-dir /etc/openvpn/ccd
+
+# --tmp-dir dir
+#   Specify a directory dir for temporary files. This directory will be used by
+#   --client-connect scripts to dynamically generate client-specific
+#   configuration files.
+tmp-dir /var/tmp
+
+
+
+# Authentification forte (TLS)
+
+# --tls-server
+#   Enable TLS and assume server role during TLS handshake.  Note that OpenVPN
+#   is designed as a  peer-to-peer application.  The designation of client or
+#   server is only for the purpose of negotiating the TLS control channel.
+tls-server
+
+# --ca file
+#   Certificate authority (CA) file in .pem format, also referred to as the
+#   root certificate.  This file can have  multiple  certifi‐ cates  in .pem
+#   format, concatenated together.
+# AUF RPV : concaténation des certif de toutes les CA, automatiquement et
+# périodiquement généré par "get-capath"
+ca /etc/openvpn/auf-nomades-ca.pem
+
+# --cert file
+#   Local peer’s signed certificate in .pem format -- must be signed by  a
+#   certificate  authority whose certificate is in --ca file.
+# AUF RPV: certificat fourni par le paquet de configuration local
+cert /etc/openvpn/auf-nomades-cert.pem
+
+# --key file
+#   Local  peer’s  private  key in .pem format.  Use the private key which was
+#   generated when you built your peer’s certificate  (see -cert file above).
+# AUF RPV: clé fournie par le paquet de configuration local
+key /etc/openvpn/auf-nomades-key.pem
+
+# --persist-key
+#   Don’t re-read key files across SIGUSR1 or --ping-restart.
+#
+#   This option can be combined with --user nobody to allow restarts triggered
+#   by the SIGUSR1 signal.   Normally  if  you  drop  root privileges  in
+#   OpenVPN, the daemon cannot be restarted since it will now be unable to
+#   re-read protected key files.
+#   This option solves the problem by persisting keys across SIGUSR1 resets, so
+#   they don’t need to be re-read.
+# AUF RPV: Pas de relecture des cles en cours d'execution (permet de ne pas mettre
+# la clé dans le chroot, par exemple...)
+persist-key
+
+# --tls-verify cmd
+#    Execute  shell  command cmd to verify the X509 name of a pending TLS
+#    connection that has otherwise passed all other tests of cer‐ tification.
+#    cmd  should return 0 to allow the TLS handshake to proceed, or 1 to fail.
+#    cmd is executed as
+#          cmd certificate_depth X509_NAME_oneline
+# AUF RPV : ce script verifie le format du CN et la validité du certificat
+# envoyé (notamment la révocation) via --tls-export-cert (cf ci-dessous)
+#tls-verify /etc/openvpn/scripts/tls-verify-nomad
+
+# --tls-export-cert : PATCH AUF RPV qui demande à OpenVPN de placer
+# le certificat dans un fichier temporaire et indique le nom du fichier
+# dans la variable d'environnement peercert
+#tls-export-cert /tmp
+
+# --dh file
+#   File containing Diffie Hellman parameters in .pem format (required for
+#   --tls-server only).
+dh /etc/openvpn/dh1024.pem
+
+# --reneg-sec n
+#   Renegotiate data channel key after n seconds (default=3600).
+# AUF RPV : Frequence de renegociation : toutes les 2 heures
+reneg-sec 7200
+
+# --hand-window n
+#   Handshake Window -- the TLS-based key exchange must finalize within n
+#   seconds of handshake initiation by any peer (default = 60 seconds). If the
+#   handshake fails we will attempt to reset our connection with our peer and
+#   try again. Even in the event of handshake failure we will still use our
+#   expiring key for up to --tran-window seconds to maintain continuity of
+#   transmission of tunnel data.
+# AUF RPV : Delai de handshake a deux minutes pour liaisons degradees
+hand-window 120
+
+
+# --tls-auth file [direction]
+#   Add an additional layer of HMAC authentication on top of the TLS
+#   control channel to protect against DoS attacks.
+#
+#   In a nutshell, --tls-auth enables a kind of "HMAC  firewall"  on OpenVPN’s
+#   TCP/UDP port, where TLS control channel packets bear‐ ing an incorrect HMAC
+#   signature can be dropped immediately with‐ out response.
+# FIXME : a ajouter !
+# tls-auth /etc/openvpn/tls-auth.key
+
diff --git a/auf-serveur-openvpn-nomades/auf-nomades.conf.local.ex b/auf-serveur-openvpn-nomades/auf-nomades.conf.local.ex
new file mode 100755 (executable)
index 0000000..3f65b93
--- /dev/null
@@ -0,0 +1,27 @@
+#
+# Configuration du serveur OpenVPN pour les nomades
+#
+#
+# Exemple avec le réseau 10.196.0.0/20 (Sénégal, Dakar)
+# Réseaux LANS : 10.196.0.0/21
+# Nomades :      10.196.8.0/21
+#    (dont nomades dynamiques sur 10.196.12.0/22)
+
+# Adresse IP publique sur laquelle OpenVPN ecoute
+local 213.154.65.xx
+
+# IP privee de l'interface (premiere et seconde IP du second /21 du reseau /20)
+ifconfig 10.196.8.1 10.196.8.2
+
+# Plage d'adresses IP pour les clients nomades dynamiques
+ifconfig-pool 10.196.12.1 10.196.15.255
+
+# OpenVPN gere directement tout le dernier /21
+route 10.196.8.0 255.255.248.0
+
+# Indique au client la route vers notre reseau complet (/20)
+push "route 10.196.0.0 255.255.240.0"
+
+# Indique au client que sa route par defaut est desormais le tunnel OpenVPN
+push "redirect-gateway"
+