Le Touilleur Express

  • Accueil
  • A propos de l’auteur
  • A propos du Touilleur Express

Trojan et sécurisation avec ElasticSearch

10 juin, 2014

Online Security Technology

Depuis quelques jours, j’avais remarqué que mon serveur sur lequel fonctionne ce blog avait des soucis. Lenteur, alertes, augmentation de l’utilisation de la bande passante… Bref, ça ne sentait pas très bon.

Je commence par regarder les process qui fonctionne sur cette machine et je note des processus « suspects » :

...
root      8929  0.0  0.0    800   128 ?        S    Jun09   0:00 /boot/.IptabLex
root      8930  0.0  0.0   8992   332 ?        Sl   Jun09   0:00 /boot/.IptabLex
root      8940  0.0  0.0   1164   180 ?        S    Jun09   0:00 /boot/.IptabLes
...

Bizarre ce IpTabLes… allons voir ce qu’il y a sur mon système

root@touilleur2:/boot# ls -la
total 1812
drwxr-xr-x  2 root root     4096 2014-06-09 19:21 .
drwxr-xr-x 21 root admin    4096 2014-06-09 19:21 ..
-r----x--t  1 root root       33 2014-06-09 19:21 IptabLes
-r----x--t  1 root root  1103207 2014-06-09 19:21 .IptabLes
-r----x--t  1 root root       33 2014-06-09 19:21 IptabLex
-r----x--t  1 root root   722392 2014-06-09 19:21 .IptabLex

Quand on voit cela : alerte rouge.
Les 2 petits fichiers sont des scripts shells qui exécutent 2 binaires, .IpTabLes et .IptabLex.

J’utilise fail2ban sur le serveur depuis 4 ans, et cela permet de voir aussi qu’il y a clairement un autre souci avec cette machine

root@touilleur2:/boot# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
fail2ban-ssh  tcp  --  anywhere             anywhere            multiport dports ssh 
fail2ban-postfix  tcp  --  anywhere             anywhere            multiport dports smtp,ssmtp 
fail2ban-apache  tcp  --  anywhere             anywhere            multiport dports www 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain fail2ban-apache (1 references)
target     prot opt source               destination         
DROP       all  --  222.186.62.73        anywhere            
DROP       all  --  static.201.81.63.178.clients.your-server.de  anywhere            
DROP       all  --  61.147.70.123        anywhere            
DROP       all  --  relatoriospy.com     anywhere            
DROP       all  --  61.160.213.190       anywhere            
DROP       all  --  server1.promocaoardente.com  anywhere            
DROP       all  --  222.186.62.44        anywhere            
DROP       all  --  61.160.221.217       anywhere            
DROP       all  --  61.160.215.3         anywhere            
DROP       all  --  218.2.22.114         anywhere            
DROP       all  --  194.51.174.61.dial.wz.zj.dynamic.163data.com.cn  anywhere            
DROP       all  --  108-166-98-9.static.cloud-ips.com  anywhere            
DROP       all  --  108-166-98-9.static.cloud-ips.com  anywhere            
DROP       all  --  78.93.227.220        anywhere            
DROP       all  --  124.240.184.45       anywhere            
DROP       all  --  117.41.182.93        anywhere            
DROP       all  --  static.120.226.76.144.clients.your-server.de  anywhere            
DROP       all  --  222.186.62.41        anywhere            
DROP       all  --  218.2.22.118         anywhere            
DROP       all  --  218.2.22.128         anywhere            
DROP       all  --  197.49.174.61.dial.wz.zj.dynamic.163data.com.cn  anywhere            
DROP       all  --  197.51.174.61.dial.wz.zj.dynamic.163data.com.cn  anywhere            
DROP       all  --  static-ip-7-92-56-61.rev.dyxnet.com  anywhere            
DROP       all  --  202.103.214.37       anywhere            
DROP       all  --  61.160.215.60        anywhere            
DROP       all  --  207.49.174.61.dial.wz.zj.dynamic.163data.com.cn  anywhere            
...

Le problème semble venir d’ElasticSearch, que j’avais utilisé pour faire un développement. Il faut savoir que par défaut, ES vient sans options de sécurités. C’est à vous de sécuriser votre installation. Cela a changé depuis la nouvelle version 1.2, et le niveau de sécurité de l’outil a été revu.

La documentation d’ElasticSearch est pourtant bien claire sur ce point, encore faut-il arriver jusqu’à cette page (tirée de la 0.90) :

Disabling dynamic scripts

We recommend running Elasticsearch behind an application or proxy, which protects Elasticsearch from the outside world. If users are allowed to run dynamic scripts (even in a search request), then they have the same access to your box as the user that Elasticsearch is running as.

First, you should not run Elasticsearch as the root user, as this would allow a script to access or do anything on your server, without limitations. Second, you should not expose Elasticsearch directly to users, but instead have a proxy application inbetween. If you do intend to expose Elasticsearch directly to your users, then you have to decide whether you trust them enough to run scripts on your box or not. If not, then even if you have a proxy which only allows GET requests, you should disable dynamic scripting by adding the following setting to the config/elasticsearch.yml file on every node:

script.disable_dynamic: true

This will still allow execution of named scripts provided in the config, or native Java scripts registered through plugins, however it will prevent users from running arbitrary scripts via the API.

Les conséquences sont assez ennuyeuses pour toute instance d’ElasticSearch mal configurée. Je vous invite à lire avec attention ce blog de Bouke van der Bijl : http://bouk.co/blog/elasticsearch-rce/

Quant à mes installations, je ferai en sorte de placer un nginx correctement configuré désormais…

Articles connexes et ressources
IptabLes and IptabLex hack?
Securing Your Elasticsearch Cluster par Alex Brasetvik
Doc Elasticsearch url-access-control
Téléchargez ElasticSearch 1.2.1

Edit
Cette aventure m’aura cependant coûté presque 40 EUR en 5 jours. En effet, le volume échangé en 5 jours a été tellement important, que Gandi a prélevé automatiquement plusieurs fois 14 EUR sur mon compte prépayé. Le souci c’est que je n’ai pas eu d’emails m’informant du dépassement de ce quota. Au final, cette boulette m’aura coûté un peu cher…
capture_gandi

Articles similaires:

Environnement de développement ElasticSearch 2.4 avec Docker Hadoop et Elasticsearch, comment indexer vers ES Elasticsearch, le pouvoir des Aggregations Gestion des logs applicatifs avec Fluentd
  • Thomas 12 juin 2014 at 13 h 15 min

    Le .deb elasticsearch démarre pourtant avec un user spécifique …

    En cloisonnant elasticsearch dans un container docker il y avait peut-être moyen de limiter la casse ?

  • HT21 17 juin 2014 at 17 h 29 min

    Pas cool ! Bon courage !

  • gojul 26 juin 2014 at 15 h 48 min

    Pas cool… Par contre effectivement en mettant en place un iptables, en configurant le port SSH sur un truc non standard et en limitant le nombre d’invocations du SSH tu limites un peu ce risque…

    Après faut encore maintenir le système à jour, ainsi peut-être que ES. Tout un travail quoi…

  • Sylvain 28 juin 2014 at 9 h 04 min

    Fail2ban est une solution de sécurité à minima. Il existe des possibilité de le contourner dans sa configuration par défaut. Une meilleure solution est de désactiver les accès SSH par mot de passe et de n’utiliser que des clefs SSH. Je n’ai en effet pour l’instant pas vu de tentative de brute force des clefs 2048 bits :-).

    Y’a pas de honte à se faire hacker. Sécuriser correctement un serveur, cela prend autant de temps que de l’installer et il faut fournir un effort continu afin de s’en assurer (scans de sécurité réguliers, patchs, veille, …). C’est un métier en fait…

    Sur le malware en question, il y a un très bon article ici : http://blog.malwaremustdie.org/2014/06/mmd-0025-2014-itw-infection-of-elf.html

    A priori, c’est juste utilisé pour faire du DDoS depuis la Chine. Une fois les binaires et le script de démarrage supprimé, il n’y a pas d’autres cochonneries installées (selon l’analyse citée ci-dessus). Il faudra par contre mettre à jour ton système car le truc a réussi un root privilege escalation donc tu dois avoir une faille dans un des binaires de ton système.

    Normalement, ce qui est préconisé c’est de refaire en entier ton serveur. Mais bon là cela ne semble pas nécessaire. Tu peut utiliser un scanner de rootkit (
    tiger, chkrootkit, rkhunter) pour chercher d’autres failles.

    Je suis surpris quand même de trouver un malware sur un logiciel qui n’est pas mainstream. Ce n’est pas courant.

  • Nicolas Martignole 28 juin 2014 at 11 h 50 min

    Merci Sylvain pour tes retours. Depuis, j’ai shooté la machine, une VM chez Gandi avec une version de l’OS trop vieille, et j’ai pris une machine dédiée chez un autre hébergeur, en prenant soin de mieux sécuriser le serveur.

Derniers articles

  • Vis ma vie de Staff/Principal Engineer

    Suite de l’article précédent sur le Staff Engineer. Aujourd’hui, voyons un peu

    20 juillet, 2022
  • Inari

    Devenir Staff Engineer : comment et pourquoi ?

    Après une dizaine d’années en tant que développeur, vous serez un jour

    17 juillet, 2022
  • WeAreDevelopers 2022, conférence à Berlin – jour 1

    Il est 8h40, 19 degrés, vous êtes à Berlin. La queue dehors

    24 juin, 2022

Tweets @nmartignole

  • RT  @katecrawford : Umm, anyone a little concerned that Bard is saying its training dataset includes... Gmail? I'm assuming that's flat out…

    2 days ago
  • Je découvre qu’ils apprennent le SQL en Terminal, très intéressant https://t.co/MrfcHve9wo

    3 days ago
  • RT  @AmelieBenoit33 : Je m’essaye à de nouveaux formats ! Un premier sketch qui me trottait en tête depuis le sketchnote précédent; la techn…

    3 days ago

Mots clés

Apple (32) Architecture (13) Big Data (5) Conference (8) Devoxx (55) Dev Web (37) Doctolib (2) geekevent (1) groovy (2) Innoteria (11) Java (517) Linux (10) Non classé (14) Perso (266) Recrutement (3) Scala (30) scrum (43) Société (3) Startup (20) Web 2.0 (67)

Le Touilleur Express

Blog par Nicolas Martignole

Contactez-moi : nicolas@touilleur-express.fr

Suivez-moi sur Twitter : @nmartignole

Copyright© 2008 - 2020 Nicolas Martignole | Tous droits réservés
  • A propos de l’auteur
  • A propos du Touilleur Express
  • Log In
  • My Account
  • My Profile
  • Reset Password

Le Touilleur Express