search_index.json 950 KB

1
  1. {"config":{"lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"\u00c0 propos Bienvenue \u00e0 tous sur mon site. Vous trouverez ici des ressources pour l'\u00e9tude des langues, des tutoriels d'installation de la distribution Debian Gnu/Linux en diff\u00e9rentes versions/type de mat\u00e9riel et une pr\u00e9sentation du Yojik . Pr\u00e9sentation Une page de pr\u00e9sentation du Yojik et les diff\u00e9rents services/sites Web qui y sont h\u00e9berg\u00e9s : about Tutoriels La section des tutoriels : tutos tutoriel d'installation d'un serveur s\u00e9curis\u00e9 (version Debian/Stretch) ; Cette version est gard\u00e9e \u00e0 titre historique : pas compl\u00e8te, version d\u00e9pass\u00e9e, mais avec des choses int\u00e9ressantes (\u00e0 mon avis...) tutoriel d'installation d'un serveur s\u00e9curis\u00e9 (version Debian/Buster) ; tutoriel d'installation d'un serveur s\u00e9curis\u00e9 sur RaspberryPI (version Debian/Buster) ; tutoriel de configuration d'un serveur VPS (chez OVH) et installation de serveurs DNS (knot) tutoriel Anki. PS : Merci \u00e0 Ploup de auto-h\u00e9bergement pour ses suggestions/corrections.","title":"Page d'accueil"},{"location":"#a-propos","text":"Bienvenue \u00e0 tous sur mon site. Vous trouverez ici des ressources pour l'\u00e9tude des langues, des tutoriels d'installation de la distribution Debian Gnu/Linux en diff\u00e9rentes versions/type de mat\u00e9riel et une pr\u00e9sentation du Yojik .","title":"\u00c0 propos"},{"location":"#presentation","text":"Une page de pr\u00e9sentation du Yojik et les diff\u00e9rents services/sites Web qui y sont h\u00e9berg\u00e9s : about","title":"Pr\u00e9sentation"},{"location":"#tutoriels","text":"La section des tutoriels : tutos tutoriel d'installation d'un serveur s\u00e9curis\u00e9 (version Debian/Stretch) ; Cette version est gard\u00e9e \u00e0 titre historique : pas compl\u00e8te, version d\u00e9pass\u00e9e, mais avec des choses int\u00e9ressantes (\u00e0 mon avis...) tutoriel d'installation d'un serveur s\u00e9curis\u00e9 (version Debian/Buster) ; tutoriel d'installation d'un serveur s\u00e9curis\u00e9 sur RaspberryPI (version Debian/Buster) ; tutoriel de configuration d'un serveur VPS (chez OVH) et installation de serveurs DNS (knot) tutoriel Anki. PS : Merci \u00e0 Ploup de auto-h\u00e9bergement pour ses suggestions/corrections.","title":"Tutoriels"},{"location":"Pr%C3%A9sentation/git/","text":"Mon serveur Git J'ai install\u00e9 un serveur git sur le Yojik . Il contient mes travaux sur les listes de mots/phrases pour l'apprentissage du chinois et du russe, ainsi que des cours num\u00e9ris\u00e9s \u00e0 partir des cours FSI et DLI. (voir le site le Yojik pour plus de renseignements) \u00c0 partir des listes cr\u00e9es, j'ai fabriqu\u00e9 des decks Anki . Les listes sont disponibles sous plusieurs formats (xml, json, csv.) J'ai pour mon usage personnel, cr\u00e9\u00e9 des livres \u00e9lectroniques (ebooks) au format epub qui contiennent les textes, de l'audio et parfois m\u00eame des vid\u00e9os. Je les ai cr\u00e9\u00e9s \u00e0 partir de cours trouv\u00e9s sur Internet, des cours FSI et DLI, pour pouvoir \u00e9tudier avec ma tablette qui n'a pas de connexion internet \u00e0 part le wifi pas toujours disponible (train, voiture, etc.) J'esp\u00e8re pouvoir inclure des exercices interactifs, mais leur utilisation d\u00e9pendra du lecteur epub utilis\u00e9 (gestion du javascript ou non.) Des essais pour finaliser cette partie sont encore \u00e0 faire : en principe, \u00e7a marche...","title":"Mon serveur Git"},{"location":"Pr%C3%A9sentation/git/#mon-serveur-git","text":"J'ai install\u00e9 un serveur git sur le Yojik . Il contient mes travaux sur les listes de mots/phrases pour l'apprentissage du chinois et du russe, ainsi que des cours num\u00e9ris\u00e9s \u00e0 partir des cours FSI et DLI. (voir le site le Yojik pour plus de renseignements) \u00c0 partir des listes cr\u00e9es, j'ai fabriqu\u00e9 des decks Anki . Les listes sont disponibles sous plusieurs formats (xml, json, csv.) J'ai pour mon usage personnel, cr\u00e9\u00e9 des livres \u00e9lectroniques (ebooks) au format epub qui contiennent les textes, de l'audio et parfois m\u00eame des vid\u00e9os. Je les ai cr\u00e9\u00e9s \u00e0 partir de cours trouv\u00e9s sur Internet, des cours FSI et DLI, pour pouvoir \u00e9tudier avec ma tablette qui n'a pas de connexion internet \u00e0 part le wifi pas toujours disponible (train, voiture, etc.) J'esp\u00e8re pouvoir inclure des exercices interactifs, mais leur utilisation d\u00e9pendra du lecteur epub utilis\u00e9 (gestion du javascript ou non.) Des essais pour finaliser cette partie sont encore \u00e0 faire : en principe, \u00e7a marche...","title":"Mon serveur Git"},{"location":"Pr%C3%A9sentation/yojik/","text":"Le yojik Le site FSI-languages.yojik.eu ou www.yojik.eu Le yojik est le site que j'ai d\u00e9velopp\u00e9 dans les ann\u00e9es 2006 quand j'ai lou\u00e9 mon premier serveur chez OVH. Plusieurs versions se sont \u00e9chelonn\u00e9es au cours des ann\u00e9es. Les ressources FSI et DLI (cours de langues du Foreign Service Institute, Defense Language Institute, PeaceCorps) \u00e9taient jusqu'alors disponibles sur un site qui regroupait tout ce qui avait pu \u00eatre sauv\u00e9 avant l'utilisation par ces organismes de ressources propri\u00e9taires et num\u00e9riques. Le site a disparu du jour au lendemain, et j'ai reconstitu\u00e9 \u00e0 partir du site archive.org ainsi que l'aide de quelques personnes du forum de langues l'int\u00e9gralit\u00e9 des cours. Dans les faits, nous avons m\u00eame beaucoup augment\u00e9 le nombre de cours disponibles. Un travail de 2 ans a permis de sauver les cours Cortina. (ceux dont on a pu n\u00e9gocier les droits) Les cours sont assez anciens, mais sont l'aboutissement de dizaines d'ann\u00e9es de recherche et d'essais dans l'apprentissage des langues. Les cours sont souvent remarquables (j'aurai ador\u00e9 avoir des cours comme \u00e7a quand j'\u00e9tais au coll\u00e8ge/lyc\u00e9e). Les cours FSI sont destin\u00e9s \u00e0 un apprentissage rapide, souvent sur quelques mois, tandis que les cours DLI sont beaucoup plus approfondis. Ces cours sont en anglais. Des cours similaires existent s\u00fbrement dans les \u00e9coles militaires fran\u00e7aises (et d'autres pays) ou autre d\u00e9partement des affaires \u00e9trang\u00e8res, mais nous n'y avons pas acc\u00e8s. C'est dommage :( (car d\u00e9velopp\u00e9s avec de l'argent public) Voici les liens : Le Yojik FSI languages La forge git sur le Yojik J'ai install\u00e9 une forge git ouverte sur le Yojik: ici Vous y trouverez un tr\u00e8s grand nombre de ressources pour l'\u00e9tude des langues sous forme de listes de vocabulaires/phrases format\u00e9es en .csv, .json et .xml. 3 formats pour en faciliter l'utilisation dans diff\u00e9rents logiciels. R\u00e9f\u00e9rez-vous \u00e0 l'article sur Anki pour en voir une utilisation possible. Se trouvent \u00e9galement sur cette forge mes travaux de num\u00e9risation des documents FSI et DLI ainsi que la cr\u00e9ation de livres \u00e9lectroniques en format .epub (version3, avec audio incluse). Ces livres \u00e9lectroniques sont cr\u00e9\u00e9s \u00e0 partir des documents FSI, DLI num\u00e9ris\u00e9s ainsi qu'\u00e0 partir de cours de langues glan\u00e9s sur le web et mis en forme pour leur utilisation sur une tablette/t\u00e9l\u00e9phone/portable sans \u00eatre connect\u00e9 \u00e0 Internet. Cela me permet aussi de leur donner un style identique, ce qui dans mon cas me permet de mieux retenir. Il faut ajouter que la cr\u00e9ation de ces livres \u00e9lectroniques permet de travailler avec la langue : on ne peut passer toute la journ\u00e9e \u00e0 \u00e9tudier le m\u00eame sujet ; passer par l'\u00e9criture (il y a toujours des choses \u00e0 ajouter aux livres, corrections, traductions, etc.) est un bon compl\u00e9ment \u00e0 l'\u00e9tude classique. J'ai pu \u00e9crire un grand nombre de programmes d'importation, transformation, formatage dans un langage que je ne connaissais pas encore : javascript/typescript. Cela a \u00e9t\u00e9 assez amusant ! Le Shtooka En 2006, Nicolas Vion (et autres dont moi-m\u00eame) a cr\u00e9\u00e9 le site shtooka.net . Ce site \u00e9tait d\u00e9volu \u00e0 la mise \u00e0 disposition de vocabulaire enregistr\u00e9 dans diff\u00e9rentes langues, par des locuteurs natifs. Ce site a eu un grand succ\u00e8s. Ma femme a enregistr\u00e9 une bonne partie du vocabulaire russe. Il serait int\u00e9ressant de le refaire revivre : mise \u00e0 jour des programmes d'enregistrement et ajout de tags, ajout de collections de mots ; ajout de collections de phrases. Les donn\u00e9es audio sont compl\u00e9t\u00e9es avec des informations technique (qui a enregistr\u00e9, d'o\u00f9 il/elle vient, son \u00e2ge, etc.) ainsi que des donn\u00e9es linguistiques. Diff\u00e9rentes collections de vocabulaire ont \u00e9t\u00e9 enregistr\u00e9es et peuvent \u00eatre t\u00e9l\u00e9charg\u00e9es dans la section Shtooka: collections audio . J'ai gard\u00e9 une copie de l'ancien site Shtooka, ainsi que de l'ensemble des collections audio. Ces 2 sites sont accessibles \u00e0 partir du site Le Yojik .","title":"Le yojik"},{"location":"Pr%C3%A9sentation/yojik/#le-yojik","text":"","title":"Le yojik"},{"location":"Pr%C3%A9sentation/yojik/#le-site-fsi-languagesyojikeu-ou-wwwyojikeu","text":"Le yojik est le site que j'ai d\u00e9velopp\u00e9 dans les ann\u00e9es 2006 quand j'ai lou\u00e9 mon premier serveur chez OVH. Plusieurs versions se sont \u00e9chelonn\u00e9es au cours des ann\u00e9es. Les ressources FSI et DLI (cours de langues du Foreign Service Institute, Defense Language Institute, PeaceCorps) \u00e9taient jusqu'alors disponibles sur un site qui regroupait tout ce qui avait pu \u00eatre sauv\u00e9 avant l'utilisation par ces organismes de ressources propri\u00e9taires et num\u00e9riques. Le site a disparu du jour au lendemain, et j'ai reconstitu\u00e9 \u00e0 partir du site archive.org ainsi que l'aide de quelques personnes du forum de langues l'int\u00e9gralit\u00e9 des cours. Dans les faits, nous avons m\u00eame beaucoup augment\u00e9 le nombre de cours disponibles. Un travail de 2 ans a permis de sauver les cours Cortina. (ceux dont on a pu n\u00e9gocier les droits) Les cours sont assez anciens, mais sont l'aboutissement de dizaines d'ann\u00e9es de recherche et d'essais dans l'apprentissage des langues. Les cours sont souvent remarquables (j'aurai ador\u00e9 avoir des cours comme \u00e7a quand j'\u00e9tais au coll\u00e8ge/lyc\u00e9e). Les cours FSI sont destin\u00e9s \u00e0 un apprentissage rapide, souvent sur quelques mois, tandis que les cours DLI sont beaucoup plus approfondis. Ces cours sont en anglais. Des cours similaires existent s\u00fbrement dans les \u00e9coles militaires fran\u00e7aises (et d'autres pays) ou autre d\u00e9partement des affaires \u00e9trang\u00e8res, mais nous n'y avons pas acc\u00e8s. C'est dommage :( (car d\u00e9velopp\u00e9s avec de l'argent public) Voici les liens : Le Yojik FSI languages","title":"Le site FSI-languages.yojik.eu ou www.yojik.eu"},{"location":"Pr%C3%A9sentation/yojik/#la-forge-git-sur-le-yojik","text":"J'ai install\u00e9 une forge git ouverte sur le Yojik: ici Vous y trouverez un tr\u00e8s grand nombre de ressources pour l'\u00e9tude des langues sous forme de listes de vocabulaires/phrases format\u00e9es en .csv, .json et .xml. 3 formats pour en faciliter l'utilisation dans diff\u00e9rents logiciels. R\u00e9f\u00e9rez-vous \u00e0 l'article sur Anki pour en voir une utilisation possible. Se trouvent \u00e9galement sur cette forge mes travaux de num\u00e9risation des documents FSI et DLI ainsi que la cr\u00e9ation de livres \u00e9lectroniques en format .epub (version3, avec audio incluse). Ces livres \u00e9lectroniques sont cr\u00e9\u00e9s \u00e0 partir des documents FSI, DLI num\u00e9ris\u00e9s ainsi qu'\u00e0 partir de cours de langues glan\u00e9s sur le web et mis en forme pour leur utilisation sur une tablette/t\u00e9l\u00e9phone/portable sans \u00eatre connect\u00e9 \u00e0 Internet. Cela me permet aussi de leur donner un style identique, ce qui dans mon cas me permet de mieux retenir. Il faut ajouter que la cr\u00e9ation de ces livres \u00e9lectroniques permet de travailler avec la langue : on ne peut passer toute la journ\u00e9e \u00e0 \u00e9tudier le m\u00eame sujet ; passer par l'\u00e9criture (il y a toujours des choses \u00e0 ajouter aux livres, corrections, traductions, etc.) est un bon compl\u00e9ment \u00e0 l'\u00e9tude classique. J'ai pu \u00e9crire un grand nombre de programmes d'importation, transformation, formatage dans un langage que je ne connaissais pas encore : javascript/typescript. Cela a \u00e9t\u00e9 assez amusant !","title":"La forge git sur le Yojik"},{"location":"Pr%C3%A9sentation/yojik/#le-shtooka","text":"En 2006, Nicolas Vion (et autres dont moi-m\u00eame) a cr\u00e9\u00e9 le site shtooka.net . Ce site \u00e9tait d\u00e9volu \u00e0 la mise \u00e0 disposition de vocabulaire enregistr\u00e9 dans diff\u00e9rentes langues, par des locuteurs natifs. Ce site a eu un grand succ\u00e8s. Ma femme a enregistr\u00e9 une bonne partie du vocabulaire russe. Il serait int\u00e9ressant de le refaire revivre : mise \u00e0 jour des programmes d'enregistrement et ajout de tags, ajout de collections de mots ; ajout de collections de phrases. Les donn\u00e9es audio sont compl\u00e9t\u00e9es avec des informations technique (qui a enregistr\u00e9, d'o\u00f9 il/elle vient, son \u00e2ge, etc.) ainsi que des donn\u00e9es linguistiques. Diff\u00e9rentes collections de vocabulaire ont \u00e9t\u00e9 enregistr\u00e9es et peuvent \u00eatre t\u00e9l\u00e9charg\u00e9es dans la section Shtooka: collections audio . J'ai gard\u00e9 une copie de l'ancien site Shtooka, ainsi que de l'ensemble des collections audio. Ces 2 sites sont accessibles \u00e0 partir du site Le Yojik .","title":"Le Shtooka"},{"location":"Tutoriels/tutos/","text":"Bienvenue sur ma page de tutoriels Utilisation de Anki Anki est un logiciel d'apprentissage / r\u00e9vision fonctionnant comme des cartes \u00e0 retourner. Mais en beaucoup plus puissant. Je montrerai comment organiser ses decks , cr\u00e9er les notes et les listes qui permettent d'augmenter consid\u00e9rablement l'utilit\u00e9 et le plaisir d'utilisation du logiciel. Je d\u00e9velopperai \u00e9galement la cr\u00e9ation de listes de travail (surtout pour l'\u00e9tude des langues) \u00e0 partir de cours disponibles sur Internet, de listes de fr\u00e9quences de mots (les mots les plus utilis\u00e9s,) de listes personnelles (compil\u00e9es au fur et \u00e0 mesure de ses lectures), de l'ajout de sons, d'images qui \u00e9tendent encore les possibilit\u00e9s de r\u00e9vision et d'apprentissage. Les listes d\u00e9velopp\u00e9es pour mon usage personnel (apprentissage du russe et du chinois) sont disponibles sur git.yojik.eu . Installation de serveurs Voil\u00e0 3 tutoriels dont le sujet est l'installation d'un serveur s\u00e9curis\u00e9. Il y en a 3 versions : Premi\u00e8re version pour Debian Stretch; Deuxi\u00e8me version pour Debian Buster; Trois\u00e8me version pour Debian/Buster sur RaspberryPI; Tutoriel d'installation d'un VPS (pour mes serveurs DNS). La version pour Debian Stretch n'est pas termin\u00e9e, mais bien avanc\u00e9e. Un d\u00e9m\u00e9nagement, un changement de boulot, r\u00e9fection totale de notre appartement a mis de c\u00f4t\u00e9 mes travaux sur le tutoriel, de telle fa\u00e7on que Debian a r\u00e9ussi \u00e0 passer en version Buster avant que je ne finisse ! Oui, les travaux ont \u00e9t\u00e9 tr\u00e8s longs (et pas encore finis !). La version pour Buster verra appara\u00eetre un processus d'automatisation avec Ansible que je d\u00e9velopperai au fur et \u00e0 mesure, en parall\u00e8le d'une configuration toute manuelle, ainsi que l'apparition de mesures de s\u00e9curit\u00e9 renforc\u00e9e avec OTP (one time password), et gestion de l'authentification par clef openpgp sur carte \u00e0 puce. Pour des explications en profondeur sur tout ce qui concerne openpgp , je vous renvoie \u00e0 tous les articles de gouttegd sur linuxfr.org : ils sont excellentissimes et me rappellent avec plaisir \u00abpascalissime,\u00bb la revue publi\u00e9e par John Collibri dans les ann\u00e9es 80-90. Le choix des logiciels sera aussi diff\u00e9rent : knot comme serveur DNS par exemple. Et tout se fera avec le temps, en fonction de mes disponibilit\u00e9s. Vous pouvez me joindre par mail sur \u201ceric at yojik.eu\u201d pour toute remarque (que j'esp\u00e8re la plus constructive possible \ud83d\ude01.) Eric","title":"Introduction"},{"location":"Tutoriels/tutos/#bienvenue-sur-ma-page-de-tutoriels","text":"","title":"Bienvenue sur ma page de tutoriels"},{"location":"Tutoriels/tutos/#utilisation-de-anki","text":"Anki est un logiciel d'apprentissage / r\u00e9vision fonctionnant comme des cartes \u00e0 retourner. Mais en beaucoup plus puissant. Je montrerai comment organiser ses decks , cr\u00e9er les notes et les listes qui permettent d'augmenter consid\u00e9rablement l'utilit\u00e9 et le plaisir d'utilisation du logiciel. Je d\u00e9velopperai \u00e9galement la cr\u00e9ation de listes de travail (surtout pour l'\u00e9tude des langues) \u00e0 partir de cours disponibles sur Internet, de listes de fr\u00e9quences de mots (les mots les plus utilis\u00e9s,) de listes personnelles (compil\u00e9es au fur et \u00e0 mesure de ses lectures), de l'ajout de sons, d'images qui \u00e9tendent encore les possibilit\u00e9s de r\u00e9vision et d'apprentissage. Les listes d\u00e9velopp\u00e9es pour mon usage personnel (apprentissage du russe et du chinois) sont disponibles sur git.yojik.eu .","title":"Utilisation de Anki"},{"location":"Tutoriels/tutos/#installation-de-serveurs","text":"Voil\u00e0 3 tutoriels dont le sujet est l'installation d'un serveur s\u00e9curis\u00e9. Il y en a 3 versions : Premi\u00e8re version pour Debian Stretch; Deuxi\u00e8me version pour Debian Buster; Trois\u00e8me version pour Debian/Buster sur RaspberryPI; Tutoriel d'installation d'un VPS (pour mes serveurs DNS). La version pour Debian Stretch n'est pas termin\u00e9e, mais bien avanc\u00e9e. Un d\u00e9m\u00e9nagement, un changement de boulot, r\u00e9fection totale de notre appartement a mis de c\u00f4t\u00e9 mes travaux sur le tutoriel, de telle fa\u00e7on que Debian a r\u00e9ussi \u00e0 passer en version Buster avant que je ne finisse ! Oui, les travaux ont \u00e9t\u00e9 tr\u00e8s longs (et pas encore finis !). La version pour Buster verra appara\u00eetre un processus d'automatisation avec Ansible que je d\u00e9velopperai au fur et \u00e0 mesure, en parall\u00e8le d'une configuration toute manuelle, ainsi que l'apparition de mesures de s\u00e9curit\u00e9 renforc\u00e9e avec OTP (one time password), et gestion de l'authentification par clef openpgp sur carte \u00e0 puce. Pour des explications en profondeur sur tout ce qui concerne openpgp , je vous renvoie \u00e0 tous les articles de gouttegd sur linuxfr.org : ils sont excellentissimes et me rappellent avec plaisir \u00abpascalissime,\u00bb la revue publi\u00e9e par John Collibri dans les ann\u00e9es 80-90. Le choix des logiciels sera aussi diff\u00e9rent : knot comme serveur DNS par exemple. Et tout se fera avec le temps, en fonction de mes disponibilit\u00e9s. Vous pouvez me joindre par mail sur \u201ceric at yojik.eu\u201d pour toute remarque (que j'esp\u00e8re la plus constructive possible \ud83d\ude01.) Eric","title":"Installation de serveurs"},{"location":"Tutoriels/Domotique/Introduction/","text":"Introduction Suite \u00e0 l'intallation de nos raspis, je vais vous montrer mon installation domotique r\u00e9alis\u00e9e \u00e0 partir de ces mini-ordis. J'ai achet\u00e9 il y a quelques mois une station m\u00e9t\u00e9o Netatmo : tr\u00e8s jolie (ma femme est ravie) mais on ne peur acc\u00e9der aux informations que par leur serveur \u00abdans les nuages\u00bb. Et l\u00e0, il y a quelque chose qui m'a g\u00ean\u00e9 consid\u00e9rablement : je comprends que certaines des informations (le capteur ext\u00e9rieur par exemple) soient export\u00e9es et utilis\u00e9es sur une carte consultable par tous, mais je ne vois pas ce que Netatmo a \u00e0 faire avec la temp\u00e9rature de ma chambre \u00e0 coucher ... Il est possible de choisir quel type d'informations sont envoy\u00e9es par la station, mais quand m\u00eame. Il est possible de lier la station aux logiciels comme HomeAssistant, Jeedom avec une clef api. J'avais achet\u00e9 \u00e9galement un lot de 4 ampoules \u00abwifi\u00bb smartThings pour me rendre compte que je ne pouvais les commander que par leur application (ou une clef api), mais toujours en communication avec leurs serveurs. Suite \u00e0 ma d\u00e9ception, j'ai commenc\u00e9 \u00e0 chercher des solutions alternatives, des \u00e9quipements pouvant \u00eatre enti\u00e8rement command\u00e9s de chez moi, sans autre interm\u00e9diaire. J'ai fini par trouver le protocole Zigbee et des \u00e9quipements compatibles (Ikea, Osram, Philips etc.) L'id\u00e9e d'une station m\u00e9t\u00e9o enti\u00e8rement contr\u00f4l\u00e9e par moi m'est de suite venue \u00e0 l'esprit et j'ai plong\u00e9 dans le domaine des microcontr\u00f4leurs type arduino, esp32, esp8266 et l'univers des capteurs (BME680 etc.) Ca m'a rappel\u00e9 mes premi\u00e8res joutes avec l'informatique : Junior Computer d'Elektor, programmation en assembleur, les cartes Z80. Je ne pensais jamais replonger dans ce domaine, avec soudures, plaques d'exp\u00e9rimentation, bacs de composants. Entre temps, les composants sont devenus minuscules ... et pas faciles \u00e0 souder! Mes premi\u00e8res exp\u00e9rimentations avec les ESP32/8266 sont concluantes : \u00e7a fonctionne tr\u00e8s bien! J'utilise le protocole MQTT avec Mosquitto et le connecteur logiciel mqtt2zigbee, ainsi qu'un adaptateur Zigbee que j'ai flash\u00e9. Tout ce mat\u00e9riel est disponible pour pas cher sur les sites aliexpress, gearbest, ebay ou amazon (en plus cher pour ce dernier ... mais plus rapide). Je vais d\u00e9tailler mon installation dans la suite de ce tuto. Alors, oui, pour faire quelque chose de joli, il va falloir faire un peu de m\u00e9canique, utiliser une imprimante 3D (j'ai fait l'acquisition d'une imprimante 3D Prusa en kit pour 80\u20ac sur gearbest pour tester).","title":"Introduction"},{"location":"Tutoriels/Domotique/Introduction/#introduction","text":"Suite \u00e0 l'intallation de nos raspis, je vais vous montrer mon installation domotique r\u00e9alis\u00e9e \u00e0 partir de ces mini-ordis. J'ai achet\u00e9 il y a quelques mois une station m\u00e9t\u00e9o Netatmo : tr\u00e8s jolie (ma femme est ravie) mais on ne peur acc\u00e9der aux informations que par leur serveur \u00abdans les nuages\u00bb. Et l\u00e0, il y a quelque chose qui m'a g\u00ean\u00e9 consid\u00e9rablement : je comprends que certaines des informations (le capteur ext\u00e9rieur par exemple) soient export\u00e9es et utilis\u00e9es sur une carte consultable par tous, mais je ne vois pas ce que Netatmo a \u00e0 faire avec la temp\u00e9rature de ma chambre \u00e0 coucher ... Il est possible de choisir quel type d'informations sont envoy\u00e9es par la station, mais quand m\u00eame. Il est possible de lier la station aux logiciels comme HomeAssistant, Jeedom avec une clef api. J'avais achet\u00e9 \u00e9galement un lot de 4 ampoules \u00abwifi\u00bb smartThings pour me rendre compte que je ne pouvais les commander que par leur application (ou une clef api), mais toujours en communication avec leurs serveurs. Suite \u00e0 ma d\u00e9ception, j'ai commenc\u00e9 \u00e0 chercher des solutions alternatives, des \u00e9quipements pouvant \u00eatre enti\u00e8rement command\u00e9s de chez moi, sans autre interm\u00e9diaire. J'ai fini par trouver le protocole Zigbee et des \u00e9quipements compatibles (Ikea, Osram, Philips etc.) L'id\u00e9e d'une station m\u00e9t\u00e9o enti\u00e8rement contr\u00f4l\u00e9e par moi m'est de suite venue \u00e0 l'esprit et j'ai plong\u00e9 dans le domaine des microcontr\u00f4leurs type arduino, esp32, esp8266 et l'univers des capteurs (BME680 etc.) Ca m'a rappel\u00e9 mes premi\u00e8res joutes avec l'informatique : Junior Computer d'Elektor, programmation en assembleur, les cartes Z80. Je ne pensais jamais replonger dans ce domaine, avec soudures, plaques d'exp\u00e9rimentation, bacs de composants. Entre temps, les composants sont devenus minuscules ... et pas faciles \u00e0 souder! Mes premi\u00e8res exp\u00e9rimentations avec les ESP32/8266 sont concluantes : \u00e7a fonctionne tr\u00e8s bien! J'utilise le protocole MQTT avec Mosquitto et le connecteur logiciel mqtt2zigbee, ainsi qu'un adaptateur Zigbee que j'ai flash\u00e9. Tout ce mat\u00e9riel est disponible pour pas cher sur les sites aliexpress, gearbest, ebay ou amazon (en plus cher pour ce dernier ... mais plus rapide). Je vais d\u00e9tailler mon installation dans la suite de ce tuto. Alors, oui, pour faire quelque chose de joli, il va falloir faire un peu de m\u00e9canique, utiliser une imprimante 3D (j'ai fait l'acquisition d'une imprimante 3D Prusa en kit pour 80\u20ac sur gearbest pour tester).","title":"Introduction"},{"location":"Tutoriels/Domotique/Le-mat%C3%A9riel/","text":"Le mat\u00e9riel utilis\u00e9 Nous allons partir de l'installation de notre raspi d\u00e9j\u00e0 vue dans un tuto pr\u00e9c\u00e9dent. La seule diff\u00e9rence est l'absence d'installation du serveur Web dont nous n'avons pas l'utilit\u00e9. J'ai command\u00e9 des interrupteurs Zigbee chez Ikea, ainsi que des t\u00e9l\u00e9commandes. Je les attends ;) Principe de fonctionnement Nous allons utiliser le protocole Mqtt : celui-ci a \u00e9t\u00e9 invent\u00e9 pour la surveillance des pipelines; il demande peu de ressources, a des capacit\u00e9s de r\u00e9silience et permet de garantir l'acheminement des informations. Nous allons installer les diff\u00e9rentes briques une \u00e0 une et les tester au fur et \u00e0 mesure pour \u00e9viter de se retrouver avec un gros bouzin ind\u00e9pannable. MQTT Mqtt est un protocole de communication de type pub/sub. Il permet \u00e0 des \u00e9quipement de publier des informations ou/et d'en recevoir. Chaque \u00e9quipement d\u00e9clare s'il est consommateur de donn\u00e9es (subscribe), s'il publie des informations (publication) ou les deux. Par exemple, un capteur de temp\u00e9rature dans la chambre va indiquer au serveur mqtt qu'il va publier une information avec un topic \u00abchambre/temp\u00e9rature\u00bb Une station m\u00e9t\u00e9o avec un afficheur lcd va pouvoir afficher cette temp\u00e9rature en souscrivant \u00e0 ce topic. Mqtt va dispatcher les informations en fonction des \u00e9quipements et de leurs donn\u00e9es ainsi que leurs topics. Un interrupteur va envoyer un message \u00e0 une ampoule pour l'allumer. Un variateur va envoyer un message pour en diminuer l'intensit\u00e9. Le PC de bureau va afficher toutes les informations et permettre \u00e9galement d'agir sur les ampoules. Voici un sch\u00e9ma : Les logiciels utilis\u00e9s Voici les logiciels que je vais utiliser. D'autres choix sont possibles. Mosquitto Mosquitto est le \u00abbrocker\u00bb Mqtt. Il est central et c'est lui qui s'occupe de dispatcher les messages. Mosquitto utilise le port 1883. Installation Ouverture du port 1883 Tests Node-red J'ai choisi Node-red pour l'affichage des donn\u00e9es mais aussi pour les commandes d'\u00e9clairage. Node-red utilise le port 1880. Installation Test Mqtt2zigbee Ce logiciel (passerelle) bas\u00e9 sur nodejs permet de faire le lien entre les \u00e9quipements et le protocole Zigbee et Mqtt. Installation Installation de la clef usb Zigbee (apr\u00e8s flashage) Tests","title":"Le mat\u00e9riel"},{"location":"Tutoriels/Domotique/Le-mat%C3%A9riel/#le-materiel-utilise","text":"Nous allons partir de l'installation de notre raspi d\u00e9j\u00e0 vue dans un tuto pr\u00e9c\u00e9dent. La seule diff\u00e9rence est l'absence d'installation du serveur Web dont nous n'avons pas l'utilit\u00e9. J'ai command\u00e9 des interrupteurs Zigbee chez Ikea, ainsi que des t\u00e9l\u00e9commandes. Je les attends ;)","title":"Le mat\u00e9riel utilis\u00e9"},{"location":"Tutoriels/Domotique/Le-mat%C3%A9riel/#principe-de-fonctionnement","text":"Nous allons utiliser le protocole Mqtt : celui-ci a \u00e9t\u00e9 invent\u00e9 pour la surveillance des pipelines; il demande peu de ressources, a des capacit\u00e9s de r\u00e9silience et permet de garantir l'acheminement des informations. Nous allons installer les diff\u00e9rentes briques une \u00e0 une et les tester au fur et \u00e0 mesure pour \u00e9viter de se retrouver avec un gros bouzin ind\u00e9pannable.","title":"Principe de fonctionnement"},{"location":"Tutoriels/Domotique/Le-mat%C3%A9riel/#mqtt","text":"Mqtt est un protocole de communication de type pub/sub. Il permet \u00e0 des \u00e9quipement de publier des informations ou/et d'en recevoir. Chaque \u00e9quipement d\u00e9clare s'il est consommateur de donn\u00e9es (subscribe), s'il publie des informations (publication) ou les deux. Par exemple, un capteur de temp\u00e9rature dans la chambre va indiquer au serveur mqtt qu'il va publier une information avec un topic \u00abchambre/temp\u00e9rature\u00bb Une station m\u00e9t\u00e9o avec un afficheur lcd va pouvoir afficher cette temp\u00e9rature en souscrivant \u00e0 ce topic. Mqtt va dispatcher les informations en fonction des \u00e9quipements et de leurs donn\u00e9es ainsi que leurs topics. Un interrupteur va envoyer un message \u00e0 une ampoule pour l'allumer. Un variateur va envoyer un message pour en diminuer l'intensit\u00e9. Le PC de bureau va afficher toutes les informations et permettre \u00e9galement d'agir sur les ampoules. Voici un sch\u00e9ma :","title":"MQTT"},{"location":"Tutoriels/Domotique/Le-mat%C3%A9riel/#les-logiciels-utilises","text":"Voici les logiciels que je vais utiliser. D'autres choix sont possibles.","title":"Les logiciels utilis\u00e9s"},{"location":"Tutoriels/Domotique/Le-mat%C3%A9riel/#mosquitto","text":"Mosquitto est le \u00abbrocker\u00bb Mqtt. Il est central et c'est lui qui s'occupe de dispatcher les messages. Mosquitto utilise le port 1883. Installation Ouverture du port 1883 Tests","title":"Mosquitto"},{"location":"Tutoriels/Domotique/Le-mat%C3%A9riel/#node-red","text":"J'ai choisi Node-red pour l'affichage des donn\u00e9es mais aussi pour les commandes d'\u00e9clairage. Node-red utilise le port 1880. Installation Test","title":"Node-red"},{"location":"Tutoriels/Domotique/Le-mat%C3%A9riel/#mqtt2zigbee","text":"Ce logiciel (passerelle) bas\u00e9 sur nodejs permet de faire le lien entre les \u00e9quipements et le protocole Zigbee et Mqtt. Installation Installation de la clef usb Zigbee (apr\u00e8s flashage) Tests","title":"Mqtt2zigbee"},{"location":"Tutoriels/tutoanki/Cartes/","text":"Les cartes Nous allons voir ici comment modifier les cartes de base, ajouter des champs divers, et en augmenter les utilisations possibles. Dans le jargon Anki, ces cartes sont not\u00e9es \u00abNotes\u00bb. Il peut y avoir diff\u00e9rents types de notes/cartes adapt\u00e9es \u00e0 diff\u00e9rents types d'apprentissage. Par exemple, pour apprendre le vocabulaire japonais, je vais avoir besoin de : le mot en japonais (m\u00e9lange de kanas et kanjis) le m\u00eame mot mais avec les syllabes en caract\u00e8res romains la sigification le son Ceci me permettra les apprentissages suivants: traduction du japonais vers le fran\u00e7ais traduction du fran\u00e7ais vers le japonais saisie des kanjis/kanas au clavier, avec le mot en fran\u00e7ais \u00e0 traduire saisie des kanjis/kanas au clavier, avec le mot en japonais \u00e0 saisir saisie des kanjis/kanas au clavier, avec juste l'audio du mot et plein d'autres combinaisons que vous pourrez imaginer. Cela permet de travailler la langue dans tous les sens, \u00e9crit, audio, m\u00e9moire. Cr\u00e9ation d'un paquet Nous allons commencer par cr\u00e9er un paquet, paquet qui contient un ensemble de le\u00e7ons, pour une langue donn\u00e9e. La hierarchie pourrait \u00eatre la suivante : japonais\u2794le\u00e7on-1\u2794hiraganas\u2794partie-1 japonais\u2794le\u00e7on-1\u2794hiraganas\u2794partie-2 ... japonais\u2794le\u00e7on-2\u2794katanas\u2794partie-1 japonais\u2794le\u00e7on-2\u2794katanas\u2794partie-2 ... etc. Cette structure nous permet d'apprendre la partie 1 de la le\u00e7on 1, puis les suivantes pour ensuite r\u00e9viser toute la le\u00e7on 1. etc. Ce d\u00e9coupage pourrait \u00e9galement \u00eatre fait avec des tags, c'est \u00e0 dire des \u00e9l\u00e9ments ajout\u00e9s aux diff\u00e9rentes cartes : anki permet ensuite de trier les cartes en fonction des tags. C'est une fa\u00e7on de limitter le nombre de paquets. Anki renvoie toujours une alerte quand un trop grand nombre de paquets est cr\u00e9e. Voil\u00e0 un exemple de hierachie cr\u00e9e pour mon apprentissage du chinois : En r\u00e9alit\u00e9, j'ai m\u00eame sous-divis\u00e9 les parties HSK1 et HSK2 en multiples le\u00e7ons. Le principe reste le m\u00eame. Cr\u00e9ation de la hierarchie du paquet \u00abjaponais\u00bb Cliquez sur \u00abCr\u00e9ez un paquet\u00bb, en bas de la fen\u00eatre. Une fen\u00eatre de dialogue appara\u00eet. Vous voyez comment cr\u00e9er la hierachie ; chaque niveau est s\u00e9par\u00e9 du pr\u00e9c\u00e9dent par un \u00ab::\u00bb. Donc pour la hierachie pr\u00e9sent\u00e9e ci-dessus, il vous faudra entrer : japonais::le\u00e7on-1::hiraganas::partie-1 Une fois valid\u00e9 en cliquant sur \u00abOK\u00bb, vous obtenez la vue suivante : Vous pouvez constater que notre hierachie a \u00e9t\u00e9 cr\u00e9e. Pour cr\u00e9er les \u00e9l\u00e9ments suivants de la hierachie, il suffit de respecter le m\u00eame principe. Par exemple, cr\u00e9ation de la partie katanas de la hierarchie : Les katanas ont \u00e9t\u00e9 pr\u00e9sent\u00e9s dans la le\u00e7on 2. Nous avons donc la ligne suivante \u00e0 entrer : japonais::le\u00e7on-2::katanas Faites l'essai. Voil\u00e0 le r\u00e9sultat : Une fois la structure d\u00e9finie, nous pouvons passer \u00e0 la cr\u00e9ation de nos cartes personnalis\u00e9es. Les champs des cartes le fichier source Pour cela, nous allons reprendre le fichier que nous avons \u00e9crit tout au d\u00e9but. Nous allons lui rajouter un champ audio, de telle fa\u00e7on que nous auront la prononciation du katana/hiragana avec son caract\u00e8re syllabaire. Donc, le fichier aura la t\u00eate :) suivante : \u3042\u279ba\u279b[sound:a.ogg] \u3044\u279bi\u279b[sound:i.ogg] \u3046\u279bu\u279b[sound:u.ogg] \u3048\u279be\u279b[sound:e.ogg] \u304a\u279bo\u279b[sound:o.ogg] Les sons (chaque syllabe du japonais) sont r\u00e9f\u00e9renc\u00e9s dans le troisi\u00e8me champ, s\u00e9par\u00e9 des pr\u00e9c\u00e9dents par une tabulation symbolis\u00e9e par une fl\u00eache. La syntaxe particuli\u00e8re est celle demand\u00e9e par Anki. Mes fichiers audio sont au format .ogg, mais je mettrai une version mp3 \u00e9galement ici : mp3s . Il vous suffira de remplacer l'extension .ogg en .mp3. la nouvelle note Sous ce titre bizarre (pour l'instant), nous allon spr\u00e9cder \u00e0 la cr\u00e9ation d'un nouveau type de note, qui comportera plus de champs. allez dans \u00abOutils\u00bb \u279b \u00abG\u00e9rer le type de note\u00bb vous obtenez l'\u00e9cran suivant : Cliquez sur \u00abAjouter\u00bb. Effectivement, nous allons ajouter un type personnel de note. \u00e9cran suivant : cliquez sur \u00abDupliquer : Basique \u00bb saisissez le nom de votre nouvelle note : ici, j'ai choisi \u00abjaponais\u00bb. Votre nouvelle note appara\u00eet dans la liste des notes. d\u00e9finition des champs de notre note; cliquez sur \u00abChamps\u00bb. Vous voyez les deux champs d'origine, recto et verso. Dans un premier temps, laissez-les en place. Nous allons commencer par ajouter nos champs AVANT de supprimer les champs par d\u00e9faut. Ajoutez les 3 champs comme indiqu\u00e9 sur la capture d'\u00e9cran. Puis supprimez les 2 premiers champs pour obtenir quelque chose qui ressemble \u00e0 la capture d'\u00e9cran qui suit. Cliquez sur \u00abClose\u00bb une fois termin\u00e9. \u00e9laboration de notre carte avec nos champs personnels Cliquez sur \u00abCartes\u00bb : vous retrouverez l'\u00e9cran surlequel nous avons d\u00e9j\u00e0 travaill\u00e9. Comme nous avons dupliqu\u00e9 la note \u00abBasique\u00bb, nos modifications pr\u00e9c\u00e9dentes ont \u00e9t\u00e9 conserv\u00e9es. Il nous suffira de d\u00e9finir les champs \u00e0 pr\u00e9senter sur chaque face de notre carte. Vous pouvez constater que les champs recto et verso ont disparu de notre carte. Nous allons les remplacer par les notres. Nous avons donc d\u00e9fini 3 champs : kana-kanji phon\u00e9tique audio Le kana ou le kanji sera affich\u00e9 sur le recto de la carte. La phonetique sur le verso de la carte et nous y ajouterons le son correspondant. Donc, premi\u00e8re partie en haut \u00e0 gauche, entre les les tags hiragana, nous pl\u00e7ons le champ kana-kanji. Celui-ci a un format particulier pour \u00eatre compris par Anki. C'est le format \u00abmoustache\u00bb, un champ entour\u00e9 de doubles accolades comme ceci : {{kana-kanji}}. Vous pouvez voir imm\u00e9diatement l'effet de cet ajout sur la partie droite. Notre champ est reconnu (et en bleu). En partie bas \u00e0 gauche, nous ajoutons le champ \u00abphon\u00e9tique\u00bb, entre \u00abmoustaches\u00bb, comme le pr\u00e9c\u00e9dent! Veillez \u00e0 bien positionner votre champ sous le tag hr id=answer . En effet, la partie au-dessus rappellera la question, et la r\u00e9ponse appara\u00eetra sous le filet hr id=answer . Passons \u00e0 l'ajout de l'audio, audio qui sera prononc\u00e9e en m\u00eame temps que l'affichage de la r\u00e9ponse. Ajoutez simplement {{audio}} sous le champ pr\u00e9c\u00e9dent : Vous voyez sur la partie droite que nos 2 champs, phon\u00e9tique et audio sont positionn\u00e9s sur le verso de la carte. Anki reconna\u00eetra le caract\u00e8re son de ce dernier champ gr\u00e2ce \u00e0 la syntaxe particuli\u00e8re qui a d\u00fb vous para\u00eetre bizarre dans notre fichier. Rappelez-vous! \u3042\u279ba\u279b[sound:a.ogg] \u3044\u279bi\u279b[sound:i.ogg] \u3046\u279bu\u279b[sound:u.ogg] \u3048\u279be\u279b[sound:e.ogg] \u304a\u279bo\u279b[sound:o.ogg] Voil\u00e0, il est temps de tester. Cliquez sur \u00abFermer\u00bb, puis \u00abClose\u00bb dans la fen\u00eatre suivante. Importation de notre nouveau fichier, avec sa structure \u00e9tendue. Voil\u00e0 les \u00e9tapes. cliquez sur \u00abimporter\u00bb puis choissez votre fichier dans l'explorateur (ici, pour moi, a.csv ) le nouvel \u00e9cran qui s'affiche va vous permettre d'associer les chmaps du fichier avec les champs de votre note. A priori, les r\u00e9glages par d\u00e9faut sont bons. Mais ce ne sera pas toujours le cas. En haut de la fen\u00eatre vous voyez le type de notre note, japonais mais le Paquet est Par d\u00e9faut . Il nous faut changer \u00e7a. Cliquez sur \u00abPar d\u00e9faut\u00bb, une fen\u00eatre s'affiche avec notre arboresence pr\u00e9c\u00e9demment d\u00e9finie. Choisissez japonais\u279ble\u00e7on-1\u279bhiraganas\u279bpartie-1 . Et validez en cliquant sur \u00abChoisir\u00bb en bas de la fen\u00eatre. Elle va se fermer et vous ram\u00e8nera \u00e0 l'\u00e9cran de d\u00e9part. importation des m\u00e9dias Nous allons maintenant importer nos fichiers audio dans Anki. La proc\u00e9dure serait identique pour des images que nous voudrions incorporer dans nos cartes. Sous Linux, les fichiers audio et images sont conserv\u00e9s dans le r\u00e9pertoire suivant : ~/.local/share/Anki2/Utilisateur 1/collection.media$ Nous allons simplement copier nos fichiers audio dans ce r\u00e9pertoire avec le navigateur de fichiers. Vous pouvez tester maintenant votre paquet : cela fonctionne parfaitement! Nous allons ajouter d'autres fonctionnalit\u00e9s dans les prochains chapitres, mais d\u00e9j\u00e0, l\u00e0, vous avez un outil de travail int\u00e9ressant. Vous trouverez ici les fichiers correspondants aux diff\u00e9rentes parties de la le\u00e7on 1 de japonais, ainsi que le paquet Anki tout pr\u00eat que vous pouvez importer. Il contient toute la le\u00e7on 1, avec subdivisions par groupe de maximum 5 kanas. Ceci dit, organisez-vous comme vous le sentez. Augmentez le nombre de kanas \u00e0 apprendre d'un coup, changez les couleurs, taille de caract\u00e8re. Les explications fournies sont l\u00e0 pour \u00e7a. Cr\u00e9ez-vous votre propre outil. J'indiquerai des m\u00e9thodes pour importer un fichier complet de vocabulaire et pour ensuite le subdiviser. M\u00e9thode diff\u00e9rente que pr\u00e9c\u00e9demment, mais celle-ci marche tr\u00e8s bien : il vous faut juste planifier un peu par avance la d\u00e9coupe de votre \u00e9tude.","title":"Les cartes"},{"location":"Tutoriels/tutoanki/Cartes/#les-cartes","text":"Nous allons voir ici comment modifier les cartes de base, ajouter des champs divers, et en augmenter les utilisations possibles. Dans le jargon Anki, ces cartes sont not\u00e9es \u00abNotes\u00bb. Il peut y avoir diff\u00e9rents types de notes/cartes adapt\u00e9es \u00e0 diff\u00e9rents types d'apprentissage. Par exemple, pour apprendre le vocabulaire japonais, je vais avoir besoin de : le mot en japonais (m\u00e9lange de kanas et kanjis) le m\u00eame mot mais avec les syllabes en caract\u00e8res romains la sigification le son Ceci me permettra les apprentissages suivants: traduction du japonais vers le fran\u00e7ais traduction du fran\u00e7ais vers le japonais saisie des kanjis/kanas au clavier, avec le mot en fran\u00e7ais \u00e0 traduire saisie des kanjis/kanas au clavier, avec le mot en japonais \u00e0 saisir saisie des kanjis/kanas au clavier, avec juste l'audio du mot et plein d'autres combinaisons que vous pourrez imaginer. Cela permet de travailler la langue dans tous les sens, \u00e9crit, audio, m\u00e9moire.","title":"Les cartes"},{"location":"Tutoriels/tutoanki/Cartes/#creation-dun-paquet","text":"Nous allons commencer par cr\u00e9er un paquet, paquet qui contient un ensemble de le\u00e7ons, pour une langue donn\u00e9e. La hierarchie pourrait \u00eatre la suivante : japonais\u2794le\u00e7on-1\u2794hiraganas\u2794partie-1 japonais\u2794le\u00e7on-1\u2794hiraganas\u2794partie-2 ... japonais\u2794le\u00e7on-2\u2794katanas\u2794partie-1 japonais\u2794le\u00e7on-2\u2794katanas\u2794partie-2 ... etc. Cette structure nous permet d'apprendre la partie 1 de la le\u00e7on 1, puis les suivantes pour ensuite r\u00e9viser toute la le\u00e7on 1. etc. Ce d\u00e9coupage pourrait \u00e9galement \u00eatre fait avec des tags, c'est \u00e0 dire des \u00e9l\u00e9ments ajout\u00e9s aux diff\u00e9rentes cartes : anki permet ensuite de trier les cartes en fonction des tags. C'est une fa\u00e7on de limitter le nombre de paquets. Anki renvoie toujours une alerte quand un trop grand nombre de paquets est cr\u00e9e. Voil\u00e0 un exemple de hierachie cr\u00e9e pour mon apprentissage du chinois : En r\u00e9alit\u00e9, j'ai m\u00eame sous-divis\u00e9 les parties HSK1 et HSK2 en multiples le\u00e7ons. Le principe reste le m\u00eame.","title":"Cr\u00e9ation d'un paquet"},{"location":"Tutoriels/tutoanki/Cartes/#creation-de-la-hierarchie-du-paquet-japonais","text":"Cliquez sur \u00abCr\u00e9ez un paquet\u00bb, en bas de la fen\u00eatre. Une fen\u00eatre de dialogue appara\u00eet. Vous voyez comment cr\u00e9er la hierachie ; chaque niveau est s\u00e9par\u00e9 du pr\u00e9c\u00e9dent par un \u00ab::\u00bb. Donc pour la hierachie pr\u00e9sent\u00e9e ci-dessus, il vous faudra entrer : japonais::le\u00e7on-1::hiraganas::partie-1 Une fois valid\u00e9 en cliquant sur \u00abOK\u00bb, vous obtenez la vue suivante : Vous pouvez constater que notre hierachie a \u00e9t\u00e9 cr\u00e9e. Pour cr\u00e9er les \u00e9l\u00e9ments suivants de la hierachie, il suffit de respecter le m\u00eame principe. Par exemple, cr\u00e9ation de la partie katanas de la hierarchie : Les katanas ont \u00e9t\u00e9 pr\u00e9sent\u00e9s dans la le\u00e7on 2. Nous avons donc la ligne suivante \u00e0 entrer : japonais::le\u00e7on-2::katanas Faites l'essai. Voil\u00e0 le r\u00e9sultat : Une fois la structure d\u00e9finie, nous pouvons passer \u00e0 la cr\u00e9ation de nos cartes personnalis\u00e9es.","title":"Cr\u00e9ation de la hierarchie du paquet \u00abjaponais\u00bb"},{"location":"Tutoriels/tutoanki/Cartes/#les-champs-des-cartes","text":"le fichier source Pour cela, nous allons reprendre le fichier que nous avons \u00e9crit tout au d\u00e9but. Nous allons lui rajouter un champ audio, de telle fa\u00e7on que nous auront la prononciation du katana/hiragana avec son caract\u00e8re syllabaire. Donc, le fichier aura la t\u00eate :) suivante : \u3042\u279ba\u279b[sound:a.ogg] \u3044\u279bi\u279b[sound:i.ogg] \u3046\u279bu\u279b[sound:u.ogg] \u3048\u279be\u279b[sound:e.ogg] \u304a\u279bo\u279b[sound:o.ogg] Les sons (chaque syllabe du japonais) sont r\u00e9f\u00e9renc\u00e9s dans le troisi\u00e8me champ, s\u00e9par\u00e9 des pr\u00e9c\u00e9dents par une tabulation symbolis\u00e9e par une fl\u00eache. La syntaxe particuli\u00e8re est celle demand\u00e9e par Anki. Mes fichiers audio sont au format .ogg, mais je mettrai une version mp3 \u00e9galement ici : mp3s . Il vous suffira de remplacer l'extension .ogg en .mp3. la nouvelle note Sous ce titre bizarre (pour l'instant), nous allon spr\u00e9cder \u00e0 la cr\u00e9ation d'un nouveau type de note, qui comportera plus de champs. allez dans \u00abOutils\u00bb \u279b \u00abG\u00e9rer le type de note\u00bb vous obtenez l'\u00e9cran suivant : Cliquez sur \u00abAjouter\u00bb. Effectivement, nous allons ajouter un type personnel de note. \u00e9cran suivant : cliquez sur \u00abDupliquer : Basique \u00bb saisissez le nom de votre nouvelle note : ici, j'ai choisi \u00abjaponais\u00bb. Votre nouvelle note appara\u00eet dans la liste des notes. d\u00e9finition des champs de notre note; cliquez sur \u00abChamps\u00bb. Vous voyez les deux champs d'origine, recto et verso. Dans un premier temps, laissez-les en place. Nous allons commencer par ajouter nos champs AVANT de supprimer les champs par d\u00e9faut. Ajoutez les 3 champs comme indiqu\u00e9 sur la capture d'\u00e9cran. Puis supprimez les 2 premiers champs pour obtenir quelque chose qui ressemble \u00e0 la capture d'\u00e9cran qui suit. Cliquez sur \u00abClose\u00bb une fois termin\u00e9. \u00e9laboration de notre carte avec nos champs personnels Cliquez sur \u00abCartes\u00bb : vous retrouverez l'\u00e9cran surlequel nous avons d\u00e9j\u00e0 travaill\u00e9. Comme nous avons dupliqu\u00e9 la note \u00abBasique\u00bb, nos modifications pr\u00e9c\u00e9dentes ont \u00e9t\u00e9 conserv\u00e9es. Il nous suffira de d\u00e9finir les champs \u00e0 pr\u00e9senter sur chaque face de notre carte. Vous pouvez constater que les champs recto et verso ont disparu de notre carte. Nous allons les remplacer par les notres. Nous avons donc d\u00e9fini 3 champs : kana-kanji phon\u00e9tique audio Le kana ou le kanji sera affich\u00e9 sur le recto de la carte. La phonetique sur le verso de la carte et nous y ajouterons le son correspondant. Donc, premi\u00e8re partie en haut \u00e0 gauche, entre les les tags hiragana, nous pl\u00e7ons le champ kana-kanji. Celui-ci a un format particulier pour \u00eatre compris par Anki. C'est le format \u00abmoustache\u00bb, un champ entour\u00e9 de doubles accolades comme ceci : {{kana-kanji}}. Vous pouvez voir imm\u00e9diatement l'effet de cet ajout sur la partie droite. Notre champ est reconnu (et en bleu). En partie bas \u00e0 gauche, nous ajoutons le champ \u00abphon\u00e9tique\u00bb, entre \u00abmoustaches\u00bb, comme le pr\u00e9c\u00e9dent! Veillez \u00e0 bien positionner votre champ sous le tag hr id=answer . En effet, la partie au-dessus rappellera la question, et la r\u00e9ponse appara\u00eetra sous le filet hr id=answer . Passons \u00e0 l'ajout de l'audio, audio qui sera prononc\u00e9e en m\u00eame temps que l'affichage de la r\u00e9ponse. Ajoutez simplement {{audio}} sous le champ pr\u00e9c\u00e9dent : Vous voyez sur la partie droite que nos 2 champs, phon\u00e9tique et audio sont positionn\u00e9s sur le verso de la carte. Anki reconna\u00eetra le caract\u00e8re son de ce dernier champ gr\u00e2ce \u00e0 la syntaxe particuli\u00e8re qui a d\u00fb vous para\u00eetre bizarre dans notre fichier. Rappelez-vous! \u3042\u279ba\u279b[sound:a.ogg] \u3044\u279bi\u279b[sound:i.ogg] \u3046\u279bu\u279b[sound:u.ogg] \u3048\u279be\u279b[sound:e.ogg] \u304a\u279bo\u279b[sound:o.ogg] Voil\u00e0, il est temps de tester. Cliquez sur \u00abFermer\u00bb, puis \u00abClose\u00bb dans la fen\u00eatre suivante. Importation de notre nouveau fichier, avec sa structure \u00e9tendue. Voil\u00e0 les \u00e9tapes. cliquez sur \u00abimporter\u00bb puis choissez votre fichier dans l'explorateur (ici, pour moi, a.csv ) le nouvel \u00e9cran qui s'affiche va vous permettre d'associer les chmaps du fichier avec les champs de votre note. A priori, les r\u00e9glages par d\u00e9faut sont bons. Mais ce ne sera pas toujours le cas. En haut de la fen\u00eatre vous voyez le type de notre note, japonais mais le Paquet est Par d\u00e9faut . Il nous faut changer \u00e7a. Cliquez sur \u00abPar d\u00e9faut\u00bb, une fen\u00eatre s'affiche avec notre arboresence pr\u00e9c\u00e9demment d\u00e9finie. Choisissez japonais\u279ble\u00e7on-1\u279bhiraganas\u279bpartie-1 . Et validez en cliquant sur \u00abChoisir\u00bb en bas de la fen\u00eatre. Elle va se fermer et vous ram\u00e8nera \u00e0 l'\u00e9cran de d\u00e9part. importation des m\u00e9dias Nous allons maintenant importer nos fichiers audio dans Anki. La proc\u00e9dure serait identique pour des images que nous voudrions incorporer dans nos cartes. Sous Linux, les fichiers audio et images sont conserv\u00e9s dans le r\u00e9pertoire suivant : ~/.local/share/Anki2/Utilisateur 1/collection.media$ Nous allons simplement copier nos fichiers audio dans ce r\u00e9pertoire avec le navigateur de fichiers. Vous pouvez tester maintenant votre paquet : cela fonctionne parfaitement! Nous allons ajouter d'autres fonctionnalit\u00e9s dans les prochains chapitres, mais d\u00e9j\u00e0, l\u00e0, vous avez un outil de travail int\u00e9ressant. Vous trouverez ici les fichiers correspondants aux diff\u00e9rentes parties de la le\u00e7on 1 de japonais, ainsi que le paquet Anki tout pr\u00eat que vous pouvez importer. Il contient toute la le\u00e7on 1, avec subdivisions par groupe de maximum 5 kanas. Ceci dit, organisez-vous comme vous le sentez. Augmentez le nombre de kanas \u00e0 apprendre d'un coup, changez les couleurs, taille de caract\u00e8re. Les explications fournies sont l\u00e0 pour \u00e7a. Cr\u00e9ez-vous votre propre outil. J'indiquerai des m\u00e9thodes pour importer un fichier complet de vocabulaire et pour ensuite le subdiviser. M\u00e9thode diff\u00e9rente que pr\u00e9c\u00e9demment, mais celle-ci marche tr\u00e8s bien : il vous faut juste planifier un peu par avance la d\u00e9coupe de votre \u00e9tude.","title":"Les champs des cartes"},{"location":"Tutoriels/tutoanki/Installation/","text":"Installation Utilisateur exclusif de Linux/Debian, je vais indiquer la m\u00e9thode d'installation pour ce syst\u00e8me. L'installation sur Windows et mac est bien expliqu\u00e9e sur le site de Anki . Des versions pour Android et IOs existent aussi ... vous pourrez comme cela apprendre m\u00eame dans le m\u00e9tro! ou dans la cour de r\u00e9cr\u00e9ation. :) Installation sur Debian C'est tr\u00e8s simple : sudo apt install anki Et voil\u00e0! Premier lancement l'apparence doit \u00eatre quasi identique quelque soit le syst\u00e8me d'exploitation (Linux, Windows etc.) premier dialogue langue d'interface utilis\u00e9e; choisissez le fran\u00e7ais ou autre si votre langue maternelle est diff\u00e9rente. confirmation confirmez votre choix. premier \u00e9cran et voil\u00e0 le premier \u00e9cran de Anki ... pas vraiment sexy!","title":"Installation"},{"location":"Tutoriels/tutoanki/Installation/#installation","text":"Utilisateur exclusif de Linux/Debian, je vais indiquer la m\u00e9thode d'installation pour ce syst\u00e8me. L'installation sur Windows et mac est bien expliqu\u00e9e sur le site de Anki . Des versions pour Android et IOs existent aussi ... vous pourrez comme cela apprendre m\u00eame dans le m\u00e9tro! ou dans la cour de r\u00e9cr\u00e9ation. :)","title":"Installation"},{"location":"Tutoriels/tutoanki/Installation/#installation-sur-debian","text":"C'est tr\u00e8s simple : sudo apt install anki Et voil\u00e0!","title":"Installation sur Debian"},{"location":"Tutoriels/tutoanki/Installation/#premier-lancement","text":"l'apparence doit \u00eatre quasi identique quelque soit le syst\u00e8me d'exploitation (Linux, Windows etc.) premier dialogue langue d'interface utilis\u00e9e; choisissez le fran\u00e7ais ou autre si votre langue maternelle est diff\u00e9rente. confirmation confirmez votre choix. premier \u00e9cran et voil\u00e0 le premier \u00e9cran de Anki ... pas vraiment sexy!","title":"Premier lancement"},{"location":"Tutoriels/tutoanki/Introduction/","text":"Introduction Anki est un logiciel d'apprentissage bas\u00e9 sur le principe des fiches cartonn\u00e9es avec les questions sur le verso et les r\u00e9ponses sur le recto. Il garde en m\u00e9moire les erreurs commises, les oublis et permet de re-proposer les fiches qui n'ont pas \u00e9t\u00e9 acquises. Il propose \u00e9galement les fiches m\u00eame bien connues \u00e0 intervalles r\u00e9guliers ce qui permet de ne pas oublier. La m\u00e9thode est \u00e9tudi\u00e9e scientifiquement et utilis\u00e9e par de nombreux logiciels, avec des modifications et adaptations. Cherchez sur votre moteur de recherche pr\u00e9f\u00e9r\u00e9 (DuckDuckGo, Bing, Google etc.) avec les mots clef suivants : \u00abSyst\u00e8me de R\u00e9p\u00e9tition Espac\u00e9e\u00bb ou \u00abSRS\u00bb en anglais (Space Repetition System.) Nous allons installer, configurer Anki \u00e0 notre go\u00fbt. La pr\u00e9sentation de base des fiches est assez rustique, mais parfaitement personnalisable, ce qui permettra un apprentissage plus agr\u00e9able. Les 2 faces des fiches peuvent ne contenir qu'un mot et sa traduction par exemple, mais \u00e9galement beaucoup plus. Le nombre de champs sur chaque face est adaptable (avec un minimum de 1.) Le type de champ est \u00e9galement variable : de simple texte, nous pouvons ajouter des images, du son. Un type de champ \u00ab\u00e9ditable\u00bb est \u00e9galement disponible pour cr\u00e9er des exercices \u00ab\u00e0 trous\u00bb ou des fiches demandant de taper au clavier les r\u00e9ponses/ Nous allons utiliser ce logiciel pour apprendre le japonais, suivant par cela l'excellent cours (gratuit) de Julien Fontanier sur Youtube [Cours de Julien Fontanier(https://www.youtube.com/c/CoursdejaponaisFR/about) Des biblioth\u00e8ques toutes pr\u00eates existent sur le site Ankiweb. Pour en avoir utilis\u00e9 quelques unes (apprentissage du chinois, du russe), je pense qu'il est beaucoup lus productif de cr\u00e9er ses propres paquets. Vous pourrez les diviser en bouts \u00abcomestibles\u00bb : apprendre 50 mots de vocabulaire d'un coup m'est quasi impossible. Je pr\u00e9f\u00e8re d\u00e9couper en petites le\u00e7ons de 4 \u00e0 5 mots et les rassembler ensuite. Dans mon cas, c'est beaucoup plus productif, et valorisant. Rien de plus frustrant que d'essayer d'apprendre des tonnes de vocabulaires/phrases et de ne pas y arriver tant les informations sont nombreuses. Le premier cours de japonais introduit \u00abtous\u00bb les Hirganas d'un coup : une cinquantaine de caract\u00e8res \u00e0 apprendre avec leur prononciation. Je vais vous monter comment d\u00e9couper ce gros tableau en parties digestes, dont vous pourrez modifier le contenu suivant vos capacit\u00e9s personnelles.","title":"Introduction"},{"location":"Tutoriels/tutoanki/Introduction/#introduction","text":"Anki est un logiciel d'apprentissage bas\u00e9 sur le principe des fiches cartonn\u00e9es avec les questions sur le verso et les r\u00e9ponses sur le recto. Il garde en m\u00e9moire les erreurs commises, les oublis et permet de re-proposer les fiches qui n'ont pas \u00e9t\u00e9 acquises. Il propose \u00e9galement les fiches m\u00eame bien connues \u00e0 intervalles r\u00e9guliers ce qui permet de ne pas oublier. La m\u00e9thode est \u00e9tudi\u00e9e scientifiquement et utilis\u00e9e par de nombreux logiciels, avec des modifications et adaptations. Cherchez sur votre moteur de recherche pr\u00e9f\u00e9r\u00e9 (DuckDuckGo, Bing, Google etc.) avec les mots clef suivants : \u00abSyst\u00e8me de R\u00e9p\u00e9tition Espac\u00e9e\u00bb ou \u00abSRS\u00bb en anglais (Space Repetition System.) Nous allons installer, configurer Anki \u00e0 notre go\u00fbt. La pr\u00e9sentation de base des fiches est assez rustique, mais parfaitement personnalisable, ce qui permettra un apprentissage plus agr\u00e9able. Les 2 faces des fiches peuvent ne contenir qu'un mot et sa traduction par exemple, mais \u00e9galement beaucoup plus. Le nombre de champs sur chaque face est adaptable (avec un minimum de 1.) Le type de champ est \u00e9galement variable : de simple texte, nous pouvons ajouter des images, du son. Un type de champ \u00ab\u00e9ditable\u00bb est \u00e9galement disponible pour cr\u00e9er des exercices \u00ab\u00e0 trous\u00bb ou des fiches demandant de taper au clavier les r\u00e9ponses/ Nous allons utiliser ce logiciel pour apprendre le japonais, suivant par cela l'excellent cours (gratuit) de Julien Fontanier sur Youtube [Cours de Julien Fontanier(https://www.youtube.com/c/CoursdejaponaisFR/about) Des biblioth\u00e8ques toutes pr\u00eates existent sur le site Ankiweb. Pour en avoir utilis\u00e9 quelques unes (apprentissage du chinois, du russe), je pense qu'il est beaucoup lus productif de cr\u00e9er ses propres paquets. Vous pourrez les diviser en bouts \u00abcomestibles\u00bb : apprendre 50 mots de vocabulaire d'un coup m'est quasi impossible. Je pr\u00e9f\u00e8re d\u00e9couper en petites le\u00e7ons de 4 \u00e0 5 mots et les rassembler ensuite. Dans mon cas, c'est beaucoup plus productif, et valorisant. Rien de plus frustrant que d'essayer d'apprendre des tonnes de vocabulaires/phrases et de ne pas y arriver tant les informations sont nombreuses. Le premier cours de japonais introduit \u00abtous\u00bb les Hirganas d'un coup : une cinquantaine de caract\u00e8res \u00e0 apprendre avec leur prononciation. Je vais vous monter comment d\u00e9couper ce gros tableau en parties digestes, dont vous pourrez modifier le contenu suivant vos capacit\u00e9s personnelles.","title":"Introduction"},{"location":"Tutoriels/tutoanki/Les-fiches/","text":"les fiches Les fiches sont constitu\u00e9es de champs de diff\u00e9rents types, un certain nombre sur le recto, un certain nombre sur le verso. cr\u00e9ation de nos premi\u00e8res fiches Pour cela, nous allons cr\u00e9er un fichier de type .csv, qui est en fait un simple fichier texte que vous pouvez \u00e9diter avec un \u00e9diteur comme gedit, vim sur Linux, notepad sur Windows etc. Il faut que ce soit un simple \u00e9diteur texte : n'utilisez pas un \"Word\" pour cela. Les champs sont simplement s\u00e9par\u00e9s par une tabulation (touche tab de votre clavier; faites attention \u00e0 ce que votre \u00e9diteur ne soit pas configur\u00e9 pour remplacer automatiquement les tabulations par des espaces). Voyez la capture d'\u00e9cran qui suit. Exemple : maison\u2794home La fl\u00eache repr\u00e9sente la tabulation (visible aussi sur la capture d'\u00e9cran au-dessus.) Ajoutons quelques mots suppl\u00e9mentaires pour cr\u00e9er une petite liste, \u00e0 partir des Hiraganas du premier cours de japonais (mais vous pouvez faire de m\u00eame avec vos cours d'anglais ou autre langue) Voici le contenu du fichier avec extension .csv qui montre la premi\u00e8re ligne du tableau des hiraganas. \u3042 a \u3044 i \u3046 u \u3048 e \u304a o Voil\u00e0 la capture d'\u00e9cran dans mon \u00e9diteur \u00abgedit\u00bb : Importation de nos fiches dans Anki Une fois ce fichier cr\u00e9\u00e9 et sauv\u00e9, nous allons l'importer dans Anki. Voil\u00e0 une suite de captures d'\u00e9cran qui vous montrent les diff\u00e9rentes \u00e9tapes d'importation. En gros, il vous suffit de choisir le fichier que vous avez cr\u00e9\u00e9 pr\u00e9c\u00e9demment. Choisissez \u00abImporter\u00bb Descendez dans les r\u00e9pertoires pour trouver le fichier p\u00e9rc\u00e9demment cr\u00e9\u00e9 et validez. Vous voyez ici l'attribution de nos champs au recto et verso de la fiche. R\u00e9sum\u00e9 de l'importation de notre fichier avec 5 nouvelles fiches. Vous voyez sur le dernier \u00e9cran l'attribution du premier champ au rect des fiches, et le deuxi\u00e8me au verso. Validez ce choix. Retour \u00e0 l'\u00e9cran principal avec le paquet par d\u00e9faut qui contient 5 fiches. Voil\u00e0 donc votre premi\u00e8re le\u00e7on int\u00e9gr\u00e9e \u00e0 Anki. Dans le chapitre suivant, nous allons personnaliser l'apparence de notre fiche.","title":"Les fiches"},{"location":"Tutoriels/tutoanki/Les-fiches/#les-fiches","text":"Les fiches sont constitu\u00e9es de champs de diff\u00e9rents types, un certain nombre sur le recto, un certain nombre sur le verso.","title":"les fiches"},{"location":"Tutoriels/tutoanki/Les-fiches/#creation-de-nos-premieres-fiches","text":"Pour cela, nous allons cr\u00e9er un fichier de type .csv, qui est en fait un simple fichier texte que vous pouvez \u00e9diter avec un \u00e9diteur comme gedit, vim sur Linux, notepad sur Windows etc. Il faut que ce soit un simple \u00e9diteur texte : n'utilisez pas un \"Word\" pour cela. Les champs sont simplement s\u00e9par\u00e9s par une tabulation (touche tab de votre clavier; faites attention \u00e0 ce que votre \u00e9diteur ne soit pas configur\u00e9 pour remplacer automatiquement les tabulations par des espaces). Voyez la capture d'\u00e9cran qui suit. Exemple : maison\u2794home La fl\u00eache repr\u00e9sente la tabulation (visible aussi sur la capture d'\u00e9cran au-dessus.) Ajoutons quelques mots suppl\u00e9mentaires pour cr\u00e9er une petite liste, \u00e0 partir des Hiraganas du premier cours de japonais (mais vous pouvez faire de m\u00eame avec vos cours d'anglais ou autre langue) Voici le contenu du fichier avec extension .csv qui montre la premi\u00e8re ligne du tableau des hiraganas. \u3042 a \u3044 i \u3046 u \u3048 e \u304a o Voil\u00e0 la capture d'\u00e9cran dans mon \u00e9diteur \u00abgedit\u00bb :","title":"cr\u00e9ation de nos premi\u00e8res fiches"},{"location":"Tutoriels/tutoanki/Les-fiches/#importation-de-nos-fiches-dans-anki","text":"Une fois ce fichier cr\u00e9\u00e9 et sauv\u00e9, nous allons l'importer dans Anki. Voil\u00e0 une suite de captures d'\u00e9cran qui vous montrent les diff\u00e9rentes \u00e9tapes d'importation. En gros, il vous suffit de choisir le fichier que vous avez cr\u00e9\u00e9 pr\u00e9c\u00e9demment. Choisissez \u00abImporter\u00bb Descendez dans les r\u00e9pertoires pour trouver le fichier p\u00e9rc\u00e9demment cr\u00e9\u00e9 et validez. Vous voyez ici l'attribution de nos champs au recto et verso de la fiche. R\u00e9sum\u00e9 de l'importation de notre fichier avec 5 nouvelles fiches. Vous voyez sur le dernier \u00e9cran l'attribution du premier champ au rect des fiches, et le deuxi\u00e8me au verso. Validez ce choix. Retour \u00e0 l'\u00e9cran principal avec le paquet par d\u00e9faut qui contient 5 fiches. Voil\u00e0 donc votre premi\u00e8re le\u00e7on int\u00e9gr\u00e9e \u00e0 Anki. Dans le chapitre suivant, nous allons personnaliser l'apparence de notre fiche.","title":"Importation de nos fiches dans Anki"},{"location":"Tutoriels/tutoanki/Personnalisation/","text":"Personnalisation Constat Le premier constat est que ce n'est pas sexy du tout : carat\u00e8res trop petits, tout est plant\u00e9 en haut de l'\u00e9cran. Personnalisation Les fiches sont enti\u00e8rement personnalisables gr\u00e2ce aux CSS, le langage des propri\u00e9t\u00e9s d'affichage des pages html (le Web). Nous allons pouvoir utiliser un sous-ensemble de ces directives pour augmenter la taille des caract\u00e8res, changer leur couleur etc. Une documentation consid\u00e9rable est disponible sur le Web qui vous permettra d'\u00e9tudier et d'appliquer les r\u00e8gles. Premi\u00e8re \u00e9tape Pour un d\u00e9but, nous allons changer la taille des carat\u00e8res affich\u00e9s. cliquez sur \u00abOutils\u00bb puis dans le menu d\u00e9roulant qui appara\u00eet sur \u00abG\u00e9rer les types de notes\u00bb appara\u00eet l'\u00e9cran suivant : cliquez sur \u00abCartes\u00bb vous voil\u00e0 enfin sur la page qui va vous permettre de modifier l'apparence de vos cartes. La fen\u00eatre de personnalisation est d\u00e9coup\u00e9e en 2 parties principales, verticalement. La partie droite vous montre l'apparence que prendra votre partie recto et verso une fois les modifications faites. La partie gauche est constitu\u00e9e de 3 parties : en haut, la face recto de votre carte en bas, la face verso de votre carte au milieu, les caract\u00e9ristiques globales qui s'appliqueront aussi bien au recto qu'au vero. modification de la taille des caract\u00e8res : La taille indiqu\u00e9e sur la partie centrale indique une taille de fonte de 20 pixels (font-size: 20px;). La famille de la fonte est arial (tr\u00e8s passe-partout). Couleur des caract\u00e8re noire sur fond blanc. Toutes ces caract\u00e9ristiques sont modifiables, soit au niveau global, ou sur chaque c\u00f4t\u00e9 de la carte. Modifions pour commencer la taille gobale des carat\u00e8res, donc, partie centrale de la fen\u00eatre de personnalisation. Passons l\u00e0 \u00e0 40px : font-size: 40px; Voyez la capture d'\u00e9cran pour vous guider. Vous pouvez constater instantan\u00e9ment la prise en compte de votre modification sur la partie droite de la fen\u00eatre de personnalisation. Les caract\u00e8res ont doubl\u00e9 de taille. Et par la m\u00eame sont plus lisibles. modification de la couleur des caract\u00e8res A titre d'exemple nous allons afficher les Hiraganas en bleu. Voici la modification \u00e0 faire dans la partie haute de la fen\u00eatre de personnalisation. Nous allons appliquer un style css aux Hiraganas. Pour cela nous allons cr\u00e9er une classe (c'est comme cela que cela s'appelle en CSS et HTML) et l'appliquer aux Hiraganas (donc le recto.) {{recto}} Ensuite, nous allons d\u00e9finir la classe cr\u00e9e dans la partie centrale d\u00e9di\u00e9e aux styles. Cela se fait comme dans un fichier .css classique. .hiragana { color: blue; } Voyons le r\u00e9sultat : C'est d\u00e9j\u00e0 nettement plus joli! (\u00e0 mon go\u00fbt, bien s\u00fbr ...) Voyons le r\u00e9sultat final. Pour cela, cliquez sur \u00abFermer\u00bb en bas \u00e0 droite de la fen\u00eatre. Puis sur \u00abClose\u00bb de la fen\u00eatre qui appara\u00eet. Voil\u00e0 pour une premi\u00e8re personnalisation de nos cartes. Beaucoup de choses sont possibles et nous en verront encore certaines dans les chapitres \u00e0 suivre. Tout d'abord, nous allons personnaliser le contenu de nos cartes, ajouter des champs, du son ,et pourquoi pas, des images.","title":"Personnalisation"},{"location":"Tutoriels/tutoanki/Personnalisation/#personnalisation","text":"","title":"Personnalisation"},{"location":"Tutoriels/tutoanki/Personnalisation/#constat","text":"Le premier constat est que ce n'est pas sexy du tout : carat\u00e8res trop petits, tout est plant\u00e9 en haut de l'\u00e9cran.","title":"Constat"},{"location":"Tutoriels/tutoanki/Personnalisation/#personnalisation_1","text":"Les fiches sont enti\u00e8rement personnalisables gr\u00e2ce aux CSS, le langage des propri\u00e9t\u00e9s d'affichage des pages html (le Web). Nous allons pouvoir utiliser un sous-ensemble de ces directives pour augmenter la taille des caract\u00e8res, changer leur couleur etc. Une documentation consid\u00e9rable est disponible sur le Web qui vous permettra d'\u00e9tudier et d'appliquer les r\u00e8gles.","title":"Personnalisation"},{"location":"Tutoriels/tutoanki/Personnalisation/#premiere-etape","text":"Pour un d\u00e9but, nous allons changer la taille des carat\u00e8res affich\u00e9s. cliquez sur \u00abOutils\u00bb puis dans le menu d\u00e9roulant qui appara\u00eet sur \u00abG\u00e9rer les types de notes\u00bb appara\u00eet l'\u00e9cran suivant : cliquez sur \u00abCartes\u00bb vous voil\u00e0 enfin sur la page qui va vous permettre de modifier l'apparence de vos cartes. La fen\u00eatre de personnalisation est d\u00e9coup\u00e9e en 2 parties principales, verticalement. La partie droite vous montre l'apparence que prendra votre partie recto et verso une fois les modifications faites. La partie gauche est constitu\u00e9e de 3 parties : en haut, la face recto de votre carte en bas, la face verso de votre carte au milieu, les caract\u00e9ristiques globales qui s'appliqueront aussi bien au recto qu'au vero. modification de la taille des caract\u00e8res : La taille indiqu\u00e9e sur la partie centrale indique une taille de fonte de 20 pixels (font-size: 20px;). La famille de la fonte est arial (tr\u00e8s passe-partout). Couleur des caract\u00e8re noire sur fond blanc. Toutes ces caract\u00e9ristiques sont modifiables, soit au niveau global, ou sur chaque c\u00f4t\u00e9 de la carte. Modifions pour commencer la taille gobale des carat\u00e8res, donc, partie centrale de la fen\u00eatre de personnalisation. Passons l\u00e0 \u00e0 40px : font-size: 40px; Voyez la capture d'\u00e9cran pour vous guider. Vous pouvez constater instantan\u00e9ment la prise en compte de votre modification sur la partie droite de la fen\u00eatre de personnalisation. Les caract\u00e8res ont doubl\u00e9 de taille. Et par la m\u00eame sont plus lisibles. modification de la couleur des caract\u00e8res A titre d'exemple nous allons afficher les Hiraganas en bleu. Voici la modification \u00e0 faire dans la partie haute de la fen\u00eatre de personnalisation. Nous allons appliquer un style css aux Hiraganas. Pour cela nous allons cr\u00e9er une classe (c'est comme cela que cela s'appelle en CSS et HTML) et l'appliquer aux Hiraganas (donc le recto.) {{recto}} Ensuite, nous allons d\u00e9finir la classe cr\u00e9e dans la partie centrale d\u00e9di\u00e9e aux styles. Cela se fait comme dans un fichier .css classique. .hiragana { color: blue; } Voyons le r\u00e9sultat : C'est d\u00e9j\u00e0 nettement plus joli! (\u00e0 mon go\u00fbt, bien s\u00fbr ...) Voyons le r\u00e9sultat final. Pour cela, cliquez sur \u00abFermer\u00bb en bas \u00e0 droite de la fen\u00eatre. Puis sur \u00abClose\u00bb de la fen\u00eatre qui appara\u00eet. Voil\u00e0 pour une premi\u00e8re personnalisation de nos cartes. Beaucoup de choses sont possibles et nous en verront encore certaines dans les chapitres \u00e0 suivre. Tout d'abord, nous allons personnaliser le contenu de nos cartes, ajouter des champs, du son ,et pourquoi pas, des images.","title":"Premi\u00e8re \u00e9tape"},{"location":"Tutoriels/tutoanki/Premi%C3%A8re-utilisation/","text":"Premi\u00e8re utilisation et premi\u00e8re impressions Vous voil\u00e0 devant l'\u00e9cran pr\u00e9c\u00e9dent de Anki avec son paquet par d\u00e9faut et ses 5 fiches. Vous noterez que vous n'avez pas encore \u00e9tudi\u00e9 de cartes. Oui, \u00e7a vient! Cliquez sur \u00abPar defaut\u00bb, vous obtenez l'\u00e9cran suivant : Anki vous affiche l'\u00e9tat de votre \u00abpaquet\u00bb, \u00abdeck\u00bb en anglais. Vous avez 5 fiches que vous n'avez pas apprises, donc 0 \u00e0 repasser et 0 \u00e0 r\u00e9viser. Cliqez sur \u00ab\u00c9tudier maintenant\u00bb, juste en regard de l'\u00e9tat de vos fiches. Appara\u00eet le recto de votre premi\u00e8re fiche : R\u00e9fl\u00e9chissez \u00e0 la r\u00e9ponse et cliquez sur \u00abafficher la r\u00e9ponse\u00bb en bas de la fen\u00eatre Anki. Vous voyez affich\u00e9 la question, une ligne de s\u00e9paration et la r\u00e9ponse. Si vous ne vous \u00eates pas tromp\u00e9, cliquez sur \u00abCorrect\u00bb en bas de la fen\u00eatre Anki, ou \u00e0 revoir si vous avez h\u00e9sit\u00e9 ou vous vous \u00eates tromp\u00e9. Dans ces derniers cas, la fiche vous sera repropos\u00e9e, tout d'abord tr\u00e8s rapidement, ensuite avec un intervalle croissant, jusqu'\u00e0 ce que vous la marisiez. Continuez jusqu'\u00e0 la fin de votre paquet pour automatiser les op\u00e9rations.","title":"Premi\u00e8res utilisations et impressions"},{"location":"Tutoriels/tutoanki/Premi%C3%A8re-utilisation/#premiere-utilisation-et-premiere-impressions","text":"Vous voil\u00e0 devant l'\u00e9cran pr\u00e9c\u00e9dent de Anki avec son paquet par d\u00e9faut et ses 5 fiches. Vous noterez que vous n'avez pas encore \u00e9tudi\u00e9 de cartes. Oui, \u00e7a vient! Cliquez sur \u00abPar defaut\u00bb, vous obtenez l'\u00e9cran suivant : Anki vous affiche l'\u00e9tat de votre \u00abpaquet\u00bb, \u00abdeck\u00bb en anglais. Vous avez 5 fiches que vous n'avez pas apprises, donc 0 \u00e0 repasser et 0 \u00e0 r\u00e9viser. Cliqez sur \u00ab\u00c9tudier maintenant\u00bb, juste en regard de l'\u00e9tat de vos fiches. Appara\u00eet le recto de votre premi\u00e8re fiche : R\u00e9fl\u00e9chissez \u00e0 la r\u00e9ponse et cliquez sur \u00abafficher la r\u00e9ponse\u00bb en bas de la fen\u00eatre Anki. Vous voyez affich\u00e9 la question, une ligne de s\u00e9paration et la r\u00e9ponse. Si vous ne vous \u00eates pas tromp\u00e9, cliquez sur \u00abCorrect\u00bb en bas de la fen\u00eatre Anki, ou \u00e0 revoir si vous avez h\u00e9sit\u00e9 ou vous vous \u00eates tromp\u00e9. Dans ces derniers cas, la fiche vous sera repropos\u00e9e, tout d'abord tr\u00e8s rapidement, ensuite avec un intervalle croissant, jusqu'\u00e0 ce que vous la marisiez. Continuez jusqu'\u00e0 la fin de votre paquet pour automatiser les op\u00e9rations.","title":"Premi\u00e8re utilisation et premi\u00e8re impressions"},{"location":"Tutoriels/tutobuster/1-tutobuster/","text":"Introduction 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 : Buster. 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 Knot (service diff\u00e9rent par rapport au tutoriel pr\u00e9c\u00e9dent: nous avions utilis\u00e9 Bind9 ), un serveur Web (Apache), un bouncer IRC, un serveur Git (gogs ou Gitea). Nous aurions pu faire d'autres choix, comme Unbound (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 (je ferai une partie pour expliquer l'installation de ces services en \"local\"), 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. Pour l'\u00e9dition de cette version, je m'appuie sur l'\u00e9diteur Atom avec le plugin markdownlint en esp\u00e9rant que l'\u00e9dition en sera plus facile et reproductible (oui, je suis t\u00eatu.)","title":"Pr\u00e9sentation"},{"location":"Tutoriels/tutobuster/1-tutobuster/#introduction","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 : Buster. 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 Knot (service diff\u00e9rent par rapport au tutoriel pr\u00e9c\u00e9dent: nous avions utilis\u00e9 Bind9 ), un serveur Web (Apache), un bouncer IRC, un serveur Git (gogs ou Gitea). Nous aurions pu faire d'autres choix, comme Unbound (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 (je ferai une partie pour expliquer l'installation de ces services en \"local\"), 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. Pour l'\u00e9dition de cette version, je m'appuie sur l'\u00e9diteur Atom avec le plugin markdownlint en esp\u00e9rant que l'\u00e9dition en sera plus facile et reproductible (oui, je suis t\u00eatu.)","title":"Introduction"},{"location":"Tutoriels/tutobuster/2-Installation-de-base/","text":"Installation d'un serveur Debian/Buster 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 HP Proliant MicroServer, AMD Turion(tm) II Neo N54L Dual-Core Processor, 8Go de RAM, et 2 disques de 1 To classiques et 2 SSDs de 250Go). Il sera reli\u00e9 \u00e0 un clavier et un \u00e9cran pendant la phase d'installation. Les captures d'\u00e9cran seront faites avec l'installation d'une configuration semblable simul\u00e9e dans une machine virtuelle (virt-manager.) Ce serveur est assez ancien et l'amor\u00e7age n'est pas bas\u00e9 sur UEFI, mais un bios standard. Le serveur est \u00e9quip\u00e9 de 2 disques non-SSD en mode RAID 1 , configur\u00e9s comme /home et 2 disques SSDs en mode RAID 1 pour / . **Note:** J'ai fait une installation de Debian/Buster sur du mat\u00e9riel plus r\u00e9cent, avec UEFI disponible. J'avoue que j'ai gal\u00e9r\u00e9 un peu. Voil\u00e0 la proc\u00e9dure utilis\u00e9e pour pouvoir proc\u00e9der \u00e0 l'installation: - Allez dans le bios du serveur et v\u00e9rifiez que le mode UEFI est activ\u00e9. - J'ai t\u00e9l\u00e9charg\u00e9 une ISO de **gparted**, logiciel de partionnement, je l'ai install\u00e9e sur une clef USB. J'ai ensuite d\u00e9marr\u00e9 sur cette clef. - Ensuite, j'ai effac\u00e9 toutes les partitions du disque et cr\u00e9\u00e9 une table de partition GPT. - Cr\u00e9ation de la premi\u00e8re partition de 500 Mo, avec \u00e9tiquette \"boot\", formatage en FAT32, et d\u00e9finition du type \u00e0 **esp**. Il faut monter cette partition sur **/boot/efi** pendant le partitionnement des disques lors de l'installation. - le reste du formatage du disque sera identique \u00e0 une installation normale. Voil\u00e0 par exemple le sch\u00e9ma de partitionnement de ma machine de bureau avec UEFI (partie **sdb**): root@aldebaran:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT .... sdb 8:16 0 223,6G 0 disk \u251c\u2500sdb1 8:17 0 500M 0 part /boot/efi \u251c\u2500sdb2 8:18 0 1000M 0 part /boot \u251c\u2500sdb3 8:19 0 97,7G 0 part / \u251c\u2500sdb4 8:20 0 48,8G 0 part \u2514\u2500sdb5 8:21 0 23,3G 0 part [SWAP] root@aldebaran:~# 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 \"registrar\" 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 aijan . Le nom complet de ma machine serait donc: aijan.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. Les adresses fixes que je vais attribuer \u00e0 mon serveur sont les suivantes: IPV4: 192.168.111.240 IPV6: 2a01:e0a:d0:3c20::240 Un compte utilisateur L'installateur Debian vous demandera un mot de passe pour le compte root (super-utilisateur): laissez-le vide. nous utiliserons sudo Note : si vous laissez le mot de passe du super-utilisateur (root) vide pendant l'installation, l'utilitaire sudo sera install\u00e9 et le premier utilisateur (que vous d\u00e9finissez \u00e0 l'\u00e9tape suivante) aura les droits d'administration. Les commandes seront donc \u00e0 pr\u00e9fixer par sudo : ex: sudo ip a J'ai une pr\u00e9f\u00e9rence pour l'utilisation du compte root ... \u00e0 chacun de choisir suivant ses pr\u00e9f\u00e9rences. Mais j'ai d\u00e9cid\u00e9 d'utiliser sudo dans ce tutoriel. Ensuite, si vous n'avez pas activ\u00e9 le compte sudo , qui est le compte administrateur, il vous demandera de d\u00e9finir un compte utilisateur, ici, notre 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. 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. Si vous avez opt\u00e9 pour l'utilisation du compte root , pour obtenir les droits super utilisateur (root) , il faudra taper su suivi du mot de passe super utilisateur . Dans un deuxi\u00e8me temps, nous installerons aussi un mode d'acc\u00e8s encore plus s\u00e9curis\u00e9 2FA. (2FA \u2013 Two-factor authentication) Si j'ai le temps, j'essayerai aussi de s\u00e9curiser l'acc\u00e8s au serveur avec une carte \u00e0 puce. Nous modifierons \u00e9galement les mots de passe administrateur (et super-utilisateur) par la suite, en utilisant un g\u00e9n\u00e9rateur de mots de passe. R\u00e9capitulatif Voici les donn\u00e9es que nous voulons pour notre serveur. L'adresse ip actuelle est une adresse dhcp , attribu\u00e9e automatiquement par la box internet (freebox dans mon cas). Nous changerons \u00e7a pour une adresse IP fixe en ipv4 et ipv6. Nom de la machine Domaine Adresse IPV4 IPV6 aijan yojik.net 192.168.111.240 2a01:e0a:d0:3c20::240 Nom d'utilisateur: ericadmin Mot de passe: celui que vous avez saisi lors de l'installation et que nous changerons ensuite. 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 amd64 . Note: Il existe des images \"non-officielles\" 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 Si vous avez besoin de firmwares particuliers (\u00e0 utiliser avec l'ISO officielle), ils sont disponibles ici: firmwares Installez-les suivant les instructions donn\u00e9es sur cette page. Copie de l'image sur une clef USB Il vous faut d\u00e9terminer le p\u00e9riph\u00e9rique utilis\u00e9 par votre clef. Lancez la commande : tail -f /var/log/messages dans un terminal root et ins\u00e9rez la clef dans votre ordinateur Linux. Voici un extrait du r\u00e9sultat sur ma machine: Apr 15 14:02:46 aldebaran kernel: [24895.010625] usb 2-5: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd Apr 15 14:02:48 aldebaran kernel: [24896.188120] usb 2-5: New USB device found, idVendor=1f75, idProduct=0917, bcdDevice= 0.01 Apr 15 14:02:48 aldebaran kernel: [24896.188126] usb 2-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Apr 15 14:02:48 aldebaran kernel: [24896.188129] usb 2-5: Product: PenDrive Apr 15 14:02:48 aldebaran kernel: [24896.188131] usb 2-5: Manufacturer: Innostor Apr 15 14:02:48 aldebaran kernel: [24896.188134] usb 2-5: SerialNumber: 000000000000000020 Apr 15 14:02:48 aldebaran mtp-probe: checking bus 2, device 2: \"/sys/devices/pci0000:00/0000:00:14.0/usb2/2-5\" Apr 15 14:02:48 aldebaran mtp-probe: bus: 2, device: 2 was not an MTP device Apr 15 14:02:48 aldebaran kernel: [24896.210264] usb-storage 2-5:1.0: USB Mass Storage device detected Apr 15 14:02:48 aldebaran kernel: [24896.210468] scsi host6: usb-storage 2-5:1.0 Apr 15 14:02:48 aldebaran kernel: [24896.210530] usbcore: registered new interface driver usb-storage Apr 15 14:02:48 aldebaran kernel: [24896.212430] usbcore: registered new interface driver uas Apr 15 14:02:48 aldebaran mtp-probe: checking bus 2, device 2: \"/sys/devices/pci0000:00/0000:00:14.0/usb2/2-5\" Apr 15 14:02:48 aldebaran mtp-probe: bus: 2, device: 2 was not an MTP device Apr 15 14:02:49 aldebaran kernel: [24897.233847] scsi 6:0:0:0: Direct-Access Innostor Innostor 1.00 PQ: 0 ANSI: 6 Apr 15 14:02:49 aldebaran kernel: [24897.234481] sd 6:0:0:0: Attached scsi generic sg2 type 0 Apr 15 14:02:49 aldebaran kernel: [24897.234855] sd 6:0:0:0: [sdc] 61440000 512-byte logical blocks: (31.5 GB/29.3 GiB) Apr 15 14:02:49 aldebaran kernel: [24897.235055] sd 6:0:0:0: [sdc] Write Protect is off Apr 15 14:02:49 aldebaran kernel: [24897.235247] sd 6:0:0:0: [sdc] Write cache: disabled, read cache: disabled, doesn\\'t support DPO or FUA Apr 15 14:02:49 aldebaran kernel: [24897.237088] sdc: sdc1 sdc2 Apr 15 14:02:49 aldebaran kernel: [24897.238655] sd 6:0:0:0: [sdc] Attached SCSI removable disk Apr 15 14:02:49 aldebaran udisksd[710]: Mounted /dev/sdc1 at /media/eric/Debian 10.3.0 amd64 1 on behalf of uid 1001 Le p\u00e9riph\u00e9rique utilis\u00e9 sera donc (dans mon cas): /dev/sdc . 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.). Mon ordinateur fixe est sous Linux Debian/Buster. Copie avec un logiciel \"sp\u00e9cialis\u00e9\" 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-10.4.0-amd64-netinst.iso of=/dev/sdc bs=4096 Le param\u00e8tre bs=4096 est n\u00e9cessaire pour certaines clefs 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 d\u00e9marrage (booting sequence) (quel p\u00e9riph\u00e9rique sera utilis\u00e9 pour amorcer la machine). Apr\u00e8s l'installation, l'op\u00e9ration inverse sera souvent n\u00e9cessaire pour r\u00e9tablir l'ordre initial de d\u00e9marrage. (d\u00e9marrage sur le disque dur principal) 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 le p\u00e9riph\u00e9rique sur lequel d\u00e9marrer (amor\u00e7age, booter): choisissez votre clef. Installation du serveur sans chiffrement des partitions Nous utiliserons le mode graphique d'installation, mais vous pouvez utiliser le mode texte si vous voulez. Les \u00e9crans sont identiques. Ici, vous voyez la cr\u00e9ation d'une machine virtuelle dans laquelle j'installe Debian 10, ceci pour pouvoir prendre des copies d'\u00e9cran de l'installation. D\u00e9marrage Choix du mode d'installation Graphique 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, aijan 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 une fois configur\u00e9 pour l'IPV4 (la section IPV6 sera vue plus loin): 127.0.0.1 localhost # serveur aijan 192.168.111.240 aijan.yojik.net aijan # 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 une adresse IPV6 fixe ensuite. A l'installation, le syst\u00e8me installe automatiquement des adresses obtenues par dhcp , en IPV4 et IPV6, attribu\u00e9es dans un pool (g\u00e9r\u00e9es souvent par la box internet). Ces adresses sont \u00e0 modifier pour l'utilisation de notre serveur avec acc\u00e8s de l'ext\u00e9rieur (internet). Il est possible de g\u00e9rer des adresses qui changent avec une redirection, mais l'utilisation d'adresses fixes est pr\u00e9f\u00e9rable. Sur l'image suivante, vous voyez le chargement des composants de base de l'installation. Configuration automatique du r\u00e9seau (que nous reconfigurerons plus tard) Le choix du nom du serveur. Choix du nom de domaine yojik.net (mettez le votre!) Saisie du mot de passe root (super-utilisateur) Nous laisserons ces champs vides pour que Debian nous configure automatiquement un compte utilisateur avec les droits sudo . Saisie des donn\u00e9es du compte utilisateur Ici, saisissez votre compte administrateur (admin ou celui de votre choix) qui aura les droits sudo car nous avons laiss\u00e9 les champs de saisie super-utilisateur vides; 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 . Il vous sera \u00e9galement demand\u00e9 votre nom r\u00e9el (ou le nom de votre choix!). Saisie du mot de passe utilisateur avec confirmation. Configuration de l'horloge. Pas de capture d'\u00e9cran .... elle a d\u00e9fil\u00e9 trop rapidement. 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 \"distant\". Il existe des solutions de chiffrement avec r\u00e9cup\u00e9ration automatique de la clef sur un serveur. Article sur opensource qui d\u00e9taille 2 solutions quand il n'y a pas d'acc\u00e8s physique au serveur. Ici, nous utiliserons nos 4 disques en 2 syst\u00e8mes RAID 1. Le r\u00e9pertoire /home tiendra enti\u00e8rement sur les disques classiques mont\u00e9s en RAID 1. Voil\u00e0 ce \u00e0 quoi le partitionnement va aboutir: ericadmin@aijan:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931,5G 0 disk \u2514\u2500sda1 8:1 0 931,5G 0 part \u2514\u2500md0 9:0 0 931,4G 0 raid1 /home sdb 8:16 0 931,5G 0 disk \u2514\u2500sdb1 8:17 0 931,5G 0 part \u2514\u2500md0 9:0 0 931,4G 0 raid1 /home sdc 8:32 0 223,6G 0 disk \u251c\u2500sdc1 8:33 0 9,3G 0 part [SWAP] \u2514\u2500sdc2 8:34 0 214,3G 0 part \u2514\u2500md1 9:1 0 214,1G 0 raid1 / sdd 8:48 0 223,6G 0 disk \u251c\u2500sdd1 8:49 0 9,3G 0 part [SWAP] \u2514\u2500sdd2 8:50 0 214,3G 0 part \u2514\u2500md1 9:1 0 214,1G 0 raid1 / ericadmin@aijan:~$ Notez que vous voyez dans les captures d'\u00e9cran la simulation dans la machien virtuelle: le principe est exactement identique, mais avec des vrais disques durs. Choix du disque \u00e0 partitionner: Confirmation: Dans notre cas, nous allons partitionner notre disque virtuel pour simuler les 4 disques durs. Partitionner les disques: Cr\u00e9er une nouvelle partition: Ne pas mettre encore de point de montage: c'est le syst\u00e8me RAID qui aura un point de montage. J'ai cr\u00e9\u00e9 \u00e9galement des partitions swap . Voici les partitions une fois cr\u00e9es: Cr\u00e9ation des syst\u00e8mes RAID 1: Confirmation du partitionnement: Cr\u00e9ation des points de montage: Faites de m\u00eame avec l'autre syst\u00e8me RAID mont\u00e9 sur /home . Terminer le partitionnement: Progression de l'installation Installation du syst\u00e8me de base. 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 \"popularity contest\" 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 \"environnement de bureau\" et s\u00e9lectionnez: \"serveur ssh\" et \"utilitaires usuels du syst\u00e8me\" . 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. Kilobug m'a sugg\u00e9r\u00e9 d'installer grub sur les 2 disques qui constituent le syst\u00e8me raid . Simplement, revenir en arri\u00e8re, et rajouter le boot sur le deuxi\u00e8me disque de la grappe raid. L'installation se finalise: Red\u00e9marrage Enlevez la clef USB qui a permis de lancer l'installation et tapez ENTER . S'identifier (se loguer). Ici, utilisateur ericadmin , puis saisie du mot de passe. 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 \"quelques\" \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 de base"},{"location":"Tutoriels/tutobuster/2-Installation-de-base/#installation-dun-serveur-debianbuster-securise","text":"","title":"Installation d'un serveur Debian/Buster s\u00e9curis\u00e9"},{"location":"Tutoriels/tutobuster/2-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":"Tutoriels/tutobuster/2-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 HP Proliant MicroServer, AMD Turion(tm) II Neo N54L Dual-Core Processor, 8Go de RAM, et 2 disques de 1 To classiques et 2 SSDs de 250Go). Il sera reli\u00e9 \u00e0 un clavier et un \u00e9cran pendant la phase d'installation. Les captures d'\u00e9cran seront faites avec l'installation d'une configuration semblable simul\u00e9e dans une machine virtuelle (virt-manager.) Ce serveur est assez ancien et l'amor\u00e7age n'est pas bas\u00e9 sur UEFI, mais un bios standard. Le serveur est \u00e9quip\u00e9 de 2 disques non-SSD en mode RAID 1 , configur\u00e9s comme /home et 2 disques SSDs en mode RAID 1 pour / . **Note:** J'ai fait une installation de Debian/Buster sur du mat\u00e9riel plus r\u00e9cent, avec UEFI disponible. J'avoue que j'ai gal\u00e9r\u00e9 un peu. Voil\u00e0 la proc\u00e9dure utilis\u00e9e pour pouvoir proc\u00e9der \u00e0 l'installation: - Allez dans le bios du serveur et v\u00e9rifiez que le mode UEFI est activ\u00e9. - J'ai t\u00e9l\u00e9charg\u00e9 une ISO de **gparted**, logiciel de partionnement, je l'ai install\u00e9e sur une clef USB. J'ai ensuite d\u00e9marr\u00e9 sur cette clef. - Ensuite, j'ai effac\u00e9 toutes les partitions du disque et cr\u00e9\u00e9 une table de partition GPT. - Cr\u00e9ation de la premi\u00e8re partition de 500 Mo, avec \u00e9tiquette \"boot\", formatage en FAT32, et d\u00e9finition du type \u00e0 **esp**. Il faut monter cette partition sur **/boot/efi** pendant le partitionnement des disques lors de l'installation. - le reste du formatage du disque sera identique \u00e0 une installation normale. Voil\u00e0 par exemple le sch\u00e9ma de partitionnement de ma machine de bureau avec UEFI (partie **sdb**): root@aldebaran:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT .... sdb 8:16 0 223,6G 0 disk \u251c\u2500sdb1 8:17 0 500M 0 part /boot/efi \u251c\u2500sdb2 8:18 0 1000M 0 part /boot \u251c\u2500sdb3 8:19 0 97,7G 0 part / \u251c\u2500sdb4 8:20 0 48,8G 0 part \u2514\u2500sdb5 8:21 0 23,3G 0 part [SWAP] root@aldebaran:~# 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 \"registrar\" 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 aijan . Le nom complet de ma machine serait donc: aijan.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. Les adresses fixes que je vais attribuer \u00e0 mon serveur sont les suivantes: IPV4: 192.168.111.240 IPV6: 2a01:e0a:d0:3c20::240 Un compte utilisateur L'installateur Debian vous demandera un mot de passe pour le compte root (super-utilisateur): laissez-le vide. nous utiliserons sudo Note : si vous laissez le mot de passe du super-utilisateur (root) vide pendant l'installation, l'utilitaire sudo sera install\u00e9 et le premier utilisateur (que vous d\u00e9finissez \u00e0 l'\u00e9tape suivante) aura les droits d'administration. Les commandes seront donc \u00e0 pr\u00e9fixer par sudo : ex: sudo ip a J'ai une pr\u00e9f\u00e9rence pour l'utilisation du compte root ... \u00e0 chacun de choisir suivant ses pr\u00e9f\u00e9rences. Mais j'ai d\u00e9cid\u00e9 d'utiliser sudo dans ce tutoriel. Ensuite, si vous n'avez pas activ\u00e9 le compte sudo , qui est le compte administrateur, il vous demandera de d\u00e9finir un compte utilisateur, ici, notre 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. 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. Si vous avez opt\u00e9 pour l'utilisation du compte root , pour obtenir les droits super utilisateur (root) , il faudra taper su suivi du mot de passe super utilisateur . Dans un deuxi\u00e8me temps, nous installerons aussi un mode d'acc\u00e8s encore plus s\u00e9curis\u00e9 2FA. (2FA \u2013 Two-factor authentication) Si j'ai le temps, j'essayerai aussi de s\u00e9curiser l'acc\u00e8s au serveur avec une carte \u00e0 puce. Nous modifierons \u00e9galement les mots de passe administrateur (et super-utilisateur) par la suite, en utilisant un g\u00e9n\u00e9rateur de mots de passe.","title":"Pr\u00e9requis"},{"location":"Tutoriels/tutobuster/2-Installation-de-base/#recapitulatif","text":"Voici les donn\u00e9es que nous voulons pour notre serveur. L'adresse ip actuelle est une adresse dhcp , attribu\u00e9e automatiquement par la box internet (freebox dans mon cas). Nous changerons \u00e7a pour une adresse IP fixe en ipv4 et ipv6. Nom de la machine Domaine Adresse IPV4 IPV6 aijan yojik.net 192.168.111.240 2a01:e0a:d0:3c20::240 Nom d'utilisateur: ericadmin Mot de passe: celui que vous avez saisi lors de l'installation et que nous changerons ensuite.","title":"R\u00e9capitulatif"},{"location":"Tutoriels/tutobuster/2-Installation-de-base/#preparation-de-linstallation","text":"","title":"Pr\u00e9paration de l'installation"},{"location":"Tutoriels/tutobuster/2-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 amd64 . Note: Il existe des images \"non-officielles\" 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 Si vous avez besoin de firmwares particuliers (\u00e0 utiliser avec l'ISO officielle), ils sont disponibles ici: firmwares Installez-les suivant les instructions donn\u00e9es sur cette page.","title":"T\u00e9l\u00e9chargement de l'image ISO netinstall"},{"location":"Tutoriels/tutobuster/2-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. Lancez la commande : tail -f /var/log/messages dans un terminal root et ins\u00e9rez la clef dans votre ordinateur Linux. Voici un extrait du r\u00e9sultat sur ma machine: Apr 15 14:02:46 aldebaran kernel: [24895.010625] usb 2-5: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd Apr 15 14:02:48 aldebaran kernel: [24896.188120] usb 2-5: New USB device found, idVendor=1f75, idProduct=0917, bcdDevice= 0.01 Apr 15 14:02:48 aldebaran kernel: [24896.188126] usb 2-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Apr 15 14:02:48 aldebaran kernel: [24896.188129] usb 2-5: Product: PenDrive Apr 15 14:02:48 aldebaran kernel: [24896.188131] usb 2-5: Manufacturer: Innostor Apr 15 14:02:48 aldebaran kernel: [24896.188134] usb 2-5: SerialNumber: 000000000000000020 Apr 15 14:02:48 aldebaran mtp-probe: checking bus 2, device 2: \"/sys/devices/pci0000:00/0000:00:14.0/usb2/2-5\" Apr 15 14:02:48 aldebaran mtp-probe: bus: 2, device: 2 was not an MTP device Apr 15 14:02:48 aldebaran kernel: [24896.210264] usb-storage 2-5:1.0: USB Mass Storage device detected Apr 15 14:02:48 aldebaran kernel: [24896.210468] scsi host6: usb-storage 2-5:1.0 Apr 15 14:02:48 aldebaran kernel: [24896.210530] usbcore: registered new interface driver usb-storage Apr 15 14:02:48 aldebaran kernel: [24896.212430] usbcore: registered new interface driver uas Apr 15 14:02:48 aldebaran mtp-probe: checking bus 2, device 2: \"/sys/devices/pci0000:00/0000:00:14.0/usb2/2-5\" Apr 15 14:02:48 aldebaran mtp-probe: bus: 2, device: 2 was not an MTP device Apr 15 14:02:49 aldebaran kernel: [24897.233847] scsi 6:0:0:0: Direct-Access Innostor Innostor 1.00 PQ: 0 ANSI: 6 Apr 15 14:02:49 aldebaran kernel: [24897.234481] sd 6:0:0:0: Attached scsi generic sg2 type 0 Apr 15 14:02:49 aldebaran kernel: [24897.234855] sd 6:0:0:0: [sdc] 61440000 512-byte logical blocks: (31.5 GB/29.3 GiB) Apr 15 14:02:49 aldebaran kernel: [24897.235055] sd 6:0:0:0: [sdc] Write Protect is off Apr 15 14:02:49 aldebaran kernel: [24897.235247] sd 6:0:0:0: [sdc] Write cache: disabled, read cache: disabled, doesn\\'t support DPO or FUA Apr 15 14:02:49 aldebaran kernel: [24897.237088] sdc: sdc1 sdc2 Apr 15 14:02:49 aldebaran kernel: [24897.238655] sd 6:0:0:0: [sdc] Attached SCSI removable disk Apr 15 14:02:49 aldebaran udisksd[710]: Mounted /dev/sdc1 at /media/eric/Debian 10.3.0 amd64 1 on behalf of uid 1001 Le p\u00e9riph\u00e9rique utilis\u00e9 sera donc (dans mon cas): /dev/sdc . 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.). Mon ordinateur fixe est sous Linux Debian/Buster. Copie avec un logiciel \"sp\u00e9cialis\u00e9\" 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-10.4.0-amd64-netinst.iso of=/dev/sdc bs=4096 Le param\u00e8tre bs=4096 est n\u00e9cessaire pour certaines clefs USB.","title":"Copie de l'image sur une clef USB"},{"location":"Tutoriels/tutobuster/2-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 d\u00e9marrage (booting sequence) (quel p\u00e9riph\u00e9rique sera utilis\u00e9 pour amorcer la machine). Apr\u00e8s l'installation, l'op\u00e9ration inverse sera souvent n\u00e9cessaire pour r\u00e9tablir l'ordre initial de d\u00e9marrage. (d\u00e9marrage sur le disque dur principal)","title":"Modification du BIOS"},{"location":"Tutoriels/tutobuster/2-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 le p\u00e9riph\u00e9rique sur lequel d\u00e9marrer (amor\u00e7age, booter): choisissez votre clef.","title":"Lancement de l'installation"},{"location":"Tutoriels/tutobuster/2-Installation-de-base/#installation-du-serveur-sans-chiffrement-des-partitions","text":"Nous utiliserons le mode graphique d'installation, mais vous pouvez utiliser le mode texte si vous voulez. Les \u00e9crans sont identiques. Ici, vous voyez la cr\u00e9ation d'une machine virtuelle dans laquelle j'installe Debian 10, ceci pour pouvoir prendre des copies d'\u00e9cran de l'installation. D\u00e9marrage Choix du mode d'installation Graphique 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, aijan 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 une fois configur\u00e9 pour l'IPV4 (la section IPV6 sera vue plus loin): 127.0.0.1 localhost # serveur aijan 192.168.111.240 aijan.yojik.net aijan # 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 une adresse IPV6 fixe ensuite. A l'installation, le syst\u00e8me installe automatiquement des adresses obtenues par dhcp , en IPV4 et IPV6, attribu\u00e9es dans un pool (g\u00e9r\u00e9es souvent par la box internet). Ces adresses sont \u00e0 modifier pour l'utilisation de notre serveur avec acc\u00e8s de l'ext\u00e9rieur (internet). Il est possible de g\u00e9rer des adresses qui changent avec une redirection, mais l'utilisation d'adresses fixes est pr\u00e9f\u00e9rable. Sur l'image suivante, vous voyez le chargement des composants de base de l'installation. Configuration automatique du r\u00e9seau (que nous reconfigurerons plus tard) Le choix du nom du serveur. Choix du nom de domaine yojik.net (mettez le votre!) Saisie du mot de passe root (super-utilisateur) Nous laisserons ces champs vides pour que Debian nous configure automatiquement un compte utilisateur avec les droits sudo . Saisie des donn\u00e9es du compte utilisateur Ici, saisissez votre compte administrateur (admin ou celui de votre choix) qui aura les droits sudo car nous avons laiss\u00e9 les champs de saisie super-utilisateur vides; 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 . Il vous sera \u00e9galement demand\u00e9 votre nom r\u00e9el (ou le nom de votre choix!). Saisie du mot de passe utilisateur avec confirmation. Configuration de l'horloge. Pas de capture d'\u00e9cran .... elle a d\u00e9fil\u00e9 trop rapidement. 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 \"distant\". Il existe des solutions de chiffrement avec r\u00e9cup\u00e9ration automatique de la clef sur un serveur. Article sur opensource qui d\u00e9taille 2 solutions quand il n'y a pas d'acc\u00e8s physique au serveur. Ici, nous utiliserons nos 4 disques en 2 syst\u00e8mes RAID 1. Le r\u00e9pertoire /home tiendra enti\u00e8rement sur les disques classiques mont\u00e9s en RAID 1. Voil\u00e0 ce \u00e0 quoi le partitionnement va aboutir: ericadmin@aijan:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931,5G 0 disk \u2514\u2500sda1 8:1 0 931,5G 0 part \u2514\u2500md0 9:0 0 931,4G 0 raid1 /home sdb 8:16 0 931,5G 0 disk \u2514\u2500sdb1 8:17 0 931,5G 0 part \u2514\u2500md0 9:0 0 931,4G 0 raid1 /home sdc 8:32 0 223,6G 0 disk \u251c\u2500sdc1 8:33 0 9,3G 0 part [SWAP] \u2514\u2500sdc2 8:34 0 214,3G 0 part \u2514\u2500md1 9:1 0 214,1G 0 raid1 / sdd 8:48 0 223,6G 0 disk \u251c\u2500sdd1 8:49 0 9,3G 0 part [SWAP] \u2514\u2500sdd2 8:50 0 214,3G 0 part \u2514\u2500md1 9:1 0 214,1G 0 raid1 / ericadmin@aijan:~$ Notez que vous voyez dans les captures d'\u00e9cran la simulation dans la machien virtuelle: le principe est exactement identique, mais avec des vrais disques durs. Choix du disque \u00e0 partitionner: Confirmation: Dans notre cas, nous allons partitionner notre disque virtuel pour simuler les 4 disques durs. Partitionner les disques: Cr\u00e9er une nouvelle partition: Ne pas mettre encore de point de montage: c'est le syst\u00e8me RAID qui aura un point de montage. J'ai cr\u00e9\u00e9 \u00e9galement des partitions swap . Voici les partitions une fois cr\u00e9es: Cr\u00e9ation des syst\u00e8mes RAID 1: Confirmation du partitionnement: Cr\u00e9ation des points de montage: Faites de m\u00eame avec l'autre syst\u00e8me RAID mont\u00e9 sur /home . Terminer le partitionnement: Progression de l'installation Installation du syst\u00e8me de base. 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 \"popularity contest\" 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 \"environnement de bureau\" et s\u00e9lectionnez: \"serveur ssh\" et \"utilitaires usuels du syst\u00e8me\" . 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. Kilobug m'a sugg\u00e9r\u00e9 d'installer grub sur les 2 disques qui constituent le syst\u00e8me raid . Simplement, revenir en arri\u00e8re, et rajouter le boot sur le deuxi\u00e8me disque de la grappe raid. L'installation se finalise: Red\u00e9marrage Enlevez la clef USB qui a permis de lancer l'installation et tapez ENTER . S'identifier (se loguer). Ici, utilisateur ericadmin , puis saisie du mot de passe. 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 \"quelques\" \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":"Tutoriels/tutobuster/3-ovh/","text":"Boot en mode root avec clef 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. Evidemment, il vous faut une clef SSH . Si vous n'en avez pas encore, voyez dans le chapitre Premi\u00e8re \u00e9tape de s\u00e9curisation o\u00f9 cette \u00e9tape est d\u00e9crite en d\u00e9tail. Il suffit de copier/coller l'empreinte de la clef publique dans l'emplacement pr\u00e9vu dans les param\u00e8tres. Exemple (pour ma clef g\u00e9n\u00e9raliste): eric@aldebaran:~$ cat .ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL2quh1K3jSwBiUC+jYgOQCaVteYo/ir9ivZ7Qr+Hbg9 eric@aldebaran eric@aldebaran:~$ Collez la partie qui commence par ssh- et finit par votre adresse \u00e9mail et collez-l\u00e0 dans l'emplacement pr\u00e9vu dans la console d'administration. Il est toujours possible de proc\u00e9der \u00e0 cet ajout ult\u00e9rieurement. eric@aldebaran:~$ ssh root@91.127.72.12 The authenticity of host '91.127.72.12 (91.127.72.12)' 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.127.72.12' (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.127.72.12 IPv6 : 2001:41d0:f:7d0d::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 12:31:50 2018 from 217.182.145.216 D\u00e9marrez sur le serveur: eric@aldebaran:~$ ssh root@91.127.72.12 The authenticity of host '91.127.72.12 (91.127.72.12)' 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.127.72.12' (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.127.72.12 IPv6 : 2001:41d0:f:7d0d::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. Installation sur serveur VPS de chez OVH J'ai lou\u00e9 2 serveurs VPS minimum pour installer mes serveurs DNS. La proc\u00e9dure est en tous points identique. La seule diff\u00e9rence est l'attribution d'un user debian avec les droits sudo d'administration. donc les commandes normalement sous le compte root seront pr\u00e9fix\u00e9es par sudo . Voir ci-dessus pour la clef SSH si vous n'en avez pas encore g\u00e9n\u00e9r\u00e9e. La suite des \u00e9tapes est identique \u00e0 celle de l'installation d'un home server .","title":"D\u00e9marrage sur serveur OVH"},{"location":"Tutoriels/tutobuster/3-ovh/#boot-en-mode-root-avec-clef-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. Evidemment, il vous faut une clef SSH . Si vous n'en avez pas encore, voyez dans le chapitre Premi\u00e8re \u00e9tape de s\u00e9curisation o\u00f9 cette \u00e9tape est d\u00e9crite en d\u00e9tail. Il suffit de copier/coller l'empreinte de la clef publique dans l'emplacement pr\u00e9vu dans les param\u00e8tres. Exemple (pour ma clef g\u00e9n\u00e9raliste): eric@aldebaran:~$ cat .ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL2quh1K3jSwBiUC+jYgOQCaVteYo/ir9ivZ7Qr+Hbg9 eric@aldebaran eric@aldebaran:~$ Collez la partie qui commence par ssh- et finit par votre adresse \u00e9mail et collez-l\u00e0 dans l'emplacement pr\u00e9vu dans la console d'administration. Il est toujours possible de proc\u00e9der \u00e0 cet ajout ult\u00e9rieurement. eric@aldebaran:~$ ssh root@91.127.72.12 The authenticity of host '91.127.72.12 (91.127.72.12)' 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.127.72.12' (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.127.72.12 IPv6 : 2001:41d0:f:7d0d::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 12:31:50 2018 from 217.182.145.216 D\u00e9marrez sur le serveur: eric@aldebaran:~$ ssh root@91.127.72.12 The authenticity of host '91.127.72.12 (91.127.72.12)' 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.127.72.12' (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.127.72.12 IPv6 : 2001:41d0:f:7d0d::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.","title":"Boot en mode root avec clef ssh"},{"location":"Tutoriels/tutobuster/3-ovh/#installation-sur-serveur-vps-de-chez-ovh","text":"J'ai lou\u00e9 2 serveurs VPS minimum pour installer mes serveurs DNS. La proc\u00e9dure est en tous points identique. La seule diff\u00e9rence est l'attribution d'un user debian avec les droits sudo d'administration. donc les commandes normalement sous le compte root seront pr\u00e9fix\u00e9es par sudo . Voir ci-dessus pour la clef SSH si vous n'en avez pas encore g\u00e9n\u00e9r\u00e9e. La suite des \u00e9tapes est identique \u00e0 celle de l'installation d'un home server .","title":"Installation sur serveur VPS de chez OVH"},{"location":"Tutoriels/tutobuster/4-Plan/","text":"Plan des op\u00e9rations \u00e0 effectuer suivant l'utilisation de notre serveur Etat des lieux sur les d\u00e9dies/vps, le hostname est celui donn\u00e9 par OVH (ou autre pour vous) et est souvent un nom cabalistique, en tous les cas, pas celui que vous voulez. le serveur SSH est trou\u00e9 (pas vraiment, simplement, il garde une compatibilit\u00e9 avec des protocoles anciens plus tr\u00e8s s\u00fbrs).... voil\u00e0 le r\u00e9sultat sur le serveur brut de fonderie (j'utilise l'adresse IPV6 pour qu'il soit accessible de l'ext\u00e9rieur par le site: audit ssh : R\u00e9cup\u00e9ration de l'adresse IPV6 de notre serveur: eric@aldebaran:~$ ssh ericadmin@192.168.111.49 ericadmin@192.168.111.49's password: Linux aijan 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64 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: Fri Jan 15 16:05:04 2021 from 192.168.111.150 ericadmin@aijan:~$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 38:ea:a7:a6:cf:93 brd ff:ff:ff:ff:ff:ff inet 192.168.111.49/24 brd 192.168.111.255 scope global dynamic enp2s0 valid_lft 37374sec preferred_lft 37374sec inet6 2a01:e0a:d0:3c20:3aea:a7ff:fea6:cf93/64 scope global dynamic mngtmpaddr valid_lft 85928sec preferred_lft 85928sec inet6 fe80::3aea:a7ff:fea6:cf93/64 scope link valid_lft forever preferred_lft forever ericadmin@aijan:~$ L'adresse est: 2a01:e0a:d0:3c20:3aea:a7ff:fea6:cf93 R\u00e9sultat de l'analyse (mauvais...) C'est la m\u00eame chose pour les d\u00e9di\u00e9s et les vps. nos serveurs \"at home\" ont une adresse ip donn\u00e9e par dhcp donc non fixe, en IPV4 et IPV6: \u00e0 fixer! Pas de firewall pas de protection contre les attaques de force brute Op\u00e9rations communes Pour tous nos serveurs, il y a des op\u00e9rations communes \u00e0 toutes les utilisations. * Mise \u00e0 jour du **hostname** et de **/etc/hosts** * S\u00e9curisation de **ssh** et de **sshd** * S\u00e9curisation des mots de passe * Configuration du r\u00e9seau * Installation d'un serveur de temps * Installation d'un pare-feux * Installation de fail2ban contre les attaques de force brute Op\u00e9rations particuli\u00e8res Ensuite, l'installation de logiciels et leur configuration d\u00e9pendra de l'usage auquel on r\u00e9serve notre serveur: * serveur **DNS** (knot) * serveur **web** (apache) * serveur **mail** (postfix, dovecot) * serveur **git** (gogs) Des services pourront \u00eatre ajout\u00e9s comme: * service de partage d'images (lufi) * serveur de partage de fichiers * serveur IRC * r\u00e9seaux sociaux comme xmpp, matrix, mastodon, hubzilla, etc ... * serveur de mots de passe (bitwarden-rs) Nos donn\u00e9es (ce que nous voulons): adresse IPV4 de notre serveur: 192.168.111.240 adresse IPV6 de notre serveur: 2a01:e0a:d0:3c20::240 hostname: aijan.yojik.net une unique porte d'entr\u00e9e par ssh sur le port 22 (mais vous pouvez opter pour une autre adresse si vous voulez) un firewall une protection contre les attaques de force brute (fail2ban) un serveur de temps pour une horloge \u00e0 l'heure des mots de passe s\u00fbrs (celui que j'ai indiqu\u00e9 \u00e0 l'installation est temporaire, pour faciliter ma connexion, et ceux de OVH sont donn\u00e9s par \u00e9mail si vous n'avez pas opt\u00e9 pour la connexion par clef) Commen\u00e7ons par les premi\u00e8res \u00e9tapes de s\u00e9curisation.","title":"Plan d'ensemble"},{"location":"Tutoriels/tutobuster/4-Plan/#plan-des-operations-a-effectuer-suivant-lutilisation-de-notre-serveur","text":"","title":"Plan des op\u00e9rations \u00e0 effectuer suivant l'utilisation de notre serveur"},{"location":"Tutoriels/tutobuster/4-Plan/#etat-des-lieux","text":"sur les d\u00e9dies/vps, le hostname est celui donn\u00e9 par OVH (ou autre pour vous) et est souvent un nom cabalistique, en tous les cas, pas celui que vous voulez. le serveur SSH est trou\u00e9 (pas vraiment, simplement, il garde une compatibilit\u00e9 avec des protocoles anciens plus tr\u00e8s s\u00fbrs).... voil\u00e0 le r\u00e9sultat sur le serveur brut de fonderie (j'utilise l'adresse IPV6 pour qu'il soit accessible de l'ext\u00e9rieur par le site: audit ssh : R\u00e9cup\u00e9ration de l'adresse IPV6 de notre serveur: eric@aldebaran:~$ ssh ericadmin@192.168.111.49 ericadmin@192.168.111.49's password: Linux aijan 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64 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: Fri Jan 15 16:05:04 2021 from 192.168.111.150 ericadmin@aijan:~$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 38:ea:a7:a6:cf:93 brd ff:ff:ff:ff:ff:ff inet 192.168.111.49/24 brd 192.168.111.255 scope global dynamic enp2s0 valid_lft 37374sec preferred_lft 37374sec inet6 2a01:e0a:d0:3c20:3aea:a7ff:fea6:cf93/64 scope global dynamic mngtmpaddr valid_lft 85928sec preferred_lft 85928sec inet6 fe80::3aea:a7ff:fea6:cf93/64 scope link valid_lft forever preferred_lft forever ericadmin@aijan:~$ L'adresse est: 2a01:e0a:d0:3c20:3aea:a7ff:fea6:cf93 R\u00e9sultat de l'analyse (mauvais...) C'est la m\u00eame chose pour les d\u00e9di\u00e9s et les vps. nos serveurs \"at home\" ont une adresse ip donn\u00e9e par dhcp donc non fixe, en IPV4 et IPV6: \u00e0 fixer! Pas de firewall pas de protection contre les attaques de force brute","title":"Etat des lieux"},{"location":"Tutoriels/tutobuster/4-Plan/#operations-communes","text":"Pour tous nos serveurs, il y a des op\u00e9rations communes \u00e0 toutes les utilisations. * Mise \u00e0 jour du **hostname** et de **/etc/hosts** * S\u00e9curisation de **ssh** et de **sshd** * S\u00e9curisation des mots de passe * Configuration du r\u00e9seau * Installation d'un serveur de temps * Installation d'un pare-feux * Installation de fail2ban contre les attaques de force brute","title":"Op\u00e9rations communes"},{"location":"Tutoriels/tutobuster/4-Plan/#operations-particulieres","text":"Ensuite, l'installation de logiciels et leur configuration d\u00e9pendra de l'usage auquel on r\u00e9serve notre serveur: * serveur **DNS** (knot) * serveur **web** (apache) * serveur **mail** (postfix, dovecot) * serveur **git** (gogs) Des services pourront \u00eatre ajout\u00e9s comme: * service de partage d'images (lufi) * serveur de partage de fichiers * serveur IRC * r\u00e9seaux sociaux comme xmpp, matrix, mastodon, hubzilla, etc ... * serveur de mots de passe (bitwarden-rs)","title":"Op\u00e9rations particuli\u00e8res"},{"location":"Tutoriels/tutobuster/4-Plan/#nos-donnees-ce-que-nous-voulons","text":"adresse IPV4 de notre serveur: 192.168.111.240 adresse IPV6 de notre serveur: 2a01:e0a:d0:3c20::240 hostname: aijan.yojik.net une unique porte d'entr\u00e9e par ssh sur le port 22 (mais vous pouvez opter pour une autre adresse si vous voulez) un firewall une protection contre les attaques de force brute (fail2ban) un serveur de temps pour une horloge \u00e0 l'heure des mots de passe s\u00fbrs (celui que j'ai indiqu\u00e9 \u00e0 l'installation est temporaire, pour faciliter ma connexion, et ceux de OVH sont donn\u00e9s par \u00e9mail si vous n'avez pas opt\u00e9 pour la connexion par clef) Commen\u00e7ons par les premi\u00e8res \u00e9tapes de s\u00e9curisation.","title":"Nos donn\u00e9es (ce que nous voulons):"},{"location":"Tutoriels/tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/","text":"Premi\u00e8res \u00e9tapes de s\u00e9curisation du serveur Pr\u00e9ambule Voil\u00e0 la liste des \u00e9tapes que je fais habituellement \u00e0 la main et qu'il est toujours possible de faire \u00e0 la main. J'ai d\u00e9cid\u00e9 dans ce tutoriel d'utiliser ansible pour pouvoir automatiser ensuite la cr\u00e9ation de serveurs, plus rapide en cas de crash de disque dur ou compromission. (et aussi pour apprendre de nouvelles techniques ...) R\u00e9cup\u00e9ration de l'IP du serveur \"\u00e0 la maison\" Il nous faut conna\u00eetre l'adresse IP de notre serveur qui est allou\u00e9e dynamiquement par le serveur dhcp de notre box (freebox). Sur le poste client \u00e0 partir duquel nous nous connectons par ssh sur le serveur, nous allons lancer une commande qui va scruter notre r\u00e9seau local et faire appara\u00eetre les IPs des machines du r\u00e9seau. Bien s\u00fbr, cela ne fonctionne que si le serveur est \"at home\". Ne lancez pas un scan de tout l'internet! :D root@aldebaran:~# nmap -sP 192.168.111.0/24 | grep \"Nmap scan\" Nmap scan report for 192.168.111.20 Nmap scan report for 192.168.111.49 Nmap scan report for switch.yojik.net (192.168.111.140) Nmap scan report for goulya.yojik.net (192.168.111.151) Nmap scan report for 192.168.111.153 Nmap scan report for atom.yojik.net (192.168.111.160) Nmap scan report for freebox.yojik.net (192.168.111.254) Nmap scan report for aldebaran.yojik.net (192.168.111.150) root@aldebaran:~# Vous voyez l\u00e0 toutes les machines allum\u00e9es sur mon r\u00e9seau local. Celle qui nous int\u00e9resse est la suivante: **192.168.111.49** Vous pouvez utiliser les options suivantes de nmap qui vous donnera des inbformations suppl\u00e9mentaires \u00e0 m\u00eame de vous permettre de trouver votre serveur: eric@aldebaran:/mnt/Raid/eric/Devs/Travail/Installation serveur/Tutorial/Tuto-Buster$ sudo nmap -sn 192.168.111.0/24 Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-15 16:05 CET Nmap scan report for 192.168.111.13 Host is up (0.19s latency). MAC Address: 54:35:30:1D:5A:C4 (Hon Hai Precision Ind.) Nmap scan report for 192.168.111.20 Host is up (0.22s latency). MAC Address: 90:78:B2:A1:31:E7 (Xiaomi Communications) Nmap scan report for 192.168.111.25 Host is up (0.25s latency). MAC Address: D8:12:65:5B:DD:90 (Chongqing Fugui Electronics) Nmap scan report for 192.168.111.34 Host is up (0.27s latency). MAC Address: 00:73:8D:92:7E:B6 (Shenzhen Tinno Mobile Technology) Nmap scan report for 192.168.111.48 Host is up (0.22s latency). MAC Address: 70:EE:50:6B:7B:3A (Netatmo) Nmap scan report for 192.168.111.49 Host is up (0.00025s latency). MAC Address: 38:EA:A7:A6:CF:93 (Hewlett Packard) Nmap scan report for switch.yojik.net (192.168.111.140) Host is up (0.14s latency). MAC Address: 98:DA:C4:37:BF:F9 (Tp-link Technologies) Nmap scan report for goulya.yojik.net (192.168.111.151) Host is up (0.00014s latency). MAC Address: D0:50:99:A5:69:C5 (ASRock Incorporation) Nmap scan report for atom.yojik.net (192.168.111.160) Host is up (0.00030s latency). MAC Address: 00:23:54:C6:0A:07 (Asustek Computer) Nmap scan report for mynas2.yojik.net (192.168.111.211) Host is up (0.00021s latency). MAC Address: 00:11:32:08:D8:E1 (Synology Incorporated) Nmap scan report for freebox.yojik.net (192.168.111.254) Host is up (0.0015s latency). MAC Address: 68:A3:78:65:7B:5C (Freebox SAS) Nmap scan report for aldebaran.yojik.net (192.168.111.150) Host is up. Nmap done: 256 IP addresses (12 hosts up) scanned in 4.87 seconds L\u00e0, on voit la t\u00e9trachi\u00e9e de machines sur le r\u00e9seau, entre t\u00e9l\u00e9phones mobiles, imprimantes wifi, station m\u00e9t\u00e9o, lampes connect\u00e9es etc .. Mon serveur est de marque HP ce qui permet de retrouver son ip dans la liste. R\u00e9cup\u00e9ration de l'ip de votre \"d\u00e9di\u00e9\" ou \"VPS\" Vos serveurs d\u00e9di\u00e9s ou vps utilisent une adresse IP (ou plusieurs) automatiquement attribu\u00e9es et consultables sur la console d'administration du fournisseur (OVH chez moi) Pr\u00e9paration du poste de travail Sur notre poste de travail, nous allons pr\u00e9parer la configuration de SSH et de Ansible . SSH Il y a 2 parties \u00e0 configurer sur le poste de travail: /etc/ssh/ (permet de s\u00e9curiser les acc\u00e8s \u00e0 notre poste de travail: facultatif, mais la qualit\u00e9 du serveur ssh de notre poste de travail est \u00e9quivalente \u00e0 celle des serveurs bruts de fonderie) ~/.ssh/ (pr\u00e9paration des r\u00e9pertoires et des clefs) Nous allons utiliser les recommandations de Mozilla: Mozilla recommendations ainsi que des tutoriaux comme ceux-ci: S\u00e9curiser OpenSSH SSH - Comment tester et s\u00e9curiser son serveur ? OpenSSH Config File Examples Ansible Installation de ansible Nous allons suivre la documentation du site web de ansible: Installation de ansible Ajouter la ligne suivante \u00e0 /etc/apt/sources.list: (avec un \u00e9diteur de votre choix) deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main Et lancer les commandes suivantes: $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 $ sudo apt update $ sudo apt install ansible Lancez la commande suivante pour tester votre installation: eric@aldebaran:/mnt/Raid/eric/Devs/Travail/Installation serveur/Tutorial/Tuto-Buster$ ansible --version ansible 2.9.16 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/eric/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible executable location = /usr/bin/ansible python version = 3.9.1+ (default, Jan 10 2021, 15:42:50) [GCC 10.2.1 20201224] eric@aldebaran:/mnt/Raid/eric/Devs/Travail/Installation serveur/Tutorial/Tuto-Buster$ Cr\u00e9ation de notre structure de r\u00e9pertoires Nous allons cr\u00e9er un r\u00e9pertoire dans notre home qui contiendra nos \"\"playbook\"\". J'ai vu qu'il existait un programme appel\u00e9 ansible-galaxy qui permet de g\u00e9rer la structure de ce r\u00e9pertoire et de charger des roles tout pr\u00eats \u00e0 partir du hub. Entrez la commande suivante: eric@aldebaran:~$ ansible-galaxy init aijan - Role aijan was created successfully eric@aldebaran:~$ La structure de r\u00e9pertoires cr\u00e9e: eric@aldebaran:~$ tree aijan aijan \u251c\u2500\u2500 defaults \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 handlers \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 meta \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 README.md \u251c\u2500\u2500 tasks \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 tests \u2502 \u251c\u2500\u2500 inventory \u2502 \u2514\u2500\u2500 test.yml \u2514\u2500\u2500 vars \u2514\u2500\u2500 main.yml 6 directories, 8 files eric@aldebaran:~$ Pr\u00e9paration de notre serveur Nous allons commencer \u00e0 installer quelques logiciels de base, en fait ceux que j'utilise sur toutes mes machines. Bien s\u00fbr, vous pouvez faire d'autres choix, comme installer emacs comme \u00e9diteur et un autre navigateur de fichiers en mode texte. Installez simplement les outils qui vous conviennent. La m\u00e9thode \u00e0 suivre sera identique quelque soient les logiciels. M\u00e9thode manuelle Nous allons commencer par ex\u00e9cuter toutes les \u00e9tapes manuellement; il sera plus facile ensuite de les automatiser. Pour mon usage personnel, j'installe syst\u00e9matiquement mc , un 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. et vim comme \u00e9diteur de fichiers de configuration Notez l'utilisation de sudo : les taches d'administration seront faite sous l'utilisateur ericadmin avec l'aide de sudo pour l'\u00e9l\u00e9vation des privil\u00e8ges. sudo apt install mc J'installe aussi vim , pour remplacer l'\u00e9diteur vi ou nano install\u00e9 par d\u00e9faut par Debian. sudo apt install vim Dans le tutoriel pr\u00e9c\u00e9dent, j'utilisais netstat comme outillage r\u00e9seau. Il a \u00e9t\u00e9 remplac\u00e9 par ss dont nous verrons le fonctionnement plus tard. Il est disponible automatiquement ap\u00e8rs installation. Ajoute des d\u00e9pots contrib et non-free: sudo vim /etc/apt/sources.list Pour obtenir ceci: deb http://deb.debian.org/debian/ buster main contrib non-free deb-src http://deb.debian.org/debian/ buster main contrib non-free deb http://security.debian.org/debian-security buster/updates main contrib non-free deb-src http://security.debian.org/debian-security buster/updates main contrib non-free # buster-updates, previously known as 'volatile' deb http://deb.debian.org/debian/ buster-updates main contrib non-free deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free # buster-backports deb http://deb.debian.org/debian buster-backports main contrib non-free deb http://deb.debian.org/debian/ buster-proposed-updates contrib non-free main deb-src http://deb.debian.org/debian buster-backports main Mise \u00e0 jour des d\u00e9p\u00f4ts de paquets, et mise \u00e0 jour du syst\u00e8me: sudo apt update && sudo apt upgrade M\u00e9thode avec ansible Nous allons donc r\u00e9aliser exactement la m\u00eame chose, mais avec ansible : Renseignement des variables utilis\u00e9es dans les playbooks. Ces variables seront enregistr\u00e9es dans le fichier ~/aijan/vars/main.yml Playbook de modification de /etc/apt/sources.list et mise \u00e0 jour du catalogue de paquets Pour cela nous utiliserons un playbook \"tout pr\u00eat\". Installation: eric@aldebaran:~/aijan$ ansible-galaxy install oefenweb.apt Starting galaxy role install process - downloading role 'apt', owned by oefenweb - downloading role from https://github.com/Oefenweb/ansible-apt/archive/v2.4.6.tar.gz - extracting oefenweb.apt to /home/eric/.ansible/roles/oefenweb.apt - oefenweb.apt (v2.4.6) was installed successfully eric@aldebaran:~/aijan$ La documentation est contenue dans le fichier README.md situ\u00e9 dans le r\u00e9pertoire ~/.ansible/roles/oefenweb.apt . Le principe sera le m\u00eame pour les autres playbooks que nous installerons et qui seront dans le r\u00e9pertoire roles comme ci-dessus. Le playbook que nous appellerons: mise-a-jour-apt.yml sera enregistr\u00e9 dans le r\u00e9pertoire tasks . test manuel enregistrement et test Playbook d'installation de vim et mc Le playbook sera appel\u00e9: install-vim-mc.yml et sera plac\u00e9 \u00e9galement dans le r\u00e9pertoire tasks . test manuel enregistrement et test Voil\u00e0, nous avons toutes les donn\u00e9es n\u00e9cessaires pour lancer ansible Test de connexion en ligne de commande: J'ai cr\u00e9\u00e9 un r\u00e9pertoire Ansible sur mon poste de travail et dedans j'ai cr\u00e9\u00e9 un fichier inventaire appel\u00e9 hosts dont le contenu est le suivant: eric@aldebaran:~/Ansible$ cat hosts [aijan] 192.168.111.48 Il ne contient que 2 lignes: la premi\u00e8re est \"le petit nom\" de mon serveur, mais vous pouvez lui donner n'importe quel nom de votre choix, et la ligne suivante indique l'adresse IPV4; nous aurions aussi pu mettre le FQDN comme aijan.yojik.net . J'ai utilis\u00e9 l'adresse num\u00e9rique car elle n'est que temporaire: nous allons lui donner une adresse fixe en IPV4 et IPV6 plus tard. Nous pourrons utiliser l'adresse FQDN une fois que l'adresse sera fix\u00e9e et que la r\u00e9solution de noms (DNS) sera active. eric@aldebaran:~/Ansible$ eric@aldebaran:~/Ansible$ansible -i ./hosts --ask-pass --ssh-extra-args='-o \"PubkeyAuthentication=no\"' all -m ping -u ericadmin SSH password: 192.168.111.48 | SUCCESS => { \"changed\": false, \"ping\": \"pong\" } eric@aldebaran:~/Ansible$ Nous voyons le succ\u00e8s de notre tentative de connexion: ansible marche ;) Essai d'installation d'un paquet en ligne de commande (commandes \"ad-hoc\"): Nous allons installer mc avec ansible . Voici la copie d'\u00e9cran de la ligne de commande utilis\u00e9e: (j'ai laiss\u00e9 toute la sortie de ansible pour que vous puissiez comparer.) eric@aldebaran:~/Ansible$ ansible -i ./hosts aijan -b --become-method=sudo -m apt -a 'name=mc state=present' -u ericadmin --ask-pass --ssh-extra-args='-o \"PubkeyAuthentication=no\"' --ask-become-pass SSH password: SUDO password[defaults to SSH password]: [DEPRECATION WARNING]: State 'installed' is deprecated. Using state 'present' instead.. This feature will be removed in version 2.9. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. 192.168.111.48 | CHANGED => { \"cache_update_time\": 1592657315, \"cache_updated\": false, \"changed\": true, \"stderr\": \"\", \"stderr_lines\": [], \"stdout\": \"Reading package lists...\\nBuilding dependency tree...\\nReading state information...\\nThe following additional packages will be installed:\\n libglib2.0-0 libglib2.0-data libgpm2 mc-data shared-mime-info unzip\\n xdg-user-dirs\\nSuggested packages:\\n gpm arj catdvi | texlive-binaries dbview djvulibre-bin epub-utils\\n genisoimage gv imagemagick libaspell-dev links | w3m | lynx odt2txt\\n poppler-utils python-boto python-tz xpdf | pdf-viewer zip\\nThe following NEW packages will be installed:\\n libglib2.0-0 libglib2.0-data libgpm2 mc mc-data shared-mime-info unzip\\n xdg-user-dirs\\n0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.\\nNeed to get 5201 kB of archives.\\nAfter this operation, 26.0 MB of additional disk space will be used.\\nGet:1 http://deb.debian.org/debian buster/main amd64 libglib2.0-0 amd64 2.58.3-2+deb10u2 [1258 kB]\\nGet:2 http://deb.debian.org/debian buster/main amd64 libglib2.0-data all 2.58.3-2+deb10u2 [1110 kB]\\nGet:3 http://deb.debian.org/debian buster/main amd64 libgpm2 amd64 1.20.7-5 [35.1 kB]\\nGet:4 http://deb.debian.org/debian buster/main amd64 mc-data all 3:4.8.22-1 [1292 kB]\\nGet:5 http://deb.debian.org/debian buster/main amd64 mc amd64 3:4.8.22-1 [516 kB]\\nGet:6 http://deb.debian.org/debian buster/main amd64 shared-mime-info amd64 1.10-1 [766 kB]\\nGet:7 http://deb.debian.org/debian buster/main amd64 unzip amd64 6.0-23+deb10u1 [172 kB]\\nGet:8 http://deb.debian.org/debian buster/main amd64 xdg-user-dirs amd64 0.17-2 [53.8 kB]\\nFetched 5201 kB in 0s (16.3 MB/s)\\nSelecting previously unselected package libglib2.0-0:amd64.\\r\\n(Reading database ... \\r(Reading database ... 5%\\r(Reading database ... 10%\\r(Reading database ... 15%\\r(Reading database ... 20%\\r(Reading database ... 25%\\r(Reading database ... 30%\\r(Reading database ... 35%\\r(Reading database ... 40%\\r(Reading database ... 45%\\r(Reading database ... 50%\\r(Reading database ... 55%\\r(Reading database ... 60%\\r(Reading database ... 65%\\r(Reading database ... 70%\\r(Reading database ... 75%\\r(Reading database ... 80%\\r(Reading database ... 85%\\r(Reading database ... 90%\\r(Reading database ... 95%\\r(Reading database ... 100%\\r(Reading database ... 28088 files and directories currently installed.)\\r\\nPreparing to unpack .../0-libglib2.0-0_2.58.3-2+deb10u2_amd64.deb ...\\r\\nUnpacking libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\\r\\nSelecting previously unselected package libglib2.0-data.\\r\\nPreparing to unpack .../1-libglib2.0-data_2.58.3-2+deb10u2_all.deb ...\\r\\nUnpacking libglib2.0-data (2.58.3-2+deb10u2) ...\\r\\nSelecting previously unselected package libgpm2:amd64.\\r\\nPreparing to unpack .../2-libgpm2_1.20.7-5_amd64.deb ...\\r\\nUnpacking libgpm2:amd64 (1.20.7-5) ...\\r\\nSelecting previously unselected package mc-data.\\r\\nPreparing to unpack .../3-mc-data_3%3a4.8.22-1_all.deb ...\\r\\nUnpacking mc-data (3:4.8.22-1) ...\\r\\nSelecting previously unselected package mc.\\r\\nPreparing to unpack .../4-mc_3%3a4.8.22-1_amd64.deb ...\\r\\nUnpacking mc (3:4.8.22-1) ...\\r\\nSelecting previously unselected package shared-mime-info.\\r\\nPreparing to unpack .../5-shared-mime-info_1.10-1_amd64.deb ...\\r\\nUnpacking shared-mime-info (1.10-1) ...\\r\\nSelecting previously unselected package unzip.\\r\\nPreparing to unpack .../6-unzip_6.0-23+deb10u1_amd64.deb ...\\r\\nUnpacking unzip (6.0-23+deb10u1) ...\\r\\nSelecting previously unselected package xdg-user-dirs.\\r\\nPreparing to unpack .../7-xdg-user-dirs_0.17-2_amd64.deb ...\\r\\nUnpacking xdg-user-dirs (0.17-2) ...\\r\\nSetting up libgpm2:amd64 (1.20.7-5) ...\\r\\nSetting up xdg-user-dirs (0.17-2) ...\\r\\nSetting up libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\\r\\nNo schema files found: doing nothing.\\r\\nSetting up unzip (6.0-23+deb10u1) ...\\r\\nSetting up libglib2.0-data (2.58.3-2+deb10u2) ...\\r\\nSetting up shared-mime-info (1.10-1) ...\\r\\nSetting up mc-data (3:4.8.22-1) ...\\r\\nSetting up mc (3:4.8.22-1) ...\\r\\nupdate-alternatives: using /usr/bin/mcview to provide /usr/bin/view (view) in auto mode\\r\\nProcessing triggers for man-db (2.8.5-2) ...\\r\\nProcessing triggers for mime-support (3.62) ...\\r\\nProcessing triggers for libc-bin (2.28-10) ...\\r\\n\", \"stdout_lines\": [ \"Reading package lists...\", \"Building dependency tree...\", \"Reading state information...\", \"The following additional packages will be installed:\", \" libglib2.0-0 libglib2.0-data libgpm2 mc-data shared-mime-info unzip\", \" xdg-user-dirs\", \"Suggested packages:\", \" gpm arj catdvi | texlive-binaries dbview djvulibre-bin epub-utils\", \" genisoimage gv imagemagick libaspell-dev links | w3m | lynx odt2txt\", \" poppler-utils python-boto python-tz xpdf | pdf-viewer zip\", \"The following NEW packages will be installed:\", \" libglib2.0-0 libglib2.0-data libgpm2 mc mc-data shared-mime-info unzip\", \" xdg-user-dirs\", \"0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.\", \"Need to get 5201 kB of archives.\", \"After this operation, 26.0 MB of additional disk space will be used.\", \"Get:1 http://deb.debian.org/debian buster/main amd64 libglib2.0-0 amd64 2.58.3-2+deb10u2 [1258 kB]\", \"Get:2 http://deb.debian.org/debian buster/main amd64 libglib2.0-data all 2.58.3-2+deb10u2 [1110 kB]\", \"Get:3 http://deb.debian.org/debian buster/main amd64 libgpm2 amd64 1.20.7-5 [35.1 kB]\", \"Get:4 http://deb.debian.org/debian buster/main amd64 mc-data all 3:4.8.22-1 [1292 kB]\", \"Get:5 http://deb.debian.org/debian buster/main amd64 mc amd64 3:4.8.22-1 [516 kB]\", \"Get:6 http://deb.debian.org/debian buster/main amd64 shared-mime-info amd64 1.10-1 [766 kB]\", \"Get:7 http://deb.debian.org/debian buster/main amd64 unzip amd64 6.0-23+deb10u1 [172 kB]\", \"Get:8 http://deb.debian.org/debian buster/main amd64 xdg-user-dirs amd64 0.17-2 [53.8 kB]\", \"Fetched 5201 kB in 0s (16.3 MB/s)\", \"Selecting previously unselected package libglib2.0-0:amd64.\", \"(Reading database ... \", \"(Reading database ... 5%\", \"(Reading database ... 10%\", \"(Reading database ... 15%\", \"(Reading database ... 20%\", \"(Reading database ... 25%\", \"(Reading database ... 30%\", \"(Reading database ... 35%\", \"(Reading database ... 40%\", \"(Reading database ... 45%\", \"(Reading database ... 50%\", \"(Reading database ... 55%\", \"(Reading database ... 60%\", \"(Reading database ... 65%\", \"(Reading database ... 70%\", \"(Reading database ... 75%\", \"(Reading database ... 80%\", \"(Reading database ... 85%\", \"(Reading database ... 90%\", \"(Reading database ... 95%\", \"(Reading database ... 100%\", \"(Reading database ... 28088 files and directories currently installed.)\", \"Preparing to unpack .../0-libglib2.0-0_2.58.3-2+deb10u2_amd64.deb ...\", \"Unpacking libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\", \"Selecting previously unselected package libglib2.0-data.\", \"Preparing to unpack .../1-libglib2.0-data_2.58.3-2+deb10u2_all.deb ...\", \"Unpacking libglib2.0-data (2.58.3-2+deb10u2) ...\", \"Selecting previously unselected package libgpm2:amd64.\", \"Preparing to unpack .../2-libgpm2_1.20.7-5_amd64.deb ...\", \"Unpacking libgpm2:amd64 (1.20.7-5) ...\", \"Selecting previously unselected package mc-data.\", \"Preparing to unpack .../3-mc-data_3%3a4.8.22-1_all.deb ...\", \"Unpacking mc-data (3:4.8.22-1) ...\", \"Selecting previously unselected package mc.\", \"Preparing to unpack .../4-mc_3%3a4.8.22-1_amd64.deb ...\", \"Unpacking mc (3:4.8.22-1) ...\", \"Selecting previously unselected package shared-mime-info.\", \"Preparing to unpack .../5-shared-mime-info_1.10-1_amd64.deb ...\", \"Unpacking shared-mime-info (1.10-1) ...\", \"Selecting previously unselected package unzip.\", \"Preparing to unpack .../6-unzip_6.0-23+deb10u1_amd64.deb ...\", \"Unpacking unzip (6.0-23+deb10u1) ...\", \"Selecting previously unselected package xdg-user-dirs.\", \"Preparing to unpack .../7-xdg-user-dirs_0.17-2_amd64.deb ...\", \"Unpacking xdg-user-dirs (0.17-2) ...\", \"Setting up libgpm2:amd64 (1.20.7-5) ...\", \"Setting up xdg-user-dirs (0.17-2) ...\", \"Setting up libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\", \"No schema files found: doing nothing.\", \"Setting up unzip (6.0-23+deb10u1) ...\", \"Setting up libglib2.0-data (2.58.3-2+deb10u2) ...\", \"Setting up shared-mime-info (1.10-1) ...\", \"Setting up mc-data (3:4.8.22-1) ...\", \"Setting up mc (3:4.8.22-1) ...\", \"update-alternatives: using /usr/bin/mcview to provide /usr/bin/view (view) in auto mode\", \"Processing triggers for man-db (2.8.5-2) ...\", \"Processing triggers for mime-support (3.62) ...\", \"Processing triggers for libc-bin (2.28-10) ...\" ] } Voici le r\u00e9usltat de la ligne de commande relanc\u00e9e (o\u00f9 l'on voit l'action de **ansible** qui ne relance pas l'installation: il v\u00e9rifie que **mc** est d\u00e9j\u00e0 install\u00e9 (clef \"changed\" -> false).) eric@aldebaran:~/Ansible$ ansible -i ./hosts aijan -b --become-method=sudo -m apt -a 'name=mc state=present' -u ericadmin --ask-pass --ssh-extra-args='-o \"PubkeyAuthentication=no\"' --ask-become-pass SSH password: SUDO password[defaults to SSH password]: 192.168.111.48 | SUCCESS => { \"cache_update_time\": 1592657315, \"cache_updated\": false, \"changed\": false } eric@aldebaran:~/Ansible$ Utilisation des playbooks de ansible : Lancer les commandes en ligne de commandes n'est pas tr\u00e8s pratique: ansible permet l'utilisation de fichiers appel\u00e9s playbooks au format yaml qui d\u00e9crivent toutes les actions \u00e0 effectuer. Il suffit de jouer ces playbooks pour lancer toutes les commandes qui s'y trouvent. Il est \u00e9galement possible d'organiser les playbooks en roles , et donc, de cr\u00e9er des playbooks plus courts et lisibles. Continuons \u00e0 voir les \u00e9tapes suivantes avant de cr\u00e9er les playbooks correspondants. S\u00e9curisation de ssh Voir le lien suivant: Le blog de Guillaume . Nous ajouterons une deuxi\u00e8me \u00e9tape de s\u00e9curisation avec \"OTP\", \"one time password\". Il y aura donc l'authentification par clef de SSH , avec sa phrase de passe, plus un mot de passe \u00e0 usage unique g\u00e9n\u00e9r\u00e9 par l'application OTP install\u00e9e sur un autre poste, smartphone ou tablette. Nous allons aussi appliquer les recommandations de Mozilla concernant les algorithmes \u00e0 utiliser. Voir ici: Mozilla SSH recommandations 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. Comme nous g\u00e9rons nous-m\u00eames nos postes et serveurs, nous allons utiliser des algorithmes modernes pour g\u00e9n\u00e9rer les clefs SSH: article sur Tutox . Au lieu d'utiliser la m\u00eame clef SSH sur tous nos serveurs, nous allons g\u00e9n\u00e9rer une clef distincte pour chaque serveur et rajouter la configuration sp\u00e9cifique \u00e0 chaque serveur (adresse, port de connexion,n utilisateur etc ...dans le fichier de configuration du client SSH. J'envisage aussi l'utilisation de certificats SSH qui \u00e9vitent de copier ses clefs publiques SSH sur tous les serveurs. Nous allons impl\u00e9menter tout \u00e7a de mani\u00e8re incr\u00e9mentale, pour savoir ce que nous faisons, et pouvoir rectifier si quelque chose foire :( . Voil\u00e0 donc la structure de notre gestion des clefs SSH: 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\u00e8res \u00e9tapes de s\u00e9curisation du serveur"},{"location":"Tutoriels/tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/#premieres-etapes-de-securisation-du-serveur","text":"","title":"Premi\u00e8res \u00e9tapes de s\u00e9curisation du serveur"},{"location":"Tutoriels/tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/#preambule","text":"Voil\u00e0 la liste des \u00e9tapes que je fais habituellement \u00e0 la main et qu'il est toujours possible de faire \u00e0 la main. J'ai d\u00e9cid\u00e9 dans ce tutoriel d'utiliser ansible pour pouvoir automatiser ensuite la cr\u00e9ation de serveurs, plus rapide en cas de crash de disque dur ou compromission. (et aussi pour apprendre de nouvelles techniques ...)","title":"Pr\u00e9ambule"},{"location":"Tutoriels/tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/#recuperation-de-lip-du-serveur-a-la-maison","text":"Il nous faut conna\u00eetre l'adresse IP de notre serveur qui est allou\u00e9e dynamiquement par le serveur dhcp de notre box (freebox). Sur le poste client \u00e0 partir duquel nous nous connectons par ssh sur le serveur, nous allons lancer une commande qui va scruter notre r\u00e9seau local et faire appara\u00eetre les IPs des machines du r\u00e9seau. Bien s\u00fbr, cela ne fonctionne que si le serveur est \"at home\". Ne lancez pas un scan de tout l'internet! :D root@aldebaran:~# nmap -sP 192.168.111.0/24 | grep \"Nmap scan\" Nmap scan report for 192.168.111.20 Nmap scan report for 192.168.111.49 Nmap scan report for switch.yojik.net (192.168.111.140) Nmap scan report for goulya.yojik.net (192.168.111.151) Nmap scan report for 192.168.111.153 Nmap scan report for atom.yojik.net (192.168.111.160) Nmap scan report for freebox.yojik.net (192.168.111.254) Nmap scan report for aldebaran.yojik.net (192.168.111.150) root@aldebaran:~# Vous voyez l\u00e0 toutes les machines allum\u00e9es sur mon r\u00e9seau local. Celle qui nous int\u00e9resse est la suivante: **192.168.111.49** Vous pouvez utiliser les options suivantes de nmap qui vous donnera des inbformations suppl\u00e9mentaires \u00e0 m\u00eame de vous permettre de trouver votre serveur: eric@aldebaran:/mnt/Raid/eric/Devs/Travail/Installation serveur/Tutorial/Tuto-Buster$ sudo nmap -sn 192.168.111.0/24 Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-15 16:05 CET Nmap scan report for 192.168.111.13 Host is up (0.19s latency). MAC Address: 54:35:30:1D:5A:C4 (Hon Hai Precision Ind.) Nmap scan report for 192.168.111.20 Host is up (0.22s latency). MAC Address: 90:78:B2:A1:31:E7 (Xiaomi Communications) Nmap scan report for 192.168.111.25 Host is up (0.25s latency). MAC Address: D8:12:65:5B:DD:90 (Chongqing Fugui Electronics) Nmap scan report for 192.168.111.34 Host is up (0.27s latency). MAC Address: 00:73:8D:92:7E:B6 (Shenzhen Tinno Mobile Technology) Nmap scan report for 192.168.111.48 Host is up (0.22s latency). MAC Address: 70:EE:50:6B:7B:3A (Netatmo) Nmap scan report for 192.168.111.49 Host is up (0.00025s latency). MAC Address: 38:EA:A7:A6:CF:93 (Hewlett Packard) Nmap scan report for switch.yojik.net (192.168.111.140) Host is up (0.14s latency). MAC Address: 98:DA:C4:37:BF:F9 (Tp-link Technologies) Nmap scan report for goulya.yojik.net (192.168.111.151) Host is up (0.00014s latency). MAC Address: D0:50:99:A5:69:C5 (ASRock Incorporation) Nmap scan report for atom.yojik.net (192.168.111.160) Host is up (0.00030s latency). MAC Address: 00:23:54:C6:0A:07 (Asustek Computer) Nmap scan report for mynas2.yojik.net (192.168.111.211) Host is up (0.00021s latency). MAC Address: 00:11:32:08:D8:E1 (Synology Incorporated) Nmap scan report for freebox.yojik.net (192.168.111.254) Host is up (0.0015s latency). MAC Address: 68:A3:78:65:7B:5C (Freebox SAS) Nmap scan report for aldebaran.yojik.net (192.168.111.150) Host is up. Nmap done: 256 IP addresses (12 hosts up) scanned in 4.87 seconds L\u00e0, on voit la t\u00e9trachi\u00e9e de machines sur le r\u00e9seau, entre t\u00e9l\u00e9phones mobiles, imprimantes wifi, station m\u00e9t\u00e9o, lampes connect\u00e9es etc .. Mon serveur est de marque HP ce qui permet de retrouver son ip dans la liste.","title":"R\u00e9cup\u00e9ration de l'IP du serveur \"\u00e0 la maison\""},{"location":"Tutoriels/tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/#recuperation-de-lip-de-votre-dedie-ou-vps","text":"Vos serveurs d\u00e9di\u00e9s ou vps utilisent une adresse IP (ou plusieurs) automatiquement attribu\u00e9es et consultables sur la console d'administration du fournisseur (OVH chez moi)","title":"R\u00e9cup\u00e9ration de l'ip de votre \"d\u00e9di\u00e9\" ou \"VPS\""},{"location":"Tutoriels/tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/#preparation-du-poste-de-travail","text":"Sur notre poste de travail, nous allons pr\u00e9parer la configuration de SSH et de Ansible .","title":"Pr\u00e9paration du poste de travail"},{"location":"Tutoriels/tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/#ssh","text":"Il y a 2 parties \u00e0 configurer sur le poste de travail: /etc/ssh/ (permet de s\u00e9curiser les acc\u00e8s \u00e0 notre poste de travail: facultatif, mais la qualit\u00e9 du serveur ssh de notre poste de travail est \u00e9quivalente \u00e0 celle des serveurs bruts de fonderie) ~/.ssh/ (pr\u00e9paration des r\u00e9pertoires et des clefs) Nous allons utiliser les recommandations de Mozilla: Mozilla recommendations ainsi que des tutoriaux comme ceux-ci: S\u00e9curiser OpenSSH SSH - Comment tester et s\u00e9curiser son serveur ? OpenSSH Config File Examples","title":"SSH"},{"location":"Tutoriels/tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/#ansible","text":"Installation de ansible Nous allons suivre la documentation du site web de ansible: Installation de ansible Ajouter la ligne suivante \u00e0 /etc/apt/sources.list: (avec un \u00e9diteur de votre choix) deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main Et lancer les commandes suivantes: $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 $ sudo apt update $ sudo apt install ansible Lancez la commande suivante pour tester votre installation: eric@aldebaran:/mnt/Raid/eric/Devs/Travail/Installation serveur/Tutorial/Tuto-Buster$ ansible --version ansible 2.9.16 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/eric/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible executable location = /usr/bin/ansible python version = 3.9.1+ (default, Jan 10 2021, 15:42:50) [GCC 10.2.1 20201224] eric@aldebaran:/mnt/Raid/eric/Devs/Travail/Installation serveur/Tutorial/Tuto-Buster$ Cr\u00e9ation de notre structure de r\u00e9pertoires Nous allons cr\u00e9er un r\u00e9pertoire dans notre home qui contiendra nos \"\"playbook\"\". J'ai vu qu'il existait un programme appel\u00e9 ansible-galaxy qui permet de g\u00e9rer la structure de ce r\u00e9pertoire et de charger des roles tout pr\u00eats \u00e0 partir du hub. Entrez la commande suivante: eric@aldebaran:~$ ansible-galaxy init aijan - Role aijan was created successfully eric@aldebaran:~$ La structure de r\u00e9pertoires cr\u00e9e: eric@aldebaran:~$ tree aijan aijan \u251c\u2500\u2500 defaults \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 handlers \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 meta \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 README.md \u251c\u2500\u2500 tasks \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 tests \u2502 \u251c\u2500\u2500 inventory \u2502 \u2514\u2500\u2500 test.yml \u2514\u2500\u2500 vars \u2514\u2500\u2500 main.yml 6 directories, 8 files eric@aldebaran:~$","title":"Ansible"},{"location":"Tutoriels/tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/#preparation-de-notre-serveur","text":"Nous allons commencer \u00e0 installer quelques logiciels de base, en fait ceux que j'utilise sur toutes mes machines. Bien s\u00fbr, vous pouvez faire d'autres choix, comme installer emacs comme \u00e9diteur et un autre navigateur de fichiers en mode texte. Installez simplement les outils qui vous conviennent. La m\u00e9thode \u00e0 suivre sera identique quelque soient les logiciels.","title":"Pr\u00e9paration de notre serveur"},{"location":"Tutoriels/tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/#methode-manuelle","text":"Nous allons commencer par ex\u00e9cuter toutes les \u00e9tapes manuellement; il sera plus facile ensuite de les automatiser. Pour mon usage personnel, j'installe syst\u00e9matiquement mc , un 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. et vim comme \u00e9diteur de fichiers de configuration Notez l'utilisation de sudo : les taches d'administration seront faite sous l'utilisateur ericadmin avec l'aide de sudo pour l'\u00e9l\u00e9vation des privil\u00e8ges. sudo apt install mc J'installe aussi vim , pour remplacer l'\u00e9diteur vi ou nano install\u00e9 par d\u00e9faut par Debian. sudo apt install vim Dans le tutoriel pr\u00e9c\u00e9dent, j'utilisais netstat comme outillage r\u00e9seau. Il a \u00e9t\u00e9 remplac\u00e9 par ss dont nous verrons le fonctionnement plus tard. Il est disponible automatiquement ap\u00e8rs installation. Ajoute des d\u00e9pots contrib et non-free: sudo vim /etc/apt/sources.list Pour obtenir ceci: deb http://deb.debian.org/debian/ buster main contrib non-free deb-src http://deb.debian.org/debian/ buster main contrib non-free deb http://security.debian.org/debian-security buster/updates main contrib non-free deb-src http://security.debian.org/debian-security buster/updates main contrib non-free # buster-updates, previously known as 'volatile' deb http://deb.debian.org/debian/ buster-updates main contrib non-free deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free # buster-backports deb http://deb.debian.org/debian buster-backports main contrib non-free deb http://deb.debian.org/debian/ buster-proposed-updates contrib non-free main deb-src http://deb.debian.org/debian buster-backports main Mise \u00e0 jour des d\u00e9p\u00f4ts de paquets, et mise \u00e0 jour du syst\u00e8me: sudo apt update && sudo apt upgrade","title":"M\u00e9thode manuelle"},{"location":"Tutoriels/tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/#methode-avec-ansible","text":"Nous allons donc r\u00e9aliser exactement la m\u00eame chose, mais avec ansible : Renseignement des variables utilis\u00e9es dans les playbooks. Ces variables seront enregistr\u00e9es dans le fichier ~/aijan/vars/main.yml Playbook de modification de /etc/apt/sources.list et mise \u00e0 jour du catalogue de paquets Pour cela nous utiliserons un playbook \"tout pr\u00eat\". Installation: eric@aldebaran:~/aijan$ ansible-galaxy install oefenweb.apt Starting galaxy role install process - downloading role 'apt', owned by oefenweb - downloading role from https://github.com/Oefenweb/ansible-apt/archive/v2.4.6.tar.gz - extracting oefenweb.apt to /home/eric/.ansible/roles/oefenweb.apt - oefenweb.apt (v2.4.6) was installed successfully eric@aldebaran:~/aijan$ La documentation est contenue dans le fichier README.md situ\u00e9 dans le r\u00e9pertoire ~/.ansible/roles/oefenweb.apt . Le principe sera le m\u00eame pour les autres playbooks que nous installerons et qui seront dans le r\u00e9pertoire roles comme ci-dessus. Le playbook que nous appellerons: mise-a-jour-apt.yml sera enregistr\u00e9 dans le r\u00e9pertoire tasks . test manuel enregistrement et test Playbook d'installation de vim et mc Le playbook sera appel\u00e9: install-vim-mc.yml et sera plac\u00e9 \u00e9galement dans le r\u00e9pertoire tasks . test manuel enregistrement et test Voil\u00e0, nous avons toutes les donn\u00e9es n\u00e9cessaires pour lancer ansible Test de connexion en ligne de commande: J'ai cr\u00e9\u00e9 un r\u00e9pertoire Ansible sur mon poste de travail et dedans j'ai cr\u00e9\u00e9 un fichier inventaire appel\u00e9 hosts dont le contenu est le suivant: eric@aldebaran:~/Ansible$ cat hosts [aijan] 192.168.111.48 Il ne contient que 2 lignes: la premi\u00e8re est \"le petit nom\" de mon serveur, mais vous pouvez lui donner n'importe quel nom de votre choix, et la ligne suivante indique l'adresse IPV4; nous aurions aussi pu mettre le FQDN comme aijan.yojik.net . J'ai utilis\u00e9 l'adresse num\u00e9rique car elle n'est que temporaire: nous allons lui donner une adresse fixe en IPV4 et IPV6 plus tard. Nous pourrons utiliser l'adresse FQDN une fois que l'adresse sera fix\u00e9e et que la r\u00e9solution de noms (DNS) sera active. eric@aldebaran:~/Ansible$ eric@aldebaran:~/Ansible$ansible -i ./hosts --ask-pass --ssh-extra-args='-o \"PubkeyAuthentication=no\"' all -m ping -u ericadmin SSH password: 192.168.111.48 | SUCCESS => { \"changed\": false, \"ping\": \"pong\" } eric@aldebaran:~/Ansible$ Nous voyons le succ\u00e8s de notre tentative de connexion: ansible marche ;) Essai d'installation d'un paquet en ligne de commande (commandes \"ad-hoc\"): Nous allons installer mc avec ansible . Voici la copie d'\u00e9cran de la ligne de commande utilis\u00e9e: (j'ai laiss\u00e9 toute la sortie de ansible pour que vous puissiez comparer.) eric@aldebaran:~/Ansible$ ansible -i ./hosts aijan -b --become-method=sudo -m apt -a 'name=mc state=present' -u ericadmin --ask-pass --ssh-extra-args='-o \"PubkeyAuthentication=no\"' --ask-become-pass SSH password: SUDO password[defaults to SSH password]: [DEPRECATION WARNING]: State 'installed' is deprecated. Using state 'present' instead.. This feature will be removed in version 2.9. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. 192.168.111.48 | CHANGED => { \"cache_update_time\": 1592657315, \"cache_updated\": false, \"changed\": true, \"stderr\": \"\", \"stderr_lines\": [], \"stdout\": \"Reading package lists...\\nBuilding dependency tree...\\nReading state information...\\nThe following additional packages will be installed:\\n libglib2.0-0 libglib2.0-data libgpm2 mc-data shared-mime-info unzip\\n xdg-user-dirs\\nSuggested packages:\\n gpm arj catdvi | texlive-binaries dbview djvulibre-bin epub-utils\\n genisoimage gv imagemagick libaspell-dev links | w3m | lynx odt2txt\\n poppler-utils python-boto python-tz xpdf | pdf-viewer zip\\nThe following NEW packages will be installed:\\n libglib2.0-0 libglib2.0-data libgpm2 mc mc-data shared-mime-info unzip\\n xdg-user-dirs\\n0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.\\nNeed to get 5201 kB of archives.\\nAfter this operation, 26.0 MB of additional disk space will be used.\\nGet:1 http://deb.debian.org/debian buster/main amd64 libglib2.0-0 amd64 2.58.3-2+deb10u2 [1258 kB]\\nGet:2 http://deb.debian.org/debian buster/main amd64 libglib2.0-data all 2.58.3-2+deb10u2 [1110 kB]\\nGet:3 http://deb.debian.org/debian buster/main amd64 libgpm2 amd64 1.20.7-5 [35.1 kB]\\nGet:4 http://deb.debian.org/debian buster/main amd64 mc-data all 3:4.8.22-1 [1292 kB]\\nGet:5 http://deb.debian.org/debian buster/main amd64 mc amd64 3:4.8.22-1 [516 kB]\\nGet:6 http://deb.debian.org/debian buster/main amd64 shared-mime-info amd64 1.10-1 [766 kB]\\nGet:7 http://deb.debian.org/debian buster/main amd64 unzip amd64 6.0-23+deb10u1 [172 kB]\\nGet:8 http://deb.debian.org/debian buster/main amd64 xdg-user-dirs amd64 0.17-2 [53.8 kB]\\nFetched 5201 kB in 0s (16.3 MB/s)\\nSelecting previously unselected package libglib2.0-0:amd64.\\r\\n(Reading database ... \\r(Reading database ... 5%\\r(Reading database ... 10%\\r(Reading database ... 15%\\r(Reading database ... 20%\\r(Reading database ... 25%\\r(Reading database ... 30%\\r(Reading database ... 35%\\r(Reading database ... 40%\\r(Reading database ... 45%\\r(Reading database ... 50%\\r(Reading database ... 55%\\r(Reading database ... 60%\\r(Reading database ... 65%\\r(Reading database ... 70%\\r(Reading database ... 75%\\r(Reading database ... 80%\\r(Reading database ... 85%\\r(Reading database ... 90%\\r(Reading database ... 95%\\r(Reading database ... 100%\\r(Reading database ... 28088 files and directories currently installed.)\\r\\nPreparing to unpack .../0-libglib2.0-0_2.58.3-2+deb10u2_amd64.deb ...\\r\\nUnpacking libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\\r\\nSelecting previously unselected package libglib2.0-data.\\r\\nPreparing to unpack .../1-libglib2.0-data_2.58.3-2+deb10u2_all.deb ...\\r\\nUnpacking libglib2.0-data (2.58.3-2+deb10u2) ...\\r\\nSelecting previously unselected package libgpm2:amd64.\\r\\nPreparing to unpack .../2-libgpm2_1.20.7-5_amd64.deb ...\\r\\nUnpacking libgpm2:amd64 (1.20.7-5) ...\\r\\nSelecting previously unselected package mc-data.\\r\\nPreparing to unpack .../3-mc-data_3%3a4.8.22-1_all.deb ...\\r\\nUnpacking mc-data (3:4.8.22-1) ...\\r\\nSelecting previously unselected package mc.\\r\\nPreparing to unpack .../4-mc_3%3a4.8.22-1_amd64.deb ...\\r\\nUnpacking mc (3:4.8.22-1) ...\\r\\nSelecting previously unselected package shared-mime-info.\\r\\nPreparing to unpack .../5-shared-mime-info_1.10-1_amd64.deb ...\\r\\nUnpacking shared-mime-info (1.10-1) ...\\r\\nSelecting previously unselected package unzip.\\r\\nPreparing to unpack .../6-unzip_6.0-23+deb10u1_amd64.deb ...\\r\\nUnpacking unzip (6.0-23+deb10u1) ...\\r\\nSelecting previously unselected package xdg-user-dirs.\\r\\nPreparing to unpack .../7-xdg-user-dirs_0.17-2_amd64.deb ...\\r\\nUnpacking xdg-user-dirs (0.17-2) ...\\r\\nSetting up libgpm2:amd64 (1.20.7-5) ...\\r\\nSetting up xdg-user-dirs (0.17-2) ...\\r\\nSetting up libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\\r\\nNo schema files found: doing nothing.\\r\\nSetting up unzip (6.0-23+deb10u1) ...\\r\\nSetting up libglib2.0-data (2.58.3-2+deb10u2) ...\\r\\nSetting up shared-mime-info (1.10-1) ...\\r\\nSetting up mc-data (3:4.8.22-1) ...\\r\\nSetting up mc (3:4.8.22-1) ...\\r\\nupdate-alternatives: using /usr/bin/mcview to provide /usr/bin/view (view) in auto mode\\r\\nProcessing triggers for man-db (2.8.5-2) ...\\r\\nProcessing triggers for mime-support (3.62) ...\\r\\nProcessing triggers for libc-bin (2.28-10) ...\\r\\n\", \"stdout_lines\": [ \"Reading package lists...\", \"Building dependency tree...\", \"Reading state information...\", \"The following additional packages will be installed:\", \" libglib2.0-0 libglib2.0-data libgpm2 mc-data shared-mime-info unzip\", \" xdg-user-dirs\", \"Suggested packages:\", \" gpm arj catdvi | texlive-binaries dbview djvulibre-bin epub-utils\", \" genisoimage gv imagemagick libaspell-dev links | w3m | lynx odt2txt\", \" poppler-utils python-boto python-tz xpdf | pdf-viewer zip\", \"The following NEW packages will be installed:\", \" libglib2.0-0 libglib2.0-data libgpm2 mc mc-data shared-mime-info unzip\", \" xdg-user-dirs\", \"0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.\", \"Need to get 5201 kB of archives.\", \"After this operation, 26.0 MB of additional disk space will be used.\", \"Get:1 http://deb.debian.org/debian buster/main amd64 libglib2.0-0 amd64 2.58.3-2+deb10u2 [1258 kB]\", \"Get:2 http://deb.debian.org/debian buster/main amd64 libglib2.0-data all 2.58.3-2+deb10u2 [1110 kB]\", \"Get:3 http://deb.debian.org/debian buster/main amd64 libgpm2 amd64 1.20.7-5 [35.1 kB]\", \"Get:4 http://deb.debian.org/debian buster/main amd64 mc-data all 3:4.8.22-1 [1292 kB]\", \"Get:5 http://deb.debian.org/debian buster/main amd64 mc amd64 3:4.8.22-1 [516 kB]\", \"Get:6 http://deb.debian.org/debian buster/main amd64 shared-mime-info amd64 1.10-1 [766 kB]\", \"Get:7 http://deb.debian.org/debian buster/main amd64 unzip amd64 6.0-23+deb10u1 [172 kB]\", \"Get:8 http://deb.debian.org/debian buster/main amd64 xdg-user-dirs amd64 0.17-2 [53.8 kB]\", \"Fetched 5201 kB in 0s (16.3 MB/s)\", \"Selecting previously unselected package libglib2.0-0:amd64.\", \"(Reading database ... \", \"(Reading database ... 5%\", \"(Reading database ... 10%\", \"(Reading database ... 15%\", \"(Reading database ... 20%\", \"(Reading database ... 25%\", \"(Reading database ... 30%\", \"(Reading database ... 35%\", \"(Reading database ... 40%\", \"(Reading database ... 45%\", \"(Reading database ... 50%\", \"(Reading database ... 55%\", \"(Reading database ... 60%\", \"(Reading database ... 65%\", \"(Reading database ... 70%\", \"(Reading database ... 75%\", \"(Reading database ... 80%\", \"(Reading database ... 85%\", \"(Reading database ... 90%\", \"(Reading database ... 95%\", \"(Reading database ... 100%\", \"(Reading database ... 28088 files and directories currently installed.)\", \"Preparing to unpack .../0-libglib2.0-0_2.58.3-2+deb10u2_amd64.deb ...\", \"Unpacking libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\", \"Selecting previously unselected package libglib2.0-data.\", \"Preparing to unpack .../1-libglib2.0-data_2.58.3-2+deb10u2_all.deb ...\", \"Unpacking libglib2.0-data (2.58.3-2+deb10u2) ...\", \"Selecting previously unselected package libgpm2:amd64.\", \"Preparing to unpack .../2-libgpm2_1.20.7-5_amd64.deb ...\", \"Unpacking libgpm2:amd64 (1.20.7-5) ...\", \"Selecting previously unselected package mc-data.\", \"Preparing to unpack .../3-mc-data_3%3a4.8.22-1_all.deb ...\", \"Unpacking mc-data (3:4.8.22-1) ...\", \"Selecting previously unselected package mc.\", \"Preparing to unpack .../4-mc_3%3a4.8.22-1_amd64.deb ...\", \"Unpacking mc (3:4.8.22-1) ...\", \"Selecting previously unselected package shared-mime-info.\", \"Preparing to unpack .../5-shared-mime-info_1.10-1_amd64.deb ...\", \"Unpacking shared-mime-info (1.10-1) ...\", \"Selecting previously unselected package unzip.\", \"Preparing to unpack .../6-unzip_6.0-23+deb10u1_amd64.deb ...\", \"Unpacking unzip (6.0-23+deb10u1) ...\", \"Selecting previously unselected package xdg-user-dirs.\", \"Preparing to unpack .../7-xdg-user-dirs_0.17-2_amd64.deb ...\", \"Unpacking xdg-user-dirs (0.17-2) ...\", \"Setting up libgpm2:amd64 (1.20.7-5) ...\", \"Setting up xdg-user-dirs (0.17-2) ...\", \"Setting up libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\", \"No schema files found: doing nothing.\", \"Setting up unzip (6.0-23+deb10u1) ...\", \"Setting up libglib2.0-data (2.58.3-2+deb10u2) ...\", \"Setting up shared-mime-info (1.10-1) ...\", \"Setting up mc-data (3:4.8.22-1) ...\", \"Setting up mc (3:4.8.22-1) ...\", \"update-alternatives: using /usr/bin/mcview to provide /usr/bin/view (view) in auto mode\", \"Processing triggers for man-db (2.8.5-2) ...\", \"Processing triggers for mime-support (3.62) ...\", \"Processing triggers for libc-bin (2.28-10) ...\" ] } Voici le r\u00e9usltat de la ligne de commande relanc\u00e9e (o\u00f9 l'on voit l'action de **ansible** qui ne relance pas l'installation: il v\u00e9rifie que **mc** est d\u00e9j\u00e0 install\u00e9 (clef \"changed\" -> false).) eric@aldebaran:~/Ansible$ ansible -i ./hosts aijan -b --become-method=sudo -m apt -a 'name=mc state=present' -u ericadmin --ask-pass --ssh-extra-args='-o \"PubkeyAuthentication=no\"' --ask-become-pass SSH password: SUDO password[defaults to SSH password]: 192.168.111.48 | SUCCESS => { \"cache_update_time\": 1592657315, \"cache_updated\": false, \"changed\": false } eric@aldebaran:~/Ansible$ Utilisation des playbooks de ansible : Lancer les commandes en ligne de commandes n'est pas tr\u00e8s pratique: ansible permet l'utilisation de fichiers appel\u00e9s playbooks au format yaml qui d\u00e9crivent toutes les actions \u00e0 effectuer. Il suffit de jouer ces playbooks pour lancer toutes les commandes qui s'y trouvent. Il est \u00e9galement possible d'organiser les playbooks en roles , et donc, de cr\u00e9er des playbooks plus courts et lisibles. Continuons \u00e0 voir les \u00e9tapes suivantes avant de cr\u00e9er les playbooks correspondants.","title":"M\u00e9thode avec ansible"},{"location":"Tutoriels/tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/#securisation-de-ssh","text":"Voir le lien suivant: Le blog de Guillaume . Nous ajouterons une deuxi\u00e8me \u00e9tape de s\u00e9curisation avec \"OTP\", \"one time password\". Il y aura donc l'authentification par clef de SSH , avec sa phrase de passe, plus un mot de passe \u00e0 usage unique g\u00e9n\u00e9r\u00e9 par l'application OTP install\u00e9e sur un autre poste, smartphone ou tablette. Nous allons aussi appliquer les recommandations de Mozilla concernant les algorithmes \u00e0 utiliser. Voir ici: Mozilla SSH recommandations","title":"S\u00e9curisation de ssh"},{"location":"Tutoriels/tutobuster/5-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. Comme nous g\u00e9rons nous-m\u00eames nos postes et serveurs, nous allons utiliser des algorithmes modernes pour g\u00e9n\u00e9rer les clefs SSH: article sur Tutox . Au lieu d'utiliser la m\u00eame clef SSH sur tous nos serveurs, nous allons g\u00e9n\u00e9rer une clef distincte pour chaque serveur et rajouter la configuration sp\u00e9cifique \u00e0 chaque serveur (adresse, port de connexion,n utilisateur etc ...dans le fichier de configuration du client SSH. J'envisage aussi l'utilisation de certificats SSH qui \u00e9vitent de copier ses clefs publiques SSH sur tous les serveurs. Nous allons impl\u00e9menter tout \u00e7a de mani\u00e8re incr\u00e9mentale, pour savoir ce que nous faisons, et pouvoir rectifier si quelque chose foire :( . Voil\u00e0 donc la structure de notre gestion des clefs SSH: 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":"Tutoriels/tutobuster/5-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":"Tutoriels/tutobuster/5-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":"Tutoriels/tutobuster/5-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":"Tutoriels/tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/#deuxieme-phase","text":"","title":"Deuxi\u00e8me phase"},{"location":"Tutoriels/tutobuster/5-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":"Tutoriels/tutobuster/5-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":"Tutoriels/tutobuster/5-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":"Tutoriels/tutobuster/5-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":"Tutoriels/tutobuster/5-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":"Tutoriels/tutoraspi/Annexe/","text":"Annexe Au fur et \u00e0 mesure de mes p\u00e9r\u00e9grinations autour du Raspi, j'ai d\u00e9couvert une fa\u00e7on plus rapide pr\u00e9-configurer l'installation. Une fois l'\u00e9tape de copie de l'image effectu\u00e9e, montez votre carte SD sur votre machine de travail. Il y aura 2 partitions : rootfs boot Dans la partition boot , cr\u00e9ez un fichier ssh vide avec la commande suivante : touch ssh Ensuite, d\u00e9placez-vous dans la partition rootfs . Vous y trouverez toute l'arborescence de votre future installation. Allez dans le r\u00e9pertoire etc . Ici, vous allez pouvoir configurer : le hostname Comme d\u00e9j\u00e0 indiqu\u00e9, le hostname sur Debian est partag\u00e9 entre 2 fichiers : /etc/hostname Il ne contient que le petit nom de votre machine, piras dans mon cas. /etc/hosts Il contient la configuration compl\u00e8te du hostname. En voici le contenu modifi\u00e9 : pi@piras:~$ cat /etc/hosts 127.0.0.1 localhost 192.168.111.170 piras.yojik.net piras # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters pi@piras:~$ 170 est l'adresse d\u00e9finitive de mon serveur (IPV4) le r\u00e9seau Pour attribuer une adresse IPV4 fixe \u00e0 notre raspi, d\u00e8s le premier lancement, nous pouvons \u00e9diter le fichier /etc/dhcpcd.conf avant de d\u00e9monter notre carte SD. Voil\u00e0 la partie \u00e0 modifier : # Example static IP configuration: interface eth0 static ip_address=192.168.111.170/24 static ip6_address=2a01:e0a:d0:3c20::170/64 static routers=192.168.111.254 #static domain_name_servers=192.168.1.1 Nous gardons la partie domain_name_servers comment\u00e9e en attendant d'avoir configur\u00e9 le resolveur DNS knot-resolver . Une fois cela fait, nous pouvons d\u00e9monter notre carte SD et l'ins\u00e9rer dans le raspi. Le r\u00e9seau et le hostname seront reconfigur\u00e9s. Ce sera \u00e9galement plus simple car cela nous \u00e9vitera de devoir modifier le fichier /etc/hosts de notre machine de travail, ainsi que le fichier .ssh/config dans le r\u00e9pertoire home de notre machine de travail.","title":"Annexe"},{"location":"Tutoriels/tutoraspi/Annexe/#annexe","text":"Au fur et \u00e0 mesure de mes p\u00e9r\u00e9grinations autour du Raspi, j'ai d\u00e9couvert une fa\u00e7on plus rapide pr\u00e9-configurer l'installation. Une fois l'\u00e9tape de copie de l'image effectu\u00e9e, montez votre carte SD sur votre machine de travail. Il y aura 2 partitions : rootfs boot Dans la partition boot , cr\u00e9ez un fichier ssh vide avec la commande suivante : touch ssh Ensuite, d\u00e9placez-vous dans la partition rootfs . Vous y trouverez toute l'arborescence de votre future installation. Allez dans le r\u00e9pertoire etc . Ici, vous allez pouvoir configurer : le hostname Comme d\u00e9j\u00e0 indiqu\u00e9, le hostname sur Debian est partag\u00e9 entre 2 fichiers : /etc/hostname Il ne contient que le petit nom de votre machine, piras dans mon cas. /etc/hosts Il contient la configuration compl\u00e8te du hostname. En voici le contenu modifi\u00e9 : pi@piras:~$ cat /etc/hosts 127.0.0.1 localhost 192.168.111.170 piras.yojik.net piras # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters pi@piras:~$ 170 est l'adresse d\u00e9finitive de mon serveur (IPV4) le r\u00e9seau Pour attribuer une adresse IPV4 fixe \u00e0 notre raspi, d\u00e8s le premier lancement, nous pouvons \u00e9diter le fichier /etc/dhcpcd.conf avant de d\u00e9monter notre carte SD. Voil\u00e0 la partie \u00e0 modifier : # Example static IP configuration: interface eth0 static ip_address=192.168.111.170/24 static ip6_address=2a01:e0a:d0:3c20::170/64 static routers=192.168.111.254 #static domain_name_servers=192.168.1.1 Nous gardons la partie domain_name_servers comment\u00e9e en attendant d'avoir configur\u00e9 le resolveur DNS knot-resolver . Une fois cela fait, nous pouvons d\u00e9monter notre carte SD et l'ins\u00e9rer dans le raspi. Le r\u00e9seau et le hostname seront reconfigur\u00e9s. Ce sera \u00e9galement plus simple car cela nous \u00e9vitera de devoir modifier le fichier /etc/hosts de notre machine de travail, ainsi que le fichier .ssh/config dans le r\u00e9pertoire home de notre machine de travail.","title":"Annexe"},{"location":"Tutoriels/tutoraspi/Automatisation/","text":"Automatisation jeton smartthings: f9f05f67-0e9c-4c99-883e-5cf249eaa2a2 Maintenant que nous avons fait toutes ces manipulations \u00e0 la main, nous allons pouvoir automatiser la configuration de notre raspi d'une fa\u00e7on automatique avec ansible . En fait, le but est de pouvoir d\u00e9ployer notre serveur en un minimum de temps. Nous ajouterons une partie variable, appel\u00e9e les facts , ce qui nous permettra d'installer diff\u00e9rents serveurs avec des options diff\u00e9rentes ainsi que des services parfois dictintcs. Nous allons reprendre toutes les \u00e9tapes et les scripter dans un playbook ansible . Principe Cr\u00e9ation d'un utilisateur d\u00e9di\u00e9 sur le poste client Il est parfaitement possible d'utiliser un role ansible tout pr\u00eat de cr\u00e9ation d'un nouvel utilisateur sur notre poste client, mais pour \u00e7a, il faut que ansible soit d\u00e9j\u00e0 install\u00e9. Nous allons donc cr\u00e9er un utilisateur deborah de fa\u00e7on classique avec la commande adduser: eric@aldebaran:~$ sudo adduser deborah [sudo] Mot de passe de eric : Ajout de l'utilisateur \u00ab deborah \u00bb ... Ajout du nouveau groupe \u00ab deborah \u00bb (1002) ... Ajout du nouvel utilisateur \u00ab deborah \u00bb (1002) avec le groupe \u00ab deborah \u00bb ... Cr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/deborah \u00bb... Copie des fichiers depuis \u00ab /etc/skel \u00bb... Nouveau mot de passe : Retapez le nouveau mot de passe : passwd: password updated successfully Changing the user information for deborah Enter the new value, or press ENTER for the default Full Name []: D\u00e9borah Room Number []: Work Phone []: Home Phone []: Other []: chfn: name with non-ASCII characters: 'D\u00e9borah' Cette information est-elle correcte ? [O/n] eric@aldebaran:~$ Installation de ansible sur le compte du nouvel utilisateur Nous allons assumer que python est d\u00e9j\u00e0 install\u00e9, ce qui est le cas pour une installation desktop Debian normale. Passons \u00e0 l'utilisateur deborah juste cr\u00e9\u00e9: eric@aldebaran:~$ su - deborah Mot de passe : deborah@aldebaran:~$ v\u00e9rification de notre installation python deborah@aldebaran:~$ python3 --version Python 3.9.1 deborah@aldebaran:~$ installation de ansible Nous installons ansible avec pip3 ; nous aurions pu utiliser la paquet ansible tout pr\u00eat, mais il n'aurait pas \u00e9t\u00e9 aussi \u00e0 jour. Une autre solution aurait \u00e9t\u00e9 d'utiliser virtualenv . Je rajouterai \u00e9ventuellement un paragraphe pour expliquer le fonctionnement de virtualenv. ansible ainsi que les autres binaires sont install\u00e9s dans le r\u00e9pertoire utilisateur ~/.local/bin . Ce chemin est d\u00e9j\u00e0 programm\u00e9 dans le fichier .profile et pour que ce chemin soit pris en compte, il suffit de \" sourcer \" le fichier .profile deborah@aldebaran:~$ source .profile Le r\u00e9sultat est le suivant: deborah@aldebaran:~$ ansible --version ansible 2.10.4 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/deborah/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/deborah/.local/lib/python3.9/site-packages/ansible executable location = /home/deborah/.local/bin/ansible python version = 3.9.1 (default, Dec 8 2020, 07:51:42) [GCC 10.2.0] deborah@aldebaran:~$ Voil\u00e0, ansible est install\u00e9, en version 2.10.4. Configuration ssh Nous allons suivre la m\u00e9thode d\u00e9crite dans un chapitre pr\u00e9c\u00e9dent: deborah@aldebaran:~$ ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/piras_ed25519 -C \"eric@yojik.eu\" ... deborah@aldebaran:~$ R\u00e9cup\u00e9ration adresse IP L'adresse ip par d\u00e9faut est attribu\u00e9e par le serveur dhcp de notre box, et donc, est sujet \u00e0 variation suivant le nombre des autres dispositifs connect\u00e9s. M\u00eame m\u00e9thode que pr\u00e9c\u00e9demment avec nmap: L'adresse dynamique r\u00e9cup\u00e9r\u00e9e est : 192.168.111.33 L'utilisateur (avec droits sudo) est par d\u00e9faut: pi Le mot de passe par d\u00e9faut est : raspberry Copie de notre clef publique sur le raspi et connexion deborah@aldebaran:~$ ssh-copy-id -i ~/.ssh/piras_ed25519.pub pi@192.168.111.33 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: \"/home/deborah/.ssh/piras_ed25519.pub\" The authenticity of host '192.168.111.33 (192.168.111.33)' can't be established. ECDSA key fingerprint is SHA256:JA3Eb2suh7qz7iwkoKL0yzbO698fj3EF4/vrhW7LTds. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /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: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys pi@192.168.111.33's password: Number of key(s) added: 1 Now try logging into the machine, with: \"ssh 'pi@192.168.111.33'\" and check to make sure that only the key(s) you wanted were added. deborah@aldebaran:~$ Connexion: deborah@aldebaran:~$ ssh -i ./.ssh/piras_ed25519 pi@192.168.111.33 Enter passphrase for key './.ssh/piras_ed25519': Linux raspberrypi 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l 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 27 17:31:01 2020 from 192.168.111.150 pi@raspberrypi:~ $ Tout fonctionne. Lancement de raspi-config Configurez votre raspi avec la commande: sudo raspi-config Retaillez la partition root pour occuper toute la place disponible. Changez les locales ainsi que le mappage clavier. (pas tr\u00e8s butile si vous ne vous connectez pas directement sur le raspi avec un clavier, mais bon, faites-le par pr\u00e9caution si vous devez vous connecter un jour directement) Changement du mot de passe Apr\u00e8s avoir g\u00e9n\u00e9r\u00e9 un mot de passe al\u00e9atoire avec pwgen, tapez la commande suivante (il \u00e9tait aussi possible de le changer avec l'utilitaire raspi-config vu au paragraphe pr\u00e9c\u00e9dent): pi@raspberrypi:~ $ passwd Changement du mot de passe pour pi. Current password: Nouveau mot de passe : Retapez le nouveau mot de passe : passwd: password updated successfully pi@raspberrypi:~ $ Le reste se fera avec ansible . On sort avec \"Ctrl D\". Nos serveurs L'identit\u00e9 de nos serveurs comme les caract\u00e9ristiques de connexion, port SSH, adresse IP sont conserv\u00e9es dans un fichier inventaire appel\u00e9 inventory dans le jargon ansible. Il peut porter n'importe quel nom mais habituellement il est appel\u00e9 inventory . Cr\u00e9ation de la structure de r\u00e9pertoires/fichiers Nous allons aussi respecter la structure conseill\u00e9e des r\u00e9pertoires de d\u00e9ploiement des playbooks ansible. Pour cela nous allons utiliser ansible-galaxy avec la commande suivante: deborah@aldebaran:~$ ansible-galaxy init piras - Role piras was created successfully deborah@aldebaran:~$ La structure de r\u00e9pertoires a \u00e9t\u00e9 cr\u00e9\u00e9e pour nous. deborah@aldebaran:~$ tree piras piras \u251c\u2500\u2500 defaults \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 files \u251c\u2500\u2500 handlers \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 meta \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 README.md \u251c\u2500\u2500 tasks \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 templates \u251c\u2500\u2500 tests \u2502 \u251c\u2500\u2500 inventory \u2502 \u2514\u2500\u2500 test.yml \u2514\u2500\u2500 vars \u2514\u2500\u2500 main.yml 8 directories, 8 files deborah@aldebaran:~$ Les actions \u00e0 accomplir sont saisies dans des fichiers au format YAML. Le fichier inventaire qui contient les machines \u00e0 configurer, les hosts peut \u00eatre en format YAML ou INI (format des fichiers de configuration Windows). Cr\u00e9ation du fichier inventaire 2 formats pour \u00e7a: Format INI [vps] ns1 ansible_port=22 ansible_host=ns1.yojik.eu ns2 ansible_port=22 ansible_host=ns2.yojik.eu [home] piras ansible_port=22 ansible_host=piras.yojik.net ansible_user=pi ansible_ssh_private_key_file=.ssh/piras_ed25519 Format YAML --- # my hosts all: hosts: ns1: ansible_host: ns1.yojik.eu ns2: ansible_host: ns2.yojik.eu piras: ansible_host: piras.yojik.net ansible_user: pi ansible_ssh_private_key_file: .ssh/piras_ed25519 ... 3 hosts sont configur\u00e9s dans ce fichier inventaire: ns1 et ns2 sont deux VPS lou\u00e9s chez OVH qui servent de serveurs DNS. Et piras qui est l'objet de ce tutoriel. Vous noterez que j'ai mis les noms des machines ( fqdn ) et qu'il faut bien s\u00fbr renseigner les IPs de ces machines, soit dans le fichier /etc/hosts soit dans les zones du serveur DNS. Test avec commandes ad-hoc On va envoyer une commande ping au raspi: deborah@aldebaran:~$ ansible -i inventory piras -m ping Enter passphrase for key '.ssh/piras_ed25519': piras | SUCCESS => { \"ansible_facts\": { \"discovered_interpreter_python\": \"/usr/bin/python\" }, \"changed\": false, \"ping\": \"pong\" } deborah@aldebaran:~$ Ca marche ;) On va envoyer une commande echo au raspi: deborah@aldebaran:~$ ansible piras -i inventory -m command -a \"echo 'salut'\" Enter passphrase for key '.ssh/piras_ed25519': piras | CHANGED | rc=0 >> salut deborah@aldebaran:~$ Ca fonctionne. Test avec playbook Les playbook(s) sont des fichiers au format YAML qui d\u00e9crivent les actions \u00e0 accomplir. Varibales, boucles, tests sont disponibles pour assurer les fonctions n\u00e9cessaires. Exemple de playbook (nom: piras.yml) - name: play-1 hosts: piras tasks: - name: test de la connectivit\u00e9 action: ping Test du playbook deborah@aldebaran:~$ ansible-playbook piras.yml -i inventory PLAY [play-1] ************************************************************************************************************* TASK [Gathering Facts] **************************************************************************************************** Enter passphrase for key '.ssh/piras_ed25519': ok: [piras] TASK [test de la connectivit\u00e9] ******************************************************************************************** ok: [piras] PLAY RECAP **************************************************************************************************************** piras : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 deborah@aldebaran:~$ Ca marche (ok=2.) \u00c9tat des lieux Nous avons les donn\u00e9es suivantes: adresse IP DHCP: 192.168.111.33 . adresse IPV4 fixe: 192.168.111.171 : \u00e0 configurer. adresse IPV6 fixe: 2a01:e0a:d0:3c20::171 : \u00e0 configurer. nom du user: pi (user pr\u00e9d\u00e9fini avec droits sudo) nom de la machine: raspberrypi : \u00e0 configurer. domaine de la machine: yojik.net (c'est le domaine de mon r\u00e9seau local): \u00e0 configurer. Le non complet sera donc: piras.yojik.net Un des premiers probl\u00e8mes \u00e0 r\u00e9soudre est que l'adresse IP par d\u00e9faut est donn\u00e9e par DHCP, donc variable. Il faudra red\u00e9marrer le raspi une fois la modification de la configuration r\u00e9seau faite et re-tester la connectivit\u00e9. T\u00e2che 1 Tester la connectivit\u00e9: Ajout de l'adresse du serveur toto \u00e0 /etc/hosts du poste client. Nous pouvons le faire manuellement, ou avec un script shell, ou avec un playbook ansible. \u00e0 la main Utilisez votre \u00e9diteur pr\u00e9f\u00e9r\u00e9, et ajoutez/modifiez la ligne suivante \u00e0 /etc/hosts: 192.168.111.171 toto.yojik.net toto script shell eric@aldebaran:~/ansible-toto$ cat play1.sh #!/bin/sh echo \"192.168.111.171 toto.yojik.net toto\" >> /etc/hosts cat /etc/hosts eric@aldebaran:~/ansible-toto$ eric@aldebaran:~/ansible-toto$ chmod +x play1.sh eric@aldebaran:~/ansible-toto$ sudo ./play1.sh 127.0.0.1 localhost 192.168.111.150 aldebaran.yojik.net aldebaran # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 192.168.111.171 toto.yojik.net toto eric@aldebaran:~/ansible-toto$ La ligne a bien \u00e9t\u00e9 ajout\u00e9e \u00e0 la fin du fichier. playbook ansible La playbook que nous verrons \u00e0 l'\u00e9tape suivante va mettre \u00e0 jour le fichier /etc/hosts automatiquement avec les informations saisies dans le fichier variables de notre projet ansible. test T\u00e2che 2 Nous allons mettre \u00e0 jour notre hostname ainsi que le fichier /etc/hosts . Pour cela nous allons utiliser un role tout pr\u00eat disponible sur galaxy-ansible . Ce role s'appelle hostname et l'auteur en est: Mischa ter Smitten Pour installer ce role, tapez: eric@aldebaran:~$ ansible-galaxy install oefenweb.hostname Starting galaxy role install process - downloading role 'hostname', owned by oefenweb - downloading role from https://github.com/Oefenweb/ansible-hostname/archive/v2.0.17.tar.gz - extracting oefenweb.hostname to /home/eric/.ansible/roles/oefenweb.hostname - oefenweb.hostname (v2.0.17) was installed successfully eric@aldebaran:~$ La documentation est disponible dans le r\u00e9pertoire: ~/.ansible/roles/oefenweb.hostname Il nous faut entrer le fqdn dans le fichier inventaire, et cr\u00e9er des fichiers de variables dans le r\u00e9pertoire ad\u00e9quat, avec un nom bien pr\u00e9cis (en rapport avec le fqdn). mise \u00e0 jour du nom d'h\u00f4te (hostname) test T\u00e2che 3 cr\u00e9ation de l'une clef ssh sur le desktop ajout d'un enregistrement \u00e0 ./.ssh/config pour int\u00e9grer le nouveau serveur modification de /etc/hosts pour int\u00e9grer le fqdn de ce nouveau serveur test T\u00e2che 4 copie de cette clef sur le raspi test de connexion avec cette clef T\u00e2che 5 S\u00e9curisation ssh test d'audit du serveur cr\u00e9ation de nouvelles clefs sur le serveur copie d'un fichier sshd_config sur le serveur relance du daemon sshd test de connexion test d'audit T\u00e2che 6 Cr\u00e9ation d'adresse IPV4 et IPV6 fixes. modification de /etc/dhcpd/dhcpd.conf reboot","title":"Automatisation"},{"location":"Tutoriels/tutoraspi/Automatisation/#automatisation","text":"jeton smartthings: f9f05f67-0e9c-4c99-883e-5cf249eaa2a2 Maintenant que nous avons fait toutes ces manipulations \u00e0 la main, nous allons pouvoir automatiser la configuration de notre raspi d'une fa\u00e7on automatique avec ansible . En fait, le but est de pouvoir d\u00e9ployer notre serveur en un minimum de temps. Nous ajouterons une partie variable, appel\u00e9e les facts , ce qui nous permettra d'installer diff\u00e9rents serveurs avec des options diff\u00e9rentes ainsi que des services parfois dictintcs. Nous allons reprendre toutes les \u00e9tapes et les scripter dans un playbook ansible .","title":"Automatisation"},{"location":"Tutoriels/tutoraspi/Automatisation/#principe","text":"","title":"Principe"},{"location":"Tutoriels/tutoraspi/Automatisation/#creation-dun-utilisateur-dedie-sur-le-poste-client","text":"Il est parfaitement possible d'utiliser un role ansible tout pr\u00eat de cr\u00e9ation d'un nouvel utilisateur sur notre poste client, mais pour \u00e7a, il faut que ansible soit d\u00e9j\u00e0 install\u00e9. Nous allons donc cr\u00e9er un utilisateur deborah de fa\u00e7on classique avec la commande adduser: eric@aldebaran:~$ sudo adduser deborah [sudo] Mot de passe de eric : Ajout de l'utilisateur \u00ab deborah \u00bb ... Ajout du nouveau groupe \u00ab deborah \u00bb (1002) ... Ajout du nouvel utilisateur \u00ab deborah \u00bb (1002) avec le groupe \u00ab deborah \u00bb ... Cr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/deborah \u00bb... Copie des fichiers depuis \u00ab /etc/skel \u00bb... Nouveau mot de passe : Retapez le nouveau mot de passe : passwd: password updated successfully Changing the user information for deborah Enter the new value, or press ENTER for the default Full Name []: D\u00e9borah Room Number []: Work Phone []: Home Phone []: Other []: chfn: name with non-ASCII characters: 'D\u00e9borah' Cette information est-elle correcte ? [O/n] eric@aldebaran:~$","title":"Cr\u00e9ation d'un utilisateur d\u00e9di\u00e9 sur le poste client"},{"location":"Tutoriels/tutoraspi/Automatisation/#installation-de-ansible-sur-le-compte-du-nouvel-utilisateur","text":"Nous allons assumer que python est d\u00e9j\u00e0 install\u00e9, ce qui est le cas pour une installation desktop Debian normale. Passons \u00e0 l'utilisateur deborah juste cr\u00e9\u00e9: eric@aldebaran:~$ su - deborah Mot de passe : deborah@aldebaran:~$ v\u00e9rification de notre installation python deborah@aldebaran:~$ python3 --version Python 3.9.1 deborah@aldebaran:~$ installation de ansible Nous installons ansible avec pip3 ; nous aurions pu utiliser la paquet ansible tout pr\u00eat, mais il n'aurait pas \u00e9t\u00e9 aussi \u00e0 jour. Une autre solution aurait \u00e9t\u00e9 d'utiliser virtualenv . Je rajouterai \u00e9ventuellement un paragraphe pour expliquer le fonctionnement de virtualenv. ansible ainsi que les autres binaires sont install\u00e9s dans le r\u00e9pertoire utilisateur ~/.local/bin . Ce chemin est d\u00e9j\u00e0 programm\u00e9 dans le fichier .profile et pour que ce chemin soit pris en compte, il suffit de \" sourcer \" le fichier .profile deborah@aldebaran:~$ source .profile Le r\u00e9sultat est le suivant: deborah@aldebaran:~$ ansible --version ansible 2.10.4 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/deborah/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/deborah/.local/lib/python3.9/site-packages/ansible executable location = /home/deborah/.local/bin/ansible python version = 3.9.1 (default, Dec 8 2020, 07:51:42) [GCC 10.2.0] deborah@aldebaran:~$ Voil\u00e0, ansible est install\u00e9, en version 2.10.4.","title":"Installation de ansible sur le compte du nouvel utilisateur"},{"location":"Tutoriels/tutoraspi/Automatisation/#configuration-ssh","text":"Nous allons suivre la m\u00e9thode d\u00e9crite dans un chapitre pr\u00e9c\u00e9dent: deborah@aldebaran:~$ ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/piras_ed25519 -C \"eric@yojik.eu\" ... deborah@aldebaran:~$","title":"Configuration ssh"},{"location":"Tutoriels/tutoraspi/Automatisation/#recuperation-adresse-ip","text":"L'adresse ip par d\u00e9faut est attribu\u00e9e par le serveur dhcp de notre box, et donc, est sujet \u00e0 variation suivant le nombre des autres dispositifs connect\u00e9s. M\u00eame m\u00e9thode que pr\u00e9c\u00e9demment avec nmap: L'adresse dynamique r\u00e9cup\u00e9r\u00e9e est : 192.168.111.33 L'utilisateur (avec droits sudo) est par d\u00e9faut: pi Le mot de passe par d\u00e9faut est : raspberry","title":"R\u00e9cup\u00e9ration adresse IP"},{"location":"Tutoriels/tutoraspi/Automatisation/#copie-de-notre-clef-publique-sur-le-raspi-et-connexion","text":"deborah@aldebaran:~$ ssh-copy-id -i ~/.ssh/piras_ed25519.pub pi@192.168.111.33 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: \"/home/deborah/.ssh/piras_ed25519.pub\" The authenticity of host '192.168.111.33 (192.168.111.33)' can't be established. ECDSA key fingerprint is SHA256:JA3Eb2suh7qz7iwkoKL0yzbO698fj3EF4/vrhW7LTds. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /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: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys pi@192.168.111.33's password: Number of key(s) added: 1 Now try logging into the machine, with: \"ssh 'pi@192.168.111.33'\" and check to make sure that only the key(s) you wanted were added. deborah@aldebaran:~$ Connexion: deborah@aldebaran:~$ ssh -i ./.ssh/piras_ed25519 pi@192.168.111.33 Enter passphrase for key './.ssh/piras_ed25519': Linux raspberrypi 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l 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 27 17:31:01 2020 from 192.168.111.150 pi@raspberrypi:~ $ Tout fonctionne.","title":"Copie de notre clef publique sur le raspi et connexion"},{"location":"Tutoriels/tutoraspi/Automatisation/#lancement-de-raspi-config","text":"Configurez votre raspi avec la commande: sudo raspi-config Retaillez la partition root pour occuper toute la place disponible. Changez les locales ainsi que le mappage clavier. (pas tr\u00e8s butile si vous ne vous connectez pas directement sur le raspi avec un clavier, mais bon, faites-le par pr\u00e9caution si vous devez vous connecter un jour directement)","title":"Lancement de raspi-config"},{"location":"Tutoriels/tutoraspi/Automatisation/#changement-du-mot-de-passe","text":"Apr\u00e8s avoir g\u00e9n\u00e9r\u00e9 un mot de passe al\u00e9atoire avec pwgen, tapez la commande suivante (il \u00e9tait aussi possible de le changer avec l'utilitaire raspi-config vu au paragraphe pr\u00e9c\u00e9dent): pi@raspberrypi:~ $ passwd Changement du mot de passe pour pi. Current password: Nouveau mot de passe : Retapez le nouveau mot de passe : passwd: password updated successfully pi@raspberrypi:~ $ Le reste se fera avec ansible . On sort avec \"Ctrl D\".","title":"Changement du mot de passe"},{"location":"Tutoriels/tutoraspi/Automatisation/#nos-serveurs","text":"L'identit\u00e9 de nos serveurs comme les caract\u00e9ristiques de connexion, port SSH, adresse IP sont conserv\u00e9es dans un fichier inventaire appel\u00e9 inventory dans le jargon ansible. Il peut porter n'importe quel nom mais habituellement il est appel\u00e9 inventory . Cr\u00e9ation de la structure de r\u00e9pertoires/fichiers Nous allons aussi respecter la structure conseill\u00e9e des r\u00e9pertoires de d\u00e9ploiement des playbooks ansible. Pour cela nous allons utiliser ansible-galaxy avec la commande suivante: deborah@aldebaran:~$ ansible-galaxy init piras - Role piras was created successfully deborah@aldebaran:~$ La structure de r\u00e9pertoires a \u00e9t\u00e9 cr\u00e9\u00e9e pour nous. deborah@aldebaran:~$ tree piras piras \u251c\u2500\u2500 defaults \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 files \u251c\u2500\u2500 handlers \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 meta \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 README.md \u251c\u2500\u2500 tasks \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 templates \u251c\u2500\u2500 tests \u2502 \u251c\u2500\u2500 inventory \u2502 \u2514\u2500\u2500 test.yml \u2514\u2500\u2500 vars \u2514\u2500\u2500 main.yml 8 directories, 8 files deborah@aldebaran:~$ Les actions \u00e0 accomplir sont saisies dans des fichiers au format YAML. Le fichier inventaire qui contient les machines \u00e0 configurer, les hosts peut \u00eatre en format YAML ou INI (format des fichiers de configuration Windows). Cr\u00e9ation du fichier inventaire 2 formats pour \u00e7a: Format INI [vps] ns1 ansible_port=22 ansible_host=ns1.yojik.eu ns2 ansible_port=22 ansible_host=ns2.yojik.eu [home] piras ansible_port=22 ansible_host=piras.yojik.net ansible_user=pi ansible_ssh_private_key_file=.ssh/piras_ed25519 Format YAML --- # my hosts all: hosts: ns1: ansible_host: ns1.yojik.eu ns2: ansible_host: ns2.yojik.eu piras: ansible_host: piras.yojik.net ansible_user: pi ansible_ssh_private_key_file: .ssh/piras_ed25519 ... 3 hosts sont configur\u00e9s dans ce fichier inventaire: ns1 et ns2 sont deux VPS lou\u00e9s chez OVH qui servent de serveurs DNS. Et piras qui est l'objet de ce tutoriel. Vous noterez que j'ai mis les noms des machines ( fqdn ) et qu'il faut bien s\u00fbr renseigner les IPs de ces machines, soit dans le fichier /etc/hosts soit dans les zones du serveur DNS. Test avec commandes ad-hoc On va envoyer une commande ping au raspi: deborah@aldebaran:~$ ansible -i inventory piras -m ping Enter passphrase for key '.ssh/piras_ed25519': piras | SUCCESS => { \"ansible_facts\": { \"discovered_interpreter_python\": \"/usr/bin/python\" }, \"changed\": false, \"ping\": \"pong\" } deborah@aldebaran:~$ Ca marche ;) On va envoyer une commande echo au raspi: deborah@aldebaran:~$ ansible piras -i inventory -m command -a \"echo 'salut'\" Enter passphrase for key '.ssh/piras_ed25519': piras | CHANGED | rc=0 >> salut deborah@aldebaran:~$ Ca fonctionne. Test avec playbook Les playbook(s) sont des fichiers au format YAML qui d\u00e9crivent les actions \u00e0 accomplir. Varibales, boucles, tests sont disponibles pour assurer les fonctions n\u00e9cessaires. Exemple de playbook (nom: piras.yml) - name: play-1 hosts: piras tasks: - name: test de la connectivit\u00e9 action: ping Test du playbook deborah@aldebaran:~$ ansible-playbook piras.yml -i inventory PLAY [play-1] ************************************************************************************************************* TASK [Gathering Facts] **************************************************************************************************** Enter passphrase for key '.ssh/piras_ed25519': ok: [piras] TASK [test de la connectivit\u00e9] ******************************************************************************************** ok: [piras] PLAY RECAP **************************************************************************************************************** piras : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 deborah@aldebaran:~$ Ca marche (ok=2.)","title":"Nos serveurs"},{"location":"Tutoriels/tutoraspi/Automatisation/#etat-des-lieux","text":"Nous avons les donn\u00e9es suivantes: adresse IP DHCP: 192.168.111.33 . adresse IPV4 fixe: 192.168.111.171 : \u00e0 configurer. adresse IPV6 fixe: 2a01:e0a:d0:3c20::171 : \u00e0 configurer. nom du user: pi (user pr\u00e9d\u00e9fini avec droits sudo) nom de la machine: raspberrypi : \u00e0 configurer. domaine de la machine: yojik.net (c'est le domaine de mon r\u00e9seau local): \u00e0 configurer. Le non complet sera donc: piras.yojik.net Un des premiers probl\u00e8mes \u00e0 r\u00e9soudre est que l'adresse IP par d\u00e9faut est donn\u00e9e par DHCP, donc variable. Il faudra red\u00e9marrer le raspi une fois la modification de la configuration r\u00e9seau faite et re-tester la connectivit\u00e9.","title":"\u00c9tat des lieux"},{"location":"Tutoriels/tutoraspi/Automatisation/#tache-1","text":"Tester la connectivit\u00e9: Ajout de l'adresse du serveur toto \u00e0 /etc/hosts du poste client. Nous pouvons le faire manuellement, ou avec un script shell, ou avec un playbook ansible. \u00e0 la main Utilisez votre \u00e9diteur pr\u00e9f\u00e9r\u00e9, et ajoutez/modifiez la ligne suivante \u00e0 /etc/hosts: 192.168.111.171 toto.yojik.net toto script shell eric@aldebaran:~/ansible-toto$ cat play1.sh #!/bin/sh echo \"192.168.111.171 toto.yojik.net toto\" >> /etc/hosts cat /etc/hosts eric@aldebaran:~/ansible-toto$ eric@aldebaran:~/ansible-toto$ chmod +x play1.sh eric@aldebaran:~/ansible-toto$ sudo ./play1.sh 127.0.0.1 localhost 192.168.111.150 aldebaran.yojik.net aldebaran # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 192.168.111.171 toto.yojik.net toto eric@aldebaran:~/ansible-toto$ La ligne a bien \u00e9t\u00e9 ajout\u00e9e \u00e0 la fin du fichier. playbook ansible La playbook que nous verrons \u00e0 l'\u00e9tape suivante va mettre \u00e0 jour le fichier /etc/hosts automatiquement avec les informations saisies dans le fichier variables de notre projet ansible. test","title":"T\u00e2che 1"},{"location":"Tutoriels/tutoraspi/Automatisation/#tache-2","text":"Nous allons mettre \u00e0 jour notre hostname ainsi que le fichier /etc/hosts . Pour cela nous allons utiliser un role tout pr\u00eat disponible sur galaxy-ansible . Ce role s'appelle hostname et l'auteur en est: Mischa ter Smitten Pour installer ce role, tapez: eric@aldebaran:~$ ansible-galaxy install oefenweb.hostname Starting galaxy role install process - downloading role 'hostname', owned by oefenweb - downloading role from https://github.com/Oefenweb/ansible-hostname/archive/v2.0.17.tar.gz - extracting oefenweb.hostname to /home/eric/.ansible/roles/oefenweb.hostname - oefenweb.hostname (v2.0.17) was installed successfully eric@aldebaran:~$ La documentation est disponible dans le r\u00e9pertoire: ~/.ansible/roles/oefenweb.hostname Il nous faut entrer le fqdn dans le fichier inventaire, et cr\u00e9er des fichiers de variables dans le r\u00e9pertoire ad\u00e9quat, avec un nom bien pr\u00e9cis (en rapport avec le fqdn). mise \u00e0 jour du nom d'h\u00f4te (hostname) test","title":"T\u00e2che 2"},{"location":"Tutoriels/tutoraspi/Automatisation/#tache-3","text":"cr\u00e9ation de l'une clef ssh sur le desktop ajout d'un enregistrement \u00e0 ./.ssh/config pour int\u00e9grer le nouveau serveur modification de /etc/hosts pour int\u00e9grer le fqdn de ce nouveau serveur test","title":"T\u00e2che 3"},{"location":"Tutoriels/tutoraspi/Automatisation/#tache-4","text":"copie de cette clef sur le raspi test de connexion avec cette clef","title":"T\u00e2che 4"},{"location":"Tutoriels/tutoraspi/Automatisation/#tache-5","text":"S\u00e9curisation ssh test d'audit du serveur cr\u00e9ation de nouvelles clefs sur le serveur copie d'un fichier sshd_config sur le serveur relance du daemon sshd test de connexion test d'audit","title":"T\u00e2che 5"},{"location":"Tutoriels/tutoraspi/Automatisation/#tache-6","text":"Cr\u00e9ation d'adresse IPV4 et IPV6 fixes. modification de /etc/dhcpd/dhcpd.conf reboot","title":"T\u00e2che 6"},{"location":"Tutoriels/tutoraspi/Etat-des-lieux/","text":"\u00c9tat des lieux Maintenant que notre raspi est install\u00e9, la liaison ssh active, nous allons faire le tour des lieux, voir comment le r\u00e9seau se configure, v\u00e9rifier la qualit\u00e9 des algorithmes SSH etc. Audit SSH Nous allons proc\u00e9der \u00e0 un audit SSH. Pour cela, nous allons utiliser un service en ligne de tests de notre configuration. L'adresse du site est la suivante : AuditSSH . Notre adresse est une adresse domestique, r\u00e9serv\u00e9e au r\u00e9seau local, non routable sur Internet. Heureusement, nous avons IPV6 et nous allons pouvoir tester notre petit raspi sans encore le configurer dans le serveur DNS. Pour obtenir l'adresse IPV6 de notre raspi, entrez la commande suivante : pi@raspberrypi:~ $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether b8:27:eb:3a:0b:38 brd ff:ff:ff:ff:ff:ff inet 192.168.111.170/24 brd 192.168.111.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 2a01:e0a:d0:3c20:a23:93ca:de95:e15b/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 86388sec preferred_lft 86388sec inet6 2a01:e0a:d0:3c20::170/64 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::74c8:34d:25f2:3b43/64 scope link valid_lft forever preferred_lft forever pi@raspberrypi:~ $ Nous avons notre adresse IPV6 qui est la suivante : (apr\u00e8s configuration du r\u00e9seau) inet6 2a01:e0a:d0:3c20::170/64 scope global dynamic mngtmpaddr L'adresse commen\u00e7ant par fe80 est r\u00e9serv\u00e9e au trafic sur le r\u00e9seau local. Renseignons ensuite notre adresse ipv6 dans le formulaire du site SSH-Audit (les captures d'\u00e9cran utilisent une autre adresse IPV6): Nous obtenons une note de \"F\" ... il y a du travail en perspective pour obtenir une note correcte. 2 choses sont \u00e0 configurer : le daemon sshd le client ssh Le daemon se configure dans /etc/sshd Le client dans le r\u00e9pertoire ~/.ssh (dans son home sur la machine cliente) Nous ferons \u00e7a dans le chapitre suivant. Le r\u00e9seau Le r\u00e9seau est enti\u00e8rement g\u00e9r\u00e9 par dhcp. Nous voulons une adresse IPV4 et IPV6 fixe. Il va falloir configurer le r\u00e9seau \u00e0 la main. Il y a plusieurs fa\u00e7ons de le faire : soit on rajoute une adresse fixe \u00e0 la configuration de dhcp (c'est la m\u00e9thode pr\u00e9conis\u00e9e par tous les sites avec tutoriels sur la fa\u00e7on d'imposer une adresse fixe), soit en \u00e9ditant /etc/network/interfaces. J'ai l'impression qu'il y a eu des changements suivant les versions ... il va falloir tester tout \u00e7a ! Le pare-feu (firewall) Aucun pare-feu n'est d\u00e9fini par d\u00e9faut. Nous installerons nftables qui remplace iptables dans les versions buster et bullseye de Debian. Installation de programmes utilitaires J'installe toujours vim et mc sur mes machines pour l'\u00e9dition des fichiers de configuration et me d\u00e9placer dans l'arborescence, visionner les fichiers de configuration/textes. pi@raspberrypi:~ $ sudo apt install vim mc Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Les paquets suppl\u00e9mentaires suivants seront install\u00e9s : mc-data vim-runtime ... Param\u00e9trage de vim (2:8.1.0875-5) ... ... Param\u00e9trage de mc (3:4.8.22-1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour mime-support (3.62) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.8.5-2) ... pi@raspberrypi:~ $","title":"\u00c9tat des lieux"},{"location":"Tutoriels/tutoraspi/Etat-des-lieux/#etat-des-lieux","text":"Maintenant que notre raspi est install\u00e9, la liaison ssh active, nous allons faire le tour des lieux, voir comment le r\u00e9seau se configure, v\u00e9rifier la qualit\u00e9 des algorithmes SSH etc.","title":"\u00c9tat des lieux"},{"location":"Tutoriels/tutoraspi/Etat-des-lieux/#audit-ssh","text":"Nous allons proc\u00e9der \u00e0 un audit SSH. Pour cela, nous allons utiliser un service en ligne de tests de notre configuration. L'adresse du site est la suivante : AuditSSH . Notre adresse est une adresse domestique, r\u00e9serv\u00e9e au r\u00e9seau local, non routable sur Internet. Heureusement, nous avons IPV6 et nous allons pouvoir tester notre petit raspi sans encore le configurer dans le serveur DNS. Pour obtenir l'adresse IPV6 de notre raspi, entrez la commande suivante : pi@raspberrypi:~ $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether b8:27:eb:3a:0b:38 brd ff:ff:ff:ff:ff:ff inet 192.168.111.170/24 brd 192.168.111.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 2a01:e0a:d0:3c20:a23:93ca:de95:e15b/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 86388sec preferred_lft 86388sec inet6 2a01:e0a:d0:3c20::170/64 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::74c8:34d:25f2:3b43/64 scope link valid_lft forever preferred_lft forever pi@raspberrypi:~ $ Nous avons notre adresse IPV6 qui est la suivante : (apr\u00e8s configuration du r\u00e9seau) inet6 2a01:e0a:d0:3c20::170/64 scope global dynamic mngtmpaddr L'adresse commen\u00e7ant par fe80 est r\u00e9serv\u00e9e au trafic sur le r\u00e9seau local. Renseignons ensuite notre adresse ipv6 dans le formulaire du site SSH-Audit (les captures d'\u00e9cran utilisent une autre adresse IPV6): Nous obtenons une note de \"F\" ... il y a du travail en perspective pour obtenir une note correcte. 2 choses sont \u00e0 configurer : le daemon sshd le client ssh Le daemon se configure dans /etc/sshd Le client dans le r\u00e9pertoire ~/.ssh (dans son home sur la machine cliente) Nous ferons \u00e7a dans le chapitre suivant.","title":"Audit SSH"},{"location":"Tutoriels/tutoraspi/Etat-des-lieux/#le-reseau","text":"Le r\u00e9seau est enti\u00e8rement g\u00e9r\u00e9 par dhcp. Nous voulons une adresse IPV4 et IPV6 fixe. Il va falloir configurer le r\u00e9seau \u00e0 la main. Il y a plusieurs fa\u00e7ons de le faire : soit on rajoute une adresse fixe \u00e0 la configuration de dhcp (c'est la m\u00e9thode pr\u00e9conis\u00e9e par tous les sites avec tutoriels sur la fa\u00e7on d'imposer une adresse fixe), soit en \u00e9ditant /etc/network/interfaces. J'ai l'impression qu'il y a eu des changements suivant les versions ... il va falloir tester tout \u00e7a !","title":"Le r\u00e9seau"},{"location":"Tutoriels/tutoraspi/Etat-des-lieux/#le-pare-feu-firewall","text":"Aucun pare-feu n'est d\u00e9fini par d\u00e9faut. Nous installerons nftables qui remplace iptables dans les versions buster et bullseye de Debian.","title":"Le pare-feu (firewall)"},{"location":"Tutoriels/tutoraspi/Etat-des-lieux/#installation-de-programmes-utilitaires","text":"J'installe toujours vim et mc sur mes machines pour l'\u00e9dition des fichiers de configuration et me d\u00e9placer dans l'arborescence, visionner les fichiers de configuration/textes. pi@raspberrypi:~ $ sudo apt install vim mc Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Les paquets suppl\u00e9mentaires suivants seront install\u00e9s : mc-data vim-runtime ... Param\u00e9trage de vim (2:8.1.0875-5) ... ... Param\u00e9trage de mc (3:4.8.22-1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour mime-support (3.62) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.8.5-2) ... pi@raspberrypi:~ $","title":"Installation de programmes utilitaires"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/","text":"Exemple d'utilisation de notre tout nouveau Raspi Nous allons installer un serveur Web, apache . Ce n'est qu'un exemple : choisissez le logiciel que vous voulez, mais gardez \u00e0 l'esprit la s\u00e9curisation. Installation du programme Installation pi@piras:~ $ sudo apt install apache2 Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Les paquets suppl\u00e9mentaires suivants seront install\u00e9s : apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1 liblua5.2-0 Paquets sugg\u00e9r\u00e9s : apache2-doc apache2-suexec-pristine | apache2-suexec-custom Les NOUVEAUX paquets suivants seront install\u00e9s : apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1 liblua5.2-0 0 mis \u00e0 jour, 10 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 2\u202f309 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 7\u202f253 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o ... Enabling site 000-default. Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service \u2192 /lib/systemd/system/apache2.service. Created symlink /etc/systemd/system/multi-user.target.wants/apache-htcacheclean.service \u2192 /lib/systemd/system/apache-htcacheclean. service. Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (241-7~deb10u6+rpi1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.8.5-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.28-10+rpi1) ... pi@piras:~ $ Ouverture des ports Il nous faut ajouter les services http et https . R\u00e8gles en cours pi@piras:~ $ sudo firewall-cmd --state running pi@piras:~ $ sudo firewall-cmd --get-default-zone public pi@piras:~ $ sudo firewall-cmd --get-active-zones public interfaces: eth0 pi@piras:~ $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client smtp ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: Ajout des services pi@piras:~ $ sudo firewall-cmd --permanent --zone=public --add-service={http,https} success pi@piras:~ $ Test de nos services actifs J'ai relanc\u00e9 le raspi car j'avais des erreurs de zones . Apr\u00e8s red\u00e9marrage, tout est bon : pi@piras:~ $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client http https smtp ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: pi@piras:~ $ Nos services http et https ont bien \u00e9t\u00e9 pris en compte. Test Nous allons faire un test de connexion : Tout fonctionne comme il faut. Cr\u00e9ation de la page d'accueil La page d'accueil Nous allons cr\u00e9er un petit fichier .html pour personnaliser notre page d'acceuil. Le fichier s'appellera index.html et est situ\u00e9 dans /var/www/html/ . pi@piras:~ $ cd /var/www/html/ pi@piras:/var/www/html $ ls index.html pi@piras:/var/www/html $ Avec votre \u00e9diteur favori, supprimez le fichier : pi@piras:/var/www/html $ sudo rm index.html pi@piras:/var/www/html $ et cr\u00e9ez un nouveau fichier dont le contenu est le suivant : <!DOCTYPE html> <html> <head> <title>Page d'accueil du Piras</title> <meta charset=\"UTF-8\"> </head> <body> <h1>Page d'acceuil du Piras</h1> <p>Vous voil\u00e0 sur la page principale de notre tout nouveau serveur Web.</p> <p>Merci de votre visite!</p> </body> </html> pi@piras:/var/www/html $ sudo vim index.html pi@piras:/var/www/html $ Changez le propri\u00e9taire du fichier : pi@piras:/var/www/html $ sudo chown www-data: index.html pi@piras:/var/www/html $ Cr\u00e9ation du virtualhost correspondant pi@piras:/etc/apache2/sites-available $ cat piras.conf <VirtualHost *:80> ServerName piras.yojik.net ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> pi@piras:/etc/apache2/sites-available $ On d\u00e9sactive les anciens sites par d\u00e9faut, et on active le nouveau : pi@piras:/etc/apache2/sites-available $ sudo a2dissite default-ssl Site default-ssl disabled. To activate the new configuration, you need to run: systemctl reload apache2 pi@piras:/etc/apache2/sites-available $ sudo a2dissite 000-default Site 000-default disabled. To activate the new configuration, you need to run: systemctl reload apache2 pi@piras:/etc/apache2/sites-available $ pi@piras:/etc/apache2/sites-available $ sudo a2ensite piras Enabling site piras. To activate the new configuration, you need to run: systemctl reload apache2 pi@piras:/etc/apache2/sites-available $ On recharge apache2 pour qu'il prenne en compte nos modifications : pi@piras:/etc/apache2/sites-available $ sudo systemctl reload apache2 pi@piras:/etc/apache2/sites-available $ Test de notre page d'accueil Et voil\u00e0! :D S\u00e9curisation de notre serveur \u00c9tat des lieux Rendez-vous sur la page suivante : Test Mozilla . Nos r\u00e9sultats ne sont pas terribles ... Nous allons suivre les recommandations de la fondation Mozilla en ce qui concerne les algorithmes utilis\u00e9s pour le chiffrement. Page de configuration d'un serveur Apache par la fondation Mozilla : Configurateur Nous alons donc \u00e9diter notre fichier piras.conf situ\u00e9 dans /etc/apache2/sites-available/ ainsi que le fichier g\u00e9n\u00e9ral de configuration d'apache, situ\u00e9 dans pi@piras:/etc/apache2, apache2.conf : Sauvegarde des fichiers existants pi@piras:/etc/apache2 $ sudo cp apache2.conf apache2.conf.orig pi@piras:/etc/apache2 $ Cr\u00e9ation de certificats let'encrypt Il existe plusieurs clients letsencrypt pour la gestion des certificats. Nous utiliserons certbot , le client officiel de letsencrypt . pi@piras:~ $ sudo apt install certbot python-certbot-apache ... pi@piras:~ $ Nous stoppons le service apache pi@piras:~ $ sudo systemctl stop apache2 pi@piras:~ $ Lan\u00e7ons certbot pi@piras:~ $ sudo certbot Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): eric@yojik.eu - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: piras.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 piras.yojik.net Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/piras-le-ssl.conf Deploying Certificate to VirtualHost /etc/apache2/sites-available/piras-le-ssl.conf Enabling available site: /etc/apache2/sites-available/piras-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/piras.conf to ssl vhost in /etc/apache2/sites-available/piras-le-ssl.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://piras.yojik.net You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=piras.yojik.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/piras.yojik.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/piras.yojik.net/privkey.pem Your cert will expire on 2021-06-05. 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\" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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 pi@piras:~ $ Relan\u00e7ons apache pi@piras:~ $ sudo systemctl start apache2 pi@piras:~ $ Premier test C'est bon. S\u00e9curisation du serveur apache Strict-Transport-Security Ajouter la ligne suivante \u00e0 piras.conf : Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains\" Content-Security-Policy Ajouter la ligne suivante \u00e0 piras.conf : Header set Content-Security-Policy \"default-src 'self';\" X-Content-Type-Options Ajouter la ligne suivante \u00e0 piras.conf : <IfModule mod_headers.c> Header set X-Content-Type-Options \"nosniff\" </IfModule> Il faut activer aussi le module headers (d\u00e9j\u00e0 activ\u00e9 chez moi) : pi@piras:~ $ sudo a2enmod headers Module headers already enabled pi@piras:~ $ X-Frame-Options Ajouter la ligne suivante \u00e0 piras.conf : <IfModule mod_headers.c> Header set X-Content-Type-Options \"nosniff\" </IfModule> X-XSS-Protection Ajouter la ligne suivante \u00e0 piras.conf : Header set X-Frame-Options: \"SAMEORIGIN\" Voil\u00e0 le contenu du fichier apr\u00e8s modifications : pi@piras:~ $ cat /etc/apache2/sites-available/piras-le-ssl.conf <IfModule mod_ssl.c> <VirtualHost *:443> Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains\" Header set Content-Security-Policy \"default-src 'self';\" <IfModule mod_headers.c> Header set X-Content-Type-Options \"nosniff\" </IfModule> Header set X-Frame-Options: \"SAMEORIGIN\" ServerName piras.yojik.net ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLCertificateFile /etc/letsencrypt/live/piras.yojik.net/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/piras.yojik.net/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> </IfModule> pi@piras:~ $ Test de notre nouvelle configuration Cette fois-ci, nous obtenons la note maximale A+ : Nous sommes pass\u00e9s d'une note F \u00e0 A+ ! Petites am\u00e9liorations suppl\u00e9mentaires cacher les donn\u00e9es du serveur Cela se configure dans le fichier /etc/apache2/conf-available/security.conf J'ai modifi\u00e9 les lignes suivantes : ServerSignature Off ServerTokens Prod Sauvegarde du fichier et relance du serveur apache. On peut constater que notre serveur ne divulgue plus d'informations sur son type, ni sur l'OS utilis\u00e9. le parcours des r\u00e9pertoires Nous allons interdire le parcours des r\u00e9pertoires/sous-r\u00e9pertoires, de telle fa\u00e7on que le visiteur ne puisse plus voir les fichiers/r\u00e9pertoires. Proc\u00e9dure de test : Nous allons cr\u00e9er un r\u00e9pertoire test avec 2 fichiers (vides) dans l'arboresence de notre site Web. pi@piras:/etc/apache2/conf-available $ cd /var/www/html/ pi@piras:/var/www/html $ sudo mkdir test pi@piras:/var/www/html $ cd test pi@piras:/var/www/html/test $ sudo touch fichier1 fichier2 pi@piras:/var/www/html/test $ Le r\u00e9sultat est le suivant : Retournons dans notre fichier pr\u00e9c\u00e9dent et modifions-le pour avoir ceci : <Directory /var/www/html> # AllowOverride None # Require all denied Options None </Directory> Relan\u00e7ons apache et voyons le r\u00e9sultat : Le visiteur n'a plus acc\u00e8s au listage des r\u00e9pertoires. protection contre les informations donn\u00e9es par l'ent\u00eate (header) Etag Il nous faut rajouter la directive suivante au fichier de configuration : FileEtag None limitation des requ\u00eates possibles : les m\u00e9thodes support\u00e9es sont nombreuses et peuvent \u00eatre configur\u00e9es site par site. Mais en g\u00e9n\u00e9ral, pour un site statique comme celui-l\u00e0, seules les m\u00e9thodes GET , Head , et POST sont n\u00e9cessaires. Modification du fichier pr\u00e9c\u00e9dent <Directory /var/www/html> # AllowOverride None # Require all denied Options None <LimitExcept GET POST OPTIONS> Require all denied </LimitExcept> </Directory>S interdire la requ\u00eate Trace C'est d\u00e9j\u00e0 mis en place par d\u00e9faut dans la configuration Debian. Voil\u00e0 pour quelques am\u00e9liorations de la s\u00e9curit\u00e9 de notre serveur Web.","title":"Exemple d'utilisation avec un serveur Web"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/#exemple-dutilisation-de-notre-tout-nouveau-raspi","text":"Nous allons installer un serveur Web, apache . Ce n'est qu'un exemple : choisissez le logiciel que vous voulez, mais gardez \u00e0 l'esprit la s\u00e9curisation.","title":"Exemple d'utilisation de notre tout nouveau Raspi"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/#installation-du-programme","text":"","title":"Installation du programme"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/#installation","text":"pi@piras:~ $ sudo apt install apache2 Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Les paquets suppl\u00e9mentaires suivants seront install\u00e9s : apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1 liblua5.2-0 Paquets sugg\u00e9r\u00e9s : apache2-doc apache2-suexec-pristine | apache2-suexec-custom Les NOUVEAUX paquets suivants seront install\u00e9s : apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1 liblua5.2-0 0 mis \u00e0 jour, 10 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 2\u202f309 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 7\u202f253 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o ... Enabling site 000-default. Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service \u2192 /lib/systemd/system/apache2.service. Created symlink /etc/systemd/system/multi-user.target.wants/apache-htcacheclean.service \u2192 /lib/systemd/system/apache-htcacheclean. service. Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (241-7~deb10u6+rpi1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.8.5-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.28-10+rpi1) ... pi@piras:~ $","title":"Installation"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/#ouverture-des-ports","text":"Il nous faut ajouter les services http et https . R\u00e8gles en cours pi@piras:~ $ sudo firewall-cmd --state running pi@piras:~ $ sudo firewall-cmd --get-default-zone public pi@piras:~ $ sudo firewall-cmd --get-active-zones public interfaces: eth0 pi@piras:~ $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client smtp ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: Ajout des services pi@piras:~ $ sudo firewall-cmd --permanent --zone=public --add-service={http,https} success pi@piras:~ $ Test de nos services actifs J'ai relanc\u00e9 le raspi car j'avais des erreurs de zones . Apr\u00e8s red\u00e9marrage, tout est bon : pi@piras:~ $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client http https smtp ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: pi@piras:~ $ Nos services http et https ont bien \u00e9t\u00e9 pris en compte.","title":"Ouverture des ports"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/#test","text":"Nous allons faire un test de connexion : Tout fonctionne comme il faut.","title":"Test"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/#creation-de-la-page-daccueil","text":"","title":"Cr\u00e9ation de la page d'accueil"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/#la-page-daccueil","text":"Nous allons cr\u00e9er un petit fichier .html pour personnaliser notre page d'acceuil. Le fichier s'appellera index.html et est situ\u00e9 dans /var/www/html/ . pi@piras:~ $ cd /var/www/html/ pi@piras:/var/www/html $ ls index.html pi@piras:/var/www/html $ Avec votre \u00e9diteur favori, supprimez le fichier : pi@piras:/var/www/html $ sudo rm index.html pi@piras:/var/www/html $ et cr\u00e9ez un nouveau fichier dont le contenu est le suivant : <!DOCTYPE html> <html> <head> <title>Page d'accueil du Piras</title> <meta charset=\"UTF-8\"> </head> <body> <h1>Page d'acceuil du Piras</h1> <p>Vous voil\u00e0 sur la page principale de notre tout nouveau serveur Web.</p> <p>Merci de votre visite!</p> </body> </html> pi@piras:/var/www/html $ sudo vim index.html pi@piras:/var/www/html $ Changez le propri\u00e9taire du fichier : pi@piras:/var/www/html $ sudo chown www-data: index.html pi@piras:/var/www/html $","title":"La page d'accueil"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/#creation-du-virtualhost-correspondant","text":"pi@piras:/etc/apache2/sites-available $ cat piras.conf <VirtualHost *:80> ServerName piras.yojik.net ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> pi@piras:/etc/apache2/sites-available $ On d\u00e9sactive les anciens sites par d\u00e9faut, et on active le nouveau : pi@piras:/etc/apache2/sites-available $ sudo a2dissite default-ssl Site default-ssl disabled. To activate the new configuration, you need to run: systemctl reload apache2 pi@piras:/etc/apache2/sites-available $ sudo a2dissite 000-default Site 000-default disabled. To activate the new configuration, you need to run: systemctl reload apache2 pi@piras:/etc/apache2/sites-available $ pi@piras:/etc/apache2/sites-available $ sudo a2ensite piras Enabling site piras. To activate the new configuration, you need to run: systemctl reload apache2 pi@piras:/etc/apache2/sites-available $ On recharge apache2 pour qu'il prenne en compte nos modifications : pi@piras:/etc/apache2/sites-available $ sudo systemctl reload apache2 pi@piras:/etc/apache2/sites-available $","title":"Cr\u00e9ation du virtualhost correspondant"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/#test-de-notre-page-daccueil","text":"Et voil\u00e0! :D","title":"Test de notre page d'accueil"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/#securisation-de-notre-serveur","text":"","title":"S\u00e9curisation de notre serveur"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/#etat-des-lieux","text":"Rendez-vous sur la page suivante : Test Mozilla . Nos r\u00e9sultats ne sont pas terribles ... Nous allons suivre les recommandations de la fondation Mozilla en ce qui concerne les algorithmes utilis\u00e9s pour le chiffrement. Page de configuration d'un serveur Apache par la fondation Mozilla : Configurateur Nous alons donc \u00e9diter notre fichier piras.conf situ\u00e9 dans /etc/apache2/sites-available/ ainsi que le fichier g\u00e9n\u00e9ral de configuration d'apache, situ\u00e9 dans pi@piras:/etc/apache2, apache2.conf : Sauvegarde des fichiers existants pi@piras:/etc/apache2 $ sudo cp apache2.conf apache2.conf.orig pi@piras:/etc/apache2 $ Cr\u00e9ation de certificats let'encrypt Il existe plusieurs clients letsencrypt pour la gestion des certificats. Nous utiliserons certbot , le client officiel de letsencrypt . pi@piras:~ $ sudo apt install certbot python-certbot-apache ... pi@piras:~ $ Nous stoppons le service apache pi@piras:~ $ sudo systemctl stop apache2 pi@piras:~ $ Lan\u00e7ons certbot pi@piras:~ $ sudo certbot Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): eric@yojik.eu - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: piras.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 piras.yojik.net Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/piras-le-ssl.conf Deploying Certificate to VirtualHost /etc/apache2/sites-available/piras-le-ssl.conf Enabling available site: /etc/apache2/sites-available/piras-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/piras.conf to ssl vhost in /etc/apache2/sites-available/piras-le-ssl.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://piras.yojik.net You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=piras.yojik.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/piras.yojik.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/piras.yojik.net/privkey.pem Your cert will expire on 2021-06-05. 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\" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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 pi@piras:~ $ Relan\u00e7ons apache pi@piras:~ $ sudo systemctl start apache2 pi@piras:~ $ Premier test C'est bon. S\u00e9curisation du serveur apache Strict-Transport-Security Ajouter la ligne suivante \u00e0 piras.conf : Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains\" Content-Security-Policy Ajouter la ligne suivante \u00e0 piras.conf : Header set Content-Security-Policy \"default-src 'self';\" X-Content-Type-Options Ajouter la ligne suivante \u00e0 piras.conf : <IfModule mod_headers.c> Header set X-Content-Type-Options \"nosniff\" </IfModule> Il faut activer aussi le module headers (d\u00e9j\u00e0 activ\u00e9 chez moi) : pi@piras:~ $ sudo a2enmod headers Module headers already enabled pi@piras:~ $ X-Frame-Options Ajouter la ligne suivante \u00e0 piras.conf : <IfModule mod_headers.c> Header set X-Content-Type-Options \"nosniff\" </IfModule> X-XSS-Protection Ajouter la ligne suivante \u00e0 piras.conf : Header set X-Frame-Options: \"SAMEORIGIN\" Voil\u00e0 le contenu du fichier apr\u00e8s modifications : pi@piras:~ $ cat /etc/apache2/sites-available/piras-le-ssl.conf <IfModule mod_ssl.c> <VirtualHost *:443> Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains\" Header set Content-Security-Policy \"default-src 'self';\" <IfModule mod_headers.c> Header set X-Content-Type-Options \"nosniff\" </IfModule> Header set X-Frame-Options: \"SAMEORIGIN\" ServerName piras.yojik.net ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLCertificateFile /etc/letsencrypt/live/piras.yojik.net/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/piras.yojik.net/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> </IfModule> pi@piras:~ $","title":"\u00c9tat des lieux"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/#test-de-notre-nouvelle-configuration","text":"Cette fois-ci, nous obtenons la note maximale A+ : Nous sommes pass\u00e9s d'une note F \u00e0 A+ !","title":"Test de notre nouvelle configuration"},{"location":"Tutoriels/tutoraspi/Exemple-d-utilisation-serveur-Web/#petites-ameliorations-supplementaires","text":"cacher les donn\u00e9es du serveur Cela se configure dans le fichier /etc/apache2/conf-available/security.conf J'ai modifi\u00e9 les lignes suivantes : ServerSignature Off ServerTokens Prod Sauvegarde du fichier et relance du serveur apache. On peut constater que notre serveur ne divulgue plus d'informations sur son type, ni sur l'OS utilis\u00e9. le parcours des r\u00e9pertoires Nous allons interdire le parcours des r\u00e9pertoires/sous-r\u00e9pertoires, de telle fa\u00e7on que le visiteur ne puisse plus voir les fichiers/r\u00e9pertoires. Proc\u00e9dure de test : Nous allons cr\u00e9er un r\u00e9pertoire test avec 2 fichiers (vides) dans l'arboresence de notre site Web. pi@piras:/etc/apache2/conf-available $ cd /var/www/html/ pi@piras:/var/www/html $ sudo mkdir test pi@piras:/var/www/html $ cd test pi@piras:/var/www/html/test $ sudo touch fichier1 fichier2 pi@piras:/var/www/html/test $ Le r\u00e9sultat est le suivant : Retournons dans notre fichier pr\u00e9c\u00e9dent et modifions-le pour avoir ceci : <Directory /var/www/html> # AllowOverride None # Require all denied Options None </Directory> Relan\u00e7ons apache et voyons le r\u00e9sultat : Le visiteur n'a plus acc\u00e8s au listage des r\u00e9pertoires. protection contre les informations donn\u00e9es par l'ent\u00eate (header) Etag Il nous faut rajouter la directive suivante au fichier de configuration : FileEtag None limitation des requ\u00eates possibles : les m\u00e9thodes support\u00e9es sont nombreuses et peuvent \u00eatre configur\u00e9es site par site. Mais en g\u00e9n\u00e9ral, pour un site statique comme celui-l\u00e0, seules les m\u00e9thodes GET , Head , et POST sont n\u00e9cessaires. Modification du fichier pr\u00e9c\u00e9dent <Directory /var/www/html> # AllowOverride None # Require all denied Options None <LimitExcept GET POST OPTIONS> Require all denied </LimitExcept> </Directory>S interdire la requ\u00eate Trace C'est d\u00e9j\u00e0 mis en place par d\u00e9faut dans la configuration Debian. Voil\u00e0 pour quelques am\u00e9liorations de la s\u00e9curit\u00e9 de notre serveur Web.","title":"Petites am\u00e9liorations suppl\u00e9mentaires"},{"location":"Tutoriels/tutoraspi/Fail2ban/","text":"Installation de fail2ban Fail2ban nous permet de contrer les attaques de \u00abbrute force. \u00bb Il met automatique en quarantaine les IPs attaquantes en analysant les fichiers de log. Installation pi@raspberrypi:~ $ sudo apt install fail2ban && sudo apt clean Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Les paquets suppl\u00e9mentaires suivants seront install\u00e9s : python3-pyinotify python3-systemd whois Paquets sugg\u00e9r\u00e9s : mailx monit sqlite3 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 514 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 2\u202f410 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de :2 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian buster/main armhf fail2ban all 0.10.2-2.1 [385 kB] R\u00e9ception de :1 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf whois armhf 5.4.3 [68,6 kB] R\u00e9ception de :3 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf python3-pyinotify all 0.9.6-1 [26,9 kB] R\u00e9ception de :4 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf python3-systemd armhf 234-2+b1 [34,1 kB] 514 ko r\u00e9ceptionn\u00e9s en 2s (330 ko/s) S\u00e9lection du paquet whois pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 43868 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../archives/whois_5.4.3_armhf.deb ... D\u00e9paquetage de whois (5.4.3) ... S\u00e9lection du paquet fail2ban pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../fail2ban_0.10.2-2.1_all.deb ... D\u00e9paquetage de fail2ban (0.10.2-2.1) ... 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_234-2+b1_armhf.deb ... D\u00e9paquetage de python3-systemd (234-2+b1) ... Param\u00e9trage de whois (5.4.3) ... Param\u00e9trage de fail2ban (0.10.2-2.1) ... Created symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service \u2192 /lib/systemd/system/fail2ban.service. [fail2ban-tmpfiles.conf:1] Line references path below legacy directory /var/run/, updating /var/run/fail2ban \u2192 /run/fail2ban; please update the tm pfiles.d/ drop-in file accordingly. Param\u00e9trage de python3-pyinotify (0.9.6-1) ... Param\u00e9trage de python3-systemd (234-2+b1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.8.5-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (241-7~deb10u6+rpi1) ... pi@raspberrypi:~ $ Param\u00e9trage de fail2ban Dans un premier temps, rien n'est \u00e0 configurer. L'installation de base configure la surveillance de ssh par d\u00e9faut. Le fichier qui contr\u00f4le ce fonctionnement est /etc/fail2ban/jail.d/defaults-debian.conf. Par d\u00e9faut, il contient : pi@raspberrypi:~ $ sudo cat /etc/fail2ban/jail.d/defaults-debian.conf [sshd] enabled = true pi@raspberrypi:~ $ Nous rajouterons des ports \u00e0 surveiller selon les services que nous installerons.","title":"Contrer les attaques de force brute"},{"location":"Tutoriels/tutoraspi/Fail2ban/#installation-de-fail2ban","text":"Fail2ban nous permet de contrer les attaques de \u00abbrute force. \u00bb Il met automatique en quarantaine les IPs attaquantes en analysant les fichiers de log.","title":"Installation de fail2ban"},{"location":"Tutoriels/tutoraspi/Fail2ban/#installation","text":"pi@raspberrypi:~ $ sudo apt install fail2ban && sudo apt clean Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Les paquets suppl\u00e9mentaires suivants seront install\u00e9s : python3-pyinotify python3-systemd whois Paquets sugg\u00e9r\u00e9s : mailx monit sqlite3 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 514 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 2\u202f410 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de :2 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian buster/main armhf fail2ban all 0.10.2-2.1 [385 kB] R\u00e9ception de :1 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf whois armhf 5.4.3 [68,6 kB] R\u00e9ception de :3 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf python3-pyinotify all 0.9.6-1 [26,9 kB] R\u00e9ception de :4 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf python3-systemd armhf 234-2+b1 [34,1 kB] 514 ko r\u00e9ceptionn\u00e9s en 2s (330 ko/s) S\u00e9lection du paquet whois pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 43868 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../archives/whois_5.4.3_armhf.deb ... D\u00e9paquetage de whois (5.4.3) ... S\u00e9lection du paquet fail2ban pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../fail2ban_0.10.2-2.1_all.deb ... D\u00e9paquetage de fail2ban (0.10.2-2.1) ... 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_234-2+b1_armhf.deb ... D\u00e9paquetage de python3-systemd (234-2+b1) ... Param\u00e9trage de whois (5.4.3) ... Param\u00e9trage de fail2ban (0.10.2-2.1) ... Created symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service \u2192 /lib/systemd/system/fail2ban.service. [fail2ban-tmpfiles.conf:1] Line references path below legacy directory /var/run/, updating /var/run/fail2ban \u2192 /run/fail2ban; please update the tm pfiles.d/ drop-in file accordingly. Param\u00e9trage de python3-pyinotify (0.9.6-1) ... Param\u00e9trage de python3-systemd (234-2+b1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.8.5-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (241-7~deb10u6+rpi1) ... pi@raspberrypi:~ $","title":"Installation"},{"location":"Tutoriels/tutoraspi/Fail2ban/#parametrage-de-fail2ban","text":"Dans un premier temps, rien n'est \u00e0 configurer. L'installation de base configure la surveillance de ssh par d\u00e9faut. Le fichier qui contr\u00f4le ce fonctionnement est /etc/fail2ban/jail.d/defaults-debian.conf. Par d\u00e9faut, il contient : pi@raspberrypi:~ $ sudo cat /etc/fail2ban/jail.d/defaults-debian.conf [sshd] enabled = true pi@raspberrypi:~ $ Nous rajouterons des ports \u00e0 surveiller selon les services que nous installerons.","title":"Param\u00e9trage de fail2ban"},{"location":"Tutoriels/tutoraspi/Firewall/","text":"Le pare-feu Il nous faut installer un pare-feu sur notre raspi pour \u00e9viter les intrusions. Nous allons limiter les machines susceptibles de se connecter \u00e0 celles de notre r\u00e9seau local, et \u00e9galement limiter les ports accessibles sur notre r\u00e9seau. Nous allons utiliser IPtables et Firewalld. J'aurai pr\u00e9f\u00e9r\u00e9 utiliser nftables qui est le successeur de iptables , mais j'ai eu quelques soucis \u00e0 l'utilisation. Peut-\u00eatre est-ce pour \u00e7a que la distribution RaspiOS a configur\u00e9 firewalld avec IPtables ... Installation de IPtables et de Firewalld pi@raspi:~ $ sudo apt install firewalld IPtables est install\u00e9 par d\u00e9faut : rien \u00e0 faire ici. Test Si on tape : pi@raspberrypi:~ $ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination pi@raspberrypi:~ $ On voit que c'est iptables qui a \u00e9t\u00e9 chosi par RaspiOS. D'abord, il faut comprendre comment fonctionne Firewalld. Je me suis bas\u00e9 sur les sites suivant : lw.net How to get started with Firewalld tutorial points la documentation officielle introduction-to-firewalld La documentation de Fedora it connect La documentation de Fedora est la plus compr\u00e9hensible. La notion de zones Firewalld d\u00e9finit 9 zones qui sont en fait des r\u00e8gles de pare-feux par d\u00e9faut. Une zone va par exemple bloquer toute entr\u00e9e sauf SSH, une autre permettre l'acc\u00e8s en HTTP et HTTPS. Ces zones correspondent \u00e0 des utilisations types, comme un serveur dans une DMZ, ou un serveur chez soi , un serveur public, etc. On peut imaginer une zone \u00e9mail qui ne laisserait passer que les ports sp\u00e9cifiques \u00e0 l'\u00e9mail et DNS bien s\u00fbr. Il est possible de cr\u00e9er des zones personnelles. Un certain nombre de zones sont pr\u00e9d\u00e9finies. Voyons leur contenu. Les diff\u00e9rentes zones Les diff\u00e9rentes zones sont : trusted: non modifiable home: modifiable work: modifiable internal: modifiable dmz: modifiable public: modifiable external: modifiable block: non modifiable drop: non modifiable Une tr\u00e8s bonne pr\u00e9sentation des zones est ici : it connect Les fichiers de configuration Ils sont situ\u00e9s \u00e0 2 endroits : /usr/lib/firewalld/ : il ne faut pas toucher au contenu de ce r\u00e9pertoire /etc/firewalld/ : c'est l\u00e0 que nous mettrons notre configuration, en copiant les fichiers de /usr/lib/firewalld si besoin est. Dans le r\u00e9pertoire /etc/firewalld, le fichier firewalld.conf permet de configurer la zone par d\u00e9faut, ainsi que le backend (iptables, nftables et autre). La zone par d\u00e9faut est public : pas de confiance, mais possibilit\u00e9 d'ajuster au cas par cas les r\u00e8gles. Le seul acc\u00e8s autoris\u00e9 est l'acc\u00e8s ssh et dhcp . Quelques commandes D\u00e9marrer Firewalld: $ sudo systemctl start firewalld Stopper Fireawalld: $ sudo systemctl stop firewalld Tester le fonctionnement de Firewalld: $ sudo firewall-cmd --state Conna\u00eetre les zones pr\u00e9d\u00e9finies : $ sudo firewall-cmd --get-zones Conna\u00eetre la zone par d\u00e9faut : $ sudo firewall-cmd --get-default-zone Conna\u00eetre la zone active : $ sudo firewall-cmd --get-active-zones Exemples : pi@piras:~ $ sudo firewall-cmd --state running pi@piras:~ $ Le service tourne. pi@piras:~ $ sudo firewall-cmd --get-default-zone public pi@piras:~ $ La zone par d\u00e9faut est : public pi@piras:~ $ sudo firewall-cmd --get-zones block dmz drop external home internal public trusted work pi@piras:~ $ Les zones pr\u00e9d\u00e9finies sont : block dmz drop external home internal public trusted work Quelle est la zone active : aucune ! pi@piras:~ $ sudo firewall-cmd --get-active-zones pi@piras:~ $ Nous pouvons v\u00e9rifier la zone en fonctionnement et l'interface r\u00e9seau qui y est attach\u00e9e : pi@piras:~ $ sudo firewall-cmd --list-all public target: default icmp-block-inversion: no interfaces: sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: pi@piras:~ $ Aucune interface n'est attach\u00e9e. Les seuls services autoris\u00e9 sont : dhcp et ssh. Premi\u00e8re \u00e9tape de configuration Nous allons utiliser les commandes en ligne de commande pour configurer Firewalld, mais il existe une GUI pour le faire graphiquement. R\u00e9f\u00e9rez-vous aux liens que j'ai indiqu\u00e9s au-dessus. D\u00e9finition de la zone par d\u00e9faut : (public) pi@piras:~ $ sudo firewall-cmd --set-default-zone=public Warning: ZONE_ALREADY_SET: public success pi@piras:~ $ Attribution de l'interface r\u00e9seau \u00e0 cette zone : pi@piras:~ $ sudo firewall-cmd --zone=public --change-interface=eth0 success pi@piras:~ $ Attention, ce changement n'est pas permanent ! (voir ci-dessous) Test : pi@piras:~ $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: pi@piras:~ $ Nous voyons que l'interface eth0 a bien \u00e9t\u00e9 attribu\u00e9e \u00e0 la zone public . Les services Il est possible de configurer les services accessibles (ou pas) attribu\u00e9s \u00e0 la zone active. Pour conna\u00eetre les diff\u00e9rents services disponibles, tapez la commande suivante : pi@piras:~ $ sudo firewall-cmd --get-services RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server pi@piras:~ $ Chaque d\u00e9tail des services est d\u00e9taill\u00e9 dans un fichier xml dans /usr/lib/firewalld. Voyons quels services sont actuellement activ\u00e9s sur notre raspi : pi@piras:~ $ ss -t -u -l -a Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 0.0.0.0:55853 0.0.0.0:* udp UNCONN 0 0 127.0.0.1:domain 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:bootpc 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* udp UNCONN 0 0 [::1]:domain *:* udp UNCONN 0 0 *:59578 *:* udp UNCONN 0 0 *:mdns *:* tcp LISTEN 0 511 127.0.0.1:domain-s 0.0.0.0:* tcp LISTEN 0 511 127.0.0.1:domain 0.0.0.0:* tcp LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* tcp ESTAB 0 0 192.168.111.170:ssh 192.168.111.150:59092 tcp LISTEN 0 511 [::1]:domain-s [::]:* tcp LISTEN 0 511 [::1]:domain [::]:* tcp LISTEN 0 128 [::]:ssh [::]:* pi@piras:~ $ Nous voyons notre connexion ssh \u00e9tablie entre ma machine de travail en ip 192.168.111.150 et piras 192.168.111.170. Notre raspi \u00e9coute \u00e9galement le port 22 sur toutes les interfaces pr\u00e9sentes. Liste des ports en \u00e9coute (TCP) : pi@piras:~ $ ss -ltn State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 511 127.0.0.1:853 0.0.0.0:* LISTEN 0 511 127.0.0.1:53 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 511 [::1]:853 [::]:* LISTEN 0 511 [::1]:53 [::]:* LISTEN 0 128 [::]:22 [::]:* pi@piras:~ $ Les ports 22 (ssh), 53 (dns), 853 (dns) sont \u00e0 l'\u00e9coute en IPV4 et IPV6. Liste des ports en \u00e9coute (UDP) : pi@piras:~ $ ss -lun State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 127.0.0.1:53 0.0.0.0:* UNCONN 0 0 0.0.0.0:68 0.0.0.0:* UNCONN 0 0 0.0.0.0:5353 0.0.0.0:* UNCONN 0 0 [::1]:53 *:* UNCONN 0 0 *:59578 *:* UNCONN 0 0 *:5353 *:* pi@piras:~ $ \u00c9tat des lieux V\u00e9rifions le fonctionnement de Firewalld. Souvenez-vous qu'il \u00e9tait configur\u00e9 pour fonctionner avec Iptables. V\u00e9rifions les r\u00e8gles \u00e9tablies : pi@piras:~ $ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere INPUT_direct all -- anywhere anywhere INPUT_ZONES_SOURCE all -- anywhere anywhere INPUT_ZONES all -- anywhere anywhere DROP all -- anywhere anywhere ctstate INVALID REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere FORWARD_direct all -- anywhere anywhere FORWARD_IN_ZONES_SOURCE all -- anywhere anywhere FORWARD_IN_ZONES all -- anywhere anywhere FORWARD_OUT_ZONES_SOURCE all -- anywhere anywhere FORWARD_OUT_ZONES all -- anywhere anywhere DROP all -- anywhere anywhere ctstate INVALID REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination OUTPUT_direct all -- anywhere anywhere Chain INPUT_direct (1 references) target prot opt source destination Chain INPUT_ZONES_SOURCE (1 references) target prot opt source destination Chain INPUT_ZONES (1 references) target prot opt source destination IN_public all -- anywhere anywhere [goto] IN_public all -- anywhere anywhere [goto] Chain FORWARD_direct (1 references) target prot opt source destination Chain FORWARD_IN_ZONES_SOURCE (1 references) target prot opt source destination Chain FORWARD_IN_ZONES (1 references) target prot opt source destination FWDI_public all -- anywhere anywhere [goto] FWDI_public all -- anywhere anywhere [goto] Chain FORWARD_OUT_ZONES_SOURCE (1 references) target prot opt source destination Chain FORWARD_OUT_ZONES (1 references) target prot opt source destination FWDO_public all -- anywhere anywhere [goto] FWDO_public all -- anywhere anywhere [goto] Chain OUTPUT_direct (1 references) target prot opt source destination Chain IN_public (2 references) target prot opt source destination IN_public_log all -- anywhere anywhere IN_public_deny all -- anywhere anywhere IN_public_allow all -- anywhere anywhere ACCEPT icmp -- anywhere anywhere Chain IN_public_log (1 references) target prot opt source destination Chain IN_public_deny (1 references) target prot opt source destination Chain IN_public_allow (1 references) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate NEW,UNTRACKED Chain FWDI_public (2 references) target prot opt source destination FWDI_public_log all -- anywhere anywhere FWDI_public_deny all -- anywhere anywhere FWDI_public_allow all -- anywhere anywhere ACCEPT icmp -- anywhere anywhere Chain FWDI_public_log (1 references) target prot opt source destination Chain FWDI_public_deny (1 references) target prot opt source destination Chain FWDI_public_allow (1 references) target prot opt source destination Chain FWDO_public (2 references) target prot opt source destination FWDO_public_log all -- anywhere anywhere FWDO_public_deny all -- anywhere anywhere FWDO_public_allow all -- anywhere anywhere Chain FWDO_public_log (1 references) target prot opt source destination Chain FWDO_public_deny (1 references) target prot opt source destination Chain FWDO_public_allow (1 references) target prot opt source destination pi@piras:~ $ Les r\u00e8gles Iptables ont bien \u00e9t\u00e9 configur\u00e9es par Firewalld. Apr\u00e8s reboot, nous voyons que rien n'a \u00e9t\u00e9 conserv\u00e9 ! Il va falloir investiguer ... Bien : voil\u00e0 la proc\u00e9dure \u00e0 suivre : sudo firewall-cmd --permanent --zone=public --change-interface=eth0 Permet de changer de fa\u00e7on permanente l'interface associ\u00e9e \u00e0 la zone public . Test : pi@piras:~ $ sudo firewall-cmd --permanent --zone=public --change-interface=eth0 success pi@piras:~ $ sudo cat /etc/firewalld/zones/public.xml <?xml version=\"1.0\" encoding=\"utf-8\"?> <zone> <short>Public</short> <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <interface name=\"eth0\"/> <service name=\"ssh\"/> <service name=\"dhcpv6-client\"/> </zone> pi@piras:~ $ Nous voyons que firewalld a cr\u00e9\u00e9 des r\u00e9pertoires et un fichier dans le r\u00e9pertoire **zones** dont le contenu correspond \u00e0 ce que nous avons demand\u00e9. pi@piras:~ $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: pi@piras:~ $ Test apr\u00e8s red\u00e9marrage : Cette fois-ci, \u00e7a marche ! (Yes !) pi@piras:~ $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: pi@piras:~ $ Nous verrons ensuite comment ajouter des r\u00e8gles suivant les services que nous voudrons d\u00e9ployer.","title":"Installation d'un pare-feux"},{"location":"Tutoriels/tutoraspi/Firewall/#le-pare-feu","text":"Il nous faut installer un pare-feu sur notre raspi pour \u00e9viter les intrusions. Nous allons limiter les machines susceptibles de se connecter \u00e0 celles de notre r\u00e9seau local, et \u00e9galement limiter les ports accessibles sur notre r\u00e9seau. Nous allons utiliser IPtables et Firewalld. J'aurai pr\u00e9f\u00e9r\u00e9 utiliser nftables qui est le successeur de iptables , mais j'ai eu quelques soucis \u00e0 l'utilisation. Peut-\u00eatre est-ce pour \u00e7a que la distribution RaspiOS a configur\u00e9 firewalld avec IPtables ...","title":"Le pare-feu"},{"location":"Tutoriels/tutoraspi/Firewall/#installation-de-iptables-et-de-firewalld","text":"pi@raspi:~ $ sudo apt install firewalld IPtables est install\u00e9 par d\u00e9faut : rien \u00e0 faire ici.","title":"Installation de IPtables et de Firewalld"},{"location":"Tutoriels/tutoraspi/Firewall/#test","text":"Si on tape : pi@raspberrypi:~ $ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination pi@raspberrypi:~ $ On voit que c'est iptables qui a \u00e9t\u00e9 chosi par RaspiOS. D'abord, il faut comprendre comment fonctionne Firewalld. Je me suis bas\u00e9 sur les sites suivant : lw.net How to get started with Firewalld tutorial points la documentation officielle introduction-to-firewalld La documentation de Fedora it connect La documentation de Fedora est la plus compr\u00e9hensible.","title":"Test"},{"location":"Tutoriels/tutoraspi/Firewall/#la-notion-de-zones","text":"Firewalld d\u00e9finit 9 zones qui sont en fait des r\u00e8gles de pare-feux par d\u00e9faut. Une zone va par exemple bloquer toute entr\u00e9e sauf SSH, une autre permettre l'acc\u00e8s en HTTP et HTTPS. Ces zones correspondent \u00e0 des utilisations types, comme un serveur dans une DMZ, ou un serveur chez soi , un serveur public, etc. On peut imaginer une zone \u00e9mail qui ne laisserait passer que les ports sp\u00e9cifiques \u00e0 l'\u00e9mail et DNS bien s\u00fbr. Il est possible de cr\u00e9er des zones personnelles. Un certain nombre de zones sont pr\u00e9d\u00e9finies. Voyons leur contenu.","title":"La notion de zones"},{"location":"Tutoriels/tutoraspi/Firewall/#les-differentes-zones","text":"Les diff\u00e9rentes zones sont : trusted: non modifiable home: modifiable work: modifiable internal: modifiable dmz: modifiable public: modifiable external: modifiable block: non modifiable drop: non modifiable Une tr\u00e8s bonne pr\u00e9sentation des zones est ici : it connect","title":"Les diff\u00e9rentes zones"},{"location":"Tutoriels/tutoraspi/Firewall/#les-fichiers-de-configuration","text":"Ils sont situ\u00e9s \u00e0 2 endroits : /usr/lib/firewalld/ : il ne faut pas toucher au contenu de ce r\u00e9pertoire /etc/firewalld/ : c'est l\u00e0 que nous mettrons notre configuration, en copiant les fichiers de /usr/lib/firewalld si besoin est. Dans le r\u00e9pertoire /etc/firewalld, le fichier firewalld.conf permet de configurer la zone par d\u00e9faut, ainsi que le backend (iptables, nftables et autre). La zone par d\u00e9faut est public : pas de confiance, mais possibilit\u00e9 d'ajuster au cas par cas les r\u00e8gles. Le seul acc\u00e8s autoris\u00e9 est l'acc\u00e8s ssh et dhcp .","title":"Les fichiers de configuration"},{"location":"Tutoriels/tutoraspi/Firewall/#quelques-commandes","text":"D\u00e9marrer Firewalld: $ sudo systemctl start firewalld Stopper Fireawalld: $ sudo systemctl stop firewalld Tester le fonctionnement de Firewalld: $ sudo firewall-cmd --state Conna\u00eetre les zones pr\u00e9d\u00e9finies : $ sudo firewall-cmd --get-zones Conna\u00eetre la zone par d\u00e9faut : $ sudo firewall-cmd --get-default-zone Conna\u00eetre la zone active : $ sudo firewall-cmd --get-active-zones Exemples : pi@piras:~ $ sudo firewall-cmd --state running pi@piras:~ $ Le service tourne. pi@piras:~ $ sudo firewall-cmd --get-default-zone public pi@piras:~ $ La zone par d\u00e9faut est : public pi@piras:~ $ sudo firewall-cmd --get-zones block dmz drop external home internal public trusted work pi@piras:~ $ Les zones pr\u00e9d\u00e9finies sont : block dmz drop external home internal public trusted work Quelle est la zone active : aucune ! pi@piras:~ $ sudo firewall-cmd --get-active-zones pi@piras:~ $ Nous pouvons v\u00e9rifier la zone en fonctionnement et l'interface r\u00e9seau qui y est attach\u00e9e : pi@piras:~ $ sudo firewall-cmd --list-all public target: default icmp-block-inversion: no interfaces: sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: pi@piras:~ $ Aucune interface n'est attach\u00e9e. Les seuls services autoris\u00e9 sont : dhcp et ssh.","title":"Quelques commandes"},{"location":"Tutoriels/tutoraspi/Firewall/#premiere-etape-de-configuration","text":"Nous allons utiliser les commandes en ligne de commande pour configurer Firewalld, mais il existe une GUI pour le faire graphiquement. R\u00e9f\u00e9rez-vous aux liens que j'ai indiqu\u00e9s au-dessus. D\u00e9finition de la zone par d\u00e9faut : (public) pi@piras:~ $ sudo firewall-cmd --set-default-zone=public Warning: ZONE_ALREADY_SET: public success pi@piras:~ $ Attribution de l'interface r\u00e9seau \u00e0 cette zone : pi@piras:~ $ sudo firewall-cmd --zone=public --change-interface=eth0 success pi@piras:~ $ Attention, ce changement n'est pas permanent ! (voir ci-dessous) Test : pi@piras:~ $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: pi@piras:~ $ Nous voyons que l'interface eth0 a bien \u00e9t\u00e9 attribu\u00e9e \u00e0 la zone public .","title":"Premi\u00e8re \u00e9tape de configuration"},{"location":"Tutoriels/tutoraspi/Firewall/#les-services","text":"Il est possible de configurer les services accessibles (ou pas) attribu\u00e9s \u00e0 la zone active. Pour conna\u00eetre les diff\u00e9rents services disponibles, tapez la commande suivante : pi@piras:~ $ sudo firewall-cmd --get-services RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server pi@piras:~ $ Chaque d\u00e9tail des services est d\u00e9taill\u00e9 dans un fichier xml dans /usr/lib/firewalld. Voyons quels services sont actuellement activ\u00e9s sur notre raspi : pi@piras:~ $ ss -t -u -l -a Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 0.0.0.0:55853 0.0.0.0:* udp UNCONN 0 0 127.0.0.1:domain 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:bootpc 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* udp UNCONN 0 0 [::1]:domain *:* udp UNCONN 0 0 *:59578 *:* udp UNCONN 0 0 *:mdns *:* tcp LISTEN 0 511 127.0.0.1:domain-s 0.0.0.0:* tcp LISTEN 0 511 127.0.0.1:domain 0.0.0.0:* tcp LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* tcp ESTAB 0 0 192.168.111.170:ssh 192.168.111.150:59092 tcp LISTEN 0 511 [::1]:domain-s [::]:* tcp LISTEN 0 511 [::1]:domain [::]:* tcp LISTEN 0 128 [::]:ssh [::]:* pi@piras:~ $ Nous voyons notre connexion ssh \u00e9tablie entre ma machine de travail en ip 192.168.111.150 et piras 192.168.111.170. Notre raspi \u00e9coute \u00e9galement le port 22 sur toutes les interfaces pr\u00e9sentes. Liste des ports en \u00e9coute (TCP) : pi@piras:~ $ ss -ltn State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 511 127.0.0.1:853 0.0.0.0:* LISTEN 0 511 127.0.0.1:53 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 511 [::1]:853 [::]:* LISTEN 0 511 [::1]:53 [::]:* LISTEN 0 128 [::]:22 [::]:* pi@piras:~ $ Les ports 22 (ssh), 53 (dns), 853 (dns) sont \u00e0 l'\u00e9coute en IPV4 et IPV6. Liste des ports en \u00e9coute (UDP) : pi@piras:~ $ ss -lun State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 127.0.0.1:53 0.0.0.0:* UNCONN 0 0 0.0.0.0:68 0.0.0.0:* UNCONN 0 0 0.0.0.0:5353 0.0.0.0:* UNCONN 0 0 [::1]:53 *:* UNCONN 0 0 *:59578 *:* UNCONN 0 0 *:5353 *:* pi@piras:~ $","title":"Les services"},{"location":"Tutoriels/tutoraspi/Firewall/#etat-des-lieux","text":"V\u00e9rifions le fonctionnement de Firewalld. Souvenez-vous qu'il \u00e9tait configur\u00e9 pour fonctionner avec Iptables. V\u00e9rifions les r\u00e8gles \u00e9tablies : pi@piras:~ $ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere INPUT_direct all -- anywhere anywhere INPUT_ZONES_SOURCE all -- anywhere anywhere INPUT_ZONES all -- anywhere anywhere DROP all -- anywhere anywhere ctstate INVALID REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere FORWARD_direct all -- anywhere anywhere FORWARD_IN_ZONES_SOURCE all -- anywhere anywhere FORWARD_IN_ZONES all -- anywhere anywhere FORWARD_OUT_ZONES_SOURCE all -- anywhere anywhere FORWARD_OUT_ZONES all -- anywhere anywhere DROP all -- anywhere anywhere ctstate INVALID REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination OUTPUT_direct all -- anywhere anywhere Chain INPUT_direct (1 references) target prot opt source destination Chain INPUT_ZONES_SOURCE (1 references) target prot opt source destination Chain INPUT_ZONES (1 references) target prot opt source destination IN_public all -- anywhere anywhere [goto] IN_public all -- anywhere anywhere [goto] Chain FORWARD_direct (1 references) target prot opt source destination Chain FORWARD_IN_ZONES_SOURCE (1 references) target prot opt source destination Chain FORWARD_IN_ZONES (1 references) target prot opt source destination FWDI_public all -- anywhere anywhere [goto] FWDI_public all -- anywhere anywhere [goto] Chain FORWARD_OUT_ZONES_SOURCE (1 references) target prot opt source destination Chain FORWARD_OUT_ZONES (1 references) target prot opt source destination FWDO_public all -- anywhere anywhere [goto] FWDO_public all -- anywhere anywhere [goto] Chain OUTPUT_direct (1 references) target prot opt source destination Chain IN_public (2 references) target prot opt source destination IN_public_log all -- anywhere anywhere IN_public_deny all -- anywhere anywhere IN_public_allow all -- anywhere anywhere ACCEPT icmp -- anywhere anywhere Chain IN_public_log (1 references) target prot opt source destination Chain IN_public_deny (1 references) target prot opt source destination Chain IN_public_allow (1 references) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate NEW,UNTRACKED Chain FWDI_public (2 references) target prot opt source destination FWDI_public_log all -- anywhere anywhere FWDI_public_deny all -- anywhere anywhere FWDI_public_allow all -- anywhere anywhere ACCEPT icmp -- anywhere anywhere Chain FWDI_public_log (1 references) target prot opt source destination Chain FWDI_public_deny (1 references) target prot opt source destination Chain FWDI_public_allow (1 references) target prot opt source destination Chain FWDO_public (2 references) target prot opt source destination FWDO_public_log all -- anywhere anywhere FWDO_public_deny all -- anywhere anywhere FWDO_public_allow all -- anywhere anywhere Chain FWDO_public_log (1 references) target prot opt source destination Chain FWDO_public_deny (1 references) target prot opt source destination Chain FWDO_public_allow (1 references) target prot opt source destination pi@piras:~ $ Les r\u00e8gles Iptables ont bien \u00e9t\u00e9 configur\u00e9es par Firewalld. Apr\u00e8s reboot, nous voyons que rien n'a \u00e9t\u00e9 conserv\u00e9 ! Il va falloir investiguer ... Bien : voil\u00e0 la proc\u00e9dure \u00e0 suivre : sudo firewall-cmd --permanent --zone=public --change-interface=eth0 Permet de changer de fa\u00e7on permanente l'interface associ\u00e9e \u00e0 la zone public . Test : pi@piras:~ $ sudo firewall-cmd --permanent --zone=public --change-interface=eth0 success pi@piras:~ $ sudo cat /etc/firewalld/zones/public.xml <?xml version=\"1.0\" encoding=\"utf-8\"?> <zone> <short>Public</short> <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <interface name=\"eth0\"/> <service name=\"ssh\"/> <service name=\"dhcpv6-client\"/> </zone> pi@piras:~ $ Nous voyons que firewalld a cr\u00e9\u00e9 des r\u00e9pertoires et un fichier dans le r\u00e9pertoire **zones** dont le contenu correspond \u00e0 ce que nous avons demand\u00e9. pi@piras:~ $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: pi@piras:~ $ Test apr\u00e8s red\u00e9marrage : Cette fois-ci, \u00e7a marche ! (Yes !) pi@piras:~ $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: pi@piras:~ $ Nous verrons ensuite comment ajouter des r\u00e8gles suivant les services que nous voudrons d\u00e9ployer.","title":"\u00c9tat des lieux"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/","text":"Installation d'un serveur de courrier basique Debian installe par d\u00e9faut exim4 . Nous allons le remplacer par postfix (que nous \u00e9tendrons par la suite pour obtenir un serveur de mail complet) Il faut penser \u00e0 ouvrir les ports 25 en IPV4 et IPV6 avec firewalld . Installation pi@raspberrypi:~ $ sudo apt install postfix Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Les paquets suivants ont \u00e9t\u00e9 install\u00e9s automatiquement et ne sont plus n\u00e9cessaires : libgnutls-dane0 libunbound8 Veuillez utiliser \u00ab sudo apt autoremove \u00bb pour les supprimer. Les paquets suppl\u00e9mentaires suivants seront install\u00e9s : ssl-cert Paquets sugg\u00e9r\u00e9s : procmail postfix-mysql postfix-pgsql postfix-ldap postfix-pcre postfix-lmdb postfix-sqlite sasl2-bin | dovecot-common postfix-cdb ufw postfix-doc openssl-blacklist Les paquets suivants seront ENLEV\u00c9S : exim4-base exim4-config exim4-daemon-light Les NOUVEAUX paquets suivants seront install\u00e9s : postfix ssl-cert 0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 3 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 1\u202f423 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 0 o d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de :1 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf postfix armhf 3.4.14-0+deb10u1 [1\u202f402 kB] R\u00e9ception de :2 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf ssl-cert all 1.0.39 [20,8 kB] 1\u202f423 ko r\u00e9ceptionn\u00e9s en 3s (524 ko/s) Pr\u00e9configuration des paquets... dpkg: exim4-daemon-light : probl\u00e8me de d\u00e9pendance, mais suppression comme demand\u00e9 : logwatch d\u00e9pend de default-mta | mail-transport-agent ; cependant : Le paquet default-mta n'est pas install\u00e9. Le paquet exim4-daemon-light qui fournit default-mta doit \u00eatre supprim\u00e9. Le paquet mail-transport-agent n'est pas install\u00e9. Le paquet exim4-daemon-light qui fournit mail-transport-agent doit \u00eatre supprim\u00e9. logwatch d\u00e9pend de default-mta | mail-transport-agent ; cependant : Le paquet default-mta n'est pas install\u00e9. Le paquet exim4-daemon-light qui fournit default-mta doit \u00eatre supprim\u00e9. Le paquet mail-transport-agent n'est pas install\u00e9. Le paquet exim4-daemon-light qui fournit mail-transport-agent doit \u00eatre supprim\u00e9. (Lecture de la base de donn\u00e9es... 46982 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Suppression de exim4-daemon-light (4.92-8+deb10u4) ... dpkg: exim4-config : probl\u00e8me de d\u00e9pendance, mais suppression comme demand\u00e9 : exim4-base d\u00e9pend de exim4-config (>= 4.82) | exim4-config-2 ; cependant : Le paquet exim4-config doit \u00eatre supprim\u00e9. Le paquet exim4-config-2 n'est pas install\u00e9. Le paquet exim4-config qui fournit exim4-config-2 doit \u00eatre supprim\u00e9. exim4-base d\u00e9pend de exim4-config (>= 4.82) | exim4-config-2 ; cependant : Le paquet exim4-config doit \u00eatre supprim\u00e9. Le paquet exim4-config-2 n'est pas install\u00e9. Le paquet exim4-config qui fournit exim4-config-2 doit \u00eatre supprim\u00e9. Suppression de exim4-config (4.92-8+deb10u4) ... S\u00e9lection du paquet postfix pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 46922 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../postfix_3.4.14-0+deb10u1_armhf.deb ... D\u00e9paquetage de postfix (3.4.14-0+deb10u1) ... (Lecture de la base de donn\u00e9es... 47112 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Suppression de exim4-base (4.92-8+deb10u4) ... S\u00e9lection du paquet ssl-cert pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 47038 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../ssl-cert_1.0.39_all.deb ... D\u00e9paquetage de ssl-cert (1.0.39) ... Param\u00e9trage de ssl-cert (1.0.39) ... Param\u00e9trage de postfix (3.4.14-0+deb10u1) ... Ajout du groupe \u00ab postfix \u00bb (GID 118)... Fait. Ajout de l'utilisateur syst\u00e8me \u00ab postfix \u00bb (UID 112) ... Ajout du nouvel utilisateur \u00ab postfix \u00bb (UID 112) avec pour groupe d'appartenance \u00ab postfix \u00bb ... Le r\u00e9pertoire personnel \u00ab /var/spool/postfix \u00bb n'a pas \u00e9t\u00e9 cr\u00e9\u00e9. Creating /etc/postfix/dynamicmaps.cf Ajout du groupe \u00ab postdrop \u00bb (GID 119)... Fait. setting myhostname: raspberrypi setting alias maps setting alias database changing /etc/mailname to yojik.net setting myorigin setting destinations: $myhostname, yojik.net, raspberrypi, localhost.localdomain, localhost setting relayhost: setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 setting mailbox_size_limit: 0 setting recipient_delimiter: + setting inet_interfaces: all setting inet_protocols: all WARNING: /etc/aliases exists, but does not have a root alias. Postfix (main.cf) is now set up with a default configuration. If you need to make changes, edit /etc/postfix/main.cf (and others) as needed. To view Postfix configuration values, see postconf(1). After modifying main.cf, be sure to run 'service postfix reload'. Running newaliases Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service \u2192 /lib/systemd/system/postfix.service. Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (241-7~deb10u6+rpi1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.8.5-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour rsyslog (8.1901.0-1) ... pi@raspberrypi:~ $ Suppression compl\u00e8te de exim4 On supprime compl\u00e8tement exim4 , fichiers de configuration inclus. pi@raspberrypi:~ $ sudo apt remove --purge exim4* Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Note : s\u00e9lection de exim4-base pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-config-2 pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-doc-info pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-daemon-light pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-daemon-heavy pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-daemon-custom pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-config pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-doc-html pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-localscanapi-2.0 pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-dev pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4 pour l'expression rationnelle \u00ab exim4* \u00bb Le paquet \u00ab exim4-daemon-custom \u00bb n'est pas install\u00e9, et ne peut donc \u00eatre supprim\u00e9 Note : s\u00e9lection de \u00ab exim4-config \u00bb au lieu de \u00ab exim4-config-2 \u00bb Le paquet \u00ab exim4 \u00bb n'est pas install\u00e9, et ne peut donc \u00eatre supprim\u00e9 Le paquet \u00ab exim4-daemon-heavy \u00bb n'est pas install\u00e9, et ne peut donc \u00eatre supprim\u00e9 Le paquet \u00ab exim4-dev \u00bb n'est pas install\u00e9, et ne peut donc \u00eatre supprim\u00e9 Le paquet \u00ab exim4-doc-html \u00bb n'est pas install\u00e9, et ne peut donc \u00eatre supprim\u00e9 Le paquet \u00ab exim4-doc-info \u00bb n'est pas install\u00e9, et ne peut donc \u00eatre supprim\u00e9 Les paquets suivants ont \u00e9t\u00e9 install\u00e9s automatiquement et ne sont plus n\u00e9cessaires : libgnutls-dane0 libunbound8 Veuillez utiliser \u00ab sudo apt autoremove \u00bb pour les supprimer. Les paquets suivants seront ENLEV\u00c9S : exim4-base* exim4-config* exim4-daemon-light* 0 mis \u00e0 jour, 0 nouvellement install\u00e9s, 3 \u00e0 enlever et 0 non mis \u00e0 jour. Apr\u00e8s cette op\u00e9ration, 0 o d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o (Lecture de la base de donn\u00e9es... 47047 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Purge des fichiers de configuration de exim4-base (4.92-8+deb10u4) ... Purge des fichiers de configuration de exim4-config (4.92-8+deb10u4) ... dpkg-statoverride: avertissement: pas de d\u00e9rogation (\u00ab override \u00bb) pr\u00e9sente Purge des fichiers de configuration de exim4-daemon-light (4.92-8+deb10u4) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (241-7~deb10u6+rpi1) ... pi@raspberrypi:~ $ Ouverture des ports 25 Ajout du protocole smtp \u00e0 notre zone. Liste des services disponibles pi@piras:~ $ sudo firewall-cmd --get-services RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server pi@piras:~ $ Le protocole qui nous int\u00e9resse est : smtp Ajout du service smtp pi@piras:~ $ sudo firewall-cmd --permanent --zone=public --add-service=smtp success pi@piras:~ $ Il faut recharger firewalld pour que ce soit pris en compte. pi@piras:~ $ sudo systemctl restart firewalld pi@piras:~ $ Dans mon cas, j'ai \u00e9t\u00e9 oblig\u00e9 de red\u00e9marrer le serveur pour que ce soit pris en compte: pas d'explication ... mais comme \u00e7a, \u00e7a marche! V\u00e9rification pi@piras:~ $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client smtp ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: pi@piras:~ $ Installation des utilitaire courriers pi@raspberrypi:~ $ sudo apt install mailutils Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait mailutils est d\u00e9j\u00e0 la version la plus r\u00e9cente (1:3.5-4). mailutils pass\u00e9 en \u00ab install\u00e9 manuellement \u00bb. Les paquets suivants ont \u00e9t\u00e9 install\u00e9s automatiquement et ne sont plus n\u00e9cessaires : libgnutls-dane0 libunbound8 Veuillez utiliser \u00ab sudo apt autoremove \u00bb pour les supprimer. 0 mis \u00e0 jour, 0 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. pi@raspberrypi:~ $ Ils \u00e9taient d\u00e9j\u00e0 install\u00e9s. Test d'envoi de courriers entre comptes internes. pi-> root Les commandes suivantes permettent de : envoyer un message \u00e0 root (Essai 1) pi@raspberrypi:~ $ mail root Cc: Subject: Essai1 Essai 1 . pi@raspberrypi:~ $ passer root pi@raspberrypi:~ $ sudo /bin/bash root@raspberrypi:/home/pi# lancer mutt root@raspberrypi:/home/pi# mutt 1 gard\u00e9(s), 0 effac\u00e9(s). root@raspberrypi:/home/pi# root -> pi root@raspberrypi:/home/pi# mail pi Cc: Subject: Essai 2 . root@raspberrypi:/home/pi# exit Vous avez du nouveau courrier dans /var/mail/pi pi@raspberrypi:~ $ mutt 3 gard\u00e9(s), 0 effac\u00e9(s). pi@raspberrypi:~ $ Nous avions 2 messages avant: le nouveau message est bien arriv\u00e9 ! Configuration de postfix Il nous faut configurer postfix pour permettre l'envoi de courriers \u00e0 l'ext\u00e9rieur et en recevoir de l'ext\u00e9rieur. Pour cela, il nous faut modifier le fichier /etc/postfix/main.cf Modifiez la ligne mydestination pour qu'elle ressemble \u00e0 ce qui suit : mydestination = $myhostname, yojik.net, atom.yojik.net, localhost.yojik.net, localhost et relancez postfix avec la commande suivante : sudo service postfix restart Courriers sortants Envoi d'un message sur mon compte de messagerie gmail (oui, un envoi sur mon compte normal ne fonctionne pas d\u00fb \u00e0 sa configuration): pi@piras:~$ echo \"Et voil\u00e0 un petit message\" | mail -s \"test du courrier sortant\" ericounet26200@gmail.com Le message est bien re\u00e7u et dans les courriers ind\u00e9sirables, bien entendu (pas de dkim, spf, dnnssec, etc.) Courriers entrants Envoi d'un message \u00e0 partir de mon adresse de courrier normale : Message bien re\u00e7u (apr\u00e8s mise \u00e0 jour de mon serveur DNS). Am\u00e9lioration de la gestion du courrier Nous allons transf\u00e9rer les mails destin\u00e9s \u00e0 root vers l'utilisateur pi . Ainsi que d'autres adresses de courrier standards. Pour cela, nous allons modifier le fichier /etc/aliases , le compiler pour \u00eatre digeste par postfix et relancer postfix . 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: pi 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. pi@piras:~ $ sudo newaliases pi@piras:~ $ On relance postfix : pi@piras:~ $ sudo systemctl restart postfix pi@piras:~ $ Et on teste (envoi d'un courrier \u00e0 root@piras.yojik.net) Et voil\u00e0, notre serveur de courrier est fonctionnel. Protection par Fail2ban Nous devons ajouter la surveillance du mail par fail2ban . Editons le fichier /etc/fail2ban/jail.d/defaults-debian.conf pour y ajouter la surveillance de postfix (port smtp : 25.) Nous prenons l'exemple fourni dans /etc/fail2ban/jail.conf et ne gardons que le port 25. Voil\u00e0 la partie modifi\u00e9e \u00e0 ajouter : [postfix] mode = more port = smtp logpath = %(postfix_log)s backend = %(postfix_backend)s Relan\u00e7ons le service pour que nos modifications soient prises en compte: pi@piras:~ $ sudo systemctl reload fail2ban pi@piras:~ $","title":"Installation d'un serveur de courriers basique"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#installation-dun-serveur-de-courrier-basique","text":"Debian installe par d\u00e9faut exim4 . Nous allons le remplacer par postfix (que nous \u00e9tendrons par la suite pour obtenir un serveur de mail complet) Il faut penser \u00e0 ouvrir les ports 25 en IPV4 et IPV6 avec firewalld .","title":"Installation d'un serveur de courrier basique"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#installation","text":"pi@raspberrypi:~ $ sudo apt install postfix Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Les paquets suivants ont \u00e9t\u00e9 install\u00e9s automatiquement et ne sont plus n\u00e9cessaires : libgnutls-dane0 libunbound8 Veuillez utiliser \u00ab sudo apt autoremove \u00bb pour les supprimer. Les paquets suppl\u00e9mentaires suivants seront install\u00e9s : ssl-cert Paquets sugg\u00e9r\u00e9s : procmail postfix-mysql postfix-pgsql postfix-ldap postfix-pcre postfix-lmdb postfix-sqlite sasl2-bin | dovecot-common postfix-cdb ufw postfix-doc openssl-blacklist Les paquets suivants seront ENLEV\u00c9S : exim4-base exim4-config exim4-daemon-light Les NOUVEAUX paquets suivants seront install\u00e9s : postfix ssl-cert 0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 3 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 1\u202f423 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 0 o d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de :1 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf postfix armhf 3.4.14-0+deb10u1 [1\u202f402 kB] R\u00e9ception de :2 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf ssl-cert all 1.0.39 [20,8 kB] 1\u202f423 ko r\u00e9ceptionn\u00e9s en 3s (524 ko/s) Pr\u00e9configuration des paquets... dpkg: exim4-daemon-light : probl\u00e8me de d\u00e9pendance, mais suppression comme demand\u00e9 : logwatch d\u00e9pend de default-mta | mail-transport-agent ; cependant : Le paquet default-mta n'est pas install\u00e9. Le paquet exim4-daemon-light qui fournit default-mta doit \u00eatre supprim\u00e9. Le paquet mail-transport-agent n'est pas install\u00e9. Le paquet exim4-daemon-light qui fournit mail-transport-agent doit \u00eatre supprim\u00e9. logwatch d\u00e9pend de default-mta | mail-transport-agent ; cependant : Le paquet default-mta n'est pas install\u00e9. Le paquet exim4-daemon-light qui fournit default-mta doit \u00eatre supprim\u00e9. Le paquet mail-transport-agent n'est pas install\u00e9. Le paquet exim4-daemon-light qui fournit mail-transport-agent doit \u00eatre supprim\u00e9. (Lecture de la base de donn\u00e9es... 46982 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Suppression de exim4-daemon-light (4.92-8+deb10u4) ... dpkg: exim4-config : probl\u00e8me de d\u00e9pendance, mais suppression comme demand\u00e9 : exim4-base d\u00e9pend de exim4-config (>= 4.82) | exim4-config-2 ; cependant : Le paquet exim4-config doit \u00eatre supprim\u00e9. Le paquet exim4-config-2 n'est pas install\u00e9. Le paquet exim4-config qui fournit exim4-config-2 doit \u00eatre supprim\u00e9. exim4-base d\u00e9pend de exim4-config (>= 4.82) | exim4-config-2 ; cependant : Le paquet exim4-config doit \u00eatre supprim\u00e9. Le paquet exim4-config-2 n'est pas install\u00e9. Le paquet exim4-config qui fournit exim4-config-2 doit \u00eatre supprim\u00e9. Suppression de exim4-config (4.92-8+deb10u4) ... S\u00e9lection du paquet postfix pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 46922 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../postfix_3.4.14-0+deb10u1_armhf.deb ... D\u00e9paquetage de postfix (3.4.14-0+deb10u1) ... (Lecture de la base de donn\u00e9es... 47112 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Suppression de exim4-base (4.92-8+deb10u4) ... S\u00e9lection du paquet ssl-cert pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 47038 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../ssl-cert_1.0.39_all.deb ... D\u00e9paquetage de ssl-cert (1.0.39) ... Param\u00e9trage de ssl-cert (1.0.39) ... Param\u00e9trage de postfix (3.4.14-0+deb10u1) ... Ajout du groupe \u00ab postfix \u00bb (GID 118)... Fait. Ajout de l'utilisateur syst\u00e8me \u00ab postfix \u00bb (UID 112) ... Ajout du nouvel utilisateur \u00ab postfix \u00bb (UID 112) avec pour groupe d'appartenance \u00ab postfix \u00bb ... Le r\u00e9pertoire personnel \u00ab /var/spool/postfix \u00bb n'a pas \u00e9t\u00e9 cr\u00e9\u00e9. Creating /etc/postfix/dynamicmaps.cf Ajout du groupe \u00ab postdrop \u00bb (GID 119)... Fait. setting myhostname: raspberrypi setting alias maps setting alias database changing /etc/mailname to yojik.net setting myorigin setting destinations: $myhostname, yojik.net, raspberrypi, localhost.localdomain, localhost setting relayhost: setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 setting mailbox_size_limit: 0 setting recipient_delimiter: + setting inet_interfaces: all setting inet_protocols: all WARNING: /etc/aliases exists, but does not have a root alias. Postfix (main.cf) is now set up with a default configuration. If you need to make changes, edit /etc/postfix/main.cf (and others) as needed. To view Postfix configuration values, see postconf(1). After modifying main.cf, be sure to run 'service postfix reload'. Running newaliases Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service \u2192 /lib/systemd/system/postfix.service. Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (241-7~deb10u6+rpi1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.8.5-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour rsyslog (8.1901.0-1) ... pi@raspberrypi:~ $","title":"Installation"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#suppression-complete-de-exim4","text":"On supprime compl\u00e8tement exim4 , fichiers de configuration inclus. pi@raspberrypi:~ $ sudo apt remove --purge exim4* Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Note : s\u00e9lection de exim4-base pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-config-2 pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-doc-info pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-daemon-light pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-daemon-heavy pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-daemon-custom pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-config pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-doc-html pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-localscanapi-2.0 pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4-dev pour l'expression rationnelle \u00ab exim4* \u00bb Note : s\u00e9lection de exim4 pour l'expression rationnelle \u00ab exim4* \u00bb Le paquet \u00ab exim4-daemon-custom \u00bb n'est pas install\u00e9, et ne peut donc \u00eatre supprim\u00e9 Note : s\u00e9lection de \u00ab exim4-config \u00bb au lieu de \u00ab exim4-config-2 \u00bb Le paquet \u00ab exim4 \u00bb n'est pas install\u00e9, et ne peut donc \u00eatre supprim\u00e9 Le paquet \u00ab exim4-daemon-heavy \u00bb n'est pas install\u00e9, et ne peut donc \u00eatre supprim\u00e9 Le paquet \u00ab exim4-dev \u00bb n'est pas install\u00e9, et ne peut donc \u00eatre supprim\u00e9 Le paquet \u00ab exim4-doc-html \u00bb n'est pas install\u00e9, et ne peut donc \u00eatre supprim\u00e9 Le paquet \u00ab exim4-doc-info \u00bb n'est pas install\u00e9, et ne peut donc \u00eatre supprim\u00e9 Les paquets suivants ont \u00e9t\u00e9 install\u00e9s automatiquement et ne sont plus n\u00e9cessaires : libgnutls-dane0 libunbound8 Veuillez utiliser \u00ab sudo apt autoremove \u00bb pour les supprimer. Les paquets suivants seront ENLEV\u00c9S : exim4-base* exim4-config* exim4-daemon-light* 0 mis \u00e0 jour, 0 nouvellement install\u00e9s, 3 \u00e0 enlever et 0 non mis \u00e0 jour. Apr\u00e8s cette op\u00e9ration, 0 o d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o (Lecture de la base de donn\u00e9es... 47047 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Purge des fichiers de configuration de exim4-base (4.92-8+deb10u4) ... Purge des fichiers de configuration de exim4-config (4.92-8+deb10u4) ... dpkg-statoverride: avertissement: pas de d\u00e9rogation (\u00ab override \u00bb) pr\u00e9sente Purge des fichiers de configuration de exim4-daemon-light (4.92-8+deb10u4) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (241-7~deb10u6+rpi1) ... pi@raspberrypi:~ $","title":"Suppression compl\u00e8te de exim4"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#ouverture-des-ports-25","text":"Ajout du protocole smtp \u00e0 notre zone.","title":"Ouverture des ports 25"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#liste-des-services-disponibles","text":"pi@piras:~ $ sudo firewall-cmd --get-services RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server pi@piras:~ $ Le protocole qui nous int\u00e9resse est : smtp","title":"Liste des services disponibles"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#ajout-du-service-smtp","text":"pi@piras:~ $ sudo firewall-cmd --permanent --zone=public --add-service=smtp success pi@piras:~ $ Il faut recharger firewalld pour que ce soit pris en compte. pi@piras:~ $ sudo systemctl restart firewalld pi@piras:~ $ Dans mon cas, j'ai \u00e9t\u00e9 oblig\u00e9 de red\u00e9marrer le serveur pour que ce soit pris en compte: pas d'explication ... mais comme \u00e7a, \u00e7a marche!","title":"Ajout du service smtp"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#verification","text":"pi@piras:~ $ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client smtp ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: pi@piras:~ $","title":"V\u00e9rification"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#installation-des-utilitaire-courriers","text":"pi@raspberrypi:~ $ sudo apt install mailutils Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait mailutils est d\u00e9j\u00e0 la version la plus r\u00e9cente (1:3.5-4). mailutils pass\u00e9 en \u00ab install\u00e9 manuellement \u00bb. Les paquets suivants ont \u00e9t\u00e9 install\u00e9s automatiquement et ne sont plus n\u00e9cessaires : libgnutls-dane0 libunbound8 Veuillez utiliser \u00ab sudo apt autoremove \u00bb pour les supprimer. 0 mis \u00e0 jour, 0 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. pi@raspberrypi:~ $ Ils \u00e9taient d\u00e9j\u00e0 install\u00e9s.","title":"Installation des utilitaire courriers"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#test-denvoi-de-courriers-entre-comptes-internes","text":"pi-> root Les commandes suivantes permettent de : envoyer un message \u00e0 root (Essai 1) pi@raspberrypi:~ $ mail root Cc: Subject: Essai1 Essai 1 . pi@raspberrypi:~ $ passer root pi@raspberrypi:~ $ sudo /bin/bash root@raspberrypi:/home/pi# lancer mutt root@raspberrypi:/home/pi# mutt 1 gard\u00e9(s), 0 effac\u00e9(s). root@raspberrypi:/home/pi# root -> pi root@raspberrypi:/home/pi# mail pi Cc: Subject: Essai 2 . root@raspberrypi:/home/pi# exit Vous avez du nouveau courrier dans /var/mail/pi pi@raspberrypi:~ $ mutt 3 gard\u00e9(s), 0 effac\u00e9(s). pi@raspberrypi:~ $ Nous avions 2 messages avant: le nouveau message est bien arriv\u00e9 !","title":"Test d'envoi de courriers entre comptes internes."},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#configuration-de-postfix","text":"Il nous faut configurer postfix pour permettre l'envoi de courriers \u00e0 l'ext\u00e9rieur et en recevoir de l'ext\u00e9rieur. Pour cela, il nous faut modifier le fichier /etc/postfix/main.cf Modifiez la ligne mydestination pour qu'elle ressemble \u00e0 ce qui suit : mydestination = $myhostname, yojik.net, atom.yojik.net, localhost.yojik.net, localhost et relancez postfix avec la commande suivante : sudo service postfix restart","title":"Configuration de postfix"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#courriers-sortants","text":"Envoi d'un message sur mon compte de messagerie gmail (oui, un envoi sur mon compte normal ne fonctionne pas d\u00fb \u00e0 sa configuration): pi@piras:~$ echo \"Et voil\u00e0 un petit message\" | mail -s \"test du courrier sortant\" ericounet26200@gmail.com Le message est bien re\u00e7u et dans les courriers ind\u00e9sirables, bien entendu (pas de dkim, spf, dnnssec, etc.)","title":"Courriers sortants"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#courriers-entrants","text":"Envoi d'un message \u00e0 partir de mon adresse de courrier normale : Message bien re\u00e7u (apr\u00e8s mise \u00e0 jour de mon serveur DNS).","title":"Courriers entrants"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#amelioration-de-la-gestion-du-courrier","text":"Nous allons transf\u00e9rer les mails destin\u00e9s \u00e0 root vers l'utilisateur pi . Ainsi que d'autres adresses de courrier standards. Pour cela, nous allons modifier le fichier /etc/aliases , le compiler pour \u00eatre digeste par postfix et relancer postfix . 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: pi 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. pi@piras:~ $ sudo newaliases pi@piras:~ $ On relance postfix : pi@piras:~ $ sudo systemctl restart postfix pi@piras:~ $ Et on teste (envoi d'un courrier \u00e0 root@piras.yojik.net) Et voil\u00e0, notre serveur de courrier est fonctionnel.","title":"Am\u00e9lioration de la gestion du courrier"},{"location":"Tutoriels/tutoraspi/Installation-courrier-basique/#protection-par-fail2ban","text":"Nous devons ajouter la surveillance du mail par fail2ban . Editons le fichier /etc/fail2ban/jail.d/defaults-debian.conf pour y ajouter la surveillance de postfix (port smtp : 25.) Nous prenons l'exemple fourni dans /etc/fail2ban/jail.conf et ne gardons que le port 25. Voil\u00e0 la partie modifi\u00e9e \u00e0 ajouter : [postfix] mode = more port = smtp logpath = %(postfix_log)s backend = %(postfix_backend)s Relan\u00e7ons le service pour que nos modifications soient prises en compte: pi@piras:~ $ sudo systemctl reload fail2ban pi@piras:~ $","title":"Protection par Fail2ban"},{"location":"Tutoriels/tutoraspi/Installation-de-base/","text":"Installation de base Copie de l'image sur la carte SD Je vais utiliser la distribution \"Raspbian\", d\u00e9riv\u00e9e d'un syst\u00e8me Debian classique. Elle a chang\u00e9 r\u00e9cemment de nom ... j'esp\u00e8re qu'ils ne vont pas abandonner le syst\u00e8me de paquetage de Debian. Vous pouvez r\u00e9cup\u00e9rer l'image directement sur RaspberryPi.org . Rep\u00e9rez ensuite la r\u00e9f\u00e9rence \u00e0 votre carte microSD avec la commande suivante (dans un terminal) ; voil\u00e0 un exemple de sortie terminal (la carte microSD a \u00e9t\u00e9 plac\u00e9e dans un adaptateur usb) : eric@aldebaran:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1,8T 0 disk \u251c\u2500sda1 8:1 0 1,4T 0 part /mnt/Busterhome \u2514\u2500sda2 8:2 0 466G 0 part /home sdb 8:16 0 223,6G 0 disk \u251c\u2500sdb1 8:17 0 500M 0 part /boot/efi \u251c\u2500sdb2 8:18 0 1000M 0 part /boot \u251c\u2500sdb3 8:19 0 97,7G 0 part /mnt/Busterroot \u251c\u2500sdb4 8:20 0 97,7G 0 part / \u2514\u2500sdb5 8:21 0 26,8G 0 part [SWAP] sdc 8:32 0 3,6T 0 disk \u2514\u2500sdc1 8:33 0 3,6T 0 part \u2514\u2500md0 9:0 0 3,6T 0 raid1 /mnt/Raid sdd 8:48 0 3,6T 0 disk \u2514\u2500sdd1 8:49 0 3,6T 0 part \u2514\u2500md0 9:0 0 3,6T 0 raid1 /mnt/Raid sde 8:64 1 1,8G 0 disk /media/eric/9E40-CF6B eric@aldebaran:~$ La carte microSD est r\u00e9f\u00e9renc\u00e9e \u00e0 la derni\u00e8re ligne : sde Un autre exemple avec la carte microSD plac\u00e9e dans directement dans un adaptateur int\u00e9gr\u00e9 dans un portable. La commande pour copier l'image Raspbian sur la carte microSD est la suivante : eric@aldebaran:~$ dd if=2020-08-20-raspios-buster-armhf-lite.img of=/dev/sde bs=4096 C'est une commande que j'utilise syst\u00e9matiquement avec le param\u00e8tre bs mis \u00e0 4096. Je ne me souviens plus pourquoi il m'avait fallu mettre ce param\u00e8tre, mais cela fonctionne bien avec (et moins bien sans.) Une autre version de cette commande d\u00e9couverte avec (FreedomBox)[https://www.freedombox.org] est la suivante : (test avec la derni\u00e8re version de RaspiOS ... changement de nom par rapport \u00e0 Raspbian, car contient des \"trucs\" pas vraiment libres comme les d\u00e9p\u00f4ts de Microsoft (VsCode) :( ) $ sudo dd bs=1M if=2021-01-11-raspios-buster-armhf-lite.img of=/dev/sdd conv=fdatasync status=progress 1816133632 octets (1,8 GB, 1,7 GiB) copi\u00e9s, 1 s, 1,8 GB/s 1776+0 enregistrements lus 1776+0 enregistrements \u00e9crits 1862270976 octets (1,9 GB, 1,7 GiB) copi\u00e9s, 167,27 s, 11,1 MB/s eric@aldebaran:~$ Une autre commande possible est (trouv\u00e9e \u00e9galement sur le site de FreedomBox): $ cat 2021-01-11-raspios-buster-armhf-lite.img > /dev/sdd ; sync Bien s\u00fbr, changez le p\u00e9riph\u00e9rique suivant votre cas particulier : le mien, ici, est /dev/sdd . Voyez avec la commande lsblk pour d\u00e9couvrir la votre: elle change avec les p\u00e9riph\u00e9riques d\u00e9j\u00e0 branch\u00e9s sur votre ordinateur. (chez moi, la premi\u00e8re fois, c'\u00e9tait /dev/sde , puis aujourd'hui, /dev/sdd ) Autorisation de l'acc\u00e8s en ssh Pour pouvoir se connecter en ssh , il faut cr\u00e9er un fichier vide de nom ssh dans le r\u00e9pertoire /boot . voici la liste des commandes n\u00e9cessaires : cd /media/eric/9E40-CF6B/boot touch ssh /media/eric/9E40-CF6B/boot est le point de montage de la carte microsd sur le desktop. Une fois cela fait, vous pouvez d\u00e9monter votre carte microSD et la placer dans votre raspi.","title":"Installation de base"},{"location":"Tutoriels/tutoraspi/Installation-de-base/#installation-de-base","text":"","title":"Installation de base"},{"location":"Tutoriels/tutoraspi/Installation-de-base/#copie-de-limage-sur-la-carte-sd","text":"Je vais utiliser la distribution \"Raspbian\", d\u00e9riv\u00e9e d'un syst\u00e8me Debian classique. Elle a chang\u00e9 r\u00e9cemment de nom ... j'esp\u00e8re qu'ils ne vont pas abandonner le syst\u00e8me de paquetage de Debian. Vous pouvez r\u00e9cup\u00e9rer l'image directement sur RaspberryPi.org . Rep\u00e9rez ensuite la r\u00e9f\u00e9rence \u00e0 votre carte microSD avec la commande suivante (dans un terminal) ; voil\u00e0 un exemple de sortie terminal (la carte microSD a \u00e9t\u00e9 plac\u00e9e dans un adaptateur usb) : eric@aldebaran:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1,8T 0 disk \u251c\u2500sda1 8:1 0 1,4T 0 part /mnt/Busterhome \u2514\u2500sda2 8:2 0 466G 0 part /home sdb 8:16 0 223,6G 0 disk \u251c\u2500sdb1 8:17 0 500M 0 part /boot/efi \u251c\u2500sdb2 8:18 0 1000M 0 part /boot \u251c\u2500sdb3 8:19 0 97,7G 0 part /mnt/Busterroot \u251c\u2500sdb4 8:20 0 97,7G 0 part / \u2514\u2500sdb5 8:21 0 26,8G 0 part [SWAP] sdc 8:32 0 3,6T 0 disk \u2514\u2500sdc1 8:33 0 3,6T 0 part \u2514\u2500md0 9:0 0 3,6T 0 raid1 /mnt/Raid sdd 8:48 0 3,6T 0 disk \u2514\u2500sdd1 8:49 0 3,6T 0 part \u2514\u2500md0 9:0 0 3,6T 0 raid1 /mnt/Raid sde 8:64 1 1,8G 0 disk /media/eric/9E40-CF6B eric@aldebaran:~$ La carte microSD est r\u00e9f\u00e9renc\u00e9e \u00e0 la derni\u00e8re ligne : sde Un autre exemple avec la carte microSD plac\u00e9e dans directement dans un adaptateur int\u00e9gr\u00e9 dans un portable. La commande pour copier l'image Raspbian sur la carte microSD est la suivante : eric@aldebaran:~$ dd if=2020-08-20-raspios-buster-armhf-lite.img of=/dev/sde bs=4096 C'est une commande que j'utilise syst\u00e9matiquement avec le param\u00e8tre bs mis \u00e0 4096. Je ne me souviens plus pourquoi il m'avait fallu mettre ce param\u00e8tre, mais cela fonctionne bien avec (et moins bien sans.) Une autre version de cette commande d\u00e9couverte avec (FreedomBox)[https://www.freedombox.org] est la suivante : (test avec la derni\u00e8re version de RaspiOS ... changement de nom par rapport \u00e0 Raspbian, car contient des \"trucs\" pas vraiment libres comme les d\u00e9p\u00f4ts de Microsoft (VsCode) :( ) $ sudo dd bs=1M if=2021-01-11-raspios-buster-armhf-lite.img of=/dev/sdd conv=fdatasync status=progress 1816133632 octets (1,8 GB, 1,7 GiB) copi\u00e9s, 1 s, 1,8 GB/s 1776+0 enregistrements lus 1776+0 enregistrements \u00e9crits 1862270976 octets (1,9 GB, 1,7 GiB) copi\u00e9s, 167,27 s, 11,1 MB/s eric@aldebaran:~$ Une autre commande possible est (trouv\u00e9e \u00e9galement sur le site de FreedomBox): $ cat 2021-01-11-raspios-buster-armhf-lite.img > /dev/sdd ; sync Bien s\u00fbr, changez le p\u00e9riph\u00e9rique suivant votre cas particulier : le mien, ici, est /dev/sdd . Voyez avec la commande lsblk pour d\u00e9couvrir la votre: elle change avec les p\u00e9riph\u00e9riques d\u00e9j\u00e0 branch\u00e9s sur votre ordinateur. (chez moi, la premi\u00e8re fois, c'\u00e9tait /dev/sde , puis aujourd'hui, /dev/sdd )","title":"Copie de l'image sur la carte SD"},{"location":"Tutoriels/tutoraspi/Installation-de-base/#autorisation-de-lacces-en-ssh","text":"Pour pouvoir se connecter en ssh , il faut cr\u00e9er un fichier vide de nom ssh dans le r\u00e9pertoire /boot . voici la liste des commandes n\u00e9cessaires : cd /media/eric/9E40-CF6B/boot touch ssh /media/eric/9E40-CF6B/boot est le point de montage de la carte microsd sur le desktop. Une fois cela fait, vous pouvez d\u00e9monter votre carte microSD et la placer dans votre raspi.","title":"Autorisation de l'acc\u00e8s en ssh"},{"location":"Tutoriels/tutoraspi/Knot/","text":"Installation de knot-resolver Nous allons suivre la documentation officielle situ\u00e9e ici : knot-resolver Installation Installation du resolver et des programmes utilitaires pi@piras:~ $ sudo apt install knot-resolver knot-dnsutils Configuration Voil\u00e0 le contenu de mon fichier de configuration /etc/knot-resolver/kresd.conf : pi@piras:~ $ cat /etc/knot-resolver/kresd.conf -- Default empty Knot DNS Resolver configuration in -*- lua -*- -- Bind ports as privileged user (root) -- net = { '127.0.0.1', '::1' } -- Switch to unprivileged user -- user('knot-resolver','knot-resolver') -- Unprivileged -- cache.size = 100*MB pi@piras:~ $ J'ai d\u00e9-comment\u00e9 les interfaces d'\u00e9coute. Lancement et mise en service automatique On d\u00e9marre le service sudo systemctl start kresd@1.service On rend le d\u00e9marrage automatique sudo systemctl enable --now kresd@1.service On v\u00e9rifie que le service est en route sudo systemctl status kresd@1.service pi@piras:~ $ sudo systemctl status kresd@1.service \u25cf kresd@1.service - Knot Resolver daemon Loaded: loaded (/lib/systemd/system/kresd@.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-12-12 12:24:29 CET; 15min ago Docs: man:kresd.systemd(7) man:kresd(8) Main PID: 1905 (kresd) CGroup: /system.slice/system-kresd.slice/kresd@1.service \u2514\u25001905 /usr/sbin/kresd --config=/etc/knot-resolver/kresd.conf d\u00e9c. 12 12:24:28 piras systemd[1]: Starting Knot Resolver daemon... d\u00e9c. 12 12:24:29 piras systemd[1]: Started Knot Resolver daemon. pi@piras:~ $ Il est actif (active (running)) On teste le fonctionnement pi@piras:~ $ kdig +short @localhost . NS a.root-servers.net. b.root-servers.net. c.root-servers.net. d.root-servers.net. e.root-servers.net. f.root-servers.net. g.root-servers.net. h.root-servers.net. i.root-servers.net. j.root-servers.net. k.root-servers.net. l.root-servers.net. m.root-servers.net. pi@piras:~ $ Tout fonctionne :D le r\u00e9solveur \u00e9coute sur les ports 127.0.0.1 et ::1. Modification de /etc/dhcpcd.conf Nous allons pouvoir maintenant modifier la ligne : #static domain_name_servers=192.168.1.1 pour obtenir ceci : static domain_name_servers=127.0.0.1 ::1 Notre raspi fera appel dor\u00e9navant \u00e0 son propre r\u00e9solveur DNS (et non \u00e0 celui de votre box !)","title":"Installation de Knot-resolver"},{"location":"Tutoriels/tutoraspi/Knot/#installation-de-knot-resolver","text":"Nous allons suivre la documentation officielle situ\u00e9e ici : knot-resolver","title":"Installation de knot-resolver"},{"location":"Tutoriels/tutoraspi/Knot/#installation","text":"Installation du resolver et des programmes utilitaires pi@piras:~ $ sudo apt install knot-resolver knot-dnsutils","title":"Installation"},{"location":"Tutoriels/tutoraspi/Knot/#configuration","text":"Voil\u00e0 le contenu de mon fichier de configuration /etc/knot-resolver/kresd.conf : pi@piras:~ $ cat /etc/knot-resolver/kresd.conf -- Default empty Knot DNS Resolver configuration in -*- lua -*- -- Bind ports as privileged user (root) -- net = { '127.0.0.1', '::1' } -- Switch to unprivileged user -- user('knot-resolver','knot-resolver') -- Unprivileged -- cache.size = 100*MB pi@piras:~ $ J'ai d\u00e9-comment\u00e9 les interfaces d'\u00e9coute.","title":"Configuration"},{"location":"Tutoriels/tutoraspi/Knot/#lancement-et-mise-en-service-automatique","text":"On d\u00e9marre le service sudo systemctl start kresd@1.service On rend le d\u00e9marrage automatique sudo systemctl enable --now kresd@1.service On v\u00e9rifie que le service est en route sudo systemctl status kresd@1.service pi@piras:~ $ sudo systemctl status kresd@1.service \u25cf kresd@1.service - Knot Resolver daemon Loaded: loaded (/lib/systemd/system/kresd@.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-12-12 12:24:29 CET; 15min ago Docs: man:kresd.systemd(7) man:kresd(8) Main PID: 1905 (kresd) CGroup: /system.slice/system-kresd.slice/kresd@1.service \u2514\u25001905 /usr/sbin/kresd --config=/etc/knot-resolver/kresd.conf d\u00e9c. 12 12:24:28 piras systemd[1]: Starting Knot Resolver daemon... d\u00e9c. 12 12:24:29 piras systemd[1]: Started Knot Resolver daemon. pi@piras:~ $ Il est actif (active (running)) On teste le fonctionnement pi@piras:~ $ kdig +short @localhost . NS a.root-servers.net. b.root-servers.net. c.root-servers.net. d.root-servers.net. e.root-servers.net. f.root-servers.net. g.root-servers.net. h.root-servers.net. i.root-servers.net. j.root-servers.net. k.root-servers.net. l.root-servers.net. m.root-servers.net. pi@piras:~ $ Tout fonctionne :D le r\u00e9solveur \u00e9coute sur les ports 127.0.0.1 et ::1.","title":"Lancement et mise en service automatique"},{"location":"Tutoriels/tutoraspi/Knot/#modification-de-etcdhcpcdconf","text":"Nous allons pouvoir maintenant modifier la ligne : #static domain_name_servers=192.168.1.1 pour obtenir ceci : static domain_name_servers=127.0.0.1 ::1 Notre raspi fera appel dor\u00e9navant \u00e0 son propre r\u00e9solveur DNS (et non \u00e0 celui de votre box !)","title":"Modification de /etc/dhcpcd.conf"},{"location":"Tutoriels/tutoraspi/Logwatch/","text":"Installation de logwatch Nous allons installer logwatch qui nous enverra chaque jour un rapport de surveillance des services surveill\u00e9s. La configuration se fait dans /usr/share/logwatch/default.conf/logwatch.conf Installation pi@raspberrypi:~ $ sudo apt install logwatch Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Les paquets suppl\u00e9mentaires suivants seront install\u00e9s : exim4-base exim4-config exim4-daemon-light guile-2.2-libs libdate-manip-perl libgnutls-dane0 libgsasl7 libkyotocabinet16v5 libltdl7 liblzo2-2 libmailutils5 libmariadb3 libntlm0 libpython2.7 libsys-cpu-perl libsys-meminfo-perl libunbound8 mailutils mailutils-common mariadb-common mysql-common Paquets sugg\u00e9r\u00e9s : exim4-doc-html | exim4-doc-info eximon4 spf-tools-perl swaks mailutils-mh mailutils-doc Les NOUVEAUX paquets suivants seront install\u00e9s : exim4-base exim4-config exim4-daemon-light guile-2.2-libs libdate-manip-perl libgnutls-dane0 libgsasl7 libkyotocabinet16v5 libltdl7 liblzo2-2 libmailutils5 libmariadb3 libntlm0 libpython2.7 libsys-cpu-perl libsys-meminfo-perl libunbound8 logwatch mailutils mailutils-common mariadb-common mysql-common 0 mis \u00e0 jour, 22 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 13,0 Mo dans les archives. Apr\u00e8s cette op\u00e9ration, 72,1 Mo d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de :1 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian buster/main armhf exim4-config all 4.92-8+deb10u4 [323 kB] R\u00e9ception de :4 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian buster/main armhf libgnutls-dane0 armhf 3.6.7-4+deb10u6 [315 kB] R\u00e9ception de :2 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf exim4-base armhf 4.92-8+deb10u4 [1\u202f132 kB] R\u00e9ception de :3 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libunbound8 armhf 1.9.0-2+deb10u2 [403 kB] R\u00e9ception de :7 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf guile-2.2-libs armhf 2.2.4+1-2+deb10u1 [4\u202f918 kB] R\u00e9ception de :5 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf exim4-daemon-light armhf 4.92-8+deb10u4 [492 kB] R\u00e9ception de :6 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libltdl7 armhf 2.4.6-9 [387 kB] R\u00e9ception de :20 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian buster/main armhf libsys-meminfo-perl armhf 0.99-1+b2 [9\u202f564 B] R\u00e9ception de :8 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libdate-manip-perl all 6.76-1 [930 kB] R\u00e9ception de :21 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian buster/main armhf logwatch all 7.5.0-1 [380 kB] R\u00e9ception de :22 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian buster/main armhf mailutils armhf 1:3.5-4 [566 kB] R\u00e9ception de :9 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libntlm0 armhf 1.5-1+deb10u1 [21,6 kB] R\u00e9ception de :10 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libgsasl7 armhf 1.8.0-8+b1 [196 kB] R\u00e9ception de :11 http://ftp.crifo.org/raspbian/raspbian buster/main armhf liblzo2-2 armhf 2.10-0.1 [48,4 kB] R\u00e9ception de :14 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf mysql-common all 5.8+1.0.5 [7\u202f324 B] R\u00e9ception de :15 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf mariadb-common all 1:10.3.27-0+deb10u1 [32,2 kB] R\u00e9ception de :16 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libmariadb3 armhf 1:10.3.27-0+deb10u1 [158 kB] R\u00e9ception de :17 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libpython2.7 armhf 2.7.16-2+deb10u1 [873 kB] R\u00e9ception de :19 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libsys-cpu-perl armhf 0.61-2+b3 [9\u202f332 B] R\u00e9ception de :12 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf libkyotocabinet16v5 armhf 1.2.76-4.2+rpi1 [280 kB] R\u00e9ception de :13 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf mailutils-common all 1:3.5-4 [689 kB] R\u00e9ception de :18 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf libmailutils5 armhf 1:3.5-4 [809 kB] 13,0 Mo r\u00e9ceptionn\u00e9s en 11s (1\u202f139 ko/s) Pr\u00e9configuration des paquets... S\u00e9lection du paquet exim4-config pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 44347 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../00-exim4-config_4.92-8+deb10u4_all.deb ... D\u00e9paquetage de exim4-config (4.92-8+deb10u4) ... S\u00e9lection du paquet exim4-base pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../01-exim4-base_4.92-8+deb10u4_armhf.deb ... D\u00e9paquetage de exim4-base (4.92-8+deb10u4) ... S\u00e9lection du paquet libunbound8:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../02-libunbound8_1.9.0-2+deb10u2_armhf.deb ... D\u00e9paquetage de libunbound8:armhf (1.9.0-2+deb10u2) ... S\u00e9lection du paquet libgnutls-dane0:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../03-libgnutls-dane0_3.6.7-4+deb10u6_armhf.deb ... D\u00e9paquetage de libgnutls-dane0:armhf (3.6.7-4+deb10u6) ... S\u00e9lection du paquet exim4-daemon-light pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../04-exim4-daemon-light_4.92-8+deb10u4_armhf.deb ... D\u00e9paquetage de exim4-daemon-light (4.92-8+deb10u4) ... S\u00e9lection du paquet libltdl7:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../05-libltdl7_2.4.6-9_armhf.deb ... D\u00e9paquetage de libltdl7:armhf (2.4.6-9) ... S\u00e9lection du paquet guile-2.2-libs:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../06-guile-2.2-libs_2.2.4+1-2+deb10u1_armhf.deb ... D\u00e9paquetage de guile-2.2-libs:armhf (2.2.4+1-2+deb10u1) ... S\u00e9lection du paquet libdate-manip-perl pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../07-libdate-manip-perl_6.76-1_all.deb ... D\u00e9paquetage de libdate-manip-perl (6.76-1) ... S\u00e9lection du paquet libntlm0:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../08-libntlm0_1.5-1+deb10u1_armhf.deb ... D\u00e9paquetage de libntlm0:armhf (1.5-1+deb10u1) ... S\u00e9lection du paquet libgsasl7 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../09-libgsasl7_1.8.0-8+b1_armhf.deb ... D\u00e9paquetage de libgsasl7 (1.8.0-8+b1) ... S\u00e9lection du paquet liblzo2-2:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../10-liblzo2-2_2.10-0.1_armhf.deb ... D\u00e9paquetage de liblzo2-2:armhf (2.10-0.1) ... S\u00e9lection du paquet libkyotocabinet16v5:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../11-libkyotocabinet16v5_1.2.76-4.2+rpi1_armhf.deb ... D\u00e9paquetage de libkyotocabinet16v5:armhf (1.2.76-4.2+rpi1) ... S\u00e9lection du paquet mailutils-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../12-mailutils-common_1%3a3.5-4_all.deb ... D\u00e9paquetage de mailutils-common (1:3.5-4) ... S\u00e9lection du paquet mysql-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../13-mysql-common_5.8+1.0.5_all.deb ... D\u00e9paquetage de mysql-common (5.8+1.0.5) ... S\u00e9lection du paquet mariadb-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../14-mariadb-common_1%3a10.3.27-0+deb10u1_all.deb ... D\u00e9paquetage de mariadb-common (1:10.3.27-0+deb10u1) ... S\u00e9lection du paquet libmariadb3:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../15-libmariadb3_1%3a10.3.27-0+deb10u1_armhf.deb ... D\u00e9paquetage de libmariadb3:armhf (1:10.3.27-0+deb10u1) ... S\u00e9lection du paquet libpython2.7:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../16-libpython2.7_2.7.16-2+deb10u1_armhf.deb ... D\u00e9paquetage de libpython2.7:armhf (2.7.16-2+deb10u1) ... S\u00e9lection du paquet libmailutils5:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../17-libmailutils5_1%3a3.5-4_armhf.deb ... D\u00e9paquetage de libmailutils5:armhf (1:3.5-4) ... S\u00e9lection du paquet libsys-cpu-perl pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../18-libsys-cpu-perl_0.61-2+b3_armhf.deb ... D\u00e9paquetage de libsys-cpu-perl (0.61-2+b3) ... S\u00e9lection du paquet libsys-meminfo-perl pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../19-libsys-meminfo-perl_0.99-1+b2_armhf.deb ... D\u00e9paquetage de libsys-meminfo-perl (0.99-1+b2) ... S\u00e9lection du paquet logwatch pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../20-logwatch_7.5.0-1_all.deb ... D\u00e9paquetage de logwatch (7.5.0-1) ... S\u00e9lection du paquet mailutils pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../21-mailutils_1%3a3.5-4_armhf.deb ... D\u00e9paquetage de mailutils (1:3.5-4) ... Param\u00e9trage de mysql-common (5.8+1.0.5) ... 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 libpython2.7:armhf (2.7.16-2+deb10u1) ... Param\u00e9trage de libsys-cpu-perl (0.61-2+b3) ... Param\u00e9trage de liblzo2-2:armhf (2.10-0.1) ... Param\u00e9trage de mariadb-common (1:10.3.27-0+deb10u1) ... update-alternatives: utilisation de \u00ab /etc/mysql/mariadb.cnf \u00bb pour fournir \u00ab /etc/mysql/my.cnf \u00bb (my.cnf) en mode automatique Param\u00e9trage de libunbound8:armhf (1.9.0-2+deb10u2) ... Param\u00e9trage de libntlm0:armhf (1.5-1+deb10u1) ... Param\u00e9trage de mailutils-common (1:3.5-4) ... Param\u00e9trage de libmariadb3:armhf (1:10.3.27-0+deb10u1) ... Param\u00e9trage de libltdl7:armhf (2.4.6-9) ... Param\u00e9trage de exim4-config (4.92-8+deb10u4) ... Adding system-user for exim (v4) Param\u00e9trage de libsys-meminfo-perl (0.99-1+b2) ... Param\u00e9trage de guile-2.2-libs:armhf (2.2.4+1-2+deb10u1) ... Param\u00e9trage de libdate-manip-perl (6.76-1) ... Param\u00e9trage de libgnutls-dane0:armhf (3.6.7-4+deb10u6) ... Param\u00e9trage de exim4-base (4.92-8+deb10u4) ... exim: DB upgrade, deleting hints-db Param\u00e9trage de libkyotocabinet16v5:armhf (1.2.76-4.2+rpi1) ... Param\u00e9trage de libgsasl7 (1.8.0-8+b1) ... Param\u00e9trage de exim4-daemon-light (4.92-8+deb10u4) ... Initializing GnuTLS DH parameter file Param\u00e9trage de libmailutils5:armhf (1:3.5-4) ... Param\u00e9trage de logwatch (7.5.0-1) ... Param\u00e9trage de mailutils (1:3.5-4) ... 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 systemd (241-7~deb10u6+rpi1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.8.5-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.28-10+rpi1) ... pi@raspberrypi:~ $ Premi\u00e8res configurations Il faut modifier les lignes suivantes : MailTo = root -> Mailto = pi Range = yesterday -> Range = all J'ai laiss\u00e9 la deuxi\u00e8me ligne \u00e0 yesterday pour limiter la taille du rapport. Premiers tests Nous utiliserons l'utilisateur local destinataire pi . Le logiciel de courrier install\u00e9 n'est pas configur\u00e9 pour envoyer des mails \u00e0 l'ext\u00e9rieur. logwatch --detail Low --mailto pi --service All --range today Pour lire les courriers, nous installerons mutt . Installation de mutt pi@raspberrypi:~ $ sudo apt install mutt Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Les paquets suppl\u00e9mentaires suivants seront install\u00e9s : libgpgme11 libsasl2-modules libtokyocabinet9 Paquets sugg\u00e9r\u00e9s : libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal libsasl2-modules-ldap libsasl2-modules-otp libsasl2-modules-sql urlview aspell | ispell mixmaster Les NOUVEAUX paquets suivants seront install\u00e9s : libgpgme11 libsasl2-modules libtokyocabinet9 mutt 0 mis \u00e0 jour, 4 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 2\u202f121 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 7\u202f626 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de :1 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libgpgme11 armhf 1.12.0-6 [230 kB] R\u00e9ception de :3 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libtokyocabinet9 armhf 1.4.48-12 [311 kB] R\u00e9ception de :2 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf libsasl2-modules armhf 2.1.27+dfsg-1+deb10u1 [96,3 kB] R\u00e9ception de :4 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf mutt armhf 1.10.1-2.1+deb10u5 [1\u202f484 kB] 2\u202f121 ko r\u00e9ceptionn\u00e9s en 3s (803 ko/s) S\u00e9lection du paquet libgpgme11:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 46838 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../libgpgme11_1.12.0-6_armhf.deb ... D\u00e9paquetage de libgpgme11:armhf (1.12.0-6) ... S\u00e9lection du paquet libsasl2-modules:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../libsasl2-modules_2.1.27+dfsg-1+deb10u1_armhf.deb ... D\u00e9paquetage de libsasl2-modules:armhf (2.1.27+dfsg-1+deb10u1) ... S\u00e9lection du paquet libtokyocabinet9:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../libtokyocabinet9_1.4.48-12_armhf.deb ... D\u00e9paquetage de libtokyocabinet9:armhf (1.4.48-12) ... S\u00e9lection du paquet mutt pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../mutt_1.10.1-2.1+deb10u5_armhf.deb ... D\u00e9paquetage de mutt (1.10.1-2.1+deb10u5) ... Param\u00e9trage de libtokyocabinet9:armhf (1.4.48-12) ... Param\u00e9trage de libsasl2-modules:armhf (2.1.27+dfsg-1+deb10u1) ... Param\u00e9trage de libgpgme11:armhf (1.12.0-6) ... Param\u00e9trage de mutt (1.10.1-2.1+deb10u5) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.8.5-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour mime-support (3.62) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.28-10+rpi1) ... pi@raspberrypi:~ $ Test de lecture du courrier Nous voyons le premier courrier qui indique que exim4 n'a pas pu envoyer un message \u00e0 l'ext\u00e9rieur (j'avais mis mon adresse courriel normale dans la ligne de commande), et le second qui est bien le rapport de logwatch .","title":"Surveillance du serveur"},{"location":"Tutoriels/tutoraspi/Logwatch/#installation-de-logwatch","text":"Nous allons installer logwatch qui nous enverra chaque jour un rapport de surveillance des services surveill\u00e9s. La configuration se fait dans /usr/share/logwatch/default.conf/logwatch.conf","title":"Installation de logwatch"},{"location":"Tutoriels/tutoraspi/Logwatch/#installation","text":"pi@raspberrypi:~ $ sudo apt install logwatch Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Les paquets suppl\u00e9mentaires suivants seront install\u00e9s : exim4-base exim4-config exim4-daemon-light guile-2.2-libs libdate-manip-perl libgnutls-dane0 libgsasl7 libkyotocabinet16v5 libltdl7 liblzo2-2 libmailutils5 libmariadb3 libntlm0 libpython2.7 libsys-cpu-perl libsys-meminfo-perl libunbound8 mailutils mailutils-common mariadb-common mysql-common Paquets sugg\u00e9r\u00e9s : exim4-doc-html | exim4-doc-info eximon4 spf-tools-perl swaks mailutils-mh mailutils-doc Les NOUVEAUX paquets suivants seront install\u00e9s : exim4-base exim4-config exim4-daemon-light guile-2.2-libs libdate-manip-perl libgnutls-dane0 libgsasl7 libkyotocabinet16v5 libltdl7 liblzo2-2 libmailutils5 libmariadb3 libntlm0 libpython2.7 libsys-cpu-perl libsys-meminfo-perl libunbound8 logwatch mailutils mailutils-common mariadb-common mysql-common 0 mis \u00e0 jour, 22 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 13,0 Mo dans les archives. Apr\u00e8s cette op\u00e9ration, 72,1 Mo d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de :1 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian buster/main armhf exim4-config all 4.92-8+deb10u4 [323 kB] R\u00e9ception de :4 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian buster/main armhf libgnutls-dane0 armhf 3.6.7-4+deb10u6 [315 kB] R\u00e9ception de :2 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf exim4-base armhf 4.92-8+deb10u4 [1\u202f132 kB] R\u00e9ception de :3 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libunbound8 armhf 1.9.0-2+deb10u2 [403 kB] R\u00e9ception de :7 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf guile-2.2-libs armhf 2.2.4+1-2+deb10u1 [4\u202f918 kB] R\u00e9ception de :5 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf exim4-daemon-light armhf 4.92-8+deb10u4 [492 kB] R\u00e9ception de :6 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libltdl7 armhf 2.4.6-9 [387 kB] R\u00e9ception de :20 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian buster/main armhf libsys-meminfo-perl armhf 0.99-1+b2 [9\u202f564 B] R\u00e9ception de :8 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libdate-manip-perl all 6.76-1 [930 kB] R\u00e9ception de :21 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian buster/main armhf logwatch all 7.5.0-1 [380 kB] R\u00e9ception de :22 http://distrib-coffee.ipsl.jussieu.fr/pub/linux/raspbian/raspbian buster/main armhf mailutils armhf 1:3.5-4 [566 kB] R\u00e9ception de :9 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libntlm0 armhf 1.5-1+deb10u1 [21,6 kB] R\u00e9ception de :10 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libgsasl7 armhf 1.8.0-8+b1 [196 kB] R\u00e9ception de :11 http://ftp.crifo.org/raspbian/raspbian buster/main armhf liblzo2-2 armhf 2.10-0.1 [48,4 kB] R\u00e9ception de :14 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf mysql-common all 5.8+1.0.5 [7\u202f324 B] R\u00e9ception de :15 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf mariadb-common all 1:10.3.27-0+deb10u1 [32,2 kB] R\u00e9ception de :16 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libmariadb3 armhf 1:10.3.27-0+deb10u1 [158 kB] R\u00e9ception de :17 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libpython2.7 armhf 2.7.16-2+deb10u1 [873 kB] R\u00e9ception de :19 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libsys-cpu-perl armhf 0.61-2+b3 [9\u202f332 B] R\u00e9ception de :12 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf libkyotocabinet16v5 armhf 1.2.76-4.2+rpi1 [280 kB] R\u00e9ception de :13 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf mailutils-common all 1:3.5-4 [689 kB] R\u00e9ception de :18 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf libmailutils5 armhf 1:3.5-4 [809 kB] 13,0 Mo r\u00e9ceptionn\u00e9s en 11s (1\u202f139 ko/s) Pr\u00e9configuration des paquets... S\u00e9lection du paquet exim4-config pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 44347 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../00-exim4-config_4.92-8+deb10u4_all.deb ... D\u00e9paquetage de exim4-config (4.92-8+deb10u4) ... S\u00e9lection du paquet exim4-base pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../01-exim4-base_4.92-8+deb10u4_armhf.deb ... D\u00e9paquetage de exim4-base (4.92-8+deb10u4) ... S\u00e9lection du paquet libunbound8:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../02-libunbound8_1.9.0-2+deb10u2_armhf.deb ... D\u00e9paquetage de libunbound8:armhf (1.9.0-2+deb10u2) ... S\u00e9lection du paquet libgnutls-dane0:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../03-libgnutls-dane0_3.6.7-4+deb10u6_armhf.deb ... D\u00e9paquetage de libgnutls-dane0:armhf (3.6.7-4+deb10u6) ... S\u00e9lection du paquet exim4-daemon-light pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../04-exim4-daemon-light_4.92-8+deb10u4_armhf.deb ... D\u00e9paquetage de exim4-daemon-light (4.92-8+deb10u4) ... S\u00e9lection du paquet libltdl7:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../05-libltdl7_2.4.6-9_armhf.deb ... D\u00e9paquetage de libltdl7:armhf (2.4.6-9) ... S\u00e9lection du paquet guile-2.2-libs:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../06-guile-2.2-libs_2.2.4+1-2+deb10u1_armhf.deb ... D\u00e9paquetage de guile-2.2-libs:armhf (2.2.4+1-2+deb10u1) ... S\u00e9lection du paquet libdate-manip-perl pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../07-libdate-manip-perl_6.76-1_all.deb ... D\u00e9paquetage de libdate-manip-perl (6.76-1) ... S\u00e9lection du paquet libntlm0:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../08-libntlm0_1.5-1+deb10u1_armhf.deb ... D\u00e9paquetage de libntlm0:armhf (1.5-1+deb10u1) ... S\u00e9lection du paquet libgsasl7 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../09-libgsasl7_1.8.0-8+b1_armhf.deb ... D\u00e9paquetage de libgsasl7 (1.8.0-8+b1) ... S\u00e9lection du paquet liblzo2-2:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../10-liblzo2-2_2.10-0.1_armhf.deb ... D\u00e9paquetage de liblzo2-2:armhf (2.10-0.1) ... S\u00e9lection du paquet libkyotocabinet16v5:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../11-libkyotocabinet16v5_1.2.76-4.2+rpi1_armhf.deb ... D\u00e9paquetage de libkyotocabinet16v5:armhf (1.2.76-4.2+rpi1) ... S\u00e9lection du paquet mailutils-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../12-mailutils-common_1%3a3.5-4_all.deb ... D\u00e9paquetage de mailutils-common (1:3.5-4) ... S\u00e9lection du paquet mysql-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../13-mysql-common_5.8+1.0.5_all.deb ... D\u00e9paquetage de mysql-common (5.8+1.0.5) ... S\u00e9lection du paquet mariadb-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../14-mariadb-common_1%3a10.3.27-0+deb10u1_all.deb ... D\u00e9paquetage de mariadb-common (1:10.3.27-0+deb10u1) ... S\u00e9lection du paquet libmariadb3:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../15-libmariadb3_1%3a10.3.27-0+deb10u1_armhf.deb ... D\u00e9paquetage de libmariadb3:armhf (1:10.3.27-0+deb10u1) ... S\u00e9lection du paquet libpython2.7:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../16-libpython2.7_2.7.16-2+deb10u1_armhf.deb ... D\u00e9paquetage de libpython2.7:armhf (2.7.16-2+deb10u1) ... S\u00e9lection du paquet libmailutils5:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../17-libmailutils5_1%3a3.5-4_armhf.deb ... D\u00e9paquetage de libmailutils5:armhf (1:3.5-4) ... S\u00e9lection du paquet libsys-cpu-perl pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../18-libsys-cpu-perl_0.61-2+b3_armhf.deb ... D\u00e9paquetage de libsys-cpu-perl (0.61-2+b3) ... S\u00e9lection du paquet libsys-meminfo-perl pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../19-libsys-meminfo-perl_0.99-1+b2_armhf.deb ... D\u00e9paquetage de libsys-meminfo-perl (0.99-1+b2) ... S\u00e9lection du paquet logwatch pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../20-logwatch_7.5.0-1_all.deb ... D\u00e9paquetage de logwatch (7.5.0-1) ... S\u00e9lection du paquet mailutils pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../21-mailutils_1%3a3.5-4_armhf.deb ... D\u00e9paquetage de mailutils (1:3.5-4) ... Param\u00e9trage de mysql-common (5.8+1.0.5) ... 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 libpython2.7:armhf (2.7.16-2+deb10u1) ... Param\u00e9trage de libsys-cpu-perl (0.61-2+b3) ... Param\u00e9trage de liblzo2-2:armhf (2.10-0.1) ... Param\u00e9trage de mariadb-common (1:10.3.27-0+deb10u1) ... update-alternatives: utilisation de \u00ab /etc/mysql/mariadb.cnf \u00bb pour fournir \u00ab /etc/mysql/my.cnf \u00bb (my.cnf) en mode automatique Param\u00e9trage de libunbound8:armhf (1.9.0-2+deb10u2) ... Param\u00e9trage de libntlm0:armhf (1.5-1+deb10u1) ... Param\u00e9trage de mailutils-common (1:3.5-4) ... Param\u00e9trage de libmariadb3:armhf (1:10.3.27-0+deb10u1) ... Param\u00e9trage de libltdl7:armhf (2.4.6-9) ... Param\u00e9trage de exim4-config (4.92-8+deb10u4) ... Adding system-user for exim (v4) Param\u00e9trage de libsys-meminfo-perl (0.99-1+b2) ... Param\u00e9trage de guile-2.2-libs:armhf (2.2.4+1-2+deb10u1) ... Param\u00e9trage de libdate-manip-perl (6.76-1) ... Param\u00e9trage de libgnutls-dane0:armhf (3.6.7-4+deb10u6) ... Param\u00e9trage de exim4-base (4.92-8+deb10u4) ... exim: DB upgrade, deleting hints-db Param\u00e9trage de libkyotocabinet16v5:armhf (1.2.76-4.2+rpi1) ... Param\u00e9trage de libgsasl7 (1.8.0-8+b1) ... Param\u00e9trage de exim4-daemon-light (4.92-8+deb10u4) ... Initializing GnuTLS DH parameter file Param\u00e9trage de libmailutils5:armhf (1:3.5-4) ... Param\u00e9trage de logwatch (7.5.0-1) ... Param\u00e9trage de mailutils (1:3.5-4) ... 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 systemd (241-7~deb10u6+rpi1) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.8.5-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.28-10+rpi1) ... pi@raspberrypi:~ $","title":"Installation"},{"location":"Tutoriels/tutoraspi/Logwatch/#premieres-configurations","text":"Il faut modifier les lignes suivantes : MailTo = root -> Mailto = pi Range = yesterday -> Range = all J'ai laiss\u00e9 la deuxi\u00e8me ligne \u00e0 yesterday pour limiter la taille du rapport.","title":"Premi\u00e8res configurations"},{"location":"Tutoriels/tutoraspi/Logwatch/#premiers-tests","text":"Nous utiliserons l'utilisateur local destinataire pi . Le logiciel de courrier install\u00e9 n'est pas configur\u00e9 pour envoyer des mails \u00e0 l'ext\u00e9rieur. logwatch --detail Low --mailto pi --service All --range today Pour lire les courriers, nous installerons mutt .","title":"Premiers tests"},{"location":"Tutoriels/tutoraspi/Logwatch/#installation-de-mutt","text":"pi@raspberrypi:~ $ sudo apt install mutt Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Les paquets suppl\u00e9mentaires suivants seront install\u00e9s : libgpgme11 libsasl2-modules libtokyocabinet9 Paquets sugg\u00e9r\u00e9s : libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal libsasl2-modules-ldap libsasl2-modules-otp libsasl2-modules-sql urlview aspell | ispell mixmaster Les NOUVEAUX paquets suivants seront install\u00e9s : libgpgme11 libsasl2-modules libtokyocabinet9 mutt 0 mis \u00e0 jour, 4 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. Il est n\u00e9cessaire de prendre 2\u202f121 ko dans les archives. Apr\u00e8s cette op\u00e9ration, 7\u202f626 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s. Souhaitez-vous continuer ? [O/n] o R\u00e9ception de :1 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libgpgme11 armhf 1.12.0-6 [230 kB] R\u00e9ception de :3 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf libtokyocabinet9 armhf 1.4.48-12 [311 kB] R\u00e9ception de :2 http://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian buster/main armhf libsasl2-modules armhf 2.1.27+dfsg-1+deb10u1 [96,3 kB] R\u00e9ception de :4 http://mirrors.ircam.fr/pub/raspbian/raspbian buster/main armhf mutt armhf 1.10.1-2.1+deb10u5 [1\u202f484 kB] 2\u202f121 ko r\u00e9ceptionn\u00e9s en 3s (803 ko/s) S\u00e9lection du paquet libgpgme11:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. (Lecture de la base de donn\u00e9es... 46838 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.) Pr\u00e9paration du d\u00e9paquetage de .../libgpgme11_1.12.0-6_armhf.deb ... D\u00e9paquetage de libgpgme11:armhf (1.12.0-6) ... S\u00e9lection du paquet libsasl2-modules:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../libsasl2-modules_2.1.27+dfsg-1+deb10u1_armhf.deb ... D\u00e9paquetage de libsasl2-modules:armhf (2.1.27+dfsg-1+deb10u1) ... S\u00e9lection du paquet libtokyocabinet9:armhf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../libtokyocabinet9_1.4.48-12_armhf.deb ... D\u00e9paquetage de libtokyocabinet9:armhf (1.4.48-12) ... S\u00e9lection du paquet mutt pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9. Pr\u00e9paration du d\u00e9paquetage de .../mutt_1.10.1-2.1+deb10u5_armhf.deb ... D\u00e9paquetage de mutt (1.10.1-2.1+deb10u5) ... Param\u00e9trage de libtokyocabinet9:armhf (1.4.48-12) ... Param\u00e9trage de libsasl2-modules:armhf (2.1.27+dfsg-1+deb10u1) ... Param\u00e9trage de libgpgme11:armhf (1.12.0-6) ... Param\u00e9trage de mutt (1.10.1-2.1+deb10u5) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.8.5-2) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour mime-support (3.62) ... Traitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.28-10+rpi1) ... pi@raspberrypi:~ $","title":"Installation de mutt"},{"location":"Tutoriels/tutoraspi/Logwatch/#test-de-lecture-du-courrier","text":"Nous voyons le premier courrier qui indique que exim4 n'a pas pu envoyer un message \u00e0 l'ext\u00e9rieur (j'avais mis mon adresse courriel normale dans la ligne de commande), et le second qui est bien le rapport de logwatch .","title":"Test de lecture du courrier"},{"location":"Tutoriels/tutoraspi/Premier-d%C3%A9marrage/","text":"Premier d\u00e9marrage Ins\u00e9rerez la carte microSD dans le connecteur ad\u00e9quat, le c\u00e2ble ethernet et pour finir l'alimentation. Les petites leds situ\u00e9es sur la carte raspi doivent s'allumer et certaines d'entre elles vont passer au vert. Pour pouvoir ensuite se connecter sur votre raspi en ssh , il faut trouver son adresse IP qui est attribu\u00e9e automatiquement par votre box en dhcp. Nous verrons ensuite comment attribuer une adresse IP fixe \u00e0 votre raspi. D\u00e9couverte de l'adresse IP de votre raspi Il y a plusieurs m\u00e9thodes suivant que votre poste principal est sous Windows, MacOs ou Linux. Je ne traiterai que le cas Linux, car je n'ai ni Windows, ni MacOs. En ligne de commande dans un terminal eric@aldebaran:~$ sudo nmap -sn 192.168.111.0/24 [sudo] Mot de passe de eric : Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-11 10:43 CET Nmap scan report for 192.168.111.13 Host is up (0.13s latency). MAC Address: 20:D3:90:EA:EE:9E (Samsung Electronics) Nmap scan report for 192.168.111.20 Host is up (0.14s latency). MAC Address: 90:78:B2:A1:31:E7 (Xiaomi Communications) Nmap scan report for 192.168.111.25 Host is up (0.24s latency). MAC Address: D8:12:65:5B:DD:90 (Chongqing Fugui Electronics) Nmap scan report for 192.168.111.32 Host is up (0.00074s latency). MAC Address: B8:27:EB:3A:0B:38 (Raspberry Pi Foundation) Nmap scan report for 192.168.111.34 Host is up (0.23s latency). MAC Address: 00:73:8D:92:7E:B6 (Shenzhen Tinno Mobile Technology) Nmap scan report for 192.168.111.49 Host is up (0.25s latency). MAC Address: 70:EE:50:6B:7B:3A (Netatmo) Nmap scan report for 192.168.111.140 Host is up (0.26s latency). MAC Address: 98:DA:C4:37:BF:F9 (Tp-link Technologies) Nmap scan report for 192.168.111.151 Host is up (0.00011s latency). MAC Address: D0:50:99:A5:69:C5 (ASRock Incorporation) Nmap scan report for 192.168.111.160 Host is up (0.00029s latency). MAC Address: 00:23:54:C6:0A:07 (Asustek Computer) Nmap scan report for 192.168.111.250 Host is up (0.69s latency). MAC Address: A8:6B:AD:00:D3:E4 (Hon Hai Precision Ind.) Nmap scan report for 192.168.111.254 Host is up (0.00077s latency). MAC Address: 68:A3:78:65:7B:5C (Freebox SAS) Nmap scan report for 192.168.111.150 Host is up. Nmap done: 256 IP addresses (12 hosts up) scanned in 27.11 seconds eric@aldebaran:~$ Vous voyez toutes les machines connect\u00e9es sur le r\u00e9seau familial (oui, il y a des ampoules connect\u00e9es ;), ainsi que la station m\u00e9t\u00e9o et les capteurs additionnels.) Pour scanner votre r\u00e9seau en IPV6, la commande est la suivante : eric@aldebaran:~$ sudo nmap -6 -sn 2a01:e0a:d0:3c20::0/64 Elle prend des \"plombes\" \u00e0 s'ex\u00e9cuter vu le nombre d'adresses \u00e0 tester ... Il est aussi possible de r\u00e9cup\u00e9rer l'adresse IPV6 sur la console d'administration de votre box. (voir plus bas) La ligne qui nous int\u00e9resse est celle qui r\u00e9f\u00e9rence notre raspi : MAC Address: D8:12:65:5B:DD:90 (Chongqing Fugui Electronics) Nmap scan report for 192.168.111.32 Host is up (0.00074s latency). MAC Address: B8:27:EB:3A:0B:38 (Raspberry Pi Foundation) L'adresse IP (IPV4) est : 192.168.111.32 Cette adresse a \u00e9t\u00e9 attribu\u00e9e dynamiquement. Il nous faudra lui attribuer une adresse IP fixe, en IPV4 et IPV6. Retrouver l'adresse IP avec la Freebox Vous pouvez acc\u00e9der \u00e0 l'interface web de votre Freebox \u00e0 l'adresse : FreeboxOs Voil\u00e0 une s\u00e9rie de captures d'\u00e9cran qui vous permettront de trouver l'adresse IP de votre raspi. Le mien a d\u00e9j\u00e0 \u00e9t\u00e9 configur\u00e9 avec le nom piras . Premi\u00e8re connexion en SSH La commande est \u00e0 effectuer dans un terminal est la suivante : eric@aldebaran:~$ ssh pi@192.168.111.32 pi@192.168.111.32's password: Linux piras 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l 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 Nov 29 16:03:52 2020 from 192.168.111.150 pi@piras:~ $ Nous sommes connect\u00e9s. L'utilisateur pr\u00e9d\u00e9fini avec les droits sudo d'administration est pi et le mot de passe par d\u00e9faut est raspberry . Changez ce mot de passe avec la commande suivante : passwd Et suivez les instructions. Pensez \u00e0 utiliser un mot de passe fort, par exemple g\u00e9n\u00e9r\u00e9 avec le programme pwgen (voir les tutos : Installation d'un serveur Debian/Stretch s\u00e9curis\u00e9 et Installation d'un serveur Debian/Buster s\u00e9curis\u00e9 .) premi\u00e8res configuration Tapez : sudo raspi-config et configurez le clavier, la langue, l'extension des partitions \u00e0 tout l'espace disponible sur la clef, le hostname, la time-zone et n'oubliez pas de faire un update/upgrade avant de re-d\u00e9marrer. Le clavier (commencez par l\u00e0) Choisissez le clavier fran\u00e7ais azerty. (ou autre selon votre configuration personnelle) Les locales Ajouter fr_FR.UTF8 et r\u00e9g\u00e9n\u00e9rez vos locales Choix du param\u00e8tre actif par d\u00e9faut : fr_FR.UTF8 sudo apt update && sudo apt upgrade Zone (fuseau horaire) Choisissez Europe/Paris si c'est bien votre zone ! Options avanc\u00e9es Agrandissez vos partitions pour qu'elles occupent tout l'espace disponible sur le carte SD (option A1) Rd\u00e9marrez votre Raspi. Au prochain red\u00e9marrage, faites une mise \u00e0 jour g\u00e9n\u00e9rale de votre syst\u00e8me avec la commande suivante qui red\u00e9marrera votre raspi \u00e0 la fin des op\u00e9rations : pi@raspberrypi:~ $ sudo apt update && sudo apt upgrade && sudo systemctl reboot R\u00e9ception de :1 http://raspbian.raspberrypi.org/raspbian buster InRelease [15,0 kB] Atteint :2 http://archive.raspberrypi.org/debian buster InRelease R\u00e9ception de :3 http://packages.microsoft.com/repos/code stable InRelease [10,4 kB] R\u00e9ception de :4 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages [13,0 MB] R\u00e9ception de :5 http://packages.microsoft.com/repos/code stable/main armhf Packages [13,6 kB] R\u00e9ception de :6 http://packages.microsoft.com/repos/code stable/main arm64 Packages [13,6 kB] R\u00e9ception de :7 http://packages.microsoft.com/repos/code stable/main amd64 Packages [13,0 kB] 13,1 Mo r\u00e9ceptionn\u00e9s en 38s (340 ko/s) Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Tous les paquets sont \u00e0 jour. Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Calcul de la mise \u00e0 jour... Fait 0 mis \u00e0 jour, 0 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. pi@raspberrypi:~ $ Vous trouverez ces instructions sur de nombreux tutoriels et je ne vais pas les r\u00e9p\u00e9ter. Voyez les tutoriels sur la section tutoriels du site RaspberryPi.org par exemple, mais il y en a d'autres.","title":"Premier d\u00e9marrage"},{"location":"Tutoriels/tutoraspi/Premier-d%C3%A9marrage/#premier-demarrage","text":"Ins\u00e9rerez la carte microSD dans le connecteur ad\u00e9quat, le c\u00e2ble ethernet et pour finir l'alimentation. Les petites leds situ\u00e9es sur la carte raspi doivent s'allumer et certaines d'entre elles vont passer au vert. Pour pouvoir ensuite se connecter sur votre raspi en ssh , il faut trouver son adresse IP qui est attribu\u00e9e automatiquement par votre box en dhcp. Nous verrons ensuite comment attribuer une adresse IP fixe \u00e0 votre raspi.","title":"Premier d\u00e9marrage"},{"location":"Tutoriels/tutoraspi/Premier-d%C3%A9marrage/#decouverte-de-ladresse-ip-de-votre-raspi","text":"Il y a plusieurs m\u00e9thodes suivant que votre poste principal est sous Windows, MacOs ou Linux. Je ne traiterai que le cas Linux, car je n'ai ni Windows, ni MacOs.","title":"D\u00e9couverte de l'adresse IP de votre raspi"},{"location":"Tutoriels/tutoraspi/Premier-d%C3%A9marrage/#en-ligne-de-commande-dans-un-terminal","text":"eric@aldebaran:~$ sudo nmap -sn 192.168.111.0/24 [sudo] Mot de passe de eric : Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-11 10:43 CET Nmap scan report for 192.168.111.13 Host is up (0.13s latency). MAC Address: 20:D3:90:EA:EE:9E (Samsung Electronics) Nmap scan report for 192.168.111.20 Host is up (0.14s latency). MAC Address: 90:78:B2:A1:31:E7 (Xiaomi Communications) Nmap scan report for 192.168.111.25 Host is up (0.24s latency). MAC Address: D8:12:65:5B:DD:90 (Chongqing Fugui Electronics) Nmap scan report for 192.168.111.32 Host is up (0.00074s latency). MAC Address: B8:27:EB:3A:0B:38 (Raspberry Pi Foundation) Nmap scan report for 192.168.111.34 Host is up (0.23s latency). MAC Address: 00:73:8D:92:7E:B6 (Shenzhen Tinno Mobile Technology) Nmap scan report for 192.168.111.49 Host is up (0.25s latency). MAC Address: 70:EE:50:6B:7B:3A (Netatmo) Nmap scan report for 192.168.111.140 Host is up (0.26s latency). MAC Address: 98:DA:C4:37:BF:F9 (Tp-link Technologies) Nmap scan report for 192.168.111.151 Host is up (0.00011s latency). MAC Address: D0:50:99:A5:69:C5 (ASRock Incorporation) Nmap scan report for 192.168.111.160 Host is up (0.00029s latency). MAC Address: 00:23:54:C6:0A:07 (Asustek Computer) Nmap scan report for 192.168.111.250 Host is up (0.69s latency). MAC Address: A8:6B:AD:00:D3:E4 (Hon Hai Precision Ind.) Nmap scan report for 192.168.111.254 Host is up (0.00077s latency). MAC Address: 68:A3:78:65:7B:5C (Freebox SAS) Nmap scan report for 192.168.111.150 Host is up. Nmap done: 256 IP addresses (12 hosts up) scanned in 27.11 seconds eric@aldebaran:~$ Vous voyez toutes les machines connect\u00e9es sur le r\u00e9seau familial (oui, il y a des ampoules connect\u00e9es ;), ainsi que la station m\u00e9t\u00e9o et les capteurs additionnels.) Pour scanner votre r\u00e9seau en IPV6, la commande est la suivante : eric@aldebaran:~$ sudo nmap -6 -sn 2a01:e0a:d0:3c20::0/64 Elle prend des \"plombes\" \u00e0 s'ex\u00e9cuter vu le nombre d'adresses \u00e0 tester ... Il est aussi possible de r\u00e9cup\u00e9rer l'adresse IPV6 sur la console d'administration de votre box. (voir plus bas) La ligne qui nous int\u00e9resse est celle qui r\u00e9f\u00e9rence notre raspi : MAC Address: D8:12:65:5B:DD:90 (Chongqing Fugui Electronics) Nmap scan report for 192.168.111.32 Host is up (0.00074s latency). MAC Address: B8:27:EB:3A:0B:38 (Raspberry Pi Foundation) L'adresse IP (IPV4) est : 192.168.111.32 Cette adresse a \u00e9t\u00e9 attribu\u00e9e dynamiquement. Il nous faudra lui attribuer une adresse IP fixe, en IPV4 et IPV6.","title":"En ligne de commande dans un terminal"},{"location":"Tutoriels/tutoraspi/Premier-d%C3%A9marrage/#retrouver-ladresse-ip-avec-la-freebox","text":"Vous pouvez acc\u00e9der \u00e0 l'interface web de votre Freebox \u00e0 l'adresse : FreeboxOs Voil\u00e0 une s\u00e9rie de captures d'\u00e9cran qui vous permettront de trouver l'adresse IP de votre raspi. Le mien a d\u00e9j\u00e0 \u00e9t\u00e9 configur\u00e9 avec le nom piras .","title":"Retrouver l'adresse IP avec la Freebox"},{"location":"Tutoriels/tutoraspi/Premier-d%C3%A9marrage/#premiere-connexion-en-ssh","text":"La commande est \u00e0 effectuer dans un terminal est la suivante : eric@aldebaran:~$ ssh pi@192.168.111.32 pi@192.168.111.32's password: Linux piras 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l 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 Nov 29 16:03:52 2020 from 192.168.111.150 pi@piras:~ $ Nous sommes connect\u00e9s. L'utilisateur pr\u00e9d\u00e9fini avec les droits sudo d'administration est pi et le mot de passe par d\u00e9faut est raspberry . Changez ce mot de passe avec la commande suivante : passwd Et suivez les instructions. Pensez \u00e0 utiliser un mot de passe fort, par exemple g\u00e9n\u00e9r\u00e9 avec le programme pwgen (voir les tutos : Installation d'un serveur Debian/Stretch s\u00e9curis\u00e9 et Installation d'un serveur Debian/Buster s\u00e9curis\u00e9 .)","title":"Premi\u00e8re connexion en SSH"},{"location":"Tutoriels/tutoraspi/Premier-d%C3%A9marrage/#premieres-configuration","text":"Tapez : sudo raspi-config et configurez le clavier, la langue, l'extension des partitions \u00e0 tout l'espace disponible sur la clef, le hostname, la time-zone et n'oubliez pas de faire un update/upgrade avant de re-d\u00e9marrer. Le clavier (commencez par l\u00e0) Choisissez le clavier fran\u00e7ais azerty. (ou autre selon votre configuration personnelle) Les locales Ajouter fr_FR.UTF8 et r\u00e9g\u00e9n\u00e9rez vos locales Choix du param\u00e8tre actif par d\u00e9faut : fr_FR.UTF8 sudo apt update && sudo apt upgrade Zone (fuseau horaire) Choisissez Europe/Paris si c'est bien votre zone ! Options avanc\u00e9es Agrandissez vos partitions pour qu'elles occupent tout l'espace disponible sur le carte SD (option A1) Rd\u00e9marrez votre Raspi. Au prochain red\u00e9marrage, faites une mise \u00e0 jour g\u00e9n\u00e9rale de votre syst\u00e8me avec la commande suivante qui red\u00e9marrera votre raspi \u00e0 la fin des op\u00e9rations : pi@raspberrypi:~ $ sudo apt update && sudo apt upgrade && sudo systemctl reboot R\u00e9ception de :1 http://raspbian.raspberrypi.org/raspbian buster InRelease [15,0 kB] Atteint :2 http://archive.raspberrypi.org/debian buster InRelease R\u00e9ception de :3 http://packages.microsoft.com/repos/code stable InRelease [10,4 kB] R\u00e9ception de :4 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages [13,0 MB] R\u00e9ception de :5 http://packages.microsoft.com/repos/code stable/main armhf Packages [13,6 kB] R\u00e9ception de :6 http://packages.microsoft.com/repos/code stable/main arm64 Packages [13,6 kB] R\u00e9ception de :7 http://packages.microsoft.com/repos/code stable/main amd64 Packages [13,0 kB] 13,1 Mo r\u00e9ceptionn\u00e9s en 38s (340 ko/s) Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Tous les paquets sont \u00e0 jour. Lecture des listes de paquets... Fait Construction de l'arbre des d\u00e9pendances Lecture des informations d'\u00e9tat... Fait Calcul de la mise \u00e0 jour... Fait 0 mis \u00e0 jour, 0 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour. pi@raspberrypi:~ $ Vous trouverez ces instructions sur de nombreux tutoriels et je ne vais pas les r\u00e9p\u00e9ter. Voyez les tutoriels sur la section tutoriels du site RaspberryPi.org par exemple, mais il y en a d'autres.","title":"premi\u00e8res configuration"},{"location":"Tutoriels/tutoraspi/R%C3%A9seau/","text":"R\u00e9seau Dans cette partie, nous allons donner \u00e0 notre raspi une adresse IP fixe, en IPV4 et IPV6. Nous allons utiliser ce qui est indiqu\u00e9 dans de nombreux tutoriels : modification du fichier /etc/dhcpcd.conf # Example static IP configuration: interface eth0 static ip_address=192.168.111.170/24 static ip6_address=2a01:e0a:d0:3c20::170/64 static routers=192.168.111.254 #static domain_name_servers=192.168.1.1 Les lignes \u00e0 modifier sont celles ci-dessus : enlever le # au d\u00e9but des lignes (sauf la premi\u00e8re et la derni\u00e8re) et renseigner en fonction des adresses IP voulues : ipv4 et ipv6. Il restera les serveurs DNS \u00e0 configurer (derni\u00e8re ligne), ce que nous ferons apr\u00e8s avoir install\u00e9 knot-resolver . Une fois les modifications dans le fichier /etc/dhcpcd.conf faites, vous pouvez re-d\u00e9marrer votre raspi. Test : pi@raspberrypi:~ $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether b8:27:eb:3a:0b:38 brd ff:ff:ff:ff:ff:ff inet 192.168.111.170/24 brd 192.168.111.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 2a01:e0a:d0:3c20:a23:93ca:de95:e15b/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 86388sec preferred_lft 86388sec inet6 2a01:e0a:d0:3c20::170/64 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::74c8:34d:25f2:3b43/64 scope link valid_lft forever preferred_lft forever pi@raspberrypi:~ $ Les adresses IP de votre serveur doivent correspondre \u00e0 ce que vous avez entr\u00e9 dans le fichier. On a bien : inet 192.168.111.170/24 inet6 2a01:e0a:d0:3c20::170/64 C'est tout bon !","title":"R\u00e9seau (des IPs fixes)"},{"location":"Tutoriels/tutoraspi/R%C3%A9seau/#reseau","text":"Dans cette partie, nous allons donner \u00e0 notre raspi une adresse IP fixe, en IPV4 et IPV6. Nous allons utiliser ce qui est indiqu\u00e9 dans de nombreux tutoriels : modification du fichier /etc/dhcpcd.conf # Example static IP configuration: interface eth0 static ip_address=192.168.111.170/24 static ip6_address=2a01:e0a:d0:3c20::170/64 static routers=192.168.111.254 #static domain_name_servers=192.168.1.1 Les lignes \u00e0 modifier sont celles ci-dessus : enlever le # au d\u00e9but des lignes (sauf la premi\u00e8re et la derni\u00e8re) et renseigner en fonction des adresses IP voulues : ipv4 et ipv6. Il restera les serveurs DNS \u00e0 configurer (derni\u00e8re ligne), ce que nous ferons apr\u00e8s avoir install\u00e9 knot-resolver . Une fois les modifications dans le fichier /etc/dhcpcd.conf faites, vous pouvez re-d\u00e9marrer votre raspi. Test : pi@raspberrypi:~ $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether b8:27:eb:3a:0b:38 brd ff:ff:ff:ff:ff:ff inet 192.168.111.170/24 brd 192.168.111.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 2a01:e0a:d0:3c20:a23:93ca:de95:e15b/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 86388sec preferred_lft 86388sec inet6 2a01:e0a:d0:3c20::170/64 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::74c8:34d:25f2:3b43/64 scope link valid_lft forever preferred_lft forever pi@raspberrypi:~ $ Les adresses IP de votre serveur doivent correspondre \u00e0 ce que vous avez entr\u00e9 dans le fichier. On a bien : inet 192.168.111.170/24 inet6 2a01:e0a:d0:3c20::170/64 C'est tout bon !","title":"R\u00e9seau"},{"location":"Tutoriels/tutoraspi/R%C3%A9sum%C3%A9/","text":"R\u00e9sum\u00e9 Objectifs Ce tutoriel va vous conduire tout le long de l'installation de la distribution RaspiOS, d\u00e9riv\u00e9e de Raspbian. La fondation RasperryPi a chang\u00e9 le nom de la distribution, car elle commen\u00e7ait \u00e0 diff\u00e9rer de la Raspbian dont elle est issue. Ils ont ajout\u00e9 des d\u00e9p\u00f4ts Microsoft, par exemple. Certainement pour des raisons valables (VSCode par exemple), mais cela a \u00e9t\u00e9 fait \u00abun peu en douce \u00bb. Revenons \u00e0 notre tutoriel : l'installation de base est \u00e0 l'image d'une installation Debian classique. La configuration de ssh par exemple est faite pour assurer une compatibilit\u00e9 maximale. Une configuration plus fine permet d'augmenter la s\u00e9curit\u00e9. C'est ce que nous ferons. Nous installerons un r\u00e9solveur DNS qui nous \u00e9vitera de compter sur celui de notre FAI, souvent menteur. Le blocage de sites est souvent r\u00e9alis\u00e9 par les FAI au niveau DNS. Avoir notre propre r\u00e9solveur r\u00e9soudra ce probl\u00e8me. Un programme de d\u00e9fense contre les attaques de \u00abbrute force \u00bb, fail2ban sera install\u00e9 avec surveillance des seuls services actifs : ssh et le mail . Un service de courrier \u00e9l\u00e9mentaire sera install\u00e9 avec postfix : le serveur pourra envoyer et recevoir des courriers, mais seulement pour les comptes user du serveur. Il sera utile pour que le logiciel de surveillance (monitoring) logwatch puisse envoyer ses rapports. Pour prot\u00e9ger tout le serveur, un pare-feu sera install\u00e9. Il ne permettra que les entr\u00e9es-sorties sur les ports que nous auront d\u00e9cid\u00e9s d'ouvrir : tout le reste sera bloqu\u00e9. Nous utiliserons iptables avec un \u00abfront end \u00bb, firewalld . Tout cela nous donnera une base saine sur laquelle nous pourrons installer d'autres services. Table des mati\u00e8res Pr\u00e9sentation du mat\u00e9riel (mes 2 raspis) Installation de base de la distribution RaspiOS lite Premier d\u00e9marrage (sans aucune s\u00e9curisation) \u00c9tat des lieux S\u00e9curisation du serveur (ssh) Configuration du r\u00e9seau (ips fixes) Installation d'un r\u00e9solveur DNS (knot-resolver) Installation d'un pare-feu (iptables et firewalld) Contrer les attaques de force brute avec fail2ban Surveillance du serveur (logwatch) Installation d'un serveur de courriers basique (postfix) Exemple d'utilisation : serveur Web Annexe","title":"R\u00e9sum\u00e9"},{"location":"Tutoriels/tutoraspi/R%C3%A9sum%C3%A9/#resume","text":"","title":"R\u00e9sum\u00e9"},{"location":"Tutoriels/tutoraspi/R%C3%A9sum%C3%A9/#objectifs","text":"Ce tutoriel va vous conduire tout le long de l'installation de la distribution RaspiOS, d\u00e9riv\u00e9e de Raspbian. La fondation RasperryPi a chang\u00e9 le nom de la distribution, car elle commen\u00e7ait \u00e0 diff\u00e9rer de la Raspbian dont elle est issue. Ils ont ajout\u00e9 des d\u00e9p\u00f4ts Microsoft, par exemple. Certainement pour des raisons valables (VSCode par exemple), mais cela a \u00e9t\u00e9 fait \u00abun peu en douce \u00bb. Revenons \u00e0 notre tutoriel : l'installation de base est \u00e0 l'image d'une installation Debian classique. La configuration de ssh par exemple est faite pour assurer une compatibilit\u00e9 maximale. Une configuration plus fine permet d'augmenter la s\u00e9curit\u00e9. C'est ce que nous ferons. Nous installerons un r\u00e9solveur DNS qui nous \u00e9vitera de compter sur celui de notre FAI, souvent menteur. Le blocage de sites est souvent r\u00e9alis\u00e9 par les FAI au niveau DNS. Avoir notre propre r\u00e9solveur r\u00e9soudra ce probl\u00e8me. Un programme de d\u00e9fense contre les attaques de \u00abbrute force \u00bb, fail2ban sera install\u00e9 avec surveillance des seuls services actifs : ssh et le mail . Un service de courrier \u00e9l\u00e9mentaire sera install\u00e9 avec postfix : le serveur pourra envoyer et recevoir des courriers, mais seulement pour les comptes user du serveur. Il sera utile pour que le logiciel de surveillance (monitoring) logwatch puisse envoyer ses rapports. Pour prot\u00e9ger tout le serveur, un pare-feu sera install\u00e9. Il ne permettra que les entr\u00e9es-sorties sur les ports que nous auront d\u00e9cid\u00e9s d'ouvrir : tout le reste sera bloqu\u00e9. Nous utiliserons iptables avec un \u00abfront end \u00bb, firewalld . Tout cela nous donnera une base saine sur laquelle nous pourrons installer d'autres services.","title":"Objectifs"},{"location":"Tutoriels/tutoraspi/R%C3%A9sum%C3%A9/#table-des-matieres","text":"Pr\u00e9sentation du mat\u00e9riel (mes 2 raspis) Installation de base de la distribution RaspiOS lite Premier d\u00e9marrage (sans aucune s\u00e9curisation) \u00c9tat des lieux S\u00e9curisation du serveur (ssh) Configuration du r\u00e9seau (ips fixes) Installation d'un r\u00e9solveur DNS (knot-resolver) Installation d'un pare-feu (iptables et firewalld) Contrer les attaques de force brute avec fail2ban Surveillance du serveur (logwatch) Installation d'un serveur de courriers basique (postfix) Exemple d'utilisation : serveur Web Annexe","title":"Table des mati\u00e8res"},{"location":"Tutoriels/tutoraspi/S%C3%A9curisation-SSH/","text":"S\u00e9curisation SSH Je vais baser cette partie sur plusieurs tutoriels auxquels vous voudrez bien vous r\u00e9f\u00e9rer pour avoir des explications plus pouss\u00e9es que celles que je vais donner. R\u00e9f\u00e9rences S\u00e9curiser OpenSSH SSH - Comment tester et s\u00e9curiser son serveur ? OpenSSH Config File Examples Vous pouvez trouver plein d'autres r\u00e9f\u00e9rences en fran\u00e7ais ou anglais en utilisant votre moteur de recherche pr\u00e9f\u00e9r\u00e9. Cr\u00e9ation d'une clef personnalis\u00e9e Nous allons cr\u00e9er une clef sp\u00e9cifique \u00e0 notre mini serveur. Auparavant, nous allons v\u00e9rifier le hostname de notre machine. Si vous l'avez configur\u00e9 avec raspi-config , il y a de grandes chances que le r\u00e9sultat ne soit pas bon. Sous Debian, le hostname est compos\u00e9 de 2 parties situ\u00e9es dans 2 fichiers diff\u00e9rents. /etc/hosts (contient le nom complet, FQDN) /etc/hostname (ne contient que le petit nom de la machine, sans le domaine) Test du hostname (sur notre raspi) pi@piras:~ $ hostname -f piras.yojik.net pi@piras:~ $ hostname piras pi@piras:~ $ Le fichier /etc/hostname ne doit contenir que le nom de la machine, pas le domaine : ici, piras, et c'est ce que renvoie la commande hostname . pi@piras:~ $ cat /etc/hostname piras pi@piras:~ $ hostname -f renvoie le \"fqdn\", ou nom complet de la machine, ici, piras.yojik.net. La r\u00e9f\u00e9rence compl\u00e8te du nom se trouve dans le fichier /etc/hosts. pi@piras:~ $ cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.1.1 piras.yojik.net piras pi@piras:~ $ Pour l'instant, c'est l'adresse 127.0.1.1 qui est utilis\u00e9e comme r\u00e9f\u00e9rence du nom, mais nous changerons \u00e7a d\u00e8s que nous aurons configur\u00e9 une adresse IPV4 et IPV6 fixe. Cr\u00e9ation de notre clef personnalis\u00e9e (sur le desktop, pas sur le raspi!) Nous utiliserons la commande : sh-keygen -o -a 100 -t ed25519 -f ~/.ssh/piras_ed25519 -C \"clef SSH de l'utilisateur pi du Raspi\" -o : Sauvegarde votre cl\u00e9 dans le nouveau format openssh au lieu de l\u2019ancien format PEM -C : insertion d'un commentaire (ce que vous voulez, votre adresse \u00e9mail ...). -f : nom du fichier \u00e0 produire -a : le nombre de tours de la clef de d\u00e9rivation (plus il est \u00e9lev\u00e9, plus il est difficile de la craquer en force brute, mais aussi plus c'est lent) eric@aldebaran:~$ ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/piras_ed25519 -C \"eric@yojik.eu\" Generating public/private ed25519 key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/eric/.ssh/piras_ed25519 Your public key has been saved in /home/eric/.ssh/piras_ed25519.pub The key fingerprint is: SHA256:yyDsyczL9W1QTTn9d5o0hwZ5A0bdMnCJgK9cniCeR0c eric@yojik.eu The key's randomart image is: +--[ED25519 256]--+ | ..o=O.o | | . E.B.O .| | o o + * | | . . o = . = =| | o..=SB . o =o| | = ooo=.o o | | * ..o. | | . o . .. | | o ... | +----[SHA256]-----+ Si vous allez dans ./.ssh, vous trouverez ceci : eric@aldebaran:~/.ssh$ ls -l total 44 -rw------- 1 eric eric 751 7 avril 2011 id_dsa -rw-r--r-- 1 eric eric 604 7 avril 2011 id_dsa.pub -rw------- 1 eric eric 1766 1 avril 2013 id_rsa -rw-r--r-- 1 eric eric 396 1 avril 2013 id_rsa.pub -rw-r--r-- 1 eric eric 3728 29 nov. 12:20 known_hosts -rw------- 1 eric eric 444 11 d\u00e9c. 18:17 piras_ed25519 -rw-r--r-- 1 eric eric 95 11 d\u00e9c. 18:17 piras_ed25519.pub eric@aldebaran:~/.ssh$ Nous voyons les clefs priv\u00e9es et publiques que nous avons cr\u00e9\u00e9es. (ainsi que d'anciennes clefs ...) V\u00e9rifiez les permissions, mais normalement les commandes ci-dessus les attribuent comme attendu (voir plus bas). Copie de la clef sur le serveur Nous utiliserons la commande : ssh-copy-id eric@aldebaran:~$ ssh-copy-id -i ~/.ssh/piras_ed25519.pub pi@192.168.111.32 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: \"/home/eric/.ssh/piras_ed25519.pub\" /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: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys pi@192.168.111.32's password: Number of key(s) added: 1 Now try logging into the machine, with: \"ssh 'pi@192.168.111.32'\" and check to make sure that only the key(s) you wanted were added. eric@aldebaran:~$ V\u00e9rifions la pr\u00e9sence de notre clef sur notre raspi, dans le fichier authorized_keys : pi@piras:~/.ssh $ cat authorized_keys ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAdDDO3ni4DHIxqfRaNZ4SBudrSlRoQjLm/fd2SSjxtM eric@yojik.eu pi@piras:~/.ssh $ C'est bon, elle est l\u00e0 ! Essai de connexion avec notre nouvelle clef eric@aldebaran:~$ ssh -i ~/.ssh/piras_ed25519 'pi@192.168.111.32' Linux piras 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l 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: Fri Dec 11 18:46:55 2020 from 192.168.111.150 pi@piras:~ $ \u00e7a marche ... j'ai pr\u00e9cis\u00e9 la clef SSH \u00e0 utiliser avec l'option -i nom_de_la_clef . Configuration de ssh sur la machine de travail Je poss\u00e8de plusieurs clefs qui sont sp\u00e9cifiques \u00e0 certains serveurs (ceux dans ma cave, et ceux sur internet). Nous allons rajouter une configuration pour permettre la s\u00e9lection automatique de la bonne clef pour chaque serveur. Cela se fait dans le fichier ~/.ssh/config Le sch\u00e9ma \u00e0 utiliser est le suivant : eric@aldebaran:~$ cat ./.ssh/config Host piras piras.yojik.net HostName 192.168.111.32 IdentityFile ~/.ssh/piras_ed25519 User pi Host adara adara.yojik.eu HostName adara.yojik.eu IdentityFile ~/.ssh/id_rsa User ericadmin eric@aldebaran:~$ Cela me permet de me connecter avec la commande : ssh piras Voil\u00e0 \u00e0 quoi ressemble mon r\u00e9pertoire ~/.ssh : eric@aldebaran:~$ tree .ssh .ssh \u251c\u2500\u2500 adara \u2502 \u251c\u2500\u2500 adara_ed25519 \u2502 \u2514\u2500\u2500 adara_ed25519.pub \u251c\u2500\u2500 aijan \u2502 \u251c\u2500\u2500 aijan_ed25519 \u2502 \u2514\u2500\u2500 aijan_ed25519.pub \u251c\u2500\u2500 alya \u2502 \u251c\u2500\u2500 alya_ed25519 \u2502 \u2514\u2500\u2500 alya_ed25519.pub \u251c\u2500\u2500 atom \u2502 \u251c\u2500\u2500 atom_ed25519 \u2502 \u2514\u2500\u2500 atom_ed25519.pub \u251c\u2500\u2500 config \u251c\u2500\u2500 id_dsa \u251c\u2500\u2500 id_dsa.pub \u251c\u2500\u2500 id_ed25519 \u251c\u2500\u2500 id_ed25519.pub \u251c\u2500\u2500 id_rsa \u251c\u2500\u2500 id_rsa.pub \u251c\u2500\u2500 known_hosts \u251c\u2500\u2500 mynas2 \u2502 \u251c\u2500\u2500 mynas2_ed25519 \u2502 \u2514\u2500\u2500 mynas2_ed25519.pub \u251c\u2500\u2500 mynas3 \u2502 \u251c\u2500\u2500 mynas3_ed25519 \u2502 \u2514\u2500\u2500 mynas3_ed25519.pub \u251c\u2500\u2500 ns1 \u2502 \u251c\u2500\u2500 ns1_ed25519 \u2502 \u2514\u2500\u2500 ns1_ed25519.pub \u251c\u2500\u2500 ns2 \u2502 \u251c\u2500\u2500 ns2_ed25519 \u2502 \u2514\u2500\u2500 ns2_ed25519.pub \u251c\u2500\u2500 piras \u2502 \u251c\u2500\u2500 piras_ed25519 \u2502 \u2514\u2500\u2500 piras_ed25519.pub \u2514\u2500\u2500 polis \u251c\u2500\u2500 polis_ed25519 \u2514\u2500\u2500 polis_ed25519.pub J'ai mis l'adresse IP ; j'aurai pu mettre le nom FQDN du serveur, mais je le ferai une fois les adresses IP fix\u00e9es. Modifions les permissions pour qu'elles soient conformes \u00e0 ce que demande SSH. (en fait, les bonnes permissions \u00e9taient d\u00e9j\u00e0 appliqu\u00e9es par la commande ssh-keygen). Si vous organisez votre structure de r\u00e9pertoires comme ci-dessus, ajustez les permissions comme ceci : Si vous cr\u00e9ez un r\u00e9pertoire nomm\u00e9 ~/.ssh/piras ajustez les droits du r\u00e9pertoire comme suit : chmod 700 ~/.ssh/piras Et pour les clefs priv\u00e9es/publiques : chmod 600 ~/.ssh/config chmod 600 ~/.ssh/piras/piras_ed25519 chmod 600 ~/.ssh/piras/piras_ed25519.pub Test de connexion eric@aldebaran:~$ ssh piras Linux piras 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l 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: Fri Dec 11 18:49:37 2020 from 192.168.111.150 pi@piras:~ $ \u00c7a marche ;) Am\u00e9lioration Nous allons modifier temporairement (et le re-modifierons une fois les adresses fix\u00e9es) notre fichier /etc/hosts sur notre machine de travail pour pouvoir utiliser la m\u00e9thode par nom plut\u00f4t que par adresse IP. Ajoutons la r\u00e9f\u00e9rence \u00e0 notre raspi : eric@aldebaran:~$ cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 aldebaran.yojik.net aldebaran 192.168.111.32 piras.yojik.net piras # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters eric@aldebaran:~$ Modification de ./.ssh/config : eric@aldebaran:~$ cat ./.ssh/config Host piras piras.yojik.net HostName piras.yojik.net IdentityFile ~/.ssh/piras_ed25519 User pi Host adara adara.yojik.eu HostName adara.yojik.eu IdentityFile ~/.ssh/id_rsa User ericadmin eric@aldebaran:~$ Test : eric@aldebaran:~$ ssh piras The authenticity of host 'piras.yojik.net (192.168.111.32)' can't be established. ECDSA key fingerprint is SHA256:DjB1teyxsYAZzGBV8BIXiG5+UAb3JU5SHp7vu/xArG8. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'piras.yojik.net' (ECDSA) to the list of known hosts. Linux piras 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l 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: Fri Dec 11 19:17:50 2020 from 192.168.111.150 pi@piras:~ $ L'adresse de notre raspi a \u00e9t\u00e9 ajout\u00e9e au fichier ./.ssh/known_hosts Modification du fichier /etc/ssh/sshd_config Nous allons modifier ce fichier pour plus de s\u00e9curit\u00e9 : pas de connexion de l'utilisateur root connexion uniquement par clef (pas par login/mot de passe) suppression du support des protocoles non s\u00fbrs autorisation de connexion sur liste blanche connexion en IPV4 et IPV6 Tout d'abord, sauvegarde du r\u00e9pertoire /etc/ssh : pi@raspberrypi:/etc $ sudo cp -R ssh ssh.orig pi@raspberrypi:/etc $ Ensuite, cr\u00e9ation du nouveau fichier (apr\u00e8s installation de vim, mais vous pouvez prendre l'\u00e9diteur de votre choix, nano par exemple qui est install\u00e9 par d\u00e9faut): Pour installer vim, tapez : sudo apt install vim Voil\u00e0 une copie du fichier de conf du site troxyworld dont j'ai d\u00e9j\u00e0 donn\u00e9 les r\u00e9f\u00e9rences : # Interface & Port Port 61022 AddressFamily any ListenAddress 0.0.0.0 ListenAddress :: HostKey /etc/ssh/ssh_host_ed25519_key Protocol 2 SyslogFacility AUTHPRIV LogLevel VERBOSE # Authentication restriction LoginGraceTime 30s PermitRootLogin no StrictModes yes MaxAuthTries 3 MaxSessions 5 PubkeyAuthentication yes AllowUsers hmichael AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 HostbasedAuthentication no IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! PermitEmptyPasswords no PasswordAuthentication no # Change to no to disable s/key passwords ChallengeResponseAuthentication no UsePAM yes AllowAgentForwarding no AllowTcpForwarding no GatewayPorts no X11Forwarding no PermitTTY yes PermitUserEnvironment no PrintMotd no PrintLastLog no #TCPKeepAlive yes #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3 #ShowPatchLevel no UseDNS yes PidFile /var/run/sshd.pid MaxStartups 10:30:100 PermitTunnel no #ChrootDirectory none VersionAddendum none # no default banner path Banner none # Accept locale-related environment variables AcceptEnv LANG LC_* # override default of no subsystems Subsystem sftp /usr/libexec/openssh/sftp-server Et voici une version par Synthic : # Utilisation de la version 2 du protocole SSH Protocol 2 # Utilisation du port 22. Il est possible de le modifier Port 22 # Interdit \u00e0 root de s'identifier PermitRootLogin no PermitEmptyPasswords no # On indique ici la liste des utilisateurs ayant la permission d'utiliser SSH AllowUsers utilisateur # Nombre d'essais avant fermeture de la connexion MaxAuthTries 3 UsePAM no # Authentification par cl\u00e9s PubkeyAuthentication yes # Lieux o\u00f9 sont stock\u00e9es les cl\u00e9s publiques --> /home/user/.ssh/authorized_keys AuthorizedKeysFile .ssh/authorized_keys ChallengeResponseAuthentication yes # D\u00e9sactivation de l'authentification par mot de passe PasswordAuthentication no IgnoreRhosts yes HostbasedAuthentication no AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server PrintMotd no Ciphers aes256-ctr,aes192-ctr,aes128-ctr X11Forwarding no Voil\u00e0 mon fichier de configuration, \u00e0 adapter suivant vos pr\u00e9f\u00e9rences (surtout n'oubliez pas d'ajuster le user dans l'option AllowUsers \u00e0 votre cas particulier) Pour ma part, je vais garder le port 22 ; je le changerai peut-\u00eatre plus tard. Protocol 2 Port 22 Blocage de root PermitRootLogin no Pas de mot de passe vide PermitEmptyPasswords no Seul l'utilisateur pi est autoris\u00e9 AllowUsers pi Connexion uniquement pas clef PubkeyAuthentication yes Modification et limite des tentatives de connexion LoginGraceTime 30s PermitRootLogin no StrictModes yes MaxAuthTries 3 MaxSessions 5 Les fichiers de clef autoris\u00e9s AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 Voici la copie du fichier complet : pi@raspberrypi:~ $ cat /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. Port 22 #AddressFamily any # A d\u00e9commenter apr\u00e8s test sur sur site d'audit, car nos r\u00e9glages ne permettent # que de se connecter \u00e0 partir de notre r\u00e9seau local # Si vous voulez que votre serveur soit accessible \u00e0 partir de l'ext\u00e9rieur # gardez les valeurs par d\u00e9faut (ou les options comment\u00e9es) #ListenAddress 0.0.0.0 #ListenAddress :: # Nouveaux r\u00e9glages # ListenAddress 192.168.111.0 # ListenAddress 2a01:e0a:d0:3c20::0 # On ne permet que la connexion avec une clef forte #HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key # Ciphers and keying #RekeyLimit default none # Logging # Modification du niveau de logging pour plus de d\u00e9tails #SyslogFacility AUTH SysLogFacility AUTHPRIV #LogLevel INFO LogLevel VERBOSE # Authentication: # C'est ici que l'on va ne permettre que l'acc\u00e8s par clef partag\u00e9e # et interdire l'acc\u00e8s par mot de passe # De plus on configure le nombre d'essais et le d\u00e9lai de connexion # \u00e0 des valeurs plus courtes LoginGraceTime 30s PermitRootLogin no StrictModes yes MaxAuthTries 3 MaxSessions 5 PubkeyAuthentication yes # Ajout d'une liste blanche d'utilisateurs autoris\u00e9s \u00e0 se connecter # ici, seulement l'utilisateur pi AllowUsers pi # Expect .ssh/authorized_keys2 to be disregarded by default in future. AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 #AuthorizedPrincipalsFile none #AuthorizedKeysCommand none #AuthorizedKeysCommandUser nobody # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! # Interdiction de connexion pas login/mot de passe PasswordAuthentication no # Interdiction de mot de passe vides PermitEmptyPasswords no # Change to yes to enable challenge-response passwords (beware issues with # some PAM modules and threads) ChallengeResponseAuthentication no # Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no # GSSAPI options #GSSAPIAuthentication no #GSSAPICleanupCredentials yes #GSSAPIStrictAcceptorCheck yes #GSSAPIKeyExchange no # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of \"PermitRootLogin without-password\". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. UsePAM yes # On va interdire le forwarding AllowAgentForwarding no AllowTcpForwarding no GatewayPorts no X11Forwarding no #X11DisplayOffset 10 #X11UseLocalhost yes #PermitTTY yes # Pas de message d'acceuil de SSHD PrintMotd no #PrintLastLog yes #TCPKeepAlive yes #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3 # Utilisation du DNS UseDNS yes #PidFile /var/run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none #VersionAddendum none # no default banner path Banner none # Allow client to pass locale environment variables AcceptEnv LANG LC_* # override default of no subsystems Subsystem sftp /usr/lib/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server pi@raspberrypi:~ $ On red\u00e9marre sshd sudo systemctl restart sshd.service On teste si le service a bien red\u00e9marr\u00e9 sans erreurs : pi@raspberrypi:~ $ sudo systemctl status sshd.service \u25cf ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-02-14 14:59:47 CET; 7s ago Docs: man:sshd(8) man:sshd_config(5) Process: 523 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS) Main PID: 524 (sshd) Tasks: 1 (limit: 269) CGroup: /system.slice/ssh.service \u2514\u2500524 /usr/sbin/sshd -D f\u00e9vr. 14 14:59:46 raspberrypi systemd[1]: Starting OpenBSD Secure Shell server... f\u00e9vr. 14 14:59:46 raspberrypi sshd[524]: Server listening on 0.0.0.0 port 22. f\u00e9vr. 14 14:59:47 raspberrypi sshd[524]: Server listening on :: port 22. f\u00e9vr. 14 14:59:47 raspberrypi systemd[1]: Started OpenBSD Secure Shell server. pi@raspberrypi:~ $ C'est bon. Essai de connexion : eric@aldebaran:~$ ssh piras The authenticity of host 'piras.yojik.net (192.168.111.170)' can't be established. ED25519 key fingerprint is SHA256:NW70QB3uNQ1cnrTQyfXG1Lu1iTDubEv6Oak4PK+DR1k. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'piras.yojik.net,192.168.111.170' (ED25519) to the list of known hosts. Enter passphrase for key '/home/eric/.ssh/piras/piras_ed25519': Linux raspberrypi 5.10.11+ #1399 Thu Jan 28 12:02:28 GMT 2021 armv6l 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 Feb 14 15:02:55 2021 from 192.168.111.150 pi@raspberrypi:~ $ C'est bon. Test sur le site d'audit : Bien, apr\u00e8s avoir effac\u00e9 toutes les donn\u00e9es personnelles de mon navigateur (donn\u00e9es qui entra\u00eenent une erreur \u00abThe csrf token is invalid \u00bb), le test revient toujours avec une mauvaise note. D'o\u00f9 la suite. Les instructions pour am\u00e9liorer sont \u00e9galement sur le site SSH-Audit.com recommendations On va s\u00e9curiser les \u00e9changes en jouant sur 3 options suppl\u00e9mentaires : Ciphers : Le chiffrement utilis\u00e9. KexAlgorithms : Les algorithmes utilis\u00e9s pour l\u2019\u00e9change de cl\u00e9s. MACs : Message Authentication code, c\u2019est le code qui accompagnent les donn\u00e9es \u00e9chang\u00e9es dans le but d\u2019assurer leur int\u00e9grit\u00e9 pour \u00eatre certain qu\u2019elles n\u2019ont subies aucune alt\u00e9ration pendant/apr\u00e8s la transmission. Voil\u00e0 les \u00e9tapes \u00e0 suivre (reprises quasi texto des sites d\u00e9j\u00e0 cit\u00e9s) : R\u00e9g\u00e9n\u00e9ration de la cl\u00e9 ED25519 du serveur : sudo rm -f /etc/ssh/ssh_host_* sudo ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N \"\" Retrait des moduli Diffie-Hellman faible : sudo awk '$5 >= 3071' /etc/ssh/moduli > /home/pi/moduli.safe sudo mv -f /home/pi/moduli.safe /etc/ssh/moduli D\u00e9sactivation des cl\u00e9s DSA/ECDSA & RSA si ce n\u2019est pas d\u00e9j\u00e0 fait : sudo sed -i 's/^HostKey \\/etc\\/ssh\\/ssh_host_\\(dsa\\|ecdsa\\|rsa\\)_key$/\\#HostKey \\/etc\\/ssh\\/ssh_host_\\1_key/g' /etc/ssh/sshd_config Restriction des ciphers, cl\u00e9s d\u2019\u00e9change et des codes d\u2019authentification : Ajoutez ceci \u00e0 la fin du fichier /etc/sshd_config: KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512 Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com Red\u00e9marrage de sshd sudo systemctl restart sshd.service Test sur le site ssh audit Tout est OK ... nous sommes pass\u00e9s d'une note F \u00e0 A+ .","title":"S\u00e9curisation SSH"},{"location":"Tutoriels/tutoraspi/S%C3%A9curisation-SSH/#securisation-ssh","text":"Je vais baser cette partie sur plusieurs tutoriels auxquels vous voudrez bien vous r\u00e9f\u00e9rer pour avoir des explications plus pouss\u00e9es que celles que je vais donner.","title":"S\u00e9curisation SSH"},{"location":"Tutoriels/tutoraspi/S%C3%A9curisation-SSH/#references","text":"S\u00e9curiser OpenSSH SSH - Comment tester et s\u00e9curiser son serveur ? OpenSSH Config File Examples Vous pouvez trouver plein d'autres r\u00e9f\u00e9rences en fran\u00e7ais ou anglais en utilisant votre moteur de recherche pr\u00e9f\u00e9r\u00e9.","title":"R\u00e9f\u00e9rences"},{"location":"Tutoriels/tutoraspi/S%C3%A9curisation-SSH/#creation-dune-clef-personnalisee","text":"Nous allons cr\u00e9er une clef sp\u00e9cifique \u00e0 notre mini serveur. Auparavant, nous allons v\u00e9rifier le hostname de notre machine. Si vous l'avez configur\u00e9 avec raspi-config , il y a de grandes chances que le r\u00e9sultat ne soit pas bon. Sous Debian, le hostname est compos\u00e9 de 2 parties situ\u00e9es dans 2 fichiers diff\u00e9rents. /etc/hosts (contient le nom complet, FQDN) /etc/hostname (ne contient que le petit nom de la machine, sans le domaine)","title":"Cr\u00e9ation d'une clef personnalis\u00e9e"},{"location":"Tutoriels/tutoraspi/S%C3%A9curisation-SSH/#test-du-hostname-sur-notre-raspi","text":"pi@piras:~ $ hostname -f piras.yojik.net pi@piras:~ $ hostname piras pi@piras:~ $ Le fichier /etc/hostname ne doit contenir que le nom de la machine, pas le domaine : ici, piras, et c'est ce que renvoie la commande hostname . pi@piras:~ $ cat /etc/hostname piras pi@piras:~ $ hostname -f renvoie le \"fqdn\", ou nom complet de la machine, ici, piras.yojik.net. La r\u00e9f\u00e9rence compl\u00e8te du nom se trouve dans le fichier /etc/hosts. pi@piras:~ $ cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.1.1 piras.yojik.net piras pi@piras:~ $ Pour l'instant, c'est l'adresse 127.0.1.1 qui est utilis\u00e9e comme r\u00e9f\u00e9rence du nom, mais nous changerons \u00e7a d\u00e8s que nous aurons configur\u00e9 une adresse IPV4 et IPV6 fixe.","title":"Test du hostname (sur notre raspi)"},{"location":"Tutoriels/tutoraspi/S%C3%A9curisation-SSH/#creation-de-notre-clef-personnalisee-sur-le-desktop-pas-sur-le-raspi","text":"Nous utiliserons la commande : sh-keygen -o -a 100 -t ed25519 -f ~/.ssh/piras_ed25519 -C \"clef SSH de l'utilisateur pi du Raspi\" -o : Sauvegarde votre cl\u00e9 dans le nouveau format openssh au lieu de l\u2019ancien format PEM -C : insertion d'un commentaire (ce que vous voulez, votre adresse \u00e9mail ...). -f : nom du fichier \u00e0 produire -a : le nombre de tours de la clef de d\u00e9rivation (plus il est \u00e9lev\u00e9, plus il est difficile de la craquer en force brute, mais aussi plus c'est lent) eric@aldebaran:~$ ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/piras_ed25519 -C \"eric@yojik.eu\" Generating public/private ed25519 key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/eric/.ssh/piras_ed25519 Your public key has been saved in /home/eric/.ssh/piras_ed25519.pub The key fingerprint is: SHA256:yyDsyczL9W1QTTn9d5o0hwZ5A0bdMnCJgK9cniCeR0c eric@yojik.eu The key's randomart image is: +--[ED25519 256]--+ | ..o=O.o | | . E.B.O .| | o o + * | | . . o = . = =| | o..=SB . o =o| | = ooo=.o o | | * ..o. | | . o . .. | | o ... | +----[SHA256]-----+ Si vous allez dans ./.ssh, vous trouverez ceci : eric@aldebaran:~/.ssh$ ls -l total 44 -rw------- 1 eric eric 751 7 avril 2011 id_dsa -rw-r--r-- 1 eric eric 604 7 avril 2011 id_dsa.pub -rw------- 1 eric eric 1766 1 avril 2013 id_rsa -rw-r--r-- 1 eric eric 396 1 avril 2013 id_rsa.pub -rw-r--r-- 1 eric eric 3728 29 nov. 12:20 known_hosts -rw------- 1 eric eric 444 11 d\u00e9c. 18:17 piras_ed25519 -rw-r--r-- 1 eric eric 95 11 d\u00e9c. 18:17 piras_ed25519.pub eric@aldebaran:~/.ssh$ Nous voyons les clefs priv\u00e9es et publiques que nous avons cr\u00e9\u00e9es. (ainsi que d'anciennes clefs ...) V\u00e9rifiez les permissions, mais normalement les commandes ci-dessus les attribuent comme attendu (voir plus bas).","title":"Cr\u00e9ation de notre clef personnalis\u00e9e (sur le desktop, pas sur le raspi!)"},{"location":"Tutoriels/tutoraspi/S%C3%A9curisation-SSH/#copie-de-la-clef-sur-le-serveur","text":"Nous utiliserons la commande : ssh-copy-id eric@aldebaran:~$ ssh-copy-id -i ~/.ssh/piras_ed25519.pub pi@192.168.111.32 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: \"/home/eric/.ssh/piras_ed25519.pub\" /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: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys pi@192.168.111.32's password: Number of key(s) added: 1 Now try logging into the machine, with: \"ssh 'pi@192.168.111.32'\" and check to make sure that only the key(s) you wanted were added. eric@aldebaran:~$ V\u00e9rifions la pr\u00e9sence de notre clef sur notre raspi, dans le fichier authorized_keys : pi@piras:~/.ssh $ cat authorized_keys ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAdDDO3ni4DHIxqfRaNZ4SBudrSlRoQjLm/fd2SSjxtM eric@yojik.eu pi@piras:~/.ssh $ C'est bon, elle est l\u00e0 !","title":"Copie de la clef sur le serveur"},{"location":"Tutoriels/tutoraspi/S%C3%A9curisation-SSH/#essai-de-connexion-avec-notre-nouvelle-clef","text":"eric@aldebaran:~$ ssh -i ~/.ssh/piras_ed25519 'pi@192.168.111.32' Linux piras 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l 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: Fri Dec 11 18:46:55 2020 from 192.168.111.150 pi@piras:~ $ \u00e7a marche ... j'ai pr\u00e9cis\u00e9 la clef SSH \u00e0 utiliser avec l'option -i nom_de_la_clef .","title":"Essai de connexion avec notre nouvelle clef"},{"location":"Tutoriels/tutoraspi/S%C3%A9curisation-SSH/#configuration-de-ssh-sur-la-machine-de-travail","text":"Je poss\u00e8de plusieurs clefs qui sont sp\u00e9cifiques \u00e0 certains serveurs (ceux dans ma cave, et ceux sur internet). Nous allons rajouter une configuration pour permettre la s\u00e9lection automatique de la bonne clef pour chaque serveur. Cela se fait dans le fichier ~/.ssh/config Le sch\u00e9ma \u00e0 utiliser est le suivant : eric@aldebaran:~$ cat ./.ssh/config Host piras piras.yojik.net HostName 192.168.111.32 IdentityFile ~/.ssh/piras_ed25519 User pi Host adara adara.yojik.eu HostName adara.yojik.eu IdentityFile ~/.ssh/id_rsa User ericadmin eric@aldebaran:~$ Cela me permet de me connecter avec la commande : ssh piras Voil\u00e0 \u00e0 quoi ressemble mon r\u00e9pertoire ~/.ssh : eric@aldebaran:~$ tree .ssh .ssh \u251c\u2500\u2500 adara \u2502 \u251c\u2500\u2500 adara_ed25519 \u2502 \u2514\u2500\u2500 adara_ed25519.pub \u251c\u2500\u2500 aijan \u2502 \u251c\u2500\u2500 aijan_ed25519 \u2502 \u2514\u2500\u2500 aijan_ed25519.pub \u251c\u2500\u2500 alya \u2502 \u251c\u2500\u2500 alya_ed25519 \u2502 \u2514\u2500\u2500 alya_ed25519.pub \u251c\u2500\u2500 atom \u2502 \u251c\u2500\u2500 atom_ed25519 \u2502 \u2514\u2500\u2500 atom_ed25519.pub \u251c\u2500\u2500 config \u251c\u2500\u2500 id_dsa \u251c\u2500\u2500 id_dsa.pub \u251c\u2500\u2500 id_ed25519 \u251c\u2500\u2500 id_ed25519.pub \u251c\u2500\u2500 id_rsa \u251c\u2500\u2500 id_rsa.pub \u251c\u2500\u2500 known_hosts \u251c\u2500\u2500 mynas2 \u2502 \u251c\u2500\u2500 mynas2_ed25519 \u2502 \u2514\u2500\u2500 mynas2_ed25519.pub \u251c\u2500\u2500 mynas3 \u2502 \u251c\u2500\u2500 mynas3_ed25519 \u2502 \u2514\u2500\u2500 mynas3_ed25519.pub \u251c\u2500\u2500 ns1 \u2502 \u251c\u2500\u2500 ns1_ed25519 \u2502 \u2514\u2500\u2500 ns1_ed25519.pub \u251c\u2500\u2500 ns2 \u2502 \u251c\u2500\u2500 ns2_ed25519 \u2502 \u2514\u2500\u2500 ns2_ed25519.pub \u251c\u2500\u2500 piras \u2502 \u251c\u2500\u2500 piras_ed25519 \u2502 \u2514\u2500\u2500 piras_ed25519.pub \u2514\u2500\u2500 polis \u251c\u2500\u2500 polis_ed25519 \u2514\u2500\u2500 polis_ed25519.pub J'ai mis l'adresse IP ; j'aurai pu mettre le nom FQDN du serveur, mais je le ferai une fois les adresses IP fix\u00e9es. Modifions les permissions pour qu'elles soient conformes \u00e0 ce que demande SSH. (en fait, les bonnes permissions \u00e9taient d\u00e9j\u00e0 appliqu\u00e9es par la commande ssh-keygen). Si vous organisez votre structure de r\u00e9pertoires comme ci-dessus, ajustez les permissions comme ceci : Si vous cr\u00e9ez un r\u00e9pertoire nomm\u00e9 ~/.ssh/piras ajustez les droits du r\u00e9pertoire comme suit : chmod 700 ~/.ssh/piras Et pour les clefs priv\u00e9es/publiques : chmod 600 ~/.ssh/config chmod 600 ~/.ssh/piras/piras_ed25519 chmod 600 ~/.ssh/piras/piras_ed25519.pub","title":"Configuration de ssh sur la machine de travail"},{"location":"Tutoriels/tutoraspi/S%C3%A9curisation-SSH/#test-de-connexion","text":"eric@aldebaran:~$ ssh piras Linux piras 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l 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: Fri Dec 11 18:49:37 2020 from 192.168.111.150 pi@piras:~ $ \u00c7a marche ;)","title":"Test de connexion"},{"location":"Tutoriels/tutoraspi/S%C3%A9curisation-SSH/#amelioration","text":"Nous allons modifier temporairement (et le re-modifierons une fois les adresses fix\u00e9es) notre fichier /etc/hosts sur notre machine de travail pour pouvoir utiliser la m\u00e9thode par nom plut\u00f4t que par adresse IP. Ajoutons la r\u00e9f\u00e9rence \u00e0 notre raspi : eric@aldebaran:~$ cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 aldebaran.yojik.net aldebaran 192.168.111.32 piras.yojik.net piras # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters eric@aldebaran:~$ Modification de ./.ssh/config : eric@aldebaran:~$ cat ./.ssh/config Host piras piras.yojik.net HostName piras.yojik.net IdentityFile ~/.ssh/piras_ed25519 User pi Host adara adara.yojik.eu HostName adara.yojik.eu IdentityFile ~/.ssh/id_rsa User ericadmin eric@aldebaran:~$ Test : eric@aldebaran:~$ ssh piras The authenticity of host 'piras.yojik.net (192.168.111.32)' can't be established. ECDSA key fingerprint is SHA256:DjB1teyxsYAZzGBV8BIXiG5+UAb3JU5SHp7vu/xArG8. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'piras.yojik.net' (ECDSA) to the list of known hosts. Linux piras 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l 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: Fri Dec 11 19:17:50 2020 from 192.168.111.150 pi@piras:~ $ L'adresse de notre raspi a \u00e9t\u00e9 ajout\u00e9e au fichier ./.ssh/known_hosts","title":"Am\u00e9lioration"},{"location":"Tutoriels/tutoraspi/S%C3%A9curisation-SSH/#modification-du-fichier-etcsshsshd_config","text":"Nous allons modifier ce fichier pour plus de s\u00e9curit\u00e9 : pas de connexion de l'utilisateur root connexion uniquement par clef (pas par login/mot de passe) suppression du support des protocoles non s\u00fbrs autorisation de connexion sur liste blanche connexion en IPV4 et IPV6 Tout d'abord, sauvegarde du r\u00e9pertoire /etc/ssh : pi@raspberrypi:/etc $ sudo cp -R ssh ssh.orig pi@raspberrypi:/etc $ Ensuite, cr\u00e9ation du nouveau fichier (apr\u00e8s installation de vim, mais vous pouvez prendre l'\u00e9diteur de votre choix, nano par exemple qui est install\u00e9 par d\u00e9faut): Pour installer vim, tapez : sudo apt install vim Voil\u00e0 une copie du fichier de conf du site troxyworld dont j'ai d\u00e9j\u00e0 donn\u00e9 les r\u00e9f\u00e9rences : # Interface & Port Port 61022 AddressFamily any ListenAddress 0.0.0.0 ListenAddress :: HostKey /etc/ssh/ssh_host_ed25519_key Protocol 2 SyslogFacility AUTHPRIV LogLevel VERBOSE # Authentication restriction LoginGraceTime 30s PermitRootLogin no StrictModes yes MaxAuthTries 3 MaxSessions 5 PubkeyAuthentication yes AllowUsers hmichael AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 HostbasedAuthentication no IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! PermitEmptyPasswords no PasswordAuthentication no # Change to no to disable s/key passwords ChallengeResponseAuthentication no UsePAM yes AllowAgentForwarding no AllowTcpForwarding no GatewayPorts no X11Forwarding no PermitTTY yes PermitUserEnvironment no PrintMotd no PrintLastLog no #TCPKeepAlive yes #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3 #ShowPatchLevel no UseDNS yes PidFile /var/run/sshd.pid MaxStartups 10:30:100 PermitTunnel no #ChrootDirectory none VersionAddendum none # no default banner path Banner none # Accept locale-related environment variables AcceptEnv LANG LC_* # override default of no subsystems Subsystem sftp /usr/libexec/openssh/sftp-server Et voici une version par Synthic : # Utilisation de la version 2 du protocole SSH Protocol 2 # Utilisation du port 22. Il est possible de le modifier Port 22 # Interdit \u00e0 root de s'identifier PermitRootLogin no PermitEmptyPasswords no # On indique ici la liste des utilisateurs ayant la permission d'utiliser SSH AllowUsers utilisateur # Nombre d'essais avant fermeture de la connexion MaxAuthTries 3 UsePAM no # Authentification par cl\u00e9s PubkeyAuthentication yes # Lieux o\u00f9 sont stock\u00e9es les cl\u00e9s publiques --> /home/user/.ssh/authorized_keys AuthorizedKeysFile .ssh/authorized_keys ChallengeResponseAuthentication yes # D\u00e9sactivation de l'authentification par mot de passe PasswordAuthentication no IgnoreRhosts yes HostbasedAuthentication no AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server PrintMotd no Ciphers aes256-ctr,aes192-ctr,aes128-ctr X11Forwarding no Voil\u00e0 mon fichier de configuration, \u00e0 adapter suivant vos pr\u00e9f\u00e9rences (surtout n'oubliez pas d'ajuster le user dans l'option AllowUsers \u00e0 votre cas particulier) Pour ma part, je vais garder le port 22 ; je le changerai peut-\u00eatre plus tard. Protocol 2 Port 22 Blocage de root PermitRootLogin no Pas de mot de passe vide PermitEmptyPasswords no Seul l'utilisateur pi est autoris\u00e9 AllowUsers pi Connexion uniquement pas clef PubkeyAuthentication yes Modification et limite des tentatives de connexion LoginGraceTime 30s PermitRootLogin no StrictModes yes MaxAuthTries 3 MaxSessions 5 Les fichiers de clef autoris\u00e9s AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 Voici la copie du fichier complet : pi@raspberrypi:~ $ cat /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. Port 22 #AddressFamily any # A d\u00e9commenter apr\u00e8s test sur sur site d'audit, car nos r\u00e9glages ne permettent # que de se connecter \u00e0 partir de notre r\u00e9seau local # Si vous voulez que votre serveur soit accessible \u00e0 partir de l'ext\u00e9rieur # gardez les valeurs par d\u00e9faut (ou les options comment\u00e9es) #ListenAddress 0.0.0.0 #ListenAddress :: # Nouveaux r\u00e9glages # ListenAddress 192.168.111.0 # ListenAddress 2a01:e0a:d0:3c20::0 # On ne permet que la connexion avec une clef forte #HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key # Ciphers and keying #RekeyLimit default none # Logging # Modification du niveau de logging pour plus de d\u00e9tails #SyslogFacility AUTH SysLogFacility AUTHPRIV #LogLevel INFO LogLevel VERBOSE # Authentication: # C'est ici que l'on va ne permettre que l'acc\u00e8s par clef partag\u00e9e # et interdire l'acc\u00e8s par mot de passe # De plus on configure le nombre d'essais et le d\u00e9lai de connexion # \u00e0 des valeurs plus courtes LoginGraceTime 30s PermitRootLogin no StrictModes yes MaxAuthTries 3 MaxSessions 5 PubkeyAuthentication yes # Ajout d'une liste blanche d'utilisateurs autoris\u00e9s \u00e0 se connecter # ici, seulement l'utilisateur pi AllowUsers pi # Expect .ssh/authorized_keys2 to be disregarded by default in future. AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 #AuthorizedPrincipalsFile none #AuthorizedKeysCommand none #AuthorizedKeysCommandUser nobody # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! # Interdiction de connexion pas login/mot de passe PasswordAuthentication no # Interdiction de mot de passe vides PermitEmptyPasswords no # Change to yes to enable challenge-response passwords (beware issues with # some PAM modules and threads) ChallengeResponseAuthentication no # Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no # GSSAPI options #GSSAPIAuthentication no #GSSAPICleanupCredentials yes #GSSAPIStrictAcceptorCheck yes #GSSAPIKeyExchange no # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of \"PermitRootLogin without-password\". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. UsePAM yes # On va interdire le forwarding AllowAgentForwarding no AllowTcpForwarding no GatewayPorts no X11Forwarding no #X11DisplayOffset 10 #X11UseLocalhost yes #PermitTTY yes # Pas de message d'acceuil de SSHD PrintMotd no #PrintLastLog yes #TCPKeepAlive yes #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3 # Utilisation du DNS UseDNS yes #PidFile /var/run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none #VersionAddendum none # no default banner path Banner none # Allow client to pass locale environment variables AcceptEnv LANG LC_* # override default of no subsystems Subsystem sftp /usr/lib/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server pi@raspberrypi:~ $ On red\u00e9marre sshd sudo systemctl restart sshd.service On teste si le service a bien red\u00e9marr\u00e9 sans erreurs : pi@raspberrypi:~ $ sudo systemctl status sshd.service \u25cf ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-02-14 14:59:47 CET; 7s ago Docs: man:sshd(8) man:sshd_config(5) Process: 523 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS) Main PID: 524 (sshd) Tasks: 1 (limit: 269) CGroup: /system.slice/ssh.service \u2514\u2500524 /usr/sbin/sshd -D f\u00e9vr. 14 14:59:46 raspberrypi systemd[1]: Starting OpenBSD Secure Shell server... f\u00e9vr. 14 14:59:46 raspberrypi sshd[524]: Server listening on 0.0.0.0 port 22. f\u00e9vr. 14 14:59:47 raspberrypi sshd[524]: Server listening on :: port 22. f\u00e9vr. 14 14:59:47 raspberrypi systemd[1]: Started OpenBSD Secure Shell server. pi@raspberrypi:~ $ C'est bon. Essai de connexion : eric@aldebaran:~$ ssh piras The authenticity of host 'piras.yojik.net (192.168.111.170)' can't be established. ED25519 key fingerprint is SHA256:NW70QB3uNQ1cnrTQyfXG1Lu1iTDubEv6Oak4PK+DR1k. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'piras.yojik.net,192.168.111.170' (ED25519) to the list of known hosts. Enter passphrase for key '/home/eric/.ssh/piras/piras_ed25519': Linux raspberrypi 5.10.11+ #1399 Thu Jan 28 12:02:28 GMT 2021 armv6l 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 Feb 14 15:02:55 2021 from 192.168.111.150 pi@raspberrypi:~ $ C'est bon. Test sur le site d'audit : Bien, apr\u00e8s avoir effac\u00e9 toutes les donn\u00e9es personnelles de mon navigateur (donn\u00e9es qui entra\u00eenent une erreur \u00abThe csrf token is invalid \u00bb), le test revient toujours avec une mauvaise note. D'o\u00f9 la suite. Les instructions pour am\u00e9liorer sont \u00e9galement sur le site SSH-Audit.com recommendations On va s\u00e9curiser les \u00e9changes en jouant sur 3 options suppl\u00e9mentaires : Ciphers : Le chiffrement utilis\u00e9. KexAlgorithms : Les algorithmes utilis\u00e9s pour l\u2019\u00e9change de cl\u00e9s. MACs : Message Authentication code, c\u2019est le code qui accompagnent les donn\u00e9es \u00e9chang\u00e9es dans le but d\u2019assurer leur int\u00e9grit\u00e9 pour \u00eatre certain qu\u2019elles n\u2019ont subies aucune alt\u00e9ration pendant/apr\u00e8s la transmission. Voil\u00e0 les \u00e9tapes \u00e0 suivre (reprises quasi texto des sites d\u00e9j\u00e0 cit\u00e9s) : R\u00e9g\u00e9n\u00e9ration de la cl\u00e9 ED25519 du serveur : sudo rm -f /etc/ssh/ssh_host_* sudo ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N \"\" Retrait des moduli Diffie-Hellman faible : sudo awk '$5 >= 3071' /etc/ssh/moduli > /home/pi/moduli.safe sudo mv -f /home/pi/moduli.safe /etc/ssh/moduli D\u00e9sactivation des cl\u00e9s DSA/ECDSA & RSA si ce n\u2019est pas d\u00e9j\u00e0 fait : sudo sed -i 's/^HostKey \\/etc\\/ssh\\/ssh_host_\\(dsa\\|ecdsa\\|rsa\\)_key$/\\#HostKey \\/etc\\/ssh\\/ssh_host_\\1_key/g' /etc/ssh/sshd_config Restriction des ciphers, cl\u00e9s d\u2019\u00e9change et des codes d\u2019authentification : Ajoutez ceci \u00e0 la fin du fichier /etc/sshd_config: KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512 Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com Red\u00e9marrage de sshd sudo systemctl restart sshd.service","title":"Modification du fichier /etc/ssh/sshd_config"},{"location":"Tutoriels/tutoraspi/S%C3%A9curisation-SSH/#test-sur-le-site-ssh-audit","text":"Tout est OK ... nous sommes pass\u00e9s d'une note F \u00e0 A+ .","title":"Test sur le site ssh audit"},{"location":"Tutoriels/tutoraspi/tutoraspi/","text":"Installation d'un RaspberryPi Introduction Je vais vous montrer comment j'installe mon/mes RaspberryPi. Rien de bien original, cela a \u00e9t\u00e9 trait\u00e9 dans de nombreux tutoriels. C'est une mani\u00e8re pour moi d'\u00e9tablir un protocole d'installation, en assurant une s\u00e9curit\u00e9 correcte de mon mini-serveur. Je suis en possession de 2 raspis, un mod\u00e8le 2B (que j'avais attendu 6 mois il y a des ann\u00e9es lors du lancement) et un r\u00e9cent Raspi 3B avec wifi et bluetooth. Je vais installer sur le premier \"Home-assistant\", sans clavier ni \u00e9cran ni souris et avec une IP fixe: il sera dans la baie informatique. Le second \u00e9quip\u00e9 de l'\u00e9cran 7\" officiel, dans un boitier ad\u00e9quat et esth\u00e9tique servira comme console de commande de l'\u00e9clairage, et d'affichage m\u00e9t\u00e9o (j'ai install\u00e9 une station m\u00e9t\u00e9o \"Netamo\" que j'ajouterai \u00e0 Home-assistant.) Oui, ils sont un peu \u00abpoussi\u00e9reux \u00bb ... En annexe, je pr\u00e9senterai une autre fa\u00e7on de pr\u00e9parer l'installation de notre Raspi qui permettra d\u00e8s le d\u00e9part d'avoir notre r\u00e9seau configur\u00e9, ainsi que le hostname et l'autorisation de connexion SSH.","title":"Pr\u00e9sentation"},{"location":"Tutoriels/tutoraspi/tutoraspi/#installation-dun-raspberrypi","text":"","title":"Installation d'un RaspberryPi"},{"location":"Tutoriels/tutoraspi/tutoraspi/#introduction","text":"Je vais vous montrer comment j'installe mon/mes RaspberryPi. Rien de bien original, cela a \u00e9t\u00e9 trait\u00e9 dans de nombreux tutoriels. C'est une mani\u00e8re pour moi d'\u00e9tablir un protocole d'installation, en assurant une s\u00e9curit\u00e9 correcte de mon mini-serveur. Je suis en possession de 2 raspis, un mod\u00e8le 2B (que j'avais attendu 6 mois il y a des ann\u00e9es lors du lancement) et un r\u00e9cent Raspi 3B avec wifi et bluetooth. Je vais installer sur le premier \"Home-assistant\", sans clavier ni \u00e9cran ni souris et avec une IP fixe: il sera dans la baie informatique. Le second \u00e9quip\u00e9 de l'\u00e9cran 7\" officiel, dans un boitier ad\u00e9quat et esth\u00e9tique servira comme console de commande de l'\u00e9clairage, et d'affichage m\u00e9t\u00e9o (j'ai install\u00e9 une station m\u00e9t\u00e9o \"Netamo\" que j'ajouterai \u00e0 Home-assistant.) Oui, ils sont un peu \u00abpoussi\u00e9reux \u00bb ... En annexe, je pr\u00e9senterai une autre fa\u00e7on de pr\u00e9parer l'installation de notre Raspi qui permettra d\u00e8s le d\u00e9part d'avoir notre r\u00e9seau configur\u00e9, ainsi que le hostname et l'autorisation de connexion SSH.","title":"Introduction"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Authentification-Carte-%C3%A0-Puce/#configuration-de-la-carte-a-puce","text":"","title":"Configuration de la carte \u00e0 puce"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Authentification-Carte-%C3%A0-Puce/#a-la-main_1","text":"","title":"\u00c0 la main"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Courrier-Comptes-Virtuels/#utilisation-des-fichiers-dbm","text":"","title":"Utilisation des fichiers dbm"},{"location":"Tutoriels/tutostretch/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":"SPF, DKIM, OPENDMARC"},{"location":"Tutoriels/tutostretch/Courrier-SPF-DKIM-OPENDMARC/#spf-dkim-opendmarc","text":"","title":"SPF, DKIM, OPENDMARC"},{"location":"Tutoriels/tutostretch/Courrier-SPF-DKIM-OPENDMARC/#spf","text":"","title":"SPF"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Installation-Cerificats-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":"Tutoriels/tutostretch/Installation-Cerificats-Letsencrypt/#installation-des-certificats-letsencrypt","text":"","title":"Installation des certificats letsencrypt"},{"location":"Tutoriels/tutostretch/Installation-Cerificats-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":"Tutoriels/tutostretch/Installation-Cerificats-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":"Tutoriels/tutostretch/Installation-Cerificats-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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Installation-Dovecot-Authentification/#schema-densemble","text":"Les parties impl\u00e9ment\u00e9es sont en rouge sur le dessin suivant:","title":"Sch\u00e9ma d'ensemble"},{"location":"Tutoriels/tutostretch/Installation-Dovecot-Authentification/#explication","text":"","title":"Explication:"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Installation-Dovecot-Authentification/#mise-en-place-du-fichier-auto-configuration-mozilla","text":"A voir ....","title":"Mise en place du fichier auto-configuration Mozilla"},{"location":"Tutoriels/tutostretch/Installation-Dovecot-Authentification/#test-en-situation","text":"","title":"Test en situation"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Installation-Dovecot-Authentification/#installation-dun-analyseur-des-logs-mail","text":"","title":"Installation d'un analyseur des logs mail"},{"location":"Tutoriels/tutostretch/Installation-Dovecot-Authentification/#installation","text":"apt-get install pflogsumm","title":"Installation"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Installation-Serveur-Git/#les-differents-protocoles","text":"","title":"Les diff\u00e9rents protocoles"},{"location":"Tutoriels/tutostretch/Installation-Serveur-Git/#installation-dun-serveur-git-avec-le-protocole-local","text":"","title":"Installation d'un serveur git avec le protocole local"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Installation-Serveur-Git/#installation-dun-serveur-git-avec-le-protocole-git","text":"","title":"Installation d'un serveur git avec le protocole git"},{"location":"Tutoriels/tutostretch/Installation-Serveur-Git/#installation-dun-serveur-git-basique-mais-parfaitement-fonctionnel","text":"","title":"Installation d'un serveur git basique (mais parfaitement fonctionnel :) )"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Installation-Serveur-Git/#installation-et-configuration-de-gitweb","text":"","title":"Installation et configuration de gitweb"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Installation-Webmail/#la-documentation-dinstallation-est-ici","text":"Documentation de l'installation de rainloop","title":"La documentation d'installation est ici"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Installation-de-base/#installation-dun-serveur-debianstretch-securise","text":"","title":"Installation d'un serveur Debian/Stretch s\u00e9curis\u00e9"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Installation-de-base/#preparation-de-linstallation","text":"","title":"Pr\u00e9paration de l'installation"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Installation-de-base/#test","text":"pas fini :(ou mieux, work in progress !)","title":"Test"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Premi%C3%A8re-Etape-S%C3%A9curisation/#premieres-etapes-de-securisation-du-serveur","text":"","title":"Premi\u00e8res \u00e9tapes de s\u00e9curisation du serveur"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Premi%C3%A8re-Etape-S%C3%A9curisation/#deuxieme-phase","text":"","title":"Deuxi\u00e8me phase"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/Surveillance-Serveur/#installation-de-logwatch","text":"","title":"Installation de logwatch"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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 des pages web"},{"location":"Tutoriels/tutostretch/S%C3%A9curisation-Serveur-Web/#securisation-des-pages-web","text":"","title":"S\u00e9curisation des pages web"},{"location":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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":"Tutoriels/tutostretch/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"},{"location":"Tutoriels/tutostretch/tutostretch/","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":"Tutoriels/tutostretch/tutostretch/#installation-dun-serveur-debianstretch-securise-obsolete","text":"","title":"Installation d'un serveur Debian/Stretch s\u00e9curis\u00e9 (obsol\u00e8te)"},{"location":"Tutoriels/tutostretch/tutostretch/#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":"Tutoriels/tutovps/Commande-vps/","text":"Commande des VPS Plusieurs \u00e9tapes sont n\u00e9cessaires : choisir son fournisseur : pour moi, OVH; choisir son VPS : j'ai pris des VPS de base avec 20 Go d'espace de stockage; choisir sa distribution Linux : j'ai pris Debian comme d'habitude; payer. Il vous sera envoy\u00e9 les identifiants/mot de passe pour vous connecter. Vous pouvez aussi chosir une connexion par clefs SSH au moment de l'installation. Il y a d\u00e9j\u00e0 une clef sur mon compte pour mes autres machines, et je veux des clefs s\u00e9par\u00e9es maintenant, donc j'ai choisi d'installer moi-m\u00eame ma clef. La proc\u00e9dure sera en gros la m\u00eame quelque soit le fournisseur choisi.","title":"Commande des VPS"},{"location":"Tutoriels/tutovps/Commande-vps/#commande-des-vps","text":"Plusieurs \u00e9tapes sont n\u00e9cessaires : choisir son fournisseur : pour moi, OVH; choisir son VPS : j'ai pris des VPS de base avec 20 Go d'espace de stockage; choisir sa distribution Linux : j'ai pris Debian comme d'habitude; payer. Il vous sera envoy\u00e9 les identifiants/mot de passe pour vous connecter. Vous pouvez aussi chosir une connexion par clefs SSH au moment de l'installation. Il y a d\u00e9j\u00e0 une clef sur mon compte pour mes autres machines, et je veux des clefs s\u00e9par\u00e9es maintenant, donc j'ai choisi d'installer moi-m\u00eame ma clef. La proc\u00e9dure sera en gros la m\u00eame quelque soit le fournisseur choisi.","title":"Commande des VPS"},{"location":"Tutoriels/tutovps/Premi%C3%A8re-configuration/","text":"Premi\u00e8res configurations Nous avons vu qu'il y a des \u00e9l\u00e9ments \u00e0 configurer : hostname le hostname se configure dans 2 fichiers, /etc/hosts et /etc/hostname . Comme d\u00e9j\u00e0 vu dans les autres tutoriels, le hostname sous Debian se configure dans ces 2 fichiers. J'ai choisi le nom ns1 pour cette premi\u00e8re machine (j'ai lou\u00e9 un deuxi\u00e8me vps pour servir de serveur dns secondaire). Je modifie le nom situ\u00e9 dans /etc/hostname pour ns1 (avec mon \u00e9diteur texte.) Modification du fichier /etc/hosts : Le fichier /etc/hosts ainsi que le fichier .etc/hostname sont g\u00e9r\u00e9s par le programme cloud. Il faut donc, en suivant les recommandations ici recommandations modifier le fichier /etc/cloud/cloud.conf . 2 lignes sont \u00e0 modifier: preserve_hostname: true manage_etc_hosts: false Ensuite nous pouvons modifier /etc/hostname et /etc/hosts debian@vps-0c47118c:~$ sudo vim /etc/hostname debian@vps-0c47118c:~$ cat /etc/hostname ns1 debian@vps-0c47118c:~$ debian@vps-0c47118c:~$ sudo vim /etc/hosts debian@vps-0c47118c:~$debian@ns1:~$ sudo cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.1.1 ns1.yojik.eu ns1 debian@ns1:~$ On red\u00e9marre le vps pour qu'il prenne en compte nos modifications. debian@vps-0c47118c:~$ sudo systemctl reboot debian@vps-0c47118c:~$ Connection to ns1.yojik.eu closed by remote host. Connection to ns1.yojik.eu closed. eric@aldebaran:~$ Et on se reconnecte. Test : debian@ns1:~$ hostname ns1 debian@ns1:~$ hostname -f ns1.yojik.eu debian@ns1: Voil\u00e0 notre hostname de configur\u00e9. configuration de l'adresse IPV6 Cel\u00e0 se fait dans votre serveur DNS. J'ai ajout\u00e9 la ligne suivante dans mon fichier de zone (et incr\u00e9ment\u00e9 le compteur.) ns1 IN A 51.210.247.149 ns1 IN AAAA 2001:41d0:404:200::6d3d Test sur le serveur DNS : root@adara:/home/ericadmin# dig @localhost ns1.yojik.eu ; <<>> DiG 9.10.3-P4-Debian <<>> @localhost ns1.yojik.eu ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20668 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 5 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;ns1.yojik.eu. IN A ;; ANSWER SECTION: ns1.yojik.eu. 86400 IN A 51.210.247.149 Test IPV6: ;; ANSWER SECTION: ns1.yojik.eu. 86400 IN AAAA 2001:41d0:404:200::6d3d Voil\u00e0, tout est bon pour cette partie.","title":"Premi\u00e8res configurations"},{"location":"Tutoriels/tutovps/Premi%C3%A8re-configuration/#premieres-configurations","text":"Nous avons vu qu'il y a des \u00e9l\u00e9ments \u00e0 configurer : hostname le hostname se configure dans 2 fichiers, /etc/hosts et /etc/hostname . Comme d\u00e9j\u00e0 vu dans les autres tutoriels, le hostname sous Debian se configure dans ces 2 fichiers. J'ai choisi le nom ns1 pour cette premi\u00e8re machine (j'ai lou\u00e9 un deuxi\u00e8me vps pour servir de serveur dns secondaire). Je modifie le nom situ\u00e9 dans /etc/hostname pour ns1 (avec mon \u00e9diteur texte.) Modification du fichier /etc/hosts : Le fichier /etc/hosts ainsi que le fichier .etc/hostname sont g\u00e9r\u00e9s par le programme cloud. Il faut donc, en suivant les recommandations ici recommandations modifier le fichier /etc/cloud/cloud.conf . 2 lignes sont \u00e0 modifier: preserve_hostname: true manage_etc_hosts: false Ensuite nous pouvons modifier /etc/hostname et /etc/hosts debian@vps-0c47118c:~$ sudo vim /etc/hostname debian@vps-0c47118c:~$ cat /etc/hostname ns1 debian@vps-0c47118c:~$ debian@vps-0c47118c:~$ sudo vim /etc/hosts debian@vps-0c47118c:~$debian@ns1:~$ sudo cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.1.1 ns1.yojik.eu ns1 debian@ns1:~$ On red\u00e9marre le vps pour qu'il prenne en compte nos modifications. debian@vps-0c47118c:~$ sudo systemctl reboot debian@vps-0c47118c:~$ Connection to ns1.yojik.eu closed by remote host. Connection to ns1.yojik.eu closed. eric@aldebaran:~$ Et on se reconnecte. Test : debian@ns1:~$ hostname ns1 debian@ns1:~$ hostname -f ns1.yojik.eu debian@ns1: Voil\u00e0 notre hostname de configur\u00e9. configuration de l'adresse IPV6 Cel\u00e0 se fait dans votre serveur DNS. J'ai ajout\u00e9 la ligne suivante dans mon fichier de zone (et incr\u00e9ment\u00e9 le compteur.) ns1 IN A 51.210.247.149 ns1 IN AAAA 2001:41d0:404:200::6d3d Test sur le serveur DNS : root@adara:/home/ericadmin# dig @localhost ns1.yojik.eu ; <<>> DiG 9.10.3-P4-Debian <<>> @localhost ns1.yojik.eu ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20668 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 5 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;ns1.yojik.eu. IN A ;; ANSWER SECTION: ns1.yojik.eu. 86400 IN A 51.210.247.149 Test IPV6: ;; ANSWER SECTION: ns1.yojik.eu. 86400 IN AAAA 2001:41d0:404:200::6d3d Voil\u00e0, tout est bon pour cette partie.","title":"Premi\u00e8res configurations"},{"location":"Tutoriels/tutovps/Premi%C3%A8re-connexion/","text":"Premi\u00e8re connexion Veuillez vous reporter au tutoriel \u00abInstallation d'un serveur Raspi s\u00e9curis\u00e9\u00bb pour la cr\u00e9ation de votre clef, ainsi que la configuration du poste de travail. Une fois les op\u00e9rations effectu\u00e9es, vous pourrez vous connecter ainsi : eric@aldebaran:~$ ssh ns1 The authenticity of host 'ns1.yojik.eu (51.210.247.149)' can't be established. ECDSA key fingerprint is SHA256:WlxCIvGD41/N+ef9u5R4bL6+L3Kywar8EW32bH/ck5w. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'ns1.yojik.eu,51.210.247.149' (ECDSA) to the list of known hosts. Linux vps-0c47118c 4.19.0-12-cloud-amd64 #1 SMP Debian 4.19.152-1 (2020-10-18) x86_64 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: Sat Jan 2 09:03:38 2021 from 82.65.37.204 debian@vps-0c47118c:~$ Nous voil\u00e0 connect\u00e9s. Nous voyons que le hostname est celui donn\u00e9 par d\u00e9faut par OVH : nous le changerons. Il faudra aussi proc\u00e9der \u00e0 la s\u00e9curisation du serveur SSH . Nous allons installer quelques logiciels indispensables (pour moi) : mc - navigateur de fichier en mode texte vim - \u00e9diteur de texte Ensuite, nous allons proc\u00e9der \u00e0 la configuration de notre hostname, du r\u00e9seau (IPV6), \u00e0 l'installation du r\u00e9solveur DNS (knot-resolver), d'un pare-feux (firewalld), d'un programme nous prot\u00e9gant des attaques de force brute (fail2ban), d'un programme de surveillance de notre serveur et d'un serveur de temps. Une fois tout cela fait et test\u00e9, nous pourrons proc\u00e9der \u00e0 l'installation et \u00e0 la configuration d'un serveur DNS , knot dans mon cas. J'installais toujours bind , mais j'ai d\u00e9cid\u00e9 de changer, pour \u00e9viter la monotonie et apprendre des choses nouvelles. Les premi\u00e8re \u00e9tapes ont toutes \u00e9t\u00e9 d\u00e9crites dans mes pr\u00e9c\u00e9dents tutoriels. Je vais simplement reprendre les explications adapt\u00e9es au cas particulier du vps.","title":"Premi\u00e8re connexion"},{"location":"Tutoriels/tutovps/Premi%C3%A8re-connexion/#premiere-connexion","text":"Veuillez vous reporter au tutoriel \u00abInstallation d'un serveur Raspi s\u00e9curis\u00e9\u00bb pour la cr\u00e9ation de votre clef, ainsi que la configuration du poste de travail. Une fois les op\u00e9rations effectu\u00e9es, vous pourrez vous connecter ainsi : eric@aldebaran:~$ ssh ns1 The authenticity of host 'ns1.yojik.eu (51.210.247.149)' can't be established. ECDSA key fingerprint is SHA256:WlxCIvGD41/N+ef9u5R4bL6+L3Kywar8EW32bH/ck5w. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'ns1.yojik.eu,51.210.247.149' (ECDSA) to the list of known hosts. Linux vps-0c47118c 4.19.0-12-cloud-amd64 #1 SMP Debian 4.19.152-1 (2020-10-18) x86_64 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: Sat Jan 2 09:03:38 2021 from 82.65.37.204 debian@vps-0c47118c:~$ Nous voil\u00e0 connect\u00e9s. Nous voyons que le hostname est celui donn\u00e9 par d\u00e9faut par OVH : nous le changerons. Il faudra aussi proc\u00e9der \u00e0 la s\u00e9curisation du serveur SSH . Nous allons installer quelques logiciels indispensables (pour moi) : mc - navigateur de fichier en mode texte vim - \u00e9diteur de texte Ensuite, nous allons proc\u00e9der \u00e0 la configuration de notre hostname, du r\u00e9seau (IPV6), \u00e0 l'installation du r\u00e9solveur DNS (knot-resolver), d'un pare-feux (firewalld), d'un programme nous prot\u00e9gant des attaques de force brute (fail2ban), d'un programme de surveillance de notre serveur et d'un serveur de temps. Une fois tout cela fait et test\u00e9, nous pourrons proc\u00e9der \u00e0 l'installation et \u00e0 la configuration d'un serveur DNS , knot dans mon cas. J'installais toujours bind , mais j'ai d\u00e9cid\u00e9 de changer, pour \u00e9viter la monotonie et apprendre des choses nouvelles. Les premi\u00e8re \u00e9tapes ont toutes \u00e9t\u00e9 d\u00e9crites dans mes pr\u00e9c\u00e9dents tutoriels. Je vais simplement reprendre les explications adapt\u00e9es au cas particulier du vps.","title":"Premi\u00e8re connexion"},{"location":"Tutoriels/tutovps/Programmes-de-base/","text":"Installation des programmes de base Un fois logu\u00e9 sur votre VPS, proc\u00e9dons \u00e0 l'installation de nos 2 premiers programmes. mise \u00e0 jour des listes de paquets; debian@vps-0c47118c:~$ sudo apt update && sudo apt upgrade ... Running hooks in /etc/ca-certificates/update.d... done. debian@vps-0c47118c:~$ Je vois que le noyau a \u00e9t\u00e9 mis \u00e0 jour, je vais donc red\u00e9marrer mon vps. debian@vps-0c47118c:~$ sudo systemctl reboot debian@vps-0c47118c:~$ Connection to ns1.yojik.eu closed by remote host. Connection to ns1.yojik.eu closed. eric@aldebaran:~$ installation de vim et mc . Nous nous re-connectons au vps, et poursuivons nos installations. eric@aldebaran:~$ ssh ns1 Linux vps-0c47118c 4.19.0-14-cloud-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64 ... Last login: Tue Mar 9 07:46:49 2021 from 82.65.37.204 debian@vps-0c47118c:~$ sudo apt install mc vim Reading package lists... Done Building dependency tree ... debian@vps-0c47118c:~$ Voil\u00e0 nos programmes install\u00e9s.","title":"Installation des programmes de base"},{"location":"Tutoriels/tutovps/Programmes-de-base/#installation-des-programmes-de-base","text":"Un fois logu\u00e9 sur votre VPS, proc\u00e9dons \u00e0 l'installation de nos 2 premiers programmes. mise \u00e0 jour des listes de paquets; debian@vps-0c47118c:~$ sudo apt update && sudo apt upgrade ... Running hooks in /etc/ca-certificates/update.d... done. debian@vps-0c47118c:~$ Je vois que le noyau a \u00e9t\u00e9 mis \u00e0 jour, je vais donc red\u00e9marrer mon vps. debian@vps-0c47118c:~$ sudo systemctl reboot debian@vps-0c47118c:~$ Connection to ns1.yojik.eu closed by remote host. Connection to ns1.yojik.eu closed. eric@aldebaran:~$ installation de vim et mc . Nous nous re-connectons au vps, et poursuivons nos installations. eric@aldebaran:~$ ssh ns1 Linux vps-0c47118c 4.19.0-14-cloud-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64 ... Last login: Tue Mar 9 07:46:49 2021 from 82.65.37.204 debian@vps-0c47118c:~$ sudo apt install mc vim Reading package lists... Done Building dependency tree ... debian@vps-0c47118c:~$ Voil\u00e0 nos programmes install\u00e9s.","title":"Installation des programmes de base"},{"location":"Tutoriels/tutovps/Pr%C3%A9sentation/","text":"Pr\u00e9sentation du projet Je loue 2 serveurs d\u00e9di\u00e9s chez OVH, un petit pas tr\u00e8s puissant \u00e0 base de processeur Atom de chez Intel, et un plus puissant, I7 qui est mon serveur principal, celui qui h\u00e9b\u00e9rge mes services Web et autres. Mon serveur mail est h\u00e9b\u00e9rg\u00e9 actuellement sur le serveur principal ainsi que le serveur DNS (ma\u00eetre ou principal.) Le serveur DNS secondaire est h\u00e9b\u00e9rg\u00e9 sur le petit d\u00e9di\u00e9. Avoir tous ses services sur la m\u00eame machine pose des probl\u00e8mes : en cas de soucis avec l'un des services (attaque, panne de disque ou autre,) le reste devient innacessible s'il faut tout r\u00e9installer. J'ai donc d\u00e9cider de diviser pour r\u00e8gner : mes serveurs DNS seront h\u00e9b\u00e9rg\u00e9s sur 2 VPS, \u00e0 bas c\u00f4ut chez OVH. Ils sont l'objet de ce tutoriel. Le serveur mail sera d\u00e9plac\u00e9 sur le petit d\u00e9di\u00e9. Les sauvegardes seront effectu\u00e9es sur mes NAS \u00e0 la maison. J'installerai \u00e9galement un serveur mail secondaire sur mes serveurs \u00e0 la maison. (tutoriel \u00e0 venir) Le serveur d\u00e9di\u00e9 principal sera r\u00e9serv\u00e9 aux services moins importants : si le site web est innacessible pendant 2 jours, ce n'est vraiment pas grave. De m\u00eame pour les autres services h\u00e9b\u00e9rg\u00e9s. J'essaierai de faire une copie de ces services sur un serveur \u00e0a la maison. Mon domaine principal est .eu , mais je poss\u00e8de encore 3 autres domaines en yojik . L'extension .net est r\u00e9serv\u00e9e \u00e0 mon r\u00e9seau \u00ab\u00e0 la maison \u00bb, fr et org sont l\u00e0 en plus \u00abau cas o\u00f9 .\u00bb","title":"Pr\u00e9sentation du projet"},{"location":"Tutoriels/tutovps/Pr%C3%A9sentation/#presentation-du-projet","text":"Je loue 2 serveurs d\u00e9di\u00e9s chez OVH, un petit pas tr\u00e8s puissant \u00e0 base de processeur Atom de chez Intel, et un plus puissant, I7 qui est mon serveur principal, celui qui h\u00e9b\u00e9rge mes services Web et autres. Mon serveur mail est h\u00e9b\u00e9rg\u00e9 actuellement sur le serveur principal ainsi que le serveur DNS (ma\u00eetre ou principal.) Le serveur DNS secondaire est h\u00e9b\u00e9rg\u00e9 sur le petit d\u00e9di\u00e9. Avoir tous ses services sur la m\u00eame machine pose des probl\u00e8mes : en cas de soucis avec l'un des services (attaque, panne de disque ou autre,) le reste devient innacessible s'il faut tout r\u00e9installer. J'ai donc d\u00e9cider de diviser pour r\u00e8gner : mes serveurs DNS seront h\u00e9b\u00e9rg\u00e9s sur 2 VPS, \u00e0 bas c\u00f4ut chez OVH. Ils sont l'objet de ce tutoriel. Le serveur mail sera d\u00e9plac\u00e9 sur le petit d\u00e9di\u00e9. Les sauvegardes seront effectu\u00e9es sur mes NAS \u00e0 la maison. J'installerai \u00e9galement un serveur mail secondaire sur mes serveurs \u00e0 la maison. (tutoriel \u00e0 venir) Le serveur d\u00e9di\u00e9 principal sera r\u00e9serv\u00e9 aux services moins importants : si le site web est innacessible pendant 2 jours, ce n'est vraiment pas grave. De m\u00eame pour les autres services h\u00e9b\u00e9rg\u00e9s. J'essaierai de faire une copie de ces services sur un serveur \u00e0a la maison. Mon domaine principal est .eu , mais je poss\u00e8de encore 3 autres domaines en yojik . L'extension .net est r\u00e9serv\u00e9e \u00e0 mon r\u00e9seau \u00ab\u00e0 la maison \u00bb, fr et org sont l\u00e0 en plus \u00abau cas o\u00f9 .\u00bb","title":"Pr\u00e9sentation du projet"},{"location":"Tutoriels/tutovps/R%C3%A9sum%C3%A9/","text":"R\u00e9sum\u00e9 Objectif Les serveurs DNS sont le nerf de la guerre : sans eux, pas d'Internet. Ils assurent la correspondance nom-de-machine \u2b04 adresse IP. Il est toujours possible d'utiliser les serveurs DNS du fournisseur de noms de domaine, mais avoir le sien propre permet d'ajouter des options qui ne sont pas toujours disponibles de primeabord: dane , dnssec . Cela permet aussi d'impl\u00e9menter des solutions qui sont exp\u00e9rimentales, comme doh et dot . Celles-ci permettent une meilleure anonymisation des requ\u00eates. Nous allons suivre le m\u00eame plan que pour nos autres serveurs, avec les sp\u00e9cificit\u00e9s des VPS . Table des mati\u00e8res Pr\u00e9sentation Commande du VPS Premi\u00e8re connexion \u00c9tat des lieux S\u00e9curisation ssh Installation d'un serveur de temps : ntp Installation d'une protection contre les attaques de force brute : fail2ban Installation d'un programme de surveillance : logwatch Installation d'un serveur de courrier basique : postfix Installation d'un serveur principal DNS : knot Installation d'un serveur DNS secondaire : toujours knot","title":"R\u00e9sum\u00e9"},{"location":"Tutoriels/tutovps/R%C3%A9sum%C3%A9/#resume","text":"","title":"R\u00e9sum\u00e9"},{"location":"Tutoriels/tutovps/R%C3%A9sum%C3%A9/#objectif","text":"Les serveurs DNS sont le nerf de la guerre : sans eux, pas d'Internet. Ils assurent la correspondance nom-de-machine \u2b04 adresse IP. Il est toujours possible d'utiliser les serveurs DNS du fournisseur de noms de domaine, mais avoir le sien propre permet d'ajouter des options qui ne sont pas toujours disponibles de primeabord: dane , dnssec . Cela permet aussi d'impl\u00e9menter des solutions qui sont exp\u00e9rimentales, comme doh et dot . Celles-ci permettent une meilleure anonymisation des requ\u00eates. Nous allons suivre le m\u00eame plan que pour nos autres serveurs, avec les sp\u00e9cificit\u00e9s des VPS .","title":"Objectif"},{"location":"Tutoriels/tutovps/R%C3%A9sum%C3%A9/#table-des-matieres","text":"Pr\u00e9sentation Commande du VPS Premi\u00e8re connexion \u00c9tat des lieux S\u00e9curisation ssh Installation d'un serveur de temps : ntp Installation d'une protection contre les attaques de force brute : fail2ban Installation d'un programme de surveillance : logwatch Installation d'un serveur de courrier basique : postfix Installation d'un serveur principal DNS : knot Installation d'un serveur DNS secondaire : toujours knot","title":"Table des mati\u00e8res"},{"location":"Tutoriels/tutovps/S%C3%A9curisation-ssh/","text":"S\u00e9curisation du serveur SSH sauvegarde du r\u00e9pertoire originel /etc/ssh debian@ns1:~$ sudo scp -rv /etc/ssh/ /etc/ssh.orig/ Executing: cp '-r' '--' '/etc/ssh/' '/etc/ssh.orig/' debian@ns1:~$ Nous allons appliquer ensuite les m\u00e9thodes vues dans le tutoriel raspi :","title":"S\u00e9curisation du serveur SSH"},{"location":"Tutoriels/tutovps/S%C3%A9curisation-ssh/#securisation-du-serveur-ssh","text":"sauvegarde du r\u00e9pertoire originel /etc/ssh debian@ns1:~$ sudo scp -rv /etc/ssh/ /etc/ssh.orig/ Executing: cp '-r' '--' '/etc/ssh/' '/etc/ssh.orig/' debian@ns1:~$ Nous allons appliquer ensuite les m\u00e9thodes vues dans le tutoriel raspi :","title":"S\u00e9curisation du serveur SSH"}]}