Docker c’est bien mais il se met bien à l’ aise sur la machine où il se situe. J’entends par là qu’il se créé son interface docker0 avec son range d’ip 172.17.0.0. Mais parfois on veut un peu plus contrôler le scope d’ip de docker car il peut entrer en concurrence avec une ip d’un réseau interne.
Vous pouvez retrouver le bridge docker0 de différente manière :
route -ndocker network inspectiptables -L
Mais docker est prévoyant et il est tout à fait possbile de paramétrer les ip que docker utilise pour son bridge docker0.
Pour celà c’est très simple, il suffit d’éditer ou créer un fichier /etc/docker/daemon.json de la manière suivante :
{"bip": "192.168.1.1/24"}
Dans notre cas docker0 utilisera un /24 sur 192.168.x.x.
Une fois ce fichier modifié, lancez :
systemctl daemon-reloadservice docker restart
Vérifiez ensuite le changement du scope de docker0 :
ip a
Si l’interface docker0 est monté deux fois vous pouvez supprimer celle inactive grâce à cette commande :
Hello ! Un article dans la suite des articles dédiés à Netcat. En effet, netcat est bien mais il ne permet pas d’échanger des données de manière « sûr ». En cas de sniffage réseau, vos données sont en claires et peuvent être lues par une personnes malveillantes. Rappelons que Netcat n’est pas le meilleur moyen pour échanger entre 2 machines, il vaut mieux privilégier ssh.
Mais il est possible de crypter les échnages entre 2 netcat via Cryptcat. Cet utilitaire va vous permettre d’échanger des flux chiffrés avec un mot de passe.
Comment faire ?
Voici les éléments à retenir :
# Sans encryptionsudo tcpdump -A-i any -n host 172.17.0.2 and port 8080nc -l-p 8080nc 172.17.0.2 8080# avec encryptionapt-get install cryptcatcryptcat -k password -l-p 8080cryptcat -k password 172.17.0.2 8080
C’est encore la magie de netcat. Aujourd’hui, je vous propose de découvrir comment connecter son linux à un windows.
Pour passer des commandes sous windows on utilise le terminale CMD et linux ne peut pas de base se connecter à windows et interagir avec. Il existe une solution néanmoins en tordant un peu les choses.
Première chose à faire installer netcat sur le windows et mettre en écoute le netcat avec une commande CMD (option -a) :
# sur le windows install de netcat# https://joncraton.org/files/nc111nt.zip# dézippe C:\Programm files...# lancement de cmd# on se rend dans le répertoire# ipconfig : liste ipnc -l-p 9999 -e cmd
Dans notre exemple notre netcat écoute sur le port 9999.
Puis sur notre linux, il ne nous reste plus qu’à nous connecter dessus.
# sur le linuxnc 192.168.99.100 9999
Le tour est joué, il ne reste plus qu’à passer des commandes windows comme ipconfig.
Une fois de plus netcat va nous montrer toute sa simplicité. Aujourd’hui, je vous propose de découvrir comment créer une machine relai entre deux machines.
machine 1 > machine 2 > machine 3
Ainsi, on va utiliser 3 machines dont une servira d’intermédiaire entre les 2 autres. L’objectif étant de passer des commandes des commandes shell à partir de la machine sur la machine 3 en passant par la 2.
La démo en vidéo
Les commandes sont les suivantes :
exemple : 172.17.0.1 > 172.17.0.2 > 172.17.0.3# sur la cible 172.17.0.3nc -l-p 9999 -e /bin/bash# sur le relay 172.17.0.2mknod backpipe pnc -l-p 7777 0<backpipe | nc 172.17.0.3 9999 1>backpipe# sur la source 172.17.0.1nc 172.17.0.2 7777
Nouvel article sur le couteau suisse méconnu netcat avec pour objectif de découvrir comment se connecter à un shell distant sur un autre serveur. Ce n’est pas la meilleure solution et la plus sécurisée car il faut en priorité utiliser SSH mais pour le fun et un besoin ponctuel cela peut s’avérer utile.
Comment faire ?
1ère option : l’écoute avec bash
Sur la machine distante on lance un netcat en écoute -l avec -e la commande bash :
nc -l-p 9999 -e /bin/bash
Pour se connecter dessus il suffit de se connecter à l’ip/port de la machine en netcat :
nc 172.17.0.2 9999
2ème option : lancement de la commande à la connexion
Avant de commencer, il faut le rappeler la meilleure manière et la plus sécurisée pour envoyer des fichiers entre 2 serveurs c’est scp. SCP s’appuie sur SSH on peut donc lui faire largement confiance.
Mais il faut savoir que parfois on peut utiliser netcat pour envoyer et recevoir des fichiers.
Premier cas, on veut récupérer le fichier via un curl :
Le scan de port est une activité régulière d’un sysadmin ou encore d’un administrateur réseau. Nmap est une référence dans le domaine et il permet d’aller au-delà de ça.
Mais saviez vous aussi que vous pouviez faire aussi cela avec netcat ? eh oui netcat est un bon couteau suisse souvent méconnu.
Je vous invite à découvrir cela en vidéo.
Pour cela voici la ligne de commande et l’option -z à retenir.
# scan d'1 portnetcat -z-v 172.17.0.2 80
# scan d'un range 80-100netcat -z-v 172.17.0.2 80-100
Netcat est un outil méconnu, il est souvent utiliser pour tester l’ouverture d’un port et c’est presque tout. Mais pourtant netcat permet de faire bien plus.
Certains black hat l’utilisent pour disposer d’une backdoor le temps de faire quleques opérations par exemple. Sans aller aussi loin je vous propose en quelques articles de découvrir comment en faire plus avec ce vrai couteau suisse du système linux.
Aujourd’hui nous allons commencer très simplement avec une simple connexion HTTP avec un serveur comme apache ou nginx par exemple.
Vous pouvez décourir cela dans cette vidéo :
Pour résumer très simplement :
netcat -v 172.17.0.2 80
Puis pour tester notre connexion, nous pouvons passer :
GET / HTTP/1.0
Avec celle-ci on demande au serveur web de nous fournir la page d’accueil « / ».
Avez vous déjà entendu parler des registry de services ? zookeeper en est un exemple ou encore cosnul. C’est ce dernier que je vous propose de découvrir. Consul est un outil léger qui va vous permettre de suivre pour vous les instances de vos applications.
Ainsi Consul va gérer les pools de services à savoir sur quels serveurs sont présentes les instances de vos applications (une ou plusieurs dans le cas de scaling). Il vérifiera pour vous l’état de santé de chacun des serveurs suivant vos règles de check.
Une registry de service va stocker comme un répertoire téléphonique comment joindre une application : les ips et les ports qui vont répondre. On parle de service car il s’agit de parler d’un pool pour une même application.
Dans notre exemple, nous allons utiliser cette registry pour alimenter haproxy en service. Haproxy permettra de load-balancer les requêtes sur les différentes machines permettant de répondre pour une application.
Présentation de Consul
Installation de notre serveur Consul
Une registry devient rapidement centrale et vitale pour une infrastructure. Pour les noeuds master, il est nécessaire d’envisager un cluster. 3 serveurs permettront d’assurer l’élection d’un master pour le bon respect du quorum.
Mise en place du service systemd pour Consul
Pour faciliter l’utilisation de Consul, il est préférable de créer un service systemd. Cela permettra de faire notamment des service start ou stop.
Installation d’un agent Consul
Pour enregistrer des services/instances dans la registry tenue par les master, il est nécessaire d’installer un agent sur chacune des machines applicatives. Ces agents informeront en permanence la registry de l’état de l’instance (up, down…).
Configuration d’un healthcheck
Elément essentiel dans notre architecture, le healthcheck va permettre de vérifier l’état de l’instance d’un service. Ce check peut être simple comme un simple ping ou curl mais il peut aussi se faire sur la base d’un script personnalisé pour vérifier plus finement l’état du service. Plusieurs healthcheck peuvent aussi mis en place pour une même instance.
Utilisation de consul-template
Consul-template va permettre d’éditer automatiquement la configuration de haproxy. A partir d’un template, cet outil va modifier un fichier de configuration (ex. haproxy.cfg) et en cas de changement il sera en mesure de faire une action par exemple un reload de service (pour prendre en compte cette nouvelle configuration).
Dans les précédents articles, nous avons découvert l’intérêt d’utiliser iptables et ses principales options. Aujourd’hui je vous propose d’utiliser iptables pour créer une première règle.
C’est souvent un cas d’école, nous allons chercher à empêcher les ping. Pour cela nous allons créer une règle de DROP :