Catégories
Sécurité

Comment casser la sécurité des kimsufi chez OVH

A l’origine j’avais « juste » un nouveau serveur qui coupait toutes les 24 heures alors qu’il était tout neuf.. Aussi bien que c’était gênant, les techniciens étaient assez rapide pour redémarrer gentiment (reboot soft) la machine.

C’est au pendant le debug de ce problème que je suis tombé sur un problème de sécurité.

Catégories
EDF iot Non classé supervision

#iot – RunAbove

Depuis quelques temps je travail sur des sondes #iot pour capturer des données environnementales chez moi. Ces captures ont pour but de mieux connaitre mon environnement, et agir sur ce dernier dans le but d’optimiser les rendements et l’expérience de l’utilisateurs chez moi.

Ayant commencé l’hébergement des données chez moi j’ai trouvé que les données n’étaient pas backupé, et pas obligatoirement stocké dans un environnement adapté à l’utilisation que je voulais en faire.

Travaillant avec les services d’OVH depuis quelques années (publicité gratuite : très bon service ;p), je me suis tourné sur leur plateforme Time Series PaaS.


J’ai donc commencé par dupliquer le stockage des données sur leur service après avoir créé une instance « Internet Of Things » et récupéré les tokens.

Ensuite dans mon script, j’ai rajouté le code suivant (que j’ai copié/collé d’un site dont j’ai oublié l’URL, désolé) :

// send to OVH IOT
$timestamp=time();
$data_string = array (
'metric' => 'power',
'timestamp' => $timestamp,
'value' => (float)$papp,
'tags' => array( 'compteur' => 'home' )
);

$data_string = json_encode($data_string);
$ch = curl_init(‘https://opentsdb.iot.runabove.io/api/put’);
curl_setopt($ch, CURLOPT_USERPWD, « LOGIN:PASS »);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, « POST »);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
‘Content-Type: application/json’,
‘Content-Length: ‘ . strlen($data_string))
);
$result = curl_exec($ch);

Après pour vérifier que vous avez bien des données de stocké dans le serveur, il faut utiliser la commande suivante :

curl -u LOGIN:PASS -X POST "https://opentsdb.iot.runabove.io/api/query" -d '{ "start":"1451343600", "queries":[ { "metric": "power", "aggregator":"sum" } ] }'

la valeur de start étant la date/heure en unixtime de départ souhaité

Example :

jdenoy@srv01:~# curl -u LOGIN:PASS -X POST "https://opentsdb.iot.runabove.io/api/query" -d '{ "start":"1451343600", "queries":[ { "metric": "power", "aggregator":"sum" } ] }'
[{"metric":"power","tags":{"compteur":"home"},"aggregateTags":[],"dps":{"1451343724":2463.3333333333335,"1451344324":1250,"1451344924":1041.111111111111,"1451345524":585,"1451346124":1370,"1451346724":770,"1451347324":688.1818181818181,"1451347924":1325,"1451348524":647,"1451349124":2375.5555555555557,"1451349724":3791,"1451350324":3804,"1451350924":4371.111111111111,"1451351524":4839.090909090909,"1451352124":4372,"1451352724":2508,"1451353324":1820,"1451353924":1132.2222222222222,"1451354524":1060,"1451355124":1772.7272727272727,"1451355724":1213,"1451356324":3237.777777777778,"1451356924":3407.2727272727275,"1451357524":702,"1451358124":1835.5555555555557,"1451358724":1012,"1451359324":1667,"1451359924":729.0909090909091,"1451360524":1365,"1451361124":1509,"1451361724":892.2222222222222,"1451362324":1423.6363636363637,"1451362924":783,"1451363524":2054.4444444444443,"1451364124":3889.090909090909,"1451364724":1970,"1451365324":1324.4444444444443,"1451365924":1494.5454545454545,"1451366524":1966,"1451367124":3183,"1451367724":2993.3333333333335,"1451368324":2597.2727272727275,"1451368924":1625,"1451369524":2220,"1451370124":1611.8181818181818,"1451370724":2814,"1451371324":3435,"1451371924":3538.8888888888887,"1451372524":2684.5454545454545,"1451373124":1396,"1451373724":2426.6666666666665,"1451374324":2576,"1451374924":477.27272727272725,"1451375524":720,"1451376124":1965.5555555555557,"1451376724":1338.1818181818182,"1451377324":516,"1451377924":835,"1451378524":2311,"1451379124":1835.5555555555557,"1451379724":2930.909090909091,"1451380324":4092,"1451380924":2906,"1451381524":4104.444444444444,"1451382124":2270,"1451382724":2625.4545454545455,"1451383324":2773,"1451383924":4057,"1451384524":4105,"1451385124":2856,"1451385724":3528,"1451386324":2678,"1451386924":1538,"1451387524":1356,"1451388124":4555,"1451388724":2916.6666666666665,"1451389324":2340,"1451389924":966.3636363636364,"1451390524":596,"1451391124":1162,"1451391724":957.7777777777778,"1451392324":982.7272727272727,"1451392924":2748,"1451393524":868.8888888888889,"1451394124":288.1818181818182,"1451394724":596,"1451395324":858,"1451395924":538.8888888888889,"1451396524":359.09090909090907,"1451397124":422.22222222222223,"1451397724":1452,"1451398324":1451,"1451398924":1848.1818181818182,"1451399524":2077,"1451400124":1832.2222222222222,"1451400724":1809.090909090909,"1451401324":2419,"1451401924":3014,"1451402524":2046,"1451403124":2065.5555555555557,"1451403724":1875.4545454545455}}]


Sinon c’est sympa, mais avec une interface graphique c’est mieux! Du coup je suis partis sur Grafana qui semble être une bonne interface de gestion de dashboard à partir de données « cloud ». Pour l’installation, je vous laisse consulter le tutorial de Florian.

Pour le résultat , ça donne cela chez moi pour aujourd’hui :

Prochaine version, afficher consommation en heures pleines et heures creuses.

Catégories
supervision

Le monitoring par OVH

J’ai un serveur chez Ovh depuis des années, et dernièrement étant cibles de joyeux pirates, j’ai installé des sondes sur mon serveur pour les surveiller.

Du coup, je suis tombé sur la supervision d’OVH….

===========================================
# of      from                     to                                 method
===========================================
5736 167.114.37.1 91.121.150.200 ICMP PING
5736 92.222.185.1 91.121.150.200 ICMP PING
5736 92.222.186.1 91.121.150.200 ICMP PING
5735 92.222.184.1 91.121.150.200 ICMP PING

En faisant un petit scan des IPs, on se rend compte que la supervision de chaque DC ping mon serveur :

jdenoy@srv01:~# dig +noall +answer -x 167.114.37.1
1.37.114.167.in-addr.arpa. 86369 IN PTR netmon-1-bhs.ovh.ca.
jdenoy@srv01:~# dig +noall +answer -x 92.222.184.1
1.184.222.92.in-addr.arpa. 86400 IN PTR netmon-1-rbx.ovh.net.
jdenoy@srv01:~# dig +noall +answer -x 92.222.185.1
1.185.222.92.in-addr.arpa. 86400 IN PTR netmon-1-sbg.ovh.net.
jdenoy@srv01:~# dig +noall +answer -x 92.222.186.1
1.186.222.92.in-addr.arpa. 86400 IN PTR netmon-1-gra.ovh.net.

Ils l’utilisent certainement pour avoir des infos sur la qualité des liens inter-DC.

Du coup, j’ai posé la question à OVH sans réponses techniques :

@ovh_fr est-ce que l’on a accès au stats de monitoring de vos sondes sur nos serveurs?? (icmp depuis les /24 de supp de chaque datacenter)

— Johan Denoyer (@jdenoy) 2 Octobre 2015

@jdenoy Bjr, Pourquoi souhaite tu avoir cette infos ? trop de requêtes ? Tu peux nous DM si tu veux Cdlt ^RomC — OVH Support FR (@ovh_support_fr) 6 Octobre 2015


Du coup, je suis partis sur une idée de faire la même chose qu’OVH en inverse pour voir ce que ca donne. J’ai fait un traceroute de chaque IP, et ca donne ca :

traceroute [(91.121.150.200:33456) -> (167.114.37.1:33457)], protocol udp, algo hopbyhop, duration 21 s
1 rbx1-3a-a9.fr.eu (91.121.150.252) 5.988 ms 5.547 ms 3.235 ms
2 10.21.50.250 (10.21.50.250) 1.235 ms 1.328 ms 1.284 ms
3 * * *
4 10.21.51.10 (10.21.51.10) 83.031 ms 81.707 ms 81.849 ms
5 * * *
6 * * *
7 * * *

traceroute [(91.121.150.200:33456) -> (92.222.184.1:33457)], protocol udp, algo hopbyhop, duration 15 s
1 rbx1-3a-a9.fr.eu (91.121.150.252) 3.008 ms 1.270 ms 5.892 ms
2 10.21.50.40 (10.21.50.40) 1.033 ms 1.276 ms 1.837 ms
3 * * *
4 * * *
5 * * *

traceroute [(91.121.150.200:33456) -> (92.222.185.1:33457)], protocol udp, algo hopbyhop, duration 16 s
1 rbx1-3a-a9.fr.eu (91.121.150.252) 1.282 ms 1.349 ms 6.499 ms
2 10.21.50.250 (10.21.50.250) 1.302 ms 1.313 ms 1.863 ms
3 10.21.57.250 (10.21.57.250) 10.323 ms 10.096 ms 10.246 ms
MPLS Label 20359 TTL=255
4 10.21.57.6 (10.21.57.6) 10.184 ms 10.116 ms 10.152 ms
5 * * *
6 * * *
7 * * *

traceroute [(91.121.150.200:33456) -> (92.222.186.1:33457)], protocol udp, algo hopbyhop, duration 21 s
1 rbx1-3a-a9.fr.eu (91.121.150.252) 2.711 ms 4.601 ms 1.389 ms
2 10.21.50.250 (10.21.50.250) 1.239 ms 1.336 ms 1.346 ms
3 * * *
4 10.21.148.6 (10.21.148.6) 7.878 ms 7.395 ms 7.431 ms
5 * * *
6 * * *
7 * * *

Du coup, vu que le traceroute ne passe pas, on peut imaginer que ca rentre dans une VRF MPLS chez OVH avec probablement un firewall qui nous interdis de faire la même chose dans l’autre sens.
D’ailleurs on le vois dans le traceroute vers 92.222.185.1, il y a un label MPLS dans la réponse à l’ICMP… (quelqu’un a oublié de désactiver la réponse ICMP sur un P 😉 )

Catégories
iot PRIOS

Consommation eau – PRIOS

Depuis quelques mois je travaille sur un projet supervision de consommation électrique et eau. La première partie du projet pour la consommation électrique semble maintenant fonctionner correctement.

Maintenant je travail sur la supervision de ma consommation d’eau, et heureusement pour moi, mon compteur possède un module radio qui envois les infos toutes les 8/10 secondes.

Il reste cependant à isoler le signal, le décoder, et surtout exploiter les informations.

Ce que je sais pour le moment, c’est qu’il est fabriqué par la société Sappel, qu’il émet sur 868,95Mhz en FSK, en unidirectionnel, avec une puissance maximum de 16 mW, et que le protocole utilisé est PRIOS ( aucune documentation n’existe pour ce protocole sur internet pour le publique).

fsk

Si certains ont des informations, pistes, etc, n’hésitez pas a m’aider (anonymement si vous le souhaitez). Je posterais des infos au fur et à mesure que j’avance, si j’ai le droit…

Catégories
EDF iot

#IOT – EDF

Il est toujours intéressant de connaitre la consommation électrique en temps réel chez soi. Ça fait maintenant deux ans que je travail sur ce projet et je commence à avoir des choses sympas!

2015-08-22_11-12-33

Une courbe à cinq minutes sur la journée en cours :

Une courbe sur la journée avec heures creuses/heures pleines et la comparatif de la journée précédente en ligne violet :

2015-08-22_11-30-23

Je récupère les données directement du compteur EDF avec un relevé toutes les minutes. Ça me fait un bon nombre de données.

Je vais maintenant faire des plus beaux graph sur une seule page