FreeBSD: poudriere cross compiling (ARM)

Poudriere permet de réaliser du cross compiling et donc de compiler des cibles d’une autre architecture. Nous allons ici prendre l’exemple d’une architecture amd64 cross-compilant vers ARM6 pour un Raspberry PI 2.

Préparation de la jail poudrière

Tout d’abord on va télécharger une image RPI2 viable depuis le miroir FreeBSD puis la décompresser

Continuer à lire

Compiler une application Android avec Jenkins sous FreeBSD

Jenkins est un outil d’intégration continue permettant de compiler et valider des applications. Il s’intègre avec diverses applications, que ce soit JAVA, C/C++ ou bien d’autres langages.

Nous allons ici étudier la compilation d’une application Android sous FreeBSD, celle-ci nécessitant un peu de tuning. Continuer à lire

[Serveur Dédié] Serveur Mail

Introduction

Dans cette article nous allons voir la mise en place d’un serveur mail utilisant OpenSMTPD comme service SMTP et Dovecot en tant que service IMAP ainsi que Roundcube comme webmail.

OpenSMTPD a été vu dans un précédent article.

Dovecot est un service permettant la mise en place de serveur imap ou pop3. Dovecot a été vu sur ce site sur ce lien.

Nous allons présenter la configuration de OpenSMTPD ainsi que celle de Dovecot puis nous détaillerons les modifications qui on été nécessaires au fonctionnement des deux services ainsi que son utilisation d’un point de vue utilisateur via le déploiement de Roundcube sur un serveur web Nginx hébergé  par FreeBSD 9.2. Continuer à lire

ZFS: remplacement de disque à chaud

ZFS permet de remplacement automatiquement des disques à chaud. Cela permet par exemple d’étendre la capacité du pool ZFS ou encore de remplacer un disque défectueux, ou encore de changer de technologie de disque (passage sur un SSD, sur une autre technologie d’IO virtuelles…)

Nous allons ici partir du principe que notre serveur possède un slot de libre (sur une VM c’est plus simple, il suffit d’ajouter le disque à chaud). Nous insérons un disque de données vierge de capacité égale (ou supérieure) dans ce slot. Il est reconnu par le système en mode hotplug (SATA, SCSI, Virtio…).

Afin de remplacer le disque, il suffit de taper la commande:

Bien sur vous pouvez choisir de changer de technologie de disque (ici une migration d’un disque ATA vers un disque virtio:

Vous pourrez ensuite vérifier l’état de la récupération avec:

S’il y a un nombre suffisant de données, vous verrez le pool passer en mode resilvering. Cela signifie qu’il copie les données du premier disque vers le second.

Voilà, vous savez désormais comment remplacer un disque dans un pool ZFS

Dans mon cas cela a permis de passer d’une technologie SATA en mode writethough à des disques Virtio en mode DirectSync, améliorant sensiblement les performances d’écriture.

Installer Gitlab sous FreeBSD

Introduction

Gitlab est un puissant outil permettant de monter une infrastructure de type github sur son infrastructure. Gitlab peut se connecter à un annuaire LDAP d’entreprise afin que les utilisateurs soient automatiquement reconnus.

En terme de fonctionnalités, Gitlab permet de créer des repositories git, forker, créer des branches, faire des commits sur HTTP(S), partager des projets entre plusieurs utilisateurs…

Nous allons ici voir comment installer Gitlab sur un serveur FreeBSD. Continuer à lire

OpenBSD 5.5 est sorti

Comme tous les 6 mois une nouvelle version d’OpenBSD est publiée.

OpenBSD est un système d’exploitation orienté sécurité et réseau, dont les principaux avantages sont la stabilité, grâce aux audits sur le code source, mais également l’ensemble très large de fonctionnalités réseau qu’il fournit.

Continuer à lire

VI: raccourcis essentiels

VI est un éditeur de texte très puissant. Il est intégré de base dans toutes les distributions Linux et BSD

Pour certains il s’agit d’un éditeur compliqué réservé aux barbus. Pour d’autres c’est l’éditeur de choix.

Vous trouverez ci-dessous les raccourcis essentiels de VI classés par thématique. Continuer à lire

OpenSMTPD, Premiers pas

Nous utilisons tous des services de messagerie en ligne tel que Gmail, Outlook, Yahoo… Mais si vous vouliez prendre le contrôle de vos mails? comment faire?

Comparons la technologie Exchange de Microsoft avec ses CAL’s et ses licences et son budget ou les technologies open-source comme Sendmail, Postfix ou dans notre cas OpenSMTPD.

OpenSMTPD

Afin d’avoir un service aussi-complet que Gmail il faudra mettre en place plusieurs briques et OpenSMTPD en fait partie. OpenSMTPD est  un service SMTP libre utilisant le-dit protocole comme défini dans la RFC 5321. Il permet d’échanger des e-mails avec d’autres systèmes utilisant ce protocole comme Sendmail, Postfix, etc…

OpenSMTPD est un service « jeune » qui a voulu reprendre la simplicité de compréhension et de configuration du firewall Packet Filter d’OpenBSD. Ce service est implémenté depuis OpenBSD 4.6 dans la branche « unstable » et depuis OpenBSD 5.3 en tant que stable.

Ici nous utilisons la version 5.4.1 d’OpenSMTPD.

Le MAN est la première phase de l’approche pour utiliser ce service, il fournit les premières étapes pour un déploiement propre.

Maintenant que le paramétrage du service au niveau du système est fait nous allons passer à la configuration du fichier « smtpd.conf ».

Le service est à présent configuré, il nous reste à accepter les connexions externes sur le port 25 avec Packet Filter (CF plus loin) et à redémarrer le service smtpd avec la commande /etc/rc.d/smtpd restart.

Pour vérifier votre configuration Opensmtpd comme pour PF il existe la commande smtpd -n.

Pour lancer smtpd en mode debug lancer la commande smtpd -dv.

Configurez maintenant Packet Filter (rappel: fichier /etc/pf.conf)

Vérifiez maintenant la syntaxe et chargez le jeux de règles:

Pour conclure cette partie, réalisons un test:

Allons un peux plus loin dans notre configuration et renforçons la sécurité:

Chiffrement TLS

Accordons une analyse de cette ligne de configuration du fichier smtpd.conf

listen on pcn0 port 25 : le service écoutera sur l’interface pcn0 sur le port 25 ( si le paramètre « all » est actif, le service écoutera sur toutes les interfaces)

tls-require : Force les clients à établir une connexion sécurisée avant d’être autorisés à dialoguer au SMTP, l’option tls seule peux suffire mais tls-require renforce globalement en forçant les clients à établir une connectrion sécurisé avant d’être autorisé à démarrer une transaction SMTP. Cette option nécessite l’utilisation et la création de certificats.
Il est utile de noter que si nous ne créons qu’un certificat et sa clé et non le CA ainsi que le DH le service utilisera  ces paramètres par défaut.

pki dev.unix-experience.fr Nous spécifions les certificats par l’instruction pki qui nous permet de spécifier l’emplacement du certificat ainsi que de sa clé. « dev.unix-experience.fr » correspond à l’argument hostname comme spécifié dans le man de smtpd.conf.

Ce mécanisme est similaire au macro de Packet filter et doivent donc être déclaré en amont de la configuration

hostname Hermes : permet de spécifier un nom pour la bannière smtpd.

Test d’envoi

Nous allons à présent réaliser un test d’envoi de mail via la commande

mail, en ayant lancé smtpd en mode debug, ainsi nous pourrons comprendre les interactions par les logs.

Ceci est le détail des interactions qui ont eu lieu pendant la communication avec le serveur SMTP. On y retrouve les champs du destinataire et de l’émetteur.

Si on regarde les logs de plus près, nous pouvons observer que le service est extrêmement verbeux:

Nous pouvons alors décrire les étapes de réception du mail par dans un premier par le MTA qui à rechercher un alias liant le destinataire (root@localhost), une fois identifié comme l’utilisateur « unixexperience », le MTA transmet le message au MDA interne de opensmtpd en  attribuant alors l' »evpid » que l’on peux interprété comme « enveloppe identifer » au MDA.

Ensuite une session interne s’initialise ou le message va être délivré dans l’emplacement Maildir correspond à l’utilisateur unixexperience.

Configuration d’un relais

Nous pouvons considérer vouloir faire relayer nos mails par notre service SMTP dans le cadre où les ports ou la destination de notre SMTP est bloquée à notre emplacement géographique ou tout simplement pour en faire un relais Nous allons donc ajouter une règle qui relaiera nos mails via GMAIL.

Voici à quoi ressemble notre fichier smtpd.conf:

Pour arriver à cette configuration nous avons dû réaliser plusieurs actions.

Nous avons donc crée un fichier contenant les informations d’identification pour utiliser le relais de google. Ensuite nous avons créé le fichier « secrets.db » qui sera utilisé par smtpd et restreint les permissions sur ce fichier ainsi que son propriétaire et le groupe auxquels il appartient pour que ceux-ci puissent être lisible par le daemon d’OpenSMTPD. Nous avons renseigné ce fichier sous cette forme dans « smtpd.conf ».

Maintenant la régle du relai:

accept from local for any  : Nous acceptons les envoie de mail localement pour n’importe quel destination.

relay via tls+auth://label@smtp.gmail.com:587 auth <secrets> : Nous relayons via une authentification TLS en utilisant les information d’authentification correspondant à l’étiquette label sur le smtp de Gmail sur le port 587 en utilisant la table secrets.

Conclusion

Nous reprendrons OpenSMTPD dans un article consacré à la mise en place d’un serveur mail complet avec la technologie de virtualisation libvirt.

Ce qu’il faut retenir de OpenSMTPD:

– Produit en cours de développement- Ajout de nouvelles fonctionnalités dans le futur
– Facilité de compréhension de la configuration

Ce qui est valable aujourd’hui pour son utilisation ne le sera sans doute plus demain.

Source:

Merci à la Mailing List d’OpenSMTPD pour m’avoir éclaircit sur le fonctionnement des étiquettes ainsi qu’une relecture de l’article.

http://www.opensmtpd.org/fr/list.html

http://www.openbsd.org/cgi-bin/man.cgi?query=smtpd&sektion=8

Migration de configuration pkg

Suite à une récente mise à jour de pkgng (la version 1.2), l’ancien format de déclaration des repositories a été retiré.

Pour rappel, pour utiliser les paquets relatifs à un repository, il fallait éditer le fichier /usr/local/etc/pkg.conf et ajouter une ligne comme celle-ci:

Désormais il faut procéder utiliser deux éléments:

  • Un enregistrement SRV pour votre repository
  • Un fichier de configuration du repository spécifique

Pour l’enregistrement SRV, il vous faudra l’enregistrement suivant:

Pour la configuration, vous devrez tout d’abord créer un répertoire dédié à la configuration des repos:

Et créer un fichier de configuration pour votre repo (par exemple /usr/local/etc/pkg/repos/myrepo.conf):

Voilà, vous avez désormais un fichier de repository entièrement opérationnel !

Monter une AP Wi-Fi avec OpenBSD

Suite à un récent achat de matériel afin de me débarrasser de ma livebox qui plante trop souvent, j’ai choisi de faire mon propre routeur ADSL.

Pour faire un routeur, rien ne vaut un OS de qualité: OpenBSD. Au niveau hardware, j’ai choisi une board Alix 2d13 et une carte mini PCI Wi-Fi Atheros DNMA92 et ses antennes.

Nous allons voir dans ce tutoriel comment configurer OpenBSD afin de transformer notre routeur en borne Wi-Fi.

IMG_20131105_203131

Continuer à lire