Introduction à stunnel
Le paquet Stunnel contient un
programme qui vous permet de chiffrer des connexions TCP de votre
choix en SSL (Secure Sockets Layer) pour que vous puissiez
communiquer facilement avec des clients par des canaux sécurisés.
Stunnel peut être utilisé pour
ajouter la fonctionnalité SSL aux démons Inetd couramment utilisés comme les serveurs
POP-2, POP-3, et IMAP, aussi bien qu'à des démons autonomes comme
NNTP, SMTP et HTTP. Stunnel peut
aussi être utilisé pour les tunnels PPP par des sockets réseaux
sans modifications du code source du paquet du serveur.
Ce paquet est connu pour se construire correctement sur une
plateforme LFS-9.1.
Informations sur le paquet
-
Téléchargement (HTTP) :
-
Téléchargement (FTP) :
ftp://ftp.stunnel.org/stunnel/archive/5.x/stunnel-5.56.tar.gz
-
Somme de contrôle MD5 du téléchargement :
01b0ca9e071f582ff803a85d5ed72166
-
Taille du téléchargement : 960 Ko
-
Estimation de l'espace disque requis : 7.5 Mo
-
Estimation du temps de construction : 0.1 SBU
Dépendances de stunnel
Facultatives
netcat
(requis pour les tests), tcpwrappers et
TOR
Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/stunnel
Installation de stunnel
Le démon Stunnel sera
lancé dans une cage chroot par un utilisateur non
privilégié. Créez le nouvel utilisateur et le nouveau groupe en
utilisant les commandes suivantes en tant qu'utilisateur
root
:
groupadd -g 51 stunnel &&
useradd -c "stunnel Daemon" -d /var/lib/stunnel \
-g stunnel -s /bin/false -u 51 stunnel
Note
Un certificat SSL signé et une clé privée sont nécessaires pour
lancer le démon stunnel. Après que le paquet
est installé, il y a des instructions pour les générer. Cependant
si vous possédez ou si vous avez déjà créé un certificat SSL
signé que vous souhaitez l'utiliser, copiez-le dans /etc/stunnel/stunnel.pem
avant de commencer la
construction (assurez-vous que seul root
a l'accès en lecture et écriture). Le
fichier .pem
doit être formaté
comme décrit ci-dessous :
-----BEGIN PRIVATE KEY-----
<many encrypted lines of private key>
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
<many encrypted lines of certificate>
-----END CERTIFICATE-----
-----BEGIN DH PARAMETERS-----
<encrypted lines of dh parms>
-----END DH PARAMETERS-----
Installez stunnel en lançant les
commandes suivantes :
Note
Pour certains systèmes avec une version de binutils inférieure à 2.25, configure peut échouer. Si
nécessaire, corrigez-le avec :
sed -i '/LDFLAGS.*static_flag/ s/^/#/' configure
ou, si LLVM-9.0.1 est installé avec Clang, vous pouvez
remplacer ./configure
... avec CC=clang
./configure ... dans la première commande
dessous.
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var &&
make
Si vous avez installé l'application netcat facultative, les tests
de regression peuvent être lancés avec make check.
Maintenant, en tant qu'utilisateur root
:
make docdir=/usr/share/doc/stunnel-5.56 install
Installez l'unité systemd incluse en lançant la commande suivante
en tant qu'utilisateur root
:
install -v -m644 tools/stunnel.service /lib/systemd/system
si vous n'avez pas déjà un certificat SSL signé et une clé privée,
créez le fichier stunnel.pem
dans le
répertoire /etc/stunnel
en utilisant
la commande suivante. Vous aurez une invite pour rentrer les
informations nécessaires. Assurez-vous de répondre à
Common Name (FQDN of your server) [localhost]:
avec le nom ou l'adresse IP que vous utiliserez pour accéder au(x)
service(s).
Pour générer un certificat, en tant qu'utilisateur root
, tapez :
make cert
Configuration de Stunnel
Fichiers de
configuration
/etc/stunnel/stunnel.conf
Informations sur la configuration
En tant qu'utilisateur root
,
créez le répertoire utilisé pour le fichier .pid
créé quand le démon Stunnel démarre :
install -v -m750 -o stunnel -g stunnel -d /var/lib/stunnel/run &&
chown stunnel:stunnel /var/lib/stunnel
Ensuite, créez un fichier de configuration /etc/stunnel/stunnel.conf
de base en utilisant
les commandes suivantes en tant qu'utilisateur root
:
cat >/etc/stunnel/stunnel.conf << "EOF"
; File: /etc/stunnel/stunnel.conf
; Note: The pid and output locations are relative to the chroot location.
pid = /run/stunnel.pid
chroot = /var/lib/stunnel
client = no
setuid = stunnel
setgid = stunnel
cert = /etc/stunnel/stunnel.pem
;debug = 7
;output = stunnel.log
;[https]
;accept = 443
;connect = 80
;; "TIMEOUTclose = 0" is a workaround for a design flaw in Microsoft SSL
;; Microsoft implementations do not use SSL close-notify alert and thus
;; they are vulnerable to truncation attacks
;TIMEOUTclose = 0
EOF
Enfin, ajoutez le(s) service(s) que vous souhaitez chiffrer au
fichier de configuration. Le format ressemble à ce qui
suit :
[<service>
]
accept = <hostname:portnumber>
connect = <hostname:portnumber>
Si vous utilisez Stunnel pour
chiffrer un démon lancé à partir de [x]inetd, il se peut que vous
deviez désactiver ce démon dans le fichier /etc/[x]inetd.conf
et activer un service
<service>
_stunnel
correspondant. Il se peut que vous deviez également ajouter une
entrée adéquate dans /etc/services
.
Pour une explication complète des commandes et de leurs syntaxes,
utilisées dans le fichier de configuration, lancez man stunnel.
Unité Systemd
Pour démarrer le démon stunnel au démarrage, activez
l'unité systemd précédemment
installée en lançant la commande suivante en tant qu'utilisateur
root
:
systemctl enable stunnel