Ransomware, ou prise d’otage informatique

prise-otageLes éditeurs d’antivirus rapportent actuellement la montée en puissance d’une forme récente de malware, baptisée ransomware. Ces nuisibles bloquent totalement l’accès au système d’exploitation d’un ordinateur et réclament une somme conséquente pour libérer les données.

Avec les ransomwares, l’infection est la plupart du temps réalisée via une faille provenant d’un logiciel non mis à jour. Un document PDF, Word ou Excel est adressé au destinataire par e-mail. En voulant l’ouvrir, le destinataire fait planter le logiciel associé. Le code stocké dans le document est alors activé et télécharge et installe le ransomware en question.

Lire l’article complet sur http://www.futura-sciences.com/fr/news/t/informatique/d/ranconner-les-internautes-lattaque-malware-a-la-mode_43225/

Notez que si vous avez linux en dual boot sur l’ordinateur et que le MBR est corrompu, la réinstallation du MBR depuis un live CD, exactement de la même manière qu’après une installation de windows, permet de relancer la machine. Windows ,n’est pas dévérolé pour autant, il faudra s’en occuper, mais linux redevient accessible.

En tout cas pour ce qui concerne les 2 machines dont j’ai dû m’occuper aujourd’hui.

Rien ne va plus, tout est en panne

Au delà de la polémique qu’il peut y avoir sur le système d’exploitation ou des logiciels choisis, il faut se rappeler une chose: ce n’est pas qu’un système informatique peut tomber en panne, c’est qu’il va tomber en panne un jour ou l’autre.

Plus un commercial me vante la stabilité de son système, plus j’ai peur. Que ce soit dans l’informatique ou dans d’autres domaines. Or, aujourd’hui, l’informatique et les systèmes embarqués sont partout, y compris dans les voitures.

Là où un simple miroir ne peut pas se mettre en carafe, on remplace ceux ci par des caméras + écrans ((où le seul intérêt à mes yeux serait l’enregistrement des informations, le stockage, le traitement et la conservation des données, y compris envers la CNIL, rendent la chose compliquée et coûteuse)), là où un simple interrupteur fait son office, on installe un système intelligent sensé nous simplifier la vie ((mon micro ondes refuse de décongeler mon pain, considérant qu’il n’est pas assez lourd pour justifier la mise en route du four. Je suis obligé de rajouter du poids (2 verres d’eau) pour que la pesée fonctionne et que le four( daigne adapter sa puissance au produit…)), là où in simple téléphone permettait d’appeler les secours, il lui faut maintenant une alimentation et il ne fonctionne plus en cas de coupure électrique.

Plus on rajoute d’éléments dans la chaine de fonctionnement, plus on fragilise le système complet en cas de faille dans l’un des éléments. Sans compter les multiples éléments extérieurs inconnus sur lesquels on ne peut avoir de contrôle (stabilité électrique, parasites électro ou magnétiques, chocs d’un balai, utilisateur lui même, …) qui conduisent parfois à des pannes non franches qu’il est quasiment impossible de reproduire, comprendre et éviter. Les systèmes fermés (logiciels ou matériels) induisent eux aussi une part d’inconnu qui ne nous laisse que la possibilité de constater: c’est en panne, ou ça a été en panne, mais on ne sait pas pourquoi.

Or, lorsqu’un client fait appel à un professionnel, il veut une réponse. Et si le professionnel avoue son ignorance, c’est qu’il est nul et qu’il faut s’adresser à quelqu’un d’autre. La tentation est alors forte d’inventer une cause ou une explication qui satisfera le client, bien qu’on ne sache pas réellement si elle est juste. Déjà que le métier d’informaticien paraît obscur aux non initiés ((ouvrez une ligne de commande chez un client, il vous prend déjà pour un hacker)), que les termes techniques et les explications sont incompris ((ce qui permet à certains de raconter n’importe quoi)), que les médias ne parlent de l’informatique que pour ses effets négatifs (pirates, virus, pédophilie), on arrive très vite à une réputation de menteurs et de voleurs, pas loin derrière les garagistes. C’est parfois difficile à rattraper, surtout quand on passe derrière certains concurrents ((quand il ne s’agit pas du petit fils de la soeur du cousin du beau frère du collègue de travail du voisin qui « s’y connait » et à qui on fait plus confiance)).

Si en plus on apporte des mauvaises nouvelles au client, je vous laisse imaginer ses impressions. Heureusement qu’on ne tue plus les porteurs de mauvaises nouvelles!

Intervenant souvent sur des pannes ((souvent sur des systèmes que je découvre)), le client veut que ça refonctionne au plus tôt ((c’est à dire juste après son appel)) et que ça ne se reproduise plus ((il paye, donc il veut une garantie)). Or, pour étudier une panne, il faut laisser le système dans l’état où il se trouve, c’est à dire en panne. Comme bien souvent un simple redémarrage suffit à résoudre le problème ((en particulier chez qui vous savez)), difficile de savoir le pourquoi et d’être certain que ça ne se reproduira plus. Ce n’est pas le plus difficile à faire comprendre à un client, quand on emploie les mots justes. Il peut comprendre qu’un redémarrage est nécessaire et que c’est un moindre mal mais il est tiraillé entre ce que vous lui dites et le discours appuyé des commerciaux ne disant que ce que les gens ont envie d’entendre. J’appelle ça le chant des sirènes.

En tant que particulier, professionnel ou simple être humain, j’y suis aussi sensible. Entre les publicités et les envies d’être rassuré, difficile de faire la part des choses ((assurances, mutuelles, retraite, services bancaires, alarmes, … On a tous cédé une fois parce qu’on avait envie d’y croire)).

Alors, quand un commercial me jure ses grands dieux que tout est parfait, je lui fait voir la galerie ci dessous ((Y’a bien que des informaticiens pour prendre ces trucs en photo. Et en plus à aimer ça…!)). Ce sont des photos provenant d’Internet pour la majorité, plus quelques unes de mon crû.

Quand un client veut que ça ne se reproduise plus, sans mettre les moyens, je lui fais aussi voir cette galerie. Il comprend alors que si des banques ou des aéroports restent confrontés à des pannes pouvant compromettre la sécurité de leur système alors qu’ils y ont mis des moyens importants ((Et souvent beaucoup plus que le budget disponible chez mon client)), l’objectif de zéro panne n’est pas accessible immédiatement et qu’il va falloir étudier une tolérance de panne acceptable.

Au final, quand on a compris qu’il y aura une panne, qu’on ne saura pas pourquoi ni comment, la seule question importante qu’il reste c’est: comment repartir rapidement après sinistre? Seul un système de sauvegarde efficace ((testé et vérifié régulièrement, ce qui n’est pas le cas dans beaucoup d’endroits)) et une méthodologie de travail adaptée ((Ne pas multiplier les emplacement des données, classer les informations, …)) permettent de relancer, plus ou moins rapidement ((selon les moyens mis en oeuvre et l’acceptation d’un délai de coupure de service)), le système d’information nécessaire au fonctionnement.

Vous qui me lisez, à quand remonte votre dernière sauvegarde vérifiée?

Tous les Windows touchés par une faille de sécurité

Voici ce qu’en dit directement microsoft:

Aujourd’hui, nous avons publié l’Avis de sécurité 2501696 pour alerter les clients à une vulnérabilité divulguée publiquement dans le gestionnaire de protocole MHTML. Cette vulnérabilité pourrait permettre à des attaquants de construire des liens malveillants pointant vers des documents HTML qui, lorsqu’on clique dessus, génèrerait le document ciblée et exécuterait le script dans le contexte de sécurité de l’utilisateur et l’emplacement cible. Le résultat final de ce type de vulnérabilité est un script codé dans le lien exécuté dans le contexte du document cible ou le site Web cible.

Par défaut, le gestionnaire de protocole MHTML est vulnérable sur Windows XP et les versions ultérieures Windows pris en charge. Internet Explorer est un vecteur d’attaque, mais parce que c’est une vulnérabilité de Windows, la version de IE n’est pas pertinente.

Je vous ai mis en gras la partie importante. Vous pouvez remplacer le conditionnel du texte par du présent, cette faille est déjà largement exploitée sur des sites de crack et de porno.

En clair, en cliquant sur un lien, vous ne ferez pas que télécharger un document, vous exécutez un script qui peut modifier le document que vous téléchargez et va faire des choses sur votre ordinateur. Par exemple, le lien à cliquer pointe vraiment vers un document officiel de Microsoft (patch de sécurité, logiciel, jeu, …) mais alors que vous le téléchargez, le script peut modifier le programme ou vous rediriger vers un autre document modifié. Sans que vous ne puissiez voir quoi que ce soit, même en vérifiant la cible avant le téléchargement. En clair, on ne peut plus faire confiance aux liens de téléchargement ((sauf à utiliser un autre système d’exploitation, comme Linux, MacOS, ou un autre navigateur internet . Firefox, par exemple.)).

Pour résumer, encore une fois, Internet Explorer + Windows, c’est non sécurisé! ((Microsoft a dépensé des milions pour des campagne publicitaires pour dire que IE8 était fun, rapide et sécurisé, ils ne vont donc pas dépenser un sou pour dire le contraire…)) Même avec le meilleur firewall et le meilleur anti-virus.

Pour vérifier votre système, rendez vous sur la page http://vulnerabilite.absolacom.com/2501696.mht. Si vous voyez le popup, vous êtes vulnérable et vous devriez installer le correctif fourni par Microsoft.

Dans le cas où vous verriez un bandeau comme sur l’image suivante, votre système est protégé contre l’utilisation à votre insu du protocole.

Message après correctif de microsoft

Par contre, faites attention: si vous autorisez tous les protocoles sur un site, celui ci peut alors faire n’importe quoi sur votre ordinateur! Ne vous laissez pas avoir par un message vous demandant d’activer ce protocole sous prétexte de vous autoriser à installer un jeu/ voir du porno/ communiquer avec vos amis/ accéder à un crack/ obtenir les 15975325 millions de dollars que vous auriez gagné….

Denyhosts: dé-blacklister une adresse IP valide

J’ai déjà parlé de denyhosts et de tous le bien que j’en pensais (dans l’article filtrer-les-connexions-ssh) mais il arrive parfois qu’une adresse IP valide et ne devant pas être bloquée se retrouve blacklistée ((parce qu’on a fait des essais, qu’on a oublié le mot de passe ou fait une erreur dans le port à utiliser…Et c’est du vécu.)). Du coup, l’adresse se retrouve systématiquement listée dans le fichier /etc/hosts.deny, ce qui fait qu’il est impossible de se connecter sur le serveur depuis ce site. Ce qui est catastrophique quand on a interdit toute connexion, SAUF depuis cette IP fixe…qui vient de se faire blacklister!.

Tout d’abord, lorsque vous mettez denyhosts en place sur un serveur, si vous avez une IP fixe depuis le site d’accès, pensez à vous autoriser en permanence afin de ne pas vous trouver renfermé dehors. Pour ce faire, il suffit d’ajouter la ligne suivante au fichier /etc/hosts.allow, en remplaçant les XXX par votre adresse IP fixe ((si votre IP est variable, ça ne sert strictement à rien. )):

ALL: XXX.XXX.XXX.XXX

Si vous êtes déjà enfermé dehors et que vous n’avez pas physiquement accès au serveur, il vous faut absolument changer d’adresse IP. Rebootez votre modem, ou allez chez un ami, un cybercafé ou au McDonald pour vous connecter au serveur et corriger le problème. Pensez ensuite à changer tous les mots de passe utilisés dès que vous rentrez chez vous.

Si vous avez blindé les accès au serveur et que vous n’arrivez pas à entrer, il va vous falloir être inventif. Dites vous que c’est comme ça qu’on apprend le métier et à être prudent ((Il existe deux types d’administrateurs : Ceux qui ont fait une très grosse connerie en tant que root et ceux qui vont en faire une… )) . J’ai bien fait 1000 km AR en voiture juste pour re-démarrer un serveur qui avait pris un « halt » dans la mauvaise console, ce qui ne m’est plus jamais arrivé…

Mais si vous avez réussi à rentrer sur votre serveur, vous avez fait le plus gros:

  1. Arrêtez denyhosts (/etc/init.d/denyhosts stop)
  2. Supprimez l’entrée du fichier /etc/hosts.deny correspondant à votre IP
  3. Profitez en pour ajouter votre IP au fichier /etc/hosts.allow comme indiqué plus haut
  4. Allez dans le dossier /var/lib/denyhosts ((sur Ubuntu. Dans le cas d’autres distributions, cela peut varier. Il semblerais que sur certaines versions ce soit dans/usr/share/denyhosts/data/ )). Vous devriez y trouver des fichiers comme ci dessous. Supprimez de ces fichiers toute occurrence à l’adresse IP concernée en supprimant complètement les lignes. la commande rgrep « xxx.xxx.xxx.xxx » /var/lib/denyhosts/ vous dira dans quels fichiers vous devez agir.
  5. Relancez ensuite denyhosts (/etc/init.d/denyhosts start)
  6. Envoyez moi une petite bénédiction
  7. Rentrez chez vous et allez vous coucher ((c’est en général parce qu’on est fatigué qu’on fait ce type de bêtise.))

Liste des fichiers du dossier /var/lib/denyhosts:

112253 -rw-r--r-- 1 root root 140K 2010-12-08 22:26 hosts
112142 -rw-r--r-- 1 root root 140K 2010-12-08 22:26 hosts-restricted
112251 -rw-r--r-- 1 root root 140K 2010-12-08 22:26 hosts-root
112146 -rw-r--r-- 1 root root 140K 2010-12-08 22:26 hosts-valid
112148 -rw-r--r-- 1 root root  108 2010-12-08 22:26 offset
113817 -rw-rw-rw- 1 root root  27K 2010-12-08 11:42 purge-history
112147 -rw-r--r-- 1 root root    0 2010-12-08 22:26 suspicious-logins
112143 -rw-r--r-- 1 root root  109 2010-12-08 22:26 users-hosts
112145 -rw-r--r-- 1 root root  14K 2010-12-08 22:26 users-invalid
112144 -rw-r--r-- 1 root root  118 2010-12-08 22:26 users-valid

Vérifiez quand même que l’IP n’est pas bloquée pour de bonnes raisons. Ça m’est arrivé dernièrement à cause de mauvais droits sur le home de l’utilisateur, donc le serveur SSH m’envoyait systématiquement bouler. Par conséquent, au bout d’un certain nombre d’essais échoués, denyhosts a considéré que j’étais illégitime et a blacklisté l’IP.

Je confirme avoir cherché un moment ((que de souvenirs passionnant et haletants j’aurais à conter à mes petits enfants…! )).

[Apache2] Résoudre « Code d’erreur : ssl_error_rx_record_too_long »

En essayant de paramétrer un site en SSL sur Lucid, j’ai obtenu cette erreur de la part de Firefox ((à noter qu’Opera donne un autre type d’erreur, mais que je ne l’ai pas notée (erreur fatale 550, si ma mémoire est bonne) )). Erreur qui ne veut rien dire par elle même et une recherche sur le net ne vous donnera que peu de résultat au vu de la variété de réponses, parfois loufoques.

La première chose à faire est de vous assurer que le serveur réponde bien en HTTPS et non en HTTP, et de faire un GET:


telnet 82.XXX.XXX.XXX 443
Trying 82.XXX.XXX.XXX...
Connected to 82.XXX.XXX.XXX.
Escape character is '^]'.
GET /
<html>
<body>

<h1>It works !</h1>
<br />
</body>
</html>
Connection closed by foreign host.

Si vous obtenez du code html, comme c’est le cas ci dessus , au lieu d’une bouillie de caractères (ou de …rien), c’est que vous n’êtes pas en HTTPS mais en HTTP tout court.
Or, comme firefox s’attend à recevoir un certificat dont la longueur est faible, mais qu’il reçoit le code html complet d’une page, forcément il dit que c’est trop long.

Ce qui se trouve confirmé par la lecture du fichier /var/log/apache2/error.log:
[Sat Oct 09 14:40:18 2010] [error] [client 10.0.0.1] Invalid method in request \x16\x03
qui dit que la méthode d’accès n’est pas la bonne.

C’est pas très parlant, mais vu que j’ai galéré pour trouvé d’où venait le problème, j’essaye d’en faire profiter les autres.

Ah, au fait! Mon problème venait que dans la conf de mon virtualhost en SSL je mettais l’IP publique, vu que c’est le seul serveur en DMZ et que tout renvoie dessus. Je croyais le firewall transparent, vis à vis d’apache.
Je me trompais. Il faut mettre l’IP sur le réseau local, vu par la carte réseau elle même.
Après, ça va tout de suite mieux.

Communiquer par un tunnel crypté SSH avec votre serveur comme relai (depuis Linux)

tunnelierLorsque vous êtes en déplacement, connecté en wifi à une borne gérée par on ne sait qui, il est délicat d’accéder à vos comptes bancaires ou votre messagerie en ayant l’esprit tranquille.

En effet, rien n’empêche le propriétaire du point d’accès de surveiller tous les échanges sur cette borne, ou un pirate de sniffer les communications.

Il est possible d’utiliser votre serveur qui tourne à la maison, (voire même un serveur kimsufi, dédibox, ou autre), comme relai pour vos communication, à la fois pour la navigation web et pour les mails. L’important étant que vous ayez confiance dans la machine qui va vous servir d’intermédiaire et du réseau sur lequel elle est connectée.

L’avantage, c’est que c’est rapide et simple à mettre en place, même au dernier moment.

Précisions

Un tunnel ssh ne permet de passer que des protocoles basés sur TCP, au contraire d’un VPN qui permet de transporter tout type de trame IP et non IP en plus d’apporter un routage complet. Ce n’est donc pas un VPN au sens réel du terme, mais cela va vous permettre d’utiliser la sécurité du SSH sur la partie du réseau qui n’est pas fiable.

Creusons le tunnel

Votre ordinateur relai devra, bien évidemment, avoir un serveur SSH accessible depuis l’extérieur. L’idéal étant de pouvoir s’y connecter par clef plutôt que par mot de passe, ce qui vous permettra de fermer l’authentification par clef et de limiter les attaques. Mais les deux fonctionnent.

Je vous laisser lire la documentation pour mettre en place un serveur ssh si vous ne savez pas encore le faire.

Nous allons donc lancer une connexion vers notre serveur, et « binder » (lier) cette connexion à un port local afin que tout ce qui arrive sur le port local soit transféré sur la connexion SSH (et vice versa). Dans un terminal, qu’il faudra laisser ouvert tout le temps de la session, entrez ceci:

ssh -D 1234 utilisateur@serveur_relai

Un man ssh vous donnera plus de détails sur le fait que l’option -D fait que SSH se comporte comme un serveur SOCKS et vous rappellera que seul root peut utiliser les ports privilégiés. Nous utilisons arbitrairement le port 1234, mais vous pouvez utiliser n’importe quel port local supérieur à 1024 (lancé par un utilisateur non root) à condition qu’un service ne tourne pas déjà sur ce port.

Si votre serveur ssh ne tournait pas sur le port par défaut, vous pourrez alors utiliser cette commande en précisant le port de votre serveur:

ssh -D 1234:port_ssh utilisateur@serveur_relai

par exemple

ssh -D 1234:443 utilisateur@serveur_relai

ou

ssh -D 1234 -p 443 utilisateur@serveur_relai

Si vous fermez le terminal dans lequel vous avez ouvert le tunnel, la communication serait fermée et vos logiciels ne pourraient plus sortir. Il faudra donc ne pas le fermer tout le temps de la session.

Hey Ho, Hey Ho, on rentre … dans le tunnel

Maintenant que nous avons créé notre tunnel, il faut indiquer aux logiciels de l’utiliser.

Par exemple, pour firefox:

menu Édition > Préférences > Avancé > Réseau > Paramètres

Utilisez un proxy SOCKS qui est donc votre ordinateur (point de départ de la connexion SSH) sur le port indiqué (1234 dans ce cas) tel que ci dessous

Paramétrage pour Firefox

Pour vous convaincre que vous passez par votre serveur et non par la connexion wifi en cours, allez visiter un site comme http://www.monip.org/ qui vous montrera votre adresse IP externe. Si votre serveur a une IP fixe, vous reconnaitrez facilement votre IP. Sinon, visitez le site, un coup sans proxy, un coup avec, et vous verrez que l’ip n’est pas la même.

Par exemple, pour thunderbird:

Les avantages de cette solution, pour envoyer du mail, sont:

  • vous n’aurez pas à modifier le serveur SMTP d’envoi à chaque fois, même si des extentions existent pour compenser ce problème.
  • pas d’interception de vos mails par un éventuel proxy ou sniffer sur le réseau
  • l’adresse IP d’expédition est celle de votre serveur, pas celle de votre emplacement actuel (vie privée respectée)

Rendez vous à menu Édition > Préférences > Avancé > Réseau et espace disque > Paramètres et paramétrez tel que sur l’image suivante:

Paramétrages de mozilla thunderbird

Lorsque vous enverrez un mail, il passera par le tunnel et sera donc réellement envoyé par votre serveur relai vers votre propre fournisseur d’accès, indépendamment du FAI depuis lequel vous êtes actuellement connecté.

Pour les autres logiciels:

Le principe du paramétrage est identique aux exemples ci dessus. Cherchez dans leur configuration comment utiliser un proxy socks.

Ça peut aussi ne pas fonctionner!

En effet, si un proxy est paramétré sur votre réseau (pas chez vous, là où vous êtes connecté) et qu’il ne laisse pas passer le ssh, vous êtes bloqué. Mais il existe parfois des solutions:

  • Si le blocage du ssh est dû aux ports qui sont autorisés, il vous faudra mettre votre serveur ssh (chez vous) en écoute sur un de ceux ci. Il y a de fortes chances pour que le http et le https soient autorisés (sinon le proxy ne servirait à rien, autant débrancher le câble…).
  • Si le blocage est dû à l’analyse des flux par le proxy et que le ssh est refusé, il faudra passer par un tunnel http dans lequel vous ferez passer un tunnel ssh (ou ce que vous voudrez). Vous pouvez utiliser l’excellent http-tunnel qui vous sortira de l’impasse.
  • Si le proxy utilise un filtrage applicatif en plus du reste… c’est que l’admin est un acharné et que vous n’arriverez pas à sortir par cette voie.

Notez qu’il est possible de faire la même chose avec putty et Windows mais je vous laisser faire ça seuls, n’ayant plus de licence depuis longtemps, et encore moins l’envie de me salir les mains avec ça.

A lire aussi:

Identifiants déconseillés de Février

Avec un peu de retard (boulot, boulot…) voici les identifiants à éviter sur vos ordinateurs.

******************************************************************
Classement des logins et des adresses utilisés
pour le mois de Feb 2010
pour des tentatives de connexion
sur les serveurs de la société Absolacom
******************************************************************
******************************************************************
Classement des logins utilisés (105):
******************************************************************
root            575
admin           100
test            49
oracle          47
webmaster       46
administrator   45
backup          43
guest           43
user            43
web             42
superadmin      42
server          42
ftproot         42
www             42
access          42
super           42
account         42
sql             42
data            42
database        42
sa              42
Administrator   12
ts              11
db2inst1        9
staff           7
dan             6
mysql           4
mlmb            4
bin             4
sales           4
deploy          4
eaguilar        3
PlcmSpIp        3
gruber          3
sekretariat     2
estudiante      2
teamspeak       2
gamefiles       2
alexis          2
isidro          2
stud            2
db2fenc1        2
payala          2
plcmspip        2
delta           2
nagios          2
place           2
thomas          1
scott           1
lucus           1
gt05            1
aaron           1
horvat          1
aarne.rae       1
ventrilo        1
noe             1
dark            1
anonymous       1
peeters         1
darkman         1
upload          1
neoperfect      1
fluffy          1
jeffrey         1
chuck           1
sec             1
0116331077      1
rfmngr          1
thorarne        1
troot           1
hostmaster      1
murmur          1
luis            1
post            1
apple           1
mstr            1
jesus           1
dasusr1         1
mark            1
anyone          1
redmine         1
Mueee           1
dup             1
norton          1
bluelf          1
work            1
recruit         1
nina            1
ftp             1
dana            1
user1           1
manager01       1
jensen          1
antoine         1
trash           1
designer        1
passwd          1
wwwweb          1
william         1
student         1
huabo           1
a               1
lucas           1
globus          1
stephanie       1

******************************************************************
Nombre de tentatives par plage horaire:
******************************************************************
0-1    ######### (9)
1-2
2-3    #### (4)
3-4    ###### (6)
4-5    #### (4)
5-6    ### (3)
6-7    ############ (12)
7-8    ############ (12)
8-9    ###################################### (38)
9-10    ############### (15)
10-11    ########################## (26)
11-12    ############## (14)
12-13    ########### (11)
13-14    ########################### (27)
14-15    ################ (16)
15-16    ############################### (31)
16-17    ############################## (30)
17-18    ############################# (29)
18-19    ###################### (22)
19-20    ############ (12)
20-21    ################## (18)
21-22    ############################################# (45)
22-23    ############################## (30)
23-24    ###################################################### (54)

Comme d’habitude, les données complètes peuvent être trouvées dans le fichier de février: scanresult_feb_2010

Une nette augmentation des tentatives d’accès avec le compte root: quand on vous dit qu’il faut le désactiver dans /etc/ssh/sshd_config! Admin est aussi bien placé.

Un peu plus agité le matin, démarrage à 8h, une montée entre 15 et 19 heures, mais avec aussi un beau pic dans la nuit. Je suis persuadé qu’une bonne partie des ordinateurs allumés dans la journée mériteraient un bon nettoyage…

Identifiants déconseillés de janvier

Avec 3 jours de retard, mais voici la liste des identifiants déconseillés pour janvier. Comme ce sont les identifiants utilisés pour tenter d’entrer sur mes serveurs, il est déconseillé de les utiliser sur les votre, sinon vous allez faciliter la tâche aux pirates.

******************************************************************
Classement des logins utilisés (119):
******************************************************************
root			        205
oracle			        17
postgres			15
sales			        15
nagios			        15
test			 	15
ts			 	13
info			 	13
Administrator		        13
service	        	        12
NULL			 	12
staff			 	9
admin			        8
teamspeak			5
webmaster			5
gustavo			        5
gamefiles			4
db2inst1			4
guest			 	4
samba			        3
upload			        3
alexis			 	3
recruit			        3
user3			 	3
alias			 	3
hlds			 	3
globus			        3
office			 	2
mysql			        2
djeli			 	2
monica			        2
anonymous			2
ts1			 	2
postmaster			2
rpdv			 	2
stud			 	2
db2fenc1			2
ts3			 	2
bingo			 	2
mlmb			 	2
redmine			        2
webadmin			2
shoutcast			2
adempiere			2
administrator		        2
kelvin			        2
test1			 	1
cvsroot			        1
santiago			1
web			 	1
claude		          	1
condor			        1
tt			 	1
grace			 	1
alberto			        1
xtn			 	1
comicup			        1
administratiu		        1
patrick			        1
cstrike			        1
sato			 	1
ts2			 	1
alexandre			1
claudia			        1
www			 	1
library			        1
yoshida			        1
joan			 	1
mvrabel			        1
rp			 	1
anne			 	1
ken			 	1
virtuoso			1
marine			        1
extreme			        1
eggdrop			        1
firebird			1
amanda			        1
joomla			        1
raimundo			1
groundworks		        1
enzo			 	1
apple			 	1
unix			 	1
linux			 	1
Crouse			        1
brc			 	1
ecommerce			1
cyrus			 	1
zoro			 	1
keltika			        1
suzuki			        1
shell			 	1
nobody			        1
oracle1			        1
netdump			        1
andrea			        1
cacti			 	1
bea			 	1
matteo			        1
cvs			 	1
rfmngr			        1
privoxy			        1
user4			 	1
ana			 	1
user1			 	1
prueba			        1
servidor			1
ipbx			 	1
trash			 	1
ftp			 	1
stacy			 	1
a1			 	1
a3			 	1
a2			 	1
lucas			 	1
tomcat			        1
admosfer			1
sg			 	1

Apparition de logins hispaniques. Ça y est, l’Espagne a trouvé mes serveurs!
Un top 10 est classique avec l’apparition de teamspeak en 14e position. Vous constaterez que le mois dernier, les prénoms ont plus été testés que les mois précédents (25 différents quand même). Utiliser son prénom comme login n’est donc pas une bonne idée.

Test (et test1, test2, tests, …) a presque disparu des stats depuis un an. Ça ne doit plus être rentable de tenter de rentrer avec ce login. Par contre, la version espagnoles (prueba) est elle apparue.

Dans le fichier scanresult_janvier fichier complet, vous trouverez aussi le classement par heure des attaques, ainsi que la liste des adresses et ports utilisés.

119 tentatives en janvier, c’est une légère augmentation par rapport à la moyenne (96) mais pas significatif. Les pirates rattrapent t-ils le retard prit pendant les fêtes?

******************************************************************
Nombre de tentatives par plage horaire:
******************************************************************
0-1
1-2
2-3
3-4
4-5
5-6
6-7
7-8
8-9
9-10
10-11	######### (9)
11-12	#### (4)
12-13	################ (16)
13-14	##################### (21)
14-15	############################################# (45)
15-16	############# (13)
16-17	############################### (31)
17-18	###### (6)
18-19	##################################### (37)
19-20	########################### (27)
20-21	########### (11)
21-22	############################### (31)
22-23	######################################## (40)
23-24	################################## (34)

Le matin, c’est assez calme, ça attaque surtout le soir, avec un creux à 17 heures. Ordinateur vérolés du travail éteints avant l’allumage des ordinateurs vérolés des particuliers?
Lorsque j’aurais trouvé le moyen de géolocaliser les adresses, on verra peut être que l’effet est dû à un autre fuseau horaire.
A suivre, donc.

Superviser vos serveurs avec FTPupinfo

Il est toujours pratique d’avoir un oeuil sur les ordinateurs dont on a la charge. Ne serait-ce que pour prévenir avant de guérir. Quand je dis serveurs, c’est tout type de machine linux.

Or, s’il faut se connecter à chacun pour avoir des infos, cela devient vite pénible.

Il existe une pléthore de logiciels dédiés à cet usage. Des simples, comme phpsysinfo, et des poids lourds comme Nagios, zabbix, …

Les logiciels simples peuvent correspondre à un besoin ponctuel, mais manquent souvent des éléments dont on aurait besoin spécifiquement. Les poids lourds du genre sont cauchemardesques à configurer, et c’est souvent sortir le bazooka pour tuer une mouche… Sans compter les failles de sécurités régulières.

J’ai développé un logiciel nommé FTPupinfo destiné, à la base, à mon usage personnel, pour superviser mes serveurs. Puis il a évolué avec le temps pour devenir une application à part entière, située entre les deux catégories dont on a parlé.

Voici un rapide aperçu:

Capture 1

Avantages:

  • Facile à installer (paquet dans les dépôts absolacom)
  • C’est le client qui uploade vers le serveur, pas le serveur qui interroge le client (pas d’ouverture de ports, pas de faille). Pas besoin de se connecter à la machine à surveiller (pas d’ouverture de ports, pas de faille).
  • Paramétrable avec un simple fichier de configuration texte
  • Upload sur le serveur en mode FTP ou rsync (si upload activé, non obligatoire)
  • Copie en local possible des rapports générés
  • Rapide et léger
  • Possibilité d’activer/désactiver chacune des fonctions
  • Personnalisable par skins (que vous pouvez créer/ajouter)
  • Ajout de modules possibles (par exemple pour prendre en charge SNMP)
  • Pensé pour être sécuritaire
  • Possibilité d’exécuter des programmes avant, pendant, après le fonctionnement du logiciel (alertes par mail, nettoyages, …)
  • Possibilité de garder le dernier rapport, un par jour, tous…
  • Le dernier rapport est accessible même si le serveur ne l’est pas
  • Fonctionne sur Debian (et dérivées), Mandriva, Suse (depuis les sources)

Inconvénients:

  • Ne fonctionne pas encore pour Windows (et ce n’est pas une priorité). Fonctionne au strict minimum avec Cygwin avec une version modifiée du programme (contactez moi si vous êtes intéressé).
  • Visualisation en mode décalé. Pas de consultation en direct (le programme est lancé avec une granularité d’une minute).
  • Sans doute Certainement améliorable au niveau du code
  • Disponible uniquement en deb ou en source (si vous voulez packager pour votre distrib, soit vous vous en chargez, soit vous me dites comment faire)
  • Les skins sont moches (si,si. Je sais. Je ne suis pas graphiste, je le reconnais), mais c’est du full CSS (sauf scories) facilement modifiable.¹
  • En anglais pour l’instant (même si c’est peu gênant, le vocabulaire informatique utilisé étant souvent anglais). L’adaptation pour permettre la localisation est en projet.
  • …heu…
Page de statistiques

Page de statistiques

Toutes les infos se trouvent sur le site du projet et vous pouvez voir des exemples sur le site de démo.

Dernière précision, c’est entièrement du GPL gratuit pour la partie cliente (le programme qui tourne sur les ordinateurs). Seule la partie serveur de supervision (optionnelle) est payante.

Il est actuellement utilisé professionnellement par ma société pour superviser les clients, quelques sociétés partenaires et les écoles du département des Pyrénées Orientales équipées de serveurs Eclair (dont j’ai été le développeur initial pour le pôle de compétences de Perpignan) ou Zeli.

Les suggestions, remarques, rapports de bugs sont les bienvenus.

1. message subliminal très subtil 😉 : si vous savez fairedes skins potables, envoyez les moi et je les intègrerais au programme avec vos crédits.

Identifiants déconseillés de Décembre

Voici la liste des identifiants déconseillés pour décembre. Comme ce sont les identifiants utilisés pour tenter d’entrer sur mes serveurs, il est déconseillé de les utiliser sur les votre, sinon vous allez faciliter la tâche aux pirates.

Vous les avez désormais classés par nombre de tentatives.

    Le contenu suivant est généré à partir des fichiers de logs des ordinateurs
    surveillés et permet de consulter les statistiques d'attaques par force
    brute sur ces ordinateurs.
    La liste des identifiants utilisés permet à l'administrateur intelligent
    de ne pas autoriser ces identifiants sur ses serveurs afin de diminuer
    les risques d'attaque.
    Les protocoles surveillés sont ssh et ftp, si ces services sont activés.

    Si votre adresse IP FIXE apparait dans cette liste, vous devriez vérifier
    que votre ordinateur est sain! Si c'est une IP dynamique, elle risque
    d'être déjà blacklistée sur tous mes serveurs et vous devriez en changer...
    Les valeurs représentent la limite basse, les adresses incriminées étant
    blacklistées pour plusieurs mois après un certain nombre d'essais
    infructueux celles ci n'apparaissent plus dans les statistiques.

******************************************************************
       Classement des logins et des adresses utilisés
                 pour le mois de Dec 2009
            pour des tentatives de connexion
         sur les serveurs de la société Absolacom
******************************************************************
******************************************************************
Classement des logins utilisés (77):
******************************************************************
root			126
admin			27
Administrator	        12
staff			11
sales			10
nagios			7
administrator	        7
guest			6
plcmspip		5
postgres		5
ace		        4
recruit			4
office			3
PlcmSpIp		3
mlmb			3
test			3
delta			3
alias			3
test1			2
fluffy			2
administrador	        2
abcs			2
t1na			2
samba			2
daemon			2
account			2
anonymous		2
a		    	2
db2inst1		2
alexis			2
virtuoso		1
demo			1
slim			1
accounts		1
abel			1
ghost			1
agnieszka		1
agarcia			1
dasusr1			1
www-data		1
administration	        1
mysql			1
kent			1
access			1
codec			1
upload			1
agi		    	1
rob		    	1
eff		    	1
slasher			1
hdexperience	        1
advantage		1
ftp			1
nobody			1
vmail			1
eminem			1
administracion	        1
user			1
adnan			1
c		    	1
b		    	1
acd05			1
d		        1
tomcat			1
sifak			1
patrick			1
adriano			1
accounts1		1
ibiza			1
publica			1
admon			1
r00t			1
adrian			1
lpd			1
adminftp		1
lpa			1
agnes			1

Le top 10 est classique avec cependant un net recul de PlcmSpIp et www-data au profit de guest et ace. A noter, de plus en plus de prénoms francophones. Linux se démocratiserait il en France?

Dans le fichier complet, vous trouverez aussi le classement par heure des attaques, ainsi que la liste des adresses et ports utilisés. Il serait intéressant de dresser une carte de l’origine des attaques, par exemple avec geotool, mais je ne sais pas encore comment faire ça automatiquement ou sans saturer le serveur. Si vous avez des idées, je suis preneur (surtout si c’est du python).

Une précision sur le fait qu’il peut sembler y avoir relativement peu de tentatives (77 ce mois ci): une adresse IP blacklistée sur l’un de mes serveurs se retrouve blacklistée sur l’ensemble de mes serveurs au maximum dans l’heure qui suit. Ça m’a permis de passer en un an d’environ 800 tentatives illégales de login à moins de 100 tentées par mois. De quoi simplifier la vie des firewalls.

******************************************************************
Nombre de tentatives par plage horaire:
******************************************************************
0-1
1-2
2-3
3-4
4-5
5-6
6-7
7-8
8-9
9-10
10-11	################### (19)
11-12	########### (11)
12-13	####### (7)
13-14	### (3)
14-15	######### (9)
15-16	######### (9)
16-17	###################### (22)
17-18	############## (14)
18-19	#################### (20)
19-20	##################### (21)
20-21	################################ (32)
21-22	########### (11)
22-23	############# (13)
23-24	##### (5)

Il est intéressant de remarquer que les attaques se font surtout en fin de journée mais, nouveauté de décembre, alors qu’habituellement le pic se situe entre 18 et 20 heures, ce mois ci il est entre 20 et 21 heures. Effet vacances? Nous verrons en janvier si la tendance se confirme.

C’est vrai qu’il reste encore quelques heures pour finir décembre, mais une bonne partie des serveurs va s’arrêter ce soir pour n’être réactivés qu’à la rentrée. Donc, ces statistiques ne sont pas véritablement complètes mais le peu qu’il manque ne serait de toute façon pas représentatif.

Sur ce, je vous souhaite une bonne année 2010 et m’en vais préparer mon réveillon!

Identifiants déconseillés de Novembre

Mise à jour pour novembre de la liste des identifiants déconseillés sur un serveur accessible depuis internet (ssh et ftp). La liste est complète et intègre l’ensemble des identifiants depuis un an, avec les nouveaux apparus le mois dernier.

Vous trouverez la liste à télécharger  ici.

Voici la liste (incomplète, puisqu’expurgée des identifiants ne passant pas en HTML sur le site) des identifiants utilisés:

!@#$%^
0002593w
00089
0racle
1
1234
12345
1qaz
24_touchy
\357\273\277root
3nt3rw3b
a
aa
aaa
aabakken
Aadolf
aaguilar
aalish
aaliyah
Aaliyah
Aamu
aandrei
Aapeli
aapo
Aapo
Aappo
Aarne
Aarni
Aarno
Aaro
aaron
Aaron
Aarre
Aarto
Aatami
Aatos
Aatto
Aatu
ab
Aba
abakus
abas
abba
abbott
abby
abc
abc123
abcd
abcde
abcs
abdollah
abel
abelard
abelium
abra
abraham
abrahams
absolon
abuse
ac
acc
acer
achille
achramowicz
acosta
acs
act
actis
ad
adachi
adam
adan
adeline
adil
aditya
adm
adm2
admin
Admin
admin1
admin2
admin4
adminftp
administracion
administrador
administrateur
Administrateur
administration
administrator
Administrator
admon
adnan
adoblas
adolphe
adrian
adriano
advantage
agarcia
agata
agueda
aigtransfer
aldo
alex
alexandre
alexis
alfredo
alias
alin
alina
alondra
altagracia
amal
amanda
amendoza
amstelecom
ana
andi
andie
andik
andre
andrea
andrew
angel
angelica
anna
anonymous
anton
antonia
anyone
apc
apple
Arho
Ari
arodriguez
arvin
as
auditor
auditoria
augusto
axel
b
backup
baltasar
basilio
bautista
beatriz
ben
benedicta
benedicto
benita
benito
bernie
berta
bin
blas
boot
bot
brian
brigida
bruno
bus
c
cadi
cady
cafe
cai
cailin
cailine
calista
cameron
candie
candy
carlabs
carta
cartas
casandra
casino
cat
cayetano
cayo
cgarcia
cgdsommieres
cgi
christian
ciceron
cindy
cirilo
cjohnson
clientes
cocolino
colon
comerciais
comercial
comms
condor
consultoria
coocon
correo
csuarez
curcio
d
dasusr1
data
db2inst1
dcmoralde
deane
dedlogistica
deepesh
delta
demetrio
demo
denom
deo
design
deutch
diablo
display
dk
dke
dl
dle
dm
dmaac
dme
dmin
domingo
drivers
dsantiago
dsigned
dumbo
e
eaguilar
edilson
.edu
efrain
ejerez
eloy
eminem
engracia
enio
enzo
eroot
es
estudiante
eva
export
ezequiel
fabio
fakeuser
falcon
fax
fedora
fermin
fernando
fire
fluffy
fly
francisco
franck
fred
freebox
ftp
ftpuser
gail
games
gast
german
gerry
ghost
gilberto
gilmar
global
globus
gnats
good
.gov
gpadilla
grace
granta
gregorio
grupo2
gt05
guest
guest1
haruki
heidi
hilaria
hilario
hipolito
hiram
hiroshi
hitler
home
http
httpd
image
info
information
install
internet
invite
iris
isidro
ismael
itschool
jack
jagdish
jair
jasonbc
jboss
jeamar
jeanpaul
jfparra
jian
jloor
jmaldonado
joan
joaquin
jobert
johan
joomla
jorgef
joseluis
jsolis
jsuarez
jtello
juliano
karon
katharina
knoppix
kristablack.net
left
leon
leonardo
lgonzalez
liaw
library
lieu
lilly
linda
linux
logic
lorenzo
lpa
lpd
ls
lschmidt
lscsymbiosis
lsnoxell
luca
lucas
lucius
ludovic
lugog
luigi
luis
luisa
luke
lunar
lus
luther
luxmundi
lward
lyle
lyn
lynux
lynx
lz
m0n0wall
mac
machine
mack
macosx
macthom
mad
madalena
madmad23
madmin
madonna
magazine
magenta
magic
mai
mail
mailman
maintain
maintenance
mambo
manager
manu
manu2
manu-desktop
marcar
marcia
marian
./marie-françoise
marine
mario
marion
master
mat
mat3
mat4
mateo
matilde
matt
matt4
mcc
medina
mercedes
michael
miguel
Miika
Miikka
mike
miranda
mireya
mlmb
monica
montrelle
moralez
movieup
mromero
murmar
murray
mvega
mysql
mythtv
nada
nadia
nagios
nana
nancy
narciso
natalia
nestor
netdump
news
newsroom
nicoara
nieves
nina
nlopez
no
nobody
noe
noemi
norberto
norris
null
NULL
office
olivia
or
oracle
oracle1
oratest
order
ot
oubiwann
pabla
paco
pam
paradise
pass
password
patricia
patricio
patrick
paula
payala
paz
pelayo
penelope
perla
petr
pgsl
photo
pia
piedad
pio
placido
player
player2
plcmspip
PlcmSpIp
pontoBXS
porfirio
postgres
postmaster
ppazmino
presidencia
primaveras
prueba
prueba1
public
r00t
raimundo
ramiro
raul
recruit
research
reynaldo
rfmngr
right
roberto
rocio
rogelio
root
['root
rosario
rot
rsync
sales
salvatore
samba
sancho
sarah
saturnino
scanner
scanspublics
scorpion
seb
sebastian
sec
security
sergio
sergior
server
service
severino
sherry
shortcut
shoutcast
simon
simoni
sims
sistemas
sjuarez
skin
slim
smtp
sol
soporte
spam
sql
ssh
staff
stephanie
stephen
steven
sthippolyte
stud
student
su
sua
support
supporte
svn
sybille
sync
sys
sysadmin
system
t
t1na
tadeo
tax
taylor
td
teacher
teamspeak
temp
teofilo
test
test1
teste
teste2
tester
testi
testing
testuser
thao
thy
ti
tiffany
tomas
tomcat
tomsu
toor
toto
trash
tricia
ts
tzuss
unknown
upload
user
user1
userftp
username
usuario
utente
utilidad
utilidades
valentin
vh
vicente
web
webadmin
webalizer
webmaster
wilf
wilford
william
wilson
wr
www
www1
www-data
xten
yosef
yvonne

Identifiants déconseillés

Quand on surveille ses logs (ce que tout bon administrateur réseau devrait faire), on finit par voir que des tentatives d’accès non autorisés utilisent souvent les mêmes identifiants.

Par conséquent, l’administrateur intelligent se gardera bien d’utiliser ceux ci et choisira des logins moins faciles à deviner par les « pirates ».

Comme j’administre une quantité de serveurs grandissante et importante, je centralise tous les identifiants utilisés qui ont entrainé un échec d’identification. Vous trouverez le fichier ici: Identifiants refusés

Faites en bon usage. Sur mes machines, aucun des ces identifiants n’est autorisé ( et tant pis pour les utilisateurs qui veulent quelque chose de simple ET que leurs données soient en sécurité…)

Recevoir le log de rkhunter

Par défaut, rkhunter envoi un compte rendu succint lors de son lancement automatique.

Avouez qu’il serait quand même plus pratique de recevoir le log au lieu d’une simple phrase « Please inspect this machine, because it may be infected. ».

Heureusement, il est possible de modifier simplement ce comportement.

En root, éditez le fichier /etc/cron.daily/rkhunter.

Modifiez la ligne:

...
/usr/bin/nice -n $NICE $RKHUNTER --cronjob --report-warnings-only \
--createlogfile /var/log/rkhunter.log $RK_OPT &gt; $OUTFILE
...

pour qu’elle ressemble à celle ci

...
/usr/bin/nice -n $NICE $RKHUNTER --cronjob --report-warnings-only \
--createlogfile /var/log/rkhunter.log --display-logfile $RK_OPT &gt; $OUTFILE
...

Au prochain lancement automatique, si vous avez paramétré rkhunter pour qu’il vous envoie un mail, vous recevrez en plus le log du scan.

Filtrer les connexions ssh

Portier SSH

Si vous possédez un serveur avec SSH opérationnel, vous ne serez pas long à avoir des messages tels que ceux ci dans le fichier /var/log/auth.log:

...
Mar 11 12:48:21 serv sshd[12956]: Failed password for invalid user root from 64.71.148.162 port 47270 ssh2
Mar 11 15:45:04 serv sshd[6954]: Did not receive identification string from 210.21.30.72
Mar 11 15:46:48 serv sshd[7041]: Did not receive identification string from 81.93.188.5
Mar 11 15:47:50 serv sshd[7106]: User root from 210.21.30.72 not allowed because none of user s groups are listed in AllowGroups
Mar 11 15:47:50 serv sshd[7106]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=210.21.30.72  user=root
Mar 11 15:47:52 serv sshd[7106]: Failed password for invalid user root from 210.21.30.72 port 54346 ssh2
Mar 11 15:49:33 serv sshd[7241]: User root from 81.93.188.5 not allowed because none of user s groups are listed in AllowGroups
Mar 11 15:49:33 serv sshd[7241]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=81.93.188.5  user=root
Mar 11 15:49:35 serv sshd[7241]: Failed password for invalid user root from 81.93.188.5 port 44663 ssh2
Mar 12 00:51:18 serv sshd[22229]: User root from host.ongamemarketing.com not allowed because none of user s groups are listed in AllowGroups
Mar 12 00:51:18 serv sshd[22229]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=host.ongamemarketing.com  user=root
Mar 12 00:51:20 serv sshd[22229]: Failed password for invalid user root from 174.133.12.130 port 48089 ssh2
Mar 12 00:51:22 serv sshd[22236]: User root from host.ongamemarketing.com not allowed because none of user s groups are listed in AllowGroups
Mar 12 00:51:22 serv sshd[22236]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=host.ongamemarketing.com  user=root
Mar 12 00:51:24 serv sshd[22236]: Failed password for invalid user root from 174.133.12.130 port 48521 ssh2
Mar 12 01:47:10 serv sshd[30827]: Did not receive identification string from 114.200.199.144
Mar 12 01:53:17 serv sshd[31227]: Invalid user staff from 114.200.199.144
Mar 12 01:53:17 serv sshd[31227]: pam_unix(sshd:auth): check pass; user unknown
Mar 12 01:53:17 serv sshd[31227]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=114.200.199.144
Mar 12 01:53:19 serv sshd[31227]: Failed password for invalid user staff from 114.200.199.144 port 35343 ssh2
Mar 12 01:53:27 serv sshd[31234]: Invalid user sales from 114.200.199.144
...

Vous avez besoin de pouvoir vous connecter en ssh depuis le réseau local, depuis l’extérieur, mais vous voulez limiter les risques. Il existe plusieurs solutions, qui peuvent être cumulées:

Sécuriser par la configuration de SSH

N’autoriser QUE certains utilisateurs à accéder au service

Si vous avez peu d’utilisateurs nécessitant un accès ssh, vous pouvez les déclarer ainsi en ajoutant cette ligne dans le fichier de configuration /etc/ssh/sshd_config (et en redémarrant le service après chaque modification)

AllowUsers titi toto

Après relance du service ssh, les utilisateurs titi et toto pourront se connecter en ssh, les autres utilisateurs se verront refuser leur mot de passe.

Vous pouvez aussi créer un groupe (par exemple: sshusers) et autoriser tous les utilisateurs de ce groupe à se connecter en ssh. Ceux n’appartenant pas à ce groupe se verront refuser leur mot de passe.

addgroup sshusers
adduser toto sshusers
adduser titi sshusers

Puis ajoutez la ligne suivante dans /etc/ssh/sshd_config:

AllowGroups sshusers

IN and OUT

Oui, mais voilà un nouveau problème:

  1. Le serveur fait passerelle avec internet, et possède une carte sur le réseau interne, et une carte vers le réseau internet.
  2. Tous mes utilisateurs internes doivent pouvoir accéder par ssh (ce qui est le cas avec la configuration par défaut), mais ne doivent pas pouvoir accéder depuis l’extérieur (parce qu’ils n’en ont pas besoin, ou parce que les mots de passe des utilisateurs sont trop simples)
  3. Si je laisse la configuration ainsi, le serveur sera piraté très rapidement.

Il est possible d’ajouter une directive à la liste des autorisations, permettant de faire ceci:

AllowUsers *@192.168.0.*

Ainsi, tous les utilisateurs du réseau local (et possédant un compte sur le serveur) pourront accéder par ssh, mais ne pourront pas le faire s’ils ne proviennent pas du réseau local (par internet).
Si je veux pouvoir ensuite me connecter depuis l’internet pour faire de la télémaintenance, il me suffit d’ajouter mon compte et de transformer la ligne en ceci:

AllowUsers manu *@192.168.0.*

(1)

Il est possible aussi de cumuler les directives Users et Groups pour obtenir des possibilités supplémentaires. Exemple:

  1. Seuls certains de mes utilisateurs locaux doivent pouvoir se connecter au serveur, depuis le net ou en local.
  2. Je veux pouvoir m’y connecter de partout (local et internet)

La configuration est la suivante:

AllowGroups sshusers
AllowUsers manu

Ainsi, seuls les utilisateurs appartenant au groupe sshusers pourront se connecter au serveur, en plus de l’utilisateur manu qui pourra se connecter depuis n’importe où.

Si je possède un adresse IP fixe, et que je suis assez bête pour crée un compte manu avec le mot de passe manu, je peux tout de même limiter l’accès par mon adresse IP (80.80.80.80)

AllowUsers @80.80.80.80

Je suis désolé, ça va pas être possible…

Vous pouvez même ajouter des directives inverses, pour interdire les connexions:

DenyUsers invite
DenyGroups stagiaires

Autres configurations conseillées de ssh

Vous pouvez modifier d’autres éléments du fichier de configuration, qui permettront de sécuriser un peu plus votre serveur ssh:

  • Changer le port d’écoute par défaut: vous pouvez changer ce port par autre chose que 22. Sachez cependant que la protection apportée par ce changement est TRÈS FAIBLE. Un scan de vos port repérera le port que vous avez choisi, et des logiciels de scans sont capable de déterminer le service qui tourne derrière ce port. Cela vous permettra seulement d’échapper à certains robots qui ne tentent des connexions que sur le port 22.
  • N’autoriser une identification que par clef: il vous faudra générer des clefs d’identification (avec seahorse pour gnome ou ssk-keygen) pour tous vos utilisateurs et empêcher l’autentification par mot de passe dans la configuration de SSH. Cette protection est très efficace, par contre, il faut que les clefs soient sécurisées (pas sur une clef usb qui peut se perdre ou se faire voler, pas sur un partage accessible, pas échangées par courriel, …). L’autre inconvénient, c’est que vos clefs doivent voyager avec vous et être installées sur les ordinateurs que vous utilisez; d’où une incompatibilité avec le point précédent, si vous n’avez pas une politique stricte de stockage des clefs.
  • Ne JAMAIS autoriser la connexion de l’utilisateur root: (PermitRootLogin no).  Il y a toujours un utilisateur root sur tous les Linux (même sur Ubuntu) et vous facilitez le travail d’un éventuel pirate, puisqu’il n’a qu’un mot de passe à trouver. Autrement, il doit d’abord trouver un login valide, puis son mot de passe, puis celui du root. Si vos mots de passe et vos logins sont adaptés, cela lui prendra des années avant d’y arriver par ce moyen.

Ajouter des logiciels de sécurisation

fail2ban

fail2ban est un logiciel qui va surveiller les tentatives de connexion échouées dans le fichier /var/log/auth.log , et bloquer, en modifiant les règles iptables à la volée, un nombre trop élevé de connexions échouées. Ce logiciel permet aussi, de la même manière, de protéger votre serveur apache, postfix, vsftpd, proftpd, wuftpd, sasl, dns, …
Une fois installé, il vous suffit d’éditer le fichier /etc/fail2ban/jail.conf pour configurer son comportement. Exemple pour ssh:

...
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = <a class="linkification-ext" title="Linkification: http://10.0.0.0/24" href="http://10.0.0.0/24">10.0.0.0/24</a>
bantime  = 600
maxretry = 3
...
[SECTION_NAME]
enabled = true # vérifier que cette valeur est à True, sinon le logiciel n'est pas activé!
...
[ssh]
enabled = true
port	= ssh
filter	= sshd
logpath  = /var/log/auth.log
maxretry = 6

Dans cette configuration:

  • Tout ce qui vient du réseau local (10.0.0.0/24) est ignoré. Donc je pourrais me tromper autant de fois que voulu, je ne me ferais pas bannir.
  • En dehors de mon réseau local, par ssh, j’ai droit à 6 tentatives (par session) de connexions échouées. Ensuite, je me ferais bannir. Si je m’identifie, la fois suivante, j’ai encore droit à 6 tentative (ça repart à zéro avec l’identification réussie)
  • Si je suis banni, toutes mes tentatives de connexions pendant les 600 prochaines secondes (10 minutes) seront refusées, sans possibilité d’identification.

La configuration de fail2ban vous offre plein d’autres possibilité, comme de recevoir des mails en cas de tentatives échouées, d’utilisateurs inconnus, etc. Consultez la documentation pour exploiter cet outils très pratique.

denyhosts

denyhosts permet de faire la même chose, un peu différemment. Il maintient une base d’IP bannies dans /etc/hosts.deny et les compare avec les tentatives de connexions.

Il a quelques avantages sur fail2ban, même si je le trouve plus lent (consommateur) à l’usage:

  1. Il permet de bloquer les tentatives d’accès ssh sur l’utilisateur root dès la première tentative.
  2. Il permet de paramétrer comme on le veut les champs from et subject des mails envoyés
  3. Il permet d’envoyer les rapports vers le syslog, qui peut être distant (et ineffaçable)

Simple à configurer, le fichier /etc/denyhosts.conf est largement commenté

Sur le même sujet:

(1) Ne pensez pas que je suis assez bête pour utiliser un login simple tel que « manu » sur mes serveurs… C’est juste pour l’exemple.

rkhunter et unhide

Unhide est un utilitaire permettant de lister les processus actifs cachés. C’est un outil qui vous permet de trouver d’éventuels rootkits installés sur votre système.

S’il n’est pas installé par défaut sur votre distribution, installez le de manière classique.

Si vous utilisez rkhunter pour scanner votre machine, sans opération particulière vous aurez deux problèmes:

  1. rkhunter n’utilisera pas par défaut unhide, et vous perdrez donc le bénéfice d’un seul scan.
  2. rkhunter va détecter un warning sur unhide et unhide-linux26, ce qui vous enverra un mail à chaque détection.

La solution est simple: il suffit d’indiquer à rkhunter que unhide est fiable, en l’ajoutant à sa base de donnée. Ensuite, rkhunter utilisera unhide automatiquement.

ATTENTION: n’utilisez la commande suivante QUE SI VOUS ÊTES SÛR de votre système ! En effet, cette commande va réinitialiser la base de données des programmes considérés comme sûrs par rkhunter. Si vous avez un rootkit ou des programmes cachés, ils ne seront plus détectés!

Il est conseillé de lancer un rkhunter -c et de vérifier le rapport avant de lancer la commande suivante.

Maintenant que vous êtes prévenus, voici la commande magique (en root ou avec sudo):

rkhunter --propupd

C’est tout. La prochaine fois que rkhunter sera lancé, manuellement ou par la programmation, unhide sera détecté et utilisé.