Application android pour les horaires de tram/bus grenoblois (Tag/SemiTag)

21 mai 2011 par Gaëtan 2 commentaires »

Plop à tous …

Alors voilà … hier j’avais cours de Java, et comme l’ennui c’est fait sentir, j’ai décidé de créer un « clone » de mon application pour les horaires des transports strasbourgeois en un peu plus propre (côté code), mais toujours aussi simpliste (faudrait voir pour utiliser des threads pour le système de recherche, une barre de chargement, une widget configurable, … mais en 8 heures j’ai pas eu le temps ^^).
» En lire plus:Application android pour les horaires de tram/bus grenoblois (Tag/SemiTag)

Ossec et stats sur munin

16 mai 2011 par Gaëtan Pas de commentaires »

Plop à tous …
Encore un article sur Ossec … avec cette fois-ci quelques exemples de statistiques à afficher avec munin. Les scripts sont extrêmement simple à modifier pour chercher des infos spécifique à certaines exploitations propres à une infrastructure données (web, mails, …).

Le but de l’article est de présenter rapidement comment créer des graphes sur munin en bash
» En lire plus:Ossec et stats sur munin

Notification Ossec sur Twitter en perl

22 avril 2011 par Gaëtan Pas de commentaires »

Aujourd’hui,

du twitter et de l’ossec, comme je le disais dans mon précédent article sur les notifications d’ossec, l’utilisation de twitter pour les notification ne fonctionne plus, car depuis aout 2010, les authentifications http ne fonctionnent plus, et il faut passer par le système Oauth, qui permet de ne plus avoir à stocker ses mots de passe dans chaque application utilisant le service, et de pouvoir désactiver les accès depuis le site de twitter.
» En lire plus:Notification Ossec sur Twitter en perl

Alerte d’ossec en notification sur le bureau

21 avril 2011 par Gaëtan Pas de commentaires »

Aujourd’hui,

Encore un script useless, fait pour passer le temps en cours …

Le but étant d’avoir un IDS ossec sur l’ordi local configuré pour détecter et répondre plus ou moins comme il faut aux attaques basiques et SURTOUT rendre compte à l’utilisateur des problèmes rencontrés de façon orienté ‘desktop’.

A l’heure actuelle seul deux systèmes de notifications (officiels) de l’utilisateur existent sur ossec : soit une notification par mail, soit par twitter (qui ne fonctionne plus).
» En lire plus:Alerte d’ossec en notification sur le bureau

Améliorer les performances d’apache avec nginx

15 avril 2011 par Gaëtan 2 commentaires »

Plop à tous …

Comme vous l’aurez surement remarqué, la quasi-totalité de mes derniers articles sont tirés d’expériences (plutôt foireuses) me poussant souvent à remettre en questions certaines notions que je pensais acquises … cet article n’y couperas pas :s.

Après avoir vénéré les serveurs apache pendant 7 ans, j’ai eu récemment à m’asseoir sur mes convictions et à installer nginx pour avoir des performances convenable …
» En lire plus:Améliorer les performances d’apache avec nginx

Connecter un réseau de machines virtuelles sur un réseau local

13 avril 2011 par Gaëtan Pas de commentaires »

Plop à tous …

Les tutos concernant les interconnexions entre réseaux virtuelles et réseaux locaux sont légions sur internet, mais leur propretés pour le réseau ou leur flexibilité laissent souvent à désirer (entre les techniques foireuse à coup de nat iptables, les rejeux arp via parprouted et j’en passe).
» En lire plus:Connecter un réseau de machines virtuelles sur un réseau local

DDoS le retour … à 5gb/s :s

8 avril 2011 par Gaëtan 2 commentaires »

Plop à tous

Suite à mes articles sur la protection DDoS (soft et hard en logiciel …), le serveur que je protegeais (minefield) à subit d’autres attaques DDoS de plus en plus forte … jusqu’à il y a peu une attaque à 5gb/s qui à finalement provoquée la fermeture du serveur par l’hébergeur.
» En lire plus:DDoS le retour … à 5gb/s :s

Pourrir des votes avec bash et wget

23 mars 2011 par Gaëtan 2 commentaires »

plop à tous … encore un script super useless (comme d’hab).

L’utilité du script est de bourriner une url de vote pour plomber ou augmenter des stats (le site avait une vérification par ip, donc il fallait utiliser des proxy).
Connaissant samair.ru(mon fournisseur de proxy), mon script ne fonctionnera qu’une semaine ou deux, mais comme je fait appel à pas mal de trucs intéressant dans ce script, je le partage, donc c’est juste informationnel et non pas fonctionnel.

Je rappel que l’utilisation de mon script n’engage que vous … vous êtes seul responsable en cas d’effet de bord, ou de dégâts causé par l’utilisation de se script … (j’ai quand même mis un sleep histoire de ne pas trop surcharger le serveur …).

» En lire plus:Pourrir des votes avec bash et wget

SSL via GNUTLS sur apache2

12 mars 2011 par Gaëtan 4 commentaires »

Plop à tous …

Aujourd’hui j’ai joué a « qui a la plus grosse » config ssl et c’est là que j’ai remarqué que le mod_ssl d’apache ne supportait que les protocoles SSLv3 et TLSv1.0 (le TLSv1.1 est en cours de dev) ce qui donnait un score pitoyable à mon blog sur ssllabs (qui permet d’avoir une idée du niveau de sécurité de l’implémentation ssl/tls d’un serveur web).


(Au passage certaine banques françaises en sont encore au niveau F, donc c’était déjà pas trop mal pour un blog ^^).

» En lire plus:SSL via GNUTLS sur apache2

Protection Ddos (soft)

9 mars 2011 par Gaëtan 1 commentaire »

Plop …

un petit retour sur le Ddos de ce week-end … conformément aux prédictions de certains concernant mon précédent article, un ban permanent n’est généralement pas une bonne idée, notemment lorsque les paquets sont forgés :

  • ça remplit inutilement les règles du firewall (la dernière attaque avait finit avec 600 lignes de DROP, ce qui rend difficile la lecture des règles mise en place)
  • en cas de ban d’un « client/joueur », il est banni à vie
  • il y a un risque si l’attaquant connait l’ip de l’admin et la fait bannir en floodant avec son ip

Donc on m’a filé une autre commande, plus courte et aussi performante, sans remplir inutilement les règles iptables :
(il faut supprimer l’espace entre les deux – - dans les commandes suivantes, wordpress les transforme en un seul -)

  1. /sbin/iptables -A INPUT -p tcp – -dport 25565 -m state – -state NEW -m recent – -set
  2. /sbin/iptables -A INPUT -p tcp – -dport 25565 -m state – -state NEW -m recent – -update – -seconds 60 – -hitcount 5 -j DROP

Ici, on surveille tout les nouveaux paquets sur le port 25565 et si la même ip renvoit de nouveaux paquets on incremente un compteur, si celui-ci atteint le hitcount (ici 5) dans les 60 secondes, on drop les paquets.

Si le visiteur lambda se fait drop, il devra juste attendre la fin de l’intervalle depuis son dernier paquet envoyé (ici 60 secondes à chaque fois),

Si c’est une attaque dos, il ne pourra envoyer que 5 nouveaux paquets par minutes, réduisant de ce fait la puissance de son attaque (si à chaque syn envoyé une nouvelle ip est forgée, cette protection ne servira à rien … et mon ban permanent aussi d’ailleurs ;) ).

Et maintenant que la machine est « protégée » (c’est relatif hein ;) ), il faut tester la sécurité ^^, on flood donc notre machine en envoyant des paquets SYN (avec scapy) sur le port du service que nous avons protégé.

On crée donc un fichier avec ce contenu en changeant les valeurs des ip, la valeur du loop et le port (derrière une NAT ça remplace l’ip source par votre adresse ip) :

  1. #!/usr/bin/python
  2. from scapy.all import *
  3. send(IP(src=RandIP("0.0.0.0/0"),dst="ipserv")/TCP(sport=1337,dport=port du service,flags="S"),loop=5,inter=0.01)

Pour vérifier que les paquets sont drop, on fait un tcpdump sur le port en question et on compte le nombre de paquets provenant du port 1337.

  1. tcpdump dst port 80 and src port 1337

(Si la règle en interdit plus de 5 et qu’on reçoit les 10 y’a un problème) ou l’on check les stats d’iptables via

  1. iptables -L -v -n

Par contre, on peut s’amuser avec scapy à randomiser les ip (à faire sur des machines non natées) et tenter de flooder le service sans se faire drop un seul paquet :

  1. #!/usr/bin/python
  2. from scapy.all import *
  3. sendp(Ether(src=RandMAC('*:*:*:*:*:*'),dst="port mac passerelle")/IP(src=RandIP("0.0.0.0/0"),dst="ip serveur")/TCP(sport=RandShort(),dport=port du service,flags="S"),loop=100,inter=0.01)

Et là on se rend compte que l’on peut facilement contourner la règle iptables précédente, et qu’il devient important de mettre en place une règle globale pour toute les ip sur un service en particulier.

Donc pour mettre en place une limite globale par exemple sur le port 80 qui peut traiter au max 1000 connexions en parallèle (en imaginant qu’une requête est traitée en 1 seconde (téléchargement d’une page web en générale) ce qui n’est pas forcément vrai pour tout les services, donc on laisse au mimimum 10% du nombres des connexions pour les connexions en cours) ce qui donne :

  1. iptables -A INPUT -p tcp – -syn – -dport 80 -m limit – -limit 900/s -j ACCEPT

Et si l’on rebalance un SYN flood avec le script précédent, en lançant plus de 1000 syn en parallele, seul une partie d’entre eux devrait passer.

Ce système permet surtout de protéger les services derrière le firewall en cas d’attaque permettant de passer les règles présentées jusque là.