Archive pour le ‘Administration’ catégorie

Mise en place d’un CDN via Google App Engine

4 juillet 2010

Plop à tous ….

ça fait un certain temps déjà que j’essai de voir pour utiliser différents systèmes de cache de contenu pour alléger la charge de mon dédié (un RPS), après avoir testé plusieurs systèmes, j’ai opté pour le système de CDN CirruxCache, qui utilise le Google App Engine (et oui google est partout), le gros avantage du système c’est que c’est fournit par les serveurs de GG (donc super rapide et tout et tout) et écrit en python, ce qui m’a permis de faire une petite modif sympa pour spécifier un TTL spécifique sur le type de fichier.
» En lire plus:Mise en place d’un CDN via Google App Engine

Utiliser plusieurs certificats SSL sur un seul serveur apache

1 mai 2010

Plop à tous …

Le but de l’article du jour est d’utiliser plusieurs certificats SSL sur une même machine via le SNI (ce qui était impossible il y a quelques années de cela cf. wikipedia, le premier patch étant sorti en 2004, les premières implémentation sur les serveurs apache se sont fait sur la version 2.2.12 en Juillet 2009).
» En lire plus:Utiliser plusieurs certificats SSL sur un seul serveur apache

Nouvelle version de Prewikka sur debian testing

6 avril 2010

Plop à tous …

ça fait déjà depuis quelques temps que la version 1.0 de prewikka (le frontend python de l’IDS prelude) est présente dans les dépôts de testing, mais comme je viens seulement de faire la mise à jour … ^^. (Au passage, prelude a aussi été mise à jour ;) et OSSEC est passé en 2.4 le mois dernier … il était donc temps de mettre à jour l’architecture de mon système de sécurité).
» En lire plus:Nouvelle version de Prewikka sur debian testing

Mise en place d’un portknocking pour limiter les ports accessibles sur le net

13 février 2010

Hello …

Protéger des services non-public (type ssh) d’être accédés par n’importe qui ça peut être assez utile (pour éviter les connexions intempestives pour la prise d’information, tentative de login/bruteforce …), le tout sans avoir à déclarer d’ip, …

On peut utiliser pour cela du portknocking, le but étant de mettre en place une séquence de « toc toc qui est là » qui permettra ensuite d’ouvrir la porte, et si la séquence n’est pas bonne … ^^).
» En lire plus:Mise en place d’un portknocking pour limiter les ports accessibles sur le net

Limiter les droits d’un utilisateur sur Debian/Ubuntu (lshell)

11 février 2010

Plop à tous ….

Lorsque l’on doit partager/administrer une machine, on a souvent peur que les individus fassent de belles boulettes sur la machine en question (surtout si l’accès est partagé entre plusieurs utilisateurs).

Une technique consisterait à faire un chroot via SSH (si ça vous tente ^^ mais c’est super long).

Ou passer par un truc du genre dans /etc/ssh/sshd_config :

  1. Subsystem sftp internal-sftp
  2. Match user nomUser
  3.          ChrootDirectory /home/nomUser
  4.          X11Forwarding no
  5.          AllowTcpForwarding no
  6.          ForceCommand internal-sftp

Qui bloque la plupart des commandes et n’autorise que le sftp …

Pour les admins flemmards, il existe une solution : lshell, on peut choper un .deb sur le site et une fois installé, il n’y a pas grand chose à faire :

Modifier le fichier /etc/lshell.conf (assez facile à comprendre), avec des paramètres du genre :
Pour les commandes autorisées :

  1. allowed         : ['ls','echo','cd','ll','svn','vi','rm']

Pour kiker l’utilisateur après un certain nombre d’erreurs :

  1. warning_counter : 2

dans ce cas, après 2 erreurs, la connection SSH est coupée.

On peut chrooter un utilisateur :

  1. path            : ['/var/www/']

Pour obliger un utilisateur à utiliser ce shell, il y a 2 cas :
On modifie un utilisateur :

  1. usermod –shell /usr/bin/lshell nomUser

On créer un utilisateur

  1. adduser nomUser –shell /usr/bin/lshell nomUser

Et voilà … connectez vous avec un utilisateur « lshellé » (pour ma part chrooté et limité aux commandes « allowed » plus haut) :

  1. You are in a limited shell.
  2. Type '?' or 'help' to get the list of allowed commands
  3. kikoo:~$
  4. kikoo:~$ ls
  5. index.php  license.txt  robots.txt  svnup.php  system
  6. kikoo:~$ cat /etc/ssh/sshd_config
  7. *** forbidden path -> "/etc/ssh/sshd_config"
  8. *** You have 0 joker(s) left, before getting kicked out.
  9. This incident has been reported.
  10. kikoo:~$ svn up
  11. À la révision 12.
  12. kikoo:~$ echo "LOL"
  13. LOL
  14. kikoo:~$ echo "LOL" > /etc/ssh/sshd_config
  15. *** forbidden synthax -> "echo "LOL" > /etc/ssh/sshd_config"
  16. - Kicked out -
  17. Connection to 1.3.3.7 closed.

Voilà … bonne administration ;)

Mise en place d’iSCSI pour le partage de données

4 février 2010

plopinou …

Petit tuto rapide sur la mise en place d’un serveur et d’un client iSCSI sur linux … Alors c’est quoi l’iSCSI ?? c’est un peu comme un partage de disque en réseau du style SMB ou NFS … sauf que c’est plus rapide (c’était téléphoné ;) ). C’est du SCSI encapsulé sur IP pas de surcouche RPC (comme pour NFS).
» En lire plus:Mise en place d’iSCSI pour le partage de données

Monter un cluster avec kerrighed sur son réseau

19 décembre 2009

Plopinou … encore un article de type « retour d’expérience geek »
Temps : 2h (en compilant le tout avec un AMD 3000+)
Niveau : Noob (faut quand même savoir jouer à WoW le temps de la compil’ qui peut prendre 1 heures)

Le but de cette technique était de recycler quelques PC sur mon réseau et gagner en puissance de calcul avec de vieux AMD 3000+ avec 1Go de ram.
» En lire plus:Monter un cluster avec kerrighed sur son réseau

Virtualisation et tunnel : rajouter des PCs sur son réseau

24 novembre 2009

Plopinou à tous …

Petite astuce toute simple, pour créer des tunnels et ainsi permettre à ses PCs virtuel (VMWare/VirtualBox) de communiquer en direct sur son réseau (enfin lorsque l’on a pas assez d’interface physique disponible … tout le monde n’en a pas 100 ^^).

Sous debian/ubuntu il faut faire un sudo apt-get install bridge-utils

Copiez les lignes suivantes dans un script nommé « tunnel.sh » (ou ce que vous voulez) :

#!/bin/bash
  1. #
  2. #Usage : tunnel.sh
  3. #Create 1 bridge + 2 tap
  4. # ./tunnel.sh -d eth0 -n 0 -n 1
  5. #Remove bridge and 2 tap
  6. # ./tunnel.sh -s 0 -s 1 -r eth0
  7. createBridge() {
  8.  brctl addbr br0
  9.  brctl addif br0 $1
  10.  ifconfig $1 promisc
  11.  dhclient br0
  12. }
  13.  
  14. deleteBridge() {
  15.  ifconfig $1 -promisc
  16.  ifconfig br0 down
  17. }
  18.  
  19. createTunnel() {
  20.  openvpn –mktun –dev tap$1
  21.  ifconfig tap$1 up
  22.  brctl addif br0 tap$1
  23. }
  24.  
  25. deleteTunnel()
  26. {
  27.  ifconfig tap$1 down
  28.  brctl delif br0 tap$1
  29.  openvpn –rmtun –dev tap$1
  30. }
  31.  
  32. chmod 0666 /dev/net/tun
  33.  
  34. while getopts d:n:s:r: OPTION
  35. do
  36.  case $OPTION in
  37.   d)createBridge $OPTARG;;
  38.   n)createTunnel $OPTARG;;
  39.   s)deleteTunnel $OPTARG;;
  40.   r)deleteBridge $OPTARG;;
  41.  esac
  42. done

Avant de créer des tunnels, il faut créer un pont sur l’interface principal (eth0), ce qui donne :

sudo sh tunnel.sh -d eth0

Puis on peut créer plusieurs tunnels : tap0, tap1 et tap2 soit la commande suivante :

sudo sh tunnel.sh -n 0 -n 1 -n 2

On peut aussi vers les 2 à la suite (l’ordre est important … d’abord le pont ensuite les tunnels) :

sudo sh tunnel.sh -d eth0 -n 0 -n 1 -n 2

Ensuite, il suffit de choisir dans l’interface de configuration de réseau de Virtualbox/VMWare une connexion par pont/bridge :

tunnel

Pour détruire l’interface tap2 (après utilisation généralement … éteindre la machine virtuelle AVANT) :

sudo sh tunnel.sh -s 2

Pour enlever le bridge :

sudo sh tunnel.sh -r eth0

Et encore une fois … les deux à la fois ^^ (l’ordre est important … on détruit d’abord le tunnel avant d’éteindre le pont : d’où le -s d’abord, puis le -r ) :

sudo sh tunnel.sh -s 2 -r eth0

Et voilà c’est tout pour ce soir …

Utiliser Git pour gérer ses projets (mini mémo)

21 novembre 2009

Petit mémo pour la gestion de projets via GIT, un gestionnaire de version (comme SVN, mais en mieux ;) ).

Pour ma part, depuis que je suis passé à GIT, je ne me vois plus bosser sur un SVN ^^. Les principaux points positifs de l’utilisation de GIT par rapport à l’utilisation de SVN sont (pour moi) :

  • Le fait qu’un dossier peut contenir plusieurs autres projets sous gestionnaire de révision (assez difficile à maintenir en SVN)
  • Le commit local, qui permet de ne pas à avoir à tout envoyer au serveur dès que l’on fait de grosse modifications (et devoir faire un revert sur le serveur si c’est pas bon), et aussi la possibilité donc de dev sans connexion au net en profitant d’un gestionnaire de révision
  • Le système de mise en ligne simplifié des projets (pas d’architecture super lourde à déployer comme pour SVN avec les modules dav/svn).
  • Plein d’autre choses encore à venir ;)

» En lire plus:Utiliser Git pour gérer ses projets (mini mémo)

Automatiser la récupération et la compilation du kernel et de son patch GrSec

31 octobre 2009

Plop à tous…

Petit truc de geek … un script pour automatiser la récupération du dernier kernel stable depuis le site kernel.org puis le dernier patch grsecurity à appliquer sur le kernel en question (qui sort généralement un jour après la release du kernel).
Sur ubuntu, il faut tout d’abord installer le paquet kernel-package :

sudo apt-get install kernel-package

Puis récupérer le script suivant (nommé chez moi recupKernel.pl dans la commande qui suivra) :

  1. #!/usr/bin/perl
  2. require HTTP::Request;
  3. use LWP::UserAgent;
  4.  
  5. my $kernelUrl = recupKernel();
  6. my $kernelVersion = recupKernelVersion($kernelUrl);
  7. my $grsecUrl = recupGrSec($kernelVersion);
  8. my $grsecName = recupGrSecName($grsecUrl);
  9. if($kernelUrl && $grsecUrl)
  10. {
  11.  print "Url du dernier kernel stable : $kernelUrl\n";
  12.  print "Version du kernel : $kernelVersion\n";
  13.  print "Url du dernier patch GrSec stable : $grsecUrl\n";
  14.  print "Nom du Patch : $grsecName\n";
  15.  print "Recuperation du kernel : \n";
  16.  my $rK = `wget $kernelUrl`;
  17.  
  18.  print "Recuperation du patch : \n";
  19.  my $rG = `wget $grsecUrl`;
  20.  print "Extraction des données et compilation\n";
  21.  my $dT = `tar -xjf *.tar.bz2 && patch -p0 > $grsecName`;
  22. }
  23.  
  24. sub recupKernel
  25. {
  26.  my $req = HTTP::Request->new(GET => "http://kernel.org/");
  27.  my $ua = LWP::UserAgent->new;
  28.  $ua->agent("Firefox/4.0");
  29.  my $res = $ua->request($req);
  30.  if ($res->is_success) {
  31.   my $text = $res->content;
  32.   my $recherche = '<table id="brbtable([\n\t\r\W\w]*?)</table>';
  33.   $text =~ m/($recherche)/gm;
  34.   return recupHrefUrl($2);
  35.  }
  36.  return '';
  37. }
  38. sub recupHrefUrl
  39. {
  40.  my $ret=$_[0];
  41.  my $recherche = 'href="([^"]*)';
  42.  $ret =~ m/($recherche)/gm;
  43.  return $2;
  44. }
  45.  
  46. sub recupKernelVersion
  47. {
  48.  my $ret=$_[0];
  49.  my $recherche = 'linux-([0-9]+.[0-9]+.[0-9]+.[0-9]+)';
  50.  $ret =~ m/($recherche)/gm;
  51.  return $2;
  52. }
  53.  
  54. sub recupGrSecName
  55. {
  56.  my $ret=$_[0];
  57.  my $recherche = '/(grsecurity.*.patch)';
  58.  $ret =~ m/($recherche)/gm;
  59.  return $2;
  60. }
  61.  
  62. sub recupGrSec
  63. {
  64.  my $kernelV = $_[0];
  65.  my $req = HTTP::Request->new(GET => "http://www.grsecurity.net/test.php");
  66.  my $ua = LWP::UserAgent->new;
  67.  $ua->agent("Firefox/4.0");
  68.  my $res = $ua->request($req);
  69.  if ($res->is_success) {
  70.   my $text = $res->content;
  71.   my $recherche = "href=\"(test/grsecurity-[.0-9]+-$kernelV-[0-9]+.patch)\"";
  72.   $text =~ m/($recherche)/gm;
  73.   return "http://www.grsecurity.net/$2";
  74.  }
  75.  return '';
  76. }

Il suffit ensuite d’executer la commande suivante :

  1. perl recupKernel.pl && cd linux-* && make menuconfig && make-kpkg clean && make-kpkg –initrd –append-to-version "LoupZeur-grsec" kernel_image

Ce qui générera un fichier .deb qu’il faudra installer par un bon vieux dpkg -i.

PS: Lors de l’execution de la commande make menuconfig, une fenetre « bleu » apparaitra, il faudra selectionner la menu « security », puis grsecurity et choisir le niveau de sécurité « HIGH ».

PS2: Il faut aussi bien entendu selectionner ou deselectionner tout les modules inutiles (genre usb, support agp et … ).