search_index.json 477 KB

1
  1. {"config":{"lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Installation d'un serveur Debian/Stretch s\u00e9curis\u00e9 (obsol\u00e8te) Pr\u00e9sentation Nous allons proc\u00e9der \u00e0 l'installation d'un serveur maison , s\u00e9curis\u00e9 dans la mesure du possible et de mes connaissances , avec explications et tests, afin de comprendre le pourquoi du comment. Nous utiliserons la distribution Debian dans sa derni\u00e8re mouture : Stretch. Ce ne sera pas un tutoriel \u00e0 suivre pas \u00e0 pas , mais plut\u00f4t un ensemble d'\u00e9tapes qui permettront d'installer et configurer SON serveur. Chaque \u00e9tape sera accompagn\u00e9e de tests pour en v\u00e9rifier le fonctionnement. Certains services seront install\u00e9s, comme un serveur de courriers (Postfix), un serveur DNS bind9, un serveur Web (Apache), un bouncer IRC, un serveur Git. Nous aurions pu faire d'autres choix, comme Unbound, Knot (DNS), Citadel (courrier), etc. Note : j'ai voulu utiliser le format Markdown pour \u00e9crire ce tuto; une mani\u00e8re de tester, d'apprendre le markdown. J'avoue qu'apr\u00e8s des ann\u00e9es d'utilisation de LaTeX et de Docbook, j'ai vraiment gal\u00e9r\u00e9: j'ai mis en place des v\u00e9rificateurs de syntaxe markdown, utilis\u00e9 des \u00e9diteurs sp\u00e9cialis\u00e9s comme Stackedit, Dillinger, des extensions sp\u00e9cifiques \u00e0 VisualCode, SublimeText ou Atom. Toutes ces solutions donnent un markdown valide diff\u00e9rent, qui n'est pas transform\u00e9 correctement si on change de convertisseur. Je sais qu'il y a plusieurs versions de markdown, mais elles pourraient \u00eatre compatibles entre elles. Des outils comme mkdocs sont remarquables, mais markdown, pas \u00e0 mon go\u00fbt. J'aime ce qui est clair et reproductible.","title":"Pr\u00e9sentation"},{"location":"#installation-dun-serveur-debianstretch-securise-obsolete","text":"","title":"Installation d'un serveur Debian/Stretch s\u00e9curis\u00e9 (obsol\u00e8te)"},{"location":"#presentation","text":"Nous allons proc\u00e9der \u00e0 l'installation d'un serveur maison , s\u00e9curis\u00e9 dans la mesure du possible et de mes connaissances , avec explications et tests, afin de comprendre le pourquoi du comment. Nous utiliserons la distribution Debian dans sa derni\u00e8re mouture : Stretch. Ce ne sera pas un tutoriel \u00e0 suivre pas \u00e0 pas , mais plut\u00f4t un ensemble d'\u00e9tapes qui permettront d'installer et configurer SON serveur. Chaque \u00e9tape sera accompagn\u00e9e de tests pour en v\u00e9rifier le fonctionnement. Certains services seront install\u00e9s, comme un serveur de courriers (Postfix), un serveur DNS bind9, un serveur Web (Apache), un bouncer IRC, un serveur Git. Nous aurions pu faire d'autres choix, comme Unbound, Knot (DNS), Citadel (courrier), etc. Note : j'ai voulu utiliser le format Markdown pour \u00e9crire ce tuto; une mani\u00e8re de tester, d'apprendre le markdown. J'avoue qu'apr\u00e8s des ann\u00e9es d'utilisation de LaTeX et de Docbook, j'ai vraiment gal\u00e9r\u00e9: j'ai mis en place des v\u00e9rificateurs de syntaxe markdown, utilis\u00e9 des \u00e9diteurs sp\u00e9cialis\u00e9s comme Stackedit, Dillinger, des extensions sp\u00e9cifiques \u00e0 VisualCode, SublimeText ou Atom. Toutes ces solutions donnent un markdown valide diff\u00e9rent, qui n'est pas transform\u00e9 correctement si on change de convertisseur. Je sais qu'il y a plusieurs versions de markdown, mais elles pourraient \u00eatre compatibles entre elles. Des outils comme mkdocs sont remarquables, mais markdown, pas \u00e0 mon go\u00fbt. J'aime ce qui est clair et reproductible.","title":"Pr\u00e9sentation"},{"location":"Authentification-Carte-%C3%A0-Puce/","text":"Utilisation d'une carte \u00e0 puce pour s'authentifier Nous allons voir comment s'authentifier (SSH, login) avec une carte \u00e0 puces (smartcard, openpgp). Configuration de la carte \u00e0 puce Utilisation de la carte \u00e0 puce pour chiffrer un fichier Avec Nautilus Nous allons utiliser Nautilus avec le plugin seahorse-nautilus . S\u00e9lectionnez le fichier, ou le dossier \u00e0 chiffrer. Clic gauche -> option Chiffrer. Une fen\u00eatre de dialogue s'affiche et vous permet de choisir la clef de chiffrement. Une fen\u00eatre vous demande ensuite le code PIN. Un fichier/dossier de m\u00eame nom avec l'extension .pgp est cr\u00e9\u00e9. Vous pouvez supprimer le fichier original. Le d\u00e9chiffrage fonctionne d'une mani\u00e8re similaire. On peut noter qu'il est aussi possible de r\u00e9aliser la m\u00eame op\u00e9ration avec les clefs que vous avez d\u00e9j\u00e0 sur votre poste. \u00c0 la main Chiffrer le fichier gpg2 --encrypt <mon_fichier> G\u00e9n\u00e8re un fichier avec l\u2019extension.gpg, illisible pour celui qui ne poss\u00e8de pas la cl\u00e9. D\u00e9chiffrer le fichier gpg2 --output mon_fichier_dechiffre --decrypt mon_fichier.gpg \u00c0 l\u2019ex\u00e9cution de cette commande, une bo\u00eete de dialogue vous demande de rentrer le mot de passe. C\u2019est la \u00ab passphrase \u00bb que vous aviez tap\u00e9e au moment de la g\u00e9n\u00e9ration des cl\u00e9s. Et voil\u00e0 le fichier \u00ab mon_fichier_dechiffre \u00bb appara\u00eet et devient parfaitement lisible. Chiffer-d\u00e9chiffer avec GNUPG Test: cr\u00e9ation d'un fichier texte, listage des clefs disponibles, chiffrage, d\u00e9chiffrage. Utilisation de la carte \u00e0 puce pour chiffrer un \u00e9mail (avec thunderbird et enigmail) Utilisation de la carte \u00e0 puce pour signer un fichier Avec Nautilus Nous allons utiliser Nautilus avec le plugin seahorse-nautilus . S\u00e9lectionnez le fichier, ou le dossier \u00e0 signer. Clic gauche -> option Signer. Une fen\u00eatre de dialogue s'affiche et vous permet de choisir la clef de signature. Une fen\u00eatre vous demande ensuite le code PIN. La v\u00e9rification de la signature fonctionne d'une mani\u00e8re similaire. Un fichier/dossier de m\u00eame nom avec l'extension .sig est cr\u00e9\u00e9. Vous pouvez supprimer le fichier original. On peut noter qu'il est aussi possible de r\u00e9aliser la m\u00eame op\u00e9ration avec les clefs que vous avez d\u00e9j\u00e0 sur votre poste. \u00c0 la main Utilisation de la carte \u00e0 puce pour signer un \u00e9mail Utilisation de la carte \u00e0 puce pour chiffrer un dossier (Gnome3) Utilisation de la carte \u00e0 puce pour se connecter/s'authentifier \u00e0/sur un serveur SSH distant Utilisation de la carte \u00e0 puce pour s'authentifier sur un poste Debian/Linux (login)","title":"Utilisation d'une carte \u00e0 puce pour s'authentifier"},{"location":"Authentification-Carte-%C3%A0-Puce/#utilisation-dune-carte-a-puce-pour-sauthentifier","text":"Nous allons voir comment s'authentifier (SSH, login) avec une carte \u00e0 puces (smartcard, openpgp).","title":"Utilisation d'une carte \u00e0 puce pour s'authentifier"},{"location":"Authentification-Carte-%C3%A0-Puce/#configuration-de-la-carte-a-puce","text":"","title":"Configuration de la carte \u00e0 puce"},{"location":"Authentification-Carte-%C3%A0-Puce/#utilisation-de-la-carte-a-puce-pour-chiffrer-un-fichier","text":"","title":"Utilisation de la carte \u00e0 puce pour chiffrer un fichier"},{"location":"Authentification-Carte-%C3%A0-Puce/#avec-nautilus","text":"Nous allons utiliser Nautilus avec le plugin seahorse-nautilus . S\u00e9lectionnez le fichier, ou le dossier \u00e0 chiffrer. Clic gauche -> option Chiffrer. Une fen\u00eatre de dialogue s'affiche et vous permet de choisir la clef de chiffrement. Une fen\u00eatre vous demande ensuite le code PIN. Un fichier/dossier de m\u00eame nom avec l'extension .pgp est cr\u00e9\u00e9. Vous pouvez supprimer le fichier original. Le d\u00e9chiffrage fonctionne d'une mani\u00e8re similaire. On peut noter qu'il est aussi possible de r\u00e9aliser la m\u00eame op\u00e9ration avec les clefs que vous avez d\u00e9j\u00e0 sur votre poste.","title":"Avec Nautilus"},{"location":"Authentification-Carte-%C3%A0-Puce/#a-la-main","text":"Chiffrer le fichier gpg2 --encrypt <mon_fichier> G\u00e9n\u00e8re un fichier avec l\u2019extension.gpg, illisible pour celui qui ne poss\u00e8de pas la cl\u00e9. D\u00e9chiffrer le fichier gpg2 --output mon_fichier_dechiffre --decrypt mon_fichier.gpg \u00c0 l\u2019ex\u00e9cution de cette commande, une bo\u00eete de dialogue vous demande de rentrer le mot de passe. C\u2019est la \u00ab passphrase \u00bb que vous aviez tap\u00e9e au moment de la g\u00e9n\u00e9ration des cl\u00e9s. Et voil\u00e0 le fichier \u00ab mon_fichier_dechiffre \u00bb appara\u00eet et devient parfaitement lisible. Chiffer-d\u00e9chiffer avec GNUPG Test: cr\u00e9ation d'un fichier texte, listage des clefs disponibles, chiffrage, d\u00e9chiffrage.","title":"\u00c0 la main"},{"location":"Authentification-Carte-%C3%A0-Puce/#utilisation-de-la-carte-a-puce-pour-chiffrer-un-email-avec-thunderbird-et-enigmail","text":"","title":"Utilisation de la carte \u00e0 puce pour chiffrer un \u00e9mail (avec thunderbird et enigmail)"},{"location":"Authentification-Carte-%C3%A0-Puce/#utilisation-de-la-carte-a-puce-pour-signer-un-fichier","text":"","title":"Utilisation de la carte \u00e0 puce pour signer un fichier"},{"location":"Authentification-Carte-%C3%A0-Puce/#avec-nautilus_1","text":"Nous allons utiliser Nautilus avec le plugin seahorse-nautilus . S\u00e9lectionnez le fichier, ou le dossier \u00e0 signer. Clic gauche -> option Signer. Une fen\u00eatre de dialogue s'affiche et vous permet de choisir la clef de signature. Une fen\u00eatre vous demande ensuite le code PIN. La v\u00e9rification de la signature fonctionne d'une mani\u00e8re similaire. Un fichier/dossier de m\u00eame nom avec l'extension .sig est cr\u00e9\u00e9. Vous pouvez supprimer le fichier original. On peut noter qu'il est aussi possible de r\u00e9aliser la m\u00eame op\u00e9ration avec les clefs que vous avez d\u00e9j\u00e0 sur votre poste.","title":"Avec Nautilus"},{"location":"Authentification-Carte-%C3%A0-Puce/#a-la-main_1","text":"","title":"\u00c0 la main"},{"location":"Authentification-Carte-%C3%A0-Puce/#utilisation-de-la-carte-a-puce-pour-signer-un-email","text":"","title":"Utilisation de la carte \u00e0 puce pour signer un \u00e9mail"},{"location":"Authentification-Carte-%C3%A0-Puce/#utilisation-de-la-carte-a-puce-pour-chiffrer-un-dossier-gnome3","text":"","title":"Utilisation de la carte \u00e0 puce pour chiffrer un dossier (Gnome3)"},{"location":"Authentification-Carte-%C3%A0-Puce/#utilisation-de-la-carte-a-puce-pour-se-connectersauthentifier-asur-un-serveur-ssh-distant","text":"","title":"Utilisation de la carte \u00e0 puce pour se connecter/s'authentifier \u00e0/sur un serveur SSH distant"},{"location":"Authentification-Carte-%C3%A0-Puce/#utilisation-de-la-carte-a-puce-pour-sauthentifier-sur-un-poste-debianlinux-login","text":"","title":"Utilisation de la carte \u00e0 puce pour s'authentifier sur un poste Debian/Linux (login)"},{"location":"Authentification-NFC/","text":"Utilisation d'un lecteur NFC et des \"tags\" pour l'authentification Nous allons configurer notre poste Linux/Debian afin d'utiliser un lecteur NFC et des tags pour l'authentification. Le but est: Se loguer sur la machine avec un tag figer/r\u00e9veiller la session en cours avec le tag","title":"Utilisation d'un lecteur NFC et des \"tags\" pour l'authentification"},{"location":"Authentification-NFC/#utilisation-dun-lecteur-nfc-et-des-tags-pour-lauthentification","text":"Nous allons configurer notre poste Linux/Debian afin d'utiliser un lecteur NFC et des tags pour l'authentification. Le but est: Se loguer sur la machine avec un tag figer/r\u00e9veiller la session en cours avec le tag","title":"Utilisation d'un lecteur NFC et des \"tags\" pour l'authentification"},{"location":"Clefs-SSH-Multiples/","text":"Gestion de clefs SSH multiples Le probl\u00e8me est le suivant: comment se connecter \u00e0 partir du m\u00eame poste client \u00e0 plusieurs serveurs, avec des clefs diff\u00e9rentes.","title":"Gestion de clefs SSH multiples"},{"location":"Clefs-SSH-Multiples/#gestion-de-clefs-ssh-multiples","text":"Le probl\u00e8me est le suivant: comment se connecter \u00e0 partir du m\u00eame poste client \u00e0 plusieurs serveurs, avec des clefs diff\u00e9rentes.","title":"Gestion de clefs SSH multiples"},{"location":"Configuration-R%C3%A9seau/","text":"Configuration du r\u00e9seau Nous avons utilis\u00e9 la configuration automatique du r\u00e9seau (DHCP). Il est temps de configurer manuellement les adresses IP pour avoir des adresses fixes dans le temps (faisable aussi avec DHCP si on a un serveur DHCP configurable) Configuration de l'IPV4 Les \u00e9l\u00e9ments suivants ont \u00e9t\u00e9 configur\u00e9s dans l'interface de configuration de ma box (Freebox dans mon cas) Mon r\u00e9seau domestique est: 192.168.111.0 Ma passerelle est: 192.168.111.254 J'ai choisi l'adresse suivante pour mon serveur: 192.168.111.160 et j'ai configur\u00e9 cette adresse comme zone \u201cDMZ\u201d sur ma Freebox (zone d\u00e9militaris\u00e9e, accessible de l'ext\u00e9rieur) La configuration se fait dans le fichier: /etc/network/interfaces Nous avons ceci: source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug enp4s0 iface enp4s0 inet dhcp # This is an autoconfigured IPv6 interface iface enp4s0 inet6 auto Vous noterez que le nom des interfaces a chang\u00e9 ... Modification de l'interface r\u00e9seau IPV4: Les lignes concern\u00e9es sont: # The primary network interface allow-hotplug enp4s0 iface enp4s0 inet dhcp Modifiez ces lignes pour obtenir: # The primary network interface allow-hotplug enp4s0 # iface enp4s0 inet dhcp (ligne \u00e0 commenter) # lignes \u00e0 ajouter iface enp4s0 inet static # IP address address 192.168.111.160 # network address network 192.168.111.0 # subnet mask netmask 255.255.255.0 # broadcast address broadcast 192.168.111.255 # default gateway gateway 192.168.111.254 # name server dns-nameservers 8.8.8.8 8.8.4.4 Explications: enp4s0: c'est le nom donn\u00e9 par Debian \u00e0 mon interface r\u00e9seau l'adresse IP est l'adresse que j'ai choisie dans mon r\u00e9seau local pour mon serveur nous avons ensuite l'adresse r\u00e9seau puis le masque l'adresse de broadcast et l'adresse de sortie de notre r\u00e9seau (en fait l'adresse est fix\u00e9e par notre routeur: la mienne est: 254) les serveurs de nom: nous allons mettre un serveur de nom provisoire avant d'installer notre propre serveur de noms. J'ai pris ici les serveurs de Google. Sauvegarde du fichier et red\u00e9marrage du serveur. Vous noterez que la connexion par ssh \u00e9choue, car l'empreinte du serveur a chang\u00e9. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:w0HKVAyxVFC2t50O6hte6PioCIAjcwxus7Mm8/Q+NBo. Please contact your system administrator. Add correct host key in /home/eric/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/eric/.ssh/known_hosts:14 remove with: ssh-keygen -f \"/home/eric/.ssh/known_hosts\" -R atom ECDSA host key for atom has changed and you have requested strict checking. Host key verification failed. Suivez les instructions donn\u00e9es par le message de ssh et reconnectez-vous. eric@aldebaran:~$ ssh ericadmin@atom The authenticity of host 'atom (192.168.111.160)' can't be established. ECDSA key fingerprint is SHA256:w0HKVAyxVFC2t50O6hte6PioCIAjcwxus7Mm8/Q+NBo. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'atom,192.168.111.160' (ECDSA) to the list of known hosts. Last login: Mon Dec 25 10:57:50 2017 from 192.168.111.150 ericadmin@atom:~$ Test de l'adresse IPV4 (mode super-utilisateur) root@atom:/home/ericadmin# ifconfig enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.111.160 netmask 255.255.255.0 broadcast 192.168.111.255 inet6 2a01:e0a:54:c220:223:54ff:fec6:a07 prefixlen 64 scopeid 0x0<global> inet6 fe80::223:54ff:fec6:a07 prefixlen 64 scopeid 0x20<link> ether 00:23:54:c6:0a:07 txqueuelen 1000 (Ethernet) RX packets 1666 bytes 134780 (131.6 KiB) RX errors 0 dropped 2 overruns 0 frame 0 TX packets 432 bytes 39182 (38.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Boucle locale) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 root@atom:/home/ericadmin# Mon adresse IPV4 est la bonne: 192.168.111.160 Configuration de l'IPV6 Nous allons utiliser la configuration automatique. Un pr\u00e9fixe IPV6 nous est attribu\u00e9 par notre fournisseur d'acc\u00e8s. Nous disposons d'un pool gigantesque d'adresses IPV6 utilisables comme bon nous semble. Avec la configuration automatique, une adresse ipv6 est fabriqu\u00e9e \u00e0 partir de l'adresse mac de notre interface r\u00e9seau. C'est une adresse fixe qui ne changera pas tant que nous ne changerons pas le mat\u00e9riel r\u00e9seau du serveur. En configuration manuelle, nous pouvons attribuer l'adresse de notre choix, comprise bien s\u00fbr dans le pool d'adresses. Nous allons ajouter une option qui permet d'augmenter la protection de la vie priv\u00e9e. Du fait du pool d'adresses disponibles, il est possible de demander au syst\u00e8me de changer r\u00e9guli\u00e8rement d'adresses pour les requ\u00eates ext\u00e9rieures. L'interface r\u00e9seau de notre serveur peut \u00eatre dot\u00e9e de plusieurs adresses IPV6 simultan\u00e9ment. L'option \u00e0 rajouter est: privext 2 . Note: nous devrons changer cette configuration ensuite car il faut que l'adresse unique renvoy\u00e9e par le serveur DNS soit la m\u00eame que l'adresse d'\u00e9mission ... L'adresse d'\u00e9mission change avec le param\u00e8tre privext 2 et cette adresse ne correspond pas avec celle renvoy\u00e9e par le serveur DNS. Il nous faudra employer une adresse statique, et unique pour notre serveur (en IPV4 et IPV6.) #This is an autoconfigured IPv6 interface iface enp2s0 inet6 auto privext 2 Le r\u00e9sultat est le suivant: enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.111.240 netmask 255.255.255.0 broadcast 192.168.111.255 inet6 2a01:e0a:54:c220:e128:ec57:4b1a:b078 prefixlen 64 scopeid 0x0<global> inet6 fe80::3aea:a7ff:fea6:cf93 prefixlen 64 scopeid 0x20<link> inet6 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 prefixlen 64 scopeid 0x0<global> ether 38:ea:a7:a6:cf:93 txqueuelen 1000 (Ethernet) RX packets 7753 bytes 551016 (538.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1579 bytes 152907 (149.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 18 Vous noterez la pr\u00e9sence de 3 adresses ipv6. Une adresse commen\u00e7ant par inet6 fe80: Cette adresse n'est pas rout\u00e9e sur le r\u00e9seau internet. Elle ne sert que pour le r\u00e9seau local. Elle est marqu\u00e9e: \u00ablink\u00bb. 2 autres adresses ipv6 marqu\u00e9es \u00abglobal\u00bb: l'une d'elle est l'adresse bas\u00e9e sur l'adresse mac de la carte r\u00e9seau, l'autre a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9e par le syst\u00e8me. Ces 3 adresses sont dans le pool d'adresses attribu\u00e9 par le FAI, et donc, les 64 premiers bits de l'adresse constituent le pr\u00e9fixe ipv6. Le pool d'adresses peu \u00eatre de 64 bits ou 56 suivant les fournisseurs, ou moins encore. Tester la configuration r\u00e9seau Je teste la connexion IPV6 \u00e0 partir de ma machine de bureau. Premi\u00e8re adresse ipv6: eric@aldebaran:~$ ping6 2a01:e0a:54:c220:e128:ec57:4b1a:b078 PING 2a01:e0a:54:c220:e128:ec57:4b1a:b078(2a01:e0a:54:c220:e128:ec57:4b1a:b078) 56 data bytes 64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=1 ttl=64 time=0.487 ms 64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=2 ttl=64 time=0.339 ms 64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=3 ttl=64 time=0.322 ms ^C 2a01:e0a:54:c220:e128:ec57:4b1a:b078 ping statistics 3 packets transmitted, 3 received, 0% packet loss, time 2046ms rtt min/avg/max/mdev = 0.322/0.382/0.487/0.077 ms eric@aldebaran:~$ 2\u00e8me adresse ipv6: eric@aldebaran:~$ ping6 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 PING 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93(2a01:e0a:54:c220:3aea:a7ff:fea6:cf93) 56 data bytes 64 bytes from 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93: icmp_seq=1 ttl=64 time=0.571 ms 64 bytes from 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93: icmp_seq=2 ttl=64 time=0.424 ms ^C 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 ping statistics 2 packets transmitted, 2 received, 0% packet loss, time 1020ms rtt min/avg/max/mdev = 0.424/0.497/0.571/0.076 ms 3\u00e8me adresse ipv6: root@aldebaran:/home/eric# ping6 -I enp4s0 fe80:0:0:0:3aea:a7ff:fea6:cf93 PING fe80:0:0:0:3aea:a7ff:fea6:cf93(fe80::3aea:a7ff:fea6:cf93) from fe80::1e6f:65ff:fe92:dd1f%enp4s0 enp4s0: 56 data bytes 64 bytes from fe80::3aea:a7ff:fea6:cf93%enp4s0: icmp_seq=1 ttl=64 time=0.336 ms 64 bytes from fe80::3aea:a7ff:fea6:cf93%enp4s0: icmp_seq=2 ttl=64 time=0.357 ms ^C fe80:0:0:0:3aea:a7ff:fea6:cf93 ping statistics 2 packets transmitted, 2 received, 0% packet loss, time 1026ms rtt min/avg/max/mdev = 0.336/0.346/0.357/0.021 ms Vous noterez que pour l'adresse \u00ablink\u00bb commen\u00e7ant par Fe80::, il faut sp\u00e9cifier l'interface r\u00e9seau. (-i enp4s0 ) Vous pouvez constater que tout marche comme il se doit. Il faut bien s\u00fbr tester la connectivit\u00e9 dans les 2 sens: serveur -> autre machine ET autre machine -> serveur. Quelques liens: Linux France en fran\u00e7ais Cyberciti IPV6 Howto en anglais","title":"Configuration du r\u00e9seau"},{"location":"Configuration-R%C3%A9seau/#configuration-du-reseau","text":"Nous avons utilis\u00e9 la configuration automatique du r\u00e9seau (DHCP). Il est temps de configurer manuellement les adresses IP pour avoir des adresses fixes dans le temps (faisable aussi avec DHCP si on a un serveur DHCP configurable)","title":"Configuration du r\u00e9seau"},{"location":"Configuration-R%C3%A9seau/#configuration-de-lipv4","text":"Les \u00e9l\u00e9ments suivants ont \u00e9t\u00e9 configur\u00e9s dans l'interface de configuration de ma box (Freebox dans mon cas) Mon r\u00e9seau domestique est: 192.168.111.0 Ma passerelle est: 192.168.111.254 J'ai choisi l'adresse suivante pour mon serveur: 192.168.111.160 et j'ai configur\u00e9 cette adresse comme zone \u201cDMZ\u201d sur ma Freebox (zone d\u00e9militaris\u00e9e, accessible de l'ext\u00e9rieur) La configuration se fait dans le fichier: /etc/network/interfaces Nous avons ceci: source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug enp4s0 iface enp4s0 inet dhcp # This is an autoconfigured IPv6 interface iface enp4s0 inet6 auto Vous noterez que le nom des interfaces a chang\u00e9 ... Modification de l'interface r\u00e9seau IPV4: Les lignes concern\u00e9es sont: # The primary network interface allow-hotplug enp4s0 iface enp4s0 inet dhcp Modifiez ces lignes pour obtenir: # The primary network interface allow-hotplug enp4s0 # iface enp4s0 inet dhcp (ligne \u00e0 commenter) # lignes \u00e0 ajouter iface enp4s0 inet static # IP address address 192.168.111.160 # network address network 192.168.111.0 # subnet mask netmask 255.255.255.0 # broadcast address broadcast 192.168.111.255 # default gateway gateway 192.168.111.254 # name server dns-nameservers 8.8.8.8 8.8.4.4 Explications: enp4s0: c'est le nom donn\u00e9 par Debian \u00e0 mon interface r\u00e9seau l'adresse IP est l'adresse que j'ai choisie dans mon r\u00e9seau local pour mon serveur nous avons ensuite l'adresse r\u00e9seau puis le masque l'adresse de broadcast et l'adresse de sortie de notre r\u00e9seau (en fait l'adresse est fix\u00e9e par notre routeur: la mienne est: 254) les serveurs de nom: nous allons mettre un serveur de nom provisoire avant d'installer notre propre serveur de noms. J'ai pris ici les serveurs de Google. Sauvegarde du fichier et red\u00e9marrage du serveur. Vous noterez que la connexion par ssh \u00e9choue, car l'empreinte du serveur a chang\u00e9. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:w0HKVAyxVFC2t50O6hte6PioCIAjcwxus7Mm8/Q+NBo. Please contact your system administrator. Add correct host key in /home/eric/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/eric/.ssh/known_hosts:14 remove with: ssh-keygen -f \"/home/eric/.ssh/known_hosts\" -R atom ECDSA host key for atom has changed and you have requested strict checking. Host key verification failed. Suivez les instructions donn\u00e9es par le message de ssh et reconnectez-vous. eric@aldebaran:~$ ssh ericadmin@atom The authenticity of host 'atom (192.168.111.160)' can't be established. ECDSA key fingerprint is SHA256:w0HKVAyxVFC2t50O6hte6PioCIAjcwxus7Mm8/Q+NBo. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'atom,192.168.111.160' (ECDSA) to the list of known hosts. Last login: Mon Dec 25 10:57:50 2017 from 192.168.111.150 ericadmin@atom:~$ Test de l'adresse IPV4 (mode super-utilisateur) root@atom:/home/ericadmin# ifconfig enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.111.160 netmask 255.255.255.0 broadcast 192.168.111.255 inet6 2a01:e0a:54:c220:223:54ff:fec6:a07 prefixlen 64 scopeid 0x0<global> inet6 fe80::223:54ff:fec6:a07 prefixlen 64 scopeid 0x20<link> ether 00:23:54:c6:0a:07 txqueuelen 1000 (Ethernet) RX packets 1666 bytes 134780 (131.6 KiB) RX errors 0 dropped 2 overruns 0 frame 0 TX packets 432 bytes 39182 (38.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Boucle locale) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 root@atom:/home/ericadmin# Mon adresse IPV4 est la bonne: 192.168.111.160","title":"Configuration de l'IPV4"},{"location":"Configuration-R%C3%A9seau/#configuration-de-lipv6","text":"Nous allons utiliser la configuration automatique. Un pr\u00e9fixe IPV6 nous est attribu\u00e9 par notre fournisseur d'acc\u00e8s. Nous disposons d'un pool gigantesque d'adresses IPV6 utilisables comme bon nous semble. Avec la configuration automatique, une adresse ipv6 est fabriqu\u00e9e \u00e0 partir de l'adresse mac de notre interface r\u00e9seau. C'est une adresse fixe qui ne changera pas tant que nous ne changerons pas le mat\u00e9riel r\u00e9seau du serveur. En configuration manuelle, nous pouvons attribuer l'adresse de notre choix, comprise bien s\u00fbr dans le pool d'adresses. Nous allons ajouter une option qui permet d'augmenter la protection de la vie priv\u00e9e. Du fait du pool d'adresses disponibles, il est possible de demander au syst\u00e8me de changer r\u00e9guli\u00e8rement d'adresses pour les requ\u00eates ext\u00e9rieures. L'interface r\u00e9seau de notre serveur peut \u00eatre dot\u00e9e de plusieurs adresses IPV6 simultan\u00e9ment. L'option \u00e0 rajouter est: privext 2 . Note: nous devrons changer cette configuration ensuite car il faut que l'adresse unique renvoy\u00e9e par le serveur DNS soit la m\u00eame que l'adresse d'\u00e9mission ... L'adresse d'\u00e9mission change avec le param\u00e8tre privext 2 et cette adresse ne correspond pas avec celle renvoy\u00e9e par le serveur DNS. Il nous faudra employer une adresse statique, et unique pour notre serveur (en IPV4 et IPV6.) #This is an autoconfigured IPv6 interface iface enp2s0 inet6 auto privext 2 Le r\u00e9sultat est le suivant: enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.111.240 netmask 255.255.255.0 broadcast 192.168.111.255 inet6 2a01:e0a:54:c220:e128:ec57:4b1a:b078 prefixlen 64 scopeid 0x0<global> inet6 fe80::3aea:a7ff:fea6:cf93 prefixlen 64 scopeid 0x20<link> inet6 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 prefixlen 64 scopeid 0x0<global> ether 38:ea:a7:a6:cf:93 txqueuelen 1000 (Ethernet) RX packets 7753 bytes 551016 (538.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1579 bytes 152907 (149.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 18 Vous noterez la pr\u00e9sence de 3 adresses ipv6. Une adresse commen\u00e7ant par inet6 fe80: Cette adresse n'est pas rout\u00e9e sur le r\u00e9seau internet. Elle ne sert que pour le r\u00e9seau local. Elle est marqu\u00e9e: \u00ablink\u00bb. 2 autres adresses ipv6 marqu\u00e9es \u00abglobal\u00bb: l'une d'elle est l'adresse bas\u00e9e sur l'adresse mac de la carte r\u00e9seau, l'autre a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9e par le syst\u00e8me. Ces 3 adresses sont dans le pool d'adresses attribu\u00e9 par le FAI, et donc, les 64 premiers bits de l'adresse constituent le pr\u00e9fixe ipv6. Le pool d'adresses peu \u00eatre de 64 bits ou 56 suivant les fournisseurs, ou moins encore.","title":"Configuration de l'IPV6"},{"location":"Configuration-R%C3%A9seau/#tester-la-configuration-reseau","text":"Je teste la connexion IPV6 \u00e0 partir de ma machine de bureau. Premi\u00e8re adresse ipv6: eric@aldebaran:~$ ping6 2a01:e0a:54:c220:e128:ec57:4b1a:b078 PING 2a01:e0a:54:c220:e128:ec57:4b1a:b078(2a01:e0a:54:c220:e128:ec57:4b1a:b078) 56 data bytes 64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=1 ttl=64 time=0.487 ms 64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=2 ttl=64 time=0.339 ms 64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=3 ttl=64 time=0.322 ms ^C 2a01:e0a:54:c220:e128:ec57:4b1a:b078 ping statistics 3 packets transmitted, 3 received, 0% packet loss, time 2046ms rtt min/avg/max/mdev = 0.322/0.382/0.487/0.077 ms eric@aldebaran:~$ 2\u00e8me adresse ipv6: eric@aldebaran:~$ ping6 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 PING 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93(2a01:e0a:54:c220:3aea:a7ff:fea6:cf93) 56 data bytes 64 bytes from 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93: icmp_seq=1 ttl=64 time=0.571 ms 64 bytes from 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93: icmp_seq=2 ttl=64 time=0.424 ms ^C 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 ping statistics 2 packets transmitted, 2 received, 0% packet loss, time 1020ms rtt min/avg/max/mdev = 0.424/0.497/0.571/0.076 ms 3\u00e8me adresse ipv6: root@aldebaran:/home/eric# ping6 -I enp4s0 fe80:0:0:0:3aea:a7ff:fea6:cf93 PING fe80:0:0:0:3aea:a7ff:fea6:cf93(fe80::3aea:a7ff:fea6:cf93) from fe80::1e6f:65ff:fe92:dd1f%enp4s0 enp4s0: 56 data bytes 64 bytes from fe80::3aea:a7ff:fea6:cf93%enp4s0: icmp_seq=1 ttl=64 time=0.336 ms 64 bytes from fe80::3aea:a7ff:fea6:cf93%enp4s0: icmp_seq=2 ttl=64 time=0.357 ms ^C fe80:0:0:0:3aea:a7ff:fea6:cf93 ping statistics 2 packets transmitted, 2 received, 0% packet loss, time 1026ms rtt min/avg/max/mdev = 0.336/0.346/0.357/0.021 ms Vous noterez que pour l'adresse \u00ablink\u00bb commen\u00e7ant par Fe80::, il faut sp\u00e9cifier l'interface r\u00e9seau. (-i enp4s0 ) Vous pouvez constater que tout marche comme il se doit. Il faut bien s\u00fbr tester la connectivit\u00e9 dans les 2 sens: serveur -> autre machine ET autre machine -> serveur. Quelques liens: Linux France en fran\u00e7ais Cyberciti IPV6 Howto en anglais","title":"Tester la configuration r\u00e9seau"},{"location":"Courrier-Comptes-Virtuels/","text":"Ajout des comptes \u00e9mail virtuels Nous allons ajouter maintenant des utilisateurs virtuels, comptes qui ne sont pas des utilisateurs, users de la machine. Ces utilisateurs n'ont pas de compte Unix sur la machine, pas de shell, pas de r\u00e9pertoire personnel: ils n'existent que pour les composants du serveur de messagerie. Ces comptes \u00e9mail avec leurs caract\u00e9ristiques peuvent \u00eatre stock\u00e9s de diff\u00e9rentes mani\u00e8res. Il est possible d'utiliser des fichiers plats ou diff\u00e9rentes bases de donn\u00e9es comme mysql , postgresql , sqlite ou plus simplement encore dbm . Ceci se configure dans les fichier /etc/postfix/main.cf . Pour les syst\u00e8mes de bases de donn\u00e9es sql , il faudra fournir les donn\u00e9es d'acc\u00e8s \u00e0 la base de donn\u00e9es dans des fichiers s\u00e9par\u00e9s. Les adresses \u00e9mail ainsi que les mots de passe seront stock\u00e9s dans un fichier plat ou une base de donn\u00e9es. Il est certainement possible d'ajouter la configuration des comptes mail virtuels \u00e0 notre configuration actuelle. Apr\u00e8s m\u00fbre r\u00e9flexion, j'ai chois de proc\u00e9der diff\u00e9remment: nous allons tester les diff\u00e9rentes solutions de stockage \u00e0 partir d'une installation propre de postfix/dovecot. Les solutions test\u00e9es seront: dbm , sqlite et postgresql que nous avons d\u00e9j\u00e0 install\u00e9e pour gogs . Les solutions \u00e0 base de mysql sont tr\u00e8s souvent d\u00e9ploy\u00e9es et sont donc document\u00e9es. Nous pourrons toujours rajouter cette derni\u00e8re si le temps (et l'envie) le permet(tent). Mise \u00e0 blanc de nos configurations Nous avons mis plusieurs serviecs en route pour configurer notre serveur de mails; voici la liste des services \u00e0 arr\u00eater: postfix dovecot dkim dmarc spf root@atom:/home/ericadmin# service postfix stop root@atom:/home/ericadmin# service dovecot stop root@atom:/home/ericadmin# service opendkim stop root@atom:/home/ericadmin# service opendmarc stop root@atom:/home/ericadmin# service openspf stop Failed to stop openspf.service: Unit openspf.service not loaded. root@atom:/home/ericadmin# V\u00e9rification des ports: root@atom:/home/ericadmin# netstat -tlpn Connexions Internet actives (seulement serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 388/apache2 tcp 0 0 192.168.111.160:53 0.0.0.0:* LISTEN 460/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 460/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 523/sshd tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 544/postgres tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 460/named tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 388/apache2 tcp6 0 0 :::53 :::* LISTEN 460/named tcp6 0 0 :::22 :::* LISTEN 523/sshd tcp6 0 0 :::3000 :::* LISTEN 15740/gogs tcp6 0 0 ::1:5432 :::* LISTEN 544/postgres tcp6 0 0 ::1:953 :::* LISTEN 460/named root@atom:/home/ericadmin# Voil\u00e0, notre serveur de messagerie est arr\u00eat\u00e9 ainsi que tous les services accessoires. Sauvegarde de l'ancienne configuration Nous allons maintenant sauvegarder les r\u00e9pertoires contenant notre configuration actuelle. Nous laisserons les r\u00e9pertoires opendmarc , opendkim , openspf tels qu'ils sont; nous configurerons notre serveur d'email sans les utiliser. Il vous sera toujours possible de vous r\u00e9ferer \u00e0 leur installation/configuration dans la partie du tutoriel correspondante. root@atom:/home/ericadmin# cd /etc root@atom:/etc# mv postfix postfix.user root@atom:/etc# mv dovecot/ dovecot.user root@atom:/etc# cd /var/lib root@atom:/var/lib# mv dovecot dovecot.user Suppression des paquets postfix et dovecot Nous allons maintenant proc\u00e9der \u00e0 la suppression des paquets dovecot et postfix: Installation du paquet exim4 qui de facto va supprimer tout postfix. On va lister les paquets dovecot et les supprimer manuellement. root@atom:/etc# apt install exim4-daemon-light etc .... root@atom:/etc# dpkg -l | grep dovecot ii dovecot-core 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - core files ii dovecot-imapd 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - IMAP daemon ii dovecot-sqlite 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - SQLite support root@atom:/etc# dpkg --purge dovecot-core dovecot-imapd dovecot-sqlite (Lecture de la base de donn\u00e9es... 40268 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Suppression de dovecot-imapd (1:2.2.27-3+deb9u3) ... Suppression de dovecot-sqlite (1:2.2.27-3+deb9u3) ... Suppression de dovecot-core (1:2.2.27-3+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... root@atom:/etc# Voil\u00e0, les paquets sont supprim\u00e9s (on a aussi purg\u00e9 les fichiers de configuration, ce qui permet l'installation de nouveaux fichiers; on va les r\u00e9installer et avoir une copie propre des fichiers de configuration. Relancez votre serveur (\u00e9teindre puis rallumer ....) root@atom:/etc# apt install postfix postfix-pgsql postfix-sqlite root@atom:/etc# dpkg -l | grep postfix ii postfix 3.1.9-0+deb9u2 i386 High-performance mail transport agent ii postfix-pgsql 3.1.9-0+deb9u2 i386 PostgreSQL map support for Postfix rc postfix-policyd-spf-python 2.0.1-1 all Postfix policy server for SPF checking ri postfix-sqlite 3.1.9-0+deb9u2 i386 SQLite map support for Postfix root@atom:/etc# Nous avons donc postfix d'install\u00e9 avec les modules postgresql et sqlite. root@atom:/etc# apt install dovecot-core dovecot-sqlite dovecot-pgsql dovecot-imapd etc ... Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service \u2192 /lib/systemd/system/dovecot.service. Param\u00e9trage de dovecot-pgsql (1:2.2.27-3+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u9) ... Param\u00e9trage de dovecot-imapd (1:2.2.27-3+deb9u3) ... etc ... Creating config file /etc/dovecot/conf.d/20-imap.conf with new version Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de dovecot-sqlite (1:2.2.27-3+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour dovecot-core (1:2.2.27-3+deb9u3) ... root@atom:/etc# dpkg -l | grep dovecot ii dovecot-core 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - core files ii dovecot-imapd 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - IMAP daemon ii dovecot-pgsql 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - PostgreSQL support ii dovecot-sqlite 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - SQLite support root@atom:/etc# Voil\u00e0, dovecot est r\u00e9-install\u00e9 avec le support de sqlite et postgresql. Premi\u00e8res configurations Vous pouvez reprendre les \u00e9tapes de configuration de postfix comme d\u00e9crites dans la partie correspondante du tutoriel (Installation d'un serveur de courrier basique). Reprenez les tests pour pour assurer de son bon fonctionnement. Test d'envoi d'un compte utilisateur \u00e0 un autre root -> ericadmin ericadmin -> root Test d'envoi de messages \u00e0 partir de ce serveur sur mon serveur principal Test d'envoi de messages \u00e0 partir d'un poste ext\u00e9rieur Test de l'envoi \u00e0 root pour v\u00e9rifier la redirection Une fois ces tests effectu\u00e9s et r\u00e9ussis, nous pouvons passer \u00e0 l'\u00e9tape suivante. Utilisation du format Maildir pour nos courriels Je reproduis ici ce que nous avions d\u00e9j\u00e0 fait auparavant: C'est ici que l'on configure si on veut un fichier unique qui contient tous les messages (type inbox) ou un fichier par \u00e9mail (type Maildir). Ce r\u00e9glage ne concerne que la d\u00e9livrance locale des courriers. Cela se passe dans le fichier /etc/postfix/main.cf On rajoute les lignes suivantes: home_mailbox = Maildir/ mailbox_command = Si ces lignes existaient avant, il faut les commenter (ajout d'un # en d\u00e9but de ligne.) On recharge le fichier de conf service postfix reload Consid\u00e9rations g\u00e9n\u00e9rales et architecture Dans la premi\u00e8re partie du tutoriel, nous avons configur\u00e9 postfix pour des comptes mails d'utilisateurs (users) du serveur: nous avions root et ericadmin ; nous avons aussi configur\u00e9 un fichier etc/aliases pour rediriger certaines destinations vers le compte ericadmin . Ainsi, root , postmaster , webmaster , abuse ont \u00e9t\u00e9 redirig\u00e9s vers ericadmin . Les adresses mail postmaster , webmaster , abuse n\u00e9cessaires au fonctionnement d'un serveur mail et web n'ont pas de comptes utilisateur associ\u00e9. Ce sont d\u00e9j\u00e0 des adresses virtuelles. Les mails pour ces destinations sont redirig\u00e9s vers ericadmin . Nous allons maintenant configurer postfix pour qu'il accepte de g\u00e9rer des domaines diff\u00e9rents, par exemple, yojik.net , yojik.org , yojik.fr . Nous pourrons cr\u00e9er autant d'adresses \u00e9mail que nous voulons, associ\u00e9es \u00e0 ces domaines et elles seront d\u00e9livr\u00e9es s\u00e9par\u00e8ment dans des bo\u00eetes \u00e0 lettres distinctes. Les diff\u00e9rents domaines g\u00e9r\u00e9s seront stock\u00e9s soit dans un fichier plat, soit dans une base de donn\u00e9es suivant notre configuration. Les adresses \u00e9mail \u00e9galement. Il y aura aussi un fichier alias (en base de donn\u00e9es ou non) qui permet les redirections. Il aura la m\u00eame fonction que /etc/alias mais avec une port\u00e9e plus grande puisqu'il peut g\u00e9rer des domaines diff\u00e9rents. Postfix ne g\u00e8re pas l'authentification qui est d\u00e9port\u00e9e \u00e0 dovecot . Nous verrons ensuite comment configurer cette partie. Le chiffrage est \u00e9galement configur\u00e9 dans la partie dovecot . Il est possible de configurer postfix pour qu'il g\u00e8re et l'acheminement local et l'acheminement virtuel ou bien, que toutes les adresses mail, locales ou non soient g\u00e9r\u00e9es virtuellement. C'est le choix que j'ai fait. Utilisation des fichiers dbm","title":"Ajout des comptes \u00e9mail virtuels"},{"location":"Courrier-Comptes-Virtuels/#ajout-des-comptes-email-virtuels","text":"Nous allons ajouter maintenant des utilisateurs virtuels, comptes qui ne sont pas des utilisateurs, users de la machine. Ces utilisateurs n'ont pas de compte Unix sur la machine, pas de shell, pas de r\u00e9pertoire personnel: ils n'existent que pour les composants du serveur de messagerie. Ces comptes \u00e9mail avec leurs caract\u00e9ristiques peuvent \u00eatre stock\u00e9s de diff\u00e9rentes mani\u00e8res. Il est possible d'utiliser des fichiers plats ou diff\u00e9rentes bases de donn\u00e9es comme mysql , postgresql , sqlite ou plus simplement encore dbm . Ceci se configure dans les fichier /etc/postfix/main.cf . Pour les syst\u00e8mes de bases de donn\u00e9es sql , il faudra fournir les donn\u00e9es d'acc\u00e8s \u00e0 la base de donn\u00e9es dans des fichiers s\u00e9par\u00e9s. Les adresses \u00e9mail ainsi que les mots de passe seront stock\u00e9s dans un fichier plat ou une base de donn\u00e9es. Il est certainement possible d'ajouter la configuration des comptes mail virtuels \u00e0 notre configuration actuelle. Apr\u00e8s m\u00fbre r\u00e9flexion, j'ai chois de proc\u00e9der diff\u00e9remment: nous allons tester les diff\u00e9rentes solutions de stockage \u00e0 partir d'une installation propre de postfix/dovecot. Les solutions test\u00e9es seront: dbm , sqlite et postgresql que nous avons d\u00e9j\u00e0 install\u00e9e pour gogs . Les solutions \u00e0 base de mysql sont tr\u00e8s souvent d\u00e9ploy\u00e9es et sont donc document\u00e9es. Nous pourrons toujours rajouter cette derni\u00e8re si le temps (et l'envie) le permet(tent).","title":"Ajout des comptes \u00e9mail virtuels"},{"location":"Courrier-Comptes-Virtuels/#mise-a-blanc-de-nos-configurations","text":"Nous avons mis plusieurs serviecs en route pour configurer notre serveur de mails; voici la liste des services \u00e0 arr\u00eater: postfix dovecot dkim dmarc spf root@atom:/home/ericadmin# service postfix stop root@atom:/home/ericadmin# service dovecot stop root@atom:/home/ericadmin# service opendkim stop root@atom:/home/ericadmin# service opendmarc stop root@atom:/home/ericadmin# service openspf stop Failed to stop openspf.service: Unit openspf.service not loaded. root@atom:/home/ericadmin# V\u00e9rification des ports: root@atom:/home/ericadmin# netstat -tlpn Connexions Internet actives (seulement serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 388/apache2 tcp 0 0 192.168.111.160:53 0.0.0.0:* LISTEN 460/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 460/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 523/sshd tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 544/postgres tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 460/named tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 388/apache2 tcp6 0 0 :::53 :::* LISTEN 460/named tcp6 0 0 :::22 :::* LISTEN 523/sshd tcp6 0 0 :::3000 :::* LISTEN 15740/gogs tcp6 0 0 ::1:5432 :::* LISTEN 544/postgres tcp6 0 0 ::1:953 :::* LISTEN 460/named root@atom:/home/ericadmin# Voil\u00e0, notre serveur de messagerie est arr\u00eat\u00e9 ainsi que tous les services accessoires.","title":"Mise \u00e0 blanc de nos configurations"},{"location":"Courrier-Comptes-Virtuels/#sauvegarde-de-lancienne-configuration","text":"Nous allons maintenant sauvegarder les r\u00e9pertoires contenant notre configuration actuelle. Nous laisserons les r\u00e9pertoires opendmarc , opendkim , openspf tels qu'ils sont; nous configurerons notre serveur d'email sans les utiliser. Il vous sera toujours possible de vous r\u00e9ferer \u00e0 leur installation/configuration dans la partie du tutoriel correspondante. root@atom:/home/ericadmin# cd /etc root@atom:/etc# mv postfix postfix.user root@atom:/etc# mv dovecot/ dovecot.user root@atom:/etc# cd /var/lib root@atom:/var/lib# mv dovecot dovecot.user","title":"Sauvegarde de l'ancienne configuration"},{"location":"Courrier-Comptes-Virtuels/#suppression-des-paquets-postfix-et-dovecot","text":"Nous allons maintenant proc\u00e9der \u00e0 la suppression des paquets dovecot et postfix: Installation du paquet exim4 qui de facto va supprimer tout postfix. On va lister les paquets dovecot et les supprimer manuellement. root@atom:/etc# apt install exim4-daemon-light etc .... root@atom:/etc# dpkg -l | grep dovecot ii dovecot-core 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - core files ii dovecot-imapd 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - IMAP daemon ii dovecot-sqlite 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - SQLite support root@atom:/etc# dpkg --purge dovecot-core dovecot-imapd dovecot-sqlite (Lecture de la base de donn\u00e9es... 40268 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Suppression de dovecot-imapd (1:2.2.27-3+deb9u3) ... Suppression de dovecot-sqlite (1:2.2.27-3+deb9u3) ... Suppression de dovecot-core (1:2.2.27-3+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... root@atom:/etc# Voil\u00e0, les paquets sont supprim\u00e9s (on a aussi purg\u00e9 les fichiers de configuration, ce qui permet l'installation de nouveaux fichiers; on va les r\u00e9installer et avoir une copie propre des fichiers de configuration. Relancez votre serveur (\u00e9teindre puis rallumer ....) root@atom:/etc# apt install postfix postfix-pgsql postfix-sqlite root@atom:/etc# dpkg -l | grep postfix ii postfix 3.1.9-0+deb9u2 i386 High-performance mail transport agent ii postfix-pgsql 3.1.9-0+deb9u2 i386 PostgreSQL map support for Postfix rc postfix-policyd-spf-python 2.0.1-1 all Postfix policy server for SPF checking ri postfix-sqlite 3.1.9-0+deb9u2 i386 SQLite map support for Postfix root@atom:/etc# Nous avons donc postfix d'install\u00e9 avec les modules postgresql et sqlite. root@atom:/etc# apt install dovecot-core dovecot-sqlite dovecot-pgsql dovecot-imapd etc ... Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service \u2192 /lib/systemd/system/dovecot.service. Param\u00e9trage de dovecot-pgsql (1:2.2.27-3+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u9) ... Param\u00e9trage de dovecot-imapd (1:2.2.27-3+deb9u3) ... etc ... Creating config file /etc/dovecot/conf.d/20-imap.conf with new version Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de dovecot-sqlite (1:2.2.27-3+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour dovecot-core (1:2.2.27-3+deb9u3) ... root@atom:/etc# dpkg -l | grep dovecot ii dovecot-core 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - core files ii dovecot-imapd 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - IMAP daemon ii dovecot-pgsql 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - PostgreSQL support ii dovecot-sqlite 1:2.2.27-3+deb9u3 i386 secure POP3/IMAP server - SQLite support root@atom:/etc# Voil\u00e0, dovecot est r\u00e9-install\u00e9 avec le support de sqlite et postgresql.","title":"Suppression des paquets postfix et dovecot"},{"location":"Courrier-Comptes-Virtuels/#premieres-configurations","text":"Vous pouvez reprendre les \u00e9tapes de configuration de postfix comme d\u00e9crites dans la partie correspondante du tutoriel (Installation d'un serveur de courrier basique). Reprenez les tests pour pour assurer de son bon fonctionnement. Test d'envoi d'un compte utilisateur \u00e0 un autre root -> ericadmin ericadmin -> root Test d'envoi de messages \u00e0 partir de ce serveur sur mon serveur principal Test d'envoi de messages \u00e0 partir d'un poste ext\u00e9rieur Test de l'envoi \u00e0 root pour v\u00e9rifier la redirection Une fois ces tests effectu\u00e9s et r\u00e9ussis, nous pouvons passer \u00e0 l'\u00e9tape suivante.","title":"Premi\u00e8res configurations"},{"location":"Courrier-Comptes-Virtuels/#utilisation-du-format-maildir-pour-nos-courriels","text":"Je reproduis ici ce que nous avions d\u00e9j\u00e0 fait auparavant: C'est ici que l'on configure si on veut un fichier unique qui contient tous les messages (type inbox) ou un fichier par \u00e9mail (type Maildir). Ce r\u00e9glage ne concerne que la d\u00e9livrance locale des courriers. Cela se passe dans le fichier /etc/postfix/main.cf On rajoute les lignes suivantes: home_mailbox = Maildir/ mailbox_command = Si ces lignes existaient avant, il faut les commenter (ajout d'un # en d\u00e9but de ligne.) On recharge le fichier de conf service postfix reload","title":"Utilisation du format Maildir pour nos courriels"},{"location":"Courrier-Comptes-Virtuels/#considerations-generales-et-architecture","text":"Dans la premi\u00e8re partie du tutoriel, nous avons configur\u00e9 postfix pour des comptes mails d'utilisateurs (users) du serveur: nous avions root et ericadmin ; nous avons aussi configur\u00e9 un fichier etc/aliases pour rediriger certaines destinations vers le compte ericadmin . Ainsi, root , postmaster , webmaster , abuse ont \u00e9t\u00e9 redirig\u00e9s vers ericadmin . Les adresses mail postmaster , webmaster , abuse n\u00e9cessaires au fonctionnement d'un serveur mail et web n'ont pas de comptes utilisateur associ\u00e9. Ce sont d\u00e9j\u00e0 des adresses virtuelles. Les mails pour ces destinations sont redirig\u00e9s vers ericadmin . Nous allons maintenant configurer postfix pour qu'il accepte de g\u00e9rer des domaines diff\u00e9rents, par exemple, yojik.net , yojik.org , yojik.fr . Nous pourrons cr\u00e9er autant d'adresses \u00e9mail que nous voulons, associ\u00e9es \u00e0 ces domaines et elles seront d\u00e9livr\u00e9es s\u00e9par\u00e8ment dans des bo\u00eetes \u00e0 lettres distinctes. Les diff\u00e9rents domaines g\u00e9r\u00e9s seront stock\u00e9s soit dans un fichier plat, soit dans une base de donn\u00e9es suivant notre configuration. Les adresses \u00e9mail \u00e9galement. Il y aura aussi un fichier alias (en base de donn\u00e9es ou non) qui permet les redirections. Il aura la m\u00eame fonction que /etc/alias mais avec une port\u00e9e plus grande puisqu'il peut g\u00e9rer des domaines diff\u00e9rents. Postfix ne g\u00e8re pas l'authentification qui est d\u00e9port\u00e9e \u00e0 dovecot . Nous verrons ensuite comment configurer cette partie. Le chiffrage est \u00e9galement configur\u00e9 dans la partie dovecot . Il est possible de configurer postfix pour qu'il g\u00e8re et l'acheminement local et l'acheminement virtuel ou bien, que toutes les adresses mail, locales ou non soient g\u00e9r\u00e9es virtuellement. C'est le choix que j'ai fait.","title":"Consid\u00e9rations g\u00e9n\u00e9rales et architecture"},{"location":"Courrier-Comptes-Virtuels/#utilisation-des-fichiers-dbm","text":"","title":"Utilisation des fichiers dbm"},{"location":"Courrier-SPF-DKIM-OPENDMARC/","text":"SPF, DKIM, OPENDMARC SPF Ajout des enregistrements spf au fichier de zone DNS Nous allons maintenant ajouter un enregistrement spf \u00e0 notre configuration. SPF est un enregistrement qui d\u00e9clare quelle machine est responsable et autoris\u00e9e \u00e0 envoyer des mails pour notre domaine. Cela permet d'\u00e9viter que nos mails soient consid\u00e9r\u00e9s comme du spam . La syntaxe de la ligne \u00e0 ajouter est assez simple. Il existe des g\u00e9n\u00e9rateurs de ligne SPF, comme: spfwizard ou mxtoolbox . Le site openspf contient tout ce qu'il faut savoir \u00e0 propos de SPF, syntaxe, param\u00e8tres etc ... Pour mon serveur, j'ai choisi une politique stricte de rejet des mails qui ne viennent pas d'une source autoris\u00e9e. Voici la ligne \u00e0 rajouter au fichier de zone. C'est le param\u00e8tre \"-all\" qui d\u00e9termine la politique (de rejet ici). Nous aurions pu mettre ~all pour une politique moins stricte. (notez le ~ \u00e0 la place du - ) ; spf yojik.net. IN TXT \"v=spf1 a mx mx:adara.yojik.net a:adara.yojik.net -all\" yojik.net. IN SPF \"v=spf1 a mx mx:adara.yojik.net a:adara.yojik.net -all\" On recharge bind pour la prise en compte des modifications: service bind9 restart Il nous reste \u00e0 configurer postfix pour prendre en compte cet enregistrement et effectuer les validations. Installation des logiciels n\u00e9cessaires root@atom:/etc/bind# apt-get install postfix-policyd-spf-python Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: python3-authres python3-dns python3-spf Paquets sugg\u00e9r\u00e9s : python3-yaml Les NOUVEAUX paquets suivants seront install\u00e9s : postfix-policyd-spf-python python3-authres python3-dns python3-spf 0 mis \u00e0 jour, 4 nouvellement install\u00e9s, 0 \u00e0 enlever et 12 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 153 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 494 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://deb.debian.org/debian stretch/main amd64 python3-dns all 3.1.1-1 [27,5 kB] R\u00e9ception de:2 http://deb.debian.org/debian stretch/main amd64 python3-authres all 0.900-1 [17,5 kB] R\u00e9ception de:3 http://deb.debian.org/debian stretch/main amd64 python3-spf all 2.0.12t-3 [64,1 kB] R\u00e9ception de:4 http://deb.debian.org/debian stretch/main amd64 postfix-policyd-spf-python all 2.0.1-1 [43,8 kB] 153 ko r\u00e9ceptionn\u00e9s en 0s (1 533 ko/s) S\u00e9lection du paquet python3-dns pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 40435 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../python3-dns_3.1.1-1_all.deb ... D\u00e9paquetage de python3-dns (3.1.1-1) ... S\u00e9lection du paquet python3-authres pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../python3-authres_0.900-1_all.deb ... D\u00e9paquetage de python3-authres (0.900-1) ... S\u00e9lection du paquet python3-spf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../python3-spf_2.0.12t-3_all.deb ... D\u00e9paquetage de python3-spf (2.0.12t-3) ... S\u00e9lection du paquet postfix-policyd-spf-python pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../postfix-policyd-spf-python_2.0.1-1_all.deb ... D\u00e9paquetage de postfix-policyd-spf-python (2.0.1-1) ... Param\u00e9trage de python3-authres (0.900-1) ... Param\u00e9trage de python3-dns (3.1.1-1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de python3-spf (2.0.12t-3) ... Param\u00e9trage de postfix-policyd-spf-python (2.0.1-1) ... root@atom:/etc/bind# Configuration de postfix: master.cf Dans le fichier /etc/postfix/master.cf, il faut rajouter le service suivant: policyd-spf unix - n n - 0 spawn user=policyd-spf argv=/usr/bin/policyd-spf Configuration de postfix: main.cf Il nous faut ajouter la r\u00e8gle correspondante dans la lsite des restrictions de main.cf. Bien afire attention de positionner check_policy_service APR\u00c8S reject_unauth_destination , sinon, votre serveur mail devient openrelay ! smtpd_recipient_restrictions = ... reject_unauth_destination check_policy_service unix:private/policyd-spf ... policyd-spf_time_limit = 3600 Relancez postfix : service postfix restart Test Je teste ma configuration sur les sites: Mxtoolbox Kitterman Mail-tester Les tests ne fonctionnent pas ... en fait, cela vient de la config IPV6 du serveur. La configuration automatique avec privext 2 donne plusieurs adresses IPV6 \u00e0 la machine (avec le m\u00eame pr\u00e9fixe, bien s\u00fbr). Mais l'adresse de la machine ne correspond plus \u00e0 l'adresse de la machine d\u00e9clar\u00e9e dans bind. Et SPF ne peut plus fonctionner. La solution a \u00e9t\u00e9 de configurer manuellement l'adresse IPV6 dans /etc/network/interfaces de la fa\u00e7on suivante: iface enp2s0 inet6 static address 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 netmask 64 gateway 2a01:e0a:54:c220:OOOO:0000:000:0001 On va aussi modifier la configuration de Postfix pour permettre l'envoi de messages de l'ext\u00e9rieur de la machine (uniquement les utilisateurs enregistr\u00e9s, bien s\u00fbr). J'ai modifi\u00e9 /etc/postfix/main.cf de la fa\u00e7on suivante: j'ai ajout\u00e9 ceci au fichier: smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, check_policy_service unix:private/policyd-spf et comment\u00e9 les lignes correspondantes dans la section submission et smtps du fichier /etc/postfix/master.cf: # -o smtpd_sender_restrictions=$mua_sender_restrictions J'ai simplement transf\u00e9r\u00e9 les restrictions smtpd_sender_restrictions qui \u00e9taient dans main.cf dans master.cf. Apr\u00e8s modifications, tout marche comme il faut, v\u00e9rification SPF comprise. root@atom:/home/ericadmin# tail -f /var/log/mail.log May 28 11:58:06 atom dovecot: imap-login: Login: user=<ericadmin>, method=PLAIN, rip=192.168.111.150, lip=192.168.111.240, mpid=1901, TLS, session=<I0V6J0FtWODAqG+W> May 28 11:58:26 atom postfix/smtpd[1902]: connect from adara.yojik.eu[91.121.72.10] May 28 11:58:26 atom policyd-spf[1907]: prepend Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=91.121.72.10; helo=adara.yojik.eu; envelope-from=eric@yojik.eu; receiver=<UNKNOWN> May 28 11:58:26 atom postfix/smtpd[1902]: C701DD004F2: client=adara.yojik.eu[91.121.72.10] May 28 11:58:26 atom postfix/cleanup[1908]: C701DD004F2: message-id=<4c621385-3822-cb78-9c1d-7e9f43c3fc52@yojik.eu> May 28 11:58:26 atom postfix/qmgr[867]: C701DD004F2: from=<eric@yojik.eu>, size=1414, nrcpt=1 (queue active) May 28 11:58:26 atom postfix/smtpd[1902]: disconnect from adara.yojik.eu[91.121.72.10] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7 May 28 11:58:26 atom postfix/local[1909]: C701DD004F2: to=<ericadmin@yojik.net>, relay=local, delay=0.23, delays=0.21/0.01/0/0, dsn=2.0.0, status=sent (delivered to maildir) May 28 11:58:26 atom postfix/qmgr[867]: C701DD004F2: removed May 28 11:59:00 atom dovecot: imap-login: Login: user=<ericadmin>, method=PLAIN, rip=192.168.111.150, lip=192.168.111.240, mpid=1915, TLS, session=<FoqwKkFtduDAqG+W> La ligne May 28 11:43:12 atom policyd-spf[1830]: prepend Received-SPF:Pass (mailfrom) identity=mailfrom; montre que notre contr\u00f4le SPF fonctionne comme il faut. DKIM DKIM (DomainKeys Identified Mail) est un syst\u00e8me qui vous permet d'ajouter aux ent\u00eates de vos \u00e9mails une signature qui vous identifie et qui permet aux autres serveurs mails de la v\u00e9rifier. L'ent\u00eate peut \u00eatre configur\u00e9 pour garantir que le mail n'a pas \u00e9t\u00e9 modifi\u00e9 apr\u00e8s signature (on peut g\u00e9n\u00e9rer une clef qui signe tout ou partie du message, selon configuration) L'installation et la configuration de DKIM n\u00e9cessite 3 \u00e9tapes: Configuration de DKIM Nous commen\u00e7ons par l'installation de opendkim. root@atom:/home/ericadmin# apt install opendkim Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: dns-root-data liblua5.1-0 libmemcached11 libmemcachedutil2 libmilter1.0.1 libopendbx1 libopendbx1-sqlite3 libopendkim11 librbl1 libunbound2 libvbr2 Paquets sugg\u00e9r\u00e9s : ... etc ... Une fois install\u00e9, nous allons configurer opendkim: cela se fait dans le fichier /etc/opendkim.conf Cr\u00e9ation des r\u00e9pertoires: mkdir -p /etc/opendkim/keys/yojik.net/ Permissions: chmod u=rw,go=r /etc/opendkim.conf chown -R opendkim:opendkim /etc/opendkim chmod go-rw /etc/opendkim/keys Un fichier opendkim.conf enti\u00e8rement comment\u00e9 est disponible dans: /usr/share/doc/opendkim/examples Voici notre fichier de configuration; adaptez-le en fonction de votre domaine, bien s\u00fbr: # This is a basic configuration that can easily be adapted to suit a standard # installation. For more advanced options, see opendkim.conf(5) and/or # /usr/share/doc/opendkim/examples/opendkim.conf.sample. # Log to syslog Syslog yes # Required to use local socket with MTAs that access the socket as a non- # privileged user (e.g. Postfix) ## UMask 002 # Sign for example.com with key in /etc/mail/dkim.key using # selector '2007' (e.g. 2007._domainkey.example.com) Domain yojik.net KeyFile /etc/opendkim/keys/yojik.net/yojik.private Selector yojik # Commonly-used options; the commented-out versions show the defaults. #Canonicalization simple #Mode sv #SubDomains no #ADSPAction continue # Always oversign From (sign using actual From and a null From to prevent # malicious signatures header fields (From and/or others) between the signer # and the verifier. From is oversigned by default in the Debian pacakge # because it is often the identity key used by reputation systems and thus # somewhat security sensitive. OversignHeaders From # List domains to use for RFC 6541 DKIM Authorized Third-Party Signatures # (ATPS) (experimental) #ATPSDomains example.com AutoRestart Yes AutoRestartRate 10/1h UMask 002 Syslog yes SyslogSuccess Yes LogWhy Yes Canonicalization relaxed/simple ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable Mode sv PidFile /var/run/opendkim/opendkim.pid SignatureAlgorithm rsa-sha256 UserID opendkim:opendkim Socket inet:12301@localhost Postix acc\u00e9dera \u00e0 opendkim \u00e0 travers le port 12301. Il nous reste 3 fichiers \u00e0 configurer/cr\u00e9er, ainsi que g\u00e9n\u00e9rer les clefs priv\u00e9es et publiques. /etc/opendkim/SigningTable Ce fichier ne contient qu'une seule ligne: `*@yojik.net yojik._domainkey.yojik.net` /etc/opendkim/KeyTable Ce fichier ne contient qu'une seule ligne: yojik._domainkey.yojik.net yojik.net:yojik:/etc/opendkim/keys/yojik.net/yojik.private /etc/opendkim/TrustedHosts 127.0.0.1 ::1 localhost yojik.net Ne pas modifier les 3 premi\u00e8res lignes qui sont n\u00e9cessaires \u00e0 opendkim ... Cr\u00e9ation des clefs publiques et priv\u00e9es cd /etc/opendkim/keys/yojik.net/ opendkim-genkey -b 2048 -h rsa-sha256 -r -s yojik -d yojik.net -v Une erreur appara\u00eet: il nous faut installer opendkim-tools: apt install opendkim-tools 2 fichiers sont cr\u00e9es: la clef publique et la clef priv\u00e9e. Nous allons renommer ces 2 clefs. mv mv 201805.private yojik.private mv 201805.txt yojik.txt Note du 9 d\u00e9cembre 2018: les fichiers sont cr\u00e9es avec les noms corrects; pas besoin de les renommer. On r\u00e9applique la modification des permissions: root@atom:/etc/opendkim/keys# cd /etc root@atom:/etc# chown -R opendkim:opendkim /etc/opendkim root@atom:/etc# chmod -R go-rw /etc/opendkim/keys root@atom:/etc# On relance opendkim pour voir s'il y a des erreurs: systemctl restart opendkim On lance: netstat -tlnp et on voit la ligne: tcp 0 0 127.0.0.1:12301 0.0.0.0:* LISTEN 2395/opendkim C'est bon .. le service est en place. Ajout de DKIM \u00e0 Postix On va rajouter la gestion de DKIM \u00e0 Postfix dans le fichier /etc/postfix/main.cf On ajoute les lignes suivantes: milter_default_action = accept milter_protocol = 2 smtpd_milters = inet:localhost:12301 non_smtpd_milters = inet:localhost:12301 On relance Postfix par: service postfix restart Ajout d'un enregistrement DNS On ajoute la partie entre double-quotes du fichier /etc/opendkim/keys/yojik.net/yojik.txt \u00e0 la ligne suivante: Attention \u00e0 la syntaxe: ne pas oublier le \".\" derri\u00e8re yojik.net! yojik._domainkey.yojik.net.<>IN<->TXT<>( \"v=DKIM1; h=rsa-sha256; k=rsa; s=email; p=;\") Ajouter la clef derri\u00e8re p= (supprimer les doubles quotes du d\u00e9but, milieu et fin de clef: ex: \"ljjoj\" \"dfjj\") Test de Opendkim opendkim-testkey -d yojik.net -s yojik Si votre clef est de longueur 2048, il va falloir la d\u00e9couper ... et utiliser le format \"multi-lignes\" comme ce qui suit: Notes Une chose \u00e0 v\u00e9rifier: le point \".\" \u00e0 la fin du nom de domaine (premi\u00e8re partie de la ligne). Les messages d'erreur style \"erreur de syntaxe\" n'aident pas beaucoup ... Cette fois-ci, tout est bon. J'ai adopt\u00e9 une technique pour coller ma clef dans l'enregistrement dns: je fais un: cat fichier_de_zone fichier_de_clef > fichier_de_zone.new J'\u00e9dite le fichier (les retours-chariot etc ...) et je remplace le fichier original (que je sauve d'abord) en incr\u00e9mentant le numero de s\u00e9rie dans le fichier. Nouveau Test On envoie un message pour voir s'il est bien sign\u00e9. Je red\u00e9marre le serveur et j'envoie un message. Voil\u00e0 les r\u00e9sultats: > ARC-Authentication-Results: i=1; mx.google.com; > dkim=pass header.i=@yojik.net header.s=yojik header.b=CE0b13ii; > spf=pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > smtp.mailfrom=ericadmin@yojik.net > Received-SPF: pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > client-ip=82.64.48.5; > Authentication-Results: mx.google.com; > dkim=pass header.i=@yojik.net header.s=yojik header.b=CE0b13ii; > spf=pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > smtp.mailfrom=ericadmin@yojik.net > Received: from [192.168.111.150] (unknown [192.168.111.150]) > by atom.yojik.net (Postfix) with ESMTPSA id AFB9ED004F3 > for <ericounet26200@gmail.com>; Thu, 31 May 2018 12:09:41 +0200 (CEST) > DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yojik.net; s=yojik; > t=1527761381; bh=ay9Odp/rKTenfDlpDmHqBM+YFfCITM3u/keXU6iwx20=; > h=To:From:Subject:Date:From; > b=CE0b13iiZgEQgrd7EngBovulGeU6QnSU/cKzia42u9s9B+S/dxUsm1u7JRjBrTLLg > /c/uW05pdE5QS+9y3dvZtji0hogr0H87nRpZE7QBZaFLpVWGpUTukRsJ47JskO+Cwi > 4cRYjeyUOLTY8Gc8uQaiS79CDko8E107fsfoUGV8= Tout est bon .... IL est recommand\u00e9 de changer les clefs DKIM tous les mois! ... Je pense qu'il va falloir cr\u00e9er des scripts pour toute la maintenance des clefs et de leur renouvellement. ADSP Author Domain Signing Practices (ADSP)Permalink (technique obsol\u00e8te ...) Nous allons rajouter un enregistrement DNS qui va indiquer que tous les \u00e9mails issus par yojik.net doivent \u00eatre sign\u00e9s par DKIM. C'est une s\u00e9curit\u00e9 suppl\u00e9mentaire. La syntaxe est assez simple: _adsp._domainkey.yojik.net. IN TXT \"dkim=all\" Le param\u00e8tre dkim accepte d'autres valeurs moins strictes, mais j'ai choisi la plus stricte. Ne pas oublier d'incr\u00e9menter le num\u00e9ro de s\u00e9rie du fichier de zone apr\u00e8s modification. Rechargez bind. service bind9 restart (ou reload) Tout est OK. Note: ADSP et Dmarc remplissent le m\u00eame r\u00f4le. Apr\u00e8s consultation d'experts, ADSP est \"obsol\u00e8te\". Nous allons donc enlever ce service (commenter la ligne DNS) et configurer DMARC. DMARC Dmarc (Domain Message Authentication, Reporting & Conformance) pr\u00e9cise les politiques d'envoi des messages issus du domaine concern\u00e9 (gr\u00e2ce \u00e0 DKIM et SPF), indique quelle politique utiliser si les conditions ne sont pas respect\u00e9es (validations SPF ou DKIM , et peut \u00e9ventuellement demander un rapport en cas d'\u00e9chec de livraison du message. La mise en place de DMARC n\u00e9cessite de configurer/installer opendmarc, de mettre en place l'enregistrement TXT dans le fichier de zone DNS et de configurer le hook dans Postfix. Installation de Opendmarc root@atom:/home/ericadmin# apt install opendmarc Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: libdbd-mysql-perl libdbi-perl libencode-locale-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libopendbx1-mysql libopendmarc2 libspf2-2 libtimedate-perl liburi-perl publicsuffix etc ... Param\u00e9trage de libdbd-mysql-perl (4.041-2) ... Param\u00e9trage de opendmarc (1.3.2-2+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u3) ... Voil\u00e0, opendmarc est install\u00e9. Passons \u00e0 sa configuration. Configuration de Opendmarc 2 fichiers sont \u00e0 configurer. La configuration se fait dans /etc/opendmarc.conf et dans /etc/default/opendmarc: Comme d'habitude, faite une copie de sauvegarde du fichier d'origine avant modification. Fichier /etc/opendmarc.conf : # This is a basic configuration that can easily be adapted to suit a standard # installation. For more advanced options, see opendkim.conf(5) and/or # /usr/share/doc/opendmarc/examples/opendmarc.conf.sample. ## AuthservID (string) ## <-->defaults to MTA name # # AuthservID name ## FailureReports { true | false } ## <-->default \"false\" ## # FailureReports false PidFile /var/run/opendmarc/opendmarc.pid ## RejectFailures { true | false } ## <-->default \"false\" ## RejectFailures false ## Socket socketspec ## <-->default (none) ## ## Specifies the socket that should be established by the filter to receive ## connections from sendmail(8) in order to provide service. socketspec is ## in one of two forms: local:path, which creates a UNIX domain socket at ## the specified path, or inet:port[@host] or inet6:port[@host] which creates ## a TCP socket on the specified port for the appropriate protocol family. ## If the host is not given as either a hostname or an IP address, the ## socket will be listening on all interfaces. This option is mandatory ## either in the configuration file or on the command line. If an IP ## address is used, it must be enclosed in square brackets. # # Socket local:/var/run/opendmarc/opendmarc.sock Socket inet:54444@localhost ## Syslog { true | false } ## <-->default \"false\" ## ## Log via calls to syslog(3) any interesting activity. # Syslog true ## SyslogFacility facility-name ## <-->default \"mail\" ## ## Log via calls to syslog(3) using the named facility. The facility names ## are the same as the ones allowed in syslog.conf(5). # # SyslogFacility mail ## TrustedAuthservIDs string ## <-->default HOSTNAME ## ## Specifies one or more \"authserv-id\" values to trust as relaying true ## upstream DKIM and SPF results. The default is to use the name of ## the MTA processing the message. To specify a list, separate each entry ## with a comma. The key word \"HOSTNAME\" will be replaced by the name of ## the host running the filter as reported by the gethostname(3) function. # # TrustedAuthservIDs HOSTNAME ## UMask mask ## <-->default (none) ## ## Requests a specific permissions mask to be used for file creation. This ## only really applies to creation of the socket when Socket specifies a ## UNIX domain socket, and to the HistoryFile and PidFile (if any); temporary ## files are normally created by the mkstemp(3) function that enforces a ## specific file mode on creation regardless of the process umask. See ## umask(2) for more information. # UMask 0002 ## UserID user[:group] ## <-->default (none) ## ## Attempts to become the specified userid before starting operations. ## The process will be assigned all of the groups and primary group ID of ## the named userid unless an alternate group is specified. # UserID opendmarc ## Path to system copy of PSL (needed to determine organizational domain) # PublicSuffixList /usr/share/publicsuffix/ IgnoreHosts /etc/opendmarc/ignore.hosts HistoryFile /var/run/opendmarc/opendmarc.dat #for testing: SoftwareHeader true On cr\u00e9e le r\u00e9pertoire suivant: /etc/opendmarc et on cr\u00e9e un fichier qui va contenir la liste des machines auxquelles vous avez confiance. root@atom:/etc# mkdir /etc/opendmarc On cr\u00e9e le fichier /etc/opendmarc/ignore.hosts avec le contenu suivant (le fichier ignore.hosts a \u00e9t\u00e9 d\u00e9clar\u00e9 dans le fichier /etc/opendmarc.conf): localhost 192.168.111.0/24 Les mails envoy\u00e9s par les machines list\u00e9es dans ce fichier ne seront pas test\u00e9s. Ici, le serveur de mail lui-m\u00eame et les machines du r\u00e9seau local familial. On ajoute la ligne suivante \u00e0 /etc/default/opendmarc: SOCKET=inet:54444@localhost Notre daemon \u00e9coutera sur le port 54444. On relance opendmarc par la commande suivante: service opendmarc restart Mise en place du hook dans postfix: Nous modifierons les 2 lignes suivantes dans le fichier: /etc/postfix/main.cf: smtpd_milters = inet:localhost:12301,inet:localhost:54444 non_smtpd_milters = inet:localhost:12301,inet:localhost:54444 On recharge postfix (comme d'habitude ...) Configuration de l'enregistrement DNS dans le fichier de zone (ne pas oublier d'incr\u00e9menter le compteur!): _dmarc.yojik.net. TXT ( \"v=DMARC1; p=none; sp=reject; pct=10; adkim=r;aspf=r;fo=1;ri=86400;rua=mailto:ericadmin@yojik.net\") Test d'envoi de messages: Authentication-Results: atom.yojik.net; dmarc=**pass** \u00c7a fonctionne :)","title":"Ajout des enregistrements **spf**, **DKIM**, **DMARC** au fichier de zone DNS"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#spf-dkim-opendmarc","text":"","title":"SPF, DKIM, OPENDMARC"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#spf","text":"","title":"SPF"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#ajout-des-enregistrements-spf-au-fichier-de-zone-dns","text":"Nous allons maintenant ajouter un enregistrement spf \u00e0 notre configuration. SPF est un enregistrement qui d\u00e9clare quelle machine est responsable et autoris\u00e9e \u00e0 envoyer des mails pour notre domaine. Cela permet d'\u00e9viter que nos mails soient consid\u00e9r\u00e9s comme du spam . La syntaxe de la ligne \u00e0 ajouter est assez simple. Il existe des g\u00e9n\u00e9rateurs de ligne SPF, comme: spfwizard ou mxtoolbox . Le site openspf contient tout ce qu'il faut savoir \u00e0 propos de SPF, syntaxe, param\u00e8tres etc ... Pour mon serveur, j'ai choisi une politique stricte de rejet des mails qui ne viennent pas d'une source autoris\u00e9e. Voici la ligne \u00e0 rajouter au fichier de zone. C'est le param\u00e8tre \"-all\" qui d\u00e9termine la politique (de rejet ici). Nous aurions pu mettre ~all pour une politique moins stricte. (notez le ~ \u00e0 la place du - ) ; spf yojik.net. IN TXT \"v=spf1 a mx mx:adara.yojik.net a:adara.yojik.net -all\" yojik.net. IN SPF \"v=spf1 a mx mx:adara.yojik.net a:adara.yojik.net -all\" On recharge bind pour la prise en compte des modifications: service bind9 restart Il nous reste \u00e0 configurer postfix pour prendre en compte cet enregistrement et effectuer les validations.","title":"Ajout des enregistrements spf au fichier de zone DNS"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#installation-des-logiciels-necessaires","text":"root@atom:/etc/bind# apt-get install postfix-policyd-spf-python Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: python3-authres python3-dns python3-spf Paquets sugg\u00e9r\u00e9s : python3-yaml Les NOUVEAUX paquets suivants seront install\u00e9s : postfix-policyd-spf-python python3-authres python3-dns python3-spf 0 mis \u00e0 jour, 4 nouvellement install\u00e9s, 0 \u00e0 enlever et 12 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 153 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 494 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://deb.debian.org/debian stretch/main amd64 python3-dns all 3.1.1-1 [27,5 kB] R\u00e9ception de:2 http://deb.debian.org/debian stretch/main amd64 python3-authres all 0.900-1 [17,5 kB] R\u00e9ception de:3 http://deb.debian.org/debian stretch/main amd64 python3-spf all 2.0.12t-3 [64,1 kB] R\u00e9ception de:4 http://deb.debian.org/debian stretch/main amd64 postfix-policyd-spf-python all 2.0.1-1 [43,8 kB] 153 ko r\u00e9ceptionn\u00e9s en 0s (1 533 ko/s) S\u00e9lection du paquet python3-dns pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 40435 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../python3-dns_3.1.1-1_all.deb ... D\u00e9paquetage de python3-dns (3.1.1-1) ... S\u00e9lection du paquet python3-authres pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../python3-authres_0.900-1_all.deb ... D\u00e9paquetage de python3-authres (0.900-1) ... S\u00e9lection du paquet python3-spf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../python3-spf_2.0.12t-3_all.deb ... D\u00e9paquetage de python3-spf (2.0.12t-3) ... S\u00e9lection du paquet postfix-policyd-spf-python pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../postfix-policyd-spf-python_2.0.1-1_all.deb ... D\u00e9paquetage de postfix-policyd-spf-python (2.0.1-1) ... Param\u00e9trage de python3-authres (0.900-1) ... Param\u00e9trage de python3-dns (3.1.1-1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de python3-spf (2.0.12t-3) ... Param\u00e9trage de postfix-policyd-spf-python (2.0.1-1) ... root@atom:/etc/bind#","title":"Installation des logiciels n\u00e9cessaires"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#configuration-de-postfix-mastercf","text":"Dans le fichier /etc/postfix/master.cf, il faut rajouter le service suivant: policyd-spf unix - n n - 0 spawn user=policyd-spf argv=/usr/bin/policyd-spf","title":"Configuration de postfix: master.cf"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#configuration-de-postfix-maincf","text":"Il nous faut ajouter la r\u00e8gle correspondante dans la lsite des restrictions de main.cf. Bien afire attention de positionner check_policy_service APR\u00c8S reject_unauth_destination , sinon, votre serveur mail devient openrelay ! smtpd_recipient_restrictions = ... reject_unauth_destination check_policy_service unix:private/policyd-spf ... policyd-spf_time_limit = 3600 Relancez postfix : service postfix restart","title":"Configuration de postfix: main.cf"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#test","text":"Je teste ma configuration sur les sites: Mxtoolbox Kitterman Mail-tester Les tests ne fonctionnent pas ... en fait, cela vient de la config IPV6 du serveur. La configuration automatique avec privext 2 donne plusieurs adresses IPV6 \u00e0 la machine (avec le m\u00eame pr\u00e9fixe, bien s\u00fbr). Mais l'adresse de la machine ne correspond plus \u00e0 l'adresse de la machine d\u00e9clar\u00e9e dans bind. Et SPF ne peut plus fonctionner. La solution a \u00e9t\u00e9 de configurer manuellement l'adresse IPV6 dans /etc/network/interfaces de la fa\u00e7on suivante: iface enp2s0 inet6 static address 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 netmask 64 gateway 2a01:e0a:54:c220:OOOO:0000:000:0001 On va aussi modifier la configuration de Postfix pour permettre l'envoi de messages de l'ext\u00e9rieur de la machine (uniquement les utilisateurs enregistr\u00e9s, bien s\u00fbr). J'ai modifi\u00e9 /etc/postfix/main.cf de la fa\u00e7on suivante: j'ai ajout\u00e9 ceci au fichier: smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, check_policy_service unix:private/policyd-spf et comment\u00e9 les lignes correspondantes dans la section submission et smtps du fichier /etc/postfix/master.cf: # -o smtpd_sender_restrictions=$mua_sender_restrictions J'ai simplement transf\u00e9r\u00e9 les restrictions smtpd_sender_restrictions qui \u00e9taient dans main.cf dans master.cf. Apr\u00e8s modifications, tout marche comme il faut, v\u00e9rification SPF comprise. root@atom:/home/ericadmin# tail -f /var/log/mail.log May 28 11:58:06 atom dovecot: imap-login: Login: user=<ericadmin>, method=PLAIN, rip=192.168.111.150, lip=192.168.111.240, mpid=1901, TLS, session=<I0V6J0FtWODAqG+W> May 28 11:58:26 atom postfix/smtpd[1902]: connect from adara.yojik.eu[91.121.72.10] May 28 11:58:26 atom policyd-spf[1907]: prepend Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=91.121.72.10; helo=adara.yojik.eu; envelope-from=eric@yojik.eu; receiver=<UNKNOWN> May 28 11:58:26 atom postfix/smtpd[1902]: C701DD004F2: client=adara.yojik.eu[91.121.72.10] May 28 11:58:26 atom postfix/cleanup[1908]: C701DD004F2: message-id=<4c621385-3822-cb78-9c1d-7e9f43c3fc52@yojik.eu> May 28 11:58:26 atom postfix/qmgr[867]: C701DD004F2: from=<eric@yojik.eu>, size=1414, nrcpt=1 (queue active) May 28 11:58:26 atom postfix/smtpd[1902]: disconnect from adara.yojik.eu[91.121.72.10] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7 May 28 11:58:26 atom postfix/local[1909]: C701DD004F2: to=<ericadmin@yojik.net>, relay=local, delay=0.23, delays=0.21/0.01/0/0, dsn=2.0.0, status=sent (delivered to maildir) May 28 11:58:26 atom postfix/qmgr[867]: C701DD004F2: removed May 28 11:59:00 atom dovecot: imap-login: Login: user=<ericadmin>, method=PLAIN, rip=192.168.111.150, lip=192.168.111.240, mpid=1915, TLS, session=<FoqwKkFtduDAqG+W> La ligne May 28 11:43:12 atom policyd-spf[1830]: prepend Received-SPF:Pass (mailfrom) identity=mailfrom; montre que notre contr\u00f4le SPF fonctionne comme il faut.","title":"Test"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#dkim","text":"DKIM (DomainKeys Identified Mail) est un syst\u00e8me qui vous permet d'ajouter aux ent\u00eates de vos \u00e9mails une signature qui vous identifie et qui permet aux autres serveurs mails de la v\u00e9rifier. L'ent\u00eate peut \u00eatre configur\u00e9 pour garantir que le mail n'a pas \u00e9t\u00e9 modifi\u00e9 apr\u00e8s signature (on peut g\u00e9n\u00e9rer une clef qui signe tout ou partie du message, selon configuration) L'installation et la configuration de DKIM n\u00e9cessite 3 \u00e9tapes:","title":"DKIM"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#configuration-de-dkim","text":"Nous commen\u00e7ons par l'installation de opendkim. root@atom:/home/ericadmin# apt install opendkim Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: dns-root-data liblua5.1-0 libmemcached11 libmemcachedutil2 libmilter1.0.1 libopendbx1 libopendbx1-sqlite3 libopendkim11 librbl1 libunbound2 libvbr2 Paquets sugg\u00e9r\u00e9s : ... etc ... Une fois install\u00e9, nous allons configurer opendkim: cela se fait dans le fichier /etc/opendkim.conf Cr\u00e9ation des r\u00e9pertoires: mkdir -p /etc/opendkim/keys/yojik.net/ Permissions: chmod u=rw,go=r /etc/opendkim.conf chown -R opendkim:opendkim /etc/opendkim chmod go-rw /etc/opendkim/keys Un fichier opendkim.conf enti\u00e8rement comment\u00e9 est disponible dans: /usr/share/doc/opendkim/examples Voici notre fichier de configuration; adaptez-le en fonction de votre domaine, bien s\u00fbr: # This is a basic configuration that can easily be adapted to suit a standard # installation. For more advanced options, see opendkim.conf(5) and/or # /usr/share/doc/opendkim/examples/opendkim.conf.sample. # Log to syslog Syslog yes # Required to use local socket with MTAs that access the socket as a non- # privileged user (e.g. Postfix) ## UMask 002 # Sign for example.com with key in /etc/mail/dkim.key using # selector '2007' (e.g. 2007._domainkey.example.com) Domain yojik.net KeyFile /etc/opendkim/keys/yojik.net/yojik.private Selector yojik # Commonly-used options; the commented-out versions show the defaults. #Canonicalization simple #Mode sv #SubDomains no #ADSPAction continue # Always oversign From (sign using actual From and a null From to prevent # malicious signatures header fields (From and/or others) between the signer # and the verifier. From is oversigned by default in the Debian pacakge # because it is often the identity key used by reputation systems and thus # somewhat security sensitive. OversignHeaders From # List domains to use for RFC 6541 DKIM Authorized Third-Party Signatures # (ATPS) (experimental) #ATPSDomains example.com AutoRestart Yes AutoRestartRate 10/1h UMask 002 Syslog yes SyslogSuccess Yes LogWhy Yes Canonicalization relaxed/simple ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable Mode sv PidFile /var/run/opendkim/opendkim.pid SignatureAlgorithm rsa-sha256 UserID opendkim:opendkim Socket inet:12301@localhost Postix acc\u00e9dera \u00e0 opendkim \u00e0 travers le port 12301. Il nous reste 3 fichiers \u00e0 configurer/cr\u00e9er, ainsi que g\u00e9n\u00e9rer les clefs priv\u00e9es et publiques. /etc/opendkim/SigningTable Ce fichier ne contient qu'une seule ligne: `*@yojik.net yojik._domainkey.yojik.net` /etc/opendkim/KeyTable Ce fichier ne contient qu'une seule ligne: yojik._domainkey.yojik.net yojik.net:yojik:/etc/opendkim/keys/yojik.net/yojik.private /etc/opendkim/TrustedHosts 127.0.0.1 ::1 localhost yojik.net Ne pas modifier les 3 premi\u00e8res lignes qui sont n\u00e9cessaires \u00e0 opendkim ... Cr\u00e9ation des clefs publiques et priv\u00e9es cd /etc/opendkim/keys/yojik.net/ opendkim-genkey -b 2048 -h rsa-sha256 -r -s yojik -d yojik.net -v Une erreur appara\u00eet: il nous faut installer opendkim-tools: apt install opendkim-tools 2 fichiers sont cr\u00e9es: la clef publique et la clef priv\u00e9e. Nous allons renommer ces 2 clefs. mv mv 201805.private yojik.private mv 201805.txt yojik.txt Note du 9 d\u00e9cembre 2018: les fichiers sont cr\u00e9es avec les noms corrects; pas besoin de les renommer. On r\u00e9applique la modification des permissions: root@atom:/etc/opendkim/keys# cd /etc root@atom:/etc# chown -R opendkim:opendkim /etc/opendkim root@atom:/etc# chmod -R go-rw /etc/opendkim/keys root@atom:/etc# On relance opendkim pour voir s'il y a des erreurs: systemctl restart opendkim On lance: netstat -tlnp et on voit la ligne: tcp 0 0 127.0.0.1:12301 0.0.0.0:* LISTEN 2395/opendkim C'est bon .. le service est en place.","title":"Configuration de DKIM"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#ajout-de-dkim-a-postix","text":"On va rajouter la gestion de DKIM \u00e0 Postfix dans le fichier /etc/postfix/main.cf On ajoute les lignes suivantes: milter_default_action = accept milter_protocol = 2 smtpd_milters = inet:localhost:12301 non_smtpd_milters = inet:localhost:12301 On relance Postfix par: service postfix restart","title":"Ajout de DKIM \u00e0 Postix"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#ajout-dun-enregistrement-dns","text":"On ajoute la partie entre double-quotes du fichier /etc/opendkim/keys/yojik.net/yojik.txt \u00e0 la ligne suivante: Attention \u00e0 la syntaxe: ne pas oublier le \".\" derri\u00e8re yojik.net! yojik._domainkey.yojik.net.<>IN<->TXT<>( \"v=DKIM1; h=rsa-sha256; k=rsa; s=email; p=;\") Ajouter la clef derri\u00e8re p= (supprimer les doubles quotes du d\u00e9but, milieu et fin de clef: ex: \"ljjoj\" \"dfjj\")","title":"Ajout d'un enregistrement DNS"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#test-de-opendkim","text":"opendkim-testkey -d yojik.net -s yojik Si votre clef est de longueur 2048, il va falloir la d\u00e9couper ... et utiliser le format \"multi-lignes\" comme ce qui suit:","title":"Test de Opendkim"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#notes","text":"Une chose \u00e0 v\u00e9rifier: le point \".\" \u00e0 la fin du nom de domaine (premi\u00e8re partie de la ligne). Les messages d'erreur style \"erreur de syntaxe\" n'aident pas beaucoup ... Cette fois-ci, tout est bon. J'ai adopt\u00e9 une technique pour coller ma clef dans l'enregistrement dns: je fais un: cat fichier_de_zone fichier_de_clef > fichier_de_zone.new J'\u00e9dite le fichier (les retours-chariot etc ...) et je remplace le fichier original (que je sauve d'abord) en incr\u00e9mentant le numero de s\u00e9rie dans le fichier.","title":"Notes"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#nouveau-test","text":"On envoie un message pour voir s'il est bien sign\u00e9. Je red\u00e9marre le serveur et j'envoie un message. Voil\u00e0 les r\u00e9sultats: > ARC-Authentication-Results: i=1; mx.google.com; > dkim=pass header.i=@yojik.net header.s=yojik header.b=CE0b13ii; > spf=pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > smtp.mailfrom=ericadmin@yojik.net > Received-SPF: pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > client-ip=82.64.48.5; > Authentication-Results: mx.google.com; > dkim=pass header.i=@yojik.net header.s=yojik header.b=CE0b13ii; > spf=pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > smtp.mailfrom=ericadmin@yojik.net > Received: from [192.168.111.150] (unknown [192.168.111.150]) > by atom.yojik.net (Postfix) with ESMTPSA id AFB9ED004F3 > for <ericounet26200@gmail.com>; Thu, 31 May 2018 12:09:41 +0200 (CEST) > DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yojik.net; s=yojik; > t=1527761381; bh=ay9Odp/rKTenfDlpDmHqBM+YFfCITM3u/keXU6iwx20=; > h=To:From:Subject:Date:From; > b=CE0b13iiZgEQgrd7EngBovulGeU6QnSU/cKzia42u9s9B+S/dxUsm1u7JRjBrTLLg > /c/uW05pdE5QS+9y3dvZtji0hogr0H87nRpZE7QBZaFLpVWGpUTukRsJ47JskO+Cwi > 4cRYjeyUOLTY8Gc8uQaiS79CDko8E107fsfoUGV8= Tout est bon .... IL est recommand\u00e9 de changer les clefs DKIM tous les mois! ... Je pense qu'il va falloir cr\u00e9er des scripts pour toute la maintenance des clefs et de leur renouvellement.","title":"Nouveau Test"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#adsp","text":"Author Domain Signing Practices (ADSP)Permalink (technique obsol\u00e8te ...) Nous allons rajouter un enregistrement DNS qui va indiquer que tous les \u00e9mails issus par yojik.net doivent \u00eatre sign\u00e9s par DKIM. C'est une s\u00e9curit\u00e9 suppl\u00e9mentaire. La syntaxe est assez simple: _adsp._domainkey.yojik.net. IN TXT \"dkim=all\" Le param\u00e8tre dkim accepte d'autres valeurs moins strictes, mais j'ai choisi la plus stricte. Ne pas oublier d'incr\u00e9menter le num\u00e9ro de s\u00e9rie du fichier de zone apr\u00e8s modification. Rechargez bind. service bind9 restart (ou reload) Tout est OK. Note: ADSP et Dmarc remplissent le m\u00eame r\u00f4le. Apr\u00e8s consultation d'experts, ADSP est \"obsol\u00e8te\". Nous allons donc enlever ce service (commenter la ligne DNS) et configurer DMARC.","title":"ADSP"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#dmarc","text":"Dmarc (Domain Message Authentication, Reporting & Conformance) pr\u00e9cise les politiques d'envoi des messages issus du domaine concern\u00e9 (gr\u00e2ce \u00e0 DKIM et SPF), indique quelle politique utiliser si les conditions ne sont pas respect\u00e9es (validations SPF ou DKIM , et peut \u00e9ventuellement demander un rapport en cas d'\u00e9chec de livraison du message. La mise en place de DMARC n\u00e9cessite de configurer/installer opendmarc, de mettre en place l'enregistrement TXT dans le fichier de zone DNS et de configurer le hook dans Postfix.","title":"DMARC"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#installation-de-opendmarc","text":"root@atom:/home/ericadmin# apt install opendmarc Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: libdbd-mysql-perl libdbi-perl libencode-locale-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libopendbx1-mysql libopendmarc2 libspf2-2 libtimedate-perl liburi-perl publicsuffix etc ... Param\u00e9trage de libdbd-mysql-perl (4.041-2) ... Param\u00e9trage de opendmarc (1.3.2-2+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u3) ... Voil\u00e0, opendmarc est install\u00e9. Passons \u00e0 sa configuration.","title":"Installation de Opendmarc"},{"location":"Courrier-SPF-DKIM-OPENDMARC/#configuration-de-opendmarc","text":"2 fichiers sont \u00e0 configurer. La configuration se fait dans /etc/opendmarc.conf et dans /etc/default/opendmarc: Comme d'habitude, faite une copie de sauvegarde du fichier d'origine avant modification. Fichier /etc/opendmarc.conf : # This is a basic configuration that can easily be adapted to suit a standard # installation. For more advanced options, see opendkim.conf(5) and/or # /usr/share/doc/opendmarc/examples/opendmarc.conf.sample. ## AuthservID (string) ## <-->defaults to MTA name # # AuthservID name ## FailureReports { true | false } ## <-->default \"false\" ## # FailureReports false PidFile /var/run/opendmarc/opendmarc.pid ## RejectFailures { true | false } ## <-->default \"false\" ## RejectFailures false ## Socket socketspec ## <-->default (none) ## ## Specifies the socket that should be established by the filter to receive ## connections from sendmail(8) in order to provide service. socketspec is ## in one of two forms: local:path, which creates a UNIX domain socket at ## the specified path, or inet:port[@host] or inet6:port[@host] which creates ## a TCP socket on the specified port for the appropriate protocol family. ## If the host is not given as either a hostname or an IP address, the ## socket will be listening on all interfaces. This option is mandatory ## either in the configuration file or on the command line. If an IP ## address is used, it must be enclosed in square brackets. # # Socket local:/var/run/opendmarc/opendmarc.sock Socket inet:54444@localhost ## Syslog { true | false } ## <-->default \"false\" ## ## Log via calls to syslog(3) any interesting activity. # Syslog true ## SyslogFacility facility-name ## <-->default \"mail\" ## ## Log via calls to syslog(3) using the named facility. The facility names ## are the same as the ones allowed in syslog.conf(5). # # SyslogFacility mail ## TrustedAuthservIDs string ## <-->default HOSTNAME ## ## Specifies one or more \"authserv-id\" values to trust as relaying true ## upstream DKIM and SPF results. The default is to use the name of ## the MTA processing the message. To specify a list, separate each entry ## with a comma. The key word \"HOSTNAME\" will be replaced by the name of ## the host running the filter as reported by the gethostname(3) function. # # TrustedAuthservIDs HOSTNAME ## UMask mask ## <-->default (none) ## ## Requests a specific permissions mask to be used for file creation. This ## only really applies to creation of the socket when Socket specifies a ## UNIX domain socket, and to the HistoryFile and PidFile (if any); temporary ## files are normally created by the mkstemp(3) function that enforces a ## specific file mode on creation regardless of the process umask. See ## umask(2) for more information. # UMask 0002 ## UserID user[:group] ## <-->default (none) ## ## Attempts to become the specified userid before starting operations. ## The process will be assigned all of the groups and primary group ID of ## the named userid unless an alternate group is specified. # UserID opendmarc ## Path to system copy of PSL (needed to determine organizational domain) # PublicSuffixList /usr/share/publicsuffix/ IgnoreHosts /etc/opendmarc/ignore.hosts HistoryFile /var/run/opendmarc/opendmarc.dat #for testing: SoftwareHeader true On cr\u00e9e le r\u00e9pertoire suivant: /etc/opendmarc et on cr\u00e9e un fichier qui va contenir la liste des machines auxquelles vous avez confiance. root@atom:/etc# mkdir /etc/opendmarc On cr\u00e9e le fichier /etc/opendmarc/ignore.hosts avec le contenu suivant (le fichier ignore.hosts a \u00e9t\u00e9 d\u00e9clar\u00e9 dans le fichier /etc/opendmarc.conf): localhost 192.168.111.0/24 Les mails envoy\u00e9s par les machines list\u00e9es dans ce fichier ne seront pas test\u00e9s. Ici, le serveur de mail lui-m\u00eame et les machines du r\u00e9seau local familial. On ajoute la ligne suivante \u00e0 /etc/default/opendmarc: SOCKET=inet:54444@localhost Notre daemon \u00e9coutera sur le port 54444. On relance opendmarc par la commande suivante: service opendmarc restart Mise en place du hook dans postfix: Nous modifierons les 2 lignes suivantes dans le fichier: /etc/postfix/main.cf: smtpd_milters = inet:localhost:12301,inet:localhost:54444 non_smtpd_milters = inet:localhost:12301,inet:localhost:54444 On recharge postfix (comme d'habitude ...) Configuration de l'enregistrement DNS dans le fichier de zone (ne pas oublier d'incr\u00e9menter le compteur!): _dmarc.yojik.net. TXT ( \"v=DMARC1; p=none; sp=reject; pct=10; adkim=r;aspf=r;fo=1;ri=86400;rua=mailto:ericadmin@yojik.net\") Test d'envoi de messages: Authentication-Results: atom.yojik.net; dmarc=**pass** \u00c7a fonctionne :)","title":"Configuration de Opendmarc"},{"location":"Installation-Certificats-Letsencrypt/","text":"Installation des certificats letsencrypt Installation des programmes Il existe plusieurs clients letsencrypt pour la gestion des certificats. Nous utiliserons certbot , le client officiel de letsencrypt . root@atom:/home/ericadmin/bin# apt install certbot python-certbot-apache Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: augeas-lenses libaugeas0 python-acme python-augeas python-certbot python-cffi-backend python-chardet python-configargparse python-configobj python-cryptography python-dnspython python-enum34 python-funcsigs python-idna python-ipaddress python-mock python-openssl python-parsedatetime python-pbr python-pkg-resources python-psutil python-pyasn1 python-pyicu python-requests python-rfc3339 python-setuptools python-six python-tz python-urllib3 python-zope.component python-zope.event python-zope.hookable python-zope.interface etc... Cr\u00e9ation des certificats pour nos domaines Bien, les programmes sont install\u00e9s. Nous allons cr\u00e9er des certificats pour les domaines suivantes, apr\u00e8s avoir cr\u00e9\u00e9 les h\u00f4tes virtuels apache. yojik.net www.yojik.net atom.yojik.net Les 2 premiers concernent le site web, le dernier, le serveur de mail. Nous allons d'abord rajouter les noms manquants dans le fichier de zone DNS; pour l'instant, nous n'avons d\u00e9clar\u00e9 qu'un seul nom: atom.yojik.net. Rajoutons les suivants avec des enregistrements CNAME. Ne pas oublier d'incr\u00e9menter le compteur situ\u00e9 dans le fichier de zone DNS apr\u00e8s chaque modification. Lors de l'installation de notre webmail, nous rajouterons le domaine correspondant. Nous ajoutons ici la r\u00e9f\u00e9rence du serveur web, avec un enregistrement CNAME: www.yojik.eu www IN CNAME atom.yojik.net. Relecture des fichiers de configuration par bind: root@atom:/home/ericadmin# service bind9 reload lancement du programme certbot root@atom:/home/ericadmin# certbot --apache Saving debug log to /var/log/letsencrypt/letsencrypt.log Which names would you like to activate HTTPS for? - 1: yojik.net 2: www.yojik.net - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel):1 2 Obtaining a new certificate Performing the following challenges: Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA. Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA. Bon, il y a un probl\u00e8me ... apr\u00e8s recherche sur le web, il se trouve que le programme certbot de Debian/stretch n'est pas \u00e0 jour (modification due \u00e0 un probl\u00e8me de s\u00e9curit\u00e9.) Voici le lien: certbot sur Debian/Stretch problem and solution Ajout des backports dans la liste des d\u00e9pots: Il nous faut ajouter dans /etc/sources.list le d\u00e9pot backports pour obtenir le fichier qui suit: Lien: Installation des backports Voici le contenu du fichier etc/apt/sources.list root@atom:/home/ericadmin# cat /etc/apt/sources.list # # deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 NETINST 20171209-12:10]/ stretch main #deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 NETINST 20171209-12:10]/ stretch main deb http://deb.debian.org/debian/ stretch main contrib deb-src http://deb.debian.org/debian/ stretch main contrib deb http://security.debian.org/debian-security stretch/updates main contrib deb-src http://security.debian.org/debian-security stretch/updates main contrib # stretch-updates, previously known as 'volatile' deb http://deb.debian.org/debian/ stretch-updates main contrib deb-src http://deb.debian.org/debian/ stretch-updates main contrib deb http://ftp.debian.org/debian stretch-backports main contrib Notez la derni\u00e8re ligne rajout\u00e9e au fichier. Ensuite,entrez les commandes suivantes: apt update apt-get install python-certbot-apache -t stretch-backports Un grand nombre de paquets vont \u00eatre install\u00e9s ... On relance le programme certbot: certbot --apache Cette fois-ci, \u00e7a fonctionne. root@atom:/home/ericadmin# certbot --apache Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Which names would you like to activate HTTPS for? - 1: yojik.net 2: www.yojik.net - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1 Obtaining a new certificate Performing the following challenges: http-01 challenge for yojik.net Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/yojiknet-le-ssl.conf Deploying Certificate to VirtualHost /etc/apache2/sites-available/yojiknet-le-ssl.conf Enabling available site: /etc/apache2/sites-available/yojiknet-le-ssl.conf Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 Redirecting vhost in /etc/apache2/sites-enabled/yojiknet.conf to ssl vhost in /etc/apache2/sites-available/yojiknet-le-ssl.conf - Congratulations! You have successfully enabled https://yojik.net You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=yojik.net - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/yojik.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/yojik.net/privkey.pem Your cert will expire on 2018-08-19. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the \"certonly\" option. To non-interactively renew *all* of your certificates, run \"certbot renew\" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le root@atom:/home/ericadmin# On retape les m\u00eames commandes pour g\u00e9n\u00e9rer les certificats pour le domaine www.yojik.net . Testez votre configuration comme indiqu\u00e9 ci-dessus. Vous devez obtenir une note A . Il nous faut maintenant cr\u00e9er un certificat pour notre serveur mail: root@atom:/home/ericadmin# certbot certonly -d atom.yojik.net Saving debug log to /var/log/letsencrypt/letsencrypt.log How would you like to authenticate with the ACME CA? - 1: Apache Web Server plugin - Beta (apache) 2: Spin up a temporary webserver (standalone) 3: Place files in webroot directory (webroot) - Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 1 Plugins selected: Authenticator apache, Installer None Obtaining a new certificate Performing the following challenges: http-01 challenge for atom.yojik.net Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/atom.yojik.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/atom.yojik.net/privkey.pem Your cert will expire on 2018-08-19. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run \"certbot renew\" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le root@atom:/home/ericadmin# Voil\u00e0, nos certificats sont cr\u00e9\u00e9s. Lors de la configuration, notez que j'ai demand\u00e9 une redirection automatique vers la version en https .","title":"Installation des certificats letsencrypt"},{"location":"Installation-Certificats-Letsencrypt/#installation-des-certificats-letsencrypt","text":"","title":"Installation des certificats letsencrypt"},{"location":"Installation-Certificats-Letsencrypt/#installation-des-programmes","text":"Il existe plusieurs clients letsencrypt pour la gestion des certificats. Nous utiliserons certbot , le client officiel de letsencrypt . root@atom:/home/ericadmin/bin# apt install certbot python-certbot-apache Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: augeas-lenses libaugeas0 python-acme python-augeas python-certbot python-cffi-backend python-chardet python-configargparse python-configobj python-cryptography python-dnspython python-enum34 python-funcsigs python-idna python-ipaddress python-mock python-openssl python-parsedatetime python-pbr python-pkg-resources python-psutil python-pyasn1 python-pyicu python-requests python-rfc3339 python-setuptools python-six python-tz python-urllib3 python-zope.component python-zope.event python-zope.hookable python-zope.interface etc...","title":"Installation des programmes"},{"location":"Installation-Certificats-Letsencrypt/#creation-des-certificats-pour-nos-domaines","text":"Bien, les programmes sont install\u00e9s. Nous allons cr\u00e9er des certificats pour les domaines suivantes, apr\u00e8s avoir cr\u00e9\u00e9 les h\u00f4tes virtuels apache. yojik.net www.yojik.net atom.yojik.net Les 2 premiers concernent le site web, le dernier, le serveur de mail. Nous allons d'abord rajouter les noms manquants dans le fichier de zone DNS; pour l'instant, nous n'avons d\u00e9clar\u00e9 qu'un seul nom: atom.yojik.net. Rajoutons les suivants avec des enregistrements CNAME. Ne pas oublier d'incr\u00e9menter le compteur situ\u00e9 dans le fichier de zone DNS apr\u00e8s chaque modification. Lors de l'installation de notre webmail, nous rajouterons le domaine correspondant. Nous ajoutons ici la r\u00e9f\u00e9rence du serveur web, avec un enregistrement CNAME: www.yojik.eu www IN CNAME atom.yojik.net. Relecture des fichiers de configuration par bind: root@atom:/home/ericadmin# service bind9 reload","title":"Cr\u00e9ation des certificats pour nos domaines"},{"location":"Installation-Certificats-Letsencrypt/#lancement-du-programme-certbot","text":"root@atom:/home/ericadmin# certbot --apache Saving debug log to /var/log/letsencrypt/letsencrypt.log Which names would you like to activate HTTPS for? - 1: yojik.net 2: www.yojik.net - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel):1 2 Obtaining a new certificate Performing the following challenges: Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA. Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA. Bon, il y a un probl\u00e8me ... apr\u00e8s recherche sur le web, il se trouve que le programme certbot de Debian/stretch n'est pas \u00e0 jour (modification due \u00e0 un probl\u00e8me de s\u00e9curit\u00e9.) Voici le lien: certbot sur Debian/Stretch problem and solution Ajout des backports dans la liste des d\u00e9pots: Il nous faut ajouter dans /etc/sources.list le d\u00e9pot backports pour obtenir le fichier qui suit: Lien: Installation des backports Voici le contenu du fichier etc/apt/sources.list root@atom:/home/ericadmin# cat /etc/apt/sources.list # # deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 NETINST 20171209-12:10]/ stretch main #deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 NETINST 20171209-12:10]/ stretch main deb http://deb.debian.org/debian/ stretch main contrib deb-src http://deb.debian.org/debian/ stretch main contrib deb http://security.debian.org/debian-security stretch/updates main contrib deb-src http://security.debian.org/debian-security stretch/updates main contrib # stretch-updates, previously known as 'volatile' deb http://deb.debian.org/debian/ stretch-updates main contrib deb-src http://deb.debian.org/debian/ stretch-updates main contrib deb http://ftp.debian.org/debian stretch-backports main contrib Notez la derni\u00e8re ligne rajout\u00e9e au fichier. Ensuite,entrez les commandes suivantes: apt update apt-get install python-certbot-apache -t stretch-backports Un grand nombre de paquets vont \u00eatre install\u00e9s ... On relance le programme certbot: certbot --apache Cette fois-ci, \u00e7a fonctionne. root@atom:/home/ericadmin# certbot --apache Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Which names would you like to activate HTTPS for? - 1: yojik.net 2: www.yojik.net - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1 Obtaining a new certificate Performing the following challenges: http-01 challenge for yojik.net Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/yojiknet-le-ssl.conf Deploying Certificate to VirtualHost /etc/apache2/sites-available/yojiknet-le-ssl.conf Enabling available site: /etc/apache2/sites-available/yojiknet-le-ssl.conf Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 Redirecting vhost in /etc/apache2/sites-enabled/yojiknet.conf to ssl vhost in /etc/apache2/sites-available/yojiknet-le-ssl.conf - Congratulations! You have successfully enabled https://yojik.net You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=yojik.net - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/yojik.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/yojik.net/privkey.pem Your cert will expire on 2018-08-19. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the \"certonly\" option. To non-interactively renew *all* of your certificates, run \"certbot renew\" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le root@atom:/home/ericadmin# On retape les m\u00eames commandes pour g\u00e9n\u00e9rer les certificats pour le domaine www.yojik.net . Testez votre configuration comme indiqu\u00e9 ci-dessus. Vous devez obtenir une note A . Il nous faut maintenant cr\u00e9er un certificat pour notre serveur mail: root@atom:/home/ericadmin# certbot certonly -d atom.yojik.net Saving debug log to /var/log/letsencrypt/letsencrypt.log How would you like to authenticate with the ACME CA? - 1: Apache Web Server plugin - Beta (apache) 2: Spin up a temporary webserver (standalone) 3: Place files in webroot directory (webroot) - Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 1 Plugins selected: Authenticator apache, Installer None Obtaining a new certificate Performing the following challenges: http-01 challenge for atom.yojik.net Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/atom.yojik.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/atom.yojik.net/privkey.pem Your cert will expire on 2018-08-19. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run \"certbot renew\" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le root@atom:/home/ericadmin# Voil\u00e0, nos certificats sont cr\u00e9\u00e9s. Lors de la configuration, notez que j'ai demand\u00e9 une redirection automatique vers la version en https .","title":"lancement du programme certbot"},{"location":"Installation-Dovecot-Authentification/","text":"Installation de dovecot et de l'authentification Pour l'instant, pour r\u00e9cup\u00e9rer ses \u00e9mails, il faut d'abord avoir un compte sur le serveur et se loguer. Ensuite, avec la commande mailx, on peut voir ses messages. Exemple: ericadmin@aijan:~$ mailx \"/var/mail/ericadmin\": 2 messages 2 non lus >U 1 Eric Streit dim. mai 20 08:4 20/742 essai d envoi \u00e0 root U 2 Eric Streit dim. mai 20 08:5 19/736 un autre essai ? Nous allons installer dovecot qui est un serveur pop/imap et d'authentification SASL . Nous pourrons ensuite nous connecter sur le serveur avec un client mail comme thunderbird , et r\u00e9cup\u00e9rer et envoyer nos messages avec celui-ci. Installation des programmes Nous n'installerons que les programmes n\u00e9cessaires \u00e0 la gestion du protocole imap des courriers. Nous n'utilisons pas le protocole pop3 . Tout d'abord, faites une copie de /etc/postfix/main.conf et /etc/postfix/master.conf: # cp master.cf master.cf.orig # cp main.cf main.cf.orig Nous allons maintenant configurer nos boites \u00e9mail; 2 syst\u00e8mes sont courants: fichier unique qui contient tous vos messages (type mbox) ou r\u00e9pertoire avec un fichier par \u00e9mail (type maildir). Par d\u00e9faut, le type est mbox. Nous allons changer cela (question de go\u00fbt ...) Pour cela, nous aurons besoins des programmes utilitaires install\u00e9s avec dovecot. Choix de la base de donn\u00e9es Nous utiliserons la base de donn\u00e9es sqlite . Il est bien s\u00fbr pr\u00e9f\u00e9rable d'utiliser une base de donn\u00e9es plus traditionnelle comme mysql ou postgresql si le nombre d'utilisateurs est important. Mon serveur de mails n'aura que moins de 10 adresses \u00e9mail, donc, sqlite suffira. root@adara:/home/www# apt install dovecot-common dovecot-imapd dovecot-sqlite Lecture des listes de paquets... Fait Construction de l arbre des d\u00e9pendances Lecture des informations d \u00e9tat... Fait Note : s\u00e9lection de \u00ab dovecot-core \u00bb au lieu de \u00ab dovecot-common \u00bb The following additional packages will be installed: libexttextcat-2.0-0 libexttextcat-data libstemmer0d Paquets sugg\u00e9r\u00e9s : dovecot-gssapi dovecot-sieve dovecot-pgsql dovecot-mysql dovecot-ldap dovecot-pop3d dovecot-lmtpd dovecot-managesieved dovecot-solr dovecot-lucene ufw Les NOUVEAUX paquets suivants seront install\u00e9s : dovecot-core dovecot-imapd dovecot-sqlite libexttextcat-2.0-0 libexttextcat-data libstemmer0d 0 mis \u00e0 jour, 6 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 5 062 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 12,2 Mo d espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 libexttextcat-data all 3.4.4-2 [167 kB] R\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libexttextcat-2.0-0 amd64 3.4.4-2+b1 [16,2 kB] R\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 libstemmer0d amd64 0+svn585-1+b2 [63,3 kB] R\u00e9ception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-core amd64 1:2.2.27-3+deb9u2 [3 324 kB] R\u00e9ception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-imapd amd64 1:2.2.27-3+deb9u2 [814 kB] R\u00e9ception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-sqlite amd64 1:2.2.27-3+deb9u2 [677 kB] 5 062 ko r\u00e9ceptionn\u00e9s en 0s (6 873 ko/s) S\u00e9lection du paquet libexttextcat-data pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 26792 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../0-libexttextcat-data_3.4.4-2_all.deb ... D\u00e9paquetage de libexttextcat-data (3.4.4-2) ... S\u00e9lection du paquet libexttextcat-2.0-0:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../1-libexttextcat-2.0-0_3.4.4-2+b1_amd64.deb ... D\u00e9paquetage de libexttextcat-2.0-0:amd64 (3.4.4-2+b1) ... S\u00e9lection du paquet libstemmer0d:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../2-libstemmer0d_0+svn585-1+b2_amd64.deb ... D\u00e9paquetage de libstemmer0d:amd64 (0+svn585-1+b2) ... S\u00e9lection du paquet dovecot-core pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../3-dovecot-core_1%3a2.2.27-3+deb9u2_amd64.deb ... D\u00e9paquetage de dovecot-core (1:2.2.27-3+deb9u2) ... S\u00e9lection du paquet dovecot-imapd pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../4-dovecot-imapd_1%3a2.2.27-3+deb9u2_amd64.deb ... D\u00e9paquetage de dovecot-imapd (1:2.2.27-3+deb9u2) ... S\u00e9lection du paquet dovecot-sqlite pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../5-dovecot-sqlite_1%3a2.2.27-3+deb9u2_amd64.deb ... D\u00e9paquetage de dovecot-sqlite (1:2.2.27-3+deb9u2) ... Param\u00e9trage de libstemmer0d:amd64 (0+svn585-1+b2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ... Param\u00e9trage de libexttextcat-data (3.4.4-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de libexttextcat-2.0-0:amd64 (3.4.4-2+b1) ... Param\u00e9trage de dovecot-core (1:2.2.27-3+deb9u2) ... Creating config file /etc/dovecot/dovecot.conf with new version Creating config file /etc/dovecot/dovecot-dict-auth.conf.ext with new version Creating config file /etc/dovecot/dovecot-dict-sql.conf.ext with new version Creating config file /etc/dovecot/dovecot-sql.conf.ext with new version Creating config file /etc/dovecot/conf.d/10-auth.conf with new version Creating config file /etc/dovecot/conf.d/10-director.conf with new version Creating config file /etc/dovecot/conf.d/10-logging.conf with new version Creating config file /etc/dovecot/conf.d/10-mail.conf with new version Creating config file /etc/dovecot/conf.d/10-master.conf with new version Creating config file /etc/dovecot/conf.d/10-tcpwrapper.conf with new version Creating config file /etc/dovecot/conf.d/15-lda.conf with new version Creating config file /etc/dovecot/conf.d/15-mailboxes.conf with new version Creating config file /etc/dovecot/conf.d/90-acl.conf with new version Creating config file /etc/dovecot/conf.d/90-plugin.conf with new version Creating config file /etc/dovecot/conf.d/90-quota.conf with new version Creating config file /etc/dovecot/conf.d/auth-checkpassword.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-deny.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-dict.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-master.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-passwdfile.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-sql.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-static.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-system.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-vpopmail.conf.ext with new version Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service \u2192 /lib/systemd/system/dovecot.service. Param\u00e9trage de dovecot-imapd (1:2.2.27-3+deb9u2) ... Creating config file /etc/dovecot/conf.d/20-imap.conf with new version Param\u00e9trage de dovecot-sqlite (1:2.2.27-3+deb9u2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour dovecot-core (1:2.2.27-3+deb9u2) ... root@adara:/home/www# Configuration du type de bo\u00eete aux lettres C'est ici que l'on configure si on veut un fichier unique qui contient tous les messages (type inbox) ou un fichier par \u00e9mail (type Maildir). Cela se passe dans le fichier /etc/postfix/main.cf On rajoute les lignes suivantes: home_mailbox = Maildir/ mailbox_command = Si ces lignes existaient avant, il faut les commenter (ajout d'un # en d\u00e9but de ligne.) On recharge le fichier de conf service postfix reload Et on teste: eric@aldebaran:~/Devs/Travail/Installation serveur/Tutorial$ mail ericadmin@aijan.yojik.net Cc: Subject: Re-essai re-essai de aldebaran . eric@aldebaran:~/Devs/Travail/Installation serveur/Tutorial$ J'envoie un courrier \u00e0 partir de mon desktop. V\u00e9rification sur le serveur: ericadmin@aijan:~$ ls bin index.html Maildir mbox ericadmin@aijan:~$ Le r\u00e9pertoire Maildir a bien \u00e9t\u00e9 cr\u00e9\u00e9. V\u00e9rification de la r\u00e9ception des messages: ericadmin@aijan:~$ cd Maildir/ ericadmin@aijan:~/Maildir$ ls cur new tmp ericadmin@aijan:~/Maildir$ cd new/ ericadmin@aijan:~/Maildir/new$ ls 1526897441.V801Icc005dM227044.aijan 1526897501.V801Icc0060M464181.aijan 1526897576.V801Icc0061M979030.aijan ericadmin@aijan:~/Maildir/new$ ericadmin@aijan:~/Maildir/new$ cat 1526897576.V801Icc0061M979030.aijan Return-Path: <eric@aldebaran.yojik.net> X-Original-To: ericadmin@aijan.yojik.net Delivered-To: ericadmin@aijan.yojik.net Received: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:6423:417b:6ef:ee21]) by aijan.yojik.net (Postfix) with ESMTP id EC11BD00903 for <ericadmin@aijan.yojik.net>; Mon, 21 May 2018 12:12:56 +0200 (CEST) Received: by aldebaran.yojik.net (Postfix, from userid 1000) id 8B42920620A; Mon, 21 May 2018 12:12:56 +0200 (CEST) To: <ericadmin@aijan.yojik.net> Subject: Re-essai X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20180521101256.8B42920620A@aldebaran.yojik.net> Date: Mon, 21 May 2018 12:12:56 +0200 (CEST) From: eric@aldebaran.yojik.net (Eric Streit) re-essai de aldebaran . ericadmin@aijan:~/Maildir/new$ Les messages sont bien re\u00e7us. Par contre, mailx ne fonctionne plus (uniquement avec des fichiers mbox.) Pour lire nos messages, il nous faut installer le lecteur de courriers mutt . root@aijan:/etc/postfix# apt install mutt Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: libgmime-2.6-0 libgpgme11 libnotmuch4 libtalloc2 libtokyocabinet9 Paquets sugg\u00e9r\u00e9s : gpgsm urlview mixmaster Les NOUVEAUX paquets suivants seront install\u00e9s : libgmime-2.6-0 libgpgme11 libnotmuch4 libtalloc2 libtokyocabinet9 mutt 0 mis \u00e0 jour, 6 nouvellement install\u00e9s, 0 \u00e0 enlever et 12 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 2 433 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 8 665 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://deb.debian.org/debian stretch/main amd64 libtokyocabinet9 amd64 1.4.48-11+b1 [367 kB] R\u00e9ception de:2 http://deb.debian.org/debian stretch/main amd64 libgpgme11 amd64 1.8.0-3+b2 [160 kB] R\u00e9ception de:3 http://deb.debian.org/debian stretch/main amd64 libgmime-2.6-0 amd64 2.6.22+dfsg2-1 [232 kB] R\u00e9ception de:4 http://deb.debian.org/debian stretch/main amd64 libtalloc2 amd64 2.1.8-1 [36,3 kB] .... On teste; on le lance avec la commande suivante: ericadmin@aijan:~$ mutt -f ./Maildir/ GPGME : protocole CMS non disponible 3 gard\u00e9(s), 0 effac\u00e9(s). ericadmin@aijan:~$ R\u00e9sultat: (extrait de l'\u00e9cran) q:Quitter d:Effacer u:R\u00e9cup s:Sauver m:Message r:R\u00e9pondre g:Groupe ?:Aide 1 O + mai 21 root (0,1K) Essai 2 O F mai 21 To root@localho (0,1K) essai d'envoi \u00e0 root 3 O + mai 21 Eric Streit (0,1K) Re-essai NeoMutt: ./Maildir/ [Msgs:3 Old:3 1,6K](threads/date)- Nos \u00e9mails sont bien l\u00e0 :) Nous pourrons supprimer mutt plus tard si nous voulons gagner un peu de place. Architecture Avant de continuer \u00e0 configurer notre serveur mail, il serait utile d'avoir une vue d'ensemble du syst\u00e8me que nous allons configurer. Pour l'instant, nous n'avons apport\u00e9 que peu de modifications aux fichiers de configuration (nous avons seulement chang\u00e9 le type de format de nos bo\u00eetes aux lettres : mbox -> Maildir Si nous regardons quels ports sont \u00e9cout\u00e9s; nous voyons que nous avons pour l'instant: le port 22 (SSH) le port 25 (Postfix) le port 80 (Apache) le port 443 (Apache) le port 53 et 953 (Bind) Et le port 143 (imap) de dovecot, mais dovecot n'est pas encore int\u00e9gr\u00e9 \u00e0 notre serveur mail et est non-configur\u00e9 . root@aijan:/home/ericadmin# netstat -tlnp Connexions Internet actives (seulement serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 536/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 536/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 603/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 850/master tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 536/named tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 676/apache2 tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 607/dovecot tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 676/apache2 tcp6 0 0 :::53 :::* LISTEN 536/named tcp6 0 0 :::22 :::* LISTEN 603/sshd tcp6 0 0 :::25 :::* LISTEN 850/master tcp6 0 0 ::1:953 :::* LISTEN 536/named tcp6 0 0 :::143 :::* LISTEN 607/dovecot root@aijan:/home/ericadmin# Notez la commande netstat -tlnp pour voir les ports ouverts ainsi que les programmes qui les g\u00e8rent. Nous n'utiliserons pas le protocole Pop3 (ni sa variante pop3s). Le protocole Imap offre bien plus de possibilit\u00e9s. (parties rouges entour\u00e9es de noir) Sch\u00e9ma d'ensemble Les parties impl\u00e9ment\u00e9es sont en rouge sur le dessin suivant: Explication: Les ports servis par Postfix Le port 25 est utilis\u00e9 pour la communication entre serveurs smtp; il permet une connexion \"en clair\" ou chiffr\u00e9e. Il peut \u00eatre aussi utilis\u00e9 pour l'envoi des mails \u00e0 partir d'un client. Nous l'avons d'ailleurs fait avec la commande mail et telnet . Le port 587 est le port \"submission\", port utilis\u00e9 par d\u00e9faut par les clients mail pour envoyer du courrier sur le serveur (thunderbird, etc ...) qui le dispatche ensuite, soit dans les bo\u00eetes de courrier locales, soit \u00e0 un destinataire ext\u00e9rieur. Le port 465 est un port qui a \u00e9t\u00e9 r\u00e9serv\u00e9 pour les communications chiffr\u00e9es (SMTP over SSL): il \u00e9tait utilis\u00e9 avant que STARTTLS ne soit utilis\u00e9; il a \u00e9t\u00e9 enlev\u00e9 des ports standards de mail. Le premier port (25) est un port d'entr\u00e9e-sortie r\u00e9serv\u00e9 \u00e0 la communication entre serveurs ( mais permet aussi la submission de messages avec authentification .) Souvenez-vous que le port 25 est bloqu\u00e9 par de nombreux FAI. La communication peut \u00eatre chiffr\u00e9e ou non, suivant les possibilit\u00e9s du serveur et du client, et donc, les mots de passe peuvent passer en clair. La communication commence en mode clair et apr\u00e8s n\u00e9gociation, passe en mode chiffr\u00e9e si celle-ci est disponible: (STARTTLS) Les 2 derniers ports (465 et 587) sont des ports d'entr\u00e9e de vos messages envoy\u00e9s par des clients, apr\u00e8s authentification, en mode chiffr\u00e9 ou non. Voil\u00e0 un sh\u00e9ma de ce que nous allons obtenir: Les ports servis par Dovecot Les ports 143 et 993 sont des ports r\u00e9serv\u00e9s au protocole IMAP(s). Les port 110 et 995 sont des ports r\u00e9serv\u00e9s au protocole POP3(s), mais nous ne l'utiliserons pas. Ces ports sont servis par Dovecot. Il permettent de g\u00e9rer notre bo\u00eete mail, r\u00e9cup\u00e9rer, effacer nos messages, cr\u00e9er des dossiers dans lesquels nous pouvons trier nos messages. Ce que nous allons impl\u00e9menter Nous impl\u00e9menterons une politique particuli\u00e8re, comme celle d\u00e9crite ici: RasperryPi Email server Part 2 Cet auteur s\u00e9pare les communications entre serveurs (port 25) et client-serveur (ports 587 et 465). Il emp\u00eache les communications non-chifr\u00e9es entre client et serveur, et utilise le port 465 pour les communications chiffr\u00e9es (port d\u00e9pr\u00e9ci\u00e9 par le standard.) Jusqu'\u00e0 maintenant, nous n'avons utilis\u00e9 ni dovecot, ni base de donn\u00e9es; l'authentification se faisant directement sur le serveur en acc\u00e9dant \u00e0 notre compte sur le serveur (login par identifiant/mot de passe ou clef SSH). Nous allons impl\u00e9menter l'acc\u00e8s par Imap et Imaps de nos courriers \u00e0 partir de n'importe quelle machine et avec authentification (toujours pas de comptes virtuels.) L'authentification se faisait avant en se connectant sur nos comptes en SSH . Nous avons d\u00e9j\u00e0 g\u00e9n\u00e9r\u00e9 auparavant nos clefs de chiffrage avec certbot . (voir le chapitre suivant ...) Elles sont situ\u00e9es dans /etc/letsencrypt/live/atom.yojik.net . Dovecot est un serveur Imap et pop3. Il assure en plus l'authentification. Configuration de Dovecot Indiquer \u00e0 Dovecot d'\u00e9couter sur toutes les interfaces, en IPV4 et IPV6. Le fichier \u00e0 configurer (apr\u00e8s copie) est /etc/dovecot/dovecot.conf ; changer la ligne qui contient: listen = en listen = *, :: Il faut lui indiquer o\u00f9 sont stock\u00e9s nos mails et sous quel format . Cela se configure dans le fichier: /etc/dovecot/conf.d/10-mail.conf Voici un extrait du contenu original: ## Mailbox locations and namespaces ## mail_location = mbox:~/mail:INBOX=/var/mail/%u Le format par d\u00e9faut est mbox situ\u00e9 dans /var/mail/user Nous allons changer cela en: mail_location = maildir:~/Maildir Dovecot utilisera notre bo\u00eete aux lettres situ\u00e9e dans le home de chaque user, et dans le r\u00e9pertoire Maildir. Souvenez-vous que nous avions configur\u00e9 Postfix afin qu'il utilise le format Maidir. Indiquer \u00e0 Postfix d'utiliser dovecot pour l'acc\u00e8s aux mails ainsi que pour l'authentification. Nous allons modifier le fichier /etc/postfix/main.cf et ajouter les lignes suivantes: smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes Nous allons indiquer \u00e0 Dovecot de r\u00e9pondre aux demandes d'authentification de postfix: Apr\u00e8s avoir fait une sauvegarde du fichier original /etc/dovecot/conf.d/10-master.conf (toujours sauvegarder les fichiers avant modifications!), nous allons modifier le m\u00e9canisme d'authentification de docvecot. Pour cela nous allons remplacer la partie intitul\u00e9e service auth par ce qui suit: service auth { unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } Autorisons maintenant le plain login ; nous allons modifier le fichier /etc/dovecot/conf.d/10-auth.conf en ajoutant ou modifiant les lignes suivantes: disable_plaintext_auth = no auth_mechanisms = plain login On relance postfix et dovecot pour prendre en compte les modifications. root@atom:/etc/postfix# systemctl restart postfix root@atom:/etc/postfix# systemctl restart dovecot On v\u00e9rifie que tout s'est bien pass\u00e9 avec la commande: root@atom:/etc/postfix# tail -f /var/log/daemon.log Nov 26 12:47:22 atom systemd[1]: Stopped Postfix Mail Transport Agent (instance -). Nov 26 12:47:22 atom systemd[1]: Starting Postfix Mail Transport Agent (instance -)... Nov 26 12:47:23 atom systemd[1]: Started Postfix Mail Transport Agent (instance -). Nov 26 12:47:23 atom systemd[1]: Starting Postfix Mail Transport Agent... Nov 26 12:47:23 atom systemd[1]: Started Postfix Mail Transport Agent. Nov 26 12:47:28 atom systemd[1]: Stopping Dovecot IMAP/POP3 email server... Nov 26 12:47:29 atom systemd[1]: Stopped Dovecot IMAP/POP3 email server. Nov 26 12:47:29 atom systemd[1]: Starting Dovecot IMAP/POP3 email server... Nov 26 12:47:29 atom systemd[1]: dovecot.service: PID file /var/run/dovecot/master.pid not readable (yet?) after start: No such file or directory Nov 26 12:47:29 atom systemd[1]: Started Dovecot IMAP/POP3 email server. On quitte avec Ctrl C. C'est bon. Test 1 Nous allons nous connecter avec telnet; voici la capture de la session: Tout d'abord, cr\u00e9ation d'un nouvel utilisateur de nom testmail et mot de passe testmail (oui, rien de bien original). A partir du compte root, nous allons envoyer un message \u00e0 cet utilisateur (voir au-dessus pour comment faire avec la commande mail.) Testons si le message est bien arriv\u00e9: root@atom:/etc/postfix# adduser testmail Ajout de l'utilisateur \u00ab testmail25 \u00bb ... Ajout du nouveau groupe \u00ab testmail25 \u00bb (1001) ... Ajout du nouvel utilisateur \u00ab testmail25 \u00bb (1001) avec le groupe \u00ab testmail25 \u00bb ... Cr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/testmail25 \u00bb... Copie des fichiers depuis \u00ab /etc/skel \u00bb... Entrez le nouveau mot de passe UNIX : Retapez le nouveau mot de passe UNIX : passwd: password updated successfully Changing the user information for testmail Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Cette information est-elle correcte ? [O/n]o root@atom:/etc/postfix# mail testmail Cc: Subject: Essai 7 Essai 7 . root@atom:/etc/postfix# su - testmail testmail25@atom:~$ mutt -f ./Maildir/ GPGME : protocole CMS non disponible 1 gard\u00e9(s), 0 effac\u00e9(s). Le message est bien arriv\u00e9. Essayons avec les commandes Imap; il nous faut installer telnet avant: apt install telnet Nous pouvons donc nous connecter aux ports suivants: 143 et 993. root@aijan:/home/ericadmin# telnet localhost 143 Trying ::1... Connected to localhost. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready. x1 LOGIN testmail testmail x1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in x2 SELECT Inbox * FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft) * OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft \\*)] Flags permitted. * 1 EXISTS * 1 RECENT * OK [UNSEEN 1] First unseen. * OK [UIDVALIDITY 1527165527] UIDs valid * OK [UIDNEXT 2] Predicted next UID x2 OK [READ-WRITE] Select completed (0.000 + 0.000 secs). x4 LOGOUT * BYE Logging out x4 OK Logout completed (0.000 + 0.000 secs). Connection closed by foreign host. root@aijan:/home/ericadmin# \u00c7a marche: OK [UNSEEN 1] First unseen. Nous nous sommes connect\u00e9s avec le mot de passe en clait (testmail pour l'utilisateur testmail.) Test 2: envoi de mail Connexion sur le port 25 (postfix) en utilisant l'authentification g\u00e9r\u00e9e par dovecot. Nous avons chiffr\u00e9 le mot de passe avec la commande suivante: printf '\\0%s\\0%s' 'testmail' 'testmail' | openssl base64 AHRlc3RtYWlsAHRlc3RtYWls root@aijan:/home/ericadmin# telnet localhost 25 Trying ::1... Connected to localhost. Escape character is '^]'. 220 aijan.yojik.net ESMTP Postfix (Debian/GNU) ehlo localhost 250-aijan.yojik.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 AUTH PLAIN AHRlc3RtYWlsAHRlc3RtYWls 235 2.7.0 Authentication successful mail from: testmail 250 2.1.0 Ok data 554 5.5.1 Error: no valid recipients rcpt to: ericounet26200@gmail.com 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> Subject: mon, premier mail avec sasl mon premier mail avec sasl . 250 2.0.0 Ok: queued as A664BD004A1 quit 221 2.0.0 Bye Connection closed by foreign host. root@aijan:/home/ericadmin# V\u00e9rification de la bonne r\u00e9ception du message: le message est bien re\u00e7u. Configuration des certificats Jusqu'\u00e0 pr\u00e9sent, nous avons utilis\u00e9 les certificats fournis par Debian \u00e0 l'installation. Nous allons utiliser les certificats que nous avons cr\u00e9\u00e9s auparavant avec letsencrypt. Il y a 2 lignes \u00e0 modifier dans /etc/postfix/main.cf: smtpd_tls_cert_file = /etc/letsencrypt/live/toto.yojik.net/fullchain.pem smtpd_tls_key_file = /etc/letsencrypt/live/toto.yojik.net/privkey.pem Bien entendu, modifiez la partie toto.yojik.net par le nom de votre serveur mail et pour lequel vous avez g\u00e9n\u00e9r\u00e9 les certificats. Il y a 3 lignes \u00e0 ajouter/modifier dans /etc/dovecot/conf.d/10-ssl.conf ssl = required ssl_cert = </etc/letsencrypt/live/toto.yojik.net/fullchain.pem ssl_key = </etc/letsencrypt/live/toto.yojik.net/privkey.pem Comme avant, personnalisez avec votre nom de serveur mail. Relancez vos serveurs avec les commandes suivantes: root@aijan:/home/ericadmin# systemctl restart postfix root@aijan:/home/ericadmin# systemctl restart dovecot Bien v\u00e9rifier dans les logs (/var/log/daemon.log) que tout s'est bien pass\u00e9 (pas d'erreur de frappe par exemple ...) Test Nous allons refaire les tests d\u00e9j\u00e0 r\u00e9alis\u00e9s pr\u00e9c\u00e9demment pour v\u00e9rifier que rien n'est cass\u00e9 suite \u00e0 la modification de nos certificats. root@aijan:/home/ericadmin# telnet localhost 25 Trying ::1... Connected to localhost. Escape character is '^]'. 220 aijan.yojik.net ESMTP Postfix (Debian/GNU) ehlo aijan.yojik.net 250-aijan.yojik.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 AUTH PLAIN AHRlc3RtYWlsAHRlc3RtYWls 235 2.7.0 Authentication successful mail from: testmail 250 2.1.0 Ok rcpt to: ericounet26200@gmail.com 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> subject: essai un essai . 250 2.0.0 Ok: queued as 9EEF6D0002E quit 502 5.5.2 Error: command not recognized quit 221 2.0.0 Bye Connection closed by foreign host. root@aijan:/home/ericadmin# \u00c7a fonctionne. L'authentification avec les nouveaux certificats est assur\u00e9e. Test de la connexion sur le port 993 \u00e0 partir d'un ordinateur ext\u00e9rieur eric@aldebaran:~$ openssl s_client -connect yojik.net:993 CONNECTED(00000003) depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = atom.yojik.net verify return:1 Certificate chain 0 s:/CN=atom.yojik.net i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 i:/O=Digital Signature Trust Co./CN=DST Root CA X3 Server certificate -----BEGIN CERTIFICATE----- MIIFVTCCBD2gAwIBAgISA2ymxMSWOd9z4d5MhK1RarzkMA0GCSqGSIb3DQEBCwUA MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODExMTExNTI2NDhaFw0x OTAyMDkxNTI2NDhaMBkxFzAVBgNVBAMTDmF0b20ueW9qaWsubmV0MIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr+SwsS/VwilSnazx4Y9Xj9OIzYPx2s5W kxocZT7BMdO0oKNKolbe6AJMGrNKf5TjQu9EN+yal6rNZUOrrR7dS2gKvRjyH2mW 5JniCW/osYVkHglgjvNbihQP4IBY9brvvtIW9reKyA9adq5zHHRW2RNaBG18oXFa mQb+uFGiCkpyjGK7XYmPkVA7DM6TtciFBGeTmY15vF4aniPQtu1TuksEc+WDvWfR K9ebYXghqBJd1OigtgVhOpDiSAnxjtx9wcjHuic/9wU8iI2VdkOB0xoMxlRNjQSZ DWgRCiZr/LwtoX6bSWzJex1kW7Q/zQnvA1eaKqD6mCIp5uO7KiK5AQIDAQABo4IC ZDCCAmAwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF BQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQyxrlKdL9RV+v8Y7YwH4mV0iq4 EDAfBgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBvBggrBgEFBQcBAQRj MGEwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwLmludC14My5sZXRzZW5jcnlwdC5v cmcwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5v cmcvMBkGA1UdEQQSMBCCDmF0b20ueW9qaWsubmV0MEwGA1UdIARFMEMwCAYGZ4EM AQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0 c2VuY3J5cHQub3JnMIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcA4mlLribo6UAJ 6IYbtjuD1D7n/nSI+6SPKJMBnd3x2/4AAAFnA5jZtQAABAMASDBGAiEAshqJHr2M l6n+9Dd31jkskn3lxh5iC7FTfPZoKxZGT6ECIQDDby9vNMmzh8eYysYr5UuTE4R9 VOko3rzQZgj51O/nEQB2AGPy283oO8wszwtyhCdXazOkjWF3j711pjixx2hUS9iN AAABZwOY2bgAAAQDAEcwRQIhAPTO+Wry4Fl2+HddFMsWpfYJQ7dkXtW93N1+z77y ofgMAiB76ad1N7+AVOh4YvrRboK31F5cs3YJnKmKxINWkrI70TANBgkqhkiG9w0B AQsFAAOCAQEAJ1BYUTWpCIIYD0FKB9vuCEfYrg1NNHhYYr0jUKR49EPLO8DS1aRp KK1tr9EZti2lOYaEOKNo4dQkLLKgsF1kovHreosvXPF2oXRbN6UdVu+67fhIokD5 FIS9pphaxIHEC4A9h7JK0LHJHMG9ySRDBbtz9Y0b7z5jGIxX0yzaqBcPJVG26SJm uyiys2bklC+N3mYAVYb/c3VWdCWzusHks+HCTx2y+YkqVkvCepdQYFoUKpk6ScSc Fz6r0DWBXGmhJLg0K+KxfXGUtTtwDjnBZCocX3FrQsQNrbYtvLyK2QhDv1Mr6V96 P11a4LV3qq2eTfoIiNd9m2iqCJ7/pSWIjw== -----END CERTIFICATE----- subject=/CN=atom.yojik.net issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 No client certificate CA names sent Peer signing digest: SHA512 Server Temp Key: ECDH, P-384, 384 bits SSL handshake has read 3236 bytes and written 334 bytes Verification: OK New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 Session-ID: D488F9943CD771D5DF400C676729BDF315F5CBD01128E922D7DBCC0D80B467F3 Session-ID-ctx: Master-Key: 45BF00E99AA29FB83E1395741E3A506800473105882554C46B50639665B600000E1F3048F051EF5E12D6C0804A0698D8 PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 7200 (seconds) TLS session ticket: 0000 - 59 1e 77 bc e8 c1 0e f8-c9 f2 38 f8 f9 f0 e9 4f Y.w.......8....O 0010 - 4b 91 2a 39 73 cc a6 85-f2 22 96 ae 4a a3 84 b8 K.*9s....\"..J... 0020 - e8 de 9b 34 74 1a d9 e7-88 f5 d1 bb 4c 2d 59 f2 ...4t.......L-Y. 0030 - 0e 99 1e bd b7 82 ef 32-ab 0c 1a 33 c0 dd 31 6a .......2...3..1j 0040 - 5b 38 fc c5 27 29 d7 a3-ae f0 a5 bb 66 a0 b4 eb [8..')......f... 0050 - 7c 95 f2 16 cb 92 5c f3-7f c0 30 33 ec 77 f0 a8 |.....\\...03.w.. 0060 - 8f 5e 9c f7 de c9 4f 95-1a 0e 09 27 7a 45 b0 db .^....O....'zE.. 0070 - 84 ba 72 37 f1 a2 f5 95-43 0c e2 eb a3 18 94 a8 ..r7....C....... 0080 - b3 d4 d7 15 4c 81 08 a2-17 3f 7b 15 fe 81 d8 5c ....L....?{....\\ 0090 - 74 60 ac 5e 2a 5a 22 07-6f ba 03 4f d5 46 5a 04 t`.^*Z\".o..O.FZ. Start Time: 1543235404 Timeout : 7200 (sec) Verify return code: 0 (ok) Extended master secret: yes * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready. 1 Login testmail testmail 1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in QUIT DONE eric@aldebaran:~$ Le OK [CAPABILITY ... indique que la connexion s'est faite normalement; les caract\u00e9ristiques du certificat sont affich\u00e9es au-dessus. Le Logged: in indique que l'authentification a march\u00e9. Nous avons donc test\u00e9 les ports 25, 143 et 993 avec succ\u00e8s. Configuration d'un port qui n'accepte que les communications chiffr\u00e9es Pour l'instant, postfix n'\u00e9coute que le port 25 (vous pouvez le v\u00e9rifier avec la commande netstat -tlpn .) Dans le fichier /etc/postfix/master.cf, seul la ligne suivante est active (d\u00e9comment\u00e9e): smtp inet n - y - - smtpd Nous allons mettre postfix en \u00e9coute du port 465: Dans le fichier /etc/postfix/master.cf, la ligne \u00e0 d\u00e9commenter est la suivante: # smtps inet n - - - - smtpd pour obtenir: smtps inet n - - - - smtpd Test des ports On relance postfix et on regarde les ports servis: root@aijan:/home/ericadmin# service postfix restart root@aijan:/home/ericadmin# netstat -tlpn Connexions Internet actives (seulement serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 552/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 552/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 580/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2159/master tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 552/named tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 649/apache2 tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 1792/dovecot tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 649/apache2 tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 2159/master tcp6 0 0 :::53 :::* LISTEN 552/named tcp6 0 0 :::22 :::* LISTEN 580/sshd tcp6 0 0 :::25 :::* LISTEN 2159/master tcp6 0 0 ::1:953 :::* LISTEN 552/named tcp6 0 0 :::143 :::* LISTEN 1792/dovecot tcp6 0 0 :::465 :::* LISTEN 2159/master root@aijan:/home/ericadmin# Le port 465 est ouvert et servi par postfix. Test de connexion sur le port 465 root@aijan:/home/ericadmin# telnet localhost 465 Trying ::1... Connected to localhost. Escape character is '^]'. 220 aijan.yojik.net ESMTP Postfix (Debian/GNU) ehlo aijan.yojik.net 250-aijan.yojik.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 quit 221 2.0.0 Bye Connection closed by foreign host. root@aijan:/home/ericadmin# La connexion se fait normalement. Nous allons maintenant bloquer les communications non-chiffr\u00e9es; les param\u00e8tres \u00e0 modifier sont dans /etc/postfix/master.conf (2 premiers param\u00e8tres de la ligne smtps \u00e0 d\u00e9commenter.) smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes Test de communication chiff\u00e9re et non-chiffr\u00e9e Essai avec communication non-chifr\u00e9e: root@aijan:/home/ericadmin# telnet localhost 465 Trying ::1... Connected to localhost. Escape character is '^]'. Connection closed by foreign host. root@aijan:/home/ericadmin# La communication est refus\u00e9e . Essai avec communication chiffr\u00e9e (nous utilisons openssl pour cela): root@adara:/etc# openssl s_client -connect localhost:465 -quiet depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = adara.yojik.eu verify return:1 220 adara.yojik.eu ESMTP Postfix (Debian/GNU) ehlo me 250-adara.yojik.eu 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 quit 221 2.0.0 Bye root@adara:/etc# La communication est accept\u00e9e et fonctionne. Nous voyons aussi que notre certificat Letsencrypt a \u00e9t\u00e9 v\u00e9rifi\u00e9. Il reste une modification \u00e0 faire pour n'autoriser que les communications chiffr\u00e9es: Dans /etc/postfix/main.cf ajouter ou modifier la ligne suivante: smtpd_tls_auth_only = yes Et rechargez Postfix. Test des communications root@aijan:/home/ericadmin# telnet localhost 25 Trying ::1... Connected to localhost. Escape character is '^]'. 220 aijan.yojik.net ESMTP Postfix (Debian/GNU) ehlo aijan.yojik.net 250-aijan.yojik.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 quit 221 2.0.0 Bye Connection closed by foreign host. root@aijan:/home/ericadmin# On voit que la ligne 250-AUTH PLAIN LOGIN est absente, ce qui confirme que Postfix a bien pris en compte notre derni\u00e8re modification. Interdiction de communications non-chiffr\u00e9es sur le port 465 Nous allons rajouter/modifier une \"restriction\" \u00e0 la ligne g\u00e9rant le port 465 dans /etc/postfix/master.cf smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject La derni\u00e8re ligne est rajout\u00e9e, d\u00e9-comment\u00e9e, modifi\u00e9e (suivant le cas). On recharge postfix et on teste. Test du rejet des communications non-chiffr\u00e9es root@aijan:/etc/postfix# telnet localhost 465 Trying ::1... Connected to localhost. Escape character is '^]'. quit Connection closed by foreign host. root@aijan:/etc/postfix# \u00c7a fonctionne. Ajout de la gestion du port 587 Sh\u00e9ma: Dans le fichier /etc/postfix/master.cf, d\u00e9-commentez les lignes suivantes et modifiez les comme indiqu\u00e9. Ce sont les m\u00eames modifications que celles effectu\u00e9es pour le port 465. submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes Ainsi que -o smtpd_recipient_restrictions= Test du port 587 root@aijan:/etc/bind# netstat -tlnp Connexions Internet actives (seulement serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 3410/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3410/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 580/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 4080/master tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 3410/named tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 649/apache2 tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 2668/dovecot tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 4080/master tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 2668/dovecot tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 649/apache2 tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 4080/master tcp6 0 0 :::53 :::* LISTEN 3410/named tcp6 0 0 :::22 :::* LISTEN 580/sshd tcp6 0 0 :::25 :::* LISTEN 4080/master tcp6 0 0 ::1:953 :::* LISTEN 3410/named tcp6 0 0 :::993 :::* LISTEN 2668/dovecot tcp6 0 0 :::587 :::* LISTEN 4080/master tcp6 0 0 :::143 :::* LISTEN 2668/dovecot tcp6 0 0 :::465 :::* LISTEN 4080/master root@aijan:/etc/bind# Le port 587 est g\u00e9r\u00e9. Ajout de la gesion du port 993 (imap avec SSL/TLS) Nous allons modifier la configuration de dovecot pour la prise en charge de ce port. Il n'est pas encore servi comme nous l'avons vu avec la commande netstat -tlpn (vu auparavant.) Le fichier \u00e0 modifier est: /etc/dovecot/conf.d/10-master.conf La partie du fichier \u00e0 modifier est la suivante: service imap-login { inet_listener imap { #port = 143 } inet_listener imaps { #port = 993 #ssl = yes } pour donner ceci: service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } Dans le fichier /etc/dovecot/conf.d/10-ssl.conf: ssl = yes ssl_protocols = !SSLv3 Test de la gestion du port 993 root@aijan:/etc/dovecot# netstat -tlpn Connexions Internet actives (seulement serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 552/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 552/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 580/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2376/master tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 552/named tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 649/apache2 tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 2668/dovecot tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 2668/dovecot tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 649/apache2 tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 2376/master tcp6 0 0 :::53 :::* LISTEN 552/named tcp6 0 0 :::22 :::* LISTEN 580/sshd tcp6 0 0 :::25 :::* LISTEN 2376/master tcp6 0 0 ::1:953 :::* LISTEN 552/named tcp6 0 0 :::993 :::* LISTEN 2668/dovecot tcp6 0 0 :::143 :::* LISTEN 2668/dovecot tcp6 0 0 :::465 :::* LISTEN 2376/master root@aijan:/etc/dovecot# Le port 993 est actif. Mise en route Pour l'instant, notre Firewall n'autorise aucune conenxion sur les port 143, 993, 465, 587. Nous allons ouvrir les ports. Avant cela, il nous faut supprimer l'utilisateur testmail ... userdel testmail Pensez \u00e0 supprimer le r\u00e9pertoire home de cet utlisateur: rm -Rf /home/testmail Ceci fait, ouvrons nos ports. Voici les lignes \u00e0 ajouter \u00e0 notre programme firewall.sh. Il suffira de le lancer et de sauver la configuration (comme d\u00e9j\u00e0 vu pr\u00e9c\u00e9demment) # Mail SMTP:25 $IPT -t filter -A INPUT -p tcp --dport 25 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 25 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT # Mail SMTP:587 $IPT -t filter -A INPUT -p tcp --dport 587 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 597 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT # Mail IMAP:143 $IPT -t filter -A INPUT -p tcp --dport 143 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 143 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT # Mail IMAPS:993 $IPT -t filter -A INPUT -p tcp --dport 993 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 993 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT # Mail 465 $IPT -t filter -A INPUT -p tcp --dport 465 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 465 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT Test apr\u00e8s ouverture des ports root@aijan:/home/ericadmin/bin# ./firewall.sh restart firewall stopped [OK] firewall started [OK] root@aijan:/home/ericadmin/bin# iptables -L Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:domain ACCEPT udp -- anywhere anywhere udp dpt:domain ACCEPT tcp -- 192.168.111.150 anywhere ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:https ACCEPT tcp -- anywhere anywhere tcp dpt:smtp ACCEPT tcp -- anywhere anywhere tcp dpt:submission ACCEPT tcp -- anywhere anywhere tcp dpt:imap2 ACCEPT tcp -- anywhere anywhere tcp dpt:imaps ACCEPT tcp -- anywhere anywhere tcp dpt:urd Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT udp -- anywhere anywhere udp dpt:ntp ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:https ACCEPT tcp -- anywhere anywhere tcp dpt:smtp ACCEPT tcp -- anywhere anywhere tcp dpt:submission ACCEPT tcp -- anywhere anywhere tcp dpt:imap2 ACCEPT tcp -- anywhere anywhere tcp dpt:imaps ACCEPT tcp -- anywhere anywhere tcp dpt:urd root@aijan:/home/ericadmin/bin# Les ports sont bien ouverts. Et on sauvegarde: service netfilter-persistent save root@aijan:/home/ericadmin/bin# service netfilter-persistent save [....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save done. root@aijan:/home/ericadmin/bin# Les r\u00e8gles IPV4 et IPV6 sont sauvegard\u00e9es. Mise en place du fichier auto-configuration Mozilla A voir .... Test en situation Lecture des messages A partir de ma machine de bureau, test de connexion en IMAP, liste des messages, et lecture du contenu (port 993): eric@aldebaran:~$ openssl s_client -connect atom.yojik.net:993 -quiet depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = aijan.yojik.net verify return:1 - OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready. a login ericadmin eBnIDQ+FZZI= a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in b select inbox - FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk) - OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk \\*)] Flags permitted. - 3 EXISTS - 0 RECENT - OK [UIDVALIDITY 1527410684] UIDs valid - OK [UIDNEXT 4] Predicted next UID b OK [READ-WRITE] Select completed (0.000 + 0.000 secs). c FETCH 1:* FLAGS - 1 FETCH (FLAGS (\\Seen NonJunk)) - 2 FETCH (FLAGS (\\Seen NonJunk)) - 3 FETCH (FLAGS (\\Seen)) c OK Fetch completed (0.001 + 0.000 secs). d Fetch BODY[TEXT] d BAD Error in IMAP command FETCH: Invalid arguments (0.000 + 0.000 secs). d fetch body d BAD Error in IMAP command FETCH: Invalid arguments (0.000 + 0.000 secs). d FETCH 1 body - 1 FETCH (BODY (\"text\" \"plain\" (\"charset\" \"us-ascii\") NIL NIL \"7bit\" 10 2)) d OK Fetch completed (0.002 + 0.000 + 0.001 secs). e fetch 2 body - 2 FETCH (BODY (\"text\" \"plain\" (\"charset\" \"us-ascii\") NIL NIL \"7bit\" 3 1)) e OK Fetch completed (0.001 + 0.000 secs). f fetch 2 body[] - 2 FETCH (BODY[] {466} Return-Path: <ericadmin@aijan.yojik.net> X-Original-To: root@localhost Delivered-To: root@localhost Received: by aijan.yojik.net (Postfix, from userid 1000) id 6D42CD00904; Mon, 21 May 2018 12:11:41 +0200 (CEST) To: <root@localhost> Subject: essai d'envoi \u00e0 root X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20180521101141.6D42CD00904@aijan.yojik.net> Date: Mon, 21 May 2018 12:11:41 +0200 (CEST) From: ericadmin@aijan.yojik.net (Eric Streit) . ) f OK Fetch completed (0.001 + 0.000 secs). g fetch 3 body[] - 3 FETCH (BODY[] {735} Return-Path: <eric@aldebaran.yojik.net> X-Original-To: ericadmin@aijan.yojik.net Delivered-To: ericadmin@aijan.yojik.net Received: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:6423:417b:6ef:ee21]) by aijan.yojik.net (Postfix) with ESMTP id EC11BD00903 for <ericadmin@aijan.yojik.net>; Mon, 21 May 2018 12:12:56 +0200 (CEST) Received: by aldebaran.yojik.net (Postfix, from userid 1000) id 8B42920620A; Mon, 21 May 2018 12:12:56 +0200 (CEST) To: <ericadmin@aijan.yojik.net> Subject: Re-essai X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20180521101256.8B42920620A@aldebaran.yojik.net> Date: Mon, 21 May 2018 12:12:56 +0200 (CEST) From: eric@aldebaran.yojik.net (Eric Streit) re-essai de aldebaran . ) g OK Fetch completed (0.001 + 0.000 secs). h logout - BYE Logging out h OK Logout completed (0.000 + 0.000 secs). eric@aldebaran:~$ A partir de ma machine de bureau, test de connexion en IMAP, liste des messages, et lecture du contenu (port 143): eric@aldebaran:~$ telnet aijan.yojik.net 143 Trying 192.168.111.240... Connected to aijan.yojik.net. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready. ehlo aldebaran.yojik.eu ehlo BAD Error in IMAP command received by server. a login ericadmin eBnIDQ+FZZI= a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in b select inbox * FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk) * OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk \\*)] Flags permitted. * 3 EXISTS * 0 RECENT * OK [UIDVALIDITY 1527410684] UIDs valid * OK [UIDNEXT 4] Predicted next UID b OK [READ-WRITE] Select completed (0.000 + 0.000 secs). c logout * BYE Logging out c OK Logout completed (0.000 + 0.000 secs). Connection closed by foreign host. eric@aldebaran:~$ La r\u00e9cup\u00e9ration des messages s'est bien pass\u00e9e. Envoi de messages Image de la configuration \u00e0 faire sur thunderbird : L'envoi de messages \u00e0 partir de Thunderbird fonctionne. Il faut bien configurer le port smtp \u00e0 465 ... Image de la configuration \u00e0 faire. L'envoi sur mon serveur personnel a \u00e9chou\u00e9: l'adresse IPV4 fournie par FREE \u00e9tait sur une liste de blocage (anti-spams). J'ai demand\u00e9 \u00e0 \u00eatre enlev\u00e9 de cette liste, ce qui va prendre 48H environ. R\u00e9-essai ensuite ... Envoi d'un message sur le compte du serveur \u00e0 partir de la machine de bureau (thunderbird): OK. R\u00e9ception des messages sur la machine de bureau (thunderbird): OK. Envoi d'un message \u00e0 partir du compte du serveur (thunderbird): \u00e7a OK. Installation d'un analyseur des logs mail Installation apt-get install pflogsumm Utilisation pflogsumm -d today /var/log/mail.log Vous obtiendrez une analyse approfondie des logs de la partie mail. root@adara:/home/ericadmin# pflogsumm -d today /var/log/mail.log Postfix log summaries for Jul 1 Grand Totals messages 24 received 23 delivered 0 forwarded 0 deferred 0 bounced 29 rejected (55%) 0 reject warnings 0 held 0 discarded (0%) 2248k bytes received 2248k bytes delivered 17 senders 13 sending hosts/domains 3 recipients 2 recipient hosts/domains Per-Hour Traffic Summary time received delivered deferred bounced rejected -- 0000-0100 0 0 0 0 0 0100-0200 0 0 0 0 0 0200-0300 0 0 0 0 0 0300-0400 0 0 0 0 3 0400-0500 0 0 0 0 7 0500-0600 0 0 0 0 1 0600-0700 1 1 0 0 1 0700-0800 2 2 0 0 1 0800-0900 4 4 0 0 7 0900-1000 4 4 0 0 2 1000-1100 10 9 0 0 2 1100-1200 2 2 0 0 1 1200-1300 0 0 0 0 2 1300-1400 0 0 0 0 0 1400-1500 0 0 0 0 0 1500-1600 1 1 0 0 2 1600-1700 0 0 0 0 0 1700-1800 0 0 0 0 0 1800-1900 0 0 0 0 0 1900-2000 0 0 0 0 0 2000-2100 0 0 0 0 0 2100-2200 0 0 0 0 0 2200-2300 0 0 0 0 0 2300-2400 0 0 0 0 0 Host/Domain Summary: Message Delivery -- sent cnt bytes defers avg dly max dly host/domain -- - - - - -- 21 2241k 0 4,6 s 47,0 s yojik.eu 2 7008 0 0,8 s 1,0 s picapo.net Host/Domain Summary: Messages Received msg cnt bytes host/domain -- - -- 7 1918k yojik.eu 4 12773 lists.oasis-open.org 2 29818 nongnu.org 1 61932 sg.booking.com 1 53567 bounces.amazon.fr 1 46492 bounce.newsletter.delamaison.fr 1 36499 mail.bitwarden.com 1 36232 infos.materiel.net 1 25976 newsdesmarq.ccemails.com 1 20320 tradepubs.nl00.net 1 6892 5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com 1 4987 hussein.org 1 2021 inhrr.gob.ve Senders by message count 6 goulya@yojik.eu 2 m17n-list-bounces+eric=yojik.eu@nongnu.org 1 bounces+3318447-412f-eric=yojik.eu@mail.bitwarden.com 1 bounces+4713178-1151-eric=yojik.eu@sg.booking.com 1 email@newsdesmarq.ccemails.com 1 do_not_reply=netgear.com__413ah3rz7vwihm9c.ly8u7ddmyngfvref@5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com 1 eric@yojik.eu 1 20180701072218f38c0af2e0e840cf938ae502e570p0eu@bounces.amazon.fr 1 bounce-419_HTML-28507929-182305-7304800-452@bounce.newsletter.delamaison.fr 1 p-m8bl38j2p7vg88u3n3hrzdpp4rcbq9n7x8cvc2fn23u5pwpnseghvzq-BHP30@infos.materiel.net 1 Offers@tradepubs.nl00.net 1 info@hussein.org 1 docbook-apps-return-14782-eric=yojik.eu@lists.oasis-open.org 1 docbook-apps-return-14783-eric=yojik.eu@lists.oasis-open.org 1 docbook-apps-return-14784-eric=yojik.eu@lists.oasis-open.org 1 docbook-return-3958-eric=yojik.eu@lists.oasis-open.org 1 maria.rueda@inhrr.gob.ve Recipients by message count 15 eric@yojik.eu 6 goulya@yojik.eu 2 nico@picapo.net Senders by message size -- 1917k goulya@yojik.eu 61932 bounces+4713178-1151-eric=yojik.eu@sg.booking.com 53567 20180701072218f38c0af2e0e840cf938ae502e570p0eu@bounces.amazon.fr 46492 bounce-419_HTML-28507929-182305-7304800-452@bounce.newsletter.delamaison.fr 36499 bounces+3318447-412f-eric=yojik.eu@mail.bitwarden.com 36232 p-m8bl38j2p7vg88u3n3hrzdpp4rcbq9n7x8cvc2fn23u5pwpnseghvzq-BHP30@infos.materiel.net 29818 m17n-list-bounces+eric=yojik.eu@nongnu.org 25976 email@newsdesmarq.ccemails.com 20320 Offers@tradepubs.nl00.net 6892 do_not_reply=netgear.com__413ah3rz7vwihm9c.ly8u7ddmyngfvref@5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com 4987 info@hussein.org 4275 docbook-apps-return-14782-eric=yojik.eu@lists.oasis-open.org 3589 docbook-return-3958-eric=yojik.eu@lists.oasis-open.org 2564 docbook-apps-return-14784-eric=yojik.eu@lists.oasis-open.org 2345 docbook-apps-return-14783-eric=yojik.eu@lists.oasis-open.org 2021 maria.rueda@inhrr.gob.ve 1124 eric@yojik.eu Recipients by message size -- 1916k goulya@yojik.eu 333462 eric@yojik.eu 7008 nico@picapo.net message deferral detail: none message bounce detail (by relay): none message reject detail RCPT blocked using zen.spamhaus.org (total: 2) 1 amazonaws.com 1 b941c024.business.dg-w.de cannot find your hostname (total: 25) 9 183.159.95.6 3 210.239.8.55 3 114.228.155.122 2 2406:fc00:1:7:214:22ff:fe08:eb34 2 117.63.127.41 2 159.89.236.50 1 140.127.1.29 1 37.49.227.169 1 80.211.61.89 1 222.95.187.160 Client host rejected: Access denied (total: 2) 2 80.211.61.89 message reject warning detail: none message hold detail: none message discard detail: none smtp delivery failures: none Warnings -- smtpd (total: 16) 6 hostname host89-61-211-80.serverdedicati.aruba.it does not reso... 3 hostname host-210.239.8.55.n-cube.ne.jp does not resolve to add... 2 mm-115-58-214-37.mogilev.dynamic.pppoe.byfly.by[37.214.58.115]:... 2 hostname 41.127.63.117.broad.cz.js.dynamic.163data.com.cn does ... 1 hostname hn.kd.ny.adsl does not resolve to address 115.57.125.2... 1 hostname mails.npust.edu.tw does not resolve to address 140.127... 1 hostname 82-64-48-5.subs.proxad.net does not resolve to address... Fatal Errors: none Panics: none Master daemon messages: none root@adara:/home/ericadmin# Bien: la configuration est quasi termin\u00e9e: il nous reste \u00e0 ajouter SPF, DKIM, Dane et DNSSEC. et les comptes virtuels ...","title":"Installation de dovecot et de l'authentification"},{"location":"Installation-Dovecot-Authentification/#installation-de-dovecot-et-de-lauthentification","text":"Pour l'instant, pour r\u00e9cup\u00e9rer ses \u00e9mails, il faut d'abord avoir un compte sur le serveur et se loguer. Ensuite, avec la commande mailx, on peut voir ses messages. Exemple: ericadmin@aijan:~$ mailx \"/var/mail/ericadmin\": 2 messages 2 non lus >U 1 Eric Streit dim. mai 20 08:4 20/742 essai d envoi \u00e0 root U 2 Eric Streit dim. mai 20 08:5 19/736 un autre essai ? Nous allons installer dovecot qui est un serveur pop/imap et d'authentification SASL . Nous pourrons ensuite nous connecter sur le serveur avec un client mail comme thunderbird , et r\u00e9cup\u00e9rer et envoyer nos messages avec celui-ci.","title":"Installation de dovecot et de l'authentification"},{"location":"Installation-Dovecot-Authentification/#installation-des-programmes","text":"Nous n'installerons que les programmes n\u00e9cessaires \u00e0 la gestion du protocole imap des courriers. Nous n'utilisons pas le protocole pop3 . Tout d'abord, faites une copie de /etc/postfix/main.conf et /etc/postfix/master.conf: # cp master.cf master.cf.orig # cp main.cf main.cf.orig Nous allons maintenant configurer nos boites \u00e9mail; 2 syst\u00e8mes sont courants: fichier unique qui contient tous vos messages (type mbox) ou r\u00e9pertoire avec un fichier par \u00e9mail (type maildir). Par d\u00e9faut, le type est mbox. Nous allons changer cela (question de go\u00fbt ...) Pour cela, nous aurons besoins des programmes utilitaires install\u00e9s avec dovecot.","title":"Installation des programmes"},{"location":"Installation-Dovecot-Authentification/#choix-de-la-base-de-donnees","text":"Nous utiliserons la base de donn\u00e9es sqlite . Il est bien s\u00fbr pr\u00e9f\u00e9rable d'utiliser une base de donn\u00e9es plus traditionnelle comme mysql ou postgresql si le nombre d'utilisateurs est important. Mon serveur de mails n'aura que moins de 10 adresses \u00e9mail, donc, sqlite suffira. root@adara:/home/www# apt install dovecot-common dovecot-imapd dovecot-sqlite Lecture des listes de paquets... Fait Construction de l arbre des d\u00e9pendances Lecture des informations d \u00e9tat... Fait Note : s\u00e9lection de \u00ab dovecot-core \u00bb au lieu de \u00ab dovecot-common \u00bb The following additional packages will be installed: libexttextcat-2.0-0 libexttextcat-data libstemmer0d Paquets sugg\u00e9r\u00e9s : dovecot-gssapi dovecot-sieve dovecot-pgsql dovecot-mysql dovecot-ldap dovecot-pop3d dovecot-lmtpd dovecot-managesieved dovecot-solr dovecot-lucene ufw Les NOUVEAUX paquets suivants seront install\u00e9s : dovecot-core dovecot-imapd dovecot-sqlite libexttextcat-2.0-0 libexttextcat-data libstemmer0d 0 mis \u00e0 jour, 6 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 5 062 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 12,2 Mo d espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 libexttextcat-data all 3.4.4-2 [167 kB] R\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libexttextcat-2.0-0 amd64 3.4.4-2+b1 [16,2 kB] R\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 libstemmer0d amd64 0+svn585-1+b2 [63,3 kB] R\u00e9ception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-core amd64 1:2.2.27-3+deb9u2 [3 324 kB] R\u00e9ception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-imapd amd64 1:2.2.27-3+deb9u2 [814 kB] R\u00e9ception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-sqlite amd64 1:2.2.27-3+deb9u2 [677 kB] 5 062 ko r\u00e9ceptionn\u00e9s en 0s (6 873 ko/s) S\u00e9lection du paquet libexttextcat-data pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 26792 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../0-libexttextcat-data_3.4.4-2_all.deb ... D\u00e9paquetage de libexttextcat-data (3.4.4-2) ... S\u00e9lection du paquet libexttextcat-2.0-0:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../1-libexttextcat-2.0-0_3.4.4-2+b1_amd64.deb ... D\u00e9paquetage de libexttextcat-2.0-0:amd64 (3.4.4-2+b1) ... S\u00e9lection du paquet libstemmer0d:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../2-libstemmer0d_0+svn585-1+b2_amd64.deb ... D\u00e9paquetage de libstemmer0d:amd64 (0+svn585-1+b2) ... S\u00e9lection du paquet dovecot-core pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../3-dovecot-core_1%3a2.2.27-3+deb9u2_amd64.deb ... D\u00e9paquetage de dovecot-core (1:2.2.27-3+deb9u2) ... S\u00e9lection du paquet dovecot-imapd pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../4-dovecot-imapd_1%3a2.2.27-3+deb9u2_amd64.deb ... D\u00e9paquetage de dovecot-imapd (1:2.2.27-3+deb9u2) ... S\u00e9lection du paquet dovecot-sqlite pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../5-dovecot-sqlite_1%3a2.2.27-3+deb9u2_amd64.deb ... D\u00e9paquetage de dovecot-sqlite (1:2.2.27-3+deb9u2) ... Param\u00e9trage de libstemmer0d:amd64 (0+svn585-1+b2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ... Param\u00e9trage de libexttextcat-data (3.4.4-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de libexttextcat-2.0-0:amd64 (3.4.4-2+b1) ... Param\u00e9trage de dovecot-core (1:2.2.27-3+deb9u2) ... Creating config file /etc/dovecot/dovecot.conf with new version Creating config file /etc/dovecot/dovecot-dict-auth.conf.ext with new version Creating config file /etc/dovecot/dovecot-dict-sql.conf.ext with new version Creating config file /etc/dovecot/dovecot-sql.conf.ext with new version Creating config file /etc/dovecot/conf.d/10-auth.conf with new version Creating config file /etc/dovecot/conf.d/10-director.conf with new version Creating config file /etc/dovecot/conf.d/10-logging.conf with new version Creating config file /etc/dovecot/conf.d/10-mail.conf with new version Creating config file /etc/dovecot/conf.d/10-master.conf with new version Creating config file /etc/dovecot/conf.d/10-tcpwrapper.conf with new version Creating config file /etc/dovecot/conf.d/15-lda.conf with new version Creating config file /etc/dovecot/conf.d/15-mailboxes.conf with new version Creating config file /etc/dovecot/conf.d/90-acl.conf with new version Creating config file /etc/dovecot/conf.d/90-plugin.conf with new version Creating config file /etc/dovecot/conf.d/90-quota.conf with new version Creating config file /etc/dovecot/conf.d/auth-checkpassword.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-deny.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-dict.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-master.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-passwdfile.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-sql.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-static.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-system.conf.ext with new version Creating config file /etc/dovecot/conf.d/auth-vpopmail.conf.ext with new version Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service \u2192 /lib/systemd/system/dovecot.service. Param\u00e9trage de dovecot-imapd (1:2.2.27-3+deb9u2) ... Creating config file /etc/dovecot/conf.d/20-imap.conf with new version Param\u00e9trage de dovecot-sqlite (1:2.2.27-3+deb9u2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour dovecot-core (1:2.2.27-3+deb9u2) ... root@adara:/home/www#","title":"Choix de la base de donn\u00e9es"},{"location":"Installation-Dovecot-Authentification/#configuration-du-type-de-boite-aux-lettres","text":"C'est ici que l'on configure si on veut un fichier unique qui contient tous les messages (type inbox) ou un fichier par \u00e9mail (type Maildir). Cela se passe dans le fichier /etc/postfix/main.cf On rajoute les lignes suivantes: home_mailbox = Maildir/ mailbox_command = Si ces lignes existaient avant, il faut les commenter (ajout d'un # en d\u00e9but de ligne.) On recharge le fichier de conf service postfix reload Et on teste: eric@aldebaran:~/Devs/Travail/Installation serveur/Tutorial$ mail ericadmin@aijan.yojik.net Cc: Subject: Re-essai re-essai de aldebaran . eric@aldebaran:~/Devs/Travail/Installation serveur/Tutorial$ J'envoie un courrier \u00e0 partir de mon desktop. V\u00e9rification sur le serveur: ericadmin@aijan:~$ ls bin index.html Maildir mbox ericadmin@aijan:~$ Le r\u00e9pertoire Maildir a bien \u00e9t\u00e9 cr\u00e9\u00e9. V\u00e9rification de la r\u00e9ception des messages: ericadmin@aijan:~$ cd Maildir/ ericadmin@aijan:~/Maildir$ ls cur new tmp ericadmin@aijan:~/Maildir$ cd new/ ericadmin@aijan:~/Maildir/new$ ls 1526897441.V801Icc005dM227044.aijan 1526897501.V801Icc0060M464181.aijan 1526897576.V801Icc0061M979030.aijan ericadmin@aijan:~/Maildir/new$ ericadmin@aijan:~/Maildir/new$ cat 1526897576.V801Icc0061M979030.aijan Return-Path: <eric@aldebaran.yojik.net> X-Original-To: ericadmin@aijan.yojik.net Delivered-To: ericadmin@aijan.yojik.net Received: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:6423:417b:6ef:ee21]) by aijan.yojik.net (Postfix) with ESMTP id EC11BD00903 for <ericadmin@aijan.yojik.net>; Mon, 21 May 2018 12:12:56 +0200 (CEST) Received: by aldebaran.yojik.net (Postfix, from userid 1000) id 8B42920620A; Mon, 21 May 2018 12:12:56 +0200 (CEST) To: <ericadmin@aijan.yojik.net> Subject: Re-essai X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20180521101256.8B42920620A@aldebaran.yojik.net> Date: Mon, 21 May 2018 12:12:56 +0200 (CEST) From: eric@aldebaran.yojik.net (Eric Streit) re-essai de aldebaran . ericadmin@aijan:~/Maildir/new$ Les messages sont bien re\u00e7us. Par contre, mailx ne fonctionne plus (uniquement avec des fichiers mbox.) Pour lire nos messages, il nous faut installer le lecteur de courriers mutt . root@aijan:/etc/postfix# apt install mutt Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: libgmime-2.6-0 libgpgme11 libnotmuch4 libtalloc2 libtokyocabinet9 Paquets sugg\u00e9r\u00e9s : gpgsm urlview mixmaster Les NOUVEAUX paquets suivants seront install\u00e9s : libgmime-2.6-0 libgpgme11 libnotmuch4 libtalloc2 libtokyocabinet9 mutt 0 mis \u00e0 jour, 6 nouvellement install\u00e9s, 0 \u00e0 enlever et 12 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 2 433 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 8 665 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://deb.debian.org/debian stretch/main amd64 libtokyocabinet9 amd64 1.4.48-11+b1 [367 kB] R\u00e9ception de:2 http://deb.debian.org/debian stretch/main amd64 libgpgme11 amd64 1.8.0-3+b2 [160 kB] R\u00e9ception de:3 http://deb.debian.org/debian stretch/main amd64 libgmime-2.6-0 amd64 2.6.22+dfsg2-1 [232 kB] R\u00e9ception de:4 http://deb.debian.org/debian stretch/main amd64 libtalloc2 amd64 2.1.8-1 [36,3 kB] .... On teste; on le lance avec la commande suivante: ericadmin@aijan:~$ mutt -f ./Maildir/ GPGME : protocole CMS non disponible 3 gard\u00e9(s), 0 effac\u00e9(s). ericadmin@aijan:~$ R\u00e9sultat: (extrait de l'\u00e9cran) q:Quitter d:Effacer u:R\u00e9cup s:Sauver m:Message r:R\u00e9pondre g:Groupe ?:Aide 1 O + mai 21 root (0,1K) Essai 2 O F mai 21 To root@localho (0,1K) essai d'envoi \u00e0 root 3 O + mai 21 Eric Streit (0,1K) Re-essai NeoMutt: ./Maildir/ [Msgs:3 Old:3 1,6K](threads/date)- Nos \u00e9mails sont bien l\u00e0 :) Nous pourrons supprimer mutt plus tard si nous voulons gagner un peu de place.","title":"Configuration du type de bo\u00eete aux lettres"},{"location":"Installation-Dovecot-Authentification/#architecture","text":"Avant de continuer \u00e0 configurer notre serveur mail, il serait utile d'avoir une vue d'ensemble du syst\u00e8me que nous allons configurer. Pour l'instant, nous n'avons apport\u00e9 que peu de modifications aux fichiers de configuration (nous avons seulement chang\u00e9 le type de format de nos bo\u00eetes aux lettres : mbox -> Maildir Si nous regardons quels ports sont \u00e9cout\u00e9s; nous voyons que nous avons pour l'instant: le port 22 (SSH) le port 25 (Postfix) le port 80 (Apache) le port 443 (Apache) le port 53 et 953 (Bind) Et le port 143 (imap) de dovecot, mais dovecot n'est pas encore int\u00e9gr\u00e9 \u00e0 notre serveur mail et est non-configur\u00e9 . root@aijan:/home/ericadmin# netstat -tlnp Connexions Internet actives (seulement serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 536/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 536/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 603/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 850/master tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 536/named tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 676/apache2 tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 607/dovecot tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 676/apache2 tcp6 0 0 :::53 :::* LISTEN 536/named tcp6 0 0 :::22 :::* LISTEN 603/sshd tcp6 0 0 :::25 :::* LISTEN 850/master tcp6 0 0 ::1:953 :::* LISTEN 536/named tcp6 0 0 :::143 :::* LISTEN 607/dovecot root@aijan:/home/ericadmin# Notez la commande netstat -tlnp pour voir les ports ouverts ainsi que les programmes qui les g\u00e8rent. Nous n'utiliserons pas le protocole Pop3 (ni sa variante pop3s). Le protocole Imap offre bien plus de possibilit\u00e9s. (parties rouges entour\u00e9es de noir)","title":"Architecture"},{"location":"Installation-Dovecot-Authentification/#schema-densemble","text":"Les parties impl\u00e9ment\u00e9es sont en rouge sur le dessin suivant:","title":"Sch\u00e9ma d'ensemble"},{"location":"Installation-Dovecot-Authentification/#explication","text":"","title":"Explication:"},{"location":"Installation-Dovecot-Authentification/#les-ports-servis-par-postfix","text":"Le port 25 est utilis\u00e9 pour la communication entre serveurs smtp; il permet une connexion \"en clair\" ou chiffr\u00e9e. Il peut \u00eatre aussi utilis\u00e9 pour l'envoi des mails \u00e0 partir d'un client. Nous l'avons d'ailleurs fait avec la commande mail et telnet . Le port 587 est le port \"submission\", port utilis\u00e9 par d\u00e9faut par les clients mail pour envoyer du courrier sur le serveur (thunderbird, etc ...) qui le dispatche ensuite, soit dans les bo\u00eetes de courrier locales, soit \u00e0 un destinataire ext\u00e9rieur. Le port 465 est un port qui a \u00e9t\u00e9 r\u00e9serv\u00e9 pour les communications chiffr\u00e9es (SMTP over SSL): il \u00e9tait utilis\u00e9 avant que STARTTLS ne soit utilis\u00e9; il a \u00e9t\u00e9 enlev\u00e9 des ports standards de mail. Le premier port (25) est un port d'entr\u00e9e-sortie r\u00e9serv\u00e9 \u00e0 la communication entre serveurs ( mais permet aussi la submission de messages avec authentification .) Souvenez-vous que le port 25 est bloqu\u00e9 par de nombreux FAI. La communication peut \u00eatre chiffr\u00e9e ou non, suivant les possibilit\u00e9s du serveur et du client, et donc, les mots de passe peuvent passer en clair. La communication commence en mode clair et apr\u00e8s n\u00e9gociation, passe en mode chiffr\u00e9e si celle-ci est disponible: (STARTTLS) Les 2 derniers ports (465 et 587) sont des ports d'entr\u00e9e de vos messages envoy\u00e9s par des clients, apr\u00e8s authentification, en mode chiffr\u00e9 ou non. Voil\u00e0 un sh\u00e9ma de ce que nous allons obtenir:","title":"Les ports servis par Postfix"},{"location":"Installation-Dovecot-Authentification/#les-ports-servis-par-dovecot","text":"Les ports 143 et 993 sont des ports r\u00e9serv\u00e9s au protocole IMAP(s). Les port 110 et 995 sont des ports r\u00e9serv\u00e9s au protocole POP3(s), mais nous ne l'utiliserons pas. Ces ports sont servis par Dovecot. Il permettent de g\u00e9rer notre bo\u00eete mail, r\u00e9cup\u00e9rer, effacer nos messages, cr\u00e9er des dossiers dans lesquels nous pouvons trier nos messages.","title":"Les ports servis par Dovecot"},{"location":"Installation-Dovecot-Authentification/#ce-que-nous-allons-implementer","text":"Nous impl\u00e9menterons une politique particuli\u00e8re, comme celle d\u00e9crite ici: RasperryPi Email server Part 2 Cet auteur s\u00e9pare les communications entre serveurs (port 25) et client-serveur (ports 587 et 465). Il emp\u00eache les communications non-chifr\u00e9es entre client et serveur, et utilise le port 465 pour les communications chiffr\u00e9es (port d\u00e9pr\u00e9ci\u00e9 par le standard.) Jusqu'\u00e0 maintenant, nous n'avons utilis\u00e9 ni dovecot, ni base de donn\u00e9es; l'authentification se faisant directement sur le serveur en acc\u00e9dant \u00e0 notre compte sur le serveur (login par identifiant/mot de passe ou clef SSH). Nous allons impl\u00e9menter l'acc\u00e8s par Imap et Imaps de nos courriers \u00e0 partir de n'importe quelle machine et avec authentification (toujours pas de comptes virtuels.) L'authentification se faisait avant en se connectant sur nos comptes en SSH . Nous avons d\u00e9j\u00e0 g\u00e9n\u00e9r\u00e9 auparavant nos clefs de chiffrage avec certbot . (voir le chapitre suivant ...) Elles sont situ\u00e9es dans /etc/letsencrypt/live/atom.yojik.net . Dovecot est un serveur Imap et pop3. Il assure en plus l'authentification.","title":"Ce que nous allons impl\u00e9menter"},{"location":"Installation-Dovecot-Authentification/#configuration-de-dovecot","text":"Indiquer \u00e0 Dovecot d'\u00e9couter sur toutes les interfaces, en IPV4 et IPV6. Le fichier \u00e0 configurer (apr\u00e8s copie) est /etc/dovecot/dovecot.conf ; changer la ligne qui contient: listen = en listen = *, :: Il faut lui indiquer o\u00f9 sont stock\u00e9s nos mails et sous quel format . Cela se configure dans le fichier: /etc/dovecot/conf.d/10-mail.conf Voici un extrait du contenu original: ## Mailbox locations and namespaces ## mail_location = mbox:~/mail:INBOX=/var/mail/%u Le format par d\u00e9faut est mbox situ\u00e9 dans /var/mail/user Nous allons changer cela en: mail_location = maildir:~/Maildir Dovecot utilisera notre bo\u00eete aux lettres situ\u00e9e dans le home de chaque user, et dans le r\u00e9pertoire Maildir. Souvenez-vous que nous avions configur\u00e9 Postfix afin qu'il utilise le format Maidir. Indiquer \u00e0 Postfix d'utiliser dovecot pour l'acc\u00e8s aux mails ainsi que pour l'authentification. Nous allons modifier le fichier /etc/postfix/main.cf et ajouter les lignes suivantes: smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes Nous allons indiquer \u00e0 Dovecot de r\u00e9pondre aux demandes d'authentification de postfix: Apr\u00e8s avoir fait une sauvegarde du fichier original /etc/dovecot/conf.d/10-master.conf (toujours sauvegarder les fichiers avant modifications!), nous allons modifier le m\u00e9canisme d'authentification de docvecot. Pour cela nous allons remplacer la partie intitul\u00e9e service auth par ce qui suit: service auth { unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } Autorisons maintenant le plain login ; nous allons modifier le fichier /etc/dovecot/conf.d/10-auth.conf en ajoutant ou modifiant les lignes suivantes: disable_plaintext_auth = no auth_mechanisms = plain login On relance postfix et dovecot pour prendre en compte les modifications. root@atom:/etc/postfix# systemctl restart postfix root@atom:/etc/postfix# systemctl restart dovecot On v\u00e9rifie que tout s'est bien pass\u00e9 avec la commande: root@atom:/etc/postfix# tail -f /var/log/daemon.log Nov 26 12:47:22 atom systemd[1]: Stopped Postfix Mail Transport Agent (instance -). Nov 26 12:47:22 atom systemd[1]: Starting Postfix Mail Transport Agent (instance -)... Nov 26 12:47:23 atom systemd[1]: Started Postfix Mail Transport Agent (instance -). Nov 26 12:47:23 atom systemd[1]: Starting Postfix Mail Transport Agent... Nov 26 12:47:23 atom systemd[1]: Started Postfix Mail Transport Agent. Nov 26 12:47:28 atom systemd[1]: Stopping Dovecot IMAP/POP3 email server... Nov 26 12:47:29 atom systemd[1]: Stopped Dovecot IMAP/POP3 email server. Nov 26 12:47:29 atom systemd[1]: Starting Dovecot IMAP/POP3 email server... Nov 26 12:47:29 atom systemd[1]: dovecot.service: PID file /var/run/dovecot/master.pid not readable (yet?) after start: No such file or directory Nov 26 12:47:29 atom systemd[1]: Started Dovecot IMAP/POP3 email server. On quitte avec Ctrl C. C'est bon. Test 1 Nous allons nous connecter avec telnet; voici la capture de la session: Tout d'abord, cr\u00e9ation d'un nouvel utilisateur de nom testmail et mot de passe testmail (oui, rien de bien original). A partir du compte root, nous allons envoyer un message \u00e0 cet utilisateur (voir au-dessus pour comment faire avec la commande mail.) Testons si le message est bien arriv\u00e9: root@atom:/etc/postfix# adduser testmail Ajout de l'utilisateur \u00ab testmail25 \u00bb ... Ajout du nouveau groupe \u00ab testmail25 \u00bb (1001) ... Ajout du nouvel utilisateur \u00ab testmail25 \u00bb (1001) avec le groupe \u00ab testmail25 \u00bb ... Cr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/testmail25 \u00bb... Copie des fichiers depuis \u00ab /etc/skel \u00bb... Entrez le nouveau mot de passe UNIX : Retapez le nouveau mot de passe UNIX : passwd: password updated successfully Changing the user information for testmail Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Cette information est-elle correcte ? [O/n]o root@atom:/etc/postfix# mail testmail Cc: Subject: Essai 7 Essai 7 . root@atom:/etc/postfix# su - testmail testmail25@atom:~$ mutt -f ./Maildir/ GPGME : protocole CMS non disponible 1 gard\u00e9(s), 0 effac\u00e9(s). Le message est bien arriv\u00e9. Essayons avec les commandes Imap; il nous faut installer telnet avant: apt install telnet Nous pouvons donc nous connecter aux ports suivants: 143 et 993. root@aijan:/home/ericadmin# telnet localhost 143 Trying ::1... Connected to localhost. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready. x1 LOGIN testmail testmail x1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in x2 SELECT Inbox * FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft) * OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft \\*)] Flags permitted. * 1 EXISTS * 1 RECENT * OK [UNSEEN 1] First unseen. * OK [UIDVALIDITY 1527165527] UIDs valid * OK [UIDNEXT 2] Predicted next UID x2 OK [READ-WRITE] Select completed (0.000 + 0.000 secs). x4 LOGOUT * BYE Logging out x4 OK Logout completed (0.000 + 0.000 secs). Connection closed by foreign host. root@aijan:/home/ericadmin# \u00c7a marche: OK [UNSEEN 1] First unseen. Nous nous sommes connect\u00e9s avec le mot de passe en clait (testmail pour l'utilisateur testmail.) Test 2: envoi de mail Connexion sur le port 25 (postfix) en utilisant l'authentification g\u00e9r\u00e9e par dovecot. Nous avons chiffr\u00e9 le mot de passe avec la commande suivante: printf '\\0%s\\0%s' 'testmail' 'testmail' | openssl base64 AHRlc3RtYWlsAHRlc3RtYWls root@aijan:/home/ericadmin# telnet localhost 25 Trying ::1... Connected to localhost. Escape character is '^]'. 220 aijan.yojik.net ESMTP Postfix (Debian/GNU) ehlo localhost 250-aijan.yojik.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 AUTH PLAIN AHRlc3RtYWlsAHRlc3RtYWls 235 2.7.0 Authentication successful mail from: testmail 250 2.1.0 Ok data 554 5.5.1 Error: no valid recipients rcpt to: ericounet26200@gmail.com 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> Subject: mon, premier mail avec sasl mon premier mail avec sasl . 250 2.0.0 Ok: queued as A664BD004A1 quit 221 2.0.0 Bye Connection closed by foreign host. root@aijan:/home/ericadmin# V\u00e9rification de la bonne r\u00e9ception du message: le message est bien re\u00e7u.","title":"Configuration de Dovecot"},{"location":"Installation-Dovecot-Authentification/#configuration-des-certificats","text":"Jusqu'\u00e0 pr\u00e9sent, nous avons utilis\u00e9 les certificats fournis par Debian \u00e0 l'installation. Nous allons utiliser les certificats que nous avons cr\u00e9\u00e9s auparavant avec letsencrypt. Il y a 2 lignes \u00e0 modifier dans /etc/postfix/main.cf: smtpd_tls_cert_file = /etc/letsencrypt/live/toto.yojik.net/fullchain.pem smtpd_tls_key_file = /etc/letsencrypt/live/toto.yojik.net/privkey.pem Bien entendu, modifiez la partie toto.yojik.net par le nom de votre serveur mail et pour lequel vous avez g\u00e9n\u00e9r\u00e9 les certificats. Il y a 3 lignes \u00e0 ajouter/modifier dans /etc/dovecot/conf.d/10-ssl.conf ssl = required ssl_cert = </etc/letsencrypt/live/toto.yojik.net/fullchain.pem ssl_key = </etc/letsencrypt/live/toto.yojik.net/privkey.pem Comme avant, personnalisez avec votre nom de serveur mail. Relancez vos serveurs avec les commandes suivantes: root@aijan:/home/ericadmin# systemctl restart postfix root@aijan:/home/ericadmin# systemctl restart dovecot Bien v\u00e9rifier dans les logs (/var/log/daemon.log) que tout s'est bien pass\u00e9 (pas d'erreur de frappe par exemple ...)","title":"Configuration des certificats"},{"location":"Installation-Dovecot-Authentification/#test","text":"Nous allons refaire les tests d\u00e9j\u00e0 r\u00e9alis\u00e9s pr\u00e9c\u00e9demment pour v\u00e9rifier que rien n'est cass\u00e9 suite \u00e0 la modification de nos certificats. root@aijan:/home/ericadmin# telnet localhost 25 Trying ::1... Connected to localhost. Escape character is '^]'. 220 aijan.yojik.net ESMTP Postfix (Debian/GNU) ehlo aijan.yojik.net 250-aijan.yojik.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 AUTH PLAIN AHRlc3RtYWlsAHRlc3RtYWls 235 2.7.0 Authentication successful mail from: testmail 250 2.1.0 Ok rcpt to: ericounet26200@gmail.com 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> subject: essai un essai . 250 2.0.0 Ok: queued as 9EEF6D0002E quit 502 5.5.2 Error: command not recognized quit 221 2.0.0 Bye Connection closed by foreign host. root@aijan:/home/ericadmin# \u00c7a fonctionne. L'authentification avec les nouveaux certificats est assur\u00e9e.","title":"Test"},{"location":"Installation-Dovecot-Authentification/#test-de-la-connexion-sur-le-port-993-a-partir-dun-ordinateur-exterieur","text":"eric@aldebaran:~$ openssl s_client -connect yojik.net:993 CONNECTED(00000003) depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = atom.yojik.net verify return:1 Certificate chain 0 s:/CN=atom.yojik.net i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 i:/O=Digital Signature Trust Co./CN=DST Root CA X3 Server certificate -----BEGIN CERTIFICATE----- MIIFVTCCBD2gAwIBAgISA2ymxMSWOd9z4d5MhK1RarzkMA0GCSqGSIb3DQEBCwUA MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODExMTExNTI2NDhaFw0x OTAyMDkxNTI2NDhaMBkxFzAVBgNVBAMTDmF0b20ueW9qaWsubmV0MIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr+SwsS/VwilSnazx4Y9Xj9OIzYPx2s5W kxocZT7BMdO0oKNKolbe6AJMGrNKf5TjQu9EN+yal6rNZUOrrR7dS2gKvRjyH2mW 5JniCW/osYVkHglgjvNbihQP4IBY9brvvtIW9reKyA9adq5zHHRW2RNaBG18oXFa mQb+uFGiCkpyjGK7XYmPkVA7DM6TtciFBGeTmY15vF4aniPQtu1TuksEc+WDvWfR K9ebYXghqBJd1OigtgVhOpDiSAnxjtx9wcjHuic/9wU8iI2VdkOB0xoMxlRNjQSZ DWgRCiZr/LwtoX6bSWzJex1kW7Q/zQnvA1eaKqD6mCIp5uO7KiK5AQIDAQABo4IC ZDCCAmAwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF BQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQyxrlKdL9RV+v8Y7YwH4mV0iq4 EDAfBgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBvBggrBgEFBQcBAQRj MGEwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwLmludC14My5sZXRzZW5jcnlwdC5v cmcwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5v cmcvMBkGA1UdEQQSMBCCDmF0b20ueW9qaWsubmV0MEwGA1UdIARFMEMwCAYGZ4EM AQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0 c2VuY3J5cHQub3JnMIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcA4mlLribo6UAJ 6IYbtjuD1D7n/nSI+6SPKJMBnd3x2/4AAAFnA5jZtQAABAMASDBGAiEAshqJHr2M l6n+9Dd31jkskn3lxh5iC7FTfPZoKxZGT6ECIQDDby9vNMmzh8eYysYr5UuTE4R9 VOko3rzQZgj51O/nEQB2AGPy283oO8wszwtyhCdXazOkjWF3j711pjixx2hUS9iN AAABZwOY2bgAAAQDAEcwRQIhAPTO+Wry4Fl2+HddFMsWpfYJQ7dkXtW93N1+z77y ofgMAiB76ad1N7+AVOh4YvrRboK31F5cs3YJnKmKxINWkrI70TANBgkqhkiG9w0B AQsFAAOCAQEAJ1BYUTWpCIIYD0FKB9vuCEfYrg1NNHhYYr0jUKR49EPLO8DS1aRp KK1tr9EZti2lOYaEOKNo4dQkLLKgsF1kovHreosvXPF2oXRbN6UdVu+67fhIokD5 FIS9pphaxIHEC4A9h7JK0LHJHMG9ySRDBbtz9Y0b7z5jGIxX0yzaqBcPJVG26SJm uyiys2bklC+N3mYAVYb/c3VWdCWzusHks+HCTx2y+YkqVkvCepdQYFoUKpk6ScSc Fz6r0DWBXGmhJLg0K+KxfXGUtTtwDjnBZCocX3FrQsQNrbYtvLyK2QhDv1Mr6V96 P11a4LV3qq2eTfoIiNd9m2iqCJ7/pSWIjw== -----END CERTIFICATE----- subject=/CN=atom.yojik.net issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 No client certificate CA names sent Peer signing digest: SHA512 Server Temp Key: ECDH, P-384, 384 bits SSL handshake has read 3236 bytes and written 334 bytes Verification: OK New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 Session-ID: D488F9943CD771D5DF400C676729BDF315F5CBD01128E922D7DBCC0D80B467F3 Session-ID-ctx: Master-Key: 45BF00E99AA29FB83E1395741E3A506800473105882554C46B50639665B600000E1F3048F051EF5E12D6C0804A0698D8 PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 7200 (seconds) TLS session ticket: 0000 - 59 1e 77 bc e8 c1 0e f8-c9 f2 38 f8 f9 f0 e9 4f Y.w.......8....O 0010 - 4b 91 2a 39 73 cc a6 85-f2 22 96 ae 4a a3 84 b8 K.*9s....\"..J... 0020 - e8 de 9b 34 74 1a d9 e7-88 f5 d1 bb 4c 2d 59 f2 ...4t.......L-Y. 0030 - 0e 99 1e bd b7 82 ef 32-ab 0c 1a 33 c0 dd 31 6a .......2...3..1j 0040 - 5b 38 fc c5 27 29 d7 a3-ae f0 a5 bb 66 a0 b4 eb [8..')......f... 0050 - 7c 95 f2 16 cb 92 5c f3-7f c0 30 33 ec 77 f0 a8 |.....\\...03.w.. 0060 - 8f 5e 9c f7 de c9 4f 95-1a 0e 09 27 7a 45 b0 db .^....O....'zE.. 0070 - 84 ba 72 37 f1 a2 f5 95-43 0c e2 eb a3 18 94 a8 ..r7....C....... 0080 - b3 d4 d7 15 4c 81 08 a2-17 3f 7b 15 fe 81 d8 5c ....L....?{....\\ 0090 - 74 60 ac 5e 2a 5a 22 07-6f ba 03 4f d5 46 5a 04 t`.^*Z\".o..O.FZ. Start Time: 1543235404 Timeout : 7200 (sec) Verify return code: 0 (ok) Extended master secret: yes * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready. 1 Login testmail testmail 1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in QUIT DONE eric@aldebaran:~$ Le OK [CAPABILITY ... indique que la connexion s'est faite normalement; les caract\u00e9ristiques du certificat sont affich\u00e9es au-dessus. Le Logged: in indique que l'authentification a march\u00e9. Nous avons donc test\u00e9 les ports 25, 143 et 993 avec succ\u00e8s.","title":"Test de la connexion sur le port 993 \u00e0 partir d'un ordinateur ext\u00e9rieur"},{"location":"Installation-Dovecot-Authentification/#configuration-dun-port-qui-naccepte-que-les-communications-chiffrees","text":"Pour l'instant, postfix n'\u00e9coute que le port 25 (vous pouvez le v\u00e9rifier avec la commande netstat -tlpn .) Dans le fichier /etc/postfix/master.cf, seul la ligne suivante est active (d\u00e9comment\u00e9e): smtp inet n - y - - smtpd Nous allons mettre postfix en \u00e9coute du port 465: Dans le fichier /etc/postfix/master.cf, la ligne \u00e0 d\u00e9commenter est la suivante: # smtps inet n - - - - smtpd pour obtenir: smtps inet n - - - - smtpd","title":"Configuration d'un port qui n'accepte que les communications chiffr\u00e9es"},{"location":"Installation-Dovecot-Authentification/#test-des-ports","text":"On relance postfix et on regarde les ports servis: root@aijan:/home/ericadmin# service postfix restart root@aijan:/home/ericadmin# netstat -tlpn Connexions Internet actives (seulement serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 552/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 552/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 580/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2159/master tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 552/named tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 649/apache2 tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 1792/dovecot tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 649/apache2 tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 2159/master tcp6 0 0 :::53 :::* LISTEN 552/named tcp6 0 0 :::22 :::* LISTEN 580/sshd tcp6 0 0 :::25 :::* LISTEN 2159/master tcp6 0 0 ::1:953 :::* LISTEN 552/named tcp6 0 0 :::143 :::* LISTEN 1792/dovecot tcp6 0 0 :::465 :::* LISTEN 2159/master root@aijan:/home/ericadmin# Le port 465 est ouvert et servi par postfix.","title":"Test des ports"},{"location":"Installation-Dovecot-Authentification/#test-de-connexion-sur-le-port-465","text":"root@aijan:/home/ericadmin# telnet localhost 465 Trying ::1... Connected to localhost. Escape character is '^]'. 220 aijan.yojik.net ESMTP Postfix (Debian/GNU) ehlo aijan.yojik.net 250-aijan.yojik.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 quit 221 2.0.0 Bye Connection closed by foreign host. root@aijan:/home/ericadmin# La connexion se fait normalement. Nous allons maintenant bloquer les communications non-chiffr\u00e9es; les param\u00e8tres \u00e0 modifier sont dans /etc/postfix/master.conf (2 premiers param\u00e8tres de la ligne smtps \u00e0 d\u00e9commenter.) smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes","title":"Test de connexion sur le port 465"},{"location":"Installation-Dovecot-Authentification/#test-de-communication-chiffere-et-non-chiffree","text":"Essai avec communication non-chifr\u00e9e: root@aijan:/home/ericadmin# telnet localhost 465 Trying ::1... Connected to localhost. Escape character is '^]'. Connection closed by foreign host. root@aijan:/home/ericadmin# La communication est refus\u00e9e . Essai avec communication chiffr\u00e9e (nous utilisons openssl pour cela): root@adara:/etc# openssl s_client -connect localhost:465 -quiet depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = adara.yojik.eu verify return:1 220 adara.yojik.eu ESMTP Postfix (Debian/GNU) ehlo me 250-adara.yojik.eu 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 quit 221 2.0.0 Bye root@adara:/etc# La communication est accept\u00e9e et fonctionne. Nous voyons aussi que notre certificat Letsencrypt a \u00e9t\u00e9 v\u00e9rifi\u00e9. Il reste une modification \u00e0 faire pour n'autoriser que les communications chiffr\u00e9es: Dans /etc/postfix/main.cf ajouter ou modifier la ligne suivante: smtpd_tls_auth_only = yes Et rechargez Postfix.","title":"Test de communication chiff\u00e9re et non-chiffr\u00e9e"},{"location":"Installation-Dovecot-Authentification/#test-des-communications","text":"root@aijan:/home/ericadmin# telnet localhost 25 Trying ::1... Connected to localhost. Escape character is '^]'. 220 aijan.yojik.net ESMTP Postfix (Debian/GNU) ehlo aijan.yojik.net 250-aijan.yojik.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8 quit 221 2.0.0 Bye Connection closed by foreign host. root@aijan:/home/ericadmin# On voit que la ligne 250-AUTH PLAIN LOGIN est absente, ce qui confirme que Postfix a bien pris en compte notre derni\u00e8re modification.","title":"Test des communications"},{"location":"Installation-Dovecot-Authentification/#interdiction-de-communications-non-chiffrees-sur-le-port-465","text":"Nous allons rajouter/modifier une \"restriction\" \u00e0 la ligne g\u00e9rant le port 465 dans /etc/postfix/master.cf smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject La derni\u00e8re ligne est rajout\u00e9e, d\u00e9-comment\u00e9e, modifi\u00e9e (suivant le cas). On recharge postfix et on teste.","title":"Interdiction de communications non-chiffr\u00e9es sur le port 465"},{"location":"Installation-Dovecot-Authentification/#test-du-rejet-des-communications-non-chiffrees","text":"root@aijan:/etc/postfix# telnet localhost 465 Trying ::1... Connected to localhost. Escape character is '^]'. quit Connection closed by foreign host. root@aijan:/etc/postfix# \u00c7a fonctionne.","title":"Test du rejet des communications non-chiffr\u00e9es"},{"location":"Installation-Dovecot-Authentification/#ajout-de-la-gestion-du-port-587","text":"Sh\u00e9ma: Dans le fichier /etc/postfix/master.cf, d\u00e9-commentez les lignes suivantes et modifiez les comme indiqu\u00e9. Ce sont les m\u00eames modifications que celles effectu\u00e9es pour le port 465. submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes Ainsi que -o smtpd_recipient_restrictions=","title":"Ajout de la gestion du port 587"},{"location":"Installation-Dovecot-Authentification/#test-du-port-587","text":"root@aijan:/etc/bind# netstat -tlnp Connexions Internet actives (seulement serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 3410/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3410/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 580/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 4080/master tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 3410/named tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 649/apache2 tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 2668/dovecot tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 4080/master tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 2668/dovecot tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 649/apache2 tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 4080/master tcp6 0 0 :::53 :::* LISTEN 3410/named tcp6 0 0 :::22 :::* LISTEN 580/sshd tcp6 0 0 :::25 :::* LISTEN 4080/master tcp6 0 0 ::1:953 :::* LISTEN 3410/named tcp6 0 0 :::993 :::* LISTEN 2668/dovecot tcp6 0 0 :::587 :::* LISTEN 4080/master tcp6 0 0 :::143 :::* LISTEN 2668/dovecot tcp6 0 0 :::465 :::* LISTEN 4080/master root@aijan:/etc/bind# Le port 587 est g\u00e9r\u00e9.","title":"Test du port 587"},{"location":"Installation-Dovecot-Authentification/#ajout-de-la-gesion-du-port-993-imap-avec-ssltls","text":"Nous allons modifier la configuration de dovecot pour la prise en charge de ce port. Il n'est pas encore servi comme nous l'avons vu avec la commande netstat -tlpn (vu auparavant.) Le fichier \u00e0 modifier est: /etc/dovecot/conf.d/10-master.conf La partie du fichier \u00e0 modifier est la suivante: service imap-login { inet_listener imap { #port = 143 } inet_listener imaps { #port = 993 #ssl = yes } pour donner ceci: service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } Dans le fichier /etc/dovecot/conf.d/10-ssl.conf: ssl = yes ssl_protocols = !SSLv3","title":"Ajout de la gesion du port 993 (imap avec SSL/TLS)"},{"location":"Installation-Dovecot-Authentification/#test-de-la-gestion-du-port-993","text":"root@aijan:/etc/dovecot# netstat -tlpn Connexions Internet actives (seulement serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 552/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 552/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 580/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2376/master tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 552/named tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 649/apache2 tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 2668/dovecot tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 2668/dovecot tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 649/apache2 tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 2376/master tcp6 0 0 :::53 :::* LISTEN 552/named tcp6 0 0 :::22 :::* LISTEN 580/sshd tcp6 0 0 :::25 :::* LISTEN 2376/master tcp6 0 0 ::1:953 :::* LISTEN 552/named tcp6 0 0 :::993 :::* LISTEN 2668/dovecot tcp6 0 0 :::143 :::* LISTEN 2668/dovecot tcp6 0 0 :::465 :::* LISTEN 2376/master root@aijan:/etc/dovecot# Le port 993 est actif.","title":"Test de la gestion du port 993"},{"location":"Installation-Dovecot-Authentification/#mise-en-route","text":"Pour l'instant, notre Firewall n'autorise aucune conenxion sur les port 143, 993, 465, 587. Nous allons ouvrir les ports. Avant cela, il nous faut supprimer l'utilisateur testmail ... userdel testmail Pensez \u00e0 supprimer le r\u00e9pertoire home de cet utlisateur: rm -Rf /home/testmail Ceci fait, ouvrons nos ports. Voici les lignes \u00e0 ajouter \u00e0 notre programme firewall.sh. Il suffira de le lancer et de sauver la configuration (comme d\u00e9j\u00e0 vu pr\u00e9c\u00e9demment) # Mail SMTP:25 $IPT -t filter -A INPUT -p tcp --dport 25 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 25 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT # Mail SMTP:587 $IPT -t filter -A INPUT -p tcp --dport 587 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 597 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT # Mail IMAP:143 $IPT -t filter -A INPUT -p tcp --dport 143 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 143 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT # Mail IMAPS:993 $IPT -t filter -A INPUT -p tcp --dport 993 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 993 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT # Mail 465 $IPT -t filter -A INPUT -p tcp --dport 465 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 465 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT","title":"Mise en route"},{"location":"Installation-Dovecot-Authentification/#test-apres-ouverture-des-ports","text":"root@aijan:/home/ericadmin/bin# ./firewall.sh restart firewall stopped [OK] firewall started [OK] root@aijan:/home/ericadmin/bin# iptables -L Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:domain ACCEPT udp -- anywhere anywhere udp dpt:domain ACCEPT tcp -- 192.168.111.150 anywhere ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:https ACCEPT tcp -- anywhere anywhere tcp dpt:smtp ACCEPT tcp -- anywhere anywhere tcp dpt:submission ACCEPT tcp -- anywhere anywhere tcp dpt:imap2 ACCEPT tcp -- anywhere anywhere tcp dpt:imaps ACCEPT tcp -- anywhere anywhere tcp dpt:urd Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT udp -- anywhere anywhere udp dpt:ntp ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:https ACCEPT tcp -- anywhere anywhere tcp dpt:smtp ACCEPT tcp -- anywhere anywhere tcp dpt:submission ACCEPT tcp -- anywhere anywhere tcp dpt:imap2 ACCEPT tcp -- anywhere anywhere tcp dpt:imaps ACCEPT tcp -- anywhere anywhere tcp dpt:urd root@aijan:/home/ericadmin/bin# Les ports sont bien ouverts. Et on sauvegarde: service netfilter-persistent save root@aijan:/home/ericadmin/bin# service netfilter-persistent save [....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save done. root@aijan:/home/ericadmin/bin# Les r\u00e8gles IPV4 et IPV6 sont sauvegard\u00e9es.","title":"Test apr\u00e8s ouverture des ports"},{"location":"Installation-Dovecot-Authentification/#mise-en-place-du-fichier-auto-configuration-mozilla","text":"A voir ....","title":"Mise en place du fichier auto-configuration Mozilla"},{"location":"Installation-Dovecot-Authentification/#test-en-situation","text":"","title":"Test en situation"},{"location":"Installation-Dovecot-Authentification/#lecture-des-messages","text":"A partir de ma machine de bureau, test de connexion en IMAP, liste des messages, et lecture du contenu (port 993): eric@aldebaran:~$ openssl s_client -connect atom.yojik.net:993 -quiet depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = aijan.yojik.net verify return:1 - OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready. a login ericadmin eBnIDQ+FZZI= a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in b select inbox - FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk) - OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk \\*)] Flags permitted. - 3 EXISTS - 0 RECENT - OK [UIDVALIDITY 1527410684] UIDs valid - OK [UIDNEXT 4] Predicted next UID b OK [READ-WRITE] Select completed (0.000 + 0.000 secs). c FETCH 1:* FLAGS - 1 FETCH (FLAGS (\\Seen NonJunk)) - 2 FETCH (FLAGS (\\Seen NonJunk)) - 3 FETCH (FLAGS (\\Seen)) c OK Fetch completed (0.001 + 0.000 secs). d Fetch BODY[TEXT] d BAD Error in IMAP command FETCH: Invalid arguments (0.000 + 0.000 secs). d fetch body d BAD Error in IMAP command FETCH: Invalid arguments (0.000 + 0.000 secs). d FETCH 1 body - 1 FETCH (BODY (\"text\" \"plain\" (\"charset\" \"us-ascii\") NIL NIL \"7bit\" 10 2)) d OK Fetch completed (0.002 + 0.000 + 0.001 secs). e fetch 2 body - 2 FETCH (BODY (\"text\" \"plain\" (\"charset\" \"us-ascii\") NIL NIL \"7bit\" 3 1)) e OK Fetch completed (0.001 + 0.000 secs). f fetch 2 body[] - 2 FETCH (BODY[] {466} Return-Path: <ericadmin@aijan.yojik.net> X-Original-To: root@localhost Delivered-To: root@localhost Received: by aijan.yojik.net (Postfix, from userid 1000) id 6D42CD00904; Mon, 21 May 2018 12:11:41 +0200 (CEST) To: <root@localhost> Subject: essai d'envoi \u00e0 root X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20180521101141.6D42CD00904@aijan.yojik.net> Date: Mon, 21 May 2018 12:11:41 +0200 (CEST) From: ericadmin@aijan.yojik.net (Eric Streit) . ) f OK Fetch completed (0.001 + 0.000 secs). g fetch 3 body[] - 3 FETCH (BODY[] {735} Return-Path: <eric@aldebaran.yojik.net> X-Original-To: ericadmin@aijan.yojik.net Delivered-To: ericadmin@aijan.yojik.net Received: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:6423:417b:6ef:ee21]) by aijan.yojik.net (Postfix) with ESMTP id EC11BD00903 for <ericadmin@aijan.yojik.net>; Mon, 21 May 2018 12:12:56 +0200 (CEST) Received: by aldebaran.yojik.net (Postfix, from userid 1000) id 8B42920620A; Mon, 21 May 2018 12:12:56 +0200 (CEST) To: <ericadmin@aijan.yojik.net> Subject: Re-essai X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20180521101256.8B42920620A@aldebaran.yojik.net> Date: Mon, 21 May 2018 12:12:56 +0200 (CEST) From: eric@aldebaran.yojik.net (Eric Streit) re-essai de aldebaran . ) g OK Fetch completed (0.001 + 0.000 secs). h logout - BYE Logging out h OK Logout completed (0.000 + 0.000 secs). eric@aldebaran:~$ A partir de ma machine de bureau, test de connexion en IMAP, liste des messages, et lecture du contenu (port 143): eric@aldebaran:~$ telnet aijan.yojik.net 143 Trying 192.168.111.240... Connected to aijan.yojik.net. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready. ehlo aldebaran.yojik.eu ehlo BAD Error in IMAP command received by server. a login ericadmin eBnIDQ+FZZI= a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in b select inbox * FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk) * OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk \\*)] Flags permitted. * 3 EXISTS * 0 RECENT * OK [UIDVALIDITY 1527410684] UIDs valid * OK [UIDNEXT 4] Predicted next UID b OK [READ-WRITE] Select completed (0.000 + 0.000 secs). c logout * BYE Logging out c OK Logout completed (0.000 + 0.000 secs). Connection closed by foreign host. eric@aldebaran:~$ La r\u00e9cup\u00e9ration des messages s'est bien pass\u00e9e.","title":"Lecture des messages"},{"location":"Installation-Dovecot-Authentification/#envoi-de-messages","text":"Image de la configuration \u00e0 faire sur thunderbird : L'envoi de messages \u00e0 partir de Thunderbird fonctionne. Il faut bien configurer le port smtp \u00e0 465 ... Image de la configuration \u00e0 faire. L'envoi sur mon serveur personnel a \u00e9chou\u00e9: l'adresse IPV4 fournie par FREE \u00e9tait sur une liste de blocage (anti-spams). J'ai demand\u00e9 \u00e0 \u00eatre enlev\u00e9 de cette liste, ce qui va prendre 48H environ. R\u00e9-essai ensuite ... Envoi d'un message sur le compte du serveur \u00e0 partir de la machine de bureau (thunderbird): OK. R\u00e9ception des messages sur la machine de bureau (thunderbird): OK. Envoi d'un message \u00e0 partir du compte du serveur (thunderbird): \u00e7a OK.","title":"Envoi de messages"},{"location":"Installation-Dovecot-Authentification/#installation-dun-analyseur-des-logs-mail","text":"","title":"Installation d'un analyseur des logs mail"},{"location":"Installation-Dovecot-Authentification/#installation","text":"apt-get install pflogsumm","title":"Installation"},{"location":"Installation-Dovecot-Authentification/#utilisation","text":"pflogsumm -d today /var/log/mail.log Vous obtiendrez une analyse approfondie des logs de la partie mail. root@adara:/home/ericadmin# pflogsumm -d today /var/log/mail.log Postfix log summaries for Jul 1 Grand Totals messages 24 received 23 delivered 0 forwarded 0 deferred 0 bounced 29 rejected (55%) 0 reject warnings 0 held 0 discarded (0%) 2248k bytes received 2248k bytes delivered 17 senders 13 sending hosts/domains 3 recipients 2 recipient hosts/domains Per-Hour Traffic Summary time received delivered deferred bounced rejected -- 0000-0100 0 0 0 0 0 0100-0200 0 0 0 0 0 0200-0300 0 0 0 0 0 0300-0400 0 0 0 0 3 0400-0500 0 0 0 0 7 0500-0600 0 0 0 0 1 0600-0700 1 1 0 0 1 0700-0800 2 2 0 0 1 0800-0900 4 4 0 0 7 0900-1000 4 4 0 0 2 1000-1100 10 9 0 0 2 1100-1200 2 2 0 0 1 1200-1300 0 0 0 0 2 1300-1400 0 0 0 0 0 1400-1500 0 0 0 0 0 1500-1600 1 1 0 0 2 1600-1700 0 0 0 0 0 1700-1800 0 0 0 0 0 1800-1900 0 0 0 0 0 1900-2000 0 0 0 0 0 2000-2100 0 0 0 0 0 2100-2200 0 0 0 0 0 2200-2300 0 0 0 0 0 2300-2400 0 0 0 0 0 Host/Domain Summary: Message Delivery -- sent cnt bytes defers avg dly max dly host/domain -- - - - - -- 21 2241k 0 4,6 s 47,0 s yojik.eu 2 7008 0 0,8 s 1,0 s picapo.net Host/Domain Summary: Messages Received msg cnt bytes host/domain -- - -- 7 1918k yojik.eu 4 12773 lists.oasis-open.org 2 29818 nongnu.org 1 61932 sg.booking.com 1 53567 bounces.amazon.fr 1 46492 bounce.newsletter.delamaison.fr 1 36499 mail.bitwarden.com 1 36232 infos.materiel.net 1 25976 newsdesmarq.ccemails.com 1 20320 tradepubs.nl00.net 1 6892 5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com 1 4987 hussein.org 1 2021 inhrr.gob.ve Senders by message count 6 goulya@yojik.eu 2 m17n-list-bounces+eric=yojik.eu@nongnu.org 1 bounces+3318447-412f-eric=yojik.eu@mail.bitwarden.com 1 bounces+4713178-1151-eric=yojik.eu@sg.booking.com 1 email@newsdesmarq.ccemails.com 1 do_not_reply=netgear.com__413ah3rz7vwihm9c.ly8u7ddmyngfvref@5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com 1 eric@yojik.eu 1 20180701072218f38c0af2e0e840cf938ae502e570p0eu@bounces.amazon.fr 1 bounce-419_HTML-28507929-182305-7304800-452@bounce.newsletter.delamaison.fr 1 p-m8bl38j2p7vg88u3n3hrzdpp4rcbq9n7x8cvc2fn23u5pwpnseghvzq-BHP30@infos.materiel.net 1 Offers@tradepubs.nl00.net 1 info@hussein.org 1 docbook-apps-return-14782-eric=yojik.eu@lists.oasis-open.org 1 docbook-apps-return-14783-eric=yojik.eu@lists.oasis-open.org 1 docbook-apps-return-14784-eric=yojik.eu@lists.oasis-open.org 1 docbook-return-3958-eric=yojik.eu@lists.oasis-open.org 1 maria.rueda@inhrr.gob.ve Recipients by message count 15 eric@yojik.eu 6 goulya@yojik.eu 2 nico@picapo.net Senders by message size -- 1917k goulya@yojik.eu 61932 bounces+4713178-1151-eric=yojik.eu@sg.booking.com 53567 20180701072218f38c0af2e0e840cf938ae502e570p0eu@bounces.amazon.fr 46492 bounce-419_HTML-28507929-182305-7304800-452@bounce.newsletter.delamaison.fr 36499 bounces+3318447-412f-eric=yojik.eu@mail.bitwarden.com 36232 p-m8bl38j2p7vg88u3n3hrzdpp4rcbq9n7x8cvc2fn23u5pwpnseghvzq-BHP30@infos.materiel.net 29818 m17n-list-bounces+eric=yojik.eu@nongnu.org 25976 email@newsdesmarq.ccemails.com 20320 Offers@tradepubs.nl00.net 6892 do_not_reply=netgear.com__413ah3rz7vwihm9c.ly8u7ddmyngfvref@5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com 4987 info@hussein.org 4275 docbook-apps-return-14782-eric=yojik.eu@lists.oasis-open.org 3589 docbook-return-3958-eric=yojik.eu@lists.oasis-open.org 2564 docbook-apps-return-14784-eric=yojik.eu@lists.oasis-open.org 2345 docbook-apps-return-14783-eric=yojik.eu@lists.oasis-open.org 2021 maria.rueda@inhrr.gob.ve 1124 eric@yojik.eu Recipients by message size -- 1916k goulya@yojik.eu 333462 eric@yojik.eu 7008 nico@picapo.net message deferral detail: none message bounce detail (by relay): none message reject detail RCPT blocked using zen.spamhaus.org (total: 2) 1 amazonaws.com 1 b941c024.business.dg-w.de cannot find your hostname (total: 25) 9 183.159.95.6 3 210.239.8.55 3 114.228.155.122 2 2406:fc00:1:7:214:22ff:fe08:eb34 2 117.63.127.41 2 159.89.236.50 1 140.127.1.29 1 37.49.227.169 1 80.211.61.89 1 222.95.187.160 Client host rejected: Access denied (total: 2) 2 80.211.61.89 message reject warning detail: none message hold detail: none message discard detail: none smtp delivery failures: none Warnings -- smtpd (total: 16) 6 hostname host89-61-211-80.serverdedicati.aruba.it does not reso... 3 hostname host-210.239.8.55.n-cube.ne.jp does not resolve to add... 2 mm-115-58-214-37.mogilev.dynamic.pppoe.byfly.by[37.214.58.115]:... 2 hostname 41.127.63.117.broad.cz.js.dynamic.163data.com.cn does ... 1 hostname hn.kd.ny.adsl does not resolve to address 115.57.125.2... 1 hostname mails.npust.edu.tw does not resolve to address 140.127... 1 hostname 82-64-48-5.subs.proxad.net does not resolve to address... Fatal Errors: none Panics: none Master daemon messages: none root@adara:/home/ericadmin# Bien: la configuration est quasi termin\u00e9e: il nous reste \u00e0 ajouter SPF, DKIM, Dane et DNSSEC. et les comptes virtuels ...","title":"Utilisation"},{"location":"Installation-Fail2ban/","text":"Contrer les attaques de brute-force avec fail2ban Fail2ban est un programme qui surveille les logs des services en place et d\u00e9tecte les tentatives d'attaques brute-force . Il mets automatiquement en quarantaine les IP attaquantes. Installation root@atom:/home/ericadmin# apt install fail2ban Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: python3-pyinotify python3-systemd whois Paquets sugg\u00e9r\u00e9s : monit python-pyinotify-doc Les NOUVEAUX paquets suivants seront install\u00e9s : fail2ban python3-pyinotify python3-systemd whois 0 mis \u00e0 jour, 4 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 423 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 1 897 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 fail2ban all 0.9.6-2 [288 kB] R\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 python3-pyinotify all 0.9.6-1 [26,9 kB] R\u00e9ception de:3 http://deb.debian.org/debian stretch/main i386 python3-systemd i386 233-1 [34,4 kB] R\u00e9ception de:4 http://deb.debian.org/debian stretch/main i386 whois i386 5.2.17~deb9u1 [73,8 kB] 423 ko r\u00e9ceptionn\u00e9s en 0s (1 996 ko/s) S\u00e9lection du paquet fail2ban pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 31956 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../fail2ban_0.9.6-2_all.deb ... D\u00e9paquetage de fail2ban (0.9.6-2) ... S\u00e9lection du paquet python3-pyinotify pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../python3-pyinotify_0.9.6-1_all.deb ... D\u00e9paquetage de python3-pyinotify (0.9.6-1) ... S\u00e9lection du paquet python3-systemd pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../python3-systemd_233-1_i386.deb ... D\u00e9paquetage de python3-systemd (233-1) ... S\u00e9lection du paquet whois pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../whois_5.2.17~deb9u1_i386.deb ... D\u00e9paquetage de whois (5.2.17~deb9u1) ... Param\u00e9trage de fail2ban (0.9.6-2) ... Created symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service \u2192 /lib/systemd/system/fail2ban.service. Param\u00e9trage de whois (5.2.17~deb9u1) ... Param\u00e9trage de python3-systemd (233-1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de python3-pyinotify (0.9.6-1) ... root@atom:/home/ericadmin# Param\u00e9trage de fail2ban Pour fail2ban, il n'a rien \u00e0 configurer pour l'instant. Seul ssh est surveill\u00e9. Ici, pour l'utilisation avec ufw. Avec Debian, le fichier \u00e0 configurer est: /etc/fail2ban/jail.d/defaults-debian.conf Par d\u00e9faut, il contient [sshd] enabled = true","title":"Contrer les attaques de brute-force avec fail2ban"},{"location":"Installation-Fail2ban/#contrer-les-attaques-de-brute-force-avec-fail2ban","text":"Fail2ban est un programme qui surveille les logs des services en place et d\u00e9tecte les tentatives d'attaques brute-force . Il mets automatiquement en quarantaine les IP attaquantes.","title":"Contrer les attaques de brute-force avec fail2ban"},{"location":"Installation-Fail2ban/#installation","text":"root@atom:/home/ericadmin# apt install fail2ban Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: python3-pyinotify python3-systemd whois Paquets sugg\u00e9r\u00e9s : monit python-pyinotify-doc Les NOUVEAUX paquets suivants seront install\u00e9s : fail2ban python3-pyinotify python3-systemd whois 0 mis \u00e0 jour, 4 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 423 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 1 897 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 fail2ban all 0.9.6-2 [288 kB] R\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 python3-pyinotify all 0.9.6-1 [26,9 kB] R\u00e9ception de:3 http://deb.debian.org/debian stretch/main i386 python3-systemd i386 233-1 [34,4 kB] R\u00e9ception de:4 http://deb.debian.org/debian stretch/main i386 whois i386 5.2.17~deb9u1 [73,8 kB] 423 ko r\u00e9ceptionn\u00e9s en 0s (1 996 ko/s) S\u00e9lection du paquet fail2ban pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 31956 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../fail2ban_0.9.6-2_all.deb ... D\u00e9paquetage de fail2ban (0.9.6-2) ... S\u00e9lection du paquet python3-pyinotify pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../python3-pyinotify_0.9.6-1_all.deb ... D\u00e9paquetage de python3-pyinotify (0.9.6-1) ... S\u00e9lection du paquet python3-systemd pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../python3-systemd_233-1_i386.deb ... D\u00e9paquetage de python3-systemd (233-1) ... S\u00e9lection du paquet whois pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../whois_5.2.17~deb9u1_i386.deb ... D\u00e9paquetage de whois (5.2.17~deb9u1) ... Param\u00e9trage de fail2ban (0.9.6-2) ... Created symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service \u2192 /lib/systemd/system/fail2ban.service. Param\u00e9trage de whois (5.2.17~deb9u1) ... Param\u00e9trage de python3-systemd (233-1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de python3-pyinotify (0.9.6-1) ... root@atom:/home/ericadmin#","title":"Installation"},{"location":"Installation-Fail2ban/#parametrage-de-fail2ban","text":"Pour fail2ban, il n'a rien \u00e0 configurer pour l'instant. Seul ssh est surveill\u00e9. Ici, pour l'utilisation avec ufw. Avec Debian, le fichier \u00e0 configurer est: /etc/fail2ban/jail.d/defaults-debian.conf Par d\u00e9faut, il contient [sshd] enabled = true","title":"Param\u00e9trage de fail2ban"},{"location":"Installation-Parre-Feu/","text":"Installation d'un pare-feu J'ai utilis\u00e9 depuis toujours iptables brut . Ayant lu beaucoup de bien de ufw , je vais tenter une installation de ce dernier. Apr\u00e8s usage, il s'av\u00e8re difficile de configurer fail2ban avec ufw . Je vais quand m\u00eame laisser la doc de configuration de ufw , tout en pr\u00e9f\u00e9rant utiliser iptables . Installation de iptables Iptables est install\u00e9 automatiquement. Nous allons rajouter le paquet iptables-persistent pour assurer le lancement automatique de nos r\u00e8gles \u00e0 l'allumage de la machine. root@atom:/home/ericadmin# apt install iptables-persistent Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: netfilter-persistent Les NOUVEAUX paquets suivants seront install\u00e9s : iptables-persistent netfilter-persistent 0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 19,5 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 79,9 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://deb.debian.org/debian stretch/main amd64 netfilter-persistent all 1.0.4+nmu2 [8 792 B] R\u00e9ception de:2 http://deb.debian.org/debian stretch/main amd64 iptables-persistent all 1.0.4+nmu2 [10,7 kB] 19,5 ko r\u00e9ceptionn\u00e9s en 0s (198 ko/s) Pr\u00e9configuration des paquets... S\u00e9lection du paquet netfilter-persistent pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 36713 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../netfilter-persistent_1.0.4+nmu2_all.deb ... D\u00e9paquetage de netfilter-persistent (1.0.4+nmu2) ... S\u00e9lection du paquet iptables-persistent pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../iptables-persistent_1.0.4+nmu2_all.deb ... D\u00e9paquetage de iptables-persistent (1.0.4+nmu2) ... Param\u00e9trage de netfilter-persistent (1.0.4+nmu2) ... Created symlink /etc/systemd/system/multi-user.target.wants/netfilter-persistent.service \u2192 /lib/systemd/system/netfilter-persistent.service. update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de iptables-persistent (1.0.4+nmu2) ... root@atom:/home/ericadmin# Nous obtenons donc 2 fichiers de configuration, /etc/iptables/rules.v4 et /etc/iptables/rules.v6. En listant ces fichiers, aucune r\u00e8gle n'est encore enregistr\u00e9e: tout passe, en entr\u00e9e et en sortie. Ces fichiers sont mis \u00e0 jour gr\u00e2ce aux commandes suivantes. iptables-save > /etc/iptables/rules.v4 ip6tables-save > /etc/iptables/rules.v6 Les commandes disponibles pour netfilter-persistent sont les suivantes: systemctl start netfilter-persistent systemctl stop netfilter-persistent systemctl restart netfilter-persistent systemctl stop netfilter-persistent systemctl status netfilter-persistent Exemples d'utilisation suivant l'\u00e9tat de netfilter-persistent : root@atom:/home/ericadmin# systemctl stop netfilter-persistent root@atom:/home/ericadmin# systemctl status netfilter-persistent \u25cf (**point en rouge**) netfilter-persistent.service - netfilter persistent configuration Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Sun 2018-02-11 13:50:22 CET; 13s ago Process: 1629 ExecStop=/usr/sbin/netfilter-persistent stop (code=exited, status=1/FAILURE) Process: 1525 ExecStart=/usr/sbin/netfilter-persistent start (code=exited, status=0/SUCCESS) Main PID: 1525 (code=exited, status=0/SUCCESS) f\u00e9vr. 11 13:42:02 atom systemd[1]: Starting netfilter persistent configuration... f\u00e9vr. 11 13:42:02 atom netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start f\u00e9vr. 11 13:42:02 atom netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start f\u00e9vr. 11 13:42:02 atom systemd[1]: Started netfilter persistent configuration. f\u00e9vr. 11 13:50:22 atom systemd[1]: Stopping netfilter persistent configuration... f\u00e9vr. 11 13:50:22 atom netfilter-persistent[1629]: Automatic flush disabled; use '/usr/sbin/netfilter-persistent flush' f\u00e9vr. 11 13:50:22 atom systemd[1]: netfilter-persistent.service: Control process exited, code=exited status=1 f\u00e9vr. 11 13:50:22 atom systemd[1]: Stopped netfilter persistent configuration. f\u00e9vr. 11 13:50:22 atom systemd[1]: netfilter-persistent.service: Unit entered failed state. f\u00e9vr. 11 13:50:22 atom systemd[1]: netfilter-persistent.service: Failed with result 'exit-code'. root@atom:/home/ericadmin# root@atom:/home/ericadmin# systemctl start netfilter-persistent root@atom:/home/ericadmin# systemctl status netfilter-persistent \u25cf (**point en vert**) netfilter-persistent.service - netfilter persistent configuration Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled) Active: active (exited) since Sun 2018-02-11 13:51:09 CET; 2s ago Process: 1629 ExecStop=/usr/sbin/netfilter-persistent stop (code=exited, status=1/FAILURE) Process: 1641 ExecStart=/usr/sbin/netfilter-persistent start (code=exited, status=0/SUCCESS) Main PID: 1641 (code=exited, status=0/SUCCESS) f\u00e9vr. 11 13:51:09 atom systemd[1]: Starting netfilter persistent configuration... f\u00e9vr. 11 13:51:09 atom netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start f\u00e9vr. 11 13:51:09 atom netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start f\u00e9vr. 11 13:51:09 atom systemd[1]: Started netfilter persistent configuration. root@atom:/home/ericadmin# Pour sauver des r\u00e8gles \u201centr\u00e9es \u00e0 la main\u201d, tapez: root@atom:/home/ericadmin# service netfilter-persistent save [....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save done. root@atom:/home/ericadmin# ou root@atom:/home/ericadmin# iptables-save > /etc/iptables/rules.v4 root@atom:/home/ericadmin# ip6tables-save > /etc/iptables/rules.v6 Configuration des r\u00e8gles iptables Nous allons les configurer avec un script donn\u00e9 par Nicolargo: Site de NicoLargo #! /bin/sh ### BEGIN INIT INFO # Provides: PersonalFirewall # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Personal Firewall # Description: ### END INIT INFO # programme iptables IPV4 et IPV6 IPT=/sbin/iptables IP6T=/sbin/ip6tables # Les IPs IPMAISON=192.168.111.150 IP6MAISON=fe80::1e6f:65ff:fe92:dd1f # fonction qui d\u00e9marre le firewall do_start() { # Efface toutes les r\u00e8gles en cours. -F toutes. -X utilisateurs $IPT -t filter -F $IPT -t filter -X $IPT -t nat -F $IPT -t nat -X $IPT -t mangle -F $IPT -t mangle -X # $IP6T -t filter -F $IP6T -t filter -X # Il n'y a pas de NAT en IPV6 #$IP6T -t nat -F #$IP6T -t nat -X $IP6T -t mangle -F $IP6T -t mangle -X # strat\u00e9gie (-P) par d\u00e9faut : bloc tout l'entrant le forward et autorise le sortant $IPT -t filter -P INPUT DROP $IPT -t filter -P FORWARD DROP $IPT -t filter -P OUTPUT ACCEPT # $IP6T -F INPUT $IP6T -F FORWARD $IP6T -X # Loopback $IPT -t filter -A INPUT -i lo -j ACCEPT $IPT -t filter -A OUTPUT -o lo -j ACCEPT # $IP6T -t filter -A INPUT -i lo -j ACCEPT $IP6T -t filter -A OUTPUT -o lo -j ACCEPT # ICMP $IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT $IPT -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT # Permettre \u00e0 une connexion ouverte de recevoir du trafic en entr\u00e9e $IPT -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT # $IP6T -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT $IP6T -A INPUT -p icmpv6 --icmpv6-type neighbor-solicitation -j ACCEPT $IP6T -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -j ACCEPT $IP6T -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT $IP6T -A INPUT -j ACCEPT $IP6T -A INPUT -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT $IP6T -P INPUT DROP $IP6T -A FORWARD -m state --state ESTABLISHED -j ACCEPT $IP6T -A FORWARD -p icmpv6 --icmpv6-type echo-request -j ACCEPT $IP6T -A FORWARD -i br0 -j ACCEPT $IP6T -A FORWARD -i br1 -o sit_sixxs -j ACCEPT $IP6T -P FORWARD DROP # DNS:53 # /!\\ Il faut autoriser le DNS AVANT de d\u00e9clarer des hosts sinon pas de r\u00e9solution de nom possible $IPT -t filter -A INPUT -p tcp --dport 53 -j ACCEPT $IPT -t filter -A INPUT -p udp --dport 53 -j ACCEPT # DNS:53 $IP6T -t filter -A INPUT -p tcp --dport 53 -j ACCEPT $IP6T -t filter -A INPUT -p udp --dport 53 -j ACCEPT # DNS:953 # /!\\ Il faut autoriser le DNS AVANT de d\u00e9clarer des hosts sinon pas de r\u00e9solution de nom possible $IPT -t filter -A INPUT -p tcp --dport 953 -j ACCEPT $IPT -t filter -A INPUT -p udp --dport 953 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 953 -j ACCEPT $IP6T -t filter -A INPUT -p udp --dport 953 -j ACCEPT # accepte tout d'une ip en TCP (de la maison) $IPT -t filter -A INPUT -p tcp -s $IPMAISON -j ACCEPT $IP6T -t filter -A INPUT -p tcp -s $IP6MAISON -j ACCEPT # ssh $IPT -t filter -A INPUT -p tcp --dport 22 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 22 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT #NTP out $IPT -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT $IP6T -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT # # HTTP + HTTPS Out # $IPT -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT # $IPT -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT # # HTTP + HTTPS In # $IPT -t filter -A INPUT -p tcp --dport 80 -j ACCEPT # $IPT -t filter -A INPUT -p tcp --dport 443 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 80 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 443 -j ACCEPT # # Mail SMTP:25 # $IPT -t filter -A INPUT -p tcp --dport 25 -j ACCEPT # $IPT -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 25 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT # # Mail SMTP:587 # $IPT -t filter -A INPUT -p tcp --dport 587 -j ACCEPT # $IPT -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 597 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT # # Mail IMAP:143 # $IPT -t filter -A INPUT -p tcp --dport 143 -j ACCEPT # $IPT -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 143 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT # # Mail IMAPS:993 # $IPT -t filter -A INPUT -p tcp --dport 993 -j ACCEPT # $IPT -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 993 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT # # Mail 465 # $IPT -t filter -A INPUT -p tcp --dport 465 -j ACCEPT # $IPT -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 465 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT # echo \"firewall started [OK]\" } # fonction qui arr\u00eate le firewall do_stop() { # Efface toutes les r\u00e8gles $IPT -t filter -F $IPT -t filter -X $IPT -t nat -F $IPT -t nat -X $IPT -t mangle -F $IPT -t mangle -X # $IP6T -t filter -F $IP6T -t filter -X #$IP6T -t nat -F #$IP6T -t nat -X $IP6T -t mangle -F $IP6T -t mangle -X # remet la strat\u00e9gie $IPT -t filter -P INPUT ACCEPT $IPT -t filter -P OUTPUT ACCEPT $IPT -t filter -P FORWARD ACCEPT # $IP6T -t filter -P INPUT ACCEPT $IP6T -t filter -P OUTPUT ACCEPT $IP6T -t filter -P FORWARD ACCEPT # echo \"firewall stopped [OK]\" } # fonction status firewall do_status() { # affiche les r\u00e8gles en cours clear echo Status IPV4 echo -- $IPT -L -n -v echo echo -- echo echo status IPV6 echo -- $IP6T -L -n -v echo } case \"$1\" in start) do_start # quitte sans erreur exit 0 ;; stop) do_stop # quitte sans erreur exit 0 ;; restart) do_stop do_start # quitte sans erreur exit 0 ;; status) do_status # quitte sans erreurs exit 0 ;; *) # Si on ne tape ni \"start\" ni \"stop\"... on affiche une erreur echo \"Usage: /etc/init.d/firewall {start|stop|restart|status}\" # quitte le script avec un etat \"en erreur\" exit 1 ;; esac Explications: Cr\u00e9ation de 4 cha\u00eenes pour faciliter les op\u00e9rations: # iptables -N TCP # iptables -N UDP # ip6tables -N TCP # ip6tables -N UDP On est sur un serveur, pas un routeur, donc, on interdit la r\u00e8gle FORWARD: # iptables -P FORWARD DROP # ip6tables -P FORWARD DROP On autorise tout en sortie: # iptables -P OUTPUT ACCEPT # ip6tables -P OUTPUT ACCEPT Nous allons accepter les connexions d\u00e9j\u00e0 \u00e9tablies: # iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT # ip6tables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT En entr\u00e9e, on commence par interdire tout; on ouvrira les ports suivantles besoins: # iptables -P INPUT DROP # ip6tables -P INPUT DROP Autorisation des connexions loopback (internes): # iptables -A INPUT -i lo -j ACCEPT # ip6tables -A INPUT -i lo -j ACCEPT Nous allons interdire les paquets marqu\u00e9s INVALID ; il faudra auparavant accepter les paquets ICMPv6 Neighbor Discovery qui apparaissent invalides: #iptables -A INPUT -p 41 -j ACCEPT #ip6tables -A INPUT -p 41 -j ACCEPT # iptables -A INPUT -m conntrack --ctstate INVALID -j DROP # ip6tables -A INPUT -m conntrack --ctstate INVALID -j DROP Pour IPV6, il faut rajouter la r\u00e8gle suivante qui permet de faire passer le protocol de d\u00e9couverte des ordinateurs sur le m\u00eame r\u00e9seau: # ip6tables -A INPUT -s fe80::/10 -p ipv6-icmp -j ACCEPT L'adresse fe80:: est l'adresse ipv6 valable uniquement sur le r\u00e9seau local. On accepte les paquets ping : # iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT # ip6tables -A INPUT -p icmpv6 -m conntrack --ctstate NEW -j ACCEPT On peut maintenant accepter les nouveaux paquets entrants. Les connexions entrantes doivent commencer avec un paquet SYNC . Elles seront rejet\u00e9es si ce n'est pas le cas: # iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP # iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP # ip6tables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP # ip6tables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP On rejette les paquets du protocole icmp unreachable # iptables -A INPUT -j REJECT --reject-with icmp-proto-unreachable # iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset # ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 128 -m conntrack --ctstate NEW -j ACCEPT # ip6tables -A INPUT -p tcp -j REJECT --reject-with tcp-reset Pour IPV6, nous pouvons rajouter un filtrage pour le \"kernel reverse path filter\": # ip6tables -t raw -A PREROUTING -m rpfilter -j ACCEPT # ip6tables -t raw -A PREROUTING -j DROP On accepte les paquets ssh sur le port 22 (changez ce port si vous avez configur\u00e9 vos ports diff\u00e9remment) # iptables -A TCP -p tcp --dport 22 -j ACCEPT # ip6tables -A TCP -p tcp --dport 22 -j ACCEPT R\u00e8gles pour le DNS et NTP (ports 53 et 41) # iptables -A INPUT -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT # iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT # iptables -A INPUT -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT # iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT # iptables -A INPUT -p udp -m state --state ESTABLISHED --sport 123 -j ACCEPT # iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 123 -j ACCEPT La m\u00eame chose pour IPV6: # ip6tables -A INPUT -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT # ip6tables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT # ip6tables -A INPUT -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT # ip6tables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT # ip6tables -A INPUT -p udp -m state --state ESTABLISHED --sport 123 -j ACCEPT # ip6tables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 123 -j ACCEPT Nous pouvons maintenant lister nos r\u00e8gles. Nous allons commencer par IPV4: Listons les r\u00e8gles actuelles, ensuite ajoutons 2 r\u00e8gles et sauvons celles-ci, puis listons le r\u00e9sultat. Vous pouvez faire de m\u00eame pour toutes les r\u00e8gles. root@atom:/etc/iptables# cat rules.v4 # Generated by iptables-save v1.6.0 on Sun Feb 11 14:27:32 2018 *filter :INPUT ACCEPT [491:50774] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [267:23983] COMMIT # Completed on Sun Feb 11 14:27:32 2018 root@atom:/etc/iptables# iptables -N TCP root@atom:/etc/iptables# iptables -N UDP root@atom:/etc/iptables# service netfilter-persistent save [....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save done. root@atom:/etc/iptables# cat rules.v4 # Generated by iptables-save v1.6.0 on Sun Feb 11 14:28:24 2018 *filter :INPUT ACCEPT [13:888] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [8:944] :TCP - [0:0] :UDP - [0:0] COMMIT # Completed on Sun Feb 11 14:28:24 2018 Ne pas oublier de valider la r\u00e8gle d'acceptation des connexions existantes AVANT d'entrer la r\u00e8gle INPUT DROP sinon, vous perdez toute connexion avec votre serveur :). Il suffit de r\u00e9p\u00e9ter pour les autres r\u00e8gles puis pour IPV6. Nous obtenons donc les r\u00e8gles suivantes: Pour IPV4: root@atom:/etc/iptables# cat rules.v4 # Generated by iptables-save v1.6.0 on Sun Feb 11 15:33:41 2018 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [105:27592] :TCP - [0:0] :UDP - [0:0] -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP -A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT -A INPUT -p udp -m conntrack --ctstate NEW -j UDP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP -A INPUT -j REJECT --reject-with icmp-proto-unreachable -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A TCP -p tcp -m tcp --dport 22 -j ACCEPT COMMIT # Completed on Sun Feb 11 15:33:41 2018 root@atom:/etc/iptables# Pour IPV6: root@atom:/etc/iptables# cat rules.v6 # Generated by ip6tables-save v1.6.0 on Sun Feb 11 15:33:41 2018 *raw :PREROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A PREROUTING -m rpfilter -j ACCEPT -A PREROUTING -j DROP COMMIT # Completed on Sun Feb 11 15:33:41 2018 # Generated by ip6tables-save v1.6.0 on Sun Feb 11 15:33:41 2018 *filter :INPUT DROP [1:144] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] :TCP - [0:0] :UDP - [0:0] -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p ipv6 -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP -A INPUT -p udp -m conntrack --ctstate NEW -j UDP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 128 -m conntrack --ctstate NEW -j ACCEPT -A OUTPUT -p ipv6-icmp -j ACCEPT -A TCP -p tcp -m tcp --dport 22 -j ACCEPT COMMIT # Completed on Sun Feb 11 15:33:41 2018 root@atom:/etc/iptables# Test DNS et du serveur de temps (avec iptables actif) root@atom:/home/ericadmin# nslookup www.gnome.org Server: 192.168.111.254 Address: 192.168.111.254#53 Non-authoritative answer: www.gnome.org canonical name = proxy.gnome.org. Name: proxy.gnome.org Address: 209.132.180.168 Name: proxy.gnome.org Address: 209.132.180.180 root@atom:/home/ericadmin# timedatectl status Local time: dim. 2018-04-01 12:26:57 CEST Universal time: dim. 2018-04-01 10:26:57 UTC RTC time: dim. 2018-04-01 10:26:58 Time zone: Europe/Paris (CEST, +0200) Network time on: yes NTP synchronized: yes RTC in local TZ: no \u00c7a fonctionne. Il faut re-tester la connectivit\u00e9 en IPV4 et IPV6 Serveur -> ext\u00e9rieur Ext\u00e9rieur -> serveur On peut utiliser l'adresse ipv6.google.com pour v\u00e9rifier la connexion IPV6 en dehors du r\u00e9seau local.","title":"Installation d'un pare-feu"},{"location":"Installation-Parre-Feu/#installation-dun-pare-feu","text":"J'ai utilis\u00e9 depuis toujours iptables brut . Ayant lu beaucoup de bien de ufw , je vais tenter une installation de ce dernier. Apr\u00e8s usage, il s'av\u00e8re difficile de configurer fail2ban avec ufw . Je vais quand m\u00eame laisser la doc de configuration de ufw , tout en pr\u00e9f\u00e9rant utiliser iptables .","title":"Installation d'un pare-feu"},{"location":"Installation-Parre-Feu/#installation-de-iptables","text":"Iptables est install\u00e9 automatiquement. Nous allons rajouter le paquet iptables-persistent pour assurer le lancement automatique de nos r\u00e8gles \u00e0 l'allumage de la machine. root@atom:/home/ericadmin# apt install iptables-persistent Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: netfilter-persistent Les NOUVEAUX paquets suivants seront install\u00e9s : iptables-persistent netfilter-persistent 0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 19,5 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 79,9 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://deb.debian.org/debian stretch/main amd64 netfilter-persistent all 1.0.4+nmu2 [8 792 B] R\u00e9ception de:2 http://deb.debian.org/debian stretch/main amd64 iptables-persistent all 1.0.4+nmu2 [10,7 kB] 19,5 ko r\u00e9ceptionn\u00e9s en 0s (198 ko/s) Pr\u00e9configuration des paquets... S\u00e9lection du paquet netfilter-persistent pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 36713 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../netfilter-persistent_1.0.4+nmu2_all.deb ... D\u00e9paquetage de netfilter-persistent (1.0.4+nmu2) ... S\u00e9lection du paquet iptables-persistent pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../iptables-persistent_1.0.4+nmu2_all.deb ... D\u00e9paquetage de iptables-persistent (1.0.4+nmu2) ... Param\u00e9trage de netfilter-persistent (1.0.4+nmu2) ... Created symlink /etc/systemd/system/multi-user.target.wants/netfilter-persistent.service \u2192 /lib/systemd/system/netfilter-persistent.service. update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de iptables-persistent (1.0.4+nmu2) ... root@atom:/home/ericadmin# Nous obtenons donc 2 fichiers de configuration, /etc/iptables/rules.v4 et /etc/iptables/rules.v6. En listant ces fichiers, aucune r\u00e8gle n'est encore enregistr\u00e9e: tout passe, en entr\u00e9e et en sortie. Ces fichiers sont mis \u00e0 jour gr\u00e2ce aux commandes suivantes. iptables-save > /etc/iptables/rules.v4 ip6tables-save > /etc/iptables/rules.v6 Les commandes disponibles pour netfilter-persistent sont les suivantes: systemctl start netfilter-persistent systemctl stop netfilter-persistent systemctl restart netfilter-persistent systemctl stop netfilter-persistent systemctl status netfilter-persistent Exemples d'utilisation suivant l'\u00e9tat de netfilter-persistent : root@atom:/home/ericadmin# systemctl stop netfilter-persistent root@atom:/home/ericadmin# systemctl status netfilter-persistent \u25cf (**point en rouge**) netfilter-persistent.service - netfilter persistent configuration Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Sun 2018-02-11 13:50:22 CET; 13s ago Process: 1629 ExecStop=/usr/sbin/netfilter-persistent stop (code=exited, status=1/FAILURE) Process: 1525 ExecStart=/usr/sbin/netfilter-persistent start (code=exited, status=0/SUCCESS) Main PID: 1525 (code=exited, status=0/SUCCESS) f\u00e9vr. 11 13:42:02 atom systemd[1]: Starting netfilter persistent configuration... f\u00e9vr. 11 13:42:02 atom netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start f\u00e9vr. 11 13:42:02 atom netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start f\u00e9vr. 11 13:42:02 atom systemd[1]: Started netfilter persistent configuration. f\u00e9vr. 11 13:50:22 atom systemd[1]: Stopping netfilter persistent configuration... f\u00e9vr. 11 13:50:22 atom netfilter-persistent[1629]: Automatic flush disabled; use '/usr/sbin/netfilter-persistent flush' f\u00e9vr. 11 13:50:22 atom systemd[1]: netfilter-persistent.service: Control process exited, code=exited status=1 f\u00e9vr. 11 13:50:22 atom systemd[1]: Stopped netfilter persistent configuration. f\u00e9vr. 11 13:50:22 atom systemd[1]: netfilter-persistent.service: Unit entered failed state. f\u00e9vr. 11 13:50:22 atom systemd[1]: netfilter-persistent.service: Failed with result 'exit-code'. root@atom:/home/ericadmin# root@atom:/home/ericadmin# systemctl start netfilter-persistent root@atom:/home/ericadmin# systemctl status netfilter-persistent \u25cf (**point en vert**) netfilter-persistent.service - netfilter persistent configuration Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled) Active: active (exited) since Sun 2018-02-11 13:51:09 CET; 2s ago Process: 1629 ExecStop=/usr/sbin/netfilter-persistent stop (code=exited, status=1/FAILURE) Process: 1641 ExecStart=/usr/sbin/netfilter-persistent start (code=exited, status=0/SUCCESS) Main PID: 1641 (code=exited, status=0/SUCCESS) f\u00e9vr. 11 13:51:09 atom systemd[1]: Starting netfilter persistent configuration... f\u00e9vr. 11 13:51:09 atom netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start f\u00e9vr. 11 13:51:09 atom netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start f\u00e9vr. 11 13:51:09 atom systemd[1]: Started netfilter persistent configuration. root@atom:/home/ericadmin# Pour sauver des r\u00e8gles \u201centr\u00e9es \u00e0 la main\u201d, tapez: root@atom:/home/ericadmin# service netfilter-persistent save [....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save done. root@atom:/home/ericadmin# ou root@atom:/home/ericadmin# iptables-save > /etc/iptables/rules.v4 root@atom:/home/ericadmin# ip6tables-save > /etc/iptables/rules.v6","title":"Installation de iptables"},{"location":"Installation-Parre-Feu/#configuration-des-regles-iptables","text":"Nous allons les configurer avec un script donn\u00e9 par Nicolargo: Site de NicoLargo #! /bin/sh ### BEGIN INIT INFO # Provides: PersonalFirewall # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Personal Firewall # Description: ### END INIT INFO # programme iptables IPV4 et IPV6 IPT=/sbin/iptables IP6T=/sbin/ip6tables # Les IPs IPMAISON=192.168.111.150 IP6MAISON=fe80::1e6f:65ff:fe92:dd1f # fonction qui d\u00e9marre le firewall do_start() { # Efface toutes les r\u00e8gles en cours. -F toutes. -X utilisateurs $IPT -t filter -F $IPT -t filter -X $IPT -t nat -F $IPT -t nat -X $IPT -t mangle -F $IPT -t mangle -X # $IP6T -t filter -F $IP6T -t filter -X # Il n'y a pas de NAT en IPV6 #$IP6T -t nat -F #$IP6T -t nat -X $IP6T -t mangle -F $IP6T -t mangle -X # strat\u00e9gie (-P) par d\u00e9faut : bloc tout l'entrant le forward et autorise le sortant $IPT -t filter -P INPUT DROP $IPT -t filter -P FORWARD DROP $IPT -t filter -P OUTPUT ACCEPT # $IP6T -F INPUT $IP6T -F FORWARD $IP6T -X # Loopback $IPT -t filter -A INPUT -i lo -j ACCEPT $IPT -t filter -A OUTPUT -o lo -j ACCEPT # $IP6T -t filter -A INPUT -i lo -j ACCEPT $IP6T -t filter -A OUTPUT -o lo -j ACCEPT # ICMP $IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT $IPT -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT # Permettre \u00e0 une connexion ouverte de recevoir du trafic en entr\u00e9e $IPT -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT # $IP6T -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT $IP6T -A INPUT -p icmpv6 --icmpv6-type neighbor-solicitation -j ACCEPT $IP6T -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -j ACCEPT $IP6T -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT $IP6T -A INPUT -j ACCEPT $IP6T -A INPUT -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT $IP6T -P INPUT DROP $IP6T -A FORWARD -m state --state ESTABLISHED -j ACCEPT $IP6T -A FORWARD -p icmpv6 --icmpv6-type echo-request -j ACCEPT $IP6T -A FORWARD -i br0 -j ACCEPT $IP6T -A FORWARD -i br1 -o sit_sixxs -j ACCEPT $IP6T -P FORWARD DROP # DNS:53 # /!\\ Il faut autoriser le DNS AVANT de d\u00e9clarer des hosts sinon pas de r\u00e9solution de nom possible $IPT -t filter -A INPUT -p tcp --dport 53 -j ACCEPT $IPT -t filter -A INPUT -p udp --dport 53 -j ACCEPT # DNS:53 $IP6T -t filter -A INPUT -p tcp --dport 53 -j ACCEPT $IP6T -t filter -A INPUT -p udp --dport 53 -j ACCEPT # DNS:953 # /!\\ Il faut autoriser le DNS AVANT de d\u00e9clarer des hosts sinon pas de r\u00e9solution de nom possible $IPT -t filter -A INPUT -p tcp --dport 953 -j ACCEPT $IPT -t filter -A INPUT -p udp --dport 953 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 953 -j ACCEPT $IP6T -t filter -A INPUT -p udp --dport 953 -j ACCEPT # accepte tout d'une ip en TCP (de la maison) $IPT -t filter -A INPUT -p tcp -s $IPMAISON -j ACCEPT $IP6T -t filter -A INPUT -p tcp -s $IP6MAISON -j ACCEPT # ssh $IPT -t filter -A INPUT -p tcp --dport 22 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 22 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT #NTP out $IPT -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT $IP6T -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT # # HTTP + HTTPS Out # $IPT -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT # $IPT -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT # # HTTP + HTTPS In # $IPT -t filter -A INPUT -p tcp --dport 80 -j ACCEPT # $IPT -t filter -A INPUT -p tcp --dport 443 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 80 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 443 -j ACCEPT # # Mail SMTP:25 # $IPT -t filter -A INPUT -p tcp --dport 25 -j ACCEPT # $IPT -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 25 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT # # Mail SMTP:587 # $IPT -t filter -A INPUT -p tcp --dport 587 -j ACCEPT # $IPT -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 597 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT # # Mail IMAP:143 # $IPT -t filter -A INPUT -p tcp --dport 143 -j ACCEPT # $IPT -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 143 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT # # Mail IMAPS:993 # $IPT -t filter -A INPUT -p tcp --dport 993 -j ACCEPT # $IPT -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 993 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT # # Mail 465 # $IPT -t filter -A INPUT -p tcp --dport 465 -j ACCEPT # $IPT -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT # $IP6T -t filter -A INPUT -p tcp --dport 465 -j ACCEPT # $IP6T -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT # echo \"firewall started [OK]\" } # fonction qui arr\u00eate le firewall do_stop() { # Efface toutes les r\u00e8gles $IPT -t filter -F $IPT -t filter -X $IPT -t nat -F $IPT -t nat -X $IPT -t mangle -F $IPT -t mangle -X # $IP6T -t filter -F $IP6T -t filter -X #$IP6T -t nat -F #$IP6T -t nat -X $IP6T -t mangle -F $IP6T -t mangle -X # remet la strat\u00e9gie $IPT -t filter -P INPUT ACCEPT $IPT -t filter -P OUTPUT ACCEPT $IPT -t filter -P FORWARD ACCEPT # $IP6T -t filter -P INPUT ACCEPT $IP6T -t filter -P OUTPUT ACCEPT $IP6T -t filter -P FORWARD ACCEPT # echo \"firewall stopped [OK]\" } # fonction status firewall do_status() { # affiche les r\u00e8gles en cours clear echo Status IPV4 echo -- $IPT -L -n -v echo echo -- echo echo status IPV6 echo -- $IP6T -L -n -v echo } case \"$1\" in start) do_start # quitte sans erreur exit 0 ;; stop) do_stop # quitte sans erreur exit 0 ;; restart) do_stop do_start # quitte sans erreur exit 0 ;; status) do_status # quitte sans erreurs exit 0 ;; *) # Si on ne tape ni \"start\" ni \"stop\"... on affiche une erreur echo \"Usage: /etc/init.d/firewall {start|stop|restart|status}\" # quitte le script avec un etat \"en erreur\" exit 1 ;; esac Explications: Cr\u00e9ation de 4 cha\u00eenes pour faciliter les op\u00e9rations: # iptables -N TCP # iptables -N UDP # ip6tables -N TCP # ip6tables -N UDP On est sur un serveur, pas un routeur, donc, on interdit la r\u00e8gle FORWARD: # iptables -P FORWARD DROP # ip6tables -P FORWARD DROP On autorise tout en sortie: # iptables -P OUTPUT ACCEPT # ip6tables -P OUTPUT ACCEPT Nous allons accepter les connexions d\u00e9j\u00e0 \u00e9tablies: # iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT # ip6tables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT En entr\u00e9e, on commence par interdire tout; on ouvrira les ports suivantles besoins: # iptables -P INPUT DROP # ip6tables -P INPUT DROP Autorisation des connexions loopback (internes): # iptables -A INPUT -i lo -j ACCEPT # ip6tables -A INPUT -i lo -j ACCEPT Nous allons interdire les paquets marqu\u00e9s INVALID ; il faudra auparavant accepter les paquets ICMPv6 Neighbor Discovery qui apparaissent invalides: #iptables -A INPUT -p 41 -j ACCEPT #ip6tables -A INPUT -p 41 -j ACCEPT # iptables -A INPUT -m conntrack --ctstate INVALID -j DROP # ip6tables -A INPUT -m conntrack --ctstate INVALID -j DROP Pour IPV6, il faut rajouter la r\u00e8gle suivante qui permet de faire passer le protocol de d\u00e9couverte des ordinateurs sur le m\u00eame r\u00e9seau: # ip6tables -A INPUT -s fe80::/10 -p ipv6-icmp -j ACCEPT L'adresse fe80:: est l'adresse ipv6 valable uniquement sur le r\u00e9seau local. On accepte les paquets ping : # iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT # ip6tables -A INPUT -p icmpv6 -m conntrack --ctstate NEW -j ACCEPT On peut maintenant accepter les nouveaux paquets entrants. Les connexions entrantes doivent commencer avec un paquet SYNC . Elles seront rejet\u00e9es si ce n'est pas le cas: # iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP # iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP # ip6tables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP # ip6tables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP On rejette les paquets du protocole icmp unreachable # iptables -A INPUT -j REJECT --reject-with icmp-proto-unreachable # iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset # ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 128 -m conntrack --ctstate NEW -j ACCEPT # ip6tables -A INPUT -p tcp -j REJECT --reject-with tcp-reset Pour IPV6, nous pouvons rajouter un filtrage pour le \"kernel reverse path filter\": # ip6tables -t raw -A PREROUTING -m rpfilter -j ACCEPT # ip6tables -t raw -A PREROUTING -j DROP On accepte les paquets ssh sur le port 22 (changez ce port si vous avez configur\u00e9 vos ports diff\u00e9remment) # iptables -A TCP -p tcp --dport 22 -j ACCEPT # ip6tables -A TCP -p tcp --dport 22 -j ACCEPT R\u00e8gles pour le DNS et NTP (ports 53 et 41) # iptables -A INPUT -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT # iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT # iptables -A INPUT -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT # iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT # iptables -A INPUT -p udp -m state --state ESTABLISHED --sport 123 -j ACCEPT # iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 123 -j ACCEPT La m\u00eame chose pour IPV6: # ip6tables -A INPUT -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT # ip6tables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT # ip6tables -A INPUT -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT # ip6tables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT # ip6tables -A INPUT -p udp -m state --state ESTABLISHED --sport 123 -j ACCEPT # ip6tables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 123 -j ACCEPT Nous pouvons maintenant lister nos r\u00e8gles. Nous allons commencer par IPV4: Listons les r\u00e8gles actuelles, ensuite ajoutons 2 r\u00e8gles et sauvons celles-ci, puis listons le r\u00e9sultat. Vous pouvez faire de m\u00eame pour toutes les r\u00e8gles. root@atom:/etc/iptables# cat rules.v4 # Generated by iptables-save v1.6.0 on Sun Feb 11 14:27:32 2018 *filter :INPUT ACCEPT [491:50774] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [267:23983] COMMIT # Completed on Sun Feb 11 14:27:32 2018 root@atom:/etc/iptables# iptables -N TCP root@atom:/etc/iptables# iptables -N UDP root@atom:/etc/iptables# service netfilter-persistent save [....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save done. root@atom:/etc/iptables# cat rules.v4 # Generated by iptables-save v1.6.0 on Sun Feb 11 14:28:24 2018 *filter :INPUT ACCEPT [13:888] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [8:944] :TCP - [0:0] :UDP - [0:0] COMMIT # Completed on Sun Feb 11 14:28:24 2018 Ne pas oublier de valider la r\u00e8gle d'acceptation des connexions existantes AVANT d'entrer la r\u00e8gle INPUT DROP sinon, vous perdez toute connexion avec votre serveur :). Il suffit de r\u00e9p\u00e9ter pour les autres r\u00e8gles puis pour IPV6. Nous obtenons donc les r\u00e8gles suivantes: Pour IPV4: root@atom:/etc/iptables# cat rules.v4 # Generated by iptables-save v1.6.0 on Sun Feb 11 15:33:41 2018 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [105:27592] :TCP - [0:0] :UDP - [0:0] -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP -A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT -A INPUT -p udp -m conntrack --ctstate NEW -j UDP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP -A INPUT -j REJECT --reject-with icmp-proto-unreachable -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A TCP -p tcp -m tcp --dport 22 -j ACCEPT COMMIT # Completed on Sun Feb 11 15:33:41 2018 root@atom:/etc/iptables# Pour IPV6: root@atom:/etc/iptables# cat rules.v6 # Generated by ip6tables-save v1.6.0 on Sun Feb 11 15:33:41 2018 *raw :PREROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A PREROUTING -m rpfilter -j ACCEPT -A PREROUTING -j DROP COMMIT # Completed on Sun Feb 11 15:33:41 2018 # Generated by ip6tables-save v1.6.0 on Sun Feb 11 15:33:41 2018 *filter :INPUT DROP [1:144] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] :TCP - [0:0] :UDP - [0:0] -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p ipv6 -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP -A INPUT -p udp -m conntrack --ctstate NEW -j UDP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 128 -m conntrack --ctstate NEW -j ACCEPT -A OUTPUT -p ipv6-icmp -j ACCEPT -A TCP -p tcp -m tcp --dport 22 -j ACCEPT COMMIT # Completed on Sun Feb 11 15:33:41 2018 root@atom:/etc/iptables#","title":"Configuration des r\u00e8gles iptables"},{"location":"Installation-Parre-Feu/#test-dns-et-du-serveur-de-temps-avec-iptables-actif","text":"root@atom:/home/ericadmin# nslookup www.gnome.org Server: 192.168.111.254 Address: 192.168.111.254#53 Non-authoritative answer: www.gnome.org canonical name = proxy.gnome.org. Name: proxy.gnome.org Address: 209.132.180.168 Name: proxy.gnome.org Address: 209.132.180.180 root@atom:/home/ericadmin# timedatectl status Local time: dim. 2018-04-01 12:26:57 CEST Universal time: dim. 2018-04-01 10:26:57 UTC RTC time: dim. 2018-04-01 10:26:58 Time zone: Europe/Paris (CEST, +0200) Network time on: yes NTP synchronized: yes RTC in local TZ: no \u00c7a fonctionne. Il faut re-tester la connectivit\u00e9 en IPV4 et IPV6 Serveur -> ext\u00e9rieur Ext\u00e9rieur -> serveur On peut utiliser l'adresse ipv6.google.com pour v\u00e9rifier la connexion IPV6 en dehors du r\u00e9seau local.","title":"Test DNS et du serveur de temps (avec iptables actif)"},{"location":"Installation-Serveur-Courrier-Basique/","text":"Installation d'un serveur de courrier basique Debian installe par d\u00e9faut exim4 . Nous allons le remplacer par postix (que nous \u00e9tendrons ensuite pour avoir un serveur de courrier complet.) Pensez \u00e0 ouvrir les ports 25 (IPV4 et IPV6) du firewall. apt install postfix On supprime compl\u00e8tement exim4 (fichiers de configuration): apt remove --purge exim4* On teste l'envoi de messages entrants et sortants apr\u00e8s avoir charg\u00e9 les programmes de mail utilitaires (sur le serveur et sur un autre poste): Chargement des utilitaires sur un poste ext\u00e9rieur. Ex\u00e9cutez la m\u00eame commande sur le poste serveur en cours de configuration. root@atom:~# apt install mailutils Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libmariadbclient18 libntlm0 libpython2.7 libpython2.7-minimal libpython2.7-stdlib mailutils-common mysql-common Paquets sugg\u00e9r\u00e9s : mailutils-mh mailutils-doc Les NOUVEAUX paquets suivants seront install\u00e9s : guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libmariadbclient18 libntlm0 libpython2.7 libpython2.7-minimal libpython2.7-stdlib mailutils mailutils-common mysql-common 0 mis \u00e0 jour, 15 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 9 575 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 39,0 Mo d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 libgc1c2 amd64 1:7.4.2-8 [208 kB] R\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libltdl7 amd64 2.4.6-2 [389 kB] R\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 guile-2.0-libs amd64 2.0.13+1-4 [2 232 kB] R\u00e9ception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 libfribidi0 amd64 0.19.7-1+b1 [45,7 kB] R\u00e9ception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 libntlm0 amd64 1.4-8 [20,9 kB] R\u00e9ception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 libgsasl7 amd64 1.8.0-8+b2 [207 kB] R\u00e9ception de:7 http://debian.mirrors.ovh.net/debian stretch/main amd64 libkyotocabinet16v5 amd64 1.2.76-4.2+b1 [298 kB] R\u00e9ception de:8 http://debian.mirrors.ovh.net/debian stretch/main amd64 mailutils-common all 1:3.1.1-1 [642 kB] R\u00e9ception de:9 http://debian.mirrors.ovh.net/debian stretch/main amd64 mysql-common all 5.8+1.0.2 [5 608 B] R\u00e9ception de:10 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmariadbclient18 amd64 10.1.26-0+deb9u1 [779 kB] R\u00e9ception de:11 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7-minimal amd64 2.7.13-2+deb9u2 [389 kB] R\u00e9ception de:12 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7-stdlib amd64 2.7.13-2+deb9u2 [1 896 kB] R\u00e9ception de:13 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7 amd64 2.7.13-2+deb9u2 [1 072 kB] R\u00e9ception de:14 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmailutils5 amd64 1:3.1.1-1 [817 kB] R\u00e9ception de:15 http://debian.mirrors.ovh.net/debian stretch/main amd64 mailutils amd64 1:3.1.1-1 [573 kB] 9 575 ko r\u00e9ceptionn\u00e9s en 0s (11,2 Mo/s) S\u00e9lection du paquet libgc1c2:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 22737 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../00-libgc1c2_1%3a7.4.2-8_amd64.deb ... D\u00e9paquetage de libgc1c2:amd64 (1:7.4.2-8) ... S\u00e9lection du paquet libltdl7:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../01-libltdl7_2.4.6-2_amd64.deb ... D\u00e9paquetage de libltdl7:amd64 (2.4.6-2) ... S\u00e9lection du paquet guile-2.0-libs:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../02-guile-2.0-libs_2.0.13+1-4_amd64.deb ... D\u00e9paquetage de guile-2.0-libs:amd64 (2.0.13+1-4) ... S\u00e9lection du paquet libfribidi0:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../03-libfribidi0_0.19.7-1+b1_amd64.deb ... D\u00e9paquetage de libfribidi0:amd64 (0.19.7-1+b1) ... S\u00e9lection du paquet libntlm0:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../04-libntlm0_1.4-8_amd64.deb ... D\u00e9paquetage de libntlm0:amd64 (1.4-8) ... S\u00e9lection du paquet libgsasl7 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../05-libgsasl7_1.8.0-8+b2_amd64.deb ... D\u00e9paquetage de libgsasl7 (1.8.0-8+b2) ... S\u00e9lection du paquet libkyotocabinet16v5:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../06-libkyotocabinet16v5_1.2.76-4.2+b1_amd64.deb ... D\u00e9paquetage de libkyotocabinet16v5:amd64 (1.2.76-4.2+b1) ... S\u00e9lection du paquet mailutils-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../07-mailutils-common_1%3a3.1.1-1_all.deb ... D\u00e9paquetage de mailutils-common (1:3.1.1-1) ... S\u00e9lection du paquet mysql-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../08-mysql-common_5.8+1.0.2_all.deb ... D\u00e9paquetage de mysql-common (5.8+1.0.2) ... S\u00e9lection du paquet libmariadbclient18:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../09-libmariadbclient18_10.1.26-0+deb9u1_amd64.deb ... D\u00e9paquetage de libmariadbclient18:amd64 (10.1.26-0+deb9u1) ... S\u00e9lection du paquet libpython2.7-minimal:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../10-libpython2.7-minimal_2.7.13-2+deb9u2_amd64.deb ... D\u00e9paquetage de libpython2.7-minimal:amd64 (2.7.13-2+deb9u2) ... S\u00e9lection du paquet libpython2.7-stdlib:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../11-libpython2.7-stdlib_2.7.13-2+deb9u2_amd64.deb ... D\u00e9paquetage de libpython2.7-stdlib:amd64 (2.7.13-2+deb9u2) ... S\u00e9lection du paquet libpython2.7:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../12-libpython2.7_2.7.13-2+deb9u2_amd64.deb ... D\u00e9paquetage de libpython2.7:amd64 (2.7.13-2+deb9u2) ... S\u00e9lection du paquet libmailutils5:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../13-libmailutils5_1%3a3.1.1-1_amd64.deb ... D\u00e9paquetage de libmailutils5:amd64 (1:3.1.1-1) ... S\u00e9lection du paquet mailutils pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../14-mailutils_1%3a3.1.1-1_amd64.deb ... D\u00e9paquetage de mailutils (1:3.1.1-1) ... Param\u00e9trage de mysql-common (5.8+1.0.2) ... update-alternatives: utilisation de \u00ab /etc/mysql/my.cnf.fallback \u00bb pour fournir \u00ab /etc/mysql/my.cnf \u00bb (my.cnf) en mode automatique Param\u00e9trage de libgc1c2:amd64 (1:7.4.2-8) ... Param\u00e9trage de libmariadbclient18:amd64 (10.1.26-0+deb9u1) ... Param\u00e9trage de libntlm0:amd64 (1.4-8) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ... Param\u00e9trage de libltdl7:amd64 (2.4.6-2) ... Param\u00e9trage de libfribidi0:amd64 (0.19.7-1+b1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de libpython2.7-minimal:amd64 (2.7.13-2+deb9u2) ... Param\u00e9trage de libkyotocabinet16v5:amd64 (1.2.76-4.2+b1) ... Param\u00e9trage de libpython2.7-stdlib:amd64 (2.7.13-2+deb9u2) ... Param\u00e9trage de mailutils-common (1:3.1.1-1) ... Param\u00e9trage de libgsasl7 (1.8.0-8+b2) ... Param\u00e9trage de guile-2.0-libs:amd64 (2.0.13+1-4) ... Param\u00e9trage de libpython2.7:amd64 (2.7.13-2+deb9u2) ... Param\u00e9trage de libmailutils5:amd64 (1:3.1.1-1) ... Param\u00e9trage de mailutils (1:3.1.1-1) ... update-alternatives: utilisation de \u00ab /usr/bin/frm.mailutils \u00bb pour fournir \u00ab /usr/bin/frm \u00bb (frm) en mode automatique update-alternatives: utilisation de \u00ab /usr/bin/from.mailutils \u00bb pour fournir \u00ab /usr/bin/from \u00bb (from) en mode automatique update-alternatives: utilisation de \u00ab /usr/bin/messages.mailutils \u00bb pour fournir \u00ab /usr/bin/messages \u00bb (messages) en mode automatique update-alternatives: utilisation de \u00ab /usr/bin/movemail.mailutils \u00bb pour fournir \u00ab /usr/bin/movemail \u00bb (movemail) en mode automatique update-alternatives: utilisation de \u00ab /usr/bin/readmsg.mailutils \u00bb pour fournir \u00ab /usr/bin/readmsg \u00bb (readmsg) en mode automatique update-alternatives: utilisation de \u00ab /usr/bin/dotlock.mailutils \u00bb pour fournir \u00ab /usr/bin/dotlock \u00bb (dotlock) en mode automatique update-alternatives: utilisation de \u00ab /usr/bin/mail.mailutils \u00bb pour fournir \u00ab /usr/bin/mailx \u00bb (mailx) en mode automatique Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ... root@atom:~# Test d'envoi d'un utilisateur du serveur \u00e0 l'autre root -> ericadmin root@atom:/etc/fail2ban# mail ericadmin Cc: Subject: Essai 1 Essai 1 . ericadmin@atom:~/bin$ mailx \"/var/mail/ericadmin\": 1 message 1 nouveau >N 1 root lun. nov. 26 09: 14/451 Essai 1 ? 1 Return-Path: <root@atom.yojik.net> X-Original-To: ericadmin@atom.yojik.net Delivered-To: ericadmin@atom.yojik.net Received: by atom.yojik.net (Postfix, from userid 0) id 3AE0F460033; Mon, 26 Nov 2018 09:26:26 +0100 (CET) To: <ericadmin@atom.yojik.net> Subject: Essai 1 X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20181126082626.3AE0F460033@atom.yojik.net> Date: Mon, 26 Nov 2018 09:26:26 +0100 (CET) From: root@atom.yojik.net (root) Essai 1 . ? q 1 message sauvegard\u00e9 dans /home/ericadmin/mbox 0 message conserv\u00e9 dans /var/mail/ericadmin ericadmin -> root ericadmin@atom:~/bin$ mail root Cc: Subject: Essai 2 Essai 2 . root@atom:/etc/fail2ban# mailx \"/var/mail/root\": 1 message 1 nouveau >N 1 Eric Streit lun. nov. 26 09: 14/456 Essai 2 ? 1 Return-Path: <ericadmin@atom.yojik.net> X-Original-To: root@atom.yojik.net Delivered-To: root@atom.yojik.net Received: by atom.yojik.net (Postfix, from userid 1000) id 46220460036; Mon, 26 Nov 2018 09:27:04 +0100 (CET) To: <root@atom.yojik.net> Subject: Essai 2 X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20181126082704.46220460036@atom.yojik.net> Date: Mon, 26 Nov 2018 09:27:04 +0100 (CET) From: ericadmin@atom.yojik.net (Eric Streit) Essai 2 . L'envoi des messages entre utilisateurs du serveur marche comme il faut. Premi\u00e8re \u00e9tape de configuration de postfix Modifiez la ligne suivante dans /etc/postfix/main.cf: mydestination = $myhostname, yojik.net, atom.yojik.net, localhost.yojik.net, localhost et relancez postfix avec: service postfix restart Test d'envoi de messages \u00e0 partir de ce serveur sur mon serveur principal Envoi d'un message sur mon compte de messagerie en .eu: ericadmin@atom:~$ echo \"Et voil\u00e0 un petit message\" | mail -s \"test du courrier sortant\" ericadmin@yojik.eu Le message est bien re\u00e7u. V\u00e9rifiez dans le dossier spam : comme il n'y a aucune s\u00e9curisation du serveur de courrier (pour l'instant), gmail ou autre, soit refuse de courrier, soit le met dans les spams. Test d'envoi de messages \u00e0 partir d'un poste ext\u00e9rieur Envoi d'un message \u00e0 partir du poste ext\u00e9rieur aldebaran (n'oubliez pas d'ouvrir le port 25 dans les r\u00e8gles iptables ...): eric@aldebaran:~$ echo \"Et voil\u00e0 un petit message\" | mail -s \"test du courrier 1\" ericadmin@atom.yojik.net Test de r\u00e9ception sur le serveur: ericadmin@atom:~$ mailx \"/var/mail/ericadmin\": 1 message 1 nouveau >N 1 Eric Streit dim. nov. 11 13: 16/724 test du courrier 1 ? 1 Return-Path: <eric@aldebaran.yojik.net> X-Original-To: ericadmin@atom.yojik.net Delivered-To: ericadmin@atom.yojik.net Received: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:e5c4:aee0:d068:64f6]) by atom.yojik.net (Postfix) with ESMTP id 0B3CF12085A for <ericadmin@atom.yojik.net>; Sun, 11 Nov 2018 13:09:08 +0100 (CET) Received: by aldebaran.yojik.net (Postfix, from userid 1000) id 40DF310CAC3; Sun, 11 Nov 2018 13:09:07 +0100 (CET) Subject: test du courrier 1 To: <ericadmin@atom.yojik.net> X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20181111120907.40DF310CAC3@aldebaran.yojik.net> Date: Sun, 11 Nov 2018 13:09:07 +0100 (CET) From: eric@aldebaran.yojik.net (Eric Streit) Et voil\u00e0 un petit message ? q 1 message sauvegard\u00e9 dans /home/ericadmin/mbox 0 message conserv\u00e9 dans /var/mail/ericadmin Le message est bien re\u00e7u par le serveur de mail de yojik.net. Vous pouvez essayer aussi sur une adresse gmail par exemple. Mise \u00e0 jour du fichier /etc/aliases Ce fichier sert \u00e0 rediriger toutes les adresses \u00e9mail comme abuse , webmaster , root vers un utilisateur administrateur de la machine, root puis vers moi ericadmin # /etc/aliases mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root root: ericadmin Il faut lancer la commande newaliases pour g\u00e9n\u00e9rer le fichier.db utile \u00e0 Postfix et on demande \u00e0 Postfix de recharger ses fichiers. root@atom:~# newaliases oot@atom:~# service postfix reload root@atom:~# Test de l'envoi \u00e0 root pour v\u00e9rifier la redirection ericadmin@atom:~/bin$ mail root Cc: Subject: Essai 5 Essai 5 . ericadmin@atom:~/bin$ mailx \"/var/mail/ericadmin\": 4 messages 1 nouveau 3 non lus U 1 Eric Streit lun. nov. 26 09: 19/768 test du courrier 1 U 2 Eric Streit lun. nov. 26 09: 18/743 test du courrier 4 U 3 Eric Streit lun. nov. 26 09: 18/743 test du courrier 4 >N 4 Eric Streit lun. nov. 26 09: 14/456 Essai 5 ? Tout fonctionne: le message a bien \u00e9t\u00e9 redirig\u00e9 vers ericadmin comme sp\u00e9cifi\u00e9 dans /etc/aliases. Le fichier /etc/mailname Il contient le nom du serveur de courrier pour la machine, ici, c'est elle-m\u00eame: root@aijan:/home/ericadmin# cat /etc/mailname aijan.yojik.net Le serveur de courrier n'autorise que les utilisateurs (users) de la machine, ici, ericadmin et root (ainsi que les alias enregistr\u00e9s pr\u00e9c\u00e9demment). ericadmin@aijan:~$ mailx \"/var/mail/ericadmin\": 2 messages 2 nouveaux >N 1 Eric Streit dim. mai 20 08:4 17/698 essai d'envoi \u00e0 root N 2 Eric Streit dim. mai 20 08:5 17/717 un autre essai ? Pour l'envoi \u00e0 partir d'un poste ext\u00e9rieur, pensez \u00e0 utiliser l'adresse mail qui contient le nom complet de votre machine: toto@atom.yojik.net et non toto@yojik.net Les domaines ne sont pas encore configur\u00e9s dans postfix. L'envoi \u00e0 root et \u00e0 ericadmin \u00e0 partir d'un autre poste du r\u00e9seau fonctionne parfaitement: le mail \u00e0 destination de root est redirig\u00e9 vers ericadmin comme stipul\u00e9 dans /etc/aliases . Les messages sortants sont parfaitement g\u00e9r\u00e9s et re\u00e7us par les serveurs de courrier ext\u00e9rieurs.","title":"Installation d'un serveur de courrier basique"},{"location":"Installation-Serveur-Courrier-Basique/#installation-dun-serveur-de-courrier-basique","text":"Debian installe par d\u00e9faut exim4 . Nous allons le remplacer par postix (que nous \u00e9tendrons ensuite pour avoir un serveur de courrier complet.) Pensez \u00e0 ouvrir les ports 25 (IPV4 et IPV6) du firewall. apt install postfix On supprime compl\u00e8tement exim4 (fichiers de configuration): apt remove --purge exim4* On teste l'envoi de messages entrants et sortants apr\u00e8s avoir charg\u00e9 les programmes de mail utilitaires (sur le serveur et sur un autre poste): Chargement des utilitaires sur un poste ext\u00e9rieur. Ex\u00e9cutez la m\u00eame commande sur le poste serveur en cours de configuration. root@atom:~# apt install mailutils Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libmariadbclient18 libntlm0 libpython2.7 libpython2.7-minimal libpython2.7-stdlib mailutils-common mysql-common Paquets sugg\u00e9r\u00e9s : mailutils-mh mailutils-doc Les NOUVEAUX paquets suivants seront install\u00e9s : guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libmariadbclient18 libntlm0 libpython2.7 libpython2.7-minimal libpython2.7-stdlib mailutils mailutils-common mysql-common 0 mis \u00e0 jour, 15 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 9 575 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 39,0 Mo d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 libgc1c2 amd64 1:7.4.2-8 [208 kB] R\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libltdl7 amd64 2.4.6-2 [389 kB] R\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 guile-2.0-libs amd64 2.0.13+1-4 [2 232 kB] R\u00e9ception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 libfribidi0 amd64 0.19.7-1+b1 [45,7 kB] R\u00e9ception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 libntlm0 amd64 1.4-8 [20,9 kB] R\u00e9ception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 libgsasl7 amd64 1.8.0-8+b2 [207 kB] R\u00e9ception de:7 http://debian.mirrors.ovh.net/debian stretch/main amd64 libkyotocabinet16v5 amd64 1.2.76-4.2+b1 [298 kB] R\u00e9ception de:8 http://debian.mirrors.ovh.net/debian stretch/main amd64 mailutils-common all 1:3.1.1-1 [642 kB] R\u00e9ception de:9 http://debian.mirrors.ovh.net/debian stretch/main amd64 mysql-common all 5.8+1.0.2 [5 608 B] R\u00e9ception de:10 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmariadbclient18 amd64 10.1.26-0+deb9u1 [779 kB] R\u00e9ception de:11 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7-minimal amd64 2.7.13-2+deb9u2 [389 kB] R\u00e9ception de:12 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7-stdlib amd64 2.7.13-2+deb9u2 [1 896 kB] R\u00e9ception de:13 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7 amd64 2.7.13-2+deb9u2 [1 072 kB] R\u00e9ception de:14 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmailutils5 amd64 1:3.1.1-1 [817 kB] R\u00e9ception de:15 http://debian.mirrors.ovh.net/debian stretch/main amd64 mailutils amd64 1:3.1.1-1 [573 kB] 9 575 ko r\u00e9ceptionn\u00e9s en 0s (11,2 Mo/s) S\u00e9lection du paquet libgc1c2:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 22737 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../00-libgc1c2_1%3a7.4.2-8_amd64.deb ... D\u00e9paquetage de libgc1c2:amd64 (1:7.4.2-8) ... S\u00e9lection du paquet libltdl7:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../01-libltdl7_2.4.6-2_amd64.deb ... D\u00e9paquetage de libltdl7:amd64 (2.4.6-2) ... S\u00e9lection du paquet guile-2.0-libs:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../02-guile-2.0-libs_2.0.13+1-4_amd64.deb ... D\u00e9paquetage de guile-2.0-libs:amd64 (2.0.13+1-4) ... S\u00e9lection du paquet libfribidi0:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../03-libfribidi0_0.19.7-1+b1_amd64.deb ... D\u00e9paquetage de libfribidi0:amd64 (0.19.7-1+b1) ... S\u00e9lection du paquet libntlm0:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../04-libntlm0_1.4-8_amd64.deb ... D\u00e9paquetage de libntlm0:amd64 (1.4-8) ... S\u00e9lection du paquet libgsasl7 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../05-libgsasl7_1.8.0-8+b2_amd64.deb ... D\u00e9paquetage de libgsasl7 (1.8.0-8+b2) ... S\u00e9lection du paquet libkyotocabinet16v5:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../06-libkyotocabinet16v5_1.2.76-4.2+b1_amd64.deb ... D\u00e9paquetage de libkyotocabinet16v5:amd64 (1.2.76-4.2+b1) ... S\u00e9lection du paquet mailutils-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../07-mailutils-common_1%3a3.1.1-1_all.deb ... D\u00e9paquetage de mailutils-common (1:3.1.1-1) ... S\u00e9lection du paquet mysql-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../08-mysql-common_5.8+1.0.2_all.deb ... D\u00e9paquetage de mysql-common (5.8+1.0.2) ... S\u00e9lection du paquet libmariadbclient18:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../09-libmariadbclient18_10.1.26-0+deb9u1_amd64.deb ... D\u00e9paquetage de libmariadbclient18:amd64 (10.1.26-0+deb9u1) ... S\u00e9lection du paquet libpython2.7-minimal:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../10-libpython2.7-minimal_2.7.13-2+deb9u2_amd64.deb ... D\u00e9paquetage de libpython2.7-minimal:amd64 (2.7.13-2+deb9u2) ... S\u00e9lection du paquet libpython2.7-stdlib:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../11-libpython2.7-stdlib_2.7.13-2+deb9u2_amd64.deb ... D\u00e9paquetage de libpython2.7-stdlib:amd64 (2.7.13-2+deb9u2) ... S\u00e9lection du paquet libpython2.7:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../12-libpython2.7_2.7.13-2+deb9u2_amd64.deb ... D\u00e9paquetage de libpython2.7:amd64 (2.7.13-2+deb9u2) ... S\u00e9lection du paquet libmailutils5:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../13-libmailutils5_1%3a3.1.1-1_amd64.deb ... D\u00e9paquetage de libmailutils5:amd64 (1:3.1.1-1) ... S\u00e9lection du paquet mailutils pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../14-mailutils_1%3a3.1.1-1_amd64.deb ... D\u00e9paquetage de mailutils (1:3.1.1-1) ... Param\u00e9trage de mysql-common (5.8+1.0.2) ... update-alternatives: utilisation de \u00ab /etc/mysql/my.cnf.fallback \u00bb pour fournir \u00ab /etc/mysql/my.cnf \u00bb (my.cnf) en mode automatique Param\u00e9trage de libgc1c2:amd64 (1:7.4.2-8) ... Param\u00e9trage de libmariadbclient18:amd64 (10.1.26-0+deb9u1) ... Param\u00e9trage de libntlm0:amd64 (1.4-8) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ... Param\u00e9trage de libltdl7:amd64 (2.4.6-2) ... Param\u00e9trage de libfribidi0:amd64 (0.19.7-1+b1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de libpython2.7-minimal:amd64 (2.7.13-2+deb9u2) ... Param\u00e9trage de libkyotocabinet16v5:amd64 (1.2.76-4.2+b1) ... Param\u00e9trage de libpython2.7-stdlib:amd64 (2.7.13-2+deb9u2) ... Param\u00e9trage de mailutils-common (1:3.1.1-1) ... Param\u00e9trage de libgsasl7 (1.8.0-8+b2) ... Param\u00e9trage de guile-2.0-libs:amd64 (2.0.13+1-4) ... Param\u00e9trage de libpython2.7:amd64 (2.7.13-2+deb9u2) ... Param\u00e9trage de libmailutils5:amd64 (1:3.1.1-1) ... Param\u00e9trage de mailutils (1:3.1.1-1) ... update-alternatives: utilisation de \u00ab /usr/bin/frm.mailutils \u00bb pour fournir \u00ab /usr/bin/frm \u00bb (frm) en mode automatique update-alternatives: utilisation de \u00ab /usr/bin/from.mailutils \u00bb pour fournir \u00ab /usr/bin/from \u00bb (from) en mode automatique update-alternatives: utilisation de \u00ab /usr/bin/messages.mailutils \u00bb pour fournir \u00ab /usr/bin/messages \u00bb (messages) en mode automatique update-alternatives: utilisation de \u00ab /usr/bin/movemail.mailutils \u00bb pour fournir \u00ab /usr/bin/movemail \u00bb (movemail) en mode automatique update-alternatives: utilisation de \u00ab /usr/bin/readmsg.mailutils \u00bb pour fournir \u00ab /usr/bin/readmsg \u00bb (readmsg) en mode automatique update-alternatives: utilisation de \u00ab /usr/bin/dotlock.mailutils \u00bb pour fournir \u00ab /usr/bin/dotlock \u00bb (dotlock) en mode automatique update-alternatives: utilisation de \u00ab /usr/bin/mail.mailutils \u00bb pour fournir \u00ab /usr/bin/mailx \u00bb (mailx) en mode automatique Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ... root@atom:~#","title":"Installation d'un serveur de courrier basique"},{"location":"Installation-Serveur-Courrier-Basique/#test-denvoi-dun-utilisateur-du-serveur-a-lautre","text":"root -> ericadmin root@atom:/etc/fail2ban# mail ericadmin Cc: Subject: Essai 1 Essai 1 . ericadmin@atom:~/bin$ mailx \"/var/mail/ericadmin\": 1 message 1 nouveau >N 1 root lun. nov. 26 09: 14/451 Essai 1 ? 1 Return-Path: <root@atom.yojik.net> X-Original-To: ericadmin@atom.yojik.net Delivered-To: ericadmin@atom.yojik.net Received: by atom.yojik.net (Postfix, from userid 0) id 3AE0F460033; Mon, 26 Nov 2018 09:26:26 +0100 (CET) To: <ericadmin@atom.yojik.net> Subject: Essai 1 X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20181126082626.3AE0F460033@atom.yojik.net> Date: Mon, 26 Nov 2018 09:26:26 +0100 (CET) From: root@atom.yojik.net (root) Essai 1 . ? q 1 message sauvegard\u00e9 dans /home/ericadmin/mbox 0 message conserv\u00e9 dans /var/mail/ericadmin ericadmin -> root ericadmin@atom:~/bin$ mail root Cc: Subject: Essai 2 Essai 2 . root@atom:/etc/fail2ban# mailx \"/var/mail/root\": 1 message 1 nouveau >N 1 Eric Streit lun. nov. 26 09: 14/456 Essai 2 ? 1 Return-Path: <ericadmin@atom.yojik.net> X-Original-To: root@atom.yojik.net Delivered-To: root@atom.yojik.net Received: by atom.yojik.net (Postfix, from userid 1000) id 46220460036; Mon, 26 Nov 2018 09:27:04 +0100 (CET) To: <root@atom.yojik.net> Subject: Essai 2 X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20181126082704.46220460036@atom.yojik.net> Date: Mon, 26 Nov 2018 09:27:04 +0100 (CET) From: ericadmin@atom.yojik.net (Eric Streit) Essai 2 . L'envoi des messages entre utilisateurs du serveur marche comme il faut.","title":"Test d'envoi d'un utilisateur du serveur \u00e0 l'autre"},{"location":"Installation-Serveur-Courrier-Basique/#premiere-etape-de-configuration-de-postfix","text":"Modifiez la ligne suivante dans /etc/postfix/main.cf: mydestination = $myhostname, yojik.net, atom.yojik.net, localhost.yojik.net, localhost et relancez postfix avec: service postfix restart","title":"Premi\u00e8re \u00e9tape de configuration de postfix"},{"location":"Installation-Serveur-Courrier-Basique/#test-denvoi-de-messages-a-partir-de-ce-serveur-sur-mon-serveur-principal","text":"Envoi d'un message sur mon compte de messagerie en .eu: ericadmin@atom:~$ echo \"Et voil\u00e0 un petit message\" | mail -s \"test du courrier sortant\" ericadmin@yojik.eu Le message est bien re\u00e7u. V\u00e9rifiez dans le dossier spam : comme il n'y a aucune s\u00e9curisation du serveur de courrier (pour l'instant), gmail ou autre, soit refuse de courrier, soit le met dans les spams.","title":"Test d'envoi de messages \u00e0 partir de ce serveur sur mon serveur principal"},{"location":"Installation-Serveur-Courrier-Basique/#test-denvoi-de-messages-a-partir-dun-poste-exterieur","text":"Envoi d'un message \u00e0 partir du poste ext\u00e9rieur aldebaran (n'oubliez pas d'ouvrir le port 25 dans les r\u00e8gles iptables ...): eric@aldebaran:~$ echo \"Et voil\u00e0 un petit message\" | mail -s \"test du courrier 1\" ericadmin@atom.yojik.net Test de r\u00e9ception sur le serveur: ericadmin@atom:~$ mailx \"/var/mail/ericadmin\": 1 message 1 nouveau >N 1 Eric Streit dim. nov. 11 13: 16/724 test du courrier 1 ? 1 Return-Path: <eric@aldebaran.yojik.net> X-Original-To: ericadmin@atom.yojik.net Delivered-To: ericadmin@atom.yojik.net Received: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:e5c4:aee0:d068:64f6]) by atom.yojik.net (Postfix) with ESMTP id 0B3CF12085A for <ericadmin@atom.yojik.net>; Sun, 11 Nov 2018 13:09:08 +0100 (CET) Received: by aldebaran.yojik.net (Postfix, from userid 1000) id 40DF310CAC3; Sun, 11 Nov 2018 13:09:07 +0100 (CET) Subject: test du courrier 1 To: <ericadmin@atom.yojik.net> X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <20181111120907.40DF310CAC3@aldebaran.yojik.net> Date: Sun, 11 Nov 2018 13:09:07 +0100 (CET) From: eric@aldebaran.yojik.net (Eric Streit) Et voil\u00e0 un petit message ? q 1 message sauvegard\u00e9 dans /home/ericadmin/mbox 0 message conserv\u00e9 dans /var/mail/ericadmin Le message est bien re\u00e7u par le serveur de mail de yojik.net. Vous pouvez essayer aussi sur une adresse gmail par exemple.","title":"Test d'envoi de messages \u00e0 partir d'un poste ext\u00e9rieur"},{"location":"Installation-Serveur-Courrier-Basique/#mise-a-jour-du-fichier-etcaliases","text":"Ce fichier sert \u00e0 rediriger toutes les adresses \u00e9mail comme abuse , webmaster , root vers un utilisateur administrateur de la machine, root puis vers moi ericadmin # /etc/aliases mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root root: ericadmin Il faut lancer la commande newaliases pour g\u00e9n\u00e9rer le fichier.db utile \u00e0 Postfix et on demande \u00e0 Postfix de recharger ses fichiers. root@atom:~# newaliases oot@atom:~# service postfix reload root@atom:~#","title":"Mise \u00e0 jour du fichier /etc/aliases"},{"location":"Installation-Serveur-Courrier-Basique/#test-de-lenvoi-a-root-pour-verifier-la-redirection","text":"ericadmin@atom:~/bin$ mail root Cc: Subject: Essai 5 Essai 5 . ericadmin@atom:~/bin$ mailx \"/var/mail/ericadmin\": 4 messages 1 nouveau 3 non lus U 1 Eric Streit lun. nov. 26 09: 19/768 test du courrier 1 U 2 Eric Streit lun. nov. 26 09: 18/743 test du courrier 4 U 3 Eric Streit lun. nov. 26 09: 18/743 test du courrier 4 >N 4 Eric Streit lun. nov. 26 09: 14/456 Essai 5 ? Tout fonctionne: le message a bien \u00e9t\u00e9 redirig\u00e9 vers ericadmin comme sp\u00e9cifi\u00e9 dans /etc/aliases.","title":"Test de l'envoi \u00e0 root pour v\u00e9rifier la redirection"},{"location":"Installation-Serveur-Courrier-Basique/#le-fichier-etcmailname","text":"Il contient le nom du serveur de courrier pour la machine, ici, c'est elle-m\u00eame: root@aijan:/home/ericadmin# cat /etc/mailname aijan.yojik.net Le serveur de courrier n'autorise que les utilisateurs (users) de la machine, ici, ericadmin et root (ainsi que les alias enregistr\u00e9s pr\u00e9c\u00e9demment). ericadmin@aijan:~$ mailx \"/var/mail/ericadmin\": 2 messages 2 nouveaux >N 1 Eric Streit dim. mai 20 08:4 17/698 essai d'envoi \u00e0 root N 2 Eric Streit dim. mai 20 08:5 17/717 un autre essai ? Pour l'envoi \u00e0 partir d'un poste ext\u00e9rieur, pensez \u00e0 utiliser l'adresse mail qui contient le nom complet de votre machine: toto@atom.yojik.net et non toto@yojik.net Les domaines ne sont pas encore configur\u00e9s dans postfix. L'envoi \u00e0 root et \u00e0 ericadmin \u00e0 partir d'un autre poste du r\u00e9seau fonctionne parfaitement: le mail \u00e0 destination de root est redirig\u00e9 vers ericadmin comme stipul\u00e9 dans /etc/aliases . Les messages sortants sont parfaitement g\u00e9r\u00e9s et re\u00e7us par les serveurs de courrier ext\u00e9rieurs.","title":"Le fichier /etc/mailname"},{"location":"Installation-Serveur-DNS/","text":"Installation du serveur DNS Nous allons installer bind . root@aijan:/home/ericadmin# apt install bind9 Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: bind9utils libirs141 etc ... root@aijan:/home/ericadmin# service bind9 start root@aijan:/home/ericadmin# netstat -tlpn Connexions Internet actives (seulement serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 13815/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 13815/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 594/sshd tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 13815/named tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 803/master tcp6 0 0 :::53 :::* LISTEN 13815/named tcp6 0 0 :::22 :::* LISTEN 594/sshd tcp6 0 0 ::1:953 :::* LISTEN 13815/named tcp6 0 0 :::25 :::* LISTEN 803/master root@aijan:/home/ericadmin# Bien, bind a d\u00e9marr\u00e9 et \u00e9coute sur les ports 53 et 953, en IPV4 et IPV6. Il nous reste \u00e0 configurer les zones et \u00e0 ouvrir les ports (firewall). Je vais utiliser comme serveur dns secondaire pour la zone yojik.net le serveur que j'utilise d\u00e9j\u00e0 pour la zone yojik.eu . Nous configurerons le serveur dns local pour qu'il transf\u00e8re les zones automatiquement vers notre serveur dns secondaire. Voil\u00e0 la structure g\u00e9n\u00e9rale de mes serveurs DNS: adara.yojik.eu: serveur DNS primaire pour le domaine yojik.eu polis.yojik.eu: serveur DNS secondaire pour le domaine yojik.eu serveur DNS secondaire pour le domaine yojik.net aijan.yojik.net: serveur DNS primaire pour le site yojik.net Ce dernier serveur d\u00e9clarera l'ensemble des machines et serveurs du domaine yojik.net. (ce sont les machines de bureau/portables ainsi que le serveurs h\u00e9berg\u00e9s \u00e0 la maison.) Les enregistrements glue seront renseign\u00e9s chez mon registrar (OVH dans mon cas). Les serveurs DNS seront \u00e9galement d\u00e9clar\u00e9s chez ce registrar. Notre zone yojik.net est d\u00e9clar\u00e9e dans le fichier /etc/bind/named.conf.local . (en faire une copie de sauvegarde!) Voici son contenu avant modification: // // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include \"/etc/bind/zones.rfc1918\"; Contenu apr\u00e8s ajout de la zone yojik.net: zone \"yojik.net\" { type master; file \"/etc/bind/db.yojik.net\"; }; Dans tous les tutorials, vous verrez la d\u00e9claration des zones inverses: apr\u00e8s de nombreux \u00e9changes avec des sp\u00e9cialistes, il s'av\u00e8re que ce n'est pas n\u00e9cessaire, car mes serveurs DNS ne seront jamais interrog\u00e9s pour la r\u00e9solution inverse: pour cela, il faudrait que mon registrar me d\u00e9l\u00e8gue la gestion de la zone. Je n'ai qu'une adresse IPV4 associ\u00e9e \u00e0 ce domaine et pas de d\u00e9l\u00e9gation. Cr\u00e9ation du fichier de zone db.yojik.net dans le r\u00e9pertoire /etc/bind . root@aijan:/etc/bind# vim db.yojik.net root@aijan:/etc/bind# cat db.yojik.net $TTL 86400 $ORIGIN yojik.net. @ IN SOA aijan.yojik.net. hostmaster.yojik.net. ( 2018052001 ; serial \u00e0 changer \u00e0 chaque modification 7200 ; refresh, 12h 3600 ; retry, 1h 1209600 ; expire 86400 ) ; negative cache, 24h ; nameservers IN NS aijan.yojik.net. IN NS polis.yojik.eu. ;mail server IN MX 10 aijan.yojik.net. ; domain hosts yojik.net. IN A 82.64.48.5 yojik.net. IN AAAA 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 aijan IN A 82.64.48.5 aijan IN AAAA 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 On relance bind et on teste en local: root@aijan:/home/ericadmin# service bind9 restart root@aijan:/home/ericadmin# nslookup aijan.yojik.net localhost Server: localhost Address: ::1#53 Name: aijan.yojik.net Address: 82.64.48.5 root@aijan:/home/ericadmin# \u00c7a marche! Test de notre enregistrement MX (mail) avec dig : root@aijan:/etc/bind# dig @localhost aijan.yojik.net MX ; <> DiG 9.10.3-P4-Debian <> @localhost aijan.yojik.net MX ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21275 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;aijan.yojik.net. IN MX ;; AUTHORITY SECTION: yojik.net. 86400 IN SOA aijan.yojik.net. hostmaster.yojik.net. 2018052003 7200 3600 1209600 86400 ;; Query time: 0 msec ;; SERVER: ::1#53(::1) ;; WHEN: Sun May 20 10:27:17 CEST 2018 ;; MSG SIZE rcvd: 91 Il nous reste plusieurs \u00e9l\u00e9ments \u00e0 configurer pour que notre serveur dns soit pris en compte. Configurer notre box pour rediriger les requ\u00eates ext\u00e9rieures DNS sur notre serveur DNS personnel. Mettre \u00e0 jour la configuration de nos enregistrements chez notre registrar. Ajouter notre zone \u00e0 notre serveur DNS secondaire (polis.yojik.eu) et mise \u00e0 jour de la clef de connexion. Fichier /etc/bind/conf.named.local zone \"yojik.eu\" { type slave; file \"db.yojik.eu.local\"; masters { 91.121.72.10; }; }; zone \"yojik.net\" { type slave; file \"db.yojik.net.local\"; masters { 82.64.48.5; }; }; Configuration des options: fichier /etc/bind/named.conf.options options { directory \"/var/cache/bind\"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // forwarders { // 0.0.0.0; // }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; listen-on { any; }; allow-update { none; }; allow-recursion { 127.0.0.1; ::1; 91.121.72.10;2001:41d0:1:7d0a::1; 37.187.3.182; 2001:41d0:a:3b6::1; }; allow-transfer { 37.187.3.182; 2001:41d0:a:3b6::1; }; version \"BIND\"; }; Pensez \u00e0 v\u00e9rifier que la clef situ\u00e9e dans le fichier: /etc/bind/rndc.key est identique sur votre serveur primaire et secondaire. Configuration de votre box et des enregistrements de votre registrar Cela \u00e9tant tr\u00e8s d\u00e9pendant de chaque registrar et de chaque box , je vous laisse chercher sur le net les informations utiles. Sachez tout de m\u00eame que peu de fournisseurs d'internet autorisent l'installation d'un serveur \u00e9mail personnel. I8l vous faudra souvent attendre un peu avant que la configuration ne soit prise en compte chez votre registrar. V\u00e9rification de la config DNS: Allez sur le site toolbox pour tester votre configuration. Configuration du reverse DNS Si vous h\u00e9bergez votre serveur chez vous , vous devrez configurer le reverse DNS dans la page d'administration de votre ligne Internet. Pour le FAI Free, allez sur la page: \"Personnalisez mon reverse DNS\", et mettez votre nom de doamine dans le champ ad\u00e9quat. Il faut quelques heures pour que la propagation se fasse.","title":"Installation du serveur DNS"},{"location":"Installation-Serveur-DNS/#installation-du-serveur-dns","text":"Nous allons installer bind . root@aijan:/home/ericadmin# apt install bind9 Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: bind9utils libirs141 etc ... root@aijan:/home/ericadmin# service bind9 start root@aijan:/home/ericadmin# netstat -tlpn Connexions Internet actives (seulement serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 13815/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 13815/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 594/sshd tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 13815/named tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 803/master tcp6 0 0 :::53 :::* LISTEN 13815/named tcp6 0 0 :::22 :::* LISTEN 594/sshd tcp6 0 0 ::1:953 :::* LISTEN 13815/named tcp6 0 0 :::25 :::* LISTEN 803/master root@aijan:/home/ericadmin# Bien, bind a d\u00e9marr\u00e9 et \u00e9coute sur les ports 53 et 953, en IPV4 et IPV6. Il nous reste \u00e0 configurer les zones et \u00e0 ouvrir les ports (firewall). Je vais utiliser comme serveur dns secondaire pour la zone yojik.net le serveur que j'utilise d\u00e9j\u00e0 pour la zone yojik.eu . Nous configurerons le serveur dns local pour qu'il transf\u00e8re les zones automatiquement vers notre serveur dns secondaire. Voil\u00e0 la structure g\u00e9n\u00e9rale de mes serveurs DNS: adara.yojik.eu: serveur DNS primaire pour le domaine yojik.eu polis.yojik.eu: serveur DNS secondaire pour le domaine yojik.eu serveur DNS secondaire pour le domaine yojik.net aijan.yojik.net: serveur DNS primaire pour le site yojik.net Ce dernier serveur d\u00e9clarera l'ensemble des machines et serveurs du domaine yojik.net. (ce sont les machines de bureau/portables ainsi que le serveurs h\u00e9berg\u00e9s \u00e0 la maison.) Les enregistrements glue seront renseign\u00e9s chez mon registrar (OVH dans mon cas). Les serveurs DNS seront \u00e9galement d\u00e9clar\u00e9s chez ce registrar. Notre zone yojik.net est d\u00e9clar\u00e9e dans le fichier /etc/bind/named.conf.local . (en faire une copie de sauvegarde!) Voici son contenu avant modification: // // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include \"/etc/bind/zones.rfc1918\"; Contenu apr\u00e8s ajout de la zone yojik.net: zone \"yojik.net\" { type master; file \"/etc/bind/db.yojik.net\"; }; Dans tous les tutorials, vous verrez la d\u00e9claration des zones inverses: apr\u00e8s de nombreux \u00e9changes avec des sp\u00e9cialistes, il s'av\u00e8re que ce n'est pas n\u00e9cessaire, car mes serveurs DNS ne seront jamais interrog\u00e9s pour la r\u00e9solution inverse: pour cela, il faudrait que mon registrar me d\u00e9l\u00e8gue la gestion de la zone. Je n'ai qu'une adresse IPV4 associ\u00e9e \u00e0 ce domaine et pas de d\u00e9l\u00e9gation. Cr\u00e9ation du fichier de zone db.yojik.net dans le r\u00e9pertoire /etc/bind . root@aijan:/etc/bind# vim db.yojik.net root@aijan:/etc/bind# cat db.yojik.net $TTL 86400 $ORIGIN yojik.net. @ IN SOA aijan.yojik.net. hostmaster.yojik.net. ( 2018052001 ; serial \u00e0 changer \u00e0 chaque modification 7200 ; refresh, 12h 3600 ; retry, 1h 1209600 ; expire 86400 ) ; negative cache, 24h ; nameservers IN NS aijan.yojik.net. IN NS polis.yojik.eu. ;mail server IN MX 10 aijan.yojik.net. ; domain hosts yojik.net. IN A 82.64.48.5 yojik.net. IN AAAA 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 aijan IN A 82.64.48.5 aijan IN AAAA 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 On relance bind et on teste en local: root@aijan:/home/ericadmin# service bind9 restart root@aijan:/home/ericadmin# nslookup aijan.yojik.net localhost Server: localhost Address: ::1#53 Name: aijan.yojik.net Address: 82.64.48.5 root@aijan:/home/ericadmin# \u00c7a marche! Test de notre enregistrement MX (mail) avec dig : root@aijan:/etc/bind# dig @localhost aijan.yojik.net MX ; <> DiG 9.10.3-P4-Debian <> @localhost aijan.yojik.net MX ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21275 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;aijan.yojik.net. IN MX ;; AUTHORITY SECTION: yojik.net. 86400 IN SOA aijan.yojik.net. hostmaster.yojik.net. 2018052003 7200 3600 1209600 86400 ;; Query time: 0 msec ;; SERVER: ::1#53(::1) ;; WHEN: Sun May 20 10:27:17 CEST 2018 ;; MSG SIZE rcvd: 91 Il nous reste plusieurs \u00e9l\u00e9ments \u00e0 configurer pour que notre serveur dns soit pris en compte. Configurer notre box pour rediriger les requ\u00eates ext\u00e9rieures DNS sur notre serveur DNS personnel. Mettre \u00e0 jour la configuration de nos enregistrements chez notre registrar. Ajouter notre zone \u00e0 notre serveur DNS secondaire (polis.yojik.eu) et mise \u00e0 jour de la clef de connexion. Fichier /etc/bind/conf.named.local zone \"yojik.eu\" { type slave; file \"db.yojik.eu.local\"; masters { 91.121.72.10; }; }; zone \"yojik.net\" { type slave; file \"db.yojik.net.local\"; masters { 82.64.48.5; }; };","title":"Installation du serveur DNS"},{"location":"Installation-Serveur-DNS/#configuration-des-options-fichier-etcbindnamedconfoptions","text":"options { directory \"/var/cache/bind\"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // forwarders { // 0.0.0.0; // }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; listen-on { any; }; allow-update { none; }; allow-recursion { 127.0.0.1; ::1; 91.121.72.10;2001:41d0:1:7d0a::1; 37.187.3.182; 2001:41d0:a:3b6::1; }; allow-transfer { 37.187.3.182; 2001:41d0:a:3b6::1; }; version \"BIND\"; }; Pensez \u00e0 v\u00e9rifier que la clef situ\u00e9e dans le fichier: /etc/bind/rndc.key est identique sur votre serveur primaire et secondaire.","title":"Configuration des options: fichier /etc/bind/named.conf.options"},{"location":"Installation-Serveur-DNS/#configuration-de-votre-box-et-des-enregistrements-de-votre-registrar","text":"Cela \u00e9tant tr\u00e8s d\u00e9pendant de chaque registrar et de chaque box , je vous laisse chercher sur le net les informations utiles. Sachez tout de m\u00eame que peu de fournisseurs d'internet autorisent l'installation d'un serveur \u00e9mail personnel. I8l vous faudra souvent attendre un peu avant que la configuration ne soit prise en compte chez votre registrar.","title":"Configuration de votre box et des enregistrements de votre registrar"},{"location":"Installation-Serveur-DNS/#verification-de-la-config-dns","text":"Allez sur le site toolbox pour tester votre configuration.","title":"V\u00e9rification de la config DNS:"},{"location":"Installation-Serveur-DNS/#configuration-du-reverse-dns","text":"Si vous h\u00e9bergez votre serveur chez vous , vous devrez configurer le reverse DNS dans la page d'administration de votre ligne Internet. Pour le FAI Free, allez sur la page: \"Personnalisez mon reverse DNS\", et mettez votre nom de doamine dans le champ ad\u00e9quat. Il faut quelques heures pour que la propagation se fasse.","title":"Configuration du reverse DNS"},{"location":"Installation-Serveur-Git/","text":"Installation de git Il y a plusieurs fa\u00e7ons d'installer un serveur git sur notre serveur. Nous allons essayer plusieurs solutions, d'une solution compl\u00e8tement basique sans serveur graphique, suivie de solutions graphiques avec plus ou moins de capacit\u00e9s (suivi de tickets, wiki, gestion des utilisateurs, int\u00e9gration continue. Apr\u00e8s avoir lu le git-book ainsi que de nombreux tutoriaux, je me rend compte que cette partie est vraiment incompl\u00e8te et ne parle pas des diff\u00e9rents protocoles utilisables, ainsi que leurs caract\u00e9ristiques. Certains permettent l'authentification, d'autres non et reposent sur les restrictions du syst\u00e8me sur lequel est install\u00e9 le serveur. Les diff\u00e9rents protocoles Installation d'un serveur git avec le protocole local Installation d'un serveur git avec le protocole http basique Installation d'un serveur git avec le protocole http \u00e9volu\u00e9 Installation d'un serveur git avec le protocole git Installation d'un serveur git basique (mais parfaitement fonctionnel :) ) Installation de git premi\u00e8re version root@atom:/home/ericadmin# apt install git Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: git-man Paquets sugg\u00e9r\u00e9s : git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn Les NOUVEAUX paquets suivants seront install\u00e9s : git git-man 0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 0 o/6 311 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 34,8 Mo d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o S\u00e9lection du paquet git-man pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 39220 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../git-man_1%3a2.11.0-3+deb9u4_all.deb ... D\u00e9paquetage de git-man (1:2.11.0-3+deb9u4) ... S\u00e9lection du paquet git pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../git_1%3a2.11.0-3+deb9u4_i386.deb ... D\u00e9paquetage de git (1:2.11.0-3+deb9u4) ... Param\u00e9trage de git-man (1:2.11.0-3+deb9u4) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de git (1:2.11.0-3+deb9u4) ... root@atom:/home/ericadmin# mc Installation de l'utilisateur git et du groupe git root@atom:/home/ericadmin# adduser git Ajout de l'utilisateur \u00ab git \u00bb ... Ajout du nouveau groupe \u00ab git \u00bb (1001) ... Ajout du nouvel utilisateur \u00ab git \u00bb (1001) avec le groupe \u00ab git \u00bb ... Cr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/git \u00bb... Copie des fichiers depuis \u00ab /etc/skel \u00bb... Entrez le nouveau mot de passe UNIX : Retapez le nouveau mot de passe UNIX : passwd: password updated successfully Changing the user information for git Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Cette information est-elle correcte ? [O/n]o root@atom:/home/ericadmin# Un r\u00e9pertoire /home/git a \u00e9t\u00e9 cr\u00e9\u00e9 ainsi que le groupe git et l'utilisateur git, avec son mot de passe que vous avez saisi dans l'\u00e9tape ci-dessus. Copie de la clef ssh pour un acc\u00e8s sans mot de passe. Pour cela, il faut ajouter l'utilisateur git dans le fichier de configuration de sshd . Modifiez la ligne qui contient AllowUsers pour obtenir ceci: AllowUsers ericadmin git Rechargez sshd en lan\u00e7ant: service sshd restart Copie de votre clef sur le serveur: dans un premier temps, il faut remettre la configuration d'origine de sshd . Pour cela, copiez cotre fichier actuel en sshd_config.n. Copiez le fichier /etc/ssh/sshd_config.orig en /etc/ssh/sshd_config et relancez sshd avec service sshd restart. service sshd restart Vous devez pouvoir vous connecter sur le compte git en tapant ceci: eric@aldebaran:~$ ssh git@atom git@atom's password: Linux atom 4.9.0-8-686-pae #1 SMP Debian 4.9.130-2 (2018-10-27) i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. git@atom:~$ D\u00e9connectez-vous en tapant Ctrl D et copiez votre clef sur le serveur: eric@aldebaran:~$ ssh-copy-id git@atom /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 2 key(s) remain to be installed -- if you are prompted now it is to install the new keys git@atom's password: Number of key(s) added: 2 Now try logging into the machine, with: \"ssh 'git@atom'\" and check to make sure that only the key(s) you wanted were added. eric@aldebaran:~$ Testez avec la commande fournie: eric@aldebaran:~$ ssh 'git@atom' Linux atom 4.9.0-8-686-pae #1 SMP Debian 4.9.130-2 (2018-10-27) i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun Dec 30 09:40:18 2018 from 192.168.111.150 git@atom:~$ Vous avez pu vous connecter sans taper votre mot de passe. D\u00e9connectez-vous \u00e0 nouveau (Ctrl D) Remettez le fichier sshd_config (qui contient le AllowUsers que nous avons configur\u00e9 auparavant). Test: eric@aldebaran:~$ ssh 'git@atom' Last login: Sun Dec 30 09:45:36 2018 from 192.168.111.150 git@atom:~$ \u00c7a marche. Nous avons un acc\u00e8s \u00e0 notre compte git sans mot de passe, par \u00e9change de clefs, et avons bloqu\u00e9 l'acc\u00e8s par mot de passe, comme pour notre utilisateur d'administration ericadmin . Cr\u00e9ation d'un r\u00e9pertoire qui va contenir nos d\u00e9pots git On se connecte sous l'utilisateur git et on cr\u00e9e un r\u00e9pertoire Repos (Choisissez le nom que vous voulez ...) eric@aldebaran:~$ ssh 'git@atom' Last login: Sun Dec 30 09:48:14 2018 from 192.168.111.150 git@atom:~$ mkdir Repos git@atom:~$ ls Repos git@atom:~$ Voil\u00e0, le r\u00e9pertoire est cr\u00e9\u00e9. Cr\u00e9ation d'un premier d\u00e9pot sur le serveur La commande git init --bare permet la cr\u00e9ation, d'un d\u00e9pot qui ne contient que les donn\u00e9es git sans les sources/documents. git@atom:~$ cd Repos/ git@atom:~/Repos$ mkdir Essai1.git git@atom:~/Repos$ cd Essai1.git/ git@atom:~/Repos/Essai1.git$ git init --bare D\u00e9p\u00f4t Git vide initialis\u00e9 dans /home/git/Repos/Essai1.git/ git@atom:~/Repos/Essai1.git$ Cr\u00e9ation d'un projet sur la machine locale (pour moi dans le r\u00e9pertoire /home/eric/Devs) eric@aldebaran:~/Devs$ mkdir Essai1 eric@aldebaran:~/Devs$ cd Essai1/ eric@aldebaran:~/Devs/Essai1$ git init D\u00e9p\u00f4t Git vide initialis\u00e9 dans /home/eric/Devs/Essai1/.git/ eric@aldebaran:~/Devs/Essai1$ ls -al total 12 drwxr-xr-x 3 eric eric 4096 d\u00e9c. 30 10:01 . drwxr-xr-x 18 eric eric 4096 d\u00e9c. 30 10:00 .. drwxr-xr-x 7 eric eric 4096 d\u00e9c. 30 10:01 .git eric@aldebaran:~/Devs/Essai1$ Le r\u00e9pertoire de notre projet est vide, nous venons de le cr\u00e9er. Ajoutons un premier fichier README.md avec un contenu quelconque au projet. eric@aldebaran:~/Devs/Essai1$ touch README.md eric@aldebaran:~/Devs/Essai1$ ls README.md eric@aldebaran:~/Devs/Essai1$ echo \"Un premier fichier\" > README.md eric@aldebaran:~/Devs/Essai1$ cat README.md Un premier fichier eric@aldebaran:~/Devs/Essai1$ Ajoutons-le \u00e0 la base git eric@aldebaran:~/Devs/Essai1$ git add . eric@aldebaran:~/Devs/Essai1$ git commit -m \"mon premier commit\" [master (commit racine) bc25e5b] mon premier commit 1 file changed, 1 insertion(+) create mode 100644 README.md eric@aldebaran:~/Devs/Essai1$ git status Sur la branche master rien \u00e0 valider, la copie de travail est propre eric@aldebaran:~/Devs/Essai1$ Notre fichier a \u00e9t\u00e9 ajout\u00e9 \u00e0 notre base git locale. Nous allons ajouter le d\u00e9pot distant situ\u00e9 sur notre serveur. eric@aldebaran:~/Devs/Essai1$ git remote add origin ssh://git@atom.yojik.net:Repos/Essai1.git eric@aldebaran:~/Devs/Essai1$ git remote origin eric@aldebaran:~/Devs/Essai1$ git remote -v origin ssh://git@atom/Repos/Essai1.git (fetch) origin ssh://git@atom/Repos/Essai1.git (push) eric@aldebaran:~/Devs/Essai1$ J'ai ajout\u00e9 les commandes de v\u00e9rification. Nous allons pousser notre projet sur le serveur. eric@aldebaran:~/Devs/Essai1$ git push origin master D\u00e9compte des objets: 3, fait. \u00c9criture des objets: 100% (3/3), 220 bytes | 0 bytes/s, fait. Total 3 (delta 0), reused 0 (delta 0) To atom.yojik.net:Repos/Essai1.git - [new branch] master -> master Tests suivants: Effacement des projets sur notre machine locale et clonage de notre d\u00e9p\u00f4t distant, avec le protocole git ainsi qu'avec le protocole https : Protocole git : eric@aldebaran:~/Devs$ git clone git@atom.yojik.net:Repos/Essai1.git Essai1 Clonage dans 'Essai1'... remote: D\u00e9compte des objets: 3, fait. remote: Total 3 (delta 0), reused 0 (delta 0) R\u00e9ception d'objets: 100% (3/3), fait. eric@aldebaran:~/Devs$ cd Essai1/ eric@aldebaran:~/Devs/Essai1$ ls README.md eric@aldebaran:~/Devs/Essai1$ cat README.md Essai2 eric@aldebaran:~/Devs/Essai1$ echo \" d'un deuxi\u00e8me poussage\" >> README.md eric@aldebaran:~/Devs/Essai1$ cat README.md Essai2 d'un deuxi\u00e8me poussage eric@aldebaran:~/Devs/Essai1$ git add . eric@aldebaran:~/Devs/Essai1$ git commit -m \"2\u00e8me poussage\" [master 4edff63] 2\u00e8me poussage 1 file changed, 1 insertion(+) eric@aldebaran:~/Devs/Essai1$ git push origin master D\u00e9compte des objets: 3, fait. \u00c9criture des objets: 100% (3/3), 280 bytes | 0 bytes/s, fait. Total 3 (delta 0), reused 0 (delta 0) To atom.yojik.net:Repos/Essai1.git e9cd815..4edff63 master -> master eric@aldebaran:~/Devs/Essai1$ Protocole https : Essai de clonage du d\u00e9pot git contenant les sources de ce tutorial avec la commande suivante; vous noterez que les sources du d\u00e9pot sont l\u00e9g\u00e8rement diff\u00e9rentes, suite \u00e0 l'installation de gogs , mais le principe est le m\u00eame. git clone https://git.yojik.net/eric/InstallationServeur.git eric@aldebaran:~/temp$ git clone https://git.yojik.net/eric/InstallationServeur.git Clonage dans 'InstallationServeur'... remote: D\u00e9compte des objets: 431, fait. remote: Compression des objets: 100% (357/357), fait. remote: Total 431 (delta 145), reused 252 (delta 30) R\u00e9ception d'objets: 100% (431/431), 4.74 MiB | 6.37 MiB/s, fait. R\u00e9solution des deltas: 100% (145/145), fait. eric@aldebaran:~/temp$ Voil\u00e0, la configuration d'un serveur git de base est effectu\u00e9e; il nous faut bien s\u00fbr nous loguer sur le serveur pour cr\u00e9er un d\u00e9pot avant de l'utiliser. Des programmes, souvent graphiques d'ailleurs, permettent de cr\u00e9er les d\u00e9pots \u00e0 partir d'une interface web . Nous allons en voir quelques uns en commen\u00e7ant par le serveur graphique fourni avec git , appel\u00e9 gitweb . Installation et configuration de gitweb Installation root@atom:/home/ericadmin# apt install gitweb Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl Paquets sugg\u00e9r\u00e9s : git-doc libdata-dump-perl Les NOUVEAUX paquets suivants seront install\u00e9s : gitweb libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl 0 mis \u00e0 jour, 6 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 1 067 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 1 605 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 libhtml-tagset-perl all 3.20-3 [12,7 kB] R\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 libhtml-parser-perl i386 3.72-3 [105 kB] R\u00e9ception de:3 http://deb.debian.org/debian stretch/main i386 libcgi-pm-perl all 4.35-1 [222 kB] R\u00e9ception de:4 http://deb.debian.org/debian stretch/main i386 gitweb all 1:2.11.0-3+deb9u4 [676 kB] R\u00e9ception de:5 http://deb.debian.org/debian stretch/main i386 libfcgi-perl i386 0.78-2 [40,2 kB] R\u00e9ception de:6 http://deb.debian.org/debian stretch/main i386 libcgi-fast-perl all 1:2.12-1 [11,2 kB] 1 067 ko r\u00e9ceptionn\u00e9s en 0s (6 128 ko/s) etc... root@atom:/home/ericadmin# Configuration de gitweb La seule chose \u00e0 configurer pour une utilisation basique est le fichier /etc/gitweb.conf. En faire une copie avant modification et modifiez la ligne suivante pour obtenir ce qui suit: $projectroot = \"/home/git/Repos\"; C'est la racine de nos d\u00e9pots. Activez le module cgi dans apache et rechargez la configuration de apache : root@atom:/home/ericadmin# a2enmod cgi Enabling module cgi. To activate the new configuration, you need to run: systemctl restart apache2 root@atom:/home/ericadmin# systemctl restart apache2 Vous pouvez acc\u00e9der directement \u00e0 l'interface graphique avec l'url suivante: atom.yojik.net/gitweb. Pour \u00eatre honn\u00eate, je ne vois pas vraiment l'int\u00e9r\u00eat de cette interface, \u00e0 part visualiser les projets sur le serveur. Je n'ai pas trouv\u00e9 s'il est possible de t\u00e9l\u00e9charger une archive du projet, s'il est possible de cr\u00e9er un projet, pas plus que je n'ai vu la possibilit\u00e9 de g\u00e9rer des utilisateurs. Il faudra approfondir la question ... L'utilisation de l'url par d\u00e9faut n'est pas s\u00e9curis\u00e9e non plus (pas de https). Installation de gogs Nous allons installer un serveur git sur notre petit serveur. Gogs est un serveur git \u00e9crit en go . Nous allons l'installer progressivement, en ajoutant ensuite le d\u00e9marrage par un service, et l'acc\u00e8s sur un port standard servi par apache et redirig\u00e9 vers le port 3000 servi par gogs . Nous allons reprendre une installation \u00e0 partir du d\u00e9but (avec l'installation de git etc ...) Je me suis inspir\u00e9 de la documentation officielle ainsi que de ce tutorial: # How to Install Gogs Go Git Service on Ubuntu 16.04 Commen\u00e7ons par installer git , si nous ne l'avons pas encore fait auparavant. Installation de git (r\u00e9p\u00e9tition) root@atom:~# apt-get install git etc ... root@atom:~# Cr\u00e9ation de l'utilisateur git au sein du syst\u00e8me commande adduser root@atom:/home/ericadmin# adduser --disabled-login --gecos 'Gogs' git Ajout de l'utilisateur \u00ab git \u00bb ... Ajout du nouveau groupe \u00ab git \u00bb (1001) ... Ajout du nouvel utilisateur \u00ab git \u00bb (1001) avec le groupe \u00ab git \u00bb ... Cr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/git \u00bb... Copie des fichiers depuis \u00ab /etc/skel \u00bb... root@atom:/home/ericadmin# Installation de la base de donn\u00e9es Postgresql Nous aurions pu utiliser \u00e0 la place de Postgresql , mysql ou sqlite3 . root@atom:/home/ericadmin# apt install -y postgresql postgresql-client libpq-dev etc... root@atom:/home/ericadmin# Lancement du serveur Postgresql et configuration pour un lancement automatique au d\u00e9marrage de la machine: root@atom:/home/ericadmin# systemctl start postgresql root@atom:/home/ericadmin# systemctl enable postgresql Synchronizing state of postgresql.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable postgresql root@atom:/home/ericadmin# Nous allons nous connecter sous le user postgres pour configurer notre serveur de base de donn\u00e9es et cr\u00e9er la base initiale pour gogs , ainsi que l'utilisateur gogs . Voici les donn\u00e9es que nous allons utiliser: gestionnaire principal de la base de donn\u00e9es postgres: postgres mot de passe correspondant : **** utilisateur de la base de donn\u00e9es postgres: git mot de passe de l'utlisateur git dans postgres: **** base de donn\u00e9es postgres, appartenant \u00e0 l'utilisateur git de postgres: gogsdb root@atom:/home/ericadmin# su - postgres postgres@atom:~$ Nous allons lancer le shell postgres qui nous permettra de configurer notre base: postgres@atom:~$ psql psql (9.6.10) Saisissez \u00ab help \u00bb pour l'aide. postgres=# Cr\u00e9ation de l'utilisateur git ainsi que le mot de passe pour cet utilisateur: postgres=# CREATE USER git CREATEDB; CREATE ROLE postgres=# \\password git Saisissez le nouveau mot de passe : **** Saisissez-le \u00e0 nouveau : **** postgres=# Remplacez bien s\u00fbr les **** par un vrai mot de passe et notez le bien soigneusement. Cr\u00e9ation de la base de donn\u00e9e et v\u00e9rification: postgres=# CREATE DATABASE gogsdb OWNER git; CREATE DATABASE postgres=# \\du Liste des r\u00f4les Nom du r\u00f4le | Attributs | Membre de -------------+---------------------------------------------------------------------------------+----------- git | Cr\u00e9er une base | {} postgres | Superutilisateur, Cr\u00e9er un r\u00f4le, Cr\u00e9er une base, R\u00e9plication, Contournement RLS | {} postgres=# \\l Liste des bases de donn\u00e9es Nom | Propri\u00e9taire | Encodage | Collationnement | Type caract. | Droits d'acc\u00e8s -----------+--------------+----------+-----------------+--------------+----------------------- gogsdb | git | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | postgres | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 lignes) postgres=# Voil\u00e0, nous avons install\u00e9 le serveur de base de donn\u00e9es (postgres), la base de donn\u00e9es n\u00e9cessaire \u00e0 gogs (gogsdb), ainsi que l'utilisateur git (au sein de la base de donn\u00e9es) qui pourra g\u00e9rer les donn\u00e9es de gogs . Cr\u00e9ation d'un r\u00e9pertoire r\u00e9serv\u00e9 au binaire gogs appartenant \u00e0 l'utilisateur git root@atom:/home/ericadmin# su - git git@atom:~$ mkdir -p /home/git/bin git@atom:~$ T\u00e9l\u00e9chargement du binaire gogs dans notre r\u00e9pertoire nouvellement cr\u00e9\u00e9 git@atom:~$ cd bin git@atom:~/bin$ wget https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz --2018-11-29 14:12:26-- https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz R\u00e9solution de dl.gogs.io (dl.gogs.io)\u2026 68.183.105.37 Connexion \u00e0 dl.gogs.io (dl.gogs.io)|68.183.105.37|:443\u2026 connect\u00e9. requ\u00eate HTTP transmise, en attente de la r\u00e9ponse\u2026 200 OK Taille : 20296268 (19M) [application/x-gzip] Sauvegarde en : \u00ab gogs_0.11.66_linux_386.tar.gz \u00bb gogs_0.11.66_linux_386.tar.gz 100%[====================================================================>] 19,36M 6,65MB/s in 2,9s 2018-11-29 14:12:30 (6,65 MB/s) \u2014 \u00ab gogs_0.11.66_linux_386.tar.gz \u00bb sauvegard\u00e9 [20296268/20296268] git@atom:~/bin$ Mon serveur est en i386, et pas en amd64: prenez la version qui correspond au syst\u00e8me d'exploitation que vous avez install\u00e9. Maintenant, c'est quasi exclusivement du amd64. Mon serveur est vieux .... (mais vaillant :). D\u00e9compression de l'archive et suppression de l'archive git@atom:~/bin$ tar vxfz gogs_0.11.66_linux_386.tar.gz && rm gogs_0.11.66_linux_386.tar.gz Notez bien que toutes ces derni\u00e8res \u00e9tapes se font sous utilisateur git . Voici le r\u00e9sultat dans le r\u00e9pertoire gogs cr\u00e9\u00e9 pr\u00e9alablement: git@atom:~/bin/gogs$ ls gogs LICENSE public README.md README_ZH.md scripts templates git@atom:~/bin/gogs$ Bien, tous nos \u00e9l\u00e9ments sont en place, base de donn\u00e9es, utilisateur git , programme gogs . Il nous reste \u00e0 connecter le tout. Tapez : ./gogs web et lancez votre navigateur sur le nom de votre serveur suivi de :3000 Vous arriverez sur la page de configuration de gogs . Remplissez les champs avec les donn\u00e9es pr\u00e9c\u00e9demment entr\u00e9es et que vous avez bien s\u00fbr not\u00e9es ;). Confirmez votre choix, reconnectez-vous et \u00e7a y est. :) Cr\u00e9ez ensuite un utilisateur avec son mot de passe (\u00e0 noter pr\u00e9cieusement ...) Il nous reste \u00e0 installer les fichiers de lancement systemd ou init ; pour moi, systemd , la redirection apache , les certificats letsencrypt . Cr\u00e9ation de l'enregistrement bind On ajoute un enregistrement CNAME git IN CNAME atom.yojik.net. Cr\u00e9ation du fichier de configuration d' apache On cr\u00e9e le fichier */etc/apache2/sites-available/git.conf avec le contenu suivant: Il faut activer les modules apache suivants avec a2enmod , parce que il y aura une redirection du port 443 (https) vers le port 3000 interne (non -accessible de l'ext\u00e9rieur du serveur): proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html <VirtualHost *:80> ServerAdmin webmaster@localhost ProxyPreserveHost On # Servers to proxy the connection, or; # List of application servers: # Usage: # ProxyPass / http://[IP Addr.]:[port]/ # ProxyPassReverse / http://[IP Addr.]:[port]/ # Example: ProxyPass / http://localhost:3000/ ProxyPassReverse / http://localhost:3000/ ServerName git.yojik.net ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> On relance apache* service apache2 restart Cr\u00e9ation du certificat letsencrypt correspondant On lance la commande suivante: certbot --apache Et on suit les instructions ... Cr\u00e9ation des fichiers de configuration systemd Il y a un exemple de fichier dans le sous-r\u00e9pertoire scripts/systemd de gogs root@atom:/etc/systemd/system# cat gogs.service [Unit] Description=Gogs After=syslog.target After=network.target After=postgresql.service [Service] # Modify these two values and uncomment them if you have # repos with lots of files and get an HTTP error 500 because # of that ### #LimitMEMLOCK=infinity #LimitNOFILE=65535 Type=simple User=git Group=git WorkingDirectory=/home/git/bin/gogs ExecStart=/home/git/bin/gogs/gogs web Restart=always Environment=USER=git HOME=/home/git/ [Install] WantedBy=multi-user.target root@atom:/etc/systemd/system# Pour le lancer automatiquement au d\u00e9marrage et activer la prise en compte par systemd , lancer: systemctl daemon-reload systemctl enable gogs root@atom:/etc/systemd/system# systemctl enable gogs Created symlink /etc/systemd/system/multi-user.target.wants/gogs.service \u2192 /etc/systemd/system/gogs.service. root@atom:/etc/systemd/system# Tests Lancez les commandes suivantes pour vous assurer que tout est fonctionnel: root@atom:/etc/systemd/system# service gogs start root@atom:/etc/systemd/system# tail -f /var/log/daemon.log Dec 16 17:14:38 atom systemd[1]: Failed to start Gogs. Dec 16 17:14:38 atom systemd[1]: gogs.service: Unit entered failed state. Dec 16 17:14:38 atom systemd[1]: gogs.service: Failed with result 'exit-code'. Dec 16 17:16:09 atom systemd[1]: Reloading. Dec 16 17:16:09 atom systemd[1]: apt-daily.timer: Adding 6h 12min 40.966652s random time. Dec 16 17:16:13 atom systemd[1]: Started Gogs. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Custom path: /home/git/bin/gogs/custom Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace) Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916 root@atom:/etc/systemd/system# service gogs stop root@atom:/etc/systemd/system# service gogs start root@atom:/etc/systemd/system# tail -f /var/log/daemon.log Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace) Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916 Dec 16 17:16:28 atom systemd[1]: Stopping Gogs... Dec 16 17:16:28 atom systemd[1]: Stopped Gogs. Dec 16 17:16:33 atom systemd[1]: Started Gogs. Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Custom path: /home/git/bin/gogs/custom Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log path: /home/git/bin/gogs/log Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log Mode: File (Trace) Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [ INFO] Gogs on Yojik.net 0.11.66.0916 Le lancement de gogs marche parfaitement. Connectez-vous \u00e0 partir de votre navigateur sur git.yojik.net (ou plut\u00f4t l'url que vous avez d\u00e9finie auparavant); vous devez vous retrouver sur la page d'accueil de gogs . Voil\u00e0 une capture d'\u00e9cran de ce que vous devez obtenir (ici, avec le d\u00e9pot de ce tutoriel) Pour lancer un d\u00e9marrage automatique de gogs en cas de red\u00e9marrage de votre serveur, entrez la commande suivante: root@atom:/etc/postfix# systemctl enable gogs Created symlink /etc/systemd/system/multi-user.target.wants/gogs.service \u2192 /etc/systemd/system/gogs.service. root@atom:/etc/postfix# Tests de gogs Sur la page d'administration de notre projet, nous pouvons voir les commandes \u00e0 effectuer pour diff\u00e9rentes op\u00e9rations sur notre d\u00e9pot: Cr\u00e9ation d'un d\u00e9pot Cr\u00e9ation d'un d\u00e9pot: formulaire et r\u00e9capitulatif Affichage des commandes disponibles pour g\u00e9rer notre d\u00e9pot en https Affichage des commandes disponibles pour g\u00e9rer notre d\u00e9pot en ssh Cr\u00e9ation d'un r\u00e9pertoire local A1 Donnez-lui le nom que vous voulez. eric@aldebaran:~/temp$ mkdir A1 eric@aldebaran:~/temp$ cd A1 eric@aldebaran:~/temp/A1$ git init D\u00e9p\u00f4t Git vide initialis\u00e9 dans /home/eric/temp/A1/.git/ eric@aldebaran:~/temp/A1$ Ajout du fichier epub au d\u00e9pot local On copie notre fichier epub d\u00e9j\u00e0 existant dans notre r\u00e9pertoire et on l'ajoute au d\u00e9pot local. eric@aldebaran:~/temp/A1$ cp ~/Devs/Chinois/Chinese-grammar-wiki/Epub/Grammar-wiki-A1/Chinese-grammar-wiki-A1.epub . eric@aldebaran:~/temp/A1$git add . eric@aldebaran:~/temp/A1$ git commit -m \"premier commit\" [master (commit racine) 381b37b] premier commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Chinese-grammar-wiki-A1.epub eric@aldebaran:~/temp/A1$ Ajout du fichier epub au d\u00e9pot distant (sur atom) apr\u00e8s configuration des d\u00e9pots remote en https et ssh et poussage des donn\u00e9es avec la m\u00e9thode https . eric@aldebaran:~/temp/A1$ git remote add atomssh git@atom.yojik.net:eric/Repos/chinesegrammarwiki-a1.git eric@aldebaran:~/temp/A1$ git remote add atomhttp https://git.yojik.net/eric/ChineseGrammarWiki-A1.git eric@aldebaran:~/temp/A1$ git push atomhttp master Username for 'https://git.yojik.net': eric Password for 'https://eric@git.yojik.net': D\u00e9compte des objets: 3, fait. Delta compression using up to 12 threads. Compression des objets: 100% (3/3), fait. \u00c9criture des objets: 100% (3/3), 13.90 MiB | 6.05 MiB/s, fait. Total 3 (delta 0), reused 0 (delta 0) To https://git.yojik.net/eric/ChineseGrammarWiki-A1.git - [new branch] master -> master eric@aldebaran:~/temp/A1$ Affichage des derniers commits Test de clonage en https eric@aldebaran:~/temp$ git clone https://git.yojik.net/eric/ChineseGrammarWiki-A1.git Clonage dans 'ChineseGrammarWiki-A1'... Username for 'https://git.yojik.net': eric Password for 'https://eric@git.yojik.net': remote: D\u00e9compte des objets: 3, fait. remote: Compression des objets: 100% (3/3), fait. remote: Total 3 (delta 0), reused 0 (delta 0) D\u00e9paquetage des objets: 100% (3/3), fait. eric@aldebaran:~/temp$ Test de clonage en ssh eric@aldebaran:~/temp$ git clone git@atom.yojik.net:Repos/eric/chinesegrammarwiki-a1.git Clonage dans 'chinesegrammarwiki-a1'... remote: D\u00e9compte des objets: 3, fait. remote: Compression des objets: 100% (3/3), fait. remote: Total 3 (delta 0), reused 0 (delta 0) R\u00e9ception d'objets: 100% (3/3), 13.90 MiB | 13.56 MiB/s, fait. Explications sur les diff\u00e9rences constat\u00e9es entre les 2 types d'URL L\u00e0, c'est un peu sioux pour trouver la bonne URL; tout d'abord, celle donn\u00e9e par la page de gogs est fausse: il faut rep\u00e9rer le bon r\u00e9pertoire avec le bon chemin et mettre la derni\u00e8re partie en minuscules pour la m\u00e9thode git . Les URLs sont donc diff\u00e9rentes en https et git . Voil\u00e0 les diff\u00e9rences entre les 2 URLs: git clone https://git.yojik.net/eric/ChineseGrammarWiki-A1.git git clone git@atom.yojik.net:Repos/eric/chinesegrammarwiki-a1.git Vous voyez que le chemin relatif, sans la partie Repos , est accept\u00e9e avec la m\u00e9thode https , car le chemin /home/git/Repos est celui donn\u00e9 \u00e0 gogs dans sa configuration de base. Par contre, avec la m\u00e9thode ssh , il faut redonner le chemin complet, avec Repos . Gogs transforme le nom du projet en un nom tout en minuscules; ChineseGrammarWiki-A1.git devient chinesegrammarwiki-a1.git.","title":"Installation de *git*"},{"location":"Installation-Serveur-Git/#installation-de-git","text":"Il y a plusieurs fa\u00e7ons d'installer un serveur git sur notre serveur. Nous allons essayer plusieurs solutions, d'une solution compl\u00e8tement basique sans serveur graphique, suivie de solutions graphiques avec plus ou moins de capacit\u00e9s (suivi de tickets, wiki, gestion des utilisateurs, int\u00e9gration continue. Apr\u00e8s avoir lu le git-book ainsi que de nombreux tutoriaux, je me rend compte que cette partie est vraiment incompl\u00e8te et ne parle pas des diff\u00e9rents protocoles utilisables, ainsi que leurs caract\u00e9ristiques. Certains permettent l'authentification, d'autres non et reposent sur les restrictions du syst\u00e8me sur lequel est install\u00e9 le serveur.","title":"Installation de git"},{"location":"Installation-Serveur-Git/#les-differents-protocoles","text":"","title":"Les diff\u00e9rents protocoles"},{"location":"Installation-Serveur-Git/#installation-dun-serveur-git-avec-le-protocole-local","text":"","title":"Installation d'un serveur git avec le protocole local"},{"location":"Installation-Serveur-Git/#installation-dun-serveur-git-avec-le-protocole-http-basique","text":"","title":"Installation d'un serveur git avec le protocole http basique"},{"location":"Installation-Serveur-Git/#installation-dun-serveur-git-avec-le-protocole-http-evolue","text":"","title":"Installation d'un serveur git avec le protocole http \u00e9volu\u00e9"},{"location":"Installation-Serveur-Git/#installation-dun-serveur-git-avec-le-protocole-git","text":"","title":"Installation d'un serveur git avec le protocole git"},{"location":"Installation-Serveur-Git/#installation-dun-serveur-git-basique-mais-parfaitement-fonctionnel","text":"","title":"Installation d'un serveur git basique (mais parfaitement fonctionnel :) )"},{"location":"Installation-Serveur-Git/#installation-de-git-premiere-version","text":"root@atom:/home/ericadmin# apt install git Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: git-man Paquets sugg\u00e9r\u00e9s : git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn Les NOUVEAUX paquets suivants seront install\u00e9s : git git-man 0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 0 o/6 311 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 34,8 Mo d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o S\u00e9lection du paquet git-man pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 39220 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../git-man_1%3a2.11.0-3+deb9u4_all.deb ... D\u00e9paquetage de git-man (1:2.11.0-3+deb9u4) ... S\u00e9lection du paquet git pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../git_1%3a2.11.0-3+deb9u4_i386.deb ... D\u00e9paquetage de git (1:2.11.0-3+deb9u4) ... Param\u00e9trage de git-man (1:2.11.0-3+deb9u4) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de git (1:2.11.0-3+deb9u4) ... root@atom:/home/ericadmin# mc","title":"Installation de git premi\u00e8re version"},{"location":"Installation-Serveur-Git/#installation-de-lutilisateur-git-et-du-groupe-git","text":"root@atom:/home/ericadmin# adduser git Ajout de l'utilisateur \u00ab git \u00bb ... Ajout du nouveau groupe \u00ab git \u00bb (1001) ... Ajout du nouvel utilisateur \u00ab git \u00bb (1001) avec le groupe \u00ab git \u00bb ... Cr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/git \u00bb... Copie des fichiers depuis \u00ab /etc/skel \u00bb... Entrez le nouveau mot de passe UNIX : Retapez le nouveau mot de passe UNIX : passwd: password updated successfully Changing the user information for git Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Cette information est-elle correcte ? [O/n]o root@atom:/home/ericadmin# Un r\u00e9pertoire /home/git a \u00e9t\u00e9 cr\u00e9\u00e9 ainsi que le groupe git et l'utilisateur git, avec son mot de passe que vous avez saisi dans l'\u00e9tape ci-dessus.","title":"Installation de l'utilisateur git et du groupe git"},{"location":"Installation-Serveur-Git/#copie-de-la-clef-ssh-pour-un-acces-sans-mot-de-passe","text":"Pour cela, il faut ajouter l'utilisateur git dans le fichier de configuration de sshd . Modifiez la ligne qui contient AllowUsers pour obtenir ceci: AllowUsers ericadmin git Rechargez sshd en lan\u00e7ant: service sshd restart Copie de votre clef sur le serveur: dans un premier temps, il faut remettre la configuration d'origine de sshd . Pour cela, copiez cotre fichier actuel en sshd_config.n. Copiez le fichier /etc/ssh/sshd_config.orig en /etc/ssh/sshd_config et relancez sshd avec service sshd restart. service sshd restart Vous devez pouvoir vous connecter sur le compte git en tapant ceci: eric@aldebaran:~$ ssh git@atom git@atom's password: Linux atom 4.9.0-8-686-pae #1 SMP Debian 4.9.130-2 (2018-10-27) i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. git@atom:~$ D\u00e9connectez-vous en tapant Ctrl D et copiez votre clef sur le serveur: eric@aldebaran:~$ ssh-copy-id git@atom /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 2 key(s) remain to be installed -- if you are prompted now it is to install the new keys git@atom's password: Number of key(s) added: 2 Now try logging into the machine, with: \"ssh 'git@atom'\" and check to make sure that only the key(s) you wanted were added. eric@aldebaran:~$ Testez avec la commande fournie: eric@aldebaran:~$ ssh 'git@atom' Linux atom 4.9.0-8-686-pae #1 SMP Debian 4.9.130-2 (2018-10-27) i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun Dec 30 09:40:18 2018 from 192.168.111.150 git@atom:~$ Vous avez pu vous connecter sans taper votre mot de passe. D\u00e9connectez-vous \u00e0 nouveau (Ctrl D) Remettez le fichier sshd_config (qui contient le AllowUsers que nous avons configur\u00e9 auparavant). Test: eric@aldebaran:~$ ssh 'git@atom' Last login: Sun Dec 30 09:45:36 2018 from 192.168.111.150 git@atom:~$ \u00c7a marche. Nous avons un acc\u00e8s \u00e0 notre compte git sans mot de passe, par \u00e9change de clefs, et avons bloqu\u00e9 l'acc\u00e8s par mot de passe, comme pour notre utilisateur d'administration ericadmin .","title":"Copie de la clef ssh pour un acc\u00e8s sans mot de passe."},{"location":"Installation-Serveur-Git/#creation-dun-repertoire-qui-va-contenir-nos-depots-git","text":"On se connecte sous l'utilisateur git et on cr\u00e9e un r\u00e9pertoire Repos (Choisissez le nom que vous voulez ...) eric@aldebaran:~$ ssh 'git@atom' Last login: Sun Dec 30 09:48:14 2018 from 192.168.111.150 git@atom:~$ mkdir Repos git@atom:~$ ls Repos git@atom:~$ Voil\u00e0, le r\u00e9pertoire est cr\u00e9\u00e9.","title":"Cr\u00e9ation d'un r\u00e9pertoire qui va contenir nos d\u00e9pots git"},{"location":"Installation-Serveur-Git/#creation-dun-premier-depot-sur-le-serveur","text":"La commande git init --bare permet la cr\u00e9ation, d'un d\u00e9pot qui ne contient que les donn\u00e9es git sans les sources/documents. git@atom:~$ cd Repos/ git@atom:~/Repos$ mkdir Essai1.git git@atom:~/Repos$ cd Essai1.git/ git@atom:~/Repos/Essai1.git$ git init --bare D\u00e9p\u00f4t Git vide initialis\u00e9 dans /home/git/Repos/Essai1.git/ git@atom:~/Repos/Essai1.git$","title":"Cr\u00e9ation d'un premier d\u00e9pot sur le serveur"},{"location":"Installation-Serveur-Git/#creation-dun-projet-sur-la-machine-locale","text":"(pour moi dans le r\u00e9pertoire /home/eric/Devs) eric@aldebaran:~/Devs$ mkdir Essai1 eric@aldebaran:~/Devs$ cd Essai1/ eric@aldebaran:~/Devs/Essai1$ git init D\u00e9p\u00f4t Git vide initialis\u00e9 dans /home/eric/Devs/Essai1/.git/ eric@aldebaran:~/Devs/Essai1$ ls -al total 12 drwxr-xr-x 3 eric eric 4096 d\u00e9c. 30 10:01 . drwxr-xr-x 18 eric eric 4096 d\u00e9c. 30 10:00 .. drwxr-xr-x 7 eric eric 4096 d\u00e9c. 30 10:01 .git eric@aldebaran:~/Devs/Essai1$ Le r\u00e9pertoire de notre projet est vide, nous venons de le cr\u00e9er. Ajoutons un premier fichier README.md avec un contenu quelconque au projet. eric@aldebaran:~/Devs/Essai1$ touch README.md eric@aldebaran:~/Devs/Essai1$ ls README.md eric@aldebaran:~/Devs/Essai1$ echo \"Un premier fichier\" > README.md eric@aldebaran:~/Devs/Essai1$ cat README.md Un premier fichier eric@aldebaran:~/Devs/Essai1$ Ajoutons-le \u00e0 la base git eric@aldebaran:~/Devs/Essai1$ git add . eric@aldebaran:~/Devs/Essai1$ git commit -m \"mon premier commit\" [master (commit racine) bc25e5b] mon premier commit 1 file changed, 1 insertion(+) create mode 100644 README.md eric@aldebaran:~/Devs/Essai1$ git status Sur la branche master rien \u00e0 valider, la copie de travail est propre eric@aldebaran:~/Devs/Essai1$ Notre fichier a \u00e9t\u00e9 ajout\u00e9 \u00e0 notre base git locale. Nous allons ajouter le d\u00e9pot distant situ\u00e9 sur notre serveur. eric@aldebaran:~/Devs/Essai1$ git remote add origin ssh://git@atom.yojik.net:Repos/Essai1.git eric@aldebaran:~/Devs/Essai1$ git remote origin eric@aldebaran:~/Devs/Essai1$ git remote -v origin ssh://git@atom/Repos/Essai1.git (fetch) origin ssh://git@atom/Repos/Essai1.git (push) eric@aldebaran:~/Devs/Essai1$ J'ai ajout\u00e9 les commandes de v\u00e9rification. Nous allons pousser notre projet sur le serveur. eric@aldebaran:~/Devs/Essai1$ git push origin master D\u00e9compte des objets: 3, fait. \u00c9criture des objets: 100% (3/3), 220 bytes | 0 bytes/s, fait. Total 3 (delta 0), reused 0 (delta 0) To atom.yojik.net:Repos/Essai1.git - [new branch] master -> master Tests suivants: Effacement des projets sur notre machine locale et clonage de notre d\u00e9p\u00f4t distant, avec le protocole git ainsi qu'avec le protocole https : Protocole git : eric@aldebaran:~/Devs$ git clone git@atom.yojik.net:Repos/Essai1.git Essai1 Clonage dans 'Essai1'... remote: D\u00e9compte des objets: 3, fait. remote: Total 3 (delta 0), reused 0 (delta 0) R\u00e9ception d'objets: 100% (3/3), fait. eric@aldebaran:~/Devs$ cd Essai1/ eric@aldebaran:~/Devs/Essai1$ ls README.md eric@aldebaran:~/Devs/Essai1$ cat README.md Essai2 eric@aldebaran:~/Devs/Essai1$ echo \" d'un deuxi\u00e8me poussage\" >> README.md eric@aldebaran:~/Devs/Essai1$ cat README.md Essai2 d'un deuxi\u00e8me poussage eric@aldebaran:~/Devs/Essai1$ git add . eric@aldebaran:~/Devs/Essai1$ git commit -m \"2\u00e8me poussage\" [master 4edff63] 2\u00e8me poussage 1 file changed, 1 insertion(+) eric@aldebaran:~/Devs/Essai1$ git push origin master D\u00e9compte des objets: 3, fait. \u00c9criture des objets: 100% (3/3), 280 bytes | 0 bytes/s, fait. Total 3 (delta 0), reused 0 (delta 0) To atom.yojik.net:Repos/Essai1.git e9cd815..4edff63 master -> master eric@aldebaran:~/Devs/Essai1$ Protocole https : Essai de clonage du d\u00e9pot git contenant les sources de ce tutorial avec la commande suivante; vous noterez que les sources du d\u00e9pot sont l\u00e9g\u00e8rement diff\u00e9rentes, suite \u00e0 l'installation de gogs , mais le principe est le m\u00eame. git clone https://git.yojik.net/eric/InstallationServeur.git eric@aldebaran:~/temp$ git clone https://git.yojik.net/eric/InstallationServeur.git Clonage dans 'InstallationServeur'... remote: D\u00e9compte des objets: 431, fait. remote: Compression des objets: 100% (357/357), fait. remote: Total 431 (delta 145), reused 252 (delta 30) R\u00e9ception d'objets: 100% (431/431), 4.74 MiB | 6.37 MiB/s, fait. R\u00e9solution des deltas: 100% (145/145), fait. eric@aldebaran:~/temp$ Voil\u00e0, la configuration d'un serveur git de base est effectu\u00e9e; il nous faut bien s\u00fbr nous loguer sur le serveur pour cr\u00e9er un d\u00e9pot avant de l'utiliser. Des programmes, souvent graphiques d'ailleurs, permettent de cr\u00e9er les d\u00e9pots \u00e0 partir d'une interface web . Nous allons en voir quelques uns en commen\u00e7ant par le serveur graphique fourni avec git , appel\u00e9 gitweb .","title":"Cr\u00e9ation d'un projet sur la machine locale"},{"location":"Installation-Serveur-Git/#installation-et-configuration-de-gitweb","text":"","title":"Installation et configuration de gitweb"},{"location":"Installation-Serveur-Git/#installation","text":"root@atom:/home/ericadmin# apt install gitweb Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl Paquets sugg\u00e9r\u00e9s : git-doc libdata-dump-perl Les NOUVEAUX paquets suivants seront install\u00e9s : gitweb libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl 0 mis \u00e0 jour, 6 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 1 067 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 1 605 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 libhtml-tagset-perl all 3.20-3 [12,7 kB] R\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 libhtml-parser-perl i386 3.72-3 [105 kB] R\u00e9ception de:3 http://deb.debian.org/debian stretch/main i386 libcgi-pm-perl all 4.35-1 [222 kB] R\u00e9ception de:4 http://deb.debian.org/debian stretch/main i386 gitweb all 1:2.11.0-3+deb9u4 [676 kB] R\u00e9ception de:5 http://deb.debian.org/debian stretch/main i386 libfcgi-perl i386 0.78-2 [40,2 kB] R\u00e9ception de:6 http://deb.debian.org/debian stretch/main i386 libcgi-fast-perl all 1:2.12-1 [11,2 kB] 1 067 ko r\u00e9ceptionn\u00e9s en 0s (6 128 ko/s) etc... root@atom:/home/ericadmin#","title":"Installation"},{"location":"Installation-Serveur-Git/#configuration-de-gitweb","text":"La seule chose \u00e0 configurer pour une utilisation basique est le fichier /etc/gitweb.conf. En faire une copie avant modification et modifiez la ligne suivante pour obtenir ce qui suit: $projectroot = \"/home/git/Repos\"; C'est la racine de nos d\u00e9pots. Activez le module cgi dans apache et rechargez la configuration de apache : root@atom:/home/ericadmin# a2enmod cgi Enabling module cgi. To activate the new configuration, you need to run: systemctl restart apache2 root@atom:/home/ericadmin# systemctl restart apache2 Vous pouvez acc\u00e9der directement \u00e0 l'interface graphique avec l'url suivante: atom.yojik.net/gitweb. Pour \u00eatre honn\u00eate, je ne vois pas vraiment l'int\u00e9r\u00eat de cette interface, \u00e0 part visualiser les projets sur le serveur. Je n'ai pas trouv\u00e9 s'il est possible de t\u00e9l\u00e9charger une archive du projet, s'il est possible de cr\u00e9er un projet, pas plus que je n'ai vu la possibilit\u00e9 de g\u00e9rer des utilisateurs. Il faudra approfondir la question ... L'utilisation de l'url par d\u00e9faut n'est pas s\u00e9curis\u00e9e non plus (pas de https).","title":"Configuration de gitweb"},{"location":"Installation-Serveur-Git/#installation-de-gogs","text":"Nous allons installer un serveur git sur notre petit serveur. Gogs est un serveur git \u00e9crit en go . Nous allons l'installer progressivement, en ajoutant ensuite le d\u00e9marrage par un service, et l'acc\u00e8s sur un port standard servi par apache et redirig\u00e9 vers le port 3000 servi par gogs . Nous allons reprendre une installation \u00e0 partir du d\u00e9but (avec l'installation de git etc ...) Je me suis inspir\u00e9 de la documentation officielle ainsi que de ce tutorial: # How to Install Gogs Go Git Service on Ubuntu 16.04 Commen\u00e7ons par installer git , si nous ne l'avons pas encore fait auparavant.","title":"Installation de gogs"},{"location":"Installation-Serveur-Git/#installation-de-git-repetition","text":"root@atom:~# apt-get install git etc ... root@atom:~#","title":"Installation de git (r\u00e9p\u00e9tition)"},{"location":"Installation-Serveur-Git/#creation-de-lutilisateur-git-au-sein-du-systeme","text":"commande adduser root@atom:/home/ericadmin# adduser --disabled-login --gecos 'Gogs' git Ajout de l'utilisateur \u00ab git \u00bb ... Ajout du nouveau groupe \u00ab git \u00bb (1001) ... Ajout du nouvel utilisateur \u00ab git \u00bb (1001) avec le groupe \u00ab git \u00bb ... Cr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/git \u00bb... Copie des fichiers depuis \u00ab /etc/skel \u00bb... root@atom:/home/ericadmin#","title":"Cr\u00e9ation de l'utilisateur git au sein du syst\u00e8me"},{"location":"Installation-Serveur-Git/#installation-de-la-base-de-donnees-postgresql","text":"Nous aurions pu utiliser \u00e0 la place de Postgresql , mysql ou sqlite3 . root@atom:/home/ericadmin# apt install -y postgresql postgresql-client libpq-dev etc... root@atom:/home/ericadmin# Lancement du serveur Postgresql et configuration pour un lancement automatique au d\u00e9marrage de la machine: root@atom:/home/ericadmin# systemctl start postgresql root@atom:/home/ericadmin# systemctl enable postgresql Synchronizing state of postgresql.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable postgresql root@atom:/home/ericadmin# Nous allons nous connecter sous le user postgres pour configurer notre serveur de base de donn\u00e9es et cr\u00e9er la base initiale pour gogs , ainsi que l'utilisateur gogs . Voici les donn\u00e9es que nous allons utiliser: gestionnaire principal de la base de donn\u00e9es postgres: postgres mot de passe correspondant : **** utilisateur de la base de donn\u00e9es postgres: git mot de passe de l'utlisateur git dans postgres: **** base de donn\u00e9es postgres, appartenant \u00e0 l'utilisateur git de postgres: gogsdb root@atom:/home/ericadmin# su - postgres postgres@atom:~$ Nous allons lancer le shell postgres qui nous permettra de configurer notre base: postgres@atom:~$ psql psql (9.6.10) Saisissez \u00ab help \u00bb pour l'aide. postgres=# Cr\u00e9ation de l'utilisateur git ainsi que le mot de passe pour cet utilisateur: postgres=# CREATE USER git CREATEDB; CREATE ROLE postgres=# \\password git Saisissez le nouveau mot de passe : **** Saisissez-le \u00e0 nouveau : **** postgres=# Remplacez bien s\u00fbr les **** par un vrai mot de passe et notez le bien soigneusement. Cr\u00e9ation de la base de donn\u00e9e et v\u00e9rification: postgres=# CREATE DATABASE gogsdb OWNER git; CREATE DATABASE postgres=# \\du Liste des r\u00f4les Nom du r\u00f4le | Attributs | Membre de -------------+---------------------------------------------------------------------------------+----------- git | Cr\u00e9er une base | {} postgres | Superutilisateur, Cr\u00e9er un r\u00f4le, Cr\u00e9er une base, R\u00e9plication, Contournement RLS | {} postgres=# \\l Liste des bases de donn\u00e9es Nom | Propri\u00e9taire | Encodage | Collationnement | Type caract. | Droits d'acc\u00e8s -----------+--------------+----------+-----------------+--------------+----------------------- gogsdb | git | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | postgres | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 lignes) postgres=# Voil\u00e0, nous avons install\u00e9 le serveur de base de donn\u00e9es (postgres), la base de donn\u00e9es n\u00e9cessaire \u00e0 gogs (gogsdb), ainsi que l'utilisateur git (au sein de la base de donn\u00e9es) qui pourra g\u00e9rer les donn\u00e9es de gogs .","title":"Installation de la base de donn\u00e9es Postgresql"},{"location":"Installation-Serveur-Git/#creation-dun-repertoire-reserve-au-binaire-gogs-appartenant-a-lutilisateur-git","text":"root@atom:/home/ericadmin# su - git git@atom:~$ mkdir -p /home/git/bin git@atom:~$","title":"Cr\u00e9ation d'un r\u00e9pertoire r\u00e9serv\u00e9 au binaire gogs appartenant \u00e0 l'utilisateur git"},{"location":"Installation-Serveur-Git/#telechargement-du-binaire-gogs-dans-notre-repertoire-nouvellement-cree","text":"git@atom:~$ cd bin git@atom:~/bin$ wget https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz --2018-11-29 14:12:26-- https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz R\u00e9solution de dl.gogs.io (dl.gogs.io)\u2026 68.183.105.37 Connexion \u00e0 dl.gogs.io (dl.gogs.io)|68.183.105.37|:443\u2026 connect\u00e9. requ\u00eate HTTP transmise, en attente de la r\u00e9ponse\u2026 200 OK Taille : 20296268 (19M) [application/x-gzip] Sauvegarde en : \u00ab gogs_0.11.66_linux_386.tar.gz \u00bb gogs_0.11.66_linux_386.tar.gz 100%[====================================================================>] 19,36M 6,65MB/s in 2,9s 2018-11-29 14:12:30 (6,65 MB/s) \u2014 \u00ab gogs_0.11.66_linux_386.tar.gz \u00bb sauvegard\u00e9 [20296268/20296268] git@atom:~/bin$ Mon serveur est en i386, et pas en amd64: prenez la version qui correspond au syst\u00e8me d'exploitation que vous avez install\u00e9. Maintenant, c'est quasi exclusivement du amd64. Mon serveur est vieux .... (mais vaillant :).","title":"T\u00e9l\u00e9chargement du binaire gogs dans notre r\u00e9pertoire nouvellement cr\u00e9\u00e9"},{"location":"Installation-Serveur-Git/#decompression-de-larchive-et-suppression-de-larchive","text":"git@atom:~/bin$ tar vxfz gogs_0.11.66_linux_386.tar.gz && rm gogs_0.11.66_linux_386.tar.gz Notez bien que toutes ces derni\u00e8res \u00e9tapes se font sous utilisateur git . Voici le r\u00e9sultat dans le r\u00e9pertoire gogs cr\u00e9\u00e9 pr\u00e9alablement: git@atom:~/bin/gogs$ ls gogs LICENSE public README.md README_ZH.md scripts templates git@atom:~/bin/gogs$ Bien, tous nos \u00e9l\u00e9ments sont en place, base de donn\u00e9es, utilisateur git , programme gogs . Il nous reste \u00e0 connecter le tout. Tapez : ./gogs web et lancez votre navigateur sur le nom de votre serveur suivi de :3000 Vous arriverez sur la page de configuration de gogs . Remplissez les champs avec les donn\u00e9es pr\u00e9c\u00e9demment entr\u00e9es et que vous avez bien s\u00fbr not\u00e9es ;). Confirmez votre choix, reconnectez-vous et \u00e7a y est. :) Cr\u00e9ez ensuite un utilisateur avec son mot de passe (\u00e0 noter pr\u00e9cieusement ...) Il nous reste \u00e0 installer les fichiers de lancement systemd ou init ; pour moi, systemd , la redirection apache , les certificats letsencrypt .","title":"D\u00e9compression de l'archive et suppression de l'archive"},{"location":"Installation-Serveur-Git/#creation-de-lenregistrement-bind","text":"On ajoute un enregistrement CNAME git IN CNAME atom.yojik.net.","title":"Cr\u00e9ation de l'enregistrement bind"},{"location":"Installation-Serveur-Git/#creation-du-fichier-de-configuration-dapache","text":"On cr\u00e9e le fichier */etc/apache2/sites-available/git.conf avec le contenu suivant: Il faut activer les modules apache suivants avec a2enmod , parce que il y aura une redirection du port 443 (https) vers le port 3000 interne (non -accessible de l'ext\u00e9rieur du serveur): proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html <VirtualHost *:80> ServerAdmin webmaster@localhost ProxyPreserveHost On # Servers to proxy the connection, or; # List of application servers: # Usage: # ProxyPass / http://[IP Addr.]:[port]/ # ProxyPassReverse / http://[IP Addr.]:[port]/ # Example: ProxyPass / http://localhost:3000/ ProxyPassReverse / http://localhost:3000/ ServerName git.yojik.net ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> On relance apache* service apache2 restart","title":"Cr\u00e9ation du fichier de configuration d'apache"},{"location":"Installation-Serveur-Git/#creation-du-certificat-letsencrypt-correspondant","text":"On lance la commande suivante: certbot --apache Et on suit les instructions ...","title":"Cr\u00e9ation du certificat letsencrypt correspondant"},{"location":"Installation-Serveur-Git/#creation-des-fichiers-de-configuration-systemd","text":"Il y a un exemple de fichier dans le sous-r\u00e9pertoire scripts/systemd de gogs root@atom:/etc/systemd/system# cat gogs.service [Unit] Description=Gogs After=syslog.target After=network.target After=postgresql.service [Service] # Modify these two values and uncomment them if you have # repos with lots of files and get an HTTP error 500 because # of that ### #LimitMEMLOCK=infinity #LimitNOFILE=65535 Type=simple User=git Group=git WorkingDirectory=/home/git/bin/gogs ExecStart=/home/git/bin/gogs/gogs web Restart=always Environment=USER=git HOME=/home/git/ [Install] WantedBy=multi-user.target root@atom:/etc/systemd/system# Pour le lancer automatiquement au d\u00e9marrage et activer la prise en compte par systemd , lancer: systemctl daemon-reload systemctl enable gogs root@atom:/etc/systemd/system# systemctl enable gogs Created symlink /etc/systemd/system/multi-user.target.wants/gogs.service \u2192 /etc/systemd/system/gogs.service. root@atom:/etc/systemd/system#","title":"Cr\u00e9ation des fichiers de configuration systemd"},{"location":"Installation-Serveur-Git/#tests","text":"Lancez les commandes suivantes pour vous assurer que tout est fonctionnel: root@atom:/etc/systemd/system# service gogs start root@atom:/etc/systemd/system# tail -f /var/log/daemon.log Dec 16 17:14:38 atom systemd[1]: Failed to start Gogs. Dec 16 17:14:38 atom systemd[1]: gogs.service: Unit entered failed state. Dec 16 17:14:38 atom systemd[1]: gogs.service: Failed with result 'exit-code'. Dec 16 17:16:09 atom systemd[1]: Reloading. Dec 16 17:16:09 atom systemd[1]: apt-daily.timer: Adding 6h 12min 40.966652s random time. Dec 16 17:16:13 atom systemd[1]: Started Gogs. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Custom path: /home/git/bin/gogs/custom Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace) Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916 root@atom:/etc/systemd/system# service gogs stop root@atom:/etc/systemd/system# service gogs start root@atom:/etc/systemd/system# tail -f /var/log/daemon.log Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace) Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916 Dec 16 17:16:28 atom systemd[1]: Stopping Gogs... Dec 16 17:16:28 atom systemd[1]: Stopped Gogs. Dec 16 17:16:33 atom systemd[1]: Started Gogs. Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Custom path: /home/git/bin/gogs/custom Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log path: /home/git/bin/gogs/log Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log Mode: File (Trace) Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [ INFO] Gogs on Yojik.net 0.11.66.0916 Le lancement de gogs marche parfaitement. Connectez-vous \u00e0 partir de votre navigateur sur git.yojik.net (ou plut\u00f4t l'url que vous avez d\u00e9finie auparavant); vous devez vous retrouver sur la page d'accueil de gogs . Voil\u00e0 une capture d'\u00e9cran de ce que vous devez obtenir (ici, avec le d\u00e9pot de ce tutoriel) Pour lancer un d\u00e9marrage automatique de gogs en cas de red\u00e9marrage de votre serveur, entrez la commande suivante: root@atom:/etc/postfix# systemctl enable gogs Created symlink /etc/systemd/system/multi-user.target.wants/gogs.service \u2192 /etc/systemd/system/gogs.service. root@atom:/etc/postfix#","title":"Tests"},{"location":"Installation-Serveur-Git/#tests-de-gogs","text":"Sur la page d'administration de notre projet, nous pouvons voir les commandes \u00e0 effectuer pour diff\u00e9rentes op\u00e9rations sur notre d\u00e9pot: Cr\u00e9ation d'un d\u00e9pot Cr\u00e9ation d'un d\u00e9pot: formulaire et r\u00e9capitulatif Affichage des commandes disponibles pour g\u00e9rer notre d\u00e9pot en https Affichage des commandes disponibles pour g\u00e9rer notre d\u00e9pot en ssh Cr\u00e9ation d'un r\u00e9pertoire local A1 Donnez-lui le nom que vous voulez. eric@aldebaran:~/temp$ mkdir A1 eric@aldebaran:~/temp$ cd A1 eric@aldebaran:~/temp/A1$ git init D\u00e9p\u00f4t Git vide initialis\u00e9 dans /home/eric/temp/A1/.git/ eric@aldebaran:~/temp/A1$ Ajout du fichier epub au d\u00e9pot local On copie notre fichier epub d\u00e9j\u00e0 existant dans notre r\u00e9pertoire et on l'ajoute au d\u00e9pot local. eric@aldebaran:~/temp/A1$ cp ~/Devs/Chinois/Chinese-grammar-wiki/Epub/Grammar-wiki-A1/Chinese-grammar-wiki-A1.epub . eric@aldebaran:~/temp/A1$git add . eric@aldebaran:~/temp/A1$ git commit -m \"premier commit\" [master (commit racine) 381b37b] premier commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Chinese-grammar-wiki-A1.epub eric@aldebaran:~/temp/A1$ Ajout du fichier epub au d\u00e9pot distant (sur atom) apr\u00e8s configuration des d\u00e9pots remote en https et ssh et poussage des donn\u00e9es avec la m\u00e9thode https . eric@aldebaran:~/temp/A1$ git remote add atomssh git@atom.yojik.net:eric/Repos/chinesegrammarwiki-a1.git eric@aldebaran:~/temp/A1$ git remote add atomhttp https://git.yojik.net/eric/ChineseGrammarWiki-A1.git eric@aldebaran:~/temp/A1$ git push atomhttp master Username for 'https://git.yojik.net': eric Password for 'https://eric@git.yojik.net': D\u00e9compte des objets: 3, fait. Delta compression using up to 12 threads. Compression des objets: 100% (3/3), fait. \u00c9criture des objets: 100% (3/3), 13.90 MiB | 6.05 MiB/s, fait. Total 3 (delta 0), reused 0 (delta 0) To https://git.yojik.net/eric/ChineseGrammarWiki-A1.git - [new branch] master -> master eric@aldebaran:~/temp/A1$ Affichage des derniers commits Test de clonage en https eric@aldebaran:~/temp$ git clone https://git.yojik.net/eric/ChineseGrammarWiki-A1.git Clonage dans 'ChineseGrammarWiki-A1'... Username for 'https://git.yojik.net': eric Password for 'https://eric@git.yojik.net': remote: D\u00e9compte des objets: 3, fait. remote: Compression des objets: 100% (3/3), fait. remote: Total 3 (delta 0), reused 0 (delta 0) D\u00e9paquetage des objets: 100% (3/3), fait. eric@aldebaran:~/temp$ Test de clonage en ssh eric@aldebaran:~/temp$ git clone git@atom.yojik.net:Repos/eric/chinesegrammarwiki-a1.git Clonage dans 'chinesegrammarwiki-a1'... remote: D\u00e9compte des objets: 3, fait. remote: Compression des objets: 100% (3/3), fait. remote: Total 3 (delta 0), reused 0 (delta 0) R\u00e9ception d'objets: 100% (3/3), 13.90 MiB | 13.56 MiB/s, fait. Explications sur les diff\u00e9rences constat\u00e9es entre les 2 types d'URL L\u00e0, c'est un peu sioux pour trouver la bonne URL; tout d'abord, celle donn\u00e9e par la page de gogs est fausse: il faut rep\u00e9rer le bon r\u00e9pertoire avec le bon chemin et mettre la derni\u00e8re partie en minuscules pour la m\u00e9thode git . Les URLs sont donc diff\u00e9rentes en https et git . Voil\u00e0 les diff\u00e9rences entre les 2 URLs: git clone https://git.yojik.net/eric/ChineseGrammarWiki-A1.git git clone git@atom.yojik.net:Repos/eric/chinesegrammarwiki-a1.git Vous voyez que le chemin relatif, sans la partie Repos , est accept\u00e9e avec la m\u00e9thode https , car le chemin /home/git/Repos est celui donn\u00e9 \u00e0 gogs dans sa configuration de base. Par contre, avec la m\u00e9thode ssh , il faut redonner le chemin complet, avec Repos . Gogs transforme le nom du projet en un nom tout en minuscules; ChineseGrammarWiki-A1.git devient chinesegrammarwiki-a1.git.","title":"Tests de gogs"},{"location":"Installation-Serveur-Temps/","text":"Installation d'un serveur de temps L'horloge du serveur doit \u00eatre exacte, et pour cela, nous nous r\u00e9f\u00e9rons \u00e0 un serveur de temps. Le programme qui se connecte et met \u00e0 jour l'horloge de notre serveur sera ntp . root@atom:/home/ericadmin# apt install ntp Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: libopts25 Paquets sugg\u00e9r\u00e9s : ntp-doc Les NOUVEAUX paquets suivants seront install\u00e9s : libopts25 ntp 0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 689 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 2 035 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 libopts25 i386 1:5.18.12-3 [71,6 kB] R\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 ntp i386 1:4.2.8p10+dfsg-3+deb9u1 [617 kB] 689 ko r\u00e9ceptionn\u00e9s en 0s (3 368 ko/s) S\u00e9lection du paquet libopts25:i386 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 31885 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../libopts25_1%3a5.18.12-3_i386.deb ... D\u00e9paquetage de libopts25:i386 (1:5.18.12-3) ... S\u00e9lection du paquet ntp pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../ntp_1%3a4.2.8p10+dfsg-3+deb9u1_i386.deb ... D\u00e9paquetage de ntp (1:4.2.8p10+dfsg-3+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ... Param\u00e9trage de libopts25:i386 (1:5.18.12-3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de ntp (1:4.2.8p10+dfsg-3+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ... Test du serveur de temps 2 commandes permettent de v\u00e9rifier l'\u00e9tat de ntp : ntpq -p timedatectl Voil\u00e0 le r\u00e9sultat de ces commandes sur mon serveur: root@atom:/home/ericadmin# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== 0.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004 1.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004 2.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004 3.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004 -dev2.pik.ba 213.251.128.249 2 u 93 128 377 13.413 0.144 0.177 -ks3352891.kimsu 138.96.64.10 2 u 174 256 377 14.022 2.951 0.157 +www.mindstudios 193.79.237.14 2 u 108 128 377 11.008 0.594 0.134 -gofish.zenvps.c 193.52.184.106 2 u 180 256 377 13.865 0.770 0.094 *ip139.ip-5-196- 145.238.203.14 2 u 4 128 377 13.264 0.636 0.218 +leeto.nicolbola 145.238.203.14 2 u 97 128 377 10.257 -0.871 0.312 root@atom:/home/ericadmin# timedatectl Local time: lun. 2017-12-25 12:17:33 CET Universal time: lun. 2017-12-25 11:17:33 UTC RTC time: lun. 2017-12-25 11:17:33 Time zone: Europe/Paris (CET, +0100) Network time on: yes NTP synchronized: yes RTC in local TZ: no root@atom:/home/ericadmin# Nous pouvons voir les serveurs connect\u00e9s et l'\u00e9tat de la synchronisation. Si la derni\u00e8re commande renvoie: Network time on: No , vous pouvez essayer de configurer le service systemd de la fa\u00e7on suivante: # vim /etc/systemd/timesyncd.conf Et ajoutez la ligne suivante: [Time] Servers=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org Sauvez le fichier et testez la configuration de la fa\u00e7on suivante: # timedatectl set-ntp true # timedatectl status Vous devez retrouver: Network time on: Yes","title":"Installation d'un serveur de temps"},{"location":"Installation-Serveur-Temps/#installation-dun-serveur-de-temps","text":"L'horloge du serveur doit \u00eatre exacte, et pour cela, nous nous r\u00e9f\u00e9rons \u00e0 un serveur de temps. Le programme qui se connecte et met \u00e0 jour l'horloge de notre serveur sera ntp . root@atom:/home/ericadmin# apt install ntp Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: libopts25 Paquets sugg\u00e9r\u00e9s : ntp-doc Les NOUVEAUX paquets suivants seront install\u00e9s : libopts25 ntp 0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 689 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 2 035 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 libopts25 i386 1:5.18.12-3 [71,6 kB] R\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 ntp i386 1:4.2.8p10+dfsg-3+deb9u1 [617 kB] 689 ko r\u00e9ceptionn\u00e9s en 0s (3 368 ko/s) S\u00e9lection du paquet libopts25:i386 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 31885 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../libopts25_1%3a5.18.12-3_i386.deb ... D\u00e9paquetage de libopts25:i386 (1:5.18.12-3) ... S\u00e9lection du paquet ntp pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../ntp_1%3a4.2.8p10+dfsg-3+deb9u1_i386.deb ... D\u00e9paquetage de ntp (1:4.2.8p10+dfsg-3+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ... Param\u00e9trage de libopts25:i386 (1:5.18.12-3) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de ntp (1:4.2.8p10+dfsg-3+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ...","title":"Installation d'un serveur de temps"},{"location":"Installation-Serveur-Temps/#test-du-serveur-de-temps","text":"2 commandes permettent de v\u00e9rifier l'\u00e9tat de ntp : ntpq -p timedatectl Voil\u00e0 le r\u00e9sultat de ces commandes sur mon serveur: root@atom:/home/ericadmin# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== 0.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004 1.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004 2.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004 3.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004 -dev2.pik.ba 213.251.128.249 2 u 93 128 377 13.413 0.144 0.177 -ks3352891.kimsu 138.96.64.10 2 u 174 256 377 14.022 2.951 0.157 +www.mindstudios 193.79.237.14 2 u 108 128 377 11.008 0.594 0.134 -gofish.zenvps.c 193.52.184.106 2 u 180 256 377 13.865 0.770 0.094 *ip139.ip-5-196- 145.238.203.14 2 u 4 128 377 13.264 0.636 0.218 +leeto.nicolbola 145.238.203.14 2 u 97 128 377 10.257 -0.871 0.312 root@atom:/home/ericadmin# timedatectl Local time: lun. 2017-12-25 12:17:33 CET Universal time: lun. 2017-12-25 11:17:33 UTC RTC time: lun. 2017-12-25 11:17:33 Time zone: Europe/Paris (CET, +0100) Network time on: yes NTP synchronized: yes RTC in local TZ: no root@atom:/home/ericadmin# Nous pouvons voir les serveurs connect\u00e9s et l'\u00e9tat de la synchronisation. Si la derni\u00e8re commande renvoie: Network time on: No , vous pouvez essayer de configurer le service systemd de la fa\u00e7on suivante: # vim /etc/systemd/timesyncd.conf Et ajoutez la ligne suivante: [Time] Servers=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org Sauvez le fichier et testez la configuration de la fa\u00e7on suivante: # timedatectl set-ntp true # timedatectl status Vous devez retrouver: Network time on: Yes","title":"Test du serveur de temps"},{"location":"Installation-Serveur-Web/","text":"Installation d'un serveur web Nous allons installer un serveur Web: Apache . C'est juste celui que je connais le mieux. Nginx est une possible alternative tr\u00e8s pris\u00e9e et gu\u00e8re plus compliqu\u00e9e \u00e0 mettre en oeuvre. root@aijan:/etc/bind# apt install apache2 Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0 etc ... Test de notre serveur: C'est bon, voil\u00e0 une image de la page d'acceuil : Ne pas oublier d'ouvrir les ports du firewall: port 80 et 443 en TCP et UDP. Lignes \u00e0 rajouter \u00e0 firewall.sh: # HTTP + HTTPS Out $IPT -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT # HTTP + HTTPS In $IPT -t filter -A INPUT -p tcp --dport 80 -j ACCEPT $IPT -t filter -A INPUT -p tcp --dport 443 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 80 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 443 -j ACCEPT Sauvegarde de notre nouvelle configuration root@aijan:#cd /home/ericadmin/bin/ root@aijan:/home/ericadmin/bin#./firewall.sh restart root@aijan:/home/ericadmin/bin#service netfilter-persistent save Cr\u00e9ation des h\u00f4tes virtuels (virtual hosts) 3 h\u00f4tes virtuels \u00e0 cr\u00e9er: yojik.net www.yojik.net yazik.yojik.net Cr\u00e9ez 2 fichiers d'h\u00f4tes virtuels. Exemple de fichier: Virtualhost: www.yojik.net <VirtualHost *:80> ServerAdmin webmaster@yojik.net ServerName www.yojik.net DocumentRoot /var/www/html/yojiknet/ <Directory \"/var/www/html/yojiknet/index.html\"> Options Indexes MultiViews AllowOverride FileInfo AuthConfig Indexes Order allow,deny allow from all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined LogLevel warn </VirtualHost> Virtualhost: yazik.yojik.net <VirtualHost *:80> ServerAdmin webmaster@yojik.net ServerName yazik.yojik.net DocumentRoot /var/www/html/yaziknet/ <Directory \"/var/www/html/yaziknet/index.html\"> Options Indexes MultiViews AllowOverride FileInfo AuthConfig Indexes Order allow,deny allow from all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined LogLevel warn </VirtualHost> Validez-les avec: a2ensite le_nom_du_fichier (a2ensite site1 site2 (pour moi)) On recharge apache2 pour la prise en compte de nos 2 sites. service apache2 reload Cr\u00e9ation des fichiers html Cr\u00e9ez 2 r\u00e9pertoires sous /var/www/html: mkdir /var/www/html/yojiknet /var/www/html/yaziknet cd /var/www/html On cr\u00e9e un fichier index.html sous chaque r\u00e9pertoire cr\u00e9\u00e9: Exemple de fichier de base: /var/www/html/yojiknet/index.html <!DOCTYPE html> <html> <head> <title>The Yojik.net home page</title> <meta charset=\"UTF-8\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"> </head> <body> <h1>The Yojik Net home page</h1> <p>Nothing interesting at the moment .. comming soon!</p> </body> /var/www/html/yaziknet/index.html <!DOCTYPE html> <html> <head> <title>The Yazik.net home page</title> <meta charset=\"UTF-8\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"> </head> <body> <h1>The Yazik Net home page</h1> <p>Nothing interesting at the moment .. comming soon!</p> </body> </html> Dans le r\u00e9pertoire /var/www/html/ on lance la commande suivante pour ajuster les droits et propri\u00e9taires des fichiers (pour apache et Debian, c'est www-data .) chown -Rv www-data.www-data * On relance apache service apache2 restart On teste avec un navigateur. adresse 1: www.yojik.net adresse 2: yazik.yojik.net Vous vous apercevrez que la deuxi\u00e8me ne fonctionne pas: il vous faut ajouter le domaine yazik.yojik.net \u00e0 votre fichier de zone de bind et relancer bind ensuite: yazik IN CNAME atom.yojik.net. Re-testez: tout marche :)","title":"Installation d'un serveur web"},{"location":"Installation-Serveur-Web/#installation-dun-serveur-web","text":"Nous allons installer un serveur Web: Apache . C'est juste celui que je connais le mieux. Nginx est une possible alternative tr\u00e8s pris\u00e9e et gu\u00e8re plus compliqu\u00e9e \u00e0 mettre en oeuvre. root@aijan:/etc/bind# apt install apache2 Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait The following additional packages will be installed: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0 etc ... Test de notre serveur: C'est bon, voil\u00e0 une image de la page d'acceuil : Ne pas oublier d'ouvrir les ports du firewall: port 80 et 443 en TCP et UDP. Lignes \u00e0 rajouter \u00e0 firewall.sh: # HTTP + HTTPS Out $IPT -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT $IP6T -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT # HTTP + HTTPS In $IPT -t filter -A INPUT -p tcp --dport 80 -j ACCEPT $IPT -t filter -A INPUT -p tcp --dport 443 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 80 -j ACCEPT $IP6T -t filter -A INPUT -p tcp --dport 443 -j ACCEPT","title":"Installation d'un serveur web"},{"location":"Installation-Serveur-Web/#sauvegarde-de-notre-nouvelle-configuration","text":"root@aijan:#cd /home/ericadmin/bin/ root@aijan:/home/ericadmin/bin#./firewall.sh restart root@aijan:/home/ericadmin/bin#service netfilter-persistent save","title":"Sauvegarde de notre nouvelle configuration"},{"location":"Installation-Serveur-Web/#creation-des-hotes-virtuels-virtual-hosts","text":"3 h\u00f4tes virtuels \u00e0 cr\u00e9er: yojik.net www.yojik.net yazik.yojik.net Cr\u00e9ez 2 fichiers d'h\u00f4tes virtuels. Exemple de fichier: Virtualhost: www.yojik.net <VirtualHost *:80> ServerAdmin webmaster@yojik.net ServerName www.yojik.net DocumentRoot /var/www/html/yojiknet/ <Directory \"/var/www/html/yojiknet/index.html\"> Options Indexes MultiViews AllowOverride FileInfo AuthConfig Indexes Order allow,deny allow from all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined LogLevel warn </VirtualHost> Virtualhost: yazik.yojik.net <VirtualHost *:80> ServerAdmin webmaster@yojik.net ServerName yazik.yojik.net DocumentRoot /var/www/html/yaziknet/ <Directory \"/var/www/html/yaziknet/index.html\"> Options Indexes MultiViews AllowOverride FileInfo AuthConfig Indexes Order allow,deny allow from all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined LogLevel warn </VirtualHost> Validez-les avec: a2ensite le_nom_du_fichier (a2ensite site1 site2 (pour moi)) On recharge apache2 pour la prise en compte de nos 2 sites. service apache2 reload","title":"Cr\u00e9ation des h\u00f4tes virtuels (virtual hosts)"},{"location":"Installation-Serveur-Web/#creation-des-fichiers-html","text":"Cr\u00e9ez 2 r\u00e9pertoires sous /var/www/html: mkdir /var/www/html/yojiknet /var/www/html/yaziknet cd /var/www/html On cr\u00e9e un fichier index.html sous chaque r\u00e9pertoire cr\u00e9\u00e9: Exemple de fichier de base: /var/www/html/yojiknet/index.html <!DOCTYPE html> <html> <head> <title>The Yojik.net home page</title> <meta charset=\"UTF-8\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"> </head> <body> <h1>The Yojik Net home page</h1> <p>Nothing interesting at the moment .. comming soon!</p> </body> /var/www/html/yaziknet/index.html <!DOCTYPE html> <html> <head> <title>The Yazik.net home page</title> <meta charset=\"UTF-8\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"> </head> <body> <h1>The Yazik Net home page</h1> <p>Nothing interesting at the moment .. comming soon!</p> </body> </html> Dans le r\u00e9pertoire /var/www/html/ on lance la commande suivante pour ajuster les droits et propri\u00e9taires des fichiers (pour apache et Debian, c'est www-data .) chown -Rv www-data.www-data * On relance apache service apache2 restart On teste avec un navigateur. adresse 1: www.yojik.net adresse 2: yazik.yojik.net Vous vous apercevrez que la deuxi\u00e8me ne fonctionne pas: il vous faut ajouter le domaine yazik.yojik.net \u00e0 votre fichier de zone de bind et relancer bind ensuite: yazik IN CNAME atom.yojik.net. Re-testez: tout marche :)","title":"Cr\u00e9ation des fichiers html"},{"location":"Installation-Webmail/","text":"Installation de rainloop (webmail) T\u00e9l\u00e9charger la version communautaire sur le site, et la d\u00e9compresser dans votre r\u00e9pertoire web (/home/www/ pour moi.) La documentation d'installation est ici Documentation de l'installation de rainloop Installation des d\u00e9pendances: librairies et programmes Partie \u00e0 am\u00e9liorer ..... Rainloop repose sur le language PHP et il y a beaucoup de librairies n\u00e9cessaires \u00e0 son fonctionnement. J'ai install\u00e9 la base et regard\u00e9 les erreurs pour charger au fur et \u00e0 mesure les paquets n\u00e9cessaires. Je vais plut\u00f4t faire la liste de tous les paquets install\u00e9s avec php; ce sera plus simple. Vous aurez aussi besoin de unzip pour d\u00e9-archiver rainloop. apt install unzip root@atom:/var/www/html/yaziknet# dpkg -l | grep php ii libapache2-mod-php7.0 7.0.33-0+deb9u1 i386 server-side, HTML-embedded scripting language (Apache 2 module) ii php-common 1:49 all Common files for PHP packages ii php7.0 7.0.33-0+deb9u1 all server-side, HTML-embedded scripting language (metapackage) ii php7.0-cli 7.0.33-0+deb9u1 i386 command-line interpreter for the PHP scripting language ii php7.0-common 7.0.33-0+deb9u1 i386 documentation, examples and common module for PHP ii php7.0-curl 7.0.33-0+deb9u1 i386 CURL module for PHP ii php7.0-json 7.0.33-0+deb9u1 i386 JSON module for PHP ii php7.0-opcache 7.0.33-0+deb9u1 i386 Zend OpCache module for PHP ii php7.0-readline 7.0.33-0+deb9u1 i386 readline module for PHP ii php7.0-sqlite3 7.0.33-0+deb9u1 i386 SQLite3 module for PHP ii php7.0-xml 7.0.33-0+deb9u1 i386 DOM, SimpleXML, WDDX, XML, and XSL module for PHP root@atom:/var/www/html/yaziknet# Cr\u00e9ation du r\u00e9pertoire o\u00f9 sera install\u00e9 rainloop: Nous installerons rainloop dans le r\u00e9pertoire par d\u00e9faut de apache: /var/www/html/ root@atom:/home/www# cd /var/www/html root@atom:/var/www/html# mkdir rainloop root@atom:/var/www/html# cd rainloop T\u00e9l\u00e9chargement du programme et d\u00e9compression dans son r\u00e9pertoire d'accueil wget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip unzip rainloop-latest.zip -d /var/www/html/rainloop Il existe dans la documentation une approche diff\u00e9rente tout en un , qui fait appel \u00e0 un script qui fait tout . Voyez la documentation correspondante. Remplacez bien s\u00fbr repository dans les commandes suivantes par le r\u00e9pertoire dans lequel vous avez install\u00e9 rainloop. url -sL https://repository.rainloop.net/installer.php | php ou wget -qO- https://repository.rainloop.net/installer.php | php Configuration des permissions Voil\u00e0 les \u00e9tapes \u00e0 suivre: \u2022 Donner les droits de lecture/\u00e9criture correspondants et n\u00e9cessaires \u00e0 l'application: cd /var/www/html/rainloop find . -type d -exec chmod 755 {} \\; find . -type f -exec chmod 644 {} \\; \u2022 D\u00e9terminer l'utilisateur (pour nous, www-data du groupe www-data): cd /var/www/html/rainloop chown -R www-data:www-data . Mise en route du webmail dans apache Un example de site web apache (dans /etc/apache2/sites-available), que j'ai appel\u00e9 webmail.conf : <VirtualHost *:80> ServerAdmin webmaster@yojik.net ServerName webmail.yojik.net DocumentRoot /var/www/html/rainloop/ <Directory \"/var/www/html/rainloop/\"> Options Indexes MultiViews AllowOverride FileInfo AuthConfig Indexes Order allow,deny allow from all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> Le webmail sera accessible sous: webmail.yojik.net Validation du site dans apache et rechargement de apache: root@atom:/etc# a2ensite webmail root@adara:/home/www/rainloop# service apache2 restart Installation de l'interface sqlite de php Pour certaines parties de rainloop, une base de donn\u00e9es est n\u00e9cessaire; il y a le choix entre plusieurs bases de donn\u00e9es, comme mysql, postgresql et sqlite, que j'ai choisie. Il nous faut donc installer les d\u00e9pendances php correspondantes: root@adara:/home/www/rainloop# apt install php7.0-sqlite3 etc... On relance apache: root@adara:/home/www/rainloop# service apache2 restart root@adara:/home/www/rainloop# Ajout de l'acc\u00e8s en https de notre webmail (avec le programme certbot de letsencrypt): root@adara:/home/www/rainloop# certbot --apache et suivre les instructions. Relancez apache: root@adara:/home/www/rainloop# service apache2 restart root@adara:/home/www/rainloop# Votre webmail est maintenant accessible. Il nous reste \u00e0 le configurer. Configuration de notre webmail Le panneau de configuration est acessible \u00e0 cette adresse: http://webmail.yojik.net/?admin Les identifiants d'usine sont les suivants: login: admin password: 12345 Ils ont \u00e0 changer d'urgence(!) dans le panneau de configuration. Vous pouvez ensuite ajouter vos domaines ainsi que les comptes de messagerie. Les images suivantes sont celles de la documentation officielle. Vous pouvez parcourir le menu gauche pour adapter votre webmail \u00e0 vos convenance: plugins, th\u00e8mes, language d'affichage etc ...","title":"Installation d'un webmail (rainloop)"},{"location":"Installation-Webmail/#installation-de-rainloop-webmail","text":"T\u00e9l\u00e9charger la version communautaire sur le site, et la d\u00e9compresser dans votre r\u00e9pertoire web (/home/www/ pour moi.)","title":"Installation de rainloop (webmail)"},{"location":"Installation-Webmail/#la-documentation-dinstallation-est-ici","text":"Documentation de l'installation de rainloop","title":"La documentation d'installation est ici"},{"location":"Installation-Webmail/#installation-des-dependances-librairies-et-programmes","text":"Partie \u00e0 am\u00e9liorer ..... Rainloop repose sur le language PHP et il y a beaucoup de librairies n\u00e9cessaires \u00e0 son fonctionnement. J'ai install\u00e9 la base et regard\u00e9 les erreurs pour charger au fur et \u00e0 mesure les paquets n\u00e9cessaires. Je vais plut\u00f4t faire la liste de tous les paquets install\u00e9s avec php; ce sera plus simple. Vous aurez aussi besoin de unzip pour d\u00e9-archiver rainloop. apt install unzip root@atom:/var/www/html/yaziknet# dpkg -l | grep php ii libapache2-mod-php7.0 7.0.33-0+deb9u1 i386 server-side, HTML-embedded scripting language (Apache 2 module) ii php-common 1:49 all Common files for PHP packages ii php7.0 7.0.33-0+deb9u1 all server-side, HTML-embedded scripting language (metapackage) ii php7.0-cli 7.0.33-0+deb9u1 i386 command-line interpreter for the PHP scripting language ii php7.0-common 7.0.33-0+deb9u1 i386 documentation, examples and common module for PHP ii php7.0-curl 7.0.33-0+deb9u1 i386 CURL module for PHP ii php7.0-json 7.0.33-0+deb9u1 i386 JSON module for PHP ii php7.0-opcache 7.0.33-0+deb9u1 i386 Zend OpCache module for PHP ii php7.0-readline 7.0.33-0+deb9u1 i386 readline module for PHP ii php7.0-sqlite3 7.0.33-0+deb9u1 i386 SQLite3 module for PHP ii php7.0-xml 7.0.33-0+deb9u1 i386 DOM, SimpleXML, WDDX, XML, and XSL module for PHP root@atom:/var/www/html/yaziknet#","title":"Installation des d\u00e9pendances: librairies et programmes"},{"location":"Installation-Webmail/#creation-du-repertoire-ou-sera-installe-rainloop","text":"Nous installerons rainloop dans le r\u00e9pertoire par d\u00e9faut de apache: /var/www/html/ root@atom:/home/www# cd /var/www/html root@atom:/var/www/html# mkdir rainloop root@atom:/var/www/html# cd rainloop","title":"Cr\u00e9ation du r\u00e9pertoire o\u00f9 sera install\u00e9 rainloop:"},{"location":"Installation-Webmail/#telechargement-du-programme-et-decompression-dans-son-repertoire-daccueil","text":"wget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip unzip rainloop-latest.zip -d /var/www/html/rainloop Il existe dans la documentation une approche diff\u00e9rente tout en un , qui fait appel \u00e0 un script qui fait tout . Voyez la documentation correspondante. Remplacez bien s\u00fbr repository dans les commandes suivantes par le r\u00e9pertoire dans lequel vous avez install\u00e9 rainloop. url -sL https://repository.rainloop.net/installer.php | php ou wget -qO- https://repository.rainloop.net/installer.php | php","title":"T\u00e9l\u00e9chargement du programme et d\u00e9compression dans son r\u00e9pertoire d'accueil"},{"location":"Installation-Webmail/#configuration-des-permissions","text":"Voil\u00e0 les \u00e9tapes \u00e0 suivre: \u2022 Donner les droits de lecture/\u00e9criture correspondants et n\u00e9cessaires \u00e0 l'application: cd /var/www/html/rainloop find . -type d -exec chmod 755 {} \\; find . -type f -exec chmod 644 {} \\; \u2022 D\u00e9terminer l'utilisateur (pour nous, www-data du groupe www-data): cd /var/www/html/rainloop chown -R www-data:www-data .","title":"Configuration des permissions"},{"location":"Installation-Webmail/#mise-en-route-du-webmail-dans-apache","text":"Un example de site web apache (dans /etc/apache2/sites-available), que j'ai appel\u00e9 webmail.conf : <VirtualHost *:80> ServerAdmin webmaster@yojik.net ServerName webmail.yojik.net DocumentRoot /var/www/html/rainloop/ <Directory \"/var/www/html/rainloop/\"> Options Indexes MultiViews AllowOverride FileInfo AuthConfig Indexes Order allow,deny allow from all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> Le webmail sera accessible sous: webmail.yojik.net","title":"Mise en route du webmail dans apache"},{"location":"Installation-Webmail/#validation-du-site-dans-apache-et-rechargement-de-apache","text":"root@atom:/etc# a2ensite webmail root@adara:/home/www/rainloop# service apache2 restart","title":"Validation du site dans apache et rechargement de apache:"},{"location":"Installation-Webmail/#installation-de-linterface-sqlite-de-php","text":"Pour certaines parties de rainloop, une base de donn\u00e9es est n\u00e9cessaire; il y a le choix entre plusieurs bases de donn\u00e9es, comme mysql, postgresql et sqlite, que j'ai choisie. Il nous faut donc installer les d\u00e9pendances php correspondantes: root@adara:/home/www/rainloop# apt install php7.0-sqlite3 etc... On relance apache: root@adara:/home/www/rainloop# service apache2 restart root@adara:/home/www/rainloop#","title":"Installation de l'interface sqlite de php"},{"location":"Installation-Webmail/#ajout-de-lacces-en-https-de-notre-webmail-avec-le-programme-certbot-de-letsencrypt","text":"root@adara:/home/www/rainloop# certbot --apache et suivre les instructions. Relancez apache: root@adara:/home/www/rainloop# service apache2 restart root@adara:/home/www/rainloop# Votre webmail est maintenant accessible. Il nous reste \u00e0 le configurer.","title":"Ajout de l'acc\u00e8s en https de notre webmail (avec le programme certbot de letsencrypt):"},{"location":"Installation-Webmail/#configuration-de-notre-webmail","text":"Le panneau de configuration est acessible \u00e0 cette adresse: http://webmail.yojik.net/?admin Les identifiants d'usine sont les suivants: login: admin password: 12345 Ils ont \u00e0 changer d'urgence(!) dans le panneau de configuration. Vous pouvez ensuite ajouter vos domaines ainsi que les comptes de messagerie. Les images suivantes sont celles de la documentation officielle. Vous pouvez parcourir le menu gauche pour adapter votre webmail \u00e0 vos convenance: plugins, th\u00e8mes, language d'affichage etc ...","title":"Configuration de notre webmail"},{"location":"Installation-de-base/","text":"Installation d'un serveur Debian/Stretch s\u00e9curis\u00e9 Sch\u00e9ma de notre installation \"at home\" Notre installation se compose donc d'une box , Freebox dans mon cas qui sera notre passerelle vers Internet. Free permet d'avoir une adresse IPV6 dans l'abonnement de base. IL suffit de l'activer dans la configuration de votre box. A compl\u00e9ter pour d'autres FAIs et boxes. J'ai la chance de b\u00e9n\u00e9ficier d'une connexion fibre , adapt\u00e9e \u00e0 l'installation d'un serveur \u00e0 la maison. (D\u00e9bit d'upload suffisant). Notre serveur sera connect\u00e9 \u00e0 la box (au routeur) dans la zone DMZ . C'est une zone qui sera accessible de l'ext\u00e9rieur, de tout l'internet donc. C'est pourquoi nous aurons \u00e0 prendre des mesures de s\u00e9curit\u00e9 ad\u00e9quates. Notre r\u00e9seau local sera \u00e9galement connect\u00e9 \u00e0 la box, soit par c\u00e2ble (filaire) soit par wifi. Pr\u00e9requis Un serveur Il vous faut un serveur, accessible chez vous (je d\u00e9cris ici l'installation d'un \"home\" serveur, m\u00eame si la plupart des explications seront \u00e9galement valables pour un serveur h\u00e9berg\u00e9 ou d\u00e9di\u00e9. Mon serveur est motoris\u00e9 par un vieux microprocesseur Atom \u00e0 1,6Ghz, appuy\u00e9 par 2 Go de RAM et un disque SSD de 240 Go. Il sera reli\u00e9 \u00e0 un clavier et un \u00e9cran pendant la phase d'installation. Ce serveur est assez ancien (2007) et l'amor\u00e7age n'est pas bas\u00e9 sur UEFI, mais un bios standard. Je rajouterai une partie d\u00e9di\u00e9e \u00e0 l'amor\u00e7age UEFI d\u00e8s que j'aurai un serveur/machine de bureau supportant ce m\u00e9canisme. (oui, mon mat\u00e9riel est ancien ....) Un nom de domaine Un nom de domaine est indispensable si vous voulez que votre serveur soit accessible de l'ext\u00e9rieur. Il vous faudra choisir un nom, enregistr\u00e9 chez un \u201cregistrar\u201d comme OVH, Gandi ou autre. Mon domaine r\u00e9serv\u00e9 est yojik.net . example.com est un nom de domaine couramment utilis\u00e9 dans les tutoriels. Un nom de machine D\u00e9terminez le nom de votre machine: le mien sera atom . Le nom complet de ma machine serait donc: atom.yojik.net Une adresse IP fixe Une adresse IP fixe est n\u00e9cessaire m\u00eame s'il est possible de travailler avec des adresses dynamiques. Des FAIs comme Free, OVH proposent des IPs fixes (IPV4) et un pool d'adresses IPV6. D'autres fournisseurs d'acc\u00e8s proposent ces adresses fixes / IPV6 avec un suppl\u00e9ment d'abonnement. Un compte utilisateur L'installateur Debian vous demandera un mot de passe pour le compte root (super-utilisteur): notez le bien. Nous le changerons ensuite, apr\u00e8s l'installation de base. Nous utiliserons un g\u00e9n\u00e9rateur de mots de passe; il y en a pl\u00e9thore. Ensuite, il vous demandera de d\u00e9finir un compte utilisateur, ici, un compte d'administration. Nous ne nous connecterons qu'avec ce compte (SSH) et interdirons l'acc\u00e8s au compte super-utilisateur (root) par SSH. D\u00e9finissez votre nom d'administrateur ainsi que son mot de passe. Il ne sera utile que dans les premi\u00e8res \u00e9tapes. Nous s\u00e9curiserons l'acc\u00e8s SSH en n'utilisant que des connexions par clef, et uniquement pour le compte administrateur. L'acc\u00e8s SSH pour le compte super-utilisateur sera bloqu\u00e9. Nous modifierons \u00e9galement les mots de passe administrateur et super-utilisateur par la suite. R\u00e9capitulatif Nom de la machine Domaine Adresse IPV4 Comptes Mot de passe atom yojik.net 192.168.111.160 ericadmin *** root *** Pr\u00e9paration de l'installation T\u00e9l\u00e9chargement de l'image ISO netinstall (ISO de taille minimale, r\u00e9cup\u00e9ration des \u00e9l\u00e9ments suivants sur Debian.org par le r\u00e9seau) Rendez-vous \u00e0 l'adresse suivante Debian.org et choisissez l'image amd64 ou I386 ou autre suivant l'architecture de votre serveur. Mon serveur utilisera l'image i386. Note: Il existe des images \u201cnon-officielles\u201d comprenant les firmwares de p\u00e9riph\u00e9riques. (partie software des p\u00e9riph\u00e9riques). Il n'est pas recommand\u00e9 de les utiliser sur des serveurs. (Iiiak) L'adresse est la suivante: Debian.org + firmwares Copie de l'image sur une clef USB Il vous faut d\u00e9terminer le p\u00e9riph\u00e9rique utilis\u00e9 par votre clef. Ins\u00e9rez la dans votre ordinateur Linux et dans un terminal root, lancez la commande : dmesg . Cherchez les lignes qui correspondent \u00e0 votre clef USB. Voici un extrait sur ma machine: usb 4-7: new high-speed USB device number 2 using ehci-pci [ 9381.149286] usb 4-7: New USB device found, idVendor=1b1c, idProduct=1ab1 [ 9381.149291] usb 4-7: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 9381.149293] usb 4-7: Product: Voyager [ 9381.149295] usb 4-7: Manufacturer: Corsair [ 9381.149298] usb 4-7: SerialNumber: AA00000000000108 [ 9381.198595] usb-storage 4-7:1.0: USB Mass Storage device detected [ 9381.198931] scsi host8: usb-storage 4-7:1.0 [ 9381.199458] usbcore: registered new interface driver usb-storage [ 9381.200839] usbcore: registered new interface driver uas [ 9382.519813] scsi 8:0:0:0: Direct-Access Corsair Voyager 1100 PQ: 0 ANSI: 0 CCS [ 9382.520679] sd 8:0:0:0: Attached scsi generic sg4 type 0 [ 9383.462615] sd 8:0:0:0: [sdd] 31326208 512-byte logical blocks: (16.0 GB/14.9 GiB) [ 9383.463760] sd 8:0:0:0: [sdd] Write Protect is off [ 9383.463762] sd 8:0:0:0: [sdd] Mode Sense: 43 00 00 00 [ 9383.464786] sd 8:0:0:0: [sdd] No Caching mode page found [ 9383.464792] sd 8:0:0:0: [sdd] Assuming drive cache: write through [ 9383.470824] sdd: sdd1 sdd2 [ 9383.474661] sd 8:0:0:0: [sdd] Attached SCSI removable disk [ 9384.564005] ISO 9660 Extensions: Microsoft Joliet Level 3 [ 9384.566879] ISO 9660 Extensions: Microsoft Joliet Level 3 [ 9384.571964] ISO 9660 Extensions: RRIP_1991A Le p\u00e9riph\u00e9rique utilis\u00e9 sera donc (dans mon cas): /dev/sdd . Proc\u00e9dons maintenant \u00e0 la copie de notre fichier ISO sur la clef. Il y a plusieurs possibilit\u00e9s, suivant votre OS (Linux, Mac, Windows) ou votre distribution (Fedora, Debian, etc.) Copie avec un logiciel \u201csp\u00e9cialis\u00e9\u201d comme unetbootin Copie avec la commande dd C'est la derni\u00e8re solution que j'utiliserai. L'image ISO est dans mon r\u00e9pertoire T\u00e9l\u00e9chargements . dd if=./T\u00e9l\u00e9chargements/debian-9.2.1-i386-netinst.iso of=/dev/sdd bs=4096 Le param\u00e8tre \u201cbs=4096\u201d est n\u00e9cessaire pour certaines clef USB. Modification du BIOS Il vous faudra certainement aller dans le BIOS de votre serveur, touche DEL, F12, ESC, F10 ou autre (voyez l'\u00e9cran d'accueil au d\u00e9marrage qui indique habituellement la touche \u00e0 utiliser) pour entrer dans le param\u00e9trage du BIOS et indiquer sur quel p\u00e9riph\u00e9rique le serveur va d\u00e9marrer. Ins\u00e9rez votre clef et modifiez l'ordre de Boot (quel p\u00e9riph\u00e9rique sera utilis\u00e9 pour amorcer la machine). L'op\u00e9ration inverse sera souvent n\u00e9cessaire pour r\u00e9tablir l'ordre initial de d\u00e9marrage. (d\u00e9marrage sur le disque dur) Lancement de l'installation \u00c9teignez votre serveur, ins\u00e9rez la clef USB si elle n'y est pas d\u00e9j\u00e0 et rallumez votre serveur. Il faudra taper sur une touche DEL ou F12 ou autre pour acc\u00e9der au menu de d\u00e9marrage de votre serveur et choisir de d\u00e9marrer (amor\u00e7age, booter) sur votre clef. Installation du serveur sans chiffrement des partitions Nous utiliserons le mode texte, mais vous pouvez utiliser le mode graphique si vous voulez. Les \u00e9crans sont identiques. D\u00e9marrage Choix du mode d'installation Texte pour moi. Choix de la langue (clavier, interface) Langue d'installation: Fran\u00e7ais Situation g\u00e9ographique: France Configuration du clavier: fran\u00e7ais Choix du nom de la machine Sans le nom de domaine: ici, atom Le nom complet de la machine Debian est d\u00e9fini dans 2 fichiers: /etc/hostname : ce fichier contient le nom du serveur, SANS le nom de domaine. Ce fichier ne contient qu'une seule ligne (un mot): le nom de votre machine. /etc/hosts : ce fichier contient le nom complet de la machine. Il se pr\u00e9sente ainsi: 127.0.0.1 localhost # serveurs 192.168.111.160 atom.yojik.net atom # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters Vous voyez ici la correspondance entre le nom complet du serveur, son nom comme il est \u00e9crit dans /etc/hostname ainsi que son adresse IP (ici, IPV4). Nous rajouterons l'adresse IPV6 ensuite, apr\u00e8s l'installation. Choix du nom de domaine yojik.net (mettez le votre!) Saisie du mot de passe root (super-utilisateur) Confirmation du mot de passe super-utilisateur. Saisie du compte utilisateur Ici, notre compte d'administrateur (admin ou celui de votre choix); en effet, nous ne nous connecterons jamais avec le compte root , uniquement avec le compte d'administration. L'acc\u00e8s root sera bloqu\u00e9 dans le fichier de configuration de ssh . Saisie du mot de passe utilisateur. Mot de passe Confirmation de ce mot de passe. Partitionnement du disque Ici, nous avons 2 solutions principalement: 1 partitionnement avec chiffrement du disque (manuel ou automatique) 2 partitionnement sans chiffrement Nous verrons ici un partitionnement sans chiffrement. Le chiffrement sera vu dans une partie s\u00e9par\u00e9e car elle pose le probl\u00e8me de la saisie de la phrase de passe pour un serveur \u201cdistant\u201d. Ici, nous utiliserons un disque entier, avec tout dans une seule partition. Il est parfaitement possible de choisir un autre sch\u00e9ma de partitionnement, avec /home, /var, /tmp dans des partitions s\u00e9par\u00e9es. Choix d'une installation simplifi\u00e9e: Choix du disque \u00e0 partitionner: Sch\u00e9ma de partitionnement: (simplifi\u00e9 \u00e9galement ...) Confirmation du partitionnement choisi: Progression de l'installation Configuration de l'outil de gestion des paquets Nous n'avons pas d'autres sources de paquets pour l'instant: Choix du miroir France mais choisissez celui qui est le plus proche de votre localisation g\u00e9ographique. Choix du miroir de l'archive Debian: j'ai choisi deb.debian.org . Ce miroir renvoie vers le miroir le plus appropri\u00e9 et le plus rapide. Choix du proxy Choix du proxy: pas de proxy pour moi. Le proxy permet de passer par un serveur interm\u00e9diaire, par exemple, situ\u00e9 dans un autre pays. Progression de l'installation ... Configuration de \u201cpopularity contest\u201d J'ai r\u00e9pondu: oui . Choisissez si vous voulez participer aux statistiques des paquets les plus employ\u00e9s. S\u00e9lection des logiciels D\u00e9s\u00e9lectionnez \u201cenvironnement de bureau\u201d et s\u00e9lectionnez: \u201cserveur ssh\u201d et \u201cutilitaires usuels du syst\u00e8me\u201d . Validez. Installation de grub (gestionnaire d'amor\u00e7age) sur le disque. S\u00e9lection du disque sur lequel installer le programme de d\u00e9marrage grub . J'ai choisi le disque install\u00e9 dans mon serveur. On aurait aussi pu choisir un m\u00e9dia amovible comme une clef USB. Red\u00e9marrage Enlevez la clef USB qui a permis de lancer l'installation et tapez ENTER . S'identifier (se loguer). Ici, utilisateur root , puis saisie du mot de passe super-utilisateur. Nous ferons notre premi\u00e8re configuration \u00e0 partir du clavier et de l'\u00e9cran connect\u00e9s \u00e0 notre serveur. Cela n'est valable \u00e9videmment que si nous avons un acc\u00e8s physique \u00e0 notre machine. Pour une machine distante, la proc\u00e9dure est diff\u00e9rente et nous nous connecterons avec ssh . Et voil\u00e0, l'installation premi\u00e8re est termin\u00e9e. Il reste \u201cquelques\u201d \u00e9tapes comme la configuration du r\u00e9seau (nous avons utilis\u00e9 la configuration automatique pendant l'installation), la s\u00e9curisation du serveur ssh , ainsi que l'installation de programmes de surveillance (monitoring), le pare-feu. Installation de serveur avec chiffrement des partitions (m\u00e9thode manuelle) Pour cela, il faut que le serveur soit accessible ... au d\u00e9marrage, il vous sera demand\u00e9 la clef de chiffrement. Nous verrons ensuite une m\u00e9thode avec clef de chiffrement install\u00e9e sur une clef USB ou carte m\u00e9moire, ce qui permettra un red\u00e9marrage automatique du serveur sans avoir \u00e0 saisir la clef. (mais m\u00eame avec ce syst\u00e8me, il faut un acc\u00e8s physique au serveur.) Les premi\u00e8re \u00e9tapes sont identiques \u00e0 la version sans chiffrement. Le chiffrement sera configur\u00e9 lors du partitionnement du disque. Choix du mode d'Installation Choix de la Langue Choix de la situation g\u00e9ographique Configuration du clavier Installation: d\u00e9but Installation: Suite Configuration du r\u00e9seau: nom de machine Configuration du r\u00e9seau: nom de Domaine Configuration du r\u00e9seau: nom de Domaine (suite) Configuration du mot de passe super-utilisateur Confirmation du mot de passe Configuration d'un premier utilisateur (Nom/pr\u00e9nom) Configuration d'un premier utilisateur (suite) Identifiant (login) de cet utilisateur Mot de passe de cet utilisateur Confirmation C'est ici que commencent les changements de configuration. Nous allons partitionner la disque en 3: La premi\u00e8re partition est la partition /boot, non chiffr\u00e9e; il est recommand\u00e9 de r\u00e9server 500Mo pour cette partition. (Iiiak) La partition suivante est la partition swap, chiffr\u00e9e La derni\u00e8re est la partition root \"/\" chiffr\u00e9e. Nous allons utiliser la m\u00e9thode manuelle pour pouvoir fixer nous-m\u00eames la taille de nos partitions: Choix du disque \u00e0 partitionner Cr\u00e9ation de la table de partition Choix du syst\u00e8me de fichiers et du point de montage de la premi\u00e8re partition (/boot). Cr\u00e9ation des partitions suivantes (swap et \"/\") Partition swap Cr\u00e9ation de la partition root \"/\" Configuration des volumes chiffr\u00e9s Choix des partitions \u00e0 chiffrer (swap et root) Vous noterez que j'ai choisi de ne PAS effacer les donn\u00e9es du disque. En production, il faudra choisir OUI. Cette proc\u00e9dure permet de remplir les partitions avec des donn\u00e9es al\u00e9atoires et donne une meilleure s\u00e9curit\u00e9. Cette proc\u00e9dure est longue ... Choix de la clef de chiffrement Fin du partitionnement Oups! Oubli ... il nous faut configurer le point de montage / Affichage de notre table de partitions Fin du partitionnement La fin de l'installation est identique \u00e0 la version non-chiffr\u00e9e. Installation de serveur avec chiffrement des partitions (mode assist\u00e9 LVM) Le d\u00e9but de l'installation est identique. Nous allons passer directement \u00e0 la partie partitionnement. (section 12) \u00c9tape 1 \u00c9tape 2 \u00c9tape 3 \u00c9tape 4 \u00c9tape 5 \u00c9tape 6 \u00c9tape 7 \u00c9tape 8 \u00c9tape 9 \u00c9tape 10 \u00c9tape 11 Partitionnement en mode lvm chiffr\u00e9 On suit ce qui est indiqu\u00e9 sur les captures d'\u00e9cran. Choix du disque \u00e0 partitionner Choisissez le mode que vous voulez: tout dans une partition ou des partitions s\u00e9par\u00e9es. On modifie les partitions Partitionnement en cours Effacement des donn\u00e9es (\u00e9criture de donn\u00e9es al\u00e9atoires sur le disque) Saisie de la phrase de passe Suite Affichage de vos choix Confirmation de vos choix Installation du syst\u00e8me (comme pr\u00e9c\u00e9demment) \u00c9tape 23 \u00c9tape 24 \u00c9tape 25 \u00c9tape 26 \u00c9tape 27 \u00c9tape 28 \u00c9tape 29 \u00c9tape 30 \u00c9tape 31 \u00c9tape 32 \u00c9tape 33 Re-d\u00e9marrage Saisie de la phrase de passe pour d\u00e9bloquer l'acc\u00e8s au disque Et voil\u00e0 :) Installation de serveur avec chiffrement des partitions et clef de chiffrement sur support amovible WORK IN PROGRESS !!! Nous allons voir ici une m\u00e9thode pour \u00e9viter d'avoir \u00e0 saisir la phrase de passe \u00e0 chaque red\u00e9marrage. Nous allons ajouter une clef (en plus de celle que vous avez d\u00e9j\u00e0). Cette clef sera compos\u00e9e par des donn\u00e9es al\u00e9atoires d'un support amovible (clef usb, carte sdx, etc ...) Nous allons remplir le contenu de ce support avec des donn\u00e9es al\u00e9atoires, et d\u00e9finir une portion de celle-ci comme clef. Il reste \u00e9vident qu'il faut avoir un acc\u00e8s physique \u00e0a la machine... \u00c9criture de donn\u00e9es al\u00e9atoires sur le support amovible. V\u00e9rifiez avec la commande dmesg quel est le p\u00e9riph\u00e9rique amovible utilis\u00e9. Pour moi, c'est sdb . dd if=/dev/urandom of=/dev/sdb bs=4096 Nous avons utilis\u00e9 la totalit\u00e9 de la clef. Il est possible aussi de formater la clef d'une fa\u00e7on habituelle en r\u00e9servant un espace non-format\u00e9 et non allou\u00e9 pour installer notre clef secr\u00e8te. Pour cela, vous pouvez utiliser gparted par exemple. Extraction de la clef \u00e0 partir d'un secteur donn\u00e9 de la clef dd if=/dev/sdb of=/root/secret.key bs=512 skip=8 count=16 Ajout de cette clef \u00e0 cryptsetup On liste les partitions: blkid On ajoute la clef dans le slot 1 (le slot 0 contient la phrase de passe entr\u00e9e lors de l'installation.) cryptsetup luksAddKey /dev/sda3 /root/secret.key --key-slot 1 Ajout d'une r\u00e8gle udev On cr\u00e9e le fichier: /etc/udev/rules.d/99-custom-usb.rules avec le contenu suivant: SUBSYSTEMS==\"usb\", DRIVERS==\"usb\",SYMLINK+=\"usbdevice%n\" On relance le serveur et on v\u00e9rifie que la r\u00e8gle a bien \u00e9t\u00e9 prise en compte: ls -l /dev/usbdevices C'est bon. Test pas fini :(ou mieux, work in progress !)","title":"Installation du syst\u00e8me de base"},{"location":"Installation-de-base/#installation-dun-serveur-debianstretch-securise","text":"","title":"Installation d'un serveur Debian/Stretch s\u00e9curis\u00e9"},{"location":"Installation-de-base/#schema-de-notre-installation-at-home","text":"Notre installation se compose donc d'une box , Freebox dans mon cas qui sera notre passerelle vers Internet. Free permet d'avoir une adresse IPV6 dans l'abonnement de base. IL suffit de l'activer dans la configuration de votre box. A compl\u00e9ter pour d'autres FAIs et boxes. J'ai la chance de b\u00e9n\u00e9ficier d'une connexion fibre , adapt\u00e9e \u00e0 l'installation d'un serveur \u00e0 la maison. (D\u00e9bit d'upload suffisant). Notre serveur sera connect\u00e9 \u00e0 la box (au routeur) dans la zone DMZ . C'est une zone qui sera accessible de l'ext\u00e9rieur, de tout l'internet donc. C'est pourquoi nous aurons \u00e0 prendre des mesures de s\u00e9curit\u00e9 ad\u00e9quates. Notre r\u00e9seau local sera \u00e9galement connect\u00e9 \u00e0 la box, soit par c\u00e2ble (filaire) soit par wifi.","title":"Sch\u00e9ma de notre installation \"at home\""},{"location":"Installation-de-base/#prerequis","text":"Un serveur Il vous faut un serveur, accessible chez vous (je d\u00e9cris ici l'installation d'un \"home\" serveur, m\u00eame si la plupart des explications seront \u00e9galement valables pour un serveur h\u00e9berg\u00e9 ou d\u00e9di\u00e9. Mon serveur est motoris\u00e9 par un vieux microprocesseur Atom \u00e0 1,6Ghz, appuy\u00e9 par 2 Go de RAM et un disque SSD de 240 Go. Il sera reli\u00e9 \u00e0 un clavier et un \u00e9cran pendant la phase d'installation. Ce serveur est assez ancien (2007) et l'amor\u00e7age n'est pas bas\u00e9 sur UEFI, mais un bios standard. Je rajouterai une partie d\u00e9di\u00e9e \u00e0 l'amor\u00e7age UEFI d\u00e8s que j'aurai un serveur/machine de bureau supportant ce m\u00e9canisme. (oui, mon mat\u00e9riel est ancien ....) Un nom de domaine Un nom de domaine est indispensable si vous voulez que votre serveur soit accessible de l'ext\u00e9rieur. Il vous faudra choisir un nom, enregistr\u00e9 chez un \u201cregistrar\u201d comme OVH, Gandi ou autre. Mon domaine r\u00e9serv\u00e9 est yojik.net . example.com est un nom de domaine couramment utilis\u00e9 dans les tutoriels. Un nom de machine D\u00e9terminez le nom de votre machine: le mien sera atom . Le nom complet de ma machine serait donc: atom.yojik.net Une adresse IP fixe Une adresse IP fixe est n\u00e9cessaire m\u00eame s'il est possible de travailler avec des adresses dynamiques. Des FAIs comme Free, OVH proposent des IPs fixes (IPV4) et un pool d'adresses IPV6. D'autres fournisseurs d'acc\u00e8s proposent ces adresses fixes / IPV6 avec un suppl\u00e9ment d'abonnement. Un compte utilisateur L'installateur Debian vous demandera un mot de passe pour le compte root (super-utilisteur): notez le bien. Nous le changerons ensuite, apr\u00e8s l'installation de base. Nous utiliserons un g\u00e9n\u00e9rateur de mots de passe; il y en a pl\u00e9thore. Ensuite, il vous demandera de d\u00e9finir un compte utilisateur, ici, un compte d'administration. Nous ne nous connecterons qu'avec ce compte (SSH) et interdirons l'acc\u00e8s au compte super-utilisateur (root) par SSH. D\u00e9finissez votre nom d'administrateur ainsi que son mot de passe. Il ne sera utile que dans les premi\u00e8res \u00e9tapes. Nous s\u00e9curiserons l'acc\u00e8s SSH en n'utilisant que des connexions par clef, et uniquement pour le compte administrateur. L'acc\u00e8s SSH pour le compte super-utilisateur sera bloqu\u00e9. Nous modifierons \u00e9galement les mots de passe administrateur et super-utilisateur par la suite.","title":"Pr\u00e9requis"},{"location":"Installation-de-base/#recapitulatif","text":"Nom de la machine Domaine Adresse IPV4 Comptes Mot de passe atom yojik.net 192.168.111.160 ericadmin *** root ***","title":"R\u00e9capitulatif"},{"location":"Installation-de-base/#preparation-de-linstallation","text":"","title":"Pr\u00e9paration de l'installation"},{"location":"Installation-de-base/#telechargement-de-limage-iso-netinstall","text":"(ISO de taille minimale, r\u00e9cup\u00e9ration des \u00e9l\u00e9ments suivants sur Debian.org par le r\u00e9seau) Rendez-vous \u00e0 l'adresse suivante Debian.org et choisissez l'image amd64 ou I386 ou autre suivant l'architecture de votre serveur. Mon serveur utilisera l'image i386. Note: Il existe des images \u201cnon-officielles\u201d comprenant les firmwares de p\u00e9riph\u00e9riques. (partie software des p\u00e9riph\u00e9riques). Il n'est pas recommand\u00e9 de les utiliser sur des serveurs. (Iiiak) L'adresse est la suivante: Debian.org + firmwares","title":"T\u00e9l\u00e9chargement de l'image ISO netinstall"},{"location":"Installation-de-base/#copie-de-limage-sur-une-clef-usb","text":"Il vous faut d\u00e9terminer le p\u00e9riph\u00e9rique utilis\u00e9 par votre clef. Ins\u00e9rez la dans votre ordinateur Linux et dans un terminal root, lancez la commande : dmesg . Cherchez les lignes qui correspondent \u00e0 votre clef USB. Voici un extrait sur ma machine: usb 4-7: new high-speed USB device number 2 using ehci-pci [ 9381.149286] usb 4-7: New USB device found, idVendor=1b1c, idProduct=1ab1 [ 9381.149291] usb 4-7: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 9381.149293] usb 4-7: Product: Voyager [ 9381.149295] usb 4-7: Manufacturer: Corsair [ 9381.149298] usb 4-7: SerialNumber: AA00000000000108 [ 9381.198595] usb-storage 4-7:1.0: USB Mass Storage device detected [ 9381.198931] scsi host8: usb-storage 4-7:1.0 [ 9381.199458] usbcore: registered new interface driver usb-storage [ 9381.200839] usbcore: registered new interface driver uas [ 9382.519813] scsi 8:0:0:0: Direct-Access Corsair Voyager 1100 PQ: 0 ANSI: 0 CCS [ 9382.520679] sd 8:0:0:0: Attached scsi generic sg4 type 0 [ 9383.462615] sd 8:0:0:0: [sdd] 31326208 512-byte logical blocks: (16.0 GB/14.9 GiB) [ 9383.463760] sd 8:0:0:0: [sdd] Write Protect is off [ 9383.463762] sd 8:0:0:0: [sdd] Mode Sense: 43 00 00 00 [ 9383.464786] sd 8:0:0:0: [sdd] No Caching mode page found [ 9383.464792] sd 8:0:0:0: [sdd] Assuming drive cache: write through [ 9383.470824] sdd: sdd1 sdd2 [ 9383.474661] sd 8:0:0:0: [sdd] Attached SCSI removable disk [ 9384.564005] ISO 9660 Extensions: Microsoft Joliet Level 3 [ 9384.566879] ISO 9660 Extensions: Microsoft Joliet Level 3 [ 9384.571964] ISO 9660 Extensions: RRIP_1991A Le p\u00e9riph\u00e9rique utilis\u00e9 sera donc (dans mon cas): /dev/sdd . Proc\u00e9dons maintenant \u00e0 la copie de notre fichier ISO sur la clef. Il y a plusieurs possibilit\u00e9s, suivant votre OS (Linux, Mac, Windows) ou votre distribution (Fedora, Debian, etc.) Copie avec un logiciel \u201csp\u00e9cialis\u00e9\u201d comme unetbootin Copie avec la commande dd C'est la derni\u00e8re solution que j'utiliserai. L'image ISO est dans mon r\u00e9pertoire T\u00e9l\u00e9chargements . dd if=./T\u00e9l\u00e9chargements/debian-9.2.1-i386-netinst.iso of=/dev/sdd bs=4096 Le param\u00e8tre \u201cbs=4096\u201d est n\u00e9cessaire pour certaines clef USB.","title":"Copie de l'image sur une clef USB"},{"location":"Installation-de-base/#modification-du-bios","text":"Il vous faudra certainement aller dans le BIOS de votre serveur, touche DEL, F12, ESC, F10 ou autre (voyez l'\u00e9cran d'accueil au d\u00e9marrage qui indique habituellement la touche \u00e0 utiliser) pour entrer dans le param\u00e9trage du BIOS et indiquer sur quel p\u00e9riph\u00e9rique le serveur va d\u00e9marrer. Ins\u00e9rez votre clef et modifiez l'ordre de Boot (quel p\u00e9riph\u00e9rique sera utilis\u00e9 pour amorcer la machine). L'op\u00e9ration inverse sera souvent n\u00e9cessaire pour r\u00e9tablir l'ordre initial de d\u00e9marrage. (d\u00e9marrage sur le disque dur)","title":"Modification du BIOS"},{"location":"Installation-de-base/#lancement-de-linstallation","text":"\u00c9teignez votre serveur, ins\u00e9rez la clef USB si elle n'y est pas d\u00e9j\u00e0 et rallumez votre serveur. Il faudra taper sur une touche DEL ou F12 ou autre pour acc\u00e9der au menu de d\u00e9marrage de votre serveur et choisir de d\u00e9marrer (amor\u00e7age, booter) sur votre clef.","title":"Lancement de l'installation"},{"location":"Installation-de-base/#installation-du-serveur-sans-chiffrement-des-partitions","text":"Nous utiliserons le mode texte, mais vous pouvez utiliser le mode graphique si vous voulez. Les \u00e9crans sont identiques. D\u00e9marrage Choix du mode d'installation Texte pour moi. Choix de la langue (clavier, interface) Langue d'installation: Fran\u00e7ais Situation g\u00e9ographique: France Configuration du clavier: fran\u00e7ais Choix du nom de la machine Sans le nom de domaine: ici, atom Le nom complet de la machine Debian est d\u00e9fini dans 2 fichiers: /etc/hostname : ce fichier contient le nom du serveur, SANS le nom de domaine. Ce fichier ne contient qu'une seule ligne (un mot): le nom de votre machine. /etc/hosts : ce fichier contient le nom complet de la machine. Il se pr\u00e9sente ainsi: 127.0.0.1 localhost # serveurs 192.168.111.160 atom.yojik.net atom # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters Vous voyez ici la correspondance entre le nom complet du serveur, son nom comme il est \u00e9crit dans /etc/hostname ainsi que son adresse IP (ici, IPV4). Nous rajouterons l'adresse IPV6 ensuite, apr\u00e8s l'installation. Choix du nom de domaine yojik.net (mettez le votre!) Saisie du mot de passe root (super-utilisateur) Confirmation du mot de passe super-utilisateur. Saisie du compte utilisateur Ici, notre compte d'administrateur (admin ou celui de votre choix); en effet, nous ne nous connecterons jamais avec le compte root , uniquement avec le compte d'administration. L'acc\u00e8s root sera bloqu\u00e9 dans le fichier de configuration de ssh . Saisie du mot de passe utilisateur. Mot de passe Confirmation de ce mot de passe. Partitionnement du disque Ici, nous avons 2 solutions principalement: 1 partitionnement avec chiffrement du disque (manuel ou automatique) 2 partitionnement sans chiffrement Nous verrons ici un partitionnement sans chiffrement. Le chiffrement sera vu dans une partie s\u00e9par\u00e9e car elle pose le probl\u00e8me de la saisie de la phrase de passe pour un serveur \u201cdistant\u201d. Ici, nous utiliserons un disque entier, avec tout dans une seule partition. Il est parfaitement possible de choisir un autre sch\u00e9ma de partitionnement, avec /home, /var, /tmp dans des partitions s\u00e9par\u00e9es. Choix d'une installation simplifi\u00e9e: Choix du disque \u00e0 partitionner: Sch\u00e9ma de partitionnement: (simplifi\u00e9 \u00e9galement ...) Confirmation du partitionnement choisi: Progression de l'installation Configuration de l'outil de gestion des paquets Nous n'avons pas d'autres sources de paquets pour l'instant: Choix du miroir France mais choisissez celui qui est le plus proche de votre localisation g\u00e9ographique. Choix du miroir de l'archive Debian: j'ai choisi deb.debian.org . Ce miroir renvoie vers le miroir le plus appropri\u00e9 et le plus rapide. Choix du proxy Choix du proxy: pas de proxy pour moi. Le proxy permet de passer par un serveur interm\u00e9diaire, par exemple, situ\u00e9 dans un autre pays. Progression de l'installation ... Configuration de \u201cpopularity contest\u201d J'ai r\u00e9pondu: oui . Choisissez si vous voulez participer aux statistiques des paquets les plus employ\u00e9s. S\u00e9lection des logiciels D\u00e9s\u00e9lectionnez \u201cenvironnement de bureau\u201d et s\u00e9lectionnez: \u201cserveur ssh\u201d et \u201cutilitaires usuels du syst\u00e8me\u201d . Validez. Installation de grub (gestionnaire d'amor\u00e7age) sur le disque. S\u00e9lection du disque sur lequel installer le programme de d\u00e9marrage grub . J'ai choisi le disque install\u00e9 dans mon serveur. On aurait aussi pu choisir un m\u00e9dia amovible comme une clef USB. Red\u00e9marrage Enlevez la clef USB qui a permis de lancer l'installation et tapez ENTER . S'identifier (se loguer). Ici, utilisateur root , puis saisie du mot de passe super-utilisateur. Nous ferons notre premi\u00e8re configuration \u00e0 partir du clavier et de l'\u00e9cran connect\u00e9s \u00e0 notre serveur. Cela n'est valable \u00e9videmment que si nous avons un acc\u00e8s physique \u00e0 notre machine. Pour une machine distante, la proc\u00e9dure est diff\u00e9rente et nous nous connecterons avec ssh . Et voil\u00e0, l'installation premi\u00e8re est termin\u00e9e. Il reste \u201cquelques\u201d \u00e9tapes comme la configuration du r\u00e9seau (nous avons utilis\u00e9 la configuration automatique pendant l'installation), la s\u00e9curisation du serveur ssh , ainsi que l'installation de programmes de surveillance (monitoring), le pare-feu.","title":"Installation du serveur sans chiffrement des partitions"},{"location":"Installation-de-base/#installation-de-serveur-avec-chiffrement-des-partitions-methode-manuelle","text":"Pour cela, il faut que le serveur soit accessible ... au d\u00e9marrage, il vous sera demand\u00e9 la clef de chiffrement. Nous verrons ensuite une m\u00e9thode avec clef de chiffrement install\u00e9e sur une clef USB ou carte m\u00e9moire, ce qui permettra un red\u00e9marrage automatique du serveur sans avoir \u00e0 saisir la clef. (mais m\u00eame avec ce syst\u00e8me, il faut un acc\u00e8s physique au serveur.) Les premi\u00e8re \u00e9tapes sont identiques \u00e0 la version sans chiffrement. Le chiffrement sera configur\u00e9 lors du partitionnement du disque. Choix du mode d'Installation Choix de la Langue Choix de la situation g\u00e9ographique Configuration du clavier Installation: d\u00e9but Installation: Suite Configuration du r\u00e9seau: nom de machine Configuration du r\u00e9seau: nom de Domaine Configuration du r\u00e9seau: nom de Domaine (suite) Configuration du mot de passe super-utilisateur Confirmation du mot de passe Configuration d'un premier utilisateur (Nom/pr\u00e9nom) Configuration d'un premier utilisateur (suite) Identifiant (login) de cet utilisateur Mot de passe de cet utilisateur Confirmation C'est ici que commencent les changements de configuration. Nous allons partitionner la disque en 3: La premi\u00e8re partition est la partition /boot, non chiffr\u00e9e; il est recommand\u00e9 de r\u00e9server 500Mo pour cette partition. (Iiiak) La partition suivante est la partition swap, chiffr\u00e9e La derni\u00e8re est la partition root \"/\" chiffr\u00e9e. Nous allons utiliser la m\u00e9thode manuelle pour pouvoir fixer nous-m\u00eames la taille de nos partitions: Choix du disque \u00e0 partitionner Cr\u00e9ation de la table de partition Choix du syst\u00e8me de fichiers et du point de montage de la premi\u00e8re partition (/boot). Cr\u00e9ation des partitions suivantes (swap et \"/\") Partition swap Cr\u00e9ation de la partition root \"/\" Configuration des volumes chiffr\u00e9s Choix des partitions \u00e0 chiffrer (swap et root) Vous noterez que j'ai choisi de ne PAS effacer les donn\u00e9es du disque. En production, il faudra choisir OUI. Cette proc\u00e9dure permet de remplir les partitions avec des donn\u00e9es al\u00e9atoires et donne une meilleure s\u00e9curit\u00e9. Cette proc\u00e9dure est longue ... Choix de la clef de chiffrement Fin du partitionnement Oups! Oubli ... il nous faut configurer le point de montage / Affichage de notre table de partitions Fin du partitionnement La fin de l'installation est identique \u00e0 la version non-chiffr\u00e9e.","title":"Installation de serveur avec chiffrement des partitions (m\u00e9thode manuelle)"},{"location":"Installation-de-base/#installation-de-serveur-avec-chiffrement-des-partitions-mode-assiste-lvm","text":"Le d\u00e9but de l'installation est identique. Nous allons passer directement \u00e0 la partie partitionnement. (section 12) \u00c9tape 1 \u00c9tape 2 \u00c9tape 3 \u00c9tape 4 \u00c9tape 5 \u00c9tape 6 \u00c9tape 7 \u00c9tape 8 \u00c9tape 9 \u00c9tape 10 \u00c9tape 11 Partitionnement en mode lvm chiffr\u00e9 On suit ce qui est indiqu\u00e9 sur les captures d'\u00e9cran. Choix du disque \u00e0 partitionner Choisissez le mode que vous voulez: tout dans une partition ou des partitions s\u00e9par\u00e9es. On modifie les partitions Partitionnement en cours Effacement des donn\u00e9es (\u00e9criture de donn\u00e9es al\u00e9atoires sur le disque) Saisie de la phrase de passe Suite Affichage de vos choix Confirmation de vos choix Installation du syst\u00e8me (comme pr\u00e9c\u00e9demment) \u00c9tape 23 \u00c9tape 24 \u00c9tape 25 \u00c9tape 26 \u00c9tape 27 \u00c9tape 28 \u00c9tape 29 \u00c9tape 30 \u00c9tape 31 \u00c9tape 32 \u00c9tape 33 Re-d\u00e9marrage Saisie de la phrase de passe pour d\u00e9bloquer l'acc\u00e8s au disque Et voil\u00e0 :)","title":"Installation de serveur avec chiffrement des partitions (mode assist\u00e9 LVM)"},{"location":"Installation-de-base/#installation-de-serveur-avec-chiffrement-des-partitions-et-clef-de-chiffrement-sur-support-amovible","text":"WORK IN PROGRESS !!! Nous allons voir ici une m\u00e9thode pour \u00e9viter d'avoir \u00e0 saisir la phrase de passe \u00e0 chaque red\u00e9marrage. Nous allons ajouter une clef (en plus de celle que vous avez d\u00e9j\u00e0). Cette clef sera compos\u00e9e par des donn\u00e9es al\u00e9atoires d'un support amovible (clef usb, carte sdx, etc ...) Nous allons remplir le contenu de ce support avec des donn\u00e9es al\u00e9atoires, et d\u00e9finir une portion de celle-ci comme clef. Il reste \u00e9vident qu'il faut avoir un acc\u00e8s physique \u00e0a la machine...","title":"Installation de serveur avec chiffrement des partitions et clef de chiffrement sur support amovible"},{"location":"Installation-de-base/#ecriture-de-donnees-aleatoires-sur-le-support-amovible","text":"V\u00e9rifiez avec la commande dmesg quel est le p\u00e9riph\u00e9rique amovible utilis\u00e9. Pour moi, c'est sdb . dd if=/dev/urandom of=/dev/sdb bs=4096 Nous avons utilis\u00e9 la totalit\u00e9 de la clef. Il est possible aussi de formater la clef d'une fa\u00e7on habituelle en r\u00e9servant un espace non-format\u00e9 et non allou\u00e9 pour installer notre clef secr\u00e8te. Pour cela, vous pouvez utiliser gparted par exemple.","title":"\u00c9criture de donn\u00e9es al\u00e9atoires sur le support amovible."},{"location":"Installation-de-base/#extraction-de-la-clef-a-partir-dun-secteur-donne-de-la-clef","text":"dd if=/dev/sdb of=/root/secret.key bs=512 skip=8 count=16","title":"Extraction de la clef \u00e0 partir d'un secteur donn\u00e9 de la clef"},{"location":"Installation-de-base/#ajout-de-cette-clef-a-cryptsetup","text":"On liste les partitions: blkid On ajoute la clef dans le slot 1 (le slot 0 contient la phrase de passe entr\u00e9e lors de l'installation.) cryptsetup luksAddKey /dev/sda3 /root/secret.key --key-slot 1","title":"Ajout de cette clef \u00e0 cryptsetup"},{"location":"Installation-de-base/#ajout-dune-regle-udev","text":"On cr\u00e9e le fichier: /etc/udev/rules.d/99-custom-usb.rules avec le contenu suivant: SUBSYSTEMS==\"usb\", DRIVERS==\"usb\",SYMLINK+=\"usbdevice%n\" On relance le serveur et on v\u00e9rifie que la r\u00e8gle a bien \u00e9t\u00e9 prise en compte: ls -l /dev/usbdevices C'est bon.","title":"Ajout d'une r\u00e8gle udev"},{"location":"Installation-de-base/#test","text":"pas fini :(ou mieux, work in progress !)","title":"Test"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/","text":"Premi\u00e8res \u00e9tapes de s\u00e9curisation du serveur Pr\u00e9ambule (\u00e0 r\u00e9aliser sur le serveur en mode super-utilisateur) Pour mon usage personnel, j'installe syst\u00e9matiquement mc , petit programme de gestion de fichiers en mode texte qui permet de se d\u00e9placer facilement dans les r\u00e9pertoires, d'\u00e9diter, de d\u00e9placer les fichiers etc. apt install mc J'installe aussi vim , pour remplacer l'\u00e9diteur vi ou nano install\u00e9 par d\u00e9faut par Debian. apt install vim Installation des utilitaires syst\u00e8me comme netstat ifconfig etc. apt install net-tools Ajoute des d\u00e9pots contrib: vim /etc/apt/sources.list deb http://debian.mirrors.ovh.net/debian stretch main contrib deb-src http://debian.mirrors.ovh.net/debian stretch main main contrib deb http://security.debian.org/debian-security stretch/updates main main contrib deb-src http://security.debian.org/debian-security stretch/updates main main contrib # stretch-updates, previously known as 'volatile' deb http://debian.mirrors.ovh.net/debian stretch-updates main main contrib deb-src http://debian.mirrors.ovh.net/debian stretch-updates main main contrib Mise \u00e0 jour des d\u00e9pots de paquets, et mise \u00e0 jour du syst\u00e8me: apt update && apt upgrade R\u00e9cup\u00e9ration de l'IP du serveur: Il nous faut conna\u00eetre l'adresse IP de notre serveur qui est allou\u00e9e dynamiquement par dhcp . Nous utiliserons la commande ifconfig (p\u00e9rim\u00e9e? Voir plus bas l'utilisation des commandes ip ): root@atom:/home/ericadmin# ifconfig enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.111.23 netmask 255.255.255.0 broadcast 192.168.111.255 inet6 2a01:e0a:54:c220:223:54ff:fec6:a07 prefixlen 64 scopeid 0x0<global> inet6 fe80::223:54ff:fec6:a07 prefixlen 64 scopeid 0x20<link> ether 00:23:54:c6:0a:07 txqueuelen 1000 (Ethernet) RX packets 9220 bytes 7825813 (7.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2534 bytes 282820 (276.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Boucle locale) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 Notre adresse IPV4 est: 192.168.111.23 Link Mauve et sebseb01 (Linuxfr) viennent de m'indiquer d'utiliser les iptools: root@atom:~# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:23:54:c6:0a:07 brd ff:ff:ff:ff:ff:ff inet 192.168.111.23/24 brd 192.168.111.255 scope global enp4s0 valid_lft forever preferred_lft forever inet6 2a01:e0a:54:c220:223:54ff:fec6:a07/64 scope global mngtmpaddr dynamic valid_lft 86201sec preferred_lft 86201sec inet6 fe80::223:54ff:fec6:a07/64 scope link valid_lft forever preferred_lft forever 3: wlp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 00:15:af:db:b7:37 brd ff:ff:ff:ff:ff:ff root@atom:~# Les adresses IPV6 commen\u00e7ant par fe80 sont des adresses limit\u00e9es au r\u00e9seau local. S\u00e9curisation de ssh Voir le lien suivant: Le blog de Guillaume Op\u00e9rations \u00e0 effectuer sur le poste principal Nous g\u00e9n\u00e9rons notre paire de clefs pour l'authentification par clefs sur votre poste principal (si vous n'avez pas encore de jeu de clefs). Op\u00e9ration \u00e0 effectuer sur votre poste principal. ssh-keygen Il vous faut copier maintenant la clef sur le serveur: ssh-copy-id -i ~/.ssh/id_rsa.pub ericadmin@192.168.111.23 ou ssh-copy-id ericadmin@192.168.111.23 N'oubliez pas de mettre vos identifiants propres, bien s\u00fbr. On teste comme le recommande ssh: eric@aldebaran:~$ ssh 'ericadmin@91.121.72.10' Linux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 Debian GNU/Linux 9 (stretch) Linux adara.yojik.eu 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 GNU/Linux Server : 141519 IPv4 : 91.121.72.10 IPv6 : 2001:41d0:1:7d0a::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 15:08:32 2018 from 82.64.48.5 Et on teste qu'on peut passer super-utilisateur \u00e0 partir de ce compte. ericadmin@adara:~$ su Mot de passe : root@adara:/home/ericadmin# Op\u00e9rations \u00e0 effectuer sur le serveur en mode super-utilisateur. La configuration se fait dans le fichier /etc/ssh/sshd_config , fichier qu'il va falloir \u00e9diter avec vim pas exemple. Nous allons d'abord en faire une copie de sauvegarde: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig vim /etc/ssh/sshd_config Nous n'allons autoriser que la connexion d'un user d'administration (pas de connexion de root par exemple), activer l' authentification par clefs , et supprimer l'authentification par login/mot de passe (en mode ssh). Vous pourrez toujours vous connecter avec le couple login/mot de passe si vous avez un acc\u00e8s physique \u00e0 votre serveur. Nous garderons le port standard d'\u00e9coute (rien \u00e0 changer dans le fichier), mais j'ai ajout\u00e9 une note sur le changement de port (sugg\u00e9r\u00e9 par Laurent). Je ne suis pas convaincu que le changement de port puisse diminuer la surface d'attaque du serveur, mais pourquoi pas, c'est un changement mineur: Port 22 Nous interdisons la connexion par root : PermitRootLogin no Activation de l'authentification par clef (rien \u00e0 changer dans le fichier): PubkeyAuthentication yes Nous ajoutons une liste d'utilisateurs autoris\u00e9s \u00e0 se connecter. AllowUsers ericadmin A la place de ericadmin mettez bien s\u00fbr le nom de l'utilisateur que vous avez entr\u00e9 pendant la phase d'installation. Nous pouvons limiter le nombre de tentatives de connexion: MaxAuthTries 1 Interdiction de la connexion par couple login/mot de passe: PasswordAuthentication no D\u00e9sactivation de PAM UsePAM no Sauvegarde du fichier de configuration. (commande escape, suivie de ZZ pour vim) Red\u00e9marrage du service ssh systemctl restart sshd Test de connexion Sur votre ordinateur principal, dans un terminal, tapez: ssh ericadmin@192.168.111.23 Vous devez \u00eatre connect\u00e9s (logu\u00e9s) sur le serveur. Essayez avec l'utilisateur root: ssh root@192.168.111.23 Cela doit \u00e9chouer. eric@aldebaran:~$ ssh 'ericadmin@192.168.111.23' Last login: Sun Dec 17 16:37:40 2017 from 192.168.111.150 ericadmin@atom:~$ Voil\u00e0 pour la premi\u00e8re phase. Note : Il est possible de changer le port d'\u00e9coute de SSH en changeant celui-ci dans le fichier de configuration **/etc/ssh/sshd_config: Faites la modification suivante: vim /etc/ssh/sshd_config Port 2222 Et relancez sshd: service sshd restart Pour se connecter, utilsez la commande suivante: ssh -p 2222 ericadmin@192.168.111.23 S\u00e9curisation plus pouss\u00e9 de SSH Les r\u00e9centes attaques sur les m\u00e9thodes de chiffrage imposent l'utilisation de clef de chiffrement plus \u00e9volu\u00e9es. Les anciennes ont des failles. Le site de Mozilla nous permet d'ajuster nos configurations et d'utiliser les meilleures m\u00e9thodes de chiffrement actuelles. Deuxi\u00e8me phase S\u00e9curisation des mots de passe J'utilise un g\u00e9n\u00e9rateur de mots de passe pour le compte root et le compte ericadmin . Il y a pl\u00e9thore de g\u00e9n\u00e9rateurs de mots de passe, certains \u00e0 base d'utilitaires tout pr\u00eats, d'autres cr\u00e9\u00e9s \u00e0 l'aide commande unix standards. Les 3 g\u00e9n\u00e9rateurs tout pr\u00eats les plus cit\u00e9s dans la documentation sont: PWGEN MAKPASSWD PASSWORDMAKER Pour l'installation, utilisez les commandes suivantes: apt install pwgen apt install makepasswd apt install passwordmaker-cli Exemples d'utilisation de ces programmes: Utilisation de pwgen : Pour obtenir de l'aide \u00e0 l'utilisation de cet utilitaire, tapez: pwgen --help . Vous pouvez faire varier le niveau de s\u00e9curit\u00e9 ainsi que le nombre de mots de passe g\u00e9n\u00e9r\u00e9s et la longueur des mots de passe. eric@aldebaran:~$ pwgen oow1Osho teM3chai Aim5shee Sheme1yo aiR6aem1 Vooxeiv0 Iabeenu1 kae7Xie5 oacei4aV Ohb8ceib zo0shu6F Dob2chie Roo5eeLa fee5Nooh Phi0suim OMeigh2w nah2Ool5 Saix6lie EeNaem5u ooVoh3ki IN5aeF9p CuHu8Aib vaim2Jia chah0Ier ShieC6ze Teex4tie mei6ou7I Ath6aiFe uw4quoHa lad8Quee ohQuai9Y Sho5Eem6 aoCaol3W ooGah9th bix6Aic9 thee1Coo lie0ahTe eiz0iiSh cieYu8Ie Ealu3chi vaeYee6c ahje9aeJ Sheenee7 eesh1Iez Odaa6kah aico6Jah aphahP4U aYePh1ev phohNie8 Chuut3ie eeb9ieDa ohp9AhGi efae5ooV Shiere5c ahV8riek Seegohv1 Eetohy1a Lievoh0k jox3uf6K chai3Woo iecoh0Iu ieGh9tuz UMeex2ah Eathaur8 Ood2oeho paeSah0p jaihoo1U eemoi9Ee ile1So4z OongeiN6 aaY9iuch ew3Iemoo Iech0Eey OoMie0ah OhBei1ae Ohsh4aik jah0faiT ioW7oz6t yee1Uphu ies4eeNa pooP8eeg iePoh4ya fooL3uqu ieGiej1X Ein7eifu ool7Olae eub5ooSe eyo8EiNu ach9ohWo Foog9Oev aej9geiH Thahg6Di eegei4Ai eN7quu3b waiK2ieg foThe7zi fu2Phoug iYaeg4if iLu6eeFi Aeshoo0i uxoGh6no id1TeRei diob7Pha vokuuN7h Chokei8J Iemee8ah eingei0E ubieh2Ch daiyu3EB QueiQu6H Jib0uwee wi9Xoodu eeL3osh2 Eo3Ae1ch bieWui2a ro6chiCo engu0ooF Eebeu2jo ee7Eey8t EiSeen5i ohNgai6i Iutaez4a xah1yeeG eGhi5Ouz vaiYu6ee fae0AeP5 jee0Ib2I OS3xuwae Eefohp1u eegiK6ae ohyuom7V Eij8eeNi Ou0ec7ye Eethoh4e eeHi2ugh ichoLae3 UT8oopoo oox6Ohx9 ohbaL2hu oht9kaiR Ieho8Ou1 Ten6saet cae7Iexi daDuas9e ShiexaT7 Lei6etii ea4aoH8y ja8Zai8g phaeG6Hi sheNg8ee Oow5phae aa7gohPi nahS8Eeg ba6Roh9j ooRo6epo pheNoam1 johF7ii9 vuZ4Latu xai5og6H aeS8hu2I eric@aldebaran:~$ Vous pouvez prendre le mot de passe que vous voulez dans le tableau g\u00e9n\u00e9r\u00e9. Pour un seul mot de passe: eric@aldebaran:~$ pwgen -1 Eerai4Sh Pour un mot de passe mieux s\u00e9curis\u00e9: eric@aldebaran:~$ pwgen -1 -s tx2CqGyf Encore plus s\u00e9curis\u00e9 avec l'option -y: eric@aldebaran:~$ pwgen -1 -s -y a+01K!U~ Utilisation de makepasswd : Tapez: makepasswd --help pour de l'aide \u00e0 l'utilisation des param\u00e8tres. makepasswd --count 5 --minchars 10 S\u00e9curisation du mot de passe super-utilisateur (root) Utilisez un des utilitaires ci-dessus. Attention \u00e0 la longueur minimale! Sous le user \u201cadmin\u201d, tapez: passwd pour changer le mot de passe admin. S\u00e9curisation du mot de passe administrateur Utilisez un des utilitaires ci-dessus. Attention \u00e0 la longueur minimale! Sous le user \u201croot\u201d, tapez: passwd pour changer le mot de passe root. Test du hostname La commande hostname nous indiquera le nom \u201ccourt\u201d de notre machine, et la commande hostname -f sa version longue avec le nom de domaine. root@atom:/home/ericadmin# hostname atom root@atom:/home/ericadmin# root@atom:/home/ericadmin# hostname -f atom.yojik.net root@atom:/home/ericadmin# Le r\u00e9sultat est bon.","title":"Premi\u00e8re \u00e9tapes de s\u00e9curisation du serveur"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#premieres-etapes-de-securisation-du-serveur","text":"","title":"Premi\u00e8res \u00e9tapes de s\u00e9curisation du serveur"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#preambule","text":"(\u00e0 r\u00e9aliser sur le serveur en mode super-utilisateur) Pour mon usage personnel, j'installe syst\u00e9matiquement mc , petit programme de gestion de fichiers en mode texte qui permet de se d\u00e9placer facilement dans les r\u00e9pertoires, d'\u00e9diter, de d\u00e9placer les fichiers etc. apt install mc J'installe aussi vim , pour remplacer l'\u00e9diteur vi ou nano install\u00e9 par d\u00e9faut par Debian. apt install vim Installation des utilitaires syst\u00e8me comme netstat ifconfig etc. apt install net-tools Ajoute des d\u00e9pots contrib: vim /etc/apt/sources.list deb http://debian.mirrors.ovh.net/debian stretch main contrib deb-src http://debian.mirrors.ovh.net/debian stretch main main contrib deb http://security.debian.org/debian-security stretch/updates main main contrib deb-src http://security.debian.org/debian-security stretch/updates main main contrib # stretch-updates, previously known as 'volatile' deb http://debian.mirrors.ovh.net/debian stretch-updates main main contrib deb-src http://debian.mirrors.ovh.net/debian stretch-updates main main contrib Mise \u00e0 jour des d\u00e9pots de paquets, et mise \u00e0 jour du syst\u00e8me: apt update && apt upgrade","title":"Pr\u00e9ambule"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#recuperation-de-lip-du-serveur","text":"Il nous faut conna\u00eetre l'adresse IP de notre serveur qui est allou\u00e9e dynamiquement par dhcp . Nous utiliserons la commande ifconfig (p\u00e9rim\u00e9e? Voir plus bas l'utilisation des commandes ip ): root@atom:/home/ericadmin# ifconfig enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.111.23 netmask 255.255.255.0 broadcast 192.168.111.255 inet6 2a01:e0a:54:c220:223:54ff:fec6:a07 prefixlen 64 scopeid 0x0<global> inet6 fe80::223:54ff:fec6:a07 prefixlen 64 scopeid 0x20<link> ether 00:23:54:c6:0a:07 txqueuelen 1000 (Ethernet) RX packets 9220 bytes 7825813 (7.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2534 bytes 282820 (276.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Boucle locale) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 Notre adresse IPV4 est: 192.168.111.23 Link Mauve et sebseb01 (Linuxfr) viennent de m'indiquer d'utiliser les iptools: root@atom:~# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:23:54:c6:0a:07 brd ff:ff:ff:ff:ff:ff inet 192.168.111.23/24 brd 192.168.111.255 scope global enp4s0 valid_lft forever preferred_lft forever inet6 2a01:e0a:54:c220:223:54ff:fec6:a07/64 scope global mngtmpaddr dynamic valid_lft 86201sec preferred_lft 86201sec inet6 fe80::223:54ff:fec6:a07/64 scope link valid_lft forever preferred_lft forever 3: wlp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 00:15:af:db:b7:37 brd ff:ff:ff:ff:ff:ff root@atom:~# Les adresses IPV6 commen\u00e7ant par fe80 sont des adresses limit\u00e9es au r\u00e9seau local.","title":"R\u00e9cup\u00e9ration de l'IP du serveur:"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#securisation-de-ssh","text":"Voir le lien suivant: Le blog de Guillaume","title":"S\u00e9curisation de ssh"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#operations-a-effectuer-sur-le-poste-principal","text":"Nous g\u00e9n\u00e9rons notre paire de clefs pour l'authentification par clefs sur votre poste principal (si vous n'avez pas encore de jeu de clefs). Op\u00e9ration \u00e0 effectuer sur votre poste principal. ssh-keygen Il vous faut copier maintenant la clef sur le serveur: ssh-copy-id -i ~/.ssh/id_rsa.pub ericadmin@192.168.111.23 ou ssh-copy-id ericadmin@192.168.111.23 N'oubliez pas de mettre vos identifiants propres, bien s\u00fbr. On teste comme le recommande ssh: eric@aldebaran:~$ ssh 'ericadmin@91.121.72.10' Linux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 Debian GNU/Linux 9 (stretch) Linux adara.yojik.eu 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 GNU/Linux Server : 141519 IPv4 : 91.121.72.10 IPv6 : 2001:41d0:1:7d0a::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 15:08:32 2018 from 82.64.48.5 Et on teste qu'on peut passer super-utilisateur \u00e0 partir de ce compte. ericadmin@adara:~$ su Mot de passe : root@adara:/home/ericadmin#","title":"Op\u00e9rations \u00e0 effectuer sur le poste principal"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#operations-a-effectuer-sur-le-serveur-en-mode-super-utilisateur","text":"La configuration se fait dans le fichier /etc/ssh/sshd_config , fichier qu'il va falloir \u00e9diter avec vim pas exemple. Nous allons d'abord en faire une copie de sauvegarde: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig vim /etc/ssh/sshd_config Nous n'allons autoriser que la connexion d'un user d'administration (pas de connexion de root par exemple), activer l' authentification par clefs , et supprimer l'authentification par login/mot de passe (en mode ssh). Vous pourrez toujours vous connecter avec le couple login/mot de passe si vous avez un acc\u00e8s physique \u00e0 votre serveur. Nous garderons le port standard d'\u00e9coute (rien \u00e0 changer dans le fichier), mais j'ai ajout\u00e9 une note sur le changement de port (sugg\u00e9r\u00e9 par Laurent). Je ne suis pas convaincu que le changement de port puisse diminuer la surface d'attaque du serveur, mais pourquoi pas, c'est un changement mineur: Port 22 Nous interdisons la connexion par root : PermitRootLogin no Activation de l'authentification par clef (rien \u00e0 changer dans le fichier): PubkeyAuthentication yes Nous ajoutons une liste d'utilisateurs autoris\u00e9s \u00e0 se connecter. AllowUsers ericadmin A la place de ericadmin mettez bien s\u00fbr le nom de l'utilisateur que vous avez entr\u00e9 pendant la phase d'installation. Nous pouvons limiter le nombre de tentatives de connexion: MaxAuthTries 1 Interdiction de la connexion par couple login/mot de passe: PasswordAuthentication no D\u00e9sactivation de PAM UsePAM no Sauvegarde du fichier de configuration. (commande escape, suivie de ZZ pour vim) Red\u00e9marrage du service ssh systemctl restart sshd","title":"Op\u00e9rations \u00e0 effectuer sur le serveur en mode super-utilisateur."},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#test-de-connexion","text":"Sur votre ordinateur principal, dans un terminal, tapez: ssh ericadmin@192.168.111.23 Vous devez \u00eatre connect\u00e9s (logu\u00e9s) sur le serveur. Essayez avec l'utilisateur root: ssh root@192.168.111.23 Cela doit \u00e9chouer. eric@aldebaran:~$ ssh 'ericadmin@192.168.111.23' Last login: Sun Dec 17 16:37:40 2017 from 192.168.111.150 ericadmin@atom:~$ Voil\u00e0 pour la premi\u00e8re phase. Note : Il est possible de changer le port d'\u00e9coute de SSH en changeant celui-ci dans le fichier de configuration **/etc/ssh/sshd_config: Faites la modification suivante: vim /etc/ssh/sshd_config Port 2222 Et relancez sshd: service sshd restart Pour se connecter, utilsez la commande suivante: ssh -p 2222 ericadmin@192.168.111.23","title":"Test de connexion"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#securisation-plus-pousse-de-ssh","text":"Les r\u00e9centes attaques sur les m\u00e9thodes de chiffrage imposent l'utilisation de clef de chiffrement plus \u00e9volu\u00e9es. Les anciennes ont des failles. Le site de Mozilla nous permet d'ajuster nos configurations et d'utiliser les meilleures m\u00e9thodes de chiffrement actuelles.","title":"S\u00e9curisation plus pouss\u00e9 de SSH"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#deuxieme-phase","text":"","title":"Deuxi\u00e8me phase"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#securisation-des-mots-de-passe","text":"J'utilise un g\u00e9n\u00e9rateur de mots de passe pour le compte root et le compte ericadmin . Il y a pl\u00e9thore de g\u00e9n\u00e9rateurs de mots de passe, certains \u00e0 base d'utilitaires tout pr\u00eats, d'autres cr\u00e9\u00e9s \u00e0 l'aide commande unix standards. Les 3 g\u00e9n\u00e9rateurs tout pr\u00eats les plus cit\u00e9s dans la documentation sont: PWGEN MAKPASSWD PASSWORDMAKER Pour l'installation, utilisez les commandes suivantes: apt install pwgen apt install makepasswd apt install passwordmaker-cli","title":"S\u00e9curisation des mots de passe"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#exemples-dutilisation-de-ces-programmes","text":"Utilisation de pwgen : Pour obtenir de l'aide \u00e0 l'utilisation de cet utilitaire, tapez: pwgen --help . Vous pouvez faire varier le niveau de s\u00e9curit\u00e9 ainsi que le nombre de mots de passe g\u00e9n\u00e9r\u00e9s et la longueur des mots de passe. eric@aldebaran:~$ pwgen oow1Osho teM3chai Aim5shee Sheme1yo aiR6aem1 Vooxeiv0 Iabeenu1 kae7Xie5 oacei4aV Ohb8ceib zo0shu6F Dob2chie Roo5eeLa fee5Nooh Phi0suim OMeigh2w nah2Ool5 Saix6lie EeNaem5u ooVoh3ki IN5aeF9p CuHu8Aib vaim2Jia chah0Ier ShieC6ze Teex4tie mei6ou7I Ath6aiFe uw4quoHa lad8Quee ohQuai9Y Sho5Eem6 aoCaol3W ooGah9th bix6Aic9 thee1Coo lie0ahTe eiz0iiSh cieYu8Ie Ealu3chi vaeYee6c ahje9aeJ Sheenee7 eesh1Iez Odaa6kah aico6Jah aphahP4U aYePh1ev phohNie8 Chuut3ie eeb9ieDa ohp9AhGi efae5ooV Shiere5c ahV8riek Seegohv1 Eetohy1a Lievoh0k jox3uf6K chai3Woo iecoh0Iu ieGh9tuz UMeex2ah Eathaur8 Ood2oeho paeSah0p jaihoo1U eemoi9Ee ile1So4z OongeiN6 aaY9iuch ew3Iemoo Iech0Eey OoMie0ah OhBei1ae Ohsh4aik jah0faiT ioW7oz6t yee1Uphu ies4eeNa pooP8eeg iePoh4ya fooL3uqu ieGiej1X Ein7eifu ool7Olae eub5ooSe eyo8EiNu ach9ohWo Foog9Oev aej9geiH Thahg6Di eegei4Ai eN7quu3b waiK2ieg foThe7zi fu2Phoug iYaeg4if iLu6eeFi Aeshoo0i uxoGh6no id1TeRei diob7Pha vokuuN7h Chokei8J Iemee8ah eingei0E ubieh2Ch daiyu3EB QueiQu6H Jib0uwee wi9Xoodu eeL3osh2 Eo3Ae1ch bieWui2a ro6chiCo engu0ooF Eebeu2jo ee7Eey8t EiSeen5i ohNgai6i Iutaez4a xah1yeeG eGhi5Ouz vaiYu6ee fae0AeP5 jee0Ib2I OS3xuwae Eefohp1u eegiK6ae ohyuom7V Eij8eeNi Ou0ec7ye Eethoh4e eeHi2ugh ichoLae3 UT8oopoo oox6Ohx9 ohbaL2hu oht9kaiR Ieho8Ou1 Ten6saet cae7Iexi daDuas9e ShiexaT7 Lei6etii ea4aoH8y ja8Zai8g phaeG6Hi sheNg8ee Oow5phae aa7gohPi nahS8Eeg ba6Roh9j ooRo6epo pheNoam1 johF7ii9 vuZ4Latu xai5og6H aeS8hu2I eric@aldebaran:~$ Vous pouvez prendre le mot de passe que vous voulez dans le tableau g\u00e9n\u00e9r\u00e9. Pour un seul mot de passe: eric@aldebaran:~$ pwgen -1 Eerai4Sh Pour un mot de passe mieux s\u00e9curis\u00e9: eric@aldebaran:~$ pwgen -1 -s tx2CqGyf Encore plus s\u00e9curis\u00e9 avec l'option -y: eric@aldebaran:~$ pwgen -1 -s -y a+01K!U~ Utilisation de makepasswd : Tapez: makepasswd --help pour de l'aide \u00e0 l'utilisation des param\u00e8tres. makepasswd --count 5 --minchars 10","title":"Exemples d'utilisation de ces programmes:"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#securisation-du-mot-de-passe-super-utilisateur-root","text":"Utilisez un des utilitaires ci-dessus. Attention \u00e0 la longueur minimale! Sous le user \u201cadmin\u201d, tapez: passwd pour changer le mot de passe admin.","title":"S\u00e9curisation du mot de passe super-utilisateur (root)"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#securisation-du-mot-de-passe-administrateur","text":"Utilisez un des utilitaires ci-dessus. Attention \u00e0 la longueur minimale! Sous le user \u201croot\u201d, tapez: passwd pour changer le mot de passe root.","title":"S\u00e9curisation du mot de passe administrateur"},{"location":"Premi%C3%A8re-Etape-S%C3%A9curisation/#test-du-hostname","text":"La commande hostname nous indiquera le nom \u201ccourt\u201d de notre machine, et la commande hostname -f sa version longue avec le nom de domaine. root@atom:/home/ericadmin# hostname atom root@atom:/home/ericadmin# root@atom:/home/ericadmin# hostname -f atom.yojik.net root@atom:/home/ericadmin# Le r\u00e9sultat est bon.","title":"Test du hostname"},{"location":"Surveillance-Serveur/","text":"Installation de logwatch Installation # apt install logwatch Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Paquets sugg\u00e9r\u00e9s : fortune-mod Paquets recommand\u00e9s : libdate-manip-perl libsys-cpu-perl libsys-meminfo-perl Les NOUVEAUX paquets suivants seront install\u00e9s : logwatch 0 mis \u00e0 jour, 1 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 373 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 2 267 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. R\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 logwatch all 7.4.3+git20161207-2 [373 kB] 373 ko r\u00e9ceptionn\u00e9s en 0s (2 054 ko/s) S\u00e9lection du paquet logwatch pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 30506 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../logwatch_7.4.3+git20161207-2_all.deb ... D\u00e9paquetage de logwatch (7.4.3+git20161207-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de logwatch (7.4.3+git20161207-2) ... Configuration vim /usr/share/logwatch/default.conf/logwatch.conf Il faut changer les lignes suivantes: MailTo = root -> Mailto = adresse \u00e9mail de l'administrateur Range = Yesterday -> Range = All J'ai laiss\u00e9 Range \u00e0 Yesterday pour limiter la taille du rapport. On teste en le lan\u00e7ant manuellement: logwatch --detail Low --mailto admin@example.net --service All --range today Bien s\u00fbr, remplacez l'adresse \u00e9mail fictive par celle du compte administrateur de votre serveur. Vous devez recevoir le compte-rendu dans votre bo\u00eete mail. Mail bien re\u00e7u :)","title":"Installation de programmes de surveillance du serveur"},{"location":"Surveillance-Serveur/#installation-de-logwatch","text":"","title":"Installation de logwatch"},{"location":"Surveillance-Serveur/#installation","text":"# apt install logwatch Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Paquets sugg\u00e9r\u00e9s : fortune-mod Paquets recommand\u00e9s : libdate-manip-perl libsys-cpu-perl libsys-meminfo-perl Les NOUVEAUX paquets suivants seront install\u00e9s : logwatch 0 mis \u00e0 jour, 1 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 373 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 2 267 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. R\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 logwatch all 7.4.3+git20161207-2 [373 kB] 373 ko r\u00e9ceptionn\u00e9s en 0s (2 054 ko/s) S\u00e9lection du paquet logwatch pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 30506 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../logwatch_7.4.3+git20161207-2_all.deb ... D\u00e9paquetage de logwatch (7.4.3+git20161207-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ... Param\u00e9trage de logwatch (7.4.3+git20161207-2) ...","title":"Installation"},{"location":"Surveillance-Serveur/#configuration","text":"vim /usr/share/logwatch/default.conf/logwatch.conf Il faut changer les lignes suivantes: MailTo = root -> Mailto = adresse \u00e9mail de l'administrateur Range = Yesterday -> Range = All J'ai laiss\u00e9 Range \u00e0 Yesterday pour limiter la taille du rapport. On teste en le lan\u00e7ant manuellement: logwatch --detail Low --mailto admin@example.net --service All --range today Bien s\u00fbr, remplacez l'adresse \u00e9mail fictive par celle du compte administrateur de votre serveur. Vous devez recevoir le compte-rendu dans votre bo\u00eete mail. Mail bien re\u00e7u :)","title":"Configuration"},{"location":"S%C3%A9curisation-Serveur-Web/","text":"S\u00e9curisation des pages web La configuration SSL La page Mozilla web server SSL config generator permet de configurer mieux les pages servies par les serveurs web (apache pour moi), en donnant des r\u00e8gles concernant les certificats, les protocoles ssl. Voil\u00e0 un exemple de configuration g\u00e9n\u00e9r\u00e9e par le site Mozilla indiqu\u00e9 ci-dessus: <VirtualHost *:443> ... SSLEngine on SSLCertificateFile /path/to/signed_certificate_followed_by_intermediate_certs SSLCertificateKeyFile /path/to/private/key # Uncomment the following directive when using client certificate authentication #SSLCACertificateFile /path/to/ca_certs_for_client_authentication # HSTS (mod_headers is required) (15768000 seconds = 6 months) Header always set Strict-Transport-Security \"max-age=15768000\" ... </VirtualHost> # modern configuration, tweak to your needs SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 SSLHonorCipherOrder on SSLCompression off SSLSessionTickets off # OCSP Stapling, only in httpd 2.3.3 and later SSLUseStapling on SSLStaplingResponderTimeout 5 SSLStaplingReturnResponderErrors off SSLStaplingCache shmcb:/var/run/ocsp(128000) Il pr\u00e9cise les protocoles recommand\u00e9s ainsi que les m\u00e9thodes de chiffrage actuellement s\u00fbres. La configuration des en-t\u00eates Les ent\u00eates sont envoy\u00e9s aux clients, et ils sont libres de les respecter ou non ... On peut utiliser la page de test suivante pour configurer les ent\u00eates renvoy\u00e9s avec chaque page web: https://observatory.mozilla.org/analyze/www.yojik.net par exemple pour analyser le site www.yojik.net. Voil\u00e0 un exemple de r\u00e9sultats, avec certains ent\u00eates configur\u00e9s et d'autres non; la note globale n'est pas bonne, et il faudra am\u00e9liorer la configuration.","title":"S\u00e9curisation d'un serveur WEB"},{"location":"S%C3%A9curisation-Serveur-Web/#securisation-des-pages-web","text":"","title":"S\u00e9curisation des pages web"},{"location":"S%C3%A9curisation-Serveur-Web/#la-configuration-ssl","text":"La page Mozilla web server SSL config generator permet de configurer mieux les pages servies par les serveurs web (apache pour moi), en donnant des r\u00e8gles concernant les certificats, les protocoles ssl. Voil\u00e0 un exemple de configuration g\u00e9n\u00e9r\u00e9e par le site Mozilla indiqu\u00e9 ci-dessus: <VirtualHost *:443> ... SSLEngine on SSLCertificateFile /path/to/signed_certificate_followed_by_intermediate_certs SSLCertificateKeyFile /path/to/private/key # Uncomment the following directive when using client certificate authentication #SSLCACertificateFile /path/to/ca_certs_for_client_authentication # HSTS (mod_headers is required) (15768000 seconds = 6 months) Header always set Strict-Transport-Security \"max-age=15768000\" ... </VirtualHost> # modern configuration, tweak to your needs SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 SSLHonorCipherOrder on SSLCompression off SSLSessionTickets off # OCSP Stapling, only in httpd 2.3.3 and later SSLUseStapling on SSLStaplingResponderTimeout 5 SSLStaplingReturnResponderErrors off SSLStaplingCache shmcb:/var/run/ocsp(128000) Il pr\u00e9cise les protocoles recommand\u00e9s ainsi que les m\u00e9thodes de chiffrage actuellement s\u00fbres.","title":"La configuration SSL"},{"location":"S%C3%A9curisation-Serveur-Web/#la-configuration-des-en-tetes","text":"Les ent\u00eates sont envoy\u00e9s aux clients, et ils sont libres de les respecter ou non ... On peut utiliser la page de test suivante pour configurer les ent\u00eates renvoy\u00e9s avec chaque page web: https://observatory.mozilla.org/analyze/www.yojik.net par exemple pour analyser le site www.yojik.net. Voil\u00e0 un exemple de r\u00e9sultats, avec certains ent\u00eates configur\u00e9s et d'autres non; la note globale n'est pas bonne, et il faudra am\u00e9liorer la configuration.","title":"La configuration des en-t\u00eates"},{"location":"ovh/","text":"Boot en mode root avec slef ssh Lors du choix du syst\u00e8me d'exploitation et des param\u00e8tres de l'installation, vous avez le choix entre se faire envoyer par \u00e9mail les identifiants/mots de passe ou fournir votre clef SSH publique. Choisissez cette derni\u00e8re option si vous le pouvez. Il suffit de copier/coller cette clef dans l'emplacement pr\u00e9vu dans les param\u00e8tres. Il est toujours possible de proc\u00e9der \u00e0 cet ajout ult\u00e9rieurement. eric@aldebaran:~$ ssh root@91.121.72.10 The authenticity of host '91.121.72.10 (91.121.72.10)' can't be established. ECDSA key fingerprint is SHA256:eBYgeGPntU9stGkYe5GLltv46hCeVDRIu8xic3MDLbE. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '91.121.72.10' (ECDSA) to the list of known hosts. Linux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 Debian GNU/Linux 9 (stretch) Linux adara.yojik.eu 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 GNU/Linux Server : 141519 IPv4 : 91.121.72.10 IPv6 : 2001:41d0:1:7d0a::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 12:31:50 2018 from 217.182.145.216 Booter sur le serveur: eric@aldebaran:~$ ssh root@91.121.72.10 The authenticity of host '91.121.72.10 (91.121.72.10)' can't be established. ECDSA key fingerprint is SHA256:BT4r+uaJ8qAVUKgquJ557W4wyFJ3cfqOy/qC838RKMw. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '91.121.72.10' (ECDSA) to the list of known hosts. Linux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 Debian GNU/Linux 9 (stretch) Linux adara.yojik.eu 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 GNU/Linux Server : 141519 IPv4 : 91.121.72.10 IPv6 : 2001:41d0:1:7d0a::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 13:00:53 2018 from 217.182.145.216 Date et heure: il faut reconfigurer tzdata root@adara:~# date dimanche 24 juin 2018, 12:33:18 (UTC+0000) root@adara:~# dpkg-reconfigure tzdata Current default time zone: 'Europe/Paris' Local time is now: Sun Jun 24 14:33:42 CEST 2018. Universal Time is now: Sun Jun 24 12:33:42 UTC 2018. root@adara:~# Red\u00e9marrage et v\u00e9rification de l'heure: root@adara:~# date dimanche 24 juin 2018, 14:40:39 (UTC+0200) C'est bon. Modification du mot d epasse root password de root!!!!!!!!!!!!!! Ajout d'un utilisateur. Ajout des d\u00e9pots manquants, et update.. Configuration de ssh . Configuration du r\u00e9seau: elle est pr\u00e9-r\u00e9gl\u00e9e dans l'installation de OVH. Ajout de l'adresse IPV6 et de l'adresse du serveur de sauvegarde. root@adara:/home/ericadmin/bin# cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 adara.yojik.eu adara # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 91.121.72.10 adara.yojik.eu adara 2001:41d0:1:7d0a::1 adara.yojik.eu adara # adresse du serveur de sauvegarde 37.187.3.182 polis.yojik.eu polis 2001:41d0:a:3b6::1 polis.yojik.eu polis L'\u00e9tape de configuration de netfilter-persistent echoue \u00e0 cause du kernel de OVH :(:( IL faudra le faire \u00e0 la main avec: iptables-save > /etc/iptables/rules.v4 ip6tables-save > /etc/iptables/rules.v6 Pour fail2ban, il n'a rien \u00e0 configurer pour l'instant. Seul ssh est surveill\u00e9.","title":"D\u00e9marrage sur serveur OVH"},{"location":"ovh/#boot-en-mode-root-avec-slef-ssh","text":"Lors du choix du syst\u00e8me d'exploitation et des param\u00e8tres de l'installation, vous avez le choix entre se faire envoyer par \u00e9mail les identifiants/mots de passe ou fournir votre clef SSH publique. Choisissez cette derni\u00e8re option si vous le pouvez. Il suffit de copier/coller cette clef dans l'emplacement pr\u00e9vu dans les param\u00e8tres. Il est toujours possible de proc\u00e9der \u00e0 cet ajout ult\u00e9rieurement. eric@aldebaran:~$ ssh root@91.121.72.10 The authenticity of host '91.121.72.10 (91.121.72.10)' can't be established. ECDSA key fingerprint is SHA256:eBYgeGPntU9stGkYe5GLltv46hCeVDRIu8xic3MDLbE. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '91.121.72.10' (ECDSA) to the list of known hosts. Linux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 Debian GNU/Linux 9 (stretch) Linux adara.yojik.eu 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 GNU/Linux Server : 141519 IPv4 : 91.121.72.10 IPv6 : 2001:41d0:1:7d0a::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 12:31:50 2018 from 217.182.145.216 Booter sur le serveur: eric@aldebaran:~$ ssh root@91.121.72.10 The authenticity of host '91.121.72.10 (91.121.72.10)' can't be established. ECDSA key fingerprint is SHA256:BT4r+uaJ8qAVUKgquJ557W4wyFJ3cfqOy/qC838RKMw. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '91.121.72.10' (ECDSA) to the list of known hosts. Linux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 Debian GNU/Linux 9 (stretch) Linux adara.yojik.eu 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 GNU/Linux Server : 141519 IPv4 : 91.121.72.10 IPv6 : 2001:41d0:1:7d0a::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 13:00:53 2018 from 217.182.145.216 Date et heure: il faut reconfigurer tzdata root@adara:~# date dimanche 24 juin 2018, 12:33:18 (UTC+0000) root@adara:~# dpkg-reconfigure tzdata Current default time zone: 'Europe/Paris' Local time is now: Sun Jun 24 14:33:42 CEST 2018. Universal Time is now: Sun Jun 24 12:33:42 UTC 2018. root@adara:~# Red\u00e9marrage et v\u00e9rification de l'heure: root@adara:~# date dimanche 24 juin 2018, 14:40:39 (UTC+0200) C'est bon. Modification du mot d epasse root password de root!!!!!!!!!!!!!! Ajout d'un utilisateur. Ajout des d\u00e9pots manquants, et update.. Configuration de ssh . Configuration du r\u00e9seau: elle est pr\u00e9-r\u00e9gl\u00e9e dans l'installation de OVH. Ajout de l'adresse IPV6 et de l'adresse du serveur de sauvegarde. root@adara:/home/ericadmin/bin# cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 adara.yojik.eu adara # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 91.121.72.10 adara.yojik.eu adara 2001:41d0:1:7d0a::1 adara.yojik.eu adara # adresse du serveur de sauvegarde 37.187.3.182 polis.yojik.eu polis 2001:41d0:a:3b6::1 polis.yojik.eu polis L'\u00e9tape de configuration de netfilter-persistent echoue \u00e0 cause du kernel de OVH :(:( IL faudra le faire \u00e0 la main avec: iptables-save > /etc/iptables/rules.v4 ip6tables-save > /etc/iptables/rules.v6 Pour fail2ban, il n'a rien \u00e0 configurer pour l'instant. Seul ssh est surveill\u00e9.","title":"Boot en mode root avec slef ssh"}]}