Deblan blog

Tag #Sécurité

[TIPS] Postfix - Blacklister des emails

Si vous hébergez vos emails, l'arrivée massives de SPAM sera est très vite une réalité.

J'utilise plusieurs outils pour filtrer la majorité des mails indésirables :

  • système de greylist
  • SpamAssassin
  • Test SPF

Malgré tout ce n'est pas suffisant et j'ai décidé de blacklister manuellement une série d'emails, domaines et même un tld. Postfix permet de gérer ça très facilement. Il faut éditer /etc/postfix/main.cf et ajouter ces lignes :

smtpd_sender_restrictions =
    reject_unknown_sender_domain
    check_sender_access hash:/etc/postfix/sender_access regexp:/etc/postfix/sender_access_regexp

Il s'agit maintenant d'alimenter /etc/postfix/sender_access et /etc/postfix/sender_access_regexp. Voici un contenu type pour les 2 fichiers :

# /etc/postfix/sender_access
waukyne.com REJECT
welcome.aexp.com REJECT
womenstrapparfum.com REJECT
yourluxuryguide.com REJECT
zichoster.com REJECT
boyduj.com REJECT
asseight.com REJECT
mail184.wdc02.mcdlv.net REJECT

# /etc/postfix/sender_access_regexp
/\.biz$/ REJECT

Quand vous modifiez l'un des fichiers, il est nécessaire d'utiliser postmap :

# postmap /etc/postfix/sender_access
# service postfix reload

Il est maintenant rapide et simple de blacklister efficacement des expéditeurs.

Si des gens sont intéressés par mes listes, voici mes 2 configurations actuelles :


Attaque DDOS sur Facebook

Une vidéo qui illustre l'attaque qui a mis le réseau en vrac pendant plusieurs dizaines de minutes . Les mecs ont une sacrée puissance de feu !


Chiffrement des données sur le Wall

Une mise à jour majeure a été déployée sur le colorisateur de code. En effet, il est maintenant possible de chiffrer les sources que vous envoyez.

J'ai choisi d'utiliser l’algorithme AES avec une clé de 256-bit et une passphrase de 256 caractères.

La clé est placée dans l'URL via une ancre. Coté serveur, je n'enregistre que le message chiffré. Le chiffrage (comme le déchiffrage) est fait par votre navigateur uniquement.

Voici un code chiffré sans clé : https://wall.deblan.org/x1a29/texte/0/, et le lien complet pour le lire correctement : https://wall.deblan.org/x1a29/texte/0/#aes=pmCMT59...

Je rappel que le Wall est un projet libre et que vous avez la possibilité de le forker :

$ git clone git://git.deblan.org/wall-deblan.git

[Retour] Contrer des robots stupides sans captcha

C'est un post rapide qui va permettre de faire un retour sur la solution pour contrer les robots sans utiliser de captcha.

Pour rappel, le concept est simple : on place dans l'action du formulaire un mot clé qui invalide sa soumission. Ce mot clé est supprimé quand l'utilisateur déplace sa souris dans la page qui contient ce formulaire. Cette méthode admet que l'utilisateur a activé le Javascript sur son navigateur.

Après quelques mois d'utilisation, que peut-on en conclure ? Cette méthode fonctionne du feu de dieu ! Je suis passé à coté de plus de 50 milles commentaires indésirables. La crainte que j'avais se portait sur les supports mobiles : finalement, aucune inquiétude, ça fonctionne très bien sur les smartphones et les tablettes.

J'ai implanté cette solution sur un blog Wordpress et ça fonctionne très bien également...À croire que les développeurs de robots sont des manches.

Évidement, tout développement spécifique de robot va contrer cette sécurité, mais c'est assez rare finalement.

Sécurité informatique


Détection de scan serveur

Scanner un serveur permet de découvrir quels ports sont ouverts. Potentiellement, ça permet également découvrir quels services et logiciels sont utilisés sur la machine.

L'objectif d'un scan n'est pas nécessairement de faire du mal mais c'est souvent le prémice d'une ou plusieurs attaques.

Dans cet article, je vais vous expliquez très rapidement comment détecter un scan pour ensuite vous prévenir. Dans l'exemple ci-dessous, je décide de ne pas bannir l'ip associée au scan : ça serait trop bourrin et il est préférable de faire du cas par cas.

Dans un premier temps, nous allons installer portsentry, un daemon qui est dédié à la détection de scans. Sur Debian, il suffira d'utiliser le gestionnaire de paquets :

# aptitude update && aptitude install portsentry

Voyons à présent comment configurer (rapidement) l'outil.

Le fichier de configuration est /etc/portsentry/portsentry.conf. Nous allons l'éditer et modifier les variables suivantes : ADVANCED_PORTS_TCP et ADVANCED_PORTS_UDP. Dans chacune d'elles, il faudra indiquer les ports ouverts et accessibles de votre serveur. Admettons que vous avez un serveur SSH, un serveur Web et un serveur FTP :

ADVANCED_PORTS_TCP="21,22,80,443"
ADVANCED_PORTS_UDP="21,22,80,443"

Maintenant, éditons le fichier /etc/default/portsentry. Remplacez "tcp" et "udp" par "atcp" et "audp" de manière à avoir cette config (c'est plus efficace) :

TCP_MODE="atcp"
UDP_MODE="audp"

Nous allons de nouveau éditer /etc/portsentry/portsentry.conf pour s'assurer qu'aucun bann n'est fait suite à une détection. Recherchez dans le fichier ces variables et placez leur valeur à "2" : BLOCK_UDP et BLOCK_TCP.

BLOCK_UDP="2"
BLOCK_TCP="2

Cette configuration permet de déléguer à un script externe les tâches à effectuer pendant la détection.

Nous allons écrire un script qui va envoyer un mail avec les informations suivante : l'IP initiatrice du scan, le port scanné et le mode de scan (atcp ou audp).

Si vous n'avez pas de serveur SMTP, installez postfix :

# aptitude install postfix
# echo "votre.notre.de.domaine" > /etc/mailname
# service postfix restart

Voici un script simple que je vous invite à améliorer :

# mkdir ~/bin/ && touch ~/bin/scan_report && chmod u+x ~/bin/scan_report
#!/bin/sh

MAIL=vous@example.com
SUJET="[IMPORTANT] Scan détecté"


IP="$1"
PORT="$2"
TYPE="$3"

(
	echo "Scan détecté :"
	echo "---------------------------------------"
	echo "IP   : $IP"
	echo "PORT : $PORT"
	echo "TYPE : $TYPE"
	echo "---------------------------------------"
) | mail -s "$SUJET" "$MAIL"

Indiquons à portsentry d'éxécuter ce script. Éditez de nouveau /etc/portsentry/portsentry.conf puis recherchez la chaine $TARGET$. Placez à cette endroit du fichier cette ligne (un exemple est commenté) :

KILL_RUN_CMD="/root/bin/scan_report $TARGET$ $PORT$ $MODE$"

Vous pourrez modifier la valeur de SCAN_TRIGGER et placer un niveau d'alerte. Par défaut c'est "0" : la réaction est immédiate. De mon coté je l'ai laissé à "0" et je la changerai si ça me pose des problèmes.

La configuration effectuée, vous pouvez maintenant relancer portsentry de cette manière :

# service portsentry restart

En cas de détection de scan, des logs sont générés dans /var/log/syslog. Pour les retrouver, utilisez le mot clé "attackalert" comme suit :

# grep attackalert /var/log/syslog

En principe on est tout bon :)