Protection contre le hotlinking avec Varnish

Voici un exemple de condition à ajouter dans votre vcl recv pour protéger un dossier d’un site :

if (req.http.host == "le.domaine.a.proteger.ltd" && req.url ~ "^/l/uri/a/proteger" && (req.http.referer && req.http.referer !~ "^http://le.domaine.a.proteger.ltd/")) {
    error 403 "No hotlinking please";
}

Remplacer :

  • le.domaine.a.proteger.ltd par le domaine (attention si votre site est accessible avec et sans www)
  • /l/uri/a/proteger : par l’uri à protéger, supprimer cette partie si vous voulez protéger l’intégralité du site

Pour mettre en place le même type de protection via apache, voir cet article : Un htaccess pour les pompeurs de sites dans lequel est expliqué comment procéder avec des règles de réécriture Apache

FreeBSD 10.0 sur une Raspberry Pi rev. B

Voici comment “bsdifier” votre Raspberry :

  1. Téléchargez l’image : FreeBSD-10.0-STABLE-arm-armv6-RPI-B-20140127-r261200.img.bz2 ou plus récente sur un miroir FreeBSD
  2. Copier l’image sur votre SD avec dd : bunzip2 -c FreeBSD-10.0-STABLE-arm-armv6-RPI-B-20140127-r261200.img.bz2 | dd of=/dev/votresd bs=1M
  3. Une fois la BSD en ligne :
    1. SSH sera lancé
    2. Le compte root n’as pas de mot de passe (vous ne pourrez pas vous y connecter en ssh sans changer le mot de passe)
    3. Le clavier est en qwerty
    4. L’interface réseau est en DHCP

Si vous voulez faire l’image vous même, voici un article (en anglais) qui explique comment procéder et comment compiler le kernel : Creating a custom FreeBSD build for Raspberry Pi

Visualizer Spotify

Si il y a bien une Feature qui manquait a Spotify, c’est celle ci, avoir un visualizer intégré.

Il existe et fonctionne pour Mac, Linux et Windows :

/images/spotify-visualizer.png

Spotify visualizer

L’annonce a été faite le 14 novembre sur leur blog et cela n’est pas fait a moitié car, le code source et la documentation sont disponible : Code, Docs

Je n’ai pas l’impression qu’on puisse le mettre en plein écran :/

Connaitre son IP public via une requête DNS

Sous Linux

dig +short myip.opendns.com @resolver1.opendns.com

Vous pouvez vous faire un alias du type

monip="dig +short myip.opendns.com @resolver1.opendns.com"

Sous Windows

Dans une console (de mémoire):

nslookup
server resolver1.opendns.com
myip.opendns.com

Motion – envoyer les videos sur Google Drive

J’ai mit en place Motion sur ma Raspberry PI pour faire un système de vidéo surveillance qui enregistre une vidéo uniquement lorsqu’il y a un mouvement. Pour cela, j’ai installé Raspbian sur ma Raspberry PI puis le packet motion après avoir branché une webcam compatible en USB. Pour que le script fonctionne, vous devez installer ffmpeg et python-gdata. ffmpeg - Multimedia player, server, encoder and transcoder (transitional package) Je l’utilise pour ré-encoder l’avi généré python-gdata - Google Data Python client library Descriptions des fichiers utilisé /etc/motion/motion. [Lire]

Gérer la swap de ca Raspberry PI

Raspbian ne créé pas de partition pour la swap, dphys est utilisé pour générer un fichier.

  1. Définissez la taille du fichier de swap désiré dans le fichier /etc/dphys-swapfile
  2. (Re-)Générer le fichier avec la commande dphys-swapfile setup
  3. Désactiver votre swap si elle est active avec dphys-swapfile swapoff
  4. Puis réactiver la avec la nouvelle taille grâce à dphys-swapfile swapon

Debian/Ubuntu – Installer les mise à jour de sécurité

Le petit script ci-dessous vous installera uniquement les mise a jour de sécurités

Le script va générer un fichier de sourcelist avec uniquement le(s) depots de sécurité puis lancer une mise a jour a partir de celui ci.


TMP="/tmp/$$"
grep -rih security /etc/apt/sources.list* > $TMP
apt-get update
apt-get upgrade -oDir::Etc::Sourcelist=$TMP -s
rm $TMP

Offloading SSL avec Nginx

Configuration de base pour effectuer de l’offloading SSL avec Nginx.

Les header défini avec proxy_set_header pourront être utilisé au niveau du backend pour effectuer, par exemple, des redirection http vers https

server {
  listen   443 ssl; ## listen for ipv4
  server_name domaine.ltd;
  ssl                     on;
  ssl_prefer_server_ciphers on;
  ssl_protocols           SSLv3 TLSv1 TLSv1.1 TLSv1.2; #libssl > 1.0
  ssl_ciphers             RC4:HIGH:!MD5:!ADH:+DH; #HIGH:!ADH:!MD5:@STRENGTH;
  ssl_session_cache       shared:TLSSL:16m;
  ssl_session_timeout     10m;
  ssl_certificate         /etc/nginx/domaine.ltd.crt;
  ssl_certificate_key     /etc/nginx/domaine.ltd.key;

  location / {
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-By $server_addr:$server_port;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://backend;
  }

}

Article complémentaire : Redirection http vers https derrière un reverse proxy

Compte en ligne Ubuntu et Facebook

Depuis quelque temps, l’authentification a Facebook via la gestion des comptes en ligne d’Ubuntu ne fonctionne plus.

Lorsque vous voulez vous connecter, cela ouvre votre navigateur.

Pour corriger cela éditer le fichier /usr/share/accounts/providers/facebook.provider

  • rechercher la ligne <group name="user_agent">
  • ajouter après celle ci <setting name="AllowedSchemes" type="as">['https','http']</setting>

Purger les mails a destination d'un domaine

Le script perl ci-dessous s’utilise en mettant en paramètre le domaine pour lequel vous voulez purger les mails :

#!/usr/bin/perl

$REGEXP = shift || die "no email-adress given (regexp-style, e.g. bl.*\@yahoo.com)!";

@data = qx</usr/sbin/postqueue -p>;
for (@data) {
  if (/^(\w+)(\*|\!)?\s/) {
     $queue_id = $1;
  }
  if($queue_id) {
    if (/$REGEXP/i) {
      $Q{$queue_id} = 1;
      $queue_id = "";
    }
  }
}

#open(POSTSUPER,"|cat") || die "couldn't open postsuper" ;
open(POSTSUPER,"|postsuper -d -") || die "couldn't open postsuper" ;

foreach (keys %Q) {
  print POSTSUPER "$_\n";
};
close(POSTSUPER);