Yubikey : sécurisez vos accès SSH (sous Debian) avec une double authentification [HowTo]

Yubikey

C'est désormais une certitude, les simples mots de passe ne sont plus suffisants pour assurer l'accès à des services critiques. En ce qui me concerne j'utilise, dès que cette option existe, le système de double authentification ("authentification à facteurs multiples"). Le principe est d'associer un mot de passe classique avec un deuxième identifiant à usage unique. Beaucoup utilisent Google Authenticator, ou bien la réception d'un SMS pour obtenir cette information.

Il existe une solution un peu moins connue mais particulièrement intéressante :  Yubikey. Il s'agit d'une petite clé usb (cf. la photo d'illustration de ce billet) particulièrement robuste, légère et ne nécessitant pas de pile. Il suffit de l’insérer dans un port USB et d'appuyer sur le bouton central. La Yubikey se comporte alors comme un clavier (pas besoin de driver spécifique) et génère automatiquement le code à usage unique. Cette clé est vendue sur le net à un tarif abordable (environ 23€ sur Amazon). Certaines sociétés (comme OVH,  par exemple) ont adopté massivement ce dispositif afin de sécuriser l'accès à leur système d'information.

J'utilise une Yubikey depuis quelques mois et je dois reconnaître que cette dernière est particulièrement pratique (pour sécuriser l'accès à mon compte LastPass par exemple). J'ai également commencé à sécuriser l'accès SSH de certains de mes serveurs avec ce dispositif et j'ai décidé de créer ce how-to pour aider ceux qui souhaiteraient faire de même.

Comme d'habitude, ce tuto est basé sur Debian 7, mais il devrait être assez facilement utilisable avec d'autres distributions.

Avertissement important : durant toutes ces opérations ne redémarrez pas le service SSH (ni votre serveur), vous risqueriez de ne plus pouvoir vous connecter ! Une fois la configuration achevée (et le service SSH relancé) conservez votre session SSH ouverte et testez en lançant une nouvelle connexion en parallèle : si les choses tournent mal (connexion impossible) vous conserverez ainsi un accès 🙂

La première opération à réaliser est d'installer la librairie PAM pour Yubico/Ybikey

apt-get install libpam-yubico

Il faut ensuite créer le fichier qui va contenir la liste des Yubikey habilitées à se connecter avec un compte utilisateur donné

mkdir ~/.yubico
vim ~/.yubico/authorized_yubikeys

Pour mémoire le "~" représente le home directory de l'utilisateur actuellement connecté. Si vous êtes connecté en root, le fichier sera donc créé dans "/root/.yubic/authorized_yubikeys"

et d'y placer la liste des Yubikey autorisées à se connecter de la façon suivante

username:token_ID

Le username correspond à votre login Unix (root par exemple) et le token_ID peut être récupéré à cette adresse.

Rendez-vous sur cette page, insérez votre Yubikey sur un port USB, sélectionnez "OTP" (1) dans "source format" et générez une clé en appuyant sur le bouton de votre clé (2).

yubi_screen1

Vous obtiendrez en retour une "input string" composé de 12 caractères et commençant par 6 fois la lettre "c". De la forme "ccccccabcdef". Cette chaine est votre "token_ID". Ajuster le fichier "authorized_yubikeys" avec cette valeur. On obtient donc quelque chose comme "root:ccccccabcdef".

yubi_screen2

Si vous devez donner l'accès à plusieurs Yubikey pour le même login vous pouvez accumuler les Token_ID avec quelque chose du type "root:token_yubikey1:token_yubikey2..."

On édite ensuite le fichier

/etc/pam.d/sshd

Ajoutez la ligne suivante après "@include common-auth"

auth required pam_yubico.so id=16

Si vous préférez devoir générer votre code à usage unique avant d'avoir à mentionner votre mot de passe placez cette ligne avant "@include common-auth" (à vous de décider ce que vous souhaitez faire).

Éditez ensuite le fichier

/etc/ssh/sshd_config

Afin de modifier la directive suivante

ChallengeResponseAuthentication yes

Redémarrez SSH

/etc/init.d/ssh restart

Essayez d'ouvrir une nouvelle session (conservez la session en cours active - on ne sait jamais ...). Vous devriez obtenir ça

yubi_screen3

 

  • Commander une Yubikey sur Amazon : ICI
  • Plus d'information sur Yubikey : ICI

 

 

Recevez les alertes de votre NAS Synology par SMS avec les forfaits d’OVH

sms_phone

Vous possédez un NAS Synology et vous souhaitez être avertis rapidement (et d'une manière fiable) lorsque certains événements se produisent (disque dur HS, température trop elevée ...) ? La notification par SMS est certainement la meilleure solution.

J'ai récemment eu à paramétrer ce type de notification et je voulais partager avec vous cette petite configuration qui pourra peut être en intéresser certains.

OVH propose un ensemble de forfaits permettant d'envoyer des SMS à un tarif assez avantageux (à partir  de 8€ HT pour 100 SMS). L'hébergeur propose également un ensemble d'API permettant de générer des SMS à partir de vos propres scripts. Pour ce how-to nous utiliserons "HTTP2SMS" dont le fonctionnement est détaillé à cette adresse.

Pour commencer, connectez vous à votre manager OVH (rubrique "SMS") afin de :

  • Récupérer votre identifiant OVH de compte SMS (format "sms-nic-X") -> (1) sur le screenshot

scr1

  • Créer un nouvel utilisateur SMS (dans la suite de cet exemple cet utilisateur est "testsms")

scr2

  • Créer un nouvel expéditeur pour vos SMS. Vous disposez de plusieurs méthodes afin de vous identifier auprès d'OVH. Choisissez ce qui vous convient le mieux.

scr4

scr5

  • Connectez-vous ensuite à l'interface d'administration de votre NAS et sélectionnez "Control Pannel" (ou un truc qui doit ressembler à "panneau de configuration" si vous utilisez une interface en français...)

scr6

  • Puis ensuite la rubrique "Notification"

scr7

  • Sélectionnez l'onglet "SMS" , cochez "Enable SMS notifications" et cliquez ensuite sur "Add SMS service provider"

scr8

  • Copiez-collez la chaine fournie ci-dessous au sein de la zone "SMS URL" (en prenant soin de remplacer "sms-AB12345-1" par votre identifiant OVH de compte SMS récupéré au tout début de ce tuto et "EXPEDITEUR" par votre identifiant d'expéditeur défini lors de votre connexion au manager OVH - cf. ci-dessus)

https://www.ovh.com/cgi-bin/sms/http2sms.cgi?account=sms-AB12345-1&login=LOGIN_ACCOUNT&password=PASS_ACCOUNT&from=EXPEDITEUR&to=DESTINATAIRE&noStop=1&message=MESSAGE_ALERTE

scr9

  • Cliquez sur "NEXT" et paramétrez l'écran suivant de la manière suivante

scr10

  • Validez puis remplissez l'écran suivant avec vos informations définies au début de ce tuto : nom d'utilisateur sms (attention : différent de votre identifiant OVH de compte SMS) et son mot de passe associé. Il faut également préciser le numéro de téléphone sur lequel seront envoyées les alertes (bien respecter le format tel qu'il est présenté ci-dessous)

scr11

Validez, il ne vous reste plus qu'à générer un sms de test et de valider votre configuration !

N'oubliez pas d'aller jeter un coup d’œil dans l'onglet "Advanced" afin de définir quel type d'alertes vous souhaitez recevoir par SMS.

scr12

Sécurisez facilement votre navigation avec Putty et un simple serveur SSH

wifi_zone

Les vacances arrivent et les connexions à partir de hot spot publics vont devenir de plus en plus  fréquentes. Si vous êtes sensibles aux problèmes de sécurité vous redoutez certainement ce mode de connexion. Bien sûr vous pouvez utiliser un VPN (en optant pour  une solution commerciale ou bien en installant votre propre système).

Mais si vous n'avez pas envie de vous prendre la tête il existe une méthode beaucoup plus simple basée sur l'utilisation de Putty (ou Kitty) et d'un simple serveur SSH (aucune configuration spécifique n'est nécessaire sur ce serveur).

Attention : cette technique ne remplace pas totalement un "vrai" VPN car seule la navigation sur le web (à partir de votre navigateur) sera sécurisée. Mais c'est peut être suffisant !

Voici comment procéder :

  • vous devez disposer d'un serveur SSH. Ce dernier peut être hébergé sur un serveur dédié mais aussi sur tous types d'offres de VPS (OVH Classic/Cloud, DigitalOcean, Linode, Amazon AWS ...). Encore une fois aucun paramétrage spécifique n'est nécessaire pour ce serveur. Au passage vous pouvez choisir d'opter pour un serveur hébergé à l’étranger pour utiliser cette méthode afin de contourner les limitations géographiques imposées par certains services (regarder des vidéos réservées exclusivement aux internautes US par exemple ...).
  • Vous devez paramétrer Putty de la manière suivante

putty_proxy1

  • il faut ensuite paramétrer l'utilisation d'un proxy sur votre navigateur de la manière suivante (l'exemple est donné pour Firefox mais vous devriez pourvoir facilement trouver l'équivalent pour votre navigateur favori). En effet une fois lancé/connecté Putty se comporte comme un serveur proxy Socks répondant sur le port 12345 (vous pouvez bien entendu modifier ce numéro de port...)

putty_proxy2putty_proxy3

  • Il ne vous reste plus qu'à lancer la connexion sur votre serveur SSH avec Putty (en utilisant la configuration illustrée ci-dessus) et de naviguer à l'aide de votre navigateur. C'est tout ! Vous pouvez vérifier que votre IP de connexion ( http://ippub.org ) correspond bien à celle de votre serveur. L'intégralité du trafic généré par votre navigation sur le net est désormais chiffrée au travers de la connexion SSH. Attention toutefois, seul le trafic généré par votre navigateur va bénéficier de ce chiffrement.

Crédit photo : Simon A

Linux // Effectuer un reboot d’urgence à distance

stopVote serveur est hébergé dans un datacenter à plusieurs centaines de kilomètres. Vous disposez toujours d'un accès SSH mais la machine refuse de rebooter (Init 6, reboot, halt ... rien ne fonctionne...). Bien entendu vous ne disposez pas de module de contrôle de l'alimentation à distance ... C'est une situation que j'ai rencontré il y a peu de temps suite à un problème NFS sur l'un de mes serveurs.

Si vous rencontrez ce type de problème vous pouvez tenter les commandes "de la dernière chance" ;-).

Attention : en appliquant ces commandes vous allez engendrer un reboot direct (un peu comme si vous appuyez sur le bouton "reset" du serveur ...). Autant vous dire tout de suite que ce n'est pas vraiment ce qu'il y a de plus clean : rien ne va être fermé proprement, pas de sync sur les disques bref un vrai reboot à l'arrache (avec toutes les conséquences possibles ...) !

Voici donc les commandes à utiliser :

echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger

Si vous préférez arrêter complétement le serveur (attention quand même si vous êtes à plusieurs centaines de kilomètres c'est peut être pas une très bonne idée  😉 ) :

echo 1 > /proc/sys/kernel/sysrq
echo o > /proc/sysrq-trigger

Ces commandes ont pour effet de simuler l'usage de la combinaison de touche apellée "magic SysRq key". Cette combinaison de touche reconnue par le Kernel permet d’effectuer des opérations d'assez bas niveau sur votre système. Si vous souhaitez en savoir plus vous pouvez consulter cet article Wikipedia .

[HowTo] Installation et configuration d’OpenVPN sous Debian 7


Photo Post OpenVPN

En bons Geeks nous avons tous besoin, à un moment ou un autre, d'un VPN (pour se connecter en sécurité depuis un hot-spot public, pour accéder à des contenus disponibles qu'à partir de certaines zones géographiques ...). Il existe bien entendu une offre commerciale assez fournie mais partant du principe qu'on est jamais aussi bien servi que par soi même il n'est en fait pas très compliqué de mettre en œuvre sa propre solution (en s'appuyant par exemple sur des offres de VPS low cost ...).


Logo OpenVPN

Il existe aujourd’hui différentes technologies permettant la mise en place d'un tunnel VPN (IPSec, PPTP, L2TP ...). Toutefois ces protocoles nécessitent tous l'ouverture de certains ports et/ou protocoles au niveau des routeurs utilisés pour la connexion à l'Internet. Malheureusement lors de vos déplacements vous ne maîtrisez pas toujours ces aspects ... OpenVPN permet de s’affranchir de ce type de problème. En effet il est capable d'utiliser un port standard (par exemple le TCP:443) qui est habituellement utilisé pour les connexions HTTPS. S'agissant là d'un port largement utilisé il est fort probable que tous les accès Internet que vous rencontrerez laisseront passer ce type de flux !

Ce how-to est destiné à vous fournir les éléments nécessaires à la mise en œuvre de ce type de VPN en toute autonomie (côtés serveur et client).

OpenVPN en quelques concepts :

  • Open VPN nécessite un client spécifique en fonction de votre matériel (téléchargements disponibles ICI )
  • L'authentification est basée sur un système de certificats. Vous devrez générer ces certificats (et les clés associées) sur votre serveur pour chaque client. Ainsi qu'un certificat propre à votre serveur (qui jouera le rôle d'Autorité de Certification). Ces fichiers seront ensuite utilisés sur le client pour s'authentifier
  • La configuration du client est réalisée au travers d'un fichier de conf spécifique

Pré-requis : vous devez disposer d'un serveur Linux fonctionnant sous Linux Debian 7 qui n'utilise pas actuellement le port TCP:443(EDIT : voir le commentaire de Denis pour les possibilités de partage de ce port). Si vous utilisez déjà des règles IPtables vous serez amené à adapter la configuration de votre Firewall ...

Vous verrez c'est un peu long 😉 mais j'ai essayé de détailler chaque opération le plus précisément possible.

C'est parti!

  • Nous allons commencer à installer le serveur OpenVPN
apt-get install openvpn
  • On place au bon endroit les fichiers nécessaires à la génération des clés et certificats (OpenVPN est fourni avec un ensemble d'outils permettant la gestion de ces éléments : Easy RSA)
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa/
cd /etc/openvpn/easy-rsa/
  • On édite ensuite le fichier "vars" qui intègre les paramètres par défaut pour la génération des clés et certificats (les informations à modifier se situent à la fin de ce fichier)
vim vars

et adaptez les informations en fonction de vos besoins ...

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="FR"
export KEY_PROVINCE="Auvergne"
export KEY_CITY="ClermontFerrand"
export KEY_ORG="BdX"
export KEY_EMAIL="votre@email.com"
...
  • On lance ensuite ces commandes nécessaires à l'initialisation de différents paramètres de crypto et de l'Autorité de Certification
source ./vars
./clean-all
./build-dh
./pkitool --initca
./pkitool --server server
  • Après ces différentes opérations on crée le fichier de configuration du serveur OpenVPN (openvpn.conf)
cd /etc/openvpn/
vim openvpn.conf

Votre fichier devrait ressembler à ça :

8<----------------------------
port 443
proto tcp
dev tun
comp-lzo
persist-key
persist-tun
keepalive 10 20
server 10.8.0.0 255.255.255.0

push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem

status openvpn-status.log

verb 3
8<----------------------------

  • On lance ensuite le serveur OpenVPN pour tester la conf ...
openvpn openvpn.conf

Vous devriez obtenir quelque chose de ce style :

root@debian:/etc/openvpn# openvpn openvpn.conf
Sun Feb 16 16:33:46 2014 OpenVPN 2.2.1 i486-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] [MH] [PF_INET6] [IPv6 payload 20110424-2 (2.2RC2)] built on Jun 19 2013
Sun Feb 16 16:33:46 2014 NOTE: OpenVPN 2.1 requires &#039;--script-security 2&#039; or higher to call user-defined scripts or executables
Sun Feb 16 16:33:46 2014 Diffie-Hellman initialized with 1024 bit key
Sun Feb 16 16:33:46 2014 TLS-Auth MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0 EL:0 ]
Sun Feb 16 16:33:46 2014 Socket Buffers: R=[87380-&gt;131072] S=[16384-&gt;131072]
Sun Feb 16 16:33:46 2014 ROUTE default_gateway=xxx.xxx.xxx.xxx
Sun Feb 16 16:33:46 2014 TUN/TAP device tun0 opened
Sun Feb 16 16:33:46 2014 TUN/TAP TX queue length set to 100
Sun Feb 16 16:33:46 2014 do_ifconfig, tt-&gt;ipv6=0, tt-&gt;did_ifconfig_ipv6_setup=0
Sun Feb 16 16:33:46 2014 /sbin/ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
Sun Feb 16 16:33:46 2014 /sbin/route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2
Sun Feb 16 16:33:46 2014 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]
Sun Feb 16 16:33:46 2014 Listening for incoming TCP connection on [undef]
Sun Feb 16 16:33:46 2014 TCPv4_SERVER link local (bound): [undef]
Sun Feb 16 16:33:46 2014 TCPv4_SERVER link remote: [undef]
Sun Feb 16 16:33:46 2014 MULTI: multi_init called, r=256 v=256
Sun Feb 16 16:33:46 2014 IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
Sun Feb 16 16:33:46 2014 MULTI: TCP INIT maxclients=1024 maxevents=1028
Sun Feb 16 16:33:46 2014 Initialization Sequence Completed
  • Il est ensuite souhaitable de modifier le paramétrage de votre système afin qu'il autorise le forward des paquets au travers du serveur :
vim /etc/sysctl.conf

On dé-commente (vers la ligne 28) :

net.ipv4.ip_forward=1

et on lance les deux commandes suivantes

sysctl -p
/etc/init.d/networking reload
  • Il est désormais nécessaire de modifier les règles Iptables afin de permettre aux paquets de transiter au travers de votre passerelle VPN (pour vous servir de votre serveur VPN comme d'une passerelle vers d'autres réseaux). Pour ce faire on crée puis on édite un fichier "firewall.rules" que l'on place dans "/etc". Afin de faciliter la mise en œuvre du système j'ai créé un fichier qui laisse entrer tous les flux ( :INPUT ACCEPT dans la section "Filter"). Vous devez bien entendu l'adapter en fonction de vos besoins ...
vim /etc/firewall.rules

Voici le contenu du fichier

*nat
:PREROUTING ACCEPT
:INPUT ACCEPT
:OUTPUT ACCEPT
:POSTROUTING ACCEPT
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT

*filter

:INPUT ACCEPT
:FORWARD DROP
:OUTPUT ACCEPT

-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i tun0 -o eth0 -j ACCEPT

COMMIT
  • On crée ensuite le fichier d'initialisation du firewall (qui va utiliser les directives données au sein de /etc/firewall.rules)
vim /etc/init.d/firewall

Voici le contenu du fichier

#!/bin/sh
/sbin/iptables-restore /etc/firewall.rules

On donne les droits d’exécution à ce script

chmod 755 /etc/init.d/firewall

On lance une première fois manuellement ce script

/etc/init.d/firewall

Et on indique au système que ce script doit être lancé automatiquement au démarrage du système

update-rc.d firewall defaults
  • et pour finir côté serveur on lance le service "OpenVPN"
service openvpn start
  • On passe ensuite à la génération des certificats et des clés destinés aux clients : remplacez nom_du_user par le nom de l'utilisateur (pas d'espace, pas de caractères spéciaux ...)
cd /etc/openvpn/easy-rsa
source vars
./build-key nom_du_user

Répondez aux questions (pour le CN - Common Name - utilisez la même chaine que pour nom_du_user)

  • A l'issue de cette opération on récupère les fichiers suivants dans le répertoire /etc/openvpn/easy-rsa/keys (ces derniers devront être déposés sur votre client)
Nom du fichier Contenu
nom_du_user.crt Certificat de l'utilisateur
nom_du_user.key Clé privée associée au certificat de l'utilisateur
ca.crt Certificat de l'autorité de certification
  • Il faut ensuite créer le fichier de conf (côté client) qui sera fourni au logiciel OpenVPN pour se connecter. Vous pouvez utiliser n'importe quel éditeur de texte sur votre OS habituel. Voici ce qu'on doit trouver dans ce fichier (extension .conf pour Linux/MacOS ou .ovpn pour les clients Windows et Android). Respectez l'extension c'est important ! Sous Windows le fichier de conf doit être déposé au sein du répertoire "C:\Program Files\OpenVPN\config\". N'oubliez pas de placer également les 3 fichiers cités ci-dessus (.crt/.key) au sein de ce répertoire de configuration de votre client.

Voici le contenu du fichier de configuration du client :

client
dev tun
proto tcp
remote INDIQUEZ_ICI_L_IP_DE_VOTRE_SERVEUR 443
resolv-retry infinite
nobind

ca ca.crt
cert nom_du_user.crt
key nom_du_user.key

persist-key
persist-tun

comp-lzo

verb 3
  • Si vous utilisez Windows voici deux points importants à vérifier (qui vous feront gagner du temps 😉 ) :

  • que votre fichier de configuration porte bien l'extension ".ovpn" (Windows à souvent la bonne idée d’ajouter un .txt derrière ... on se retrouve alors un .ovpn.txt le .txt étant bien entendu masqué ...).

  • que OpnVpn GUI soit bien lancé avec les droits d'administrateur (autrement ça ne fonctionne pas !)

Sous Windows il ne vous reste plus qu'à cliquer-droit sur l'icone OpenVPN GUI dans la barre de tâche et de choisir "connecter" !

Pour les autres plateformes je vous laisse vous reporter à la documentation fournie avec votre client Open VPN en sachant que le fichier de conf ainsi que les certificats et clés sont compatibles sur tous les OS.

Si vous repérez des erreurs, imprécisions, omissions (et oui ça peut arriver ...) n'hésitez pas à me l'indiquer dans les commentaires !

Externalisez sereinement vos sauvegardes avec Duplicity

hard_disk

Si vous administrez des serveurs vous avez certainement déjà réfléchit aux problèmes d'externalisation de vos sauvegardes. Pour ma part j'étais à la recherche depuis pas mal de temps d'une solution permettant de réaliser une externalisation avec comme contrainte principale le fait que les sauvegardes soient stockées d’une manière chiffrée sur le serveur de destination. Bien entendu, il existe le classique Rsync (et ses dérivés), ou bien encore Rdiff-Backup, mais pour moi cette solution n'est pas viable dans tous les cas car si le transfert reste sécurisé il n'en va pas de même pour le stockage !

J'ai récemment découvert une solution qui me semble intéressante : Duplicity. Dans les grandes lignes Duplicity permet de réaliser une sauvegarde distante au travers de pas mal de protocoles : scp, ftp, ssh, rsync, s3 (et compatibles ...). Les sauvegardes peuvent être complètes ou incrémentales (à priori en mode "block" grâce à l'utilisation de librsync). Duplicity prend également en charge le chiffrement des fichiers de sauvegarde soit avec une clé symétrique soit avec un système de clé publique/privée (personnellement j'ai opté pour la première solution).

Malheureusement Duplicity semble être un peu "rude" à l'utilisation. C'est pour cette raison qu'est né le projet "Duplicity Backup". Il s'agit d'un script shell associé à un fichier de conf. L'objectif de ce script est de piloter, simplement et efficacement, le fonctionnement de vos sauvegardes (en faisant appel à Duplicity).

Voici donc un petit how-to résultant de mes premières expériences avec ce script. L'objectif pour moi était d'externaliser la sauvegarde de serveurs fonctionnant sous Linux Debian 6. J'avais initialement prévu de stocker mes sauvegardes sur Amazon S3 mais en effectuant quelques recherches j'ai trouvé un système compatible proposant un tarif plus avantageux : DreamHost proposant le Go de données stockée à 7cts/$ / mois.

C'est parti !

On va partir du principe que vous disposez d'un distrib Debian fonctionnelle (version 6 mais ça devrait également fonctionner avec les versions plus récentes). Python doit être préalablement installé (c'est normalement le cas par défaut).

  • La première chose à faire est d'installer les packages nécessaires au fonctionnement de Duplicity (le package "python-boto" permet l'interaction avec un système de type S3) :
apt-get install librsync1 python python-boto python-dev librsync-dev wget unzip
  • Créez ensuite un répertoire au sein duquel nous allons placer l'installeur de Duplicity, le script ainsi que le fichier de conf. La création de ce répertoire au sein de "/home" est proposée à titre d'exemple. Libre à vous de choisir l'emplacement qui vous convient le mieux !
mkdir /home/duplicity-backup
  • On se place ensuite au sein de ce répertoire :
cd /home/duplicity-backup
  • On télécharge Duplicity à partir du site officiel (à ajuster car la version aura préalablement évoluée lorsque vous lirez ces lignes ...) :
wget http://www.collet-matrat.com/fichiers_download/duplicity-backup/duplicity-0.6.21.tar.gz
  • On décompacte le tout :
tar -xzvf duplicity-0.6.21.tar.gz
  • On lance l'installation :
cd duplicity-0.6.21
python setup.py install

Si vous rencontrez des erreurs vérifiez bien d'avoir installé "librsync-dev" ( apt-get install librsync-dev )

  • Il faut ensuite mettre en place le script et son fichier de conf :
cd ..
wget http://www.collet-matrat.com/fichiers_download/duplicity-backup/duplicity-backup.sh
wget http://www.collet-matrat.com/fichiers_download/duplicity-backup/duplicity-backup.conf
chmod 755 duplicity-backup.sh
  • On édite ensuite le fichier de conf de Duplicity Backup (je ne détaille ici que les principales directives - pour adapter plus finement la configuration à vos besoins reportez vous à la documentation de Duplicity-Backup disponible ICI):
vi duplicity-backup.conf
  • Si vous utilisez un système de stockage AWS S3 ou compatible (comme le stockage de DreamHost par exemple) vous devez renseigner lignes 43 et 44 votre clé d'API et votre clé secrète
  • Ligne 57 maintenez le paramètre par défaut "ENCRYPTION='yes'" si vous souhaitez que vos sauvegardes soient chiffrées
  • Ligne 65 mentionnez votre clé de chiffrement (si vous optez pour un chiffrage "symétrique" / ce que je vous conseille - certes un peu moins sûr mais quand même beaucoup  plus pratique ...)
  • Commentez les lignes 78 et 79 si vous optez pour un chiffrage symétrique
  • Ligne 85 indiquez la racine du backup (utilisez un truc du style 'ROOT="/"' on définira plus tard la liste des répertoires à sauvegarder )
  • Ligne 99 mentionnez la destination de votre backup. Si vous sauvegardez directement sur AWS S3 la syntaxe est déjà prête, vous n'avez qu'à mentionner le nom de votre bucket de destination (avec un nom de répertoire). Si vous sauvegardez vers un système compatible S3 (comme DreamHost par exemple) il va falloir utiliser une syntaxe du type : DEST="s3://objects.dreamhost.com/le_nom_de_votre_bucket/le_repertoire_de_sauvegarde/"
  • Ligne 129 mentionnez le répertoire à sauvegarder (si vous avez plusieurs répertoires à sauvegarder regarder l'exemple entre les lignes 122 et 126
  • Si vous avez des répertoires à exclure ça se passe entre les lignes 134 et 137 (n'oubliez pas de commenter si vous n'en avez pas besoin)
  • La ligne 146 définie (entre autre) la politique de sauvegarde : par défaut faire un full tous les 14 jours (on peux également passer d'autres paramètres à Duplicity par le biais de cette ligne // plus d'infos : ICI)
  • La ligne 161 indique au système combien de full conserver sur le stockage distant (il existe de nombreuses possibilités en matière de conservation des données / reportez vous à la doc !)
  • On définie ligne 183 le répertoire de stockage des log de Duplicity (/var/log/duplicity par exemple)
  • Et enfin, à partir de la ligne 195 le paramétrage d'un éventuel (et optionnel) envoi de mail lors de chaque backup

Une fois ce paramétrage effectué, on peut lancer une première sauvegarde à l'aide de la commande

/home/duplicity-backup/duplicity-backup.sh -c duplicity-backup.conf -b
Pour obtenir la liste des commandes disponibles vous pouvez utiliser

/home/duplicity-backup/duplicity-backup.sh -c duplicity-backup.conf
La restauration peut être réalisée fichier par fichier à l'aide de la commande

/home/duplicity-backup/duplicity-backup.sh -c duplicity-backup.conf --restore-file fichier_à_restaurer [fichier_de_destination]
Il est également possible de restaurer l'intégralité d'une sauvegarde

/home/duplicity-backup/duplicity-backup.sh -c duplicity-backup.conf --restore [répertoire_de_destination]
Et pour finir, deux recommandations importantes :
  • n'oubliez pas de sauvegarder votre clé de chiffrement en lieu sûr !
  • consultez la documentation de Duplicity (ICI) & de Duplicity-Backup (ICI) pour découvrir toute la puissance de cet outil et du script associé !
Photo by : Jeff Kubina

Gérez « AWS Glacier » en ligne de commande

AWS_LOGO_RGB_300px

Pour ceux qui seraient passés à côté, Amazon Glacier est un système de stockage sur le cloud d'Amazon (un peu comme S3) dédié à la conservation "longue durée" de vos données (un système d'archivage en quelque sorte).

Par rapport à S3 le principal avantage de cette solution est le prix. En effet avec un coût de $0,01 par Go et par mois il s'agit certainement là de la solution de stockage la plus économique du marché (10€ / 1To / mois difficile de faire mieux) - A titre de comparaison 1To stocké sur S3 coûte 95$ / mois !

Bon à ce tarif là vous devez vous douter qu'il y a quelques inconvénients. Le plus significatif est certainement le délai de récupération des données. En effet si l'upload d'informations est immédiat, toute opération de récupération de données va nécessiter une attente préalable d'au moins 4 h ! Et ce délai concerne toutes les opérations : même une demande d’inventaire (un "ls" en quelque sorte) du contenu d'un dépôt va demander le même délai (4h) avant d'obtenir le résultat de votre requête ...

Il est donc clair qu'avec une telle contrainte il faut réserver l'usage de Glacier à des seules fins d'archivage ...

A l'inverse de S3 il n’existe pas (pour le moment) d'interface web (fournie par Amazon) permettant de gérer le contenu de ses archives. Plusieurs logiciels dédiés existent toutefois sur le marché. J'ai par exemple testé "FastGlacier" sur une des mes machines Windows (ce soft est gratuit pour un usage non commercial). Toutefois, dans certains cas, il est plus pratique d'utiliser directement une interface en ligne de commande (pour archiver le contenu d'un serveur Linux par exemple). Il existe, pour ce faire, un ensemble de scripts Python totalement fonctionnels et qui permettent d'agir sur vos archives. Il s'agit de "glacier-cmd".

L'installation (et l'utilisation) de "glacier-cmd" ne pose pas vraiment de problème, mais j'ai quand même décidé de faciliter la tâche à ceux (celles) d'entres vous qui ont quelques petites difficultés avec la langue anglaise et/ou démarrer rapidement à partir d'un document de synthèse.

C'est parti ...

Ce how-to est basé sur l'utilisation d'une distribution Debian 6 "out of the box" sans particularité. Bien entendu aucune interface graphique n'est nécessaire (c'est d’ailleurs un peu l'objectif de ce how-to ...)

La première chose à faire est de s'assurer que Python est bien installé sur votre système.

Un petit "python -V" devrait vous retourner la version de Python installée

Dans le doute vous pouvez toujours lancer un "apt-get install python" ça ne peut pas faire de mal !

Il faut ensuite passer à l'installation de "Git" (qui vous permettra de faciliter l'installation de "glacier-cmd")

apt-get install git

On récupére ensuite l'intégralité de glacier-cmd avec une seule ligne de commande :

git clone https://github.com/uskudnik/amazon-glacier-cmd-interface.git

On entre dans le répertoire où ont été récupérées les sources

cd amazon-glacier-cmd-interface/

On installe un module supplémentaire pour Python nécessaire au lancement du script d'installation

apt-get install python-setuptools

Et on lance finalement le script d'installation

python setup.py install

On va ensuite créer un fichier de configuration pour glacier-cmd.

vi /etc/glacier-cmd.conf

Le fichier va ressembler à ça :


[aws]
 access_key=Identifiant de clé d’accès
 secret_key=Clé d’accès secrète

[glacier]
 region=us-east-1
 logfile=~/.glacier-cmd.log
 loglevel=INFO
 output=print

Pour récupérer (ou créer les clés AWS) il faut se connecter ICI

Ce fichier de conf va également vous permettre de sélectionner la zone géographique où seront hébergés vos données (les tarifs varient légèrement en fonction de ce paramètre : toutes les infos sont ICI ).

Les valeurs possibles pour "region" sont donc les suivantes :


us-east-1 pour : US - Virginia
us-west-1 pour : US - N. California
us-west-2 pour : US - Oregon
eu-west-1 pour : EU - Ireland
ap-northeast-1 pour : Asia-Pacific - Tokyo

On peut ensuite passer à l'utilisation de glacier-cmd. Les principales commandes sont les suivantes :

  • Pour créer un dépôt ("vault") de stockage (afin d'y déposer ensuite des archives)
    glacier-cmd mkvault <le_nom_de_votre_dépôt>
    
  • Pour lister les dépôts disponibles :
    glacier-cmd lsvault
  • Pour obtenir le contenu (liste des archives/fichiers) d'un dépôt (attention le résultat de cette commande ne sera disponible qu'après 4h d'attente ...)
    glacier-cmd inventory <le_nom_de_votre_dépôt>
  • Pour uploader une archive (fichier) au sein d'un dépôt :
    glacier-cmd upload <nom_de_votre_dépôt> <nom_du_fichier_a_uploader> --description "la_description_du_fichier"
  • Pour télécharger les archives (fichiers) contenues au sein d'un dépôt  :

    L'opération se déroule en deux temps:

    1) On lance une demande de récupération de l'archive avec la commande suivante :

    glacier-cmd getarchive <nom_de_votre_dépôt> <id_de_l'archive_à_récupérer>

    NB : On récupère l'id de l'archive avec la commande "inventory" (voir ci-dessus)

    2) Après environ 4h d'attente vous pouvez demander le téléchargement de l'archive avec cette commande :

    glacier-cmd download <nom_de_votre_dépôt> <id_de_l'archive_à_récupérer> --outfile <nom_du_fichier>

    Donc pour résumer une récupération "type" s'effectue en 8h : 4h pour obtenir le contenu du dépôt (avec les identifiants d'archives) puis 4h pour obtenir une archive prête à être téléchargée et enfin le temps nécessaire au téléchargement du fichier ! Mieux vaut ne pas être pressé ...

  • Pour obtenir la liste de jobs en cours (inventaire, récupération ...) :
glacier-cmd listjobs nom_de_votre_dépôt

Ce how-to n'a bien entendu pas vocation à être exhaustif. Si vous souhaitez découvrir l'intégralité des fonctionnalités proposées par glacier-cmd, je vous invite à consulter la documentation disponible ICI .

Dans un prochain billet, je vous présenterai une solution permettant d'automatiser le backup d'un serveur Linux vers Glacier ...

[HOWTO] Automatisez la sauvegarde de vos serveurs avec « Rdiff-Backup »

Si vous administrez des serveurs Linux vous vous êtes déjà probablement interrogé sur la meilleure façon de sauvegarder vos systèmes et données. La télé-sauvegarde est une option particulièrement intéressante. Bien que Rsync paraîsse naturellement le dispositif le mieux adapté à cette tâche une autre solution existe : Rdiff-backup.

Moins connu, ce dernier présente de nombreux avantages : une gestion optimisée des incréments, la création d'un miroir de fichiers ou de répertoires, la gestion automatisée de l'effacement des anciens incréments, la compression des données transférées ... Rdiff-Backup est utilisable en "local" mais également dans le cadre d'un système de télé-sauvegarde. Dans ce cas les échanges sont cryptés en utilisant (de manière transparente) le protocole SSH.

L'objectif de ce how-to est de présenter une méthode permettant de réaliser une sauvegarde à distance, sécurisée, automatisée, sans aucune intervention de la part de l'administrateur (les procédures d'authentification reposant sur un système de clés asymétriques).

La distribution utilisée pour la création de ce how-to est une "Ubuntu 10.04 LTS server", mais il ne devrait pas y avoir beaucoup de différences si vous utilisez un autre Linux. Un serveur SSH doit également être présent sur les 2 machines.

Dernière précision : afin de simplifier cette procédure j'utilise volontairement l'utilisateur "root" pour réaliser la sauvegarde. Pour optimiser la sécurité, les "puristes" pourront bien entendu adapter cette  méthode  avec un autre compte utilisateur ...

Dans le cadre de ce tutoriel nous allons utiliser deux serveurs :

  • "srv-prod ": qui correspond au serveur "à sauvegarder" (IP dans ce how-to : 192.168.0.157)
  • "srv-backup" : qui correspond au serveur destiné à héberger la sauvegarde de srv-prod

On procède tout d'abord à l'installation de "Rdiff-Backup" en lançant (sur les 2 serveurs) la commande

apt-get install rdiff-backup

On va ensuite générer les clés SSH nécessaires à l'authentification de "srv-backup" auprès de "srv-prod". Créez (si ce n'est pas déjà fait) sur "srv-backup" un répertoire nommé "/root/.ssh/". On lance ensuite (sur ce même serveur)  la commande suivante :

ssh-keygen -t rsa -b 4096

Répondez de la manière suivante aux questions posées par l'application :

Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/rdiff_id_rsa

Ne rien mentionner en réponse à la question "Enter passphrase (empty for no passphrase):". Idem pour "Enter same passphrase again:"

Suite à cette opération, vous trouverez 2 fichiers au sein du répertoire "/root/.ssh" :

  • rdiff_id_rsa : qui correspond à votre clé privée
  • rdiff_id_rsa.pub : votre clé publique (qui devra, par la suite, être positionnée sur le serveur de production ...

Pour ce faire il est nécessaire d'éditer le fichier "rdiff_id_rsa.pub" (avec un petit "cat /root/.ssh/rdiff_id_rsa.pub" par exemple). Vous devriez obtenir une chaîne de la forme :

Bien entendu le contenu de votre fichier sera différent car il s'agit de clés générées aléatoirement (heureusement ... 😉 )

Copiez ensuite cette chaîne de caractères afin de pouvoir la coller dans le fichier "/root/.ssh/authorized_keys2" du serveur de production ("srv-prod"). Dans l'hypothèse où ce répertoire (".ssh") et ce fichier ("authorized_keys2") n'existent pas il sera nécessaire de les créer manuellement. Attention aux droits à appliquer sur le fichier "authorized_keys2" qui doivent être positionnés à 644 ("chmod 644 /root/.ssh/authorized_keys2"). Il faut également s'assurer de copier la chaîne de caractères tel-quel sans y ajouter aucun caractère n'y retour chariot.

Une fois la clé copiée, il est nécessaire d'y ajouter (sur "srv-prod") certaines options comme illustré dans l'exemple ci-dessous :

Les directives à placer devant la clé sont les suivantes (il ne vous reste plus qu'à copier / coller ...) : "command="rdiff-backup --server --restrict-read-only /",no-port-forwarding,no-X11-forwarding,no-pty ". Il s'agit de mesures de sécurités complémentaires. En effet le serveur de backup s'authentifiant de manière automatisée, il est intéressant de limiter les opérations réalisables avec ce compte (pas de terminal, opération en lecture seule uniquement, pas de forward de ports ...).

Sur le serveur "srv-backup" créez le fichier "/root/.ssh/config". Ce dernier va intégrer les éléments nécessaires à la connexion automatique au serveur de production. Le contenu de ce fichier est le suivant :

host 192.168.0.157
hostname 192.168.0.157
user root
identityfile /root/.ssh/rdiff_id_rsa
compression yes
protocol 2

Bien entendu vous devez remplacer l'IP (192.168.0.157) par l'adresse de votre serveur de prod (ou bien par son nom pleinement qualifié). Vous pouvez également modifier le paramètre "compression" en le passant à "no" si vous ne souhaitez pas compresser les données échangées entre les deux serveurs.

Créez ensuite, sur "srv-backup" un répertoire au sein duquel seront stockées les données sauvegardées. Par exemple "mkdir /backup"

Il ne reste plus qu'à essayer de générer une sauvegarde d'un des répertoires du serveur de production ("/etc" par exemple) en utilisant une commande du style :

rdiff-backup -v 5 root@192.168.0.157::/etc /backup/etc

Vous allez voir apparaître un message du type :

The authenticity of host '192.168.0.157 (192.168.0.157)' can't be established.
RSA key fingerprint is 60:6b:12:0a:6f:bf:98:da:83:5c:43:16:f2:72:3c:29.
Are you sure you want to continue connecting (yes/no)?

répondez "yes" (cette question ne sera plus posée par la suite). Vous devriez voir la sauvegarde se réaliser. Un petit contrôle du répertoire "/backup/etc" confirme la présence des fichiers.

Vous pouvez automatiser (via le crontab) cette tâche de sauvegarde en vous inspirant, après adaptation, de ce script (merci à  @ledeuns pour sa contribution ) :

#!/bin/bash</p>
RETCODE=""

### Sauvegarde ###

/usr/bin/rdiff-backup  root@192.168.0.157::/var /backup/var
if [ $? -ne 0 ]; then RETCODE="VAR;"; fi
/usr/bin/rdiff-backup  root@192.168.0.157::/etc /backup/etc
if [ $? -ne 0 ]; then RETCODE="ETC;$RETCODE"; fi
/usr/bin/rdiff-backup root@192.168.0.157::/home /backup/home
if [ $? -ne 0 ]; then RETCODE="HOME;$RETCODE"; fi
/usr/bin/rdiff-backup root@192.168.0.157::/root /backup/root
if [ $? -ne 0 ]; then RETCODE="ROOT;$RETCODE"; fi
/usr/bin/rdiff-backup root@192.168.0.157::/usr /backup/usr
if [ $? -ne 0 ]; then RETCODE="USR;$RETCODE"; fi

### Effacement des increments datant de plus de 2 semaines (2W) ###

/usr/bin/rdiff-backup --force --remove-older-than 2W /backup/var/
if [ $? -ne 0 ]; then RETCODE="DELVAR;$RETCODE"; fi
/usr/bin/rdiff-backup --force --remove-older-than 2W /backup/etc/
if [ $? -ne 0 ]; then RETCODE="DELETC;$RETCODE"; fi
/usr/bin/rdiff-backup --force --remove-older-than 2W /backup/home/
if [ $? -ne 0 ]; then RETCODE="DELHOME;$RETCODE"; fi
/usr/bin/rdiff-backup --force --remove-older-than 2W /backup/root/
if [ $? -ne 0 ]; then RETCODE="DELROOT;$RETCODE"; fi
/usr/bin/rdiff-backup --force --remove-older-than 2W /backup/usr/
if [ $? -ne 0 ]; then RETCODE="DELUSR;$RETCODE"; fi

### Envoi du rapport par mail ###

if [ -z $RETCODE ]; then
echo "" | mail -s "Sauvegarde effectuee" votre@adresse.fr
else
echo "$RETCODE" | mail -s "Sauvegarde en erreur" votre@adresse.fr
fi

Ce how-to n'ayant pas vocation à décrire d'une manière exhaustive le fonctionnement de Rdiff-Backup, je vous invite à consulter le manuel détaillé disponible à cette adresse (vous pourrez y découvrir l'ensemble des commandes et options disponibles) !

  • Le site officiel est disponible ICI

[HOWTO] Utilisez Sunbird avec Google Calendar

Même si le confort d'utilisation de Google Calendar est parfait, certains d'entre vous préfèrent peut être utiliser un logiciel classique, éventuellement intégré au client de messagerie. Bon autant vous dire tout de suite que je laisse MS Outlook de coté  🙂 : je ne supporte pas ce logiciel et son coté usine à gaz ! Je vais donc vous fournir une méthode permettant de synchroniser Sunbird, le logiciel de Mozilla  (ou de Lightening, son équivalent intégré à Thunderbird)  avec Google Calendar.

C'est parti !

  • Commencez par télécharger l'extension "Provider for Google Calendar". Lancer Sunbird -> "Outils "-> "Modules complémentaires" -> sélectionnez la zone "catalogue" -> saisissez "Provider for Google Calendar" dans la zone de recherche -> cliquez sur "Ajouter à Sunbird" -> confirmez ensuite avec "Installer maintenant"

  • Connectez-vous ensuite sur votre compte Google Calendar et accédez aux paramètres de l'agenda que vous souhaitez synchroniser : connexion avec votre compte Google -> "Paramètres" (en haut à droite) -> "Paramètres de Agenda" -> sélectionnez "Agendas" -> cliquez sur le nom de l'agenda que vous souhaitez synchroniser -> descendez en bas de la page et cliquez sur le bouton "XML" dans la rubrique "Adresse URL privée"

  • Copiez le lien fourni dans la fenêtre qui vient de s'ouvrir (clic droit sur le lien puis "Copier l'adresse du lien")

  • revenez ensuite à Sunbird : "Fichier" -> "Nouvel Agenda" -> "Sur le réseau" -> Choisir le format "Google Agenda" puis collez l'adresse précédemment copiée (adresse privée fournie par Google / voir l'étape précédente)

  • Indiquez vos identifiants "Google Calendar" (votre compte Google ...). N'oubliez pas de cocher la case "Utiliser le gestionnaire de mots de passe pour se souvenir de ce mot de passe" si vous voulez éviter de ressaisir vos identifiants à chaque lancement du logiciel.

  • Il ne vous reste plus qu'à donner un nom à ce calendrier et de lui affecter une couleur. Vous devriez alors voir apparaître ce nouvel agenda au sein de la liste des calendriers disponibles au sein de Sunbird. Les agendas sont désormais synchronisés : la prise d'un rendez-vous au sein de Sunbird est immédiatement reportée dans Google Calendar (à condition que vous soyez en ligne). A l'inverse un rendez-vous noté au sein de l'interface web de Google Calendar ne sera répercuté dans Sunbird qu'après avoir choisi l'option "Fichiers -> Synchroniser les agendas distants" ou bien après avoir redémarré le logiciel ...
  • Si vous avez quelques compléments à apporter n'hésitez pas !


Petit guide de sécurité pour votre PC …

Pas une semaine sans que je vois passer un PC complètement HS,  bourré de virus et autres saloperies du même type ... C'est ce qui m'a donné l'idée de rédiger ce petit guide de "bonne conduite" à l'attention de tous ceux qui souhaitent garder une machine fonctionnelle et sûre.

Vous y trouverez des conseils de bon sens mais qui visiblement pourront aider certains lecteurs. Si vous souhaitez apporter votre "touche personnelle" à cette page n'hésitez pas à poster un commentaire. Enfin certains d'entres vous ne vont certainement pas être d'accord avec tous mes conseils, mais ce n'est pas grave, vous n'êtes pas obligé de les suivre ... 🙂

Petit message personnel à l'attention de Yoan : on ne parle ici que de Windows, ce n'est donc pas la peine de commenter pour nous expliquer que sous Linux ou MacOS X "c'est mieux" : on le sait déjà 😉

On va commencer par les consignes "basiques" mais qui visiblement ne sont pas appliquées partout ...

  • on ne le répétera jamais assez mais il est IMPÉRATIF de posséder un anti-virus sur votre poste de travail. On ne va pas rentrer dans la polémique pour savoir quel est le meilleur ou le pire, le tout est d'appliquer une protection de ce type sur votre machine et de s'assurer que le système de mises à jour soit bien activé. Pour ma part, et pour ceux que ça intéresse, j'utilise depuis des années NOD32 d'Eset (mais ça, si vous suivez mon blog vous devez le savoir !). Si vous êtes fauché vous pouvez vous rabattre vers des solutions gratuites comme par exemple Avast.
  • Vous devez également impérativement posséder un firewall sur votre PC. Si vous travaillez sous XP SP2 ou Vista, il suffit d'activer le pare-feu fourni par Microsoft avec le système d'exploitation (c'est d'ailleur le cas par défaut). C'est amplement suffisant, ne surchargez pas votre machine avec un autre système de protection de ce type. Au passage, et en ce qui me concerne, je suis totalement opposé à toutes les suites de sécurité (firewall, anti-virus, antispam, anti-spyware ...) qui n'apportent pas grand chose (si ce n'est une augmentation des ressources consommées sur votre système ...) . Pour résumer : un bon anti-virus associé au firewall fourni avec votre système d'exploitation est amplement suffisant ! Si votre PC est équipé de Windows XP sans le SP2 : mettez à jour afin d'obtenir le firewall ! Pour l'anti-spam utilisez soit les fonctionnalités proposées par votre hébergeur (l'anti-spam de Gmail par exemple est excellent) et/ou les dispositifs directement intégrés au sein de certains logiciels de courrier électronique (Thunderbird par exemple).
  • Mettez à jour très régulièrement votre système. Si vous travaillez sous XP ou Vista activez le système de mise à jour automatique de l'OS. Et n'oubliez pas de mettre à jour vos principaux logiciels, en particulier ceux qui sont fortement exposés : navigateur Web, client de messagerie, lecteur Flash ...

Voici maintenant quelques conseils plus spécifiques ...

  • les clés USB sont de nos jours l'un des principaux vecteurs d'infection je vous conseille de systématiquement (et définitivement) désactiver l'autotun à l'insertion de tous les supports de stockage amovibles. Comment faire ? allez faire un petit tour ICI
  • réfléchissez toujours à deux fois avant d'installer une nouvelle application sur votre poste de travail. En effet, d'une manière générale, plus vous installez de logiciels, plus votre système va perdre en performance tout en prenant le risque d'introduire des saloperies sur votre PC. Il existe désormais de nombreuses applications disponibles en version "portable" ne nécessitant pas d'installation. Il s'agit là d'une première solution (voir quelques exemples : 1, 2 et 3). Pensez également à la virtualisation avec Virtual Box par exemple (c'est à mon avis la meilleure solution pour pouvoir tester tout ce que vous souhaitez sans faire prendre de risque à votre système). Si vous devez absolument installer une nouvelle application (ben oui ça peut arriver quelques fois quand même ...) et que vous n'êtes pas sûr que cette dernière soit complètement "clean", je vous conseille cette petite procédure :
    • commencez par analyser le fichier téléchargé avec votre propre anti-virus
    • faite analyser le fichier par le système "Virustotal" (plus d'infos ICI)
    • saisissez l'adresse du site à partir duquel vous avez téléchargé votre application sur SiteAdvisor (plus d'infos ICI)
    • Si tous ces tests n'ont pas généré d'alerte importante, vous devriez pouvoir installer ce logiciel sans risque particulier ...
  • Fuyez comme la peste tous les logiciels qui vous permettent de "personnaliser" votre système : soft permettant de modifier l'aspect graphique de Windows, kit d'icônes/emoticones, logiciel de messagerie orienté "multimedia", barres d'outils pour votre navigateur et plus généralement tous les petit gadgets qui sont, le plus souvent, de vrais nids à Spyware ...
  • Scannez régulièrement votre système à l'aide d'un antispyware (une fois par mois par exemple). Pour ma part j'utilise désormais Malwarebytes qui semble être particulièrement performant.
  • Utilisez un navigateur sécurisé : Firefox par exemple à une bonne réputation en la matière. Pour les plus paranoïacs, il est possible de lui adjoindre une extension ("NoScripts") permettant de limiter l'utilisation des scripts qu'aux seuls domaines de confiance. C'est certainement le meilleur moyen de se prémunir d'éventuelles infections pouvant survenir lors de la navigation sur le Web. Attention toutefois car son utilisation peut vite devenir pénible car il faudra autoriser domaine par domaine l'utilisation du JavaScript.

Et si le mal est déjà fait ... Vous ouvrez votre navigateur et au après quelques minutes d'utilisation une pub pour un casino apparait à l'écran, votre PC se "traine" lamentablement, un mystérieux message provenant d'un antivirus inconnu vous prévient que votre PC est infecté ... Vous vous êtes certainement fait avoir par l'une des nombreuses saloperies en circulation !

Voici quelques pistes qui devrait vous être utiles :

  • commencer par scanner votre PC avec votre propre anti-virus
  • effectuez un scan complémentaire avec un autre anti-virus (attention il ne faut jamais faire cohabiter  deux protection anti-virale sur le même système ! ). Il existe, pour ce faire, de nombreux scanner en ligne. J'ai encore un petit faible pour celui proposé par Eset (non je ne travaille pas chez eux 🙂  ) car c'est le seul à ma connaissance à proposer une désinfection gratuite online (les autres se contentant de vous avertir de la présence d"indésirables"). Il est disponible à cette adresse : http://www.eset.com/onlinescan/
  • scannez votre PC à l'aide de l'excellent Malwarebytes et supprimez toutes les menaces que ce dernier à détecté (son utilisation est des plus simple).
  • si les étapes précédentes n'ont pas réussies à résoudre tous les problèmes, et en particulier si vous rencontrez encore des dysfonctionnements avec votre navigateur (ouverture de fenêtres intempestives) essayez les deux applications suivantes. Attention, il s'agit de logiciels un peu plus "rustiques" que vous allez utiliser "à vos risques et périls" : si vous n'êtes pas sûr de vous, faites vous assister et n'oubliez pas de réaliser une sauvegarde de vos données !
    • Navilog : téléchargeable ICI - mode d'emploi disponible ICI
    • SmitFraudFix (téléchargeable ICI)
  • Vérifiez également les services et applications se lançant automatiquement au démarrage du PC (on est là plus dans le domaine de l'optimisation). Pour ce faire, je vous conseille deux applications :
    • Pour ceux qui ne veulent pas se prendre la tête et aller directement au but : Startup Control Panel - téléchargeable ICI
    • pour les "puristes" qui veulent pouvoir tout contrôler : AutoRuns (proposé directement par Microsoft) et téléchargeable ICI

Et si malgré toutes ces opération votre PC présente toujours des signes de faiblesse, il ne restera plus qu'une solution : le reformatage et la réinstallation 🙁

Synthèse des liens mentionnés :

  • Version d'évaluation 1 mois "Eset NOD32" : ICI
  • Avast Anti Virus : ICI
  • Mozilla Thunderbird : ICI
  • Comment supprimer l'autorun sur les clé USB : ICI
  • Les applications portables : ICI, ICI et ICI
  • La virtualisation avec VirtualBox : ICI
  • L'analyse des fichiers avec VirusTotal : ICI
  • Le système SiteAdvisor : ICI
  • L'antiSpyware MalwareBytes : ICI
  • Mozilla Firefox : ICI
  • L'extension "NoScript" pour Firefox : ICI
  • Le scanner "online" Eset NOD32 : ICI
  • L'outil de désinfection "Navilog" : ICI
  • L'outil de désinfection "SmitFraudFix" : ICI
  • L'utilitaire "StartupCPL" : ICI
  • L'utilitaire "AutoRuns" : ICI