Blog geekesque... ou presque

Aller au contenu | Aller au menu | Aller à la recherche

samedi 25 juin 2016

fail2ban pour lutter contre les injections SQL

Si vous ne connaissez pas fail2ban, c'est un excellent utilitaire pour protéger vos serveurs des différentes attaques.

Il fonctionne à partir de filtres (des expressions régulières) qui sont appliqués aux fichiers logs et appliquer des sanctions aux petits malins qui tenteraient d'exploiter des failles.

Il existe beaucoup de filtres officiels contre les attaques les plus courantes, mais pas contre les tentatives d'injections SQL. Heureusement, TrogloGeek a créé un filtre, que j'ai un peu modifié pour le rendre plus fonctionnel et utilisable avec Apache et Nginx

# Fail2Ban configuration file
#
# Author: TrogloGeek (Damien VERON)
#
# $Revision: 1 $
#
 
[Definition]
sqlfragments_generic = select.*from|delete.*from|update.*set|insert.*into|replace.*(value|set)
sqlfragments_havij = and(\+|%%20)ascii%%28substring|and(\+|%%20)Length|union(\+|%%20)all(\+|%%20)select|and(\+|%%20)1%%3C1|and(\+|%%20)1%%3D1|and(\+|%%20)1%%3E1|and(\+|%%20)%%27.%%27%%3D%%27|%%2F\*%%21[0-9]+((\+|%%20)[0-9]*)?\*%%2F
 
# Option:  failregex
# Notes.:  Regex to try to detect SQL injection trials
# Values:  TEXT
#
failregex = (?i)<HOST> -.*"(GET|POST).*(?:%(sqlfragments_generic)s|%(sqlfragments_havij)s)[^"]*HTTP[^"]*".*
 
# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

Dans la partie Definition, vous trouvez les bouts de SQL les plus communs utilisés pour une tentative d'injection, séparés en deux parties: les génériques (requêtes de bases) et ceux qui sont clairement des signatures de tentatives de hack.

L'expression régulière est plus ou moins celle de base pour les logs apache et nginx, notez tout de même la présence de (?i) au début qui la rend insensible à la casse.

lundi 18 avril 2011

Réveiller un NAS

Si vous êtes l'heureux possesseur d'un NAS, vous appréciez très certainement son économie d'énergie et le fait qu'il se mette "à l'arrêt" lorsqu'il n'est pas sollicité depuis un certain temps.

Enfin, ceci est de la théorie parce qu'en pratique, si vous êtes plutôt Linux que MacOS ou Windows, il va falloir chercher un peu. J'ai moi-même cherché et j'ai trouvé sur un forum une contribution de themadmax.

Je me permet donc de traduire (et expliquer) la contribution.

Lire la suite...

jeudi 22 juillet 2010

Transformer des sources en paquets

Le gros problème lorsqu'on installe une application sous linux depuis les sources, donc qui n'est pas sous la forme de paquets gérables simplement, c'est qu'il est très difficile de la désinstaller complètement.

Heureusement, un utilitaire permet de créer un paquet (rpm, slackware, debian) qui permettra de dé/ré-installer facilement votre application, il s'agit de checkinstall.

L'utilisation est très simple: il faut bien sûr avoir installé checkinstall, qui est disponible sur la plupart des sources linux, et prendre les bonnes habitudes lors de l'installation. Voici ce que cela donnerait avec le logiciel dummy:

# Example sous debian
~$ tar xvfz dummy.tgz
~$ cd dummy
~$ ./configure
~$ make
~$ checkinstall make install
~$ dpkg -i dummy.deb
 
# Suppression
~$ dpkg -r dummy

Comme indiqué dans le manpage, vous pouvez forcer le type de paquet à utiliser ainsi que d'autres options.

dimanche 21 mars 2010

Créer et modifier des compte unix avec un script

Il arrive parfois que l'on ait besoin d'un script pour créer ou modifier des utilisateurs unix de manière automatique.

Je me suis penché sur ce problème pour des raisons de sécurité: une interface web devait permettre de créer des comptes sur le serveur, mais en aucun cas je ne voulais que les pages, potentiellement accessibles à tout le monde, n'aient la possibilité d'exécuter des commandes systèmes, surtout pas en tant que root.

Lire la suite...

lundi 14 décembre 2009

Find pour supprimer les vieux fichiers

Nous avions évoqué sur ce billet l'utilisation de find pour faire des opérations sur une arborescence.

Une autre utilisation pratique des filtres de find est de pouvoir faire une recherche en se basant sur la date de modification des fichiers, ce qui permet par exemple de supprimer les fichiers périmés.

Par exemple, pour supprimer les fichiers de plus de 60 jours:

find /home/vous/logs -type f -ctime +60 -exec rm -rf {} \;

mardi 1 décembre 2009

Comment changer un mot de passe Mysql oublié

Copie du billet Comment changer un mot de passe Mysql oublié de Johann Denoyer

Ca peut arriver d'oublier le mot de passe root de mysql, ou reprendre en main un serveur d'un ancien administrateur ayant quitté l'entreprise un peut rapidement. Donc je vous présente ici comment changer le mot de passe root d'un serveur mysql.

Lire la suite...

vendredi 26 juin 2009

Limitation de l'accès SSH

Parfois, lors d'une mise à jours d'un serveur par exemple, il peut être intéressans de limiter l'accès SSH au seul utilisateur root. Pour faire cela, c'est très simple: il suffit de mettre la raison dans un fichier /etc/nologin et les autres utilisateurs se verront refuser l'accès, avec comme raison le contenu du fichier.

Pour ré-autoriser l'accès, supprimez le fichier.

Bloquer les attaques "brute force" avec iptables

Iptables est l'interface en ligne de commande permettant de configurer Netfilter, qui est un module du noyau Linux qui offre la possibilité de contrôler, modifier et filtrer les paquets IP, et de suivre les connexions. Il fournit ainsi les fonctions de pare-feu, de partage de connexions internet et d'autorisation du trafic réseau.

Il est possible de configurer iptables pour automatiquement bloquer les adresses IP qui feraient trop de tentatives d'accès à votre serveur, un peu à la manière de fail2ban mais sans installer de module complémentaire.

Lire la suite...

jeudi 12 février 2009

find - Gestion récursive des droits

Il arrive souvent que l'on veuille modifier récursivement les droits des répertoires, mais pas ceux des fichiers. Dans ce cas là, la commande:

chmod -R 755 repertoire/

ne sera pas utilisable.

Heureusement, la commande find permet de filtrer par type de fichier (un répertoire n'est en fait qu'un fichier particulier).
Pour ce faire:

# passer les répertoires en 755
find ./ -type d -exec chmod 755 '{}' \;
# passer les fichiers en 644
find ./ -type f -exec chmod 644 '{}' \;

N'hésitez pas à lire le manuel de find, cet utilitaire est très puissant et je l'ai vu fonctionner pour juste lister un répertoire là où ls échouait.