Debian MAJ du systeme

Hello,

Suite à la vulnérabilité découverte sur apt, impactant aussi apt-get, l’équipe de sécu de Debian à mis à jour le système de paquet. Pour faire simple, apt utilise HTTPS et HTTP, HTTP pour vérifier la validité des sources de paquets et définir le lien de téléchargement. Il était donc possible pour un attaquant de définir une URL de téléchargement modifié et d’installer un payload sans que apt ne s’en rende compte tout en croyant installer le bon paquet, à condition bien sur de contrôler un serveur de repo.

Pour faire la MAJ en toute sécurité du coup, il faut désactiver les redirections HTTP du gestionnaire de paquet. La manipulation cité ici est issue du blog de Debian, qui ont eux même repris les indications du gars qui à découvert la Vuln. D’ailleurs une image Docker avec les instructions du PoC et les détails complets de sa découverte sont disponibles sur son blog si on veut essayer soit même. (Lien en fin d’article)

Vous étiez protégé et pas impacté si vous utilisiez déjà :
apt-transport-https

Mettre à jour :
sudo apt update -o Acquire::http::AllowRedirect=false
sudo apt upgrade -o Acquire::http::AllowRedirect=false

Niveau sécu pour Debian ces derniers temps entre systemd et now apt, ça y vas fort !
Ça me donne bien envie de tester « Devuan » en tout cas.

Mais comme d’hab pas de fatalités, gardez simplement vos systèmes à jours et ça devrait aller !


https://justi.cz/security/2019/01/22/apt-rce.html
https://www.debian.org/News/2019/20190123

 

Virtualisation matérielle libre sur Linux avec QEMU/KVM

Définition  :
Simuler une machine complète pour avoir son propre environnement d’exécution.

Les avantages sont nombreux, isolations des processus, plusieurs environnements différents, etc.

La virtualisation matérielle est possible au moyen de ce que l’on appelle des hyperviseurs.
Il existe plusieurs types d’hyperviseurs, classés en 2 niveau.

Le niveau 1 est dit « natif ».
Natif car les instructions processeurs du système virtuelle sont directement transmis aux hardware. Il faut donc vérifier la compatibilité entre les systèmes virtualisés et les composants matérielles.
Le niveau 2 est dit « hosted ».
Hosted car la virtualisation s’effectue grâce à un logiciel installé sur un système d’exploitation. Donc la machine virtualisée n’interagit pas directement avec le Hardware.

KVM est un hyperviseur de type 1, il est intégré de manière native à beaucoup de distribution basées sur le noyau Linux. KVM pour Kernel-based Virtual Machine car il transforme le noyau linux sur lequel il est exécuté en hyperviseur, proxmox est basé dessus.
Il en existe d’autres.

Dans ce tuto on va utiliser QEMU (QuickEmulator) pour interagir avec KVM.

Qemu c’est pas très clair au début, il est de type 1 et 2. Il peut simuler un environnement pour une machine totalement différente de la votre, par exemple une py sur un PC. Dans ce cas la il transforme les exécutions de processeurs pour les rendre compatibles avec le hardware, donc la il est de type2. Mais quand il est utilise avec KVM dans ce cas la il fonctionne en type 1 et donc avec des performances bien meilleures, ça envoi du pâté !!.
En clair Qemu sert à manager les machines virtuels, c’est un client.
Et la liaison entre Qemu et KVM est faite via l’API libvirt ( management du réseau, stockages, clavier, souris, etc )

Cas pratique  ( Tuto réalisé sur Debian ):

en tant que root :
apt-get install qemu-kvm qemu-utils virt-manager libvirt-daemon
usermod -a -G libvirt-qemu USER

Pour pouvoir utiliser virt-manager avec votre compte utilisateur

Vérifier que tout est bon :
virt-host-validate

Et voila.

Maintenant graphiquement vous pouvez utiliser virt-manager ( si vous savez utiliser virtualbox vous ne serez pas dépaysé )
D’ailleurs si vous prêtez attention à l’interface vous vous rendrez compte que l’interface graphique est un gestionnaire de connexion pour hyperviseur KVM via libvirt.
Donc vous pouvez créez puis administrer graphiquement un serveur de VMs à distance via ssh.

Interface graphique de virt-manager, les options ne manquent pas 😉

Pour la gestion graphique j’en arrête la.

Pour configurer en terminal, voici (en root):

Activer l’accès au LAN, le réseau :
virsh net-start default
créer et démarre l’interface virtuelle virbr0, qui est naté ( je sais pas si ca se dit ).

créer et démarre automatiquement virbr0 au démarrage de l’hôte:
virsh net-autostart default

pour personnaliser sa configuration réseau :
virsh net-edit default

Vérifier que c’est OK pour le réseau :
ifconfig
Normalement une interface virbr0 a était crée.

Pour vérifier le port forwadding :
cat /proc/sys/net/ipv4/ip_forward
Si la valeur est a 0, dé-commenter dans /etc/sysctl.conf le paramètre suivant pour l’activer au démarrage :
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

Et entrez la commande suivante pour l’activer de suite :
sysctl -w net.ipv4.ip_forward=1

On configure le pare-feux, en remplaçant avec le nom de l’interface physique, par exemple eth0 ou enp3s0 :
iptables -A FORWARD -i interfacephysique -j ACCEPT
iptables -A FORWARD -o interfacephysique -j ACCEPT

Par défaut les images des machines virtuelles qui seront crées avec virt-manager seront stockes dans : /var/lib/libvirt/images
Si comme moi vous avez votre OS sur un SSD pas pratique, donc perso j’ai supprimé le répertoire par défaut pour ensuite créer un lien
symbolique à la place qui pointe vers un HDD de 1TO, voici la manipulation :
rm -rf /var/lib/libvirt/images
ln -s /lechemindevotrestockage /var/lib/libvirt/images

Créer l’image :
qemu-img create -f qcow2 /var/lib/libvirt/images/DOMAIN.img 20G
-f ; format de KVM pour le fichier image, qcow2 est le format kvm par défaut, raw est compatible avec Virtualbox et VMware
20G ; Remplacer par la valeur souhaité, ce sera la taille du disque dur virtuel

Booter sur une ISO et installer l’OS via KVM :
kvm -m 1024 -cdrom /CHEMIN_VERS_VOTRE_ISO -boot d /var/lib/libvirt/images/DOMAINE.img
-m 1024 ; La quantité de ram allouée
-cdrom ; spécifie le chemin vers votre ISO
-boot d ; spécifie sur quelle domaine booter, un système émulé s’appelle domaine, remplacer DOMAINE par un titre parlant par exemple DebianVM

Booter simplement sur l’OS fraîchement installé directement via KVM :
kvm -boot -d /var/lib/libvirt/images/DOMAINE.img

Attention en utilisant KVM directement et non avec libvirt, les machines virtuelles ne seront pas listés avec virtmanager ou la commande : virsh list

Créer une VM et procéder à son installation via une ISO en utilisant KVM via libvirt :
virt-install -n DomainKVM --virt-type kvm --memory 1024 --cpu host --vcpus 2 --cdrom /CheminVersISO --disk /var/lib/libvirt/images/DOMAINE.qcow2 --network default --os-variant BASEOS
-n ; le nom du domaine
–virt-type ; on choisit le type de virtualisation, ici KVM
–memory ; idem que tout à l’heure
–cpu ; la machine virtuelle utilisera le même processeur que l’hôte
–vcpus ; nombre de cœurs alloués
–cdrom ; le chemin vers votre ISO
–network; on indique la configuration reseau que l’on veut, mettre defaut si on suit ce tuto
–os-variant ; la base du systeme, par exemple debian, fedora, etc et sa version, par exemple debian8 ou fedora19

Importer une VM existante avec libvirt, de type KVM :
virt-install -n DomainKVM --virt-type kvm --memory 1024 --cpu host --vcpus 2 --disk /var/lib/libvirt/images/DOMAINE.qcow2 --network default --os-variant --import

Live de Kali en utilisant virt-install pour booter sur une ISO

En utilisant libvirt, les machines crées apparaissent dans virt-manager pour rappel qui est le client graphique.

Démarrer son OS :
virsh start DOMAINE

Éteindre son OS, méthode 1 propre, méthode 2 sale :
methode1 : virsh shutdown DOMAINE
methode2 : virsh destroy DOMAINE

Les configurations des VMs crées sont stockés au format XML dans : /etc/libvirt/qemu/

Et voila, en espérant que cet article vous aura était utile, et donner envie d’essayer autre chose que Virtualbox ou VMware, ce qui est con du coup si on utilise au quotidien un noyau Linux.

Pour aller plus loin :

man virt-install, man virsh, man virt-clone

Si vous avez des remarques/suggestions/corrections ou autre, ne pas hésiter à laisser un commentaire, promis j’essaie de pas me vexer 🙂

Sources et Liens :
https://wiki.qemu.org/Main_Page
https://libvirt.org/
https://en.wikipedia.org/wiki/Libvirt
https://fr.wikipedia.org/wiki/Hyperviseur
https://linux.goffinet.org/09-virtualisation-kvm/
https://cloudbuilder.in/blogs/2014/03/09/kvhttps://cloudbuilder.in/blogs/2014/03/09/kvm-and-qemu/m-and-qemu/

Serveur mail auto-hébergé

Hello,

Dans ce billet je vais vous montrer comment configurer son propre serveur mail.
Tout d’abord ce tuto est à destination des personnes utilisant un serveur dédié avec un nom de domaine associé. Par exemple moi c’est un VPS chez OVH.
Ça peut marcher avec une Raspberry et une DMZ, mais il y aura des choses en plus à faire.

Edit du 22/09/18 11h00 : Suite au premier commentaire de cet article, je précise bien que ce serveur mail ne sert pas pour un cas d’usage personnel ( banque etc ) mais pour l’administration de votre serveur ou utilisation depuis celui-ci du moins en « local ». Pour faire un serveur mail perso avec lequel on récupère ses mails avec Thunderbird par exemple depuis la maison, il faut explorer les champs du protocole IMAP.

Si vous avez pris une option avec webmail lors de la souscription de votre nom de domaine, il y à de grandes chances que cela ne marche pas.

Alors tout d’abord il faut s’assurer en premier lieu que votre Zone DNS soit bien configurée.

Attention moi chez OVH il faut que je me connecte à mon manager et que dans « mail » je désactive l’Option AntiSpam pour mettre en « redirection » seulement. il faut aussi toujours dans l’onglet mail de votre espace client ajouter une redirection vers votre nom de domaine.

Ensuite pour votre zone DNS c’est simple. Il faut rajouter 2 entrées, une MX et une A.

Après rajout, vous devrez donc avoir comme entrées :
NomDeDomaine   A  IpServeur
NomDeDomaine MX IpServeur
mail.NomDeDomaine A NomDeDomaine

Le temps que la propagation DNS se fasse, il faut installer « postfix » et le configurer.

Pour l’installer sur Debian et ses dérivées :
apt-get install postfix
Pour CentOs/Fedora :
yum install postfix

Postfix par défaut écoute sur le port 25. Son fichier de configuration est :
/etc/postfix/main.cf

Donc il faut l’éditer et toucher les variables suivantes :
mydestination = NomDeDomaine (si vous en avez plusieurs séparez les avec des virgules)
myhostname = NomDeDomaine

Le fichier : /etc/mailname doit contenir votre Nomdedomaine seulement.
Le fichier : /etc/aliases contient vos alias (alias@NomDeDomaine).
Un alias par ligne sous cette forme :
alias: user

Cela signifie que les mails envoyés vers « alias@NomDeDomaine » iront dans la boite mail de « user ».
Pour créer un alias c’est donc simple on rajoute une ligne au fichier « aliases » avec l’alias qui pointe vers l’utilisateur voulu.

Ensuite on rentre ces commandes avec sudo ou en tant que root pour prendre en compte tous les changements :
sudo newaliases
sudo service postfix reload

Bien sur n’oubliez pas de reconfigurer votre pare-feux et d’autoriser le port 25 à recevoir en entrée depuis l’extérieur.

Pour vous prémunir des spams, je vous conseille « spamassassin » disponible sur Debian et CentOS.

Pour lire et envoyer des mails dans un terminal, je vous conseille « Mutt », c’est un client mail, qui prend en compte de manière native vos clefs GPG. Il est relativement facile à prendre en main. Aussi bien en ligne de commande qu’avec l’interface dans le terminal.

Et voila vous êtes aptes à recevoir et envoyer des mails avec votre dédié.
Et si vous voulez m’envoyer directement un mail mon adresse de contact est donc logiquement : contact@hedilenoir.com 🙂

 

Si vous avez des remarques/suggestions n’hésitez pas ! 🙂