Edit 2019-09-01 : j’ai mis le rafraîchissement en place toute les heures, c’est efficace a en juger les graphes Fail2ban.

Récemment j’ai pu faire la découverte d’ipset, une extension kernel Linux qui permet de faire des listes d’adresses ipv4/ipv6 et sous-réseaux utilisables avec iptables (et donc shorewall)

C’est très pratique quand vous en avez ras le bol de vous faire poutrer des services (SSH/FTP/Mail/etc) par des robots, fail2ban c’est bien mais si on peut bloquer le gros des méchants déjà connus c’est mieux.

Pour faire simple et à la main, il faut créer une liste en définissant son type (net/ip) puis l’alimenter :

## creation des sets
ipset create blacklist_net -exist hash:net family inet hashsize 16777216 maxelem 16777216 
ipset create blacklist_ipv4 -exist hash:ip family inet hashsize 16777216 maxelem 16777216
## alimentation d'une liste
ipset add blacklist_ipv4 8.8.8.8
ipset add blacklist_net 192.168.12.0/24

Exemples idiots mais vous voyez ou je veux en venir. Une fois la liste créé on peut l’utiliser dans une règle shorewall dans le fichier /etc/shorewall/rules par exemple :

DROP		net:+blacklist_ipv4	$FW
DROP		net:+blacklist_net	$FW
DROP		$FW			net:+blacklist_net
DROP		$FW			net:+blacklist_ipv4

Pour être plus efficace, et parce qu’alimenter ip par ip c’est pas l’objectif, il existe un projet open-source très bien fourni, Firehol, qui regroupe pour les besoins de sa solution un ensemble de listes d’adresses IP mises à jour régulièrement, toutes les heures voir toutes les minutes pour certaines.

Pour automatiser :

  • Première solution, utiliser la solution Firehol
  • Deuxième solution, pisser un script qui va télécharger les listes qui me plaisent et les bidouiller pour les utiliser dans mes ipset derrière.

J’ai mis en ligne une première ébauche d’un script bash+python qui fait tout ça sur mon dépôt Git : https://git.k3nny.fr/Tools/ipset_updater

Note : d’un point de vu technique, l’ajout des ip/subnet par une boucle python ou bash est beaucoup trop long, ipset permet l’import massif en utilisant la restauration de fichier, c’est cette méthode qui est utilisé (voir le script : https://git.k3nny.fr/Tools/ipset_updater/src/branch/master/ipset_update.sh )

Une fois le script lancé on obtient ça :

* 2019-08-28 20:00:10 Runinng list update
Reading lists of URL to download
= Update ipv4
- Downloading spamhaus
- Downloading bi_any_2_7d
- Downloading blocklist
- Downloading stopforumspam
- Downloading haley_ssh
- Downloading blocklist_ssh
- Downloading bi_any_2_1d
- Downloading bi_any__1_7d
- Downloading bi_any_0_1d
- Downloading bi_any_2_30d
= Update net
- Downloading ru
- Downloading emerging
- Downloading cn2
- Downloading cn
- Downloading bogons
- Downloading firehol
- Downloading pk
- Downloading sa
- Downloading kor
= Saved 280625 elements to ipset_ipv4.set
= Saved 24751 elements to ipset_subnets.set
* Create ipset blocklists if not already existing
* Import lists into ipset
== Import ipv4 ipset
== Import subnets ipset
* Saving ipset
* Cleanup ipset files

Avec les listes incluses ça fonctionne déjà assez bien, je constate moins de tentative de connexion ssh intempestives, à vous de faire votre choix de blocage en fonction de vos besoins (blocage par pays, listes de blocages).

  • Je ne suis pas encore passé à Debian Buster, ni à nftables, visiblement nftables implémente les listes directement sans passer par une extension comme ipset.
  • J’ai commencé à modifier le script pour prendre en charge les listes ipv6 mais j’ai eu la flemme

Des ressources pour gratter :

Au commencement, pi-hole

Projet intéressant qu’est Pi-Hole : https://pi-hole.net/

C’est une solution qui installe de manière automatique un DNS menteur afin de s’éviter tous les sites qui hébergent de la publicité, trackers, etc..

Si vous disposez d’un RaspberryPi qui traine dans un coin à la maison c’est une excellente solution à mettre en place.

C’est bien mais pas top

Si vous disposez comme moi d’un serveur dédié ou d’une machine virtuelle hébergée, il pourrait être intéressant de mettre la chose en place en cas de déplacement ou pour son smartphone en 4G.

Il suffirait pour cela d’exposer votre serveur DNS Pi-Hole publiquement (TCP 53), personnellement je ne le fait pas directement, uniquement au travers d’un tunnel VPN.

Je suis tombé sur cet article très bien construit sur l’installation en plusieurs étapes d’un serveur DNS over HTTPS (DoH) + DNS over TLS (DoT) + Pi-hole + Unbound :

https://www.aaflalo.me/2018/10/tutorial-setup-dns-over-https-server/

  • DNS over HTTPS/DoH c’est la possibilité d’effectuer des requêtes DNS chiffrées sur HTTPS/TLS (TCP 443) via Nginx.
  • DNS over TLS/DoT c’est la peu ou prou la même chose, DNS sur TLS directement mais sur un port spécifique (TCP 853).
  • Pi-hole, cf. juste avant
  • Unbound est un recurseur DNS simple à installer et configurer.

Le fonctionnement est le suivant :

Les cas d’usage

  • Connecté en VPN, vous utilisez le DNS interne du serveur, en l’occurence pi-hole, vous beneficiez du DNS menteur/filtrage publicitaire. Pratique à condition que le port de votre VPN ne soit pas filtré.
  • Sur mobile Android à partir de la version 9, vous pouvez préciser un DNS privée (DNS over TLS, DoT) et vous utilisez alors votre DNS menteur quelque soit le réseau WiFi ou 4G.
    • Test effectué avec Chrome Android, pas de bloqueur en extension, les pages normalement infestées de publicités sont visitables.
    • Un détail cependant, le protocole nécessite d’utiliser le port TCP 853, donc filtrable.
  • Sur un poste de travail Windows/Linux/OSX, au moyen d’un client approprié (
    https://dnscrypt.info/implementations/) pour le protocole DNS over HTTPS/DoH, vous utilisez votre DNS menteur, y compris au travers de proxy HTTP.

Pour essayer/utiliser

Pour utiliser DoT sur votre mobile :

Options > Réseau > Avancé > DNS privée > dns.k3nny.fr

Pour tester DoH dans un navigateur :

https://dns.k3nny.fr/dns-query?name=www.toto.fr&type=A

{
    Status: 0,
    TC: false,
    RD: true,
    RA: true,
    AD: false,
    CD: false,
    Question: [
    {
        name: "www.toto.fr.",
        type: 1
    }
    ],
    Answer: [
    {
        name: "www.toto.fr.",
        type: 1,
        TTL: 3867,
        Expires: "Sun, 19 May 2019 15:46:27 UTC",
        data: "46.105.57.169"
    }
    ]
}

Pour aller plus loin

Pour comprendre plus en détails tous les enjeux et la technique derrière DoH/DoT, je vous invite à lire l’excellent billet de Stephane Bortzmeyer :

https://www.bortzmeyer.org/8484.html .

Et si au passage l’envie vous prend, je vous conseille d’acheter son livre « Cyberstructure » il est excellent.

https://cyberstructure.fr/

Nouveau RPi reçu j’essaye des choses, je voulais depuis quelques temps installer une solution permettant de jouer de la musique sur les enceintes du salon et contrôlable à distance depuis smartphone/tablette/laptop.

Pour ça j’ai installé la solution Mopidy sur une base Raspbian (Debian compilé ARM pour RaspberryPi)

Comment faire ? Aller on y va

Télécharger et installer Raspbian (Lite) sur une carte microSD, utiliser Etcher pour ça, c’est intuitif.

Brancher le RPi sur un écran + clavier, par defaut le clavier est en qwerty donc on va faire en sorte que le machin soit correctement configuré pour avoir du réseau et que votre clavier azerty soit correctement mappé

Hint : les identifiants par défaut sont pi/raspberry  (tapez rqspberry donc)

On se cale en root parce qu’on est grand, et on règle la timezone

sudo su
dpkg-reconfigure tzdata

Modifier l’agencement du clavier en utilisant la commande

raspi-config

Fichier de configuration réseau (vide par défaut) : /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto wlan0
iface wlan0 inet dhcp

Il manque quelques outils de base pour diagnostiquer deux trois choses

apt install vim htop screen

Un petit reboot et on passe à l’installation de Mopidy. Ajouter le dépôt de paquet Mopidy

wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/stretch.list
apt-get update

Installer mopidy + python-pip + les paquets supplémentaires (Spotify, SoundCloud, Youtube, Interface Iris)

apt-get install mopidy mopidy-youtube mopidy-spotify mopidy-soundcloud mopidy-podcast
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
pip install Mopidy-Iris
pip install Mopidy-Spotify-Web
pip install Mopidy-MusicBox-Webclient

Voila le machin est installé. Mais il va falloir configurer la chose. Explications

  • Mopidy en standalone va chercher le fichier de configuration dans ~/.config/mopidy/.. bref c’est de la merde.
  • Mais! Mopidy est prévu pour tourner en tant que service, c’est mieux.
  • Et en tant que service, il va taper dans /etc/mopidy/mopidy.conf. AH!
  • Mopidy ne balance rien à l’affichage, il ne sort que du son sur HDMI ou sortie jack du RPi.
  • Mopidy écoute par défaut sur les ports 6680 (interface web) et 6600 (interface MPD) mais uniquement en localhost. Je garde ça par défaut, défois que je voudrais coller un service web un jour sur le RPi.

Le fichier de configuration /etc/mopidy/mopidy.conf doit ressembler à quelque chose comme ça.

[core]
cache_dir = /var/cache/mopidy
config_dir = /etc/mopidy
data_dir = /var/lib/mopidy

[logging]
config_file = /etc/mopidy/logging.conf
debug_file = /var/log/mopidy/mopidy-debug.log

[local]
media_dir = /var/www/media

[m3u]
playlists_dir = /var/lib/mopidy/playlists

[mpd]
enabled = true
hostname = 0.0.0.0
port = 6600
password =
max_connections = 20
connection_timeout = 60
zeroconf = Mopidy $hostname
command_blacklist =
  listall
  listallinfo
default_playlist_scheme = m3u

[http]
enabled = true
hostname = 0.0.0.0
port = 6680
static_dir =
zeroconf = Mopidy $hostname

[spotify]
username = identifiant_spotify
password = mot_de_passe_spotify
client_id = id_client_a_generer
client_secret = secret_a_generer
toplist_countries = FR

[spotify_web]
client_id = id_client_a_generer
client_secret = secret_a_generer

[soundcloud]
auth_token = token_a_generer

[iris]
country = fr
locale = fr_FR

Pour la plupart des paramètres c’est « classique » pour un fichier de conf, ip, port, description, truc. J’ai déplacé le dossier de media par défaut dans /var/www/media ça m’emmerdai de laisser ça dans /var/lib/mopidy

Attention : Pour pouvoir utiliser le streaming Spotify il faut un compte Spotify Premium

  • Pour la partie Spotify, les valeurs a renseigner sont vos identifiants/mot de passe + un id/secret à récupérer depuis le site https://www.mopidy.com/authenticate/#
  • Idem pour Soundcloud : https://www.mopidy.com/authenticate/#

Ok une fois que c’est bon pour la configuration on peut lancer le serveur

systemctl enable mopidy
systemctl start mopidy

Pour voir si tout se lance bien

tail -f /var/log/mopidy/mopidy.log

Si le module Spotify à bien réussi à s’authentifier :

2017-08-18 23:55:25,074 INFO [10372:SpotifyEventLoop] spotify.session: Spotify logged in
2017-08-18 23:55:25,075 INFO [10372:SpotifyEventLoop] mopidy_spotify.backend: Logged in to Spotify in offline mode
2017-08-18 23:55:25,642 INFO [10372:SpotifyEventLoop] mopidy_spotify.backend: Logged in to Spotify in online mode

Sinon

2017-08-18 21:00:04,530 WARNING [6300:MainThread] mopidy.__main__: Found spotify configuration errors, the extension has been automatically disabled:
2017-08-18 21:00:04,531 WARNING [6300:MainThread] mopidy.__main__: spotify/client_secret must be set.
2017-08-18 21:00:04,532 WARNING [6300:MainThread] mopidy.__main__: spotify/client_id must be set.

Et comment utiliser ça maintenant ? http://<ip raspberrypi>:6680 dans un navigateur et on récupère la liste des interface web disponibles

Oui je n’ai pas trouvé mon bonheur tout de suite. Après plusieurs essais je conseille Iris + Musicbox. Iris ressemble à ça sur laptop

Sur téléphone dans un navigateur (à gauche) il existe aussi une application dédiée Mopidy Mobile (via protocole MPD)

Quelques notes :

  • La fonctionnalité Spotify permet de jouer de la musique depuis votre compte Spotify Premium sur le RPi en le controllant depuis une interface web (laptop/tablette/mobile). Elle ne permet pas d’utiliser la fonctionnalitée « Spotify Connect » donc n’est pas contrôllable depuis l’application Spotify directement.
  • Pour la locale je viens de me rendre compte qu’il me crois en Nouvelle Zélande, doit y’avoir une merde quelque part
  • La fonction recherche permet de recherche dans Spotify+SoundCloud+Localement. C’est puissant
  • Sur RPi3 le son est clean en sortie HDMI, crado en sortie jack. Dunno why
  • L’interface Iris est très orienté Spotify, pour être complet je laisse l’interface Musicbox qui permet de balancer du Youtube/SoundCloud/Local/Podcast plus simplement
  • J’ai coller RasperryCast en plus sur le même RPi ça ne rentre pas en conflit, les deux sont compatibles.

Voilà amusez vous bien, c’est simple à mettre en place (avec un minimum de techskilz), ça peut être sympa comme solution de musique partagée en soirée ou au bureau (avec ses risques et périls), vraiment efficace avec un compte Spotify Premium.

 

 

 

 

Un outil que tous les sysadmin de France et de Navarre devrait connaître et utiliser, c’est WAPT.

WAPT

Le site officiel : https://www.wapt.fr/fr/

What is WAPT ?

WAPT c’est une solution open-source de déploiement de logiciels, sous forme de paquets. Ca fonctionne en mode client-serveur et ça a l’énorme avantage de tourner en service système avec les droits administrateur et tout ça s’il vous plait silencieusement. S’pas beau la vie ?

Ça permet quoi :

  • Installer les logiciels silencieusement
  • Désinstaller les logiciels silencieusement
  • Mettre à jour <idem>
  • Reporting dans une console GUI de gestion
  • Packager ses propres applis
  • Servir d’outil d’inventaire

Si on compare avec les solutions de déploiement de base type scripts batchs / GPO / MSI etc., c’est beaucoup plus léger et souple. J’utilise des paquets pour l’utilisation classique (Firefox, VLC, etc..) mais aussi des paquets un peu plus tordus (Office 2016, Trend Micro OfficeScan, SolidWorkds).

Mis en place chez ex-job, la première utilitée que j’y ai trouvé c’est la mise à jour de Flash et Java, qui me prenait un temps fou, alors qu’avec WAPT, suffit d’importer le paquet déjà fourni par Tranquil IT Systems (les créateurs de WAPT) et bazinga Flash et Java à jour !

Derrière c’est quoi ?

  • Un serveur d’inventaire qui recolte passivement les données remontées des agents
  • Un serveur web qui sert les paquets pour les agents (sur la même machine que précédemment)
  • Une console de management GUI
  • Du Python essentiellement, c’est puissant, efficace, ça roxx
  • Du Lazarus pour la console, c’est efficace
  • De la sécurité, les paquets sont signés et les agents vérifient les paquets avec installation
  • Plein de paquets existants, pas besoin de réinventer la roue : https://store.wapt.fr/

Et c’est utilisé par qui ?

  • Par beaucoup d’Etablissements Scolaire, Ecoles, Universités
  • Par des BTS SIO en sujet de stage, je vous vois 😉
  • Par pas mal de Municipalités/Agglomérations/Com-Com
  • Par des Industries
  • Par des Ministères
  • Par tous ceux la : https://www.wapt.fr/fr/#references
  • Bientôt par ta boite aussi 😉

Si tu veux rendre service autour de toi, dis a ton sysadmin que pour qu’il arrête d’être emmerdé par les mises-à-jour de Flash et Java sur les postes de laboite, WAPT est la pour lui faire gagner du temps.

On a fait une chouette documentation en ligne, tout y est, profitez en : https://www.wapt.fr/fr/doc/

Si jamais vous avez des questions n’hésitez pas, en commentaire ou sur Twitter : @K3nnyfr

Va savoir pourquoi ça voulait pas, il faut tout d’abord créer l’arborescence suivante

mkdir ~/.vim/
mkdir ~/.vim/colors/
vim ~/.vim/colors/mustang.vim

Dans ce fichier mustang.vim collez-y ceci

" Maintainer:	Henrique C. Alves (hcarvalhoalves@gmail.com)
" Version:      1.0
" Last Change:	September 25 2008

set background=dark

hi clear

if exists("syntax_on")
  syntax reset
endif

let colors_name = "mustang"

" Vim >= 7.0 specific colors
if version >= 700
  hi CursorLine guibg=#2d2d2d ctermbg=236
  hi CursorColumn guibg=#2d2d2d ctermbg=236
  hi MatchParen guifg=#d0ffc0 guibg=#2f2f2f gui=bold ctermfg=157 ctermbg=237 cterm=bold
  hi Pmenu 		guifg=#ffffff guibg=#444444 ctermfg=255 ctermbg=238
  hi PmenuSel 	guifg=#000000 guibg=#b1d631 ctermfg=0 ctermbg=148
endif

" General colors
hi Cursor 		guifg=NONE    guibg=#626262 gui=none ctermbg=241
hi Normal 		guifg=#e2e2e5 guibg=#202020 gui=none ctermfg=253 ctermbg=234
hi NonText 		guifg=#808080 guibg=#303030 gui=none ctermfg=244 ctermbg=235
hi LineNr 		guifg=#808080 guibg=#000000 gui=none ctermfg=244 ctermbg=232
hi StatusLine 	guifg=#d3d3d5 guibg=#444444 gui=italic ctermfg=253 ctermbg=238 cterm=italic
hi StatusLineNC guifg=#939395 guibg=#444444 gui=none ctermfg=246 ctermbg=238
hi VertSplit 	guifg=#444444 guibg=#444444 gui=none ctermfg=238 ctermbg=238
hi Folded 		guibg=#384048 guifg=#a0a8b0 gui=none ctermbg=4 ctermfg=248
hi Title		guifg=#f6f3e8 guibg=NONE	gui=bold ctermfg=254 cterm=bold
hi Visual		guifg=#faf4c6 guibg=#3c414c gui=none ctermfg=254 ctermbg=4
hi SpecialKey	guifg=#808080 guibg=#343434 gui=none ctermfg=244 ctermbg=236

" Syntax highlighting
hi Comment 		guifg=#808080 gui=italic ctermfg=244
hi Todo 		guifg=#8f8f8f gui=italic ctermfg=245
hi Boolean      guifg=#b1d631 gui=none ctermfg=148
hi String 		guifg=#b1d631 gui=italic ctermfg=148
hi Identifier 	guifg=#b1d631 gui=none ctermfg=148
hi Function 	guifg=#ffffff gui=bold ctermfg=255
hi Type 		guifg=#7e8aa2 gui=none ctermfg=103
hi Statement 	guifg=#7e8aa2 gui=none ctermfg=103
hi Keyword		guifg=#ff9800 gui=none ctermfg=208
hi Constant 	guifg=#ff9800 gui=none  ctermfg=208
hi Number		guifg=#ff9800 gui=none ctermfg=208
hi Special		guifg=#ff9800 gui=none ctermfg=208
hi PreProc 		guifg=#faf4c6 gui=none ctermfg=230
hi Todo         guifg=#000000 guibg=#e6ea50 gui=italic

" Code-specific colors
hi pythonOperator guifg=#7e8aa2 gui=none ctermfg=103

Enfin on créer son fichier de propriétés perso

vim ~/.vimrc

Le contenu de votre fichier perso

set t_Co=256
set background=dark
colorscheme mustang
highlight Normal ctermbg=NONE
highlight nonText ctermbg=NONE

Et voila ça roxx

 

 

recalbox

BIOS Recalbox 4.1 : https://www.k3nny.fr/2017/10/bios-recalbox-4-1/

Vous avez eu pour Noël un Raspberry Pi et vous y avez installé Recalbox pour pouvoir jouer a des super jeux arcade/console !

Alors tu as chopé un pack de ROMs super trop cool, tu as tout mis sur le RPi sauf que patatra ça marche pas, c’est la mierda et tu découvres qu’il faut ajouter les BIOS…

Sauf que les BIOS pour les trouver c’est pire que pour les ROMs, a moins de s’appeler Sherlock Holmes et de surfer avec 3 anti-pubs et 4 blockeurs de scripts, t’attrapes les pires merdes du monde.

Du coup ce que j’ai fait c’est que j’ai réuni l’intégralité des BIOS nécessaires pour Recalbox dans un ZIP et j’ai calé un lisezmoi.nfo qui t’explique comment faire, tu vas voir c’est très simple.

*******************************************************************************
 BIOS Recalbox
*******************************************************************************

-------------------------------------------------------------------------------
 Post Information
-------------------------------------------------------------------------------
Posted by............: K3nnyfr - @K3nnyfr
Posted on............: 13/03/2016
Release version......: 2.0-v4.0.0-beta1

-------------------------------------------------------------------------------
 Information Generales 
-------------------------------------------------------------------------------
Type.................: Utility
Platform.............: Raspberry Pi/Pi2/etc

Compilation de tous les BIOS pour Recalbox, parce que c'est quand même bien la 
merde pour télécharger les bons BIOS.

C'est quand même plus sympa d'avoir une release de tous les BIOS en une seul 
fois plutot que d'aller fouiner ça sur des sites bieeeeeeen louches..

-------------------------------------------------------------------------------
 Instructions d'Installation
-------------------------------------------------------------------------------

 # Si vous lisez cette doc c'est que vous avez extrait l'archive, BIEN JOUEY!

 # Copiez le contenu du dossier bios dans le partage réseau bios de votre 
 Recalbox (par défaut \\recalbox\User data\bios). Sinon vous pouvez toujours 
 utiliser l'interface web de recalbox http://recalbox/bios/
 
 # Pour faire fonctionner l'émulateur NeoGeo/Arcade je passe par fba_libretro
 Particularité de cet emulateur il faut que le BIOS soit dans le même
 dossier que les ROMs.
 Il faut donc copier le contenu du dossier ROMs dans le partage ROMs de
 votre Recalbox (par défaut \\recalbox\User data\roms) ou via interface Web 
 http://recalbox/systems/roms/fba_libretro/
 
 # Redémarrez votre RPi et profitez bien ! 
 
-------------------------------------------------------------------------------
 Liste des BIOS présent dans cette release
-------------------------------------------------------------------------------
 
#### Description - Fichier - Hash

## Dossier bios/
 
Sega 32x - 32X_G_BIOS.BIN - 6a5433f6a132a2b683635819a6dcf085 
Sega 32x - 32X_M_BIOS.BIN - f88354ec482be09aeccd76a97bb75868 
Sega 32x - 32X_S_BIOS.BIN - 7f041b6a55cd7423a6c08a219335269e 
Atari 7800 - 7800 BIOS (U).rom - 0763f1ffb006ddbe32e52d497ee848ae 
MSX - CARTS.SHA - d6dedca1112ddfda94cc9b2e426b818b 
MSX - CYRILLIC.FNT - 85b38e4128bbc300e675f55b278683a8 
MSX - DISK.ROM - 80dcd1ad1a4cf65d64b7ba10504e8190 
MSX - FMPAC.ROM - 6f69cc8b5ed761b03afd78000dfb0e19 
MSX - FMPAC16.ROM - af8537262df8df267072f359399a7635 
MSX - ITALIC.FNT - c83e50e9f33b8dd893c414691822740d 
MSX - KANJI.ROM - febe8782b466d7c3b16de6d104826b34 
MSX - MSX.ROM - aa95aea2563cd5ec0a0919b44cc17d47 
MSX - MSX2.ROM - ec3a01c91f24fbddcbcab0ad301bc9ef 
MSX - MSX2EXT.ROM - 2183c2aff17cf4297bdb496de78c2e8a 
MSX - MSX2P.ROM - 6d8c0ca64e726c82a4b726e9b01cdf1e 
MSX - MSX2PEXT.ROM - 7c8243c71d8f143b2531f01afa6a05dc 
MSX - MSXDOS2.ROM - 6418d091cd6907bbcf940324339e43bb 
MSX - PAINTER.ROM - 403cdea1cbd2bb24fae506941f8f655e 
MSX - RS232.ROM - 279efd1eae0d358eecd4edc7d9adedf3 
PSX - SCPH1001.BIN - 924e392ed05558ffdb115408c263dccf 
Nintendo Family Computer Disk System - disksys.rom - ca30b50f880eb660a320674ed365ef7a 
Sega CD - eu_mcd2_9306.bin - d8b8b720dea6c6ba25c309ed633930f4 
Game Boy Advance - gba_bios.bin - a860e8c0b6d573d191e4ec7db1b1e4f6 
Sega CD - jp_mcd1_9112.bin - bdeb4c47da613946d422d97d98b21cda 
Lynx - lynxboot.img - fcd403db69f54290b51035d82f835e7b 
PC Engine - syscard3.pce - ff1a674273fe3540ccef576376407d1d 
Sega CD - us_scd2_9306.bin - 854b9150240a198070150e4566ae1290
Atari ST - tos.img - b2a8570de2e850c5acf81cb80512d9f6
Odyssey 2 - o2rom.bin - 562d5ebf9e030a40d6fabfc2f33139fd

## Dossier roms/fba_libretro/

FBA_LibRetro - neogeo.zip - 6d3a0303528ad33c9dbbbb836b17d150

-------------------------------------------------------------------------------
 Hum vas-y kiff
-------------------------------------------------------------------------------

 

Pour celles et ceux qui veulent faire ça rapide

Configuration utilisée :

  • Debian 7.9
  • Apache 2.2.22
  • LetsEncrypt à jour du 04/12/2015

Je suppute que :

  • vous ayez déjà téléchargé LetsEncrypt depuis le repo Github
  • vous ayez un fichier de conf de vHost par domaine déjà existant.
  • vous n’êtes pas un gros pinpin

Soit.

Allons-y Christian !!

1 – Copier le vHost actuel et le modifier

cd /etc/apache2/sites-available/
cp monsite.fr monsite.fr-SSL
vim monsite.fr-SSL

2 – Modification du vHost en prévision de ce que va nous sortir LetsEncrypt

  • Le port d’écoute pour https c’est 443 je ne vous apprend rien donc on change le port d’écoute
  • On doit activer l’engin de la mort SSLEngine
  • Et on doit mettre tout ça dans un fichier de log distinct

Grosso merdo vous devriez obtenir un fichier dans ce genre là :

NameVirtualHost *:443
<VirtualHost *:443>
        DocumentRoot /var/monsite.fr
        ServerName www.monsite.fr

        CustomLog /var/log/apache2/monsite.fr-SSL.log combined
        ErrorLog /var/log/apache2/monsite.fr-SSL_error.log

        SSLEngine On
        SSLCertificateKeyFile /etc/letsencrypt/live/www.monsite.fr/privkey.pem
        SSLCertificateFile /etc/letsencrypt/live/www.monsite.fr/cert.pem
        SSLCertificateChainFile /etc/letsencrypt/live/www.monsite.fr/chain.pem
        SSLCompression off
        SSLProtocol All -SSLv2 -SSLv3
        SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
        #SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

        <Directory "/var/monsite.fr">
                allow from all
                Options +Indexes
        </Directory>
</VirtualHost>

Le gros bloc de CipherSuite ce sont les recommandations de SSL-Labs, rapport a HeartBleed etc.

Vous noterez le bloc qui défini les clés utilisées :

SSLCertificateKeyFile /etc/letsencrypt/live/www.monsite.fr/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/www.monsite.fr/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.monsite.fr/chain.pem

J’ai tout simplement anticipé pour la suite, étant donnée que ce sont les chemins utilisés par Let’sEncrypt pour sortir les clés.

3 – Génération des clés avec LetsEncrypt

Générons maintenant les clés en automatique, c’est tout simple

cd /opt/letsencrypt/
./letsencrypt-auto certonly --webroot -w /var/monsite.fr/ -d www.monsite.fr

Hop Hop il se débrouille pour générer les clés tout le toutim et tadaaaaaa

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/www.monsite.fr/fullchain.pem. Your
   cert will expire on 2016-03-03. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

On active ce vHost, on regarder si la configuration est correcte, on redémarre Apache2 pour vérifier tout ça et on test voir si le navigateur nous chie pas dans les bottes

a2ensite monsite.fr-SSL
apache2ctl configtest
service apache2 reload

Chez moi ça s’est déroulé sans encombre pour mes différents domaines/sites

—————— Infection

Jeudi matin à 8h44 est apparu sur le poste cuisine-pc.dir.lan un virus sous la forme d’une fausse mise à jour Adobe Flash Player.

Ce virus non détecté par l’Antivirus en place et à jour Trend OfficeScan, la signature étant apparu la veille selon Virus-total, utilise le mécanisme CryptoWall / CryptoLocker dans sa version 3.0

Ce virus fonctionne de la sorte :

  • Injection/Lancement d’une binaire au démarrage du poste (clés de registre situées dans HKLM\Software\Microsft\Windows\CurrentVersion\Run et HKCU\Software\Microsft\Windows\CurrentVersion\Run)
  • Ajout d’une entrée également dans le Menu Démarrer\Démarrage pour tous les utilisateurs
  • La binaire se lance et exécute plusieurs outils par le biais de commandes batch.
  • L’empreinte mémoire atteignait 17 000 à 27 000 Ko pour chaque instance.

Chaque instance lancée chiffre les fichiers situés sur le disque dur du poste client ainsi que les éventuels lecteurs réseaux, périphériques de stockage (clé USB/disque dur externe), sur lesquels l’utilisateur courant à les droits d’écriture.

Les répertoires qui ne sont pas impactés sont :

  • Windows
  • Program Files
  • Temp

Cela permet à l’ordinateur de continuer à fonctionner « normalement ».

Les types de fichiers touchés sont :

  • Images JPG/PNG : le nom du fichier reste identique, l’aperçu dans l’explorateur reste le même, le contenu est altéré et l’image illisible.
  • Documents doc/docx/xls/xlsx : le nom du fichier reste identique, le contenu est altéré et le fichier illisible
  • Même conséquence pour les fichiers PDF, ODF, MKV, AVI, MP4

Voici la liste de tous les types de fichiers concernés (source : https://blog.fortinet.com/post/cryptowall-another-ransomware-menace )

filetypes

Ne sont pas concernés les fichiers .exe/.ini/.cfg ce qui en soit est « intéressant » dans le monde professionnel car le virus n’altère pas les fichiers de configuration de logiciels installés à la racine du disque (c’est souvent le cas avec les logiciels métiers anciens).

Dans chaque dossier/sous-dossiers où se trouvaient des fichiers chiffrés par le virus sont joint 4 fichiers :

fichiersduplique

C’est le seul effet vraiment visible de ce virus puisque rien n’est détruit, tous les fichiers sont réécrits en lieu et place des existants.

La page HTML est très simple, sans fioritures et contient le même texte que l’image PNG et le fichier texte.

  • Les trois fichiers sont rédigés dans un français correct avec quelques fautes.
  • Le quatrième fichier est un raccourci vers une page internet qui permet à la personne infectée de payer une rançon afin d’obtenir la clé de déchiffrement.

prompted

Un des effets qui a alerté l’utilisateur était le ralentissement du poste client.

La charge CPU nécessaire au chiffrement des fichiers est assez importante ce qui explique la lenteur soudaine. Une analyse avec Sysinternals Process Explorer montre également une forte activité réseau pour chaque instance du virus.

Chaque instance semblait se comportait comme un client/serveur, transmettant des requêtes HTTP en UDP (de mémoire le port 3192). Après recherches l’interface de commande du virus utilise le réseau Tor pour contrôler les postes infectés, le poste infecté était probablement utilisé comme relais de commande Tor.

Mon investigation s’est arrêtée là par manque de temps, il me fallait éviter une éventuelle propagation et rétablir les services touchés.

—————— Recherches

Après recherches sur le virus en question, plusieurs autres choses sont exécutées en arrière-plan et non des moindres :

  • Suppression des sauvegardes automatiques des volumes :
    • vssadmin.exe Delete Shadows /All /Quiet

La désactivation de ce service signifie que les copies des fichiers éventuellement sauvegardées par Windows dans un point de restauration précédent sont supprimées, aucune récupération avec des logiciels spécialisés tels que Recuva ou testdisk/PhotoRec n’est possible.

  • Désactivation des notifications d’Erreur de Récupération Windows :
    • bcdedit /set {default} recoveryenabled No
    • bcdedit /set {default} bootstatuspolicy ignoreallfailures
  • Désactivation des services Centre de Sécurité, Windows Defender, Windows Update, Service de Transfert Intelligent en Arrière-Plan (BITS).

L’exploit utilisé semble être celui-ci documenté sur le blog Malware Don’t Need Coffee : http://malware.dontneedcoffee.com/2015/04/cve-2015-0359-flash-up-to-1700134-and.html

 ——————- Impact et rétablissement

impacted

Impact

Les dégâts subis suite à cette infection ont empêché le fonctionnement du self du collège pour une journée.

Ont été touchés :

  • Fichiers du lecteur réseau mappé en écriture pour le logiciel de restauration
  • Fichiers du lecteur réseau mappé en écriture pour les documents de restauration
  • Fichiers situés dans les Documents utilisateur et le Bureau
  • Fichiers situés dans la deuxième partition du disque du poste client

Le logiciel de restauration utilise une borne de contrôle d’accès biométrique + lecteur de carte associé à un distributeur de plateau commandé par le réseau. Le logiciel de communication avec la borne de contrôle étant situé sur le poste infecté, nous avons dû fonctionner en manuel pour une journée.

Tous les postes du VLAN concerné ont été déconnecté manuellement du réseau, et un scan viral lancé avec l’outil Kaspesky Removal Tool. Au final cela n’a été d’aucune efficacité puisque le virus étant juste sorti, la signature du fichier était inconnu de cet outil. Méthode à revoir.

Fort heureusement aucune infection sur les postes du VLAN concerné n’a été signalée, cela reste à confirmer.

 

Rétablissement de l’activité

Pour le rétablissement de l’activité il a fallu dans l’ordre :

  • Extraire le disque de la machine infecter et le remplacer par un autre disque
  • Installer le système d’exploitation de la machine
  • Installer le logiciel de restauration
  • Installer le logiciel de communication avec la borne de contrôle
  • Installer le logiciel de contrôle en température des chambres froides
  • Paramétrer la messagerie Outlook
  • Installer les périphériques (imprimantes)
  • Intégrer le poste au domaine et mise en place du poste

Pour le rétablissement des données, n’étaient sauvegardées de manière journalière et mensuelle que les données du logiciel de restauration + documents de restauration.

Les utilisateurs ont pour consigne de ne sauvegarder que le minimum de choses dans leur dossier utilisateur et leur bureau. Egalement les données éventuellement stockées dans la partition 2 du disque dur infecté (photos, documentation) n’ont pu être récupérées puisque non sauvegardées.

Ce manquement de sauvegardes sur les clients sera comblé par le déploiement de la solution gratuite Veeam Endpoint Backup qui permet la sauvegarde de données sur postes clients.

Grâce aux sauvegardes différentielles effectués la nuit précédente et complète en début de mois les pertes de documents ont été minimes voir nulles.

La réinstallation rapide des logiciels métiers spécifique et leur paramétrage a pu être faites facilement car le virus ignore les fichiers de configuration .ini et binaires .exe ce qui a permis de récupérer les configurations précédentes sur l’ancien disque dur et de tout relancer sans l’intervention d’un technicien spécialisé.

Au final le service a été rétabli le lendemain midi soit 24h après la constatation de l’infection. Dans notre cas c’est une durée très satisfaisante.

Il est déjà trop tard a ce moment là...

Il est déjà trop tard a ce moment là…

 

Se développe une nouvelle menace pour les sociétés/établissements/particuliers appelés Ransomware ou Lockers. (logiciels « rançon » si on veut traduire ça rapidement)

On connaissait déjà les virus/malwares du type « Gendarmerie » qui bloquaient un ordinateur en vous indiquant que pour obtenir le code de déverrouillage il fallait verser un montant par carte de crédit. C’était du bluff, il était assez facile pour un réparateur de vous dépatouiller d’une telle situation.

Les cyber-criminels sont passé a l’étape supérieur avec un logiciel du même type mais qui a la fâcheuse tendance de chiffrer tous vos documents (doc/xls/ppt/jpeg/mp3/etc..) , en sus il vous demandera de verser un montant avoisinant 200€ afin d’obtenir la clé de chiffrement … que vous n’obtiendrez jamais.

La grosse différence avec la première version est qu’une fois les fichiers chiffrés il est impossible de faire machine arrière, une fois infecté c’est foutu de chez foutu la seul solution sera de réinstaller votre système d’exploitation, et tant pis pour vos données !

Ce virus va également chiffrer tout ce qui pourrait se trouver connecté à votre PC : clés USB, disque dur externes, NAS, Dropbox/hubiC/SkyDrive/etc..

C’est pourquoi je rappel qu’il est important de faire des sauvegardes sur support externe régulièrement de vos documents/cours/photos + d’installer un antivirus et un antimalware, les maintenir a jour + surfer responsable !

Swiss-Army-USB,A-B-301043-13
Le tutoriel rapide pour nettoyer le pc de tata jacqueline qui fait n’importe quoi :
Si vraiment c’est trop encrassé, nettoyez avec TronRescue : http://bmrf.org/repos/tron/Tron%20v4.3.1%20(2014-12-18).exe
TronRescue sur votre clé USB de Nowel sera la seul chose utile puisque c’est le script de la mort qui fait tout !
Bonnes Vacances !