AngeZanetti.com

Internet et ses usages, développement Web et humeurs diverses

Tag: WordPress (page 1 of 2)

Eviter les attaques par bruteforce sur WordPress

A l’heure où j’écris cet article ce blog subit une attaque de type bruteforce depuis plusieurs heures. C’est donc le moment idéal pour faire un petit tuto sur comment se protéger de ce type d’attaques dont les sites WordPress sont de plus en plus la cible.

2907405284_9b57d65695_o-676x287

Bruteforce ?

Les attaques bruteforce sont les attaques les plus basiques et les plus stupides du monde. Prenez un site que vous voulez attaquer et qui est protégé par mot de passe. Pour trouver ce mot de passe vous allez tout simplement tester toutes les combinaisons possible, aussi longtemps qu’il le faut jusqu’à ce que vous tombiez sur le mot de passe en question.

Prenons un exemple.

Mon site est protégé par le mot de passe “123”. Si je veux bruteforcer, je vais tester TOUS les mots de passe possible. D’abord les chiffres, les nombres puis l’alphabet puis les couple lettres + chiffres puis lettres + chiffres + symboles.

Dans notre cas, je ferais quelque chose comme:

1, 2, …, 11, 12, 13, …, 111, 112, … pour finalement arriver à 123.

Un vrai nom d’utilisateur

WordPress est une plateforme de blog devenu très populaire, c’est donc devenu, par la même occasion, une cible privilégiée de réseau de robots (appelés botnet) qui scannent le web à le recherche de site WordPress et qui déclenchent des batteries de bruteforce dessus.

Comme vous le savez, pour se connecter à l’interface d’administration de WordPress il faut un login et un mot de passe.

Les robots vont donc essayer de se connecter avec des utilisateurs “génériques”. Évitez donc d’avoir des utilisateurs avec pour login

admin, root, test, lenomdevotresite (ici angezanetti), etc …

Le mieux étant d’éviter de mettre le pseudo de celui qui publie les articles comme admin. Par exemple l’utilisateur qui publie les articles s’appelle toto et n’a que les droits d’auteur. Un autre utilisateur du nom de tata à lui les droits d’administration.

Cela devrait déjà beaucoup compliqué la tâche de nos cher botnets.

Des mots phrases de passe

Ensuite pour se prémunir plus efficacement il faut choisir avoir un mot de passe complexe, ou mieux, une phrase de passe.

Avec l’exemple ci dessus on comprends bien que pour un ordinateur faisant plusieurs millions de combinaisons à la secondes, énumérer tous les nombres de 1 à 123 prends quelques secondes alors qu’avec un mot de passe du genre

j’adoreangezanetti.com

C’est déjà beaucoup plus compliqué ! D’ailleurs plutôt que de prendre des mots de passe impossible à retenir du genre

38jRXxuaES9Q

Préférez les phrases de passe, plus simple et tout aussi solides !

Pour une meilleure sécurité n’hésitez pas à recourir a des logiciels de gestionnaires de mot de passe qui retiennent pour vous chaque mot de passe pour chaque site (car oui, il en faut un par site !)

Bannissez !

Enfin, comme je vous le disais plus haut ce sont de véritables réseau de plusieurs centaines de machines fantômes qui attaqueront votre site, en même temps. Tout est donc une question de temps, même le meilleur des mots de passe est crackable avec beaucoup de temps et de ressources machines.

Pour rendre la tâche de ces attaques plus difficiles je vous conseille d’installer  Limit Login Attempt . C’est un plugin qui bannit automatiquement les IPs qui échouent à se connecter à votre interface d’administration.

Au bout de 3 fois il bannit l’IP pour une durée courte ( quelques dizaine de minutes), puis si l’opération se renouvelle avec la même adresse il bannit pour une durée plus longue (quelques jours). C’est efficace et ralentit considérablement la vitesse des attaques.

Le temps d’écrire ce billet mon plugin à banni plus de 100 IPs pour plusieurs jours, et ça continue…

Et c’est tout ?

Une fois ces réglages fait, vous devriez être couvert pour 99% des attaques bruteforce, mais bien sur, cela ne vous empêche pas de faire des sauvegardes, de mettre à jour vos plugins et WordPress et de mettre en place des protection au niveau serveur, mais c’est une autre histoire !

 

Credit Photo : GraceOda

Migrer SPIP vers WordPress

Il y a quelques jour on m’a confié une super mission: migrer un blog SPIP vers un WordPress!
J’ai cherché un peu partout une solution simple et clé en main. Visiblement cela n’existe pas vraiment… Il y a bien Korben qui à fait un article la dessus, mais son code n’est plus dispo.

J’ai été cherché du côté de la communauté SPIP – ils sont super sympas d’ailleurs n’hésitez pas à aller leur faire un coucou sur IRC !
J’ai trouvé un tuto pas trop mal fait qui permet d’importer le contenu brut d’un SPIP vers un blog WordPress, tout ne fonctionne pas mais ça dégrossi vraiment le travail.

 

EDIT: Apparement il y a un plugin qui fait ça maintenant  (merci kerfred)

Ensuite il faut traiter toute la syntaxe bizarre du CMS pour en faire du beau HTML. Et là j’ai pas trouvé mieux que du sql, pénible mais efficace…

Le code des requetes est dans un gist ci dessous, n’hésitez pas à le forker !

 

WP-CLi un outil idéal pour maintenir votre site WordPress

En ce moment je suis entrain de monter une offre commerciale de maintenance dédiée aux sites WordPress. Les mises à jour sont bien souvent pas faites par le propriétaire du blog et cela entraine des failles de sécurité importantes. Mais le problème est toujours le même: on oublie, on à pas envie, pas le temps ou on est pas compétent pour le faire ou pour réparer en cas de casse…

Pour cette nouvelle activité je cherche les meilleurs outils pour pouvoir travailler vite et bien. Je suis tombé il y a peu de temps sur une perle : Wp-cli 

C’est un outil comme je les aimes, il ne fait qu’une seule chose mais il le fait bien. L’idée est simple : pouvoir administrer vos sites WordPress en ligne de commande. Particulièrement utile quand le nombre de site à maintenir se multiplie.

Pour l’installer rien de plus simple :

curl http://wp-cli.org/installer.sh | bash

Ensuite vous vous mettez à la racine de votre site WordPress et vous pouvez en une ligne de commande mettre à jour plugins & thèmes, en installer de nouveaux mais aussi créer/supprimer articles, commentaires et même le blog lui même. Par exemple pour installer un plugin :

wp plugin install hello-dolly

Et hop, le plugin est installé!

Indispensable, en tout moi je ne peux plus m’en passé !

http://wp-cli.org/

Lier automatiquement les pseudo Twitter dans vos pages et articles WordPress sans plugin

Petite astuce trouvée sur le net ce matin qu’il fallait que je vous partage. Je suis un gros utilisateur de Twitter, et j’essaye d’être un bloggeur régulier. Rien de plus naturel donc de vouloir lier les deux. J’ai essayé beaucoup de choses, des plugins, des widgets mais rien ne m’a jamais convaincu.

Plus j’avance dans ma pratique de WordPress et plus j’essaye de limiter au maximum le nombre de plugin et les widgets sont bien souvent ignorés par mes lecteurs – c’est d’ailleurs pour cette raison que je n’ai plus de sidebar sur mon thème !

Le lien le plus efficace que j’ai trouvé est de lier les pseudos twitter dans un post directement à leur compte. Avant j’utilisais un plugin, mais ça c’étais avant ! Une simple petite regex permet de faire ça très bien, il suffit d’ajouter les lignes suivantes dans votre functions.php :

function twtreplace($content) {
	$twtreplace = preg_replace('/([^a-zA-Z0-9-_&])@([0-9a-zA-Z_]+)/',"$1<a href="http://twitter.com/$2" target="_blank" rel="nofollow">@$2</a>",$content);
	return $twtreplace;
}

add_filter('the_content', 'twtreplace');   
add_filter('comment_text', 'twtreplace');

Et voilà, tous les @usernames seront reliés à leur compte Twitter !

Source

Apéro WordPress à Lille

apre-wordpress-Lille

Le 14 Mars prochain, au Café Morel de Lille, aura lieu le premier apéro Wordpress Lillois. Au programme, présentation du plugin de newsletter Wysija et de son équipe de 4 personnes qui développe cet outil depuis plusieurs années en télétravail. Intéressant de voir une startup dont l’activité est centrée sur un seul plugin WordPress.

Il y aura aussi une partie présentation de WordPress, une partie question réponses et bien sur le tout autour d’une bière, Nord de la France oblige. Cela va être l’occasion pour moi de rencontrer la communauté WordPress du Nord qui n’est pas assez souvent réunie et mobiliser autour d’événements communs.

Cet événement est organisé par la Fabrique de Blogs.

Alors on se retrouve là-bas ?

BackWPup, le plugin qui sauvegarde votre WordPress à votre place !

Je ne sais pas comment vous fonctionnez, si vous aussi vous mettez des post-its partout pour essayer de vous rappeler de faire “ABSOLUMENT” la sauvegarde de vos sites/blogs. Moi je crois avoir à peu près tout tenté, rien n’y fait j’oublie. J’ai toujours un truc urgent à faire, j’ai jamais envie de me connecter à phpmyadmin pour faire un dump de ma bdd.

Comme ce blog tourne sur une serveur mutualisé je peux pas mettre de Cron en place.

Et il y a quelques semaines j’ai découvert BackWPup, et depuis tout va mieux. C’est un plugin WordPress qui s’installe en 2 clics et qui permet de planifier des sauvegarde automatique des fichiers PHP et de votre base de données. La différences avec les anciens plugins que j’avais utilisé est clairement sur l’interface de gestion avec BackWPup c’est ralativement simple et clair mais surtout sur la palette de moyen de sauvegarde. Vous pouvez, suivant vos habitudes envoyer les sauvegardes sur dropbox, amazonS3, google Storage, votre FTP, par email et par une demi douzaine d’autres moyens ! Il suffit de choisir ensuite la périodicité et hop tout roule.

Cerise sur le gâteau les logs sont dispos directement dans l’interface d’amin au cas ou.

Un plugin vraiment cool à tester !

Pour avoir plus d’infos http://wordpress.org/extend/plugins/backwpup/faq/

[Credit photo : cesarastudillo]

 

Réduire le spam sur son site WordPress

Encore une petite note sur WordPress, suite au mail d’un lecteur qui m’a prévenu que le formulaire de commentaire renvoyait systématiquement vers une page 404…

J’ai regardé et, effectivement, il y avait une erreur dans mon .htaccess, fichier que j’avais modifié il y a quelques temps pour réduire le spam ! Bon, le fait est que cela avait bien fonctionné, un peu trop même :)

Explications :

WordPress est victime de son succès, bien souvent les blogs qui utilisent cette plateforme sont la cible de robots spammeurs qui attaquent directement wp-comment-post.php et envoies des centaines de spams par jours… Et, rapidement, trier ces indésirables devient très pénible !
Petite solution facile, trouvée dans le codex, à faire avec précaution toutefois !

Il faut ouvrir votre fichier .htacess et y coller :
RewriteEngine On&lt;br /&gt;<br />
 RewriteCond %{REQUEST_METHOD} POST&lt;br /&gt;<br />
 RewriteCond %{REQUEST_URI} .wp-comments-post.php*&lt;br /&gt;<br />
 RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR]&lt;br /&gt;<br />
 RewriteCond %{HTTP_USER_AGENT} ^$&lt;br /&gt;<br />
 RewriteRule (.*) http://%{REMOTE_ADDR}/$ 
 Avec ces quelques lignes vous évitez tout commentaires venant directement sur wp-comment-post.php, simple et efficace.

Attention toutefois, il faut bien mettre votre nom de domaine sans faute de frappe à la place du *yourdomain.com*. C’est ce qui coincait dans mon cas, une toute petite erreur de frappe qui interdisait tous commentaires !

C’est maintenant réparé, on peut reprendre les discussions et autres trolls !!

La pagination WordPress sans plugin

Encore une petite astuce WordPress trouvée sur catswhocode cette fois. WordPress par défaut ne supporte pas de pagination avec le numéro des pages, notre moteur de bog préféré ne propose que des liens Prec/Suiv. Evidemment une multitude de plugins ont fleuris pour combler cette lacune.

Mais comme souvent avec les plugins, il y en a des plus ou moins bon, plus ou moins codés avec les pieds. J’évite donc au maximum l’utilisation de ses petits bouts de code.

J’ai donc trouvé un petit bout de PHP qui permet de mettre en place la fameuse pagination , le tout en quelques lignes !

<?php
 global $wp_query;
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
 'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
 'format' => '?paged=%#%',
 'current' => max( 1, get_query_var('paged') ),
 'total' => $wp_query->max_num_pages
 ) );
 ?>

Il suffit de glisser ce code dans votre page d’archives et/ou dans l’index et hop une pagination toute jolie sans efforts et sans plugins !

Configurer WordPress pour utiliser SSH au lieu de FTP

J’ai récemment (re)installé un serveur dédié pour mon ami Guillaume. Ce serveur sert, entre autres, à faire tourner un blog WordPress.

J’ai mis en place un LAMP, tout bête et expliqué à Guillaume comment utiliser SSH – avec SFTP – pour le transfert de fichiers sur le serveur. Ainsi j’évite de mettre un serveur FTP, protocole critiqué pour sa sécurité.

Update Sept 2012 : Depuis la rédaction de ce post il existe un plugin qui fait le boulot en deux clics : http://wordpress.org/extend/plugins/ssh-sftp-updater-support/installation/. Cela ne vous dispense pas de créer vos clés SSH avec ssh-keygen mais tout le reste – y compris les install d’extensions php osnt inutiles ! 

Mais problème, pour mettre à jour les thèmes et les extensions WordPress demande un accès FTP. Le SSH n’est pas disponible par défaut. Je me doutais bien que je n’étais pas le premier à me confronter au sujet, j’ai donc cherché un peu sur la toile et je suis tombé sur des tutos plus ou moins complets, plus ou moins en français. Je vais donc noté tout ça ici et le garder au chaud dans ma base de données, autant pour vous que pour moi !

Alors dans un premier temps on installe, si ce n’est pas déjà fait, les librairies SSH :

sudo apt-get install libssh2-1-dev libssh2-1 libssh2-php

Ensuite les libs PHP5 :

sudo apt-get install php-pear php5-dev

Une fois que tout est installé on va chercher SSH2 via pecl :

sudo pecl install channel://pecl.php.net/ssh2-0.11.3

NB: Ceci est la version beta, pour la version classique un sudo pecl install ssh2 devrait suffire, mais pour Ubuntu 10.04.3 j’ai du utilisé la beta…

Une fois que SSH2 est installé on crée  /etc/php5/conf.d/ssh2.ini avec sudo touch /etc/php5/conf.d/ssh2.ini Et on y place le code suivant :

extension=ssh2.so

On redémarre Apache ( sudo /etc/init.d/apache2 restart) . Voilà pour la config serveur. Reste a configurer WordPress !

On commence par crée des clés SSH pour que WordPress puisse se logger :

ssh-keygen

Vous devriez avoir un truc du genre :

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Created directory ‘/home/user/.ssh’.
Enter passphrase (empty for no passphrase): (le mot de passe n’est pas indispensable, il suffit de taper Entrée)
Enter same passphrase again: (même chose)
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is: blablablab

Une fois les clés SSH crées on copie la clé publique en “authorized_keys” et on modifie les permissions des dossiers :

cd ssh
cp id_rsa.pub authorized_keys
cd
chmod 755 .ssh

Et voilà :) Cela suffit, seul problème avec cette config WordPress va vous demandé à chaque fois vos identifiants, pass, et chemin de clés SSH. Pour y remédier c’est assez simple, il faut éditer le fichier wp-config.php qui se trouve à la racine de votre installation wordpress et d‘ajouter les lignes suivantes :

define('FTP_PUBKEY','/home/user/.ssh/id_rsa.pub');
define('FTP_PRIKEY','/home/user/.ssh/id_rsa');
define('FTP_USER','user');
define('FTP_PASS','');
define('FTP_HOST','monserveur.com');

Normalement pus besoin de renseigner ces id/pass/keys à chaque fois ! Bye bye le vilain protocole FTP :)

[Tuto] Enlever les notifications de mise à jour de WordPress sans plugin

WordPress est un outil formidable qui évolue très vite porté par une communauté très active. Pour un usage personnel c’est formidable, les failles de sécurité sont comblées très vite et l’outil s’améliore de jours en jours.

Pour un usage professionnel c’est parfois plus compliqué, difficile de mettre à jour le site de tous vos clients à chaque nouvelle release. Cela depend du contrat de maintenance que vous avez conclu avec lui, de sa/votre disponibilité etc…

Le problème c’est que le client qui voit la fameuse bannière jaune à tendance à paniquer. J’ai donc cherché sur le web comment faire pour désactiver ces notifications, sans plugin.

J’ai trouvé la solution sur ce site internet : http://truffo.fr...

C’est vraiment très simple :

Ouvrez ou créez un fichier function.php dans l’arborescence du thème.

Dans ce fichier on ajoute :

fonction sfx_null() {
  return null;
}

Ensuite, suivant vos besoins :

Pour supprimer les notifications du core, pour les mise à jour de versions :

add_filter( 'pre_site_transient_update_core', 'sfx_null' );

Pour supprimer les mise à jour de votre thème :

remove_action( 'load-update-core.php', 'wp_update_themes' );
add_filter( 'pre_site_transient_update_themes', 'sfx_null' );

Pour masquer les mise à jour de vos plugins :

remove_action( 'load-update-core.php', 'wp_update_plugins' );
add_filter( 'pre_site_transient_update_plugins', 'sfx_null');

Bon, évidemment, WordPress est aussi fiable et intéressant justement parce qu’il est mis à jour régulièrement. Il faudra donc mettre à jour vos sites le plus souvent possible…

Older posts

© 2016 AngeZanetti.com

Theme by Anders NorenUp ↑