Ransomware Linux

Il est loin le temps où avoir une machine  sous Linux protégeait des attaques des Virus. Quand j’ai commencé à héberger mon site web, au début des années 2000 j’avais utilisé un serveur Web dédié  (Savant Web serveur) sur Windows et j’avais été très étonné de constater le nombre de tentative  d’accès à des répertoires système de L’OS.  Ces tentatives échouaient car le serveur Web n’était pas IIS….

Depuis j’ai passé toutes mon informatique personnelle en GNU/Linux et je n’ai jamais été confronté à des attaques…. jusqu’à la semaine dernière.

Les pirates ciblent désormais également les machines Linux. Ainsi mes fichiers de disques de VM se sont mis à être renommés avec des suffixes .enc ! Ce que je pensais être un problème d’espace dans ma VM était bel et bien une attaque d’un virus de type ransomware. Tous mes fichiers personnels ainsi que la configurations apache et celle du serveur DNS étaient cryptées.

Heureusement que j’ai des sauvegardes… mais le désagrément causé est certain: rupture de service, éventuelle perte de données (de quand date la dernière sauvegarde?). On ne pense jamais assez aux sauvegardes ! La première chose à faire façe à une infection que l’on ne peut pas éradiquer (manque de littérature et désintérêt des éditeurs) est de limiter la casse. Arrêter le système car le virus à réussi à obtenir les droits root ou du groupe root puisqu’il chiffre des fichiers en écriture à root. Donc arrêter le système puis débrancher le câble d’alimentation ! Ensuite démarrer depuis une clé usb de type live-cd pour récupérer ce qui peut l’être. Enfin réinstaller le système complètement.

Après l’incident il faut également cherchez à s’en prémunir. Comment une telle infection à pu survenir ? Il y a 2 ou 3 semaines mon  serveur n’a pas redémarré sur échec de montage d’un Volume logique. Suite à cet étrange incident je n’avais trouvé comme solution que de démarrer sur un kernel précédent: coïncidence ou la première étape de l’attaque ? M’obliger à utiliser un kernel ancien contenant des failles ?

Ne jamais utiliser de kernel non à jour !

Leçon à retenir: Linux n’est plus sous les radars. Il faut donc s’équiper d’antivirus et d’antispam. Les solutions existent:clamav et spamassasin.

Juste pour le plaisir… CC-BY-SA

Une distribution libre et humanitaire: Emmabuntüs

Dans ma quête de la distribution libre et peu gourmande en ressource, je suis arrivé à la conclusion que Debian/LXDE est pour moi le couple idéal pour faire fonctionner mes machines sans avoir à me soucier de changer de processeur tous les 2 ans ni d’augmenter la quantité de mémoire vive tous les 4 ans. Je trouve en effet que c’est une bêtise de consommer 800Mo de RAM juste pour afficher le bureau… Cette solution est tellement économique en ressource que je peux faire fonctionner un portable de 2008 acheté en occasion et sur lequel j’ai dû malheureusement supprimer le système privateur installé par le reconditonneur.

Le bureau LXDE encore moins gourmand que XFCE s’avère être un choix de premier plan pour toutes les machines d’occassion. L’utilisation de matériel reconditionné n’est pas seulement une contrainte économique mais également un acte écologique et politique. Il ne manquait plus qu’une distribution dans ce sens à l’opposé de la surenchère de puissance que l’on constate dans les magasins en cette période de débauches festives où l’Hommo-economicus perd la raison. Cette distribution s’appelle Emmabuntüs disponible sur sourceforge

Ubuntu a-t-il mal vieilli ?

Je conseillais jusque là Ubuntu comme distribution linux pour débutant à cause de sa simplicité d’utilisation mais j’avais arrêté de mettre à jour mon système restant sur une LTS il y a 2 ou 3 ans. En effet l’interface Unity, de plus en plus gourmande ne m’intéressait plus. Finalement j’ai migré vers Debian il y a quelque mois. A vrai dire le couple Debian/LXDE me donne entièrement satisfaction !

On m’a demandé récemment quelle distribution pour un windosien ? J’ai répondu Ubuntu car c’est celle qui m’avait permis d’introduire Linux à la maison en 2006. Mais Ubuntu a mal vieilli. Le windosien est revenu vers moi, complètement perdu pas l’interface Unity, dérouté pas les explications et conseil du magazine Ubuntu dans lequel il avait eu des CD d’installation de la toute derniére version 14.10.

Si certains défauts sont classiques, comme celui de la dalle LCD de résolution non standard que l’installeur ne pourra configurer tout seul, d’autres posent problême lors du passage de windows à ubuntu. Celui qui est habitué à de vieux windows (Menu démarrer, Mes Programmes etc) risque d’être perdu par Unity. La présence d’une icône Amazon chantre du commerce electronique et producteur de la liseuse qui efface vos livres peut dérouter celui à qui on vanté les vertues du libre et de sa gratuité de fait. Le gestionnaire d’application d’ubuntu sélectionne également certaines applications pour effectuer des tâches données: quid de la liberté de l’utilisateur ?

Est-ce pour autant des défauts ? Ubuntu permet de choisir un bureau différent tel que LXDE pour celui qui comme moi préfère une interface vieillote. Le choix de Canonical de mettre en avant certains logiciels peut être mis sur le compte de la cohérence d’ensemble. Cela est le rôle du fournisseur de la distribution. Pour autant le gestionnaire de paquet synaptic permettra d’installer tous les paquets issus de Debian.

Heureusement dans le monde du libre, le choix n’est pas un vain mot. On pourra se retourner vers une distribution plus soucieuse de l’éthique telle que Debian ou pour les puristes gNewSense ou Trisquel adoubées par la FSF.

Statistique Dollar Universe ou Baby Perl

Je n’apprends de nouveau langage que si nécessaire…. ainsi il y a 4 ans j’ai appris le python qui fut un véritable plaisir ou bien le WLangage (avec moins de plaisir….). Hier je devais produire des statistiques d’exécution de batch lancés par l’ordonnanceur Dollar Universe (connu aussi sous le nom $U), un outil obsolète, propriétaire dont la fonction statistique est vraiment minimaliste.

En effet la commande obscure livrée avec $U permet d’avoir sous forme textuelle, l’état de chaque batch avec la date d’exécution, l’heure de début et l’heure de fin. Quid des traitements qui démarrent avant minuit et finissent après… on aurait aimé avoir la date de fin également, mais bon $U est un outils basique et payant, n’en demandons pas trop.

Afin d’agréger le résultats par batch et faire quelques statistiques (max, min, moyenne dans un premier temps), un petit programme Perl semblait tout indiqué. Voilà ce que cela donne après avoir lu 2 livres: Modern Perl et Impatient Perl , du baby perl tout craché! Le couteaux suisse de l’administrateur Unix/Linux ne dément pas sa réputation: il fait le boulot !

Le script suivant prend en entrée le résultat de la commande d’état des batchs de $U et recrache sur la sortie standard un CSV. Alternativement on peut lui passer en argument le fichier issu de $U et le fichier de sortie CSV.

#!/usr/bin/env perl
use warnings;
use DateTime::Format::Strptime;
use Text::CSV;

my %batch_stat = ();

sub get_input{
    my $num_arg =  $#ARGV + 1;
    unless ($num_arg==0) {
    open my  $input_fd , '<', $ARGV[0]
        or die "Impossible d'ouvrir le fichier $ARGV[0]";
    return $input_fd
    } 
    my $input = STDIN;
    return $input;
}

sub get_output {
  my $num_arg =  $#ARGV + 1;
    unless ($num_arg < 2) {
    open my  $output_fd , '>', $ARGV[1]
        or die "Impossible d'ouvrir le fichier $ARGV[1]";
    $output_fd -> autoflush(1);        
    return $output_fd;

    }
    my $output = STDOUT;
    return $output;
}

sub handle_line {
    my ($line) = @_;
    my $date_format = qr/\d{2}\/\d{2}\/\d{4}/;
    my $heure_format = qr/\d{4}/;
    if (  $line =~ /TERMINE\s*(?<date_exec>$date_format)\s(?<heure_debut>$heure_format)\s(?<heure_fin>$heure_format)/) {
    my @splitted = split(/\s+/,substr($line,19, length($line)));
    my $batch =  $splitted[0];
    my $date =  "$+{date_exec}";
    my $heure_debut =  "$+{heure_debut}";
    my $heure_fin =  "$+{heure_fin}";
    #print "$batch $date $heure_debut $heure_fin\n";

    my $analyseur = DateTime::Format::Strptime ->new (pattern => '%d/%m/%Y %H%M');
    my $dt_debut = $analyseur -> parse_datetime ($date .  ' ' .  $heure_debut);
    my $dt_fin = $analyseur -> parse_datetime ($date . ' ' .  $heure_fin);
    # la commande de stat de dollar univers ne précise pas la date de fin
    # mais uniquement l'heure de fin
    if ($dt_fin < $dt_debut){
        my $un_jour = DateTime::Duration -> new (days => 1);
        $dt_fin -> add_duration($un_jour);
    }
    my $duree = $dt_fin - $dt_debut;
    my $duree_minutes = $duree -> in_units('minutes');

    unless(exists($batch_stat{$batch})){
        #my %info = qw (min 0 max 0 moyenne 0 nb 0);
        $batch_stat{$batch}= {
        min => $duree_minutes,
        max => $duree_minutes,
        moyenne => 0,
        nb => 0        
        };
        #print "nouveau stat de batch cree \n";
    }
    my $current_nb = $batch_stat{$batch}{nb};
    $batch_stat{$batch}{nb} = $current_nb + 1;
        $batch_stat{$batch}{'min'} = $duree_minutes if $duree_minutes < $batch_stat{$batch}{'min'};
        $batch_stat{$batch}{'max'} = $duree_minutes if $duree_minutes > $batch_stat{$batch}{'max'};
    $batch_stat{$batch}{'moyenne'} = ( $batch_stat{$batch}{'moyenne'} * $current_nb + $duree_minutes ) / $batch_stat{$batch}{nb};

    }

}

my $real_input = get_input();

while (<$real_input>)
{
    handle_line($_);

}
#print Dumper \%batch_stat;

my $real_output = get_output();

my @entetes = ('batch','nb_exec','temp_min','temp_max','temp_moy');

$csv = Text::CSV -> new();
$csv -> print($real_output, \@entetes);
$real_output -> say();

foreach my $batch_name (keys(%batch_stat)) {
    my @column = ($batch_name,  $batch_stat{$batch_name}{nb}, $batch_stat{$batch_name}{min}, $batch_stat{$batch_name}{max}, $batch_stat{$batch_name}{moyenne} );
    $csv -> print($real_output, \@column);
    $real_output -> say();
}

Passons à TLS

Bien que SSL soit supplanté par son successeur TLS, il reste quand même encore utilisable car bien des serveurs le garde comme protocole au cas où un client ne supporterait pas TLS. L’enfer est pavé de bonnes intentions…. si SSLv2 est aujourd’hui considéré comme défaillant, ce n’est pas le cas de SSLv3 qui reste encore dans les bonnes grâces de la configuration de apache2 sous Debian 7. En effet dans le fichier /etc/apache2/mods-enabled/ssl.conf on trouve:

SSLProtocol all -SSLv2

Ce qui indique l’utilisation possible de  TLS et de SSLv3. Malheureusement une information parue sur le site américain NVD qui recense les vulnérabilités des logiciels, SSL est intrinsèquement vulnérable (y compris SSLv3) à l’attaque de l’homme du milieu. Cela veut dire qu’il faut absolument ne plus utiliser SSL mais son successeur TLS.

La mise en place du banissement de SSL dans nos serveurs web consiste à le supprimer de la liste des protocoles utilisables par apache. Dans le fichier ssl.conf il suffit de mettre:

SSLProtocol all -SSLv2 -SSLv3

On pourra également en profiter pour hausser si n’est déjà fait le niveau de cryptage (algorithmes utilisés) que le serveur accepte de faire. Le monde libre (et donc gratuit) ne laisse aucune excuse au client qui n’utilise pas un logiciel récent et supportant les algorithmes de chiffrement les plus sûrs. Toujours dans le fichier ssl.conf il suffit de mettre:

SSLCipherSuite HIGH:!ADH:!MD5

Debian dans les heures sombres du libre | hidden.bressure.net

L’orateur, Stefano Zacchiroli, nous explique quelles sont les motivations qui lui ont fait adhérer au libre et pourquoi l’adoption du libre est selon lui à un tournant. En cause le cloud, contre lequel Stallman propose le rejet mais Zacchiroli préfère poser la question de la solution que peut apporter Debian (et les développeurs de distributions) pour offrir une solution libre au moins équivalente aux cloud privateurs de liberté.

 Debian_in_the_Dark_Ages_of_Free_Software

 

 

Billet posté initialement sur mon blog caché avec Tor:Debian dans les heures sombres du libre | hidden.bressure.net.

Introduction au logiciel libre et la libération du cyberespace

La vidéo suivante montre l’intervention de Richard Stallman, l’inventeur du logiciel libre, lors d’une conférence à Genève en avril dernier. Stallman montre en un peu plus d’une dizaine de minute les concepts clés dernière le logiciel libre:

  • liberté des utilisateurs contre le développeur
  • liberté de diffusion
  • liberté de modification
  • choix éclairé pour protéger sa propre liberté
TEDxGE2014_Stallman05_LQ
Richard Stallman à Genève en Avril 2014

La lecture des livres suivants permet d’aller plus loin dans la réflexion:

  1. Free as in freedom
  2. Free Software Free society

Plus de 6300 relais Tor actifs | hidden.bressure.net

L’usage de Tor grandit de jour en jour. Le nombre de relais en service s’est encore accru. Il y a en a plus de 6000 maintenant (observé le 2 septembre) . Tor est un réseau de machine qui permet d’anonymiser au sens de l’adresse IP le client (ex: navigateur web) par rapport au serveur (le serveur ne connait pas qui est le client réellement) et inversement d’anonymiser le serveur au sens de l’adresse IP (ex: un serveur web) par rapport aux clients (qui ne connaissent pas qui est le serveur). C’est un puissant outil pour braver la censure, plus d’info sur la promotion de tor tor challenge ou en lisant mon billet.

relais-tor

Plus de 6300 relais Tor actifs | hidden.bressure.net.

Portable sous linux pas cher | hidden.bressure.net

Mon Samsung Q45 ayant rendu l’âme de nouveau moins d’un an après l’avoir fait réparer (puce graphique désoudée), il n’était pas envisageable de le réparer une fois de plus… En effet 120€ pour resouder la puce graphique, ça aurait fait 240€ de réparation en moins d’un an. Un peu cher. Par ailleurs le problème de la puce graphique du Samsung Q45 semble être un problème de conception dans le refroidissement du portable (petit portable, petit système de refroidissement) et la présence d’une puce graphique dédiée est en dehors du scope de fonctionnalité attendue.

La suite sur mon blog caché:

Portable sous linux pas cher | hidden.bressure.net.