:::: MENU ::::

Posts Categorized / Linux

  • Dec 02 / 2014
  • 0
Linux

Testing an ISO or an USB bootable drive with QEMU Tester une image ISO ou une clé USB bootable avec QEMU

If you want to test an ISO image or a bootable USB drive you just prepared, you can do it very easily thanks to QEMU with a simple command-line. Obviously, you will need to install the QEMU package first so you can use it. For example on a Debian-based distribution:

For USB drive testing, plug the USB key and get the name of device (checking dmesg if necessary and ensure that the drive is not mounted automatically). Afterwards you can launch:

For ISO testing, just get the path of your ISO image and launch:

It will launch an emulator with 1G RAM (-m option). As it’s emulated, there is a lot of things that won’t work and I recommend you to use this only for simple testing purposes (no network access or usb port enabled by default for example). All of these can surely be configured with a more complete command-line, but I invite you to read full QEMU documentation for doing that.

Here you go 😉 !Si vous souhaitez tester une image ISO ou une clé USB bootable que vous venez tout juste de préparer, vous pouvez le faire très facilement grâce à QEMU avec une simple ligne de commande. Evidemment, vous aurez besoin d’installer le package QEMU au préalable pour pouvoir l’utiliser. Par exemple, sur une distribution basée sur Debian :

Pour tester une clé USB bootable, branchez la clé USB et récupérez le nom du périphérique (vérifiez éventuellement dmesg si nécessaire et assurez vous que le disque n’est pas monté automatiquement). Une fois fait, vous pouvez lancer :

Pour tester une ISO, récupérez juste le chemin de l’image ISO et démarrez :

Ceci lancera un émulateur avec 1G de RAM (option -m). Comme on parle ici d’émulation, il y a bien sûr beaucoup de choses qui ne fonctionneront pas et je vous recommande d’utiliser ceci uniquement à des fins de test simples (pas d’accès réseau ou de port USB activé par défaut par exemple). Tout ceci peut bien sûr se paramétrer avec une ligne de commande bien plus complète, mais je vous invite pour cela à consulter la documentation de QEMU.

Here you go 😉 !

  • Nov 24 / 2014
  • 0
Linux

NMap main command-linesPrincipales lignes de commande NMap

Nmap (“Network Mapper”) is a free and open source (license) utility for network discovery and security auditing. Many systems and network administrators also find it useful for tasks such as network inventory, managing service upgrade schedules, and monitoring host or service uptime. Nmap uses raw IP packets in novel ways to determine what hosts are available on the network, what services (application name and version) those hosts are offering, what operating systems (and OS versions) they are running, what type of packet filters/firewalls are in use, and dozens of other characteristics. It was designed to rapidly scan large networks, but works fine against single hosts. Nmap runs on all major computer operating systems, and official binary packages are available for Linux, Windows, and Mac OS X. In addition to the classic command-line Nmap executable, the Nmap suite includes an advanced GUI and results viewer (Zenmap), a flexible data transfer, redirection, and debugging tool (Ncat), a utility for comparing scan results (Ndiff), and a packet generation and response analysis tool (Nping).

Standard scan with OS/Version discovery using SYN messages (option -n implies DNS resolution)

Scan without usual active hosts discovery

Scan of all opened UDP ports on host

Specify ports you want to scan (UDP and/or TCP)

Check if an host is existing on network

Scan an entire IP range

Usurp source IP address. Here, we are scanning [host] through eth1 interface using ip 192.168.0.1 from port 443

Usurp MAC address

Trace  packets and data you just sent/received (can be used when you are using usurpation)

Choose an output file for getting results

For each of previous commands, you can use:

  • -v to get a verbose mode
  • -T[0-5] to define an “aggressivity” profile for the scan (usually, T4 is used)

More information on official website : http://www.nmap.org

Nmap (“Network Mapper”) est un utilitaire gratuit et open-source (licence) pour la découverte de réseau et l’audit de sécurité. De nombreux administrateurs système et réseau le trouvent également utile pour les tâches telles que l’inventaire réseau, la gestion/planification des mises à jour de service, et la supervision d’hôte ou d’uptime de service. Nmap utilise des paquets IP bruts avec de nouvelles manières pour déterminer si des hôtes sont disponibles sur le réseau, quels services (nom de l’application et version) sont mis à disposition par ces hôtes, quels systèmes d’exploitation (et versions d’OS) sont utilisés, quel type de filtrage/pare-feu de paquet est mis en place, et des dizaines de caractéristiques autres. Il a été conçu pour scanner largement et rapidement des réseaux, mais fonctionne également bien pour de simples hôtes. Nmap fonctionne sur la plus grande majorité des systèmes d’exploitation, et les packages officiels binaires sont disponibles pour Linux, Windows et Mac OS X. En plus de l’habituelle ligne de commande exécutable, la suite Nmap inclut une GUI avancée et une visualisation des résultats (Zenmap), un outil de transfert de données flexible, de redirection et de débug (Ncat), un utilisaire pour comparer les résultats scannés (Ndiff), et un outil de génération de paquets et d’analyse de réponse (Nping).

Scan standard avec découverte de l’OS/Version en utilisant des messages SYN (l’option -n implique la résolution DNS)

Scan sans la découverte de l’état des hôtes

Scan de tous les ports UDP ouverts de l’hôte

Spécifie les ports que vous souhaitez scanner (UDP et/ou TCP)

Vérifie si un hôte existe sur le réseau

Scan d’une plage IP complète

Usurpe l’adresse IP source. Nous scannons ici [host] via l’interface eth1 en utilisant l’IP 192.168.0.1 depuis le port 443

Usurpe l’adresse MAC

Trace  les paquets et les données envoyées/reçues (peut être utile lorsque vous utilisez l’usurpation)

Définit un fichier de sortie pour conserver les résultats

Pour chaque commande précédente, vous pouvez utiliser :

  • -v pour utiliser un mode verbeux
  • -T[0-5] pour définir un profil “d’agressivité” pour le scan (habituellement, T4 est utilisé)

More information on official website : http://www.nmap.org

  • Nov 18 / 2014
  • 0
Linux

Find main DNS servers for a given domain nameTrouver les serveurs DNS principaux d’un nom de domaine

It can be useful to find the main DNS servers for a domain name and see if you can query it directly to ensure the value you got from your DNS server is the most recent. For this, you can simply use nslookup tools, which is available by default on either most Unix distributions and also on Windows.

Here you can see you got the main NS servers for the domain name “python.org” with the IP addresses associated for each NS.Il peut être utile de trouver les principaux serveurs DNS pour un nom de domaine et voir si vous pouvez le requêter directement afin de vous assurer que la valeur obtenue par votre serveur DNS est bien la plus à jour. Pour cela, vous pouvez simplement utiliser les outils nslookup, disponibles par défaut sur la plupart des distributions Unix et également pour Windows.

Vous pouvez alors voir que vous obtenez les serveurs NS principaux pour le nom de domaine “python.org” avec les adresses IP associées pour chaque NS.

  • Jul 25 / 2014
  • 0
Linux

Encrypt Hard Drive Disk under Linux – LUKS and cryptsetupChiffrer un disque dur sous Linux – LUKS et cryptsetup

You want to add a new hard drive disk (or a new partition) to your Linux system but this disk will contain some private data then you want it to be encrypted so you can restrict its access to whom will have the key.

Be careful, there are some parameters you have to take in consideration before performing these actions:

  • The passphrases used for encryption will never been saved, you have to be really careful about this and do not lose it. If you do, it will be impossible to retrieve data on this disk.
  • The encryption will impact your system performances (due to the CPU usage for encrypt/decrypt actions). Be sure that you use this disk for passive data (avoid any executables files for example), and prefer newest CPU with latest instructions set for AES so the performances can be improved (AES-NI).

I am going to present here the encryption of a new disk (pretty small, a 1GB disk for the example) identified as /dev/sdb on the system:

First of all, we need to install tools, like cryptsetup that we will use to encrypt/decrypt our disk (it’s a system tool allowing dm-crypt/LUKS encryption on hard drive, partition or even file):

We can now indicate that we want to crypt our /dev/sdb disk using AES and a hash alorithm SHA-256:

You will get a confirmation message to which you will have to type “YES” to validate. Then, you will be asked for the passphrase you want to use (this password won’t be saved, so don’t forget it!) to encrypt your data:

If you want to add some other keys for this encryption, you can do it using this following command:

Thanks to this command, you can add up to 8 different keys for the disk, allowing up to 8 different users to access to these data (by using each one its own passphrase):

You can also check whenever you want the state of the slots (used or not) so you can manage the keys. For that, you can just use this command:

Now that the disk is encrypted, we need to create our partition and our file system so we can use it. We will decrypt our disk in a first time and create the mapping with a custom name encrypteddata:

Right now, we can find this new mapping under /dev/mapper:

We can now work with this new mapping point. A mapping for an encrypted disk can be checked at any time by using the parameter status of cryptsetup command:

Then, we will create our partition and our file system with ext3:

We are now able to mount our new decrypted disk on any local point to read/write its content:

Our disk is now available on /mnt:

To close an encrypted disk, you will need to unmount it and then use the luksClose method:

The disk is now closed and encrypted again until someone will open it.

You can also choose to mount thi sdisk automatically on system start-up. For that, you will use /etc/crypttab file to define the encrypted volume configuration and then the /etc/fstab to define its mount (as you used to do for a standard disk). Using this mechanism, the key to decrypt the disk will be asked on system start-up:

Warning: if there is already a line existing in /etc/fstab for this disk, you will need to comment it so you don’t get any error on start-up.

Right now, you know how to encrypt your own disk 😉 !Vous souhaitez ajouter un disque (ou une partition) à votre système Linux mais ce nouveau disque va contenir des données assez sensibles et vous souhaitez chiffrer son contenu afin de restreindre son accès à certains utilisateurs qui pourront posséder la clé.

Attention cependant, quelques informations à bien tenir en compte lorsque vous effectuez ces opérations :

  • Les mots de passe utilisés pour le chiffrement ne seront jamais sauvegardés, il est donc très important que vous ne les perdiez pas, sans quoi il serait impossible de récupérer les données dessus.
  • Le chiffrement a nécessairement un impact sur les performances système (du fait de l’utilisation du CPU pour les actions de chiffrement/déchiffrement). Veillez donc à ne mettre que des données passives (évitez les exécutables par exemple), et préférez des CPU ayant les dernières jeux d’instructions AES afin d’accélérer les traitements (AES-NI).

Nous allons donc ici présenter le chiffrement d’un nouveau disque (très petit disque de 1Go) identifié comme /dev/sdb comme on peut le voir en listant les disques présents sur le système :

Nous allons tout d’abord installer les outils nécessaires, dont cryptsetup qui sera nécessaire pour chiffrer/déchiffrer le disque (c’est un outil système permettant le chiffrement dm-crypt/LUKS de disque dur, de partition ou même de fichier) :

On va donc maintenant indiquer que l’on souhaite chiffrer notre disque /dev/sdb en AES avec un algorithme de hachage SHA-256 :

Vous aurez alors un message de confirmation dans lequel vous devrez taper “YES” pour valider puis ensuite vous devrez indiquer la passphrase (mot de passe qui ne sera mémorisé que par vous, donc ne l’oubliez pas) que vous souhaitez utiliser pour ce chiffrement :

Si vous souhaitez ajouter d’autres clés à ce chiffrement, vous pouvez le faire grâce à la commande suivante :

Vous pouvez grâce à cette commande, ajouter jusqu’à 8 clés différentes pour le disque, permettant ainsi d’avoir 8 utilisateurs pouvant y accéder par exemple (en utilisant chacun leurs propres informations de chiffrement).

Vous pouvez également à tout moment vérifier l’état des slots utilisés afin de gérer les clés utilisées avec la commande suivante :

Maintenant que le disque est chiffré, il va falloir créer notre partition et notre système de fichiers afin que l’on puisse l’utiliser.  Pour cela, nous allons tout d’abord déchiffrer notre disque et créer le mapping avec un nom personnalisé encrypteddata :

A partir de là, on pourra alors voir que le mapping a été créé dans /dev/mapper :

Et on peut donc désormais travailler avec ce point de mapping. On peut d’ailleurs à tout moment vérifier le mapping d’un disque chiffré avec le paramètre status de la commande cryptestup :

Ensuite, nous allons créer notre partition puis le système de fichiers en ext3.

On peut désormais monter notre nouveau disque déchiffré sur un point de montage local pour pouvoir lire/écrire dessus :

Notre disque est donc maintenant visible sur le point de montage /mnt :

Pour fermer un disque chiffré, il faut démonter le point de montage puis utiliser la méthode luksClose :

Le disque est donc ainsi fermé et chiffré jusqu’à une prochaine ouverture.

Il est également possible de définir le montage automatique d’un disque chiffré lors du démarrage du système. Pour cela, on utilisera le fichier /etc/crypttab pour définir la configuration du volume chiffré puis le fichier /etc/fstab pour définir le montage du disque (comme on le ferait avec tout autre disque). De cette manière, la clé pour déchiffrer le disque sera demandée lors du démarrage du système :

Attention, si une ligne pour ce disque existe déjà dans /etc/fstab, il faudra la commenter pour éviter toute erreur lors du démarrage.

Vous savez donc maintenant comment chiffrer votre propre disque 😉 !

  • Jun 06 / 2014
  • 0
Linux

Testing website using telnet (SSL/HTTPS)Tester votre site Internet en utilisant telnet (SSL/HTTPS)

When developping a website, you could need to send custom requests to your server so you can analyze its behavior and its responses.

If you’re not using secured protocol, that’s easy, you just need to connect to port 80 (usually) on your server and send your request as:

You will immediately get the server response with the headers:

But now, if you want to send the same request to a server running on secured protocol (as HTTPS on port 443), you can’t use this method given that the request will be sent in plain text and the server won’t be able to understand it.

You will need to use the tool s_client provided with openssl. Once the tool is started, you wil immediately receive the certificate informations and will be able to send your request:

You will immediately get the server response with the headers as previously (in my example, a 404 error is sent back due to a non-existing page requested):

That’s all folk 😉 !Il peut arriver lors du développement d’un site Internet, que vous ayez envie d’envoyer des requêtes personnalisées à votre serveur afin de voir son comportement et quelles seront ses réponses.

Avec un site n’utilisant pas de protocole sécurisé, rien de plus simple, il vous suffit de vous connecter sur le port 80 de votre site (en général) et d’envoyer votre requête :

Vous obtenez alors immédiatement le retour du serveur avec les en-têtes de la réponse :

Mais si maintenant vous souhaitez interroger de la même manière un serveur sur un port sécurisé (par exemple 443 pour HTTPS), vous ne pouvez pas utiliser cette méthode puisque la requête serait alors envoyée en clair et ne pourrait pas être interprétée par le serveur.

Il faut donc dans ce cas utiliser l’outil s_client fourni par openssl. Une fois l’outil lancé, vous recevrez immédiatement les informations de certificat et pourrez à la suite envoyer votre requête :

Vous obtiendrez alors la réponse du serveur comme dans l’exemple précédent (dans l’exemple, une erreur 404 puisque la page demandée n’existe pas) :

A vous de jouer 😉 !

  • Apr 03 / 2014
  • 0
Linux

Setup multiple default routes on LinuxConfigurer plusieurs routes par défaut sur Linux

The problem ?

Your system is running on Linux with multiple physical network interface cards (NIC) and each card has its own default gateway. By default, you can only set up a single default gateway on a system.

In our example, we will consider 2 NICs (eth0 and eth1) enabled with default gateway configured on eth0 interface.

rt1

On this scheme, we can imagine two different cases:

  1. The flow coming into eth0 will be returned through eth0 (default gateway)
  2. The flow coming into eth1 will be returned through eth0 (default gateway)

In the first case, there is no problem, each NIC will work independently but in the second case, if you configured default gateway on eth0, whatever the network card receiving the request, it will answer through eth0 which is the default gateway.

Solution

The solution will be to use a program called iproute2, which is included and installed in all current Linux distributions. The expected result is:

  1. The flow coming into eth0 is returned through eth0
  2. The flow coming into eth1 is returned through eth1

It should so look like the following scheme:

rt2

First of all, you will have to define new routing tables in the file /etc/iproute2/rt_tables by defining your own tables. Here, we are defining two new tables called rt0 and rt1:

Afterwards, you will have to configure your network cards (under /etc/network/interfaces if you’re running on a Debian-like system) as below:

And now, restart your networking service to set this new configuration up. This will be permanent.

You can now connect to your server using both interfaces, and it will automatically answer correctly through the good gateway !

Le problème ?

Votre système fonctionne sous Linux avec plusieurs cartes d’interface réseau (NIC) et chaque carte a sa propre passerelle par défaut. Seulement, par défaut, vous ne pouvez définir qu’une seule passerelle par défaut sur un système.

Dans notre exemple, nous considérerons 2 NICs (eth0 and eth1) activées avec la passerelle par défaut du système configurée sur l’interface eth0.

rt1

Selon ce schéma, on peut imaginer deux cas différents :

  1. Le flux arrivant sur eth0 sera renvoyé sur eth0 (passerelle par défaut)
  2. Le flux arrivant sur eth1 sera renvoyé sur eth0 (passerelle par défaut)

Dans le premier cas, il n’y a aucun problème, chaque NIC fonctionnera indépendamment mais dans le second, si la passerelle par défaut est configurée sur eth0, quelle que soit la carte réseau sur laquelle la requête arrive, la réponse sera renvoyée sur eth0 qui est la passerelle par défaut.

Solution

La solution sera d’utiliser un programme appelé iproute2, qui est inclus et installé dans la plupart des distributions courantes Linux. Le résultat attendu est donc :

  1. Le flux arrivant sur eth0 est renvoyé sur eth0
  2. Le flux arrivant sur eth1 est renvoyé sur eth1

On devrait donc obtenir quelque chose comme le schéma suivant :

rt2

Tout d’abord, il va falloir définir les nouvelles tables de routage dans le fichier /etc/iproute2/rt_tables en définissant vos propres tables. Ici, nous allons définir deux nouvelles tables appelées rt0 et rt1:

Après cela, vous devrez configurer vos cartes réseau (via le fichier /etc/network/interfaces si vous êtes sur un système basé Debian-like) tel que ci-dessous :

Et maintenant, redémarrer votre service réseau afin de mettre en place cette nouvelle configuration. Elle sera mise en place de manière permanente.

Vous pouvez maintenant vous connecter au serveur en utilisant les deux interfaces, et la réponse sera automatiquement redirigée sur la bonne interface via la bonne passerelle !

Question ? Contact