Raid avec mdadm sur des disques de 3TB

Adminstration Server Linux, Debian No Comments »

Pour pouvoir utiliser l’entièreté des disques de plus de 2TB, il convient d’utiliser GPT à la place de MBR, exit donc la commande FDISK.

Préparation des disques

Pour se faire, il faut installer parted

aptitude update && aptitude safe-upgrade
aptitude install gptsync parted mdadm

On crée ensuite la table de partition GPT et la partition de 3TB sur les deux disques

parted /dev/sdb
	mklabel gpt
	mkpart primary 0 3001G
	quit
parted /dev/sdc
	mklabel gpt
	mkpart primary 0 3001G
	quit

On vérifie avec la commande :

parted -l
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      17,4kB  3001GB  3001GB               primary

Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdc: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      17,4kB  3001GB  3001GB               primary

Mdadm

On crée maintenant le raid, dans notre cas on crée un RAID 1 avec les partitions sdb1 et sdc1

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

On format le la partition raid1 en ext4

mkfs.ext4 /dev/md0

Et on vérifie l’état du RAID1

mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Mon May 30 16:33:52 2011
     Raid Level : raid1
     Array Size : 2930265390 (2794.52 GiB 3000.59 GB)
  Used Dev Size : 2930265390 (2794.52 GiB 3000.59 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Mon May 30 16:34:53 2011
          State : active, resyncing
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

 Rebuild Status : 3% complete

           Name : srv-backup:0  (local to host srv-backup)
           UUID : b146a57a:fc7a409e:0627b7be:56ba0476
         Events : 1

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1

Pour voir l’avancement du resync de la grappe

watch cat /proc/mdstat
Every 2,0s: cat /proc/mdstat                                 Mon May 30 17:17:46 2011

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md0 : active raid1 sdc1[1] sdb1[0]
      2930265390 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  3.9% (115722880/2930265390) finish=781.2min
speed=60042K/sec

unused devices: 

Utiliser un partage SMB avec Samba et des permissions Active Directory

Adminstration Server Linux, Adminstration Server Windows, Debian, Sécurité No Comments »

Avec ce mémo, vous allez mettre en place un partage SMB à l’aide de Samba tout en utilisant authentification et les permissions de votre domaine Active Directory
Le serveur Samba tourne sur Debian 6.0 et le DC sur Windows Server 2008 R2

Installation des paquets

Avant d’installer assurez-vous d’avoir un serveur à jour

aptitude update && aptitude safe-upgrade

Ensuite installez les paquets suivant

aptitude install samba winbind krb5-user libkrb53 ntpd ntpdate

Heure du serveur

Avant de commencer il est primordial de synchroniser l’heure du serveur sur le DC notament pour l’authentification kerberos

/etc/.init.d/ntp stop
vi /etc/ntp.conf

Configurez la ligne server avec l’ip de votre DC

ntpdate <ip_du_dc>
/etc/.init.d/ntp start

Configuration de Kerberos

vi /etc/krb5.conf

Attention respectez scrupuleusement les majuscules ( à adapter : DOMAINE.COM, server_dc1, domaine, DOMAINE)

[libdefaults]
	default_realm = DOMAINE.COM
	clock_skew = 300
	ticket_lifetime = 24000
	default_tkt_enctypes = des3-cbc-sha1 rc4-hmac des-cbc-md5 des-cbc-crc
	default_tgs_enctypes = des3-cbc-sha1 rc4-hmac des-cbc-md5 des-cbc-crc
	dns_lookup_realm = false
	dns_lookup_kdc = true
[realms]
	DOMAINE.COM = {
		kdc = server_dc1
		admin_server = server_dc1
		default_domain = DOMAINE.COM
	}
[domain_realm]
	.domaine = DOMAINE
	domaine = DOMAINE

Configuration de Samba

vi /etc/samba/smb.conf
[global]
	netbios name = srv-shares
	workgroup = DOMAINE
	server string = Backup Server
	realm = DOMAINE.COM
	security = ADS
	encrypt passwords = true
	password server = server_dc1.domaine.com
	idmap uid = 10000-20000
	idmap gid = 10000-20000
	winbind enum groups = yes
	winbind enum users = yes
	winbind use default domain = yes

[shares]
	path = /home/shares
	comment = shares
	writable = yes
	browseable=yes
	read only = no
	inherit acls = yes
	inherit permissions = yes
	create mask = 700
	directory mask = 700
	valid users = @"DOMAINE+Domain Users"
	admin users = @"DOMAINE+Domain Admins"

Configuration de nsswitch

Pour que Samba puisse utiliser les utilisateurs et groupes de l’AD, il faut configurer nsswitch afin de lui ajouter Winbind comme possibilité d’authentification

vi /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat winbind
group:          compat winbind
shadow:         compat

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Redémarrage des services

/etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start

Jonction à l’Active Directory

net join -U Administrator

Ensuite pour tester

kinit administrator
klist
wbinfo -u
wbinfo -g

Vous pouvez à présent configurer les permissions avec les commandes habituelles.

chown DOMAINE\user1 repdeuser1
chgrp DOMAINE\groupe1 repdegrp1

Update : Installation de Cacti et des plugins Network Weathermap et Discovery

Adminstration Server Linux, Debian, Supervision 3 Comments »

Le tuto précédent étant dépassé, je ai refait l’installation à partir d’une debian squeeze et cacti 0.8.7g. Pour les détails et/ou explication référez vous à l’ancien tuto

Installation du serveur LAMP

aptitude update && aptitude full-upgrade
aptitude install apache2 mysql-server php5 php5-cli snmp rrdtool phpmyadmin php-pear unzip patch

Installation de cacti

aptitude install cacti cacti-spine

Installation du Plugin Architecture

cd /tmp
wget  http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7g-PA-v2.8.tar.gz
tar xvf cacti-plugin-0.8.7g-PA-v2.8.tar.gz
cd cacti-plugin-arch
cp cacti-plugin-0.8.7g-PA-v2.8.diff /usr/share/cacti/site/
cd /usr/share/cacti/site/
patch -p1 -N < cacti-plugin-0.8.7g-PA-v2.8.diff
mysql -u root -p cacti < /tmp/cacti-plugin-arch/pa.sql
vi include/config.php

Remplacer

$url_path = "/";

par

$url_path = "/cacti/";

Installation du Plugin Network Weathermap

cd  /usr/share/cacti/site/plugins
wget http://www.network-weathermap.com/files/php-weathermap-0.97a.zip
unzip php-weathermap-0.97a.zip
vi weathermap/editor.php

Remplacer

$ENABLED=false;

par

$ENABLED=true;
chown www-data weathermap/configs -R
chown www-data /usr/share/cacti/site/plugins/weathermap/output -R

Activation du plugin

-> User Management -> admin -> cocher [Plugin Management]

-> Plugin Management

aptitude update && aptitude full-upgrade

aptitude install apache2 mysql-server php5 php5-cli snmp rrdtool phpmyadmin php-pear unzip patch

Les paquets suivants ont des dépendances non satisfaites :
apache2-mpm-prefork: Est en conflit avec: apache2-mpm qui est un paquet virtuel
apache2-mpm-worker: Est en conflit avec: apache2-mpm qui est un paquet virtuel
Les actions suivantes permettront de résoudre ces dépendances :

Conserver les paquets suivants dans leur version actuelle :
1)     apache2-mpm-worker [Non installé]

Accepter cette solution ? [Y/n/q/?]Y

aptitude install cacti cacti-spine

ATTENTION : le répertoire d’installation a changé !                                                                                                        │
libphp-adodb n’est plus installé dans /usr/share/adodb. Le nouveau chemin d’installation (« include path » pour php) est maintenant /usr/share/php/adodb.  │
Veuillez mettre à jour votre fichier php.ini. Par ailleurs, vous devrez peut-être également modifier la configuration de votre serveur web.

cd /tmp
wget  http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7g-PA-v2.8.tar.gz
tar xvf cacti-plugin-0.8.7g-PA-v2.8.tar.gz

cd cacti-plugin-arch
cp cacti-plugin-0.8.7g-PA-v2.8.diff /usr/share/cacti/site/
cd /usr/share/cacti/site/

patch -p1 -N < cacti-plugin-0.8.7g-PA-v2.8.diff
mysql -u root -p cacti < /tmp/cacti-plugin-arch/pa.sql

vi include/config.php
$url_path = « /cacti/ »;

cd  /usr/share/cacti/site/plugins
wget http://www.network-weathermap.com/files/php-weathermap-0.97a.zip

vi weathermap/editor.php
$ENABLED=true;

chown www-data weathermap/configs -R

chown www-data /usr/share/cacti/site/plugins/weathermap/output -R

Utiliser les dépôts stable, testing et unstable en même temps sur debian

Adminstration Server Linux, Debian 4 Comments »

Si vous devez installer certain packets dans leur version la plus récent sur debian sans pour autant mettre à jour tous votre système cette manip est pour vous.

La première étape est de configurer vos dépots en ajoutant les différentes version.

vi /etc/apt/sources.list

Et le configurer comme ci-dessous :

################################################
## lenny
deb http://ftp.be.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.be.debian.org/debian/ lenny main contrib non-free

# lenny security
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

# volatile
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

################################################
## squeeze
deb http://ftp.be.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.be.debian.org/debian/ squeeze main contrib non-free

## squeeze security
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free

################################################
## sid
deb http://ftp.be.debian.org/debian/ sid main contrib non-free
deb-src http://ftp.be.debian.org/debian/ sid main contrib non-free

## sid security
deb http://security.debian.org/ sid/updates main contrib non-free
deb-src http://security.debian.org/ sid/updates main contrib non-free

On va maintenant configurer la priorité des dépôts, cela se configure dans le fichier/etc/apt/preferences

vi /etc/apt/preferences

Et le remplir de cette façon :

Package: *
Pin: release o=apt-build
Pin-Priority: 989

Package: *
Pin: release o=volatile.debian.org,a=stable,l=debian-volatile
Pin-Priority: 988

Package: *
Pin: release o=Debian,a=stable,l=Debian-Security
Pin-Priority: 987

Package: *
Pin: release o=Unofficial Multimedia Packages,a=stable,l=Unofficial Multimedia Packages
Pin-Priority: 986

Package: *
Pin: release o=Debian,a=stable,l=Debian
Pin-Priority: 985

Package: *
Pin: release o=Debian,a=testing,l=Debian-Security
Pin-Priority: 99

Package: *
Pin: release o=Unofficial Multimedia Packages,a=testing,l=Unofficial Multimedia Packages
Pin-Priority: 98

Package: *
Pin: release o=Debian,a=testing,l=Debian
Pin-Priority: 97

Package: *
Pin: release o=Unofficial Multimedia Packages,a=unstable,l=Unofficial Multimedia Packages
Pin-Priority: 96

Package: *
Pin: release o=Debian,a=unstable,l=Debian
Pin-Priority: 95

Package: *
Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
Pin-Priority: 94

Package: *
Pin: release o=Debian,a=experimental,l=Debian
Pin-Priority: 93

Ensuite vous faites une mise à jour de la liste des packets disponible dans les dépôts

aptitude update

Voilà vous pouvez mnt installer vos packets dans la version que vous voulez, par défaut il utilisera la version stable. Pour utiliser une autre version il faut procéder de la façon suivante

aptitude install apache2 php5/testing

Aptitude installera apache en version stable et php5 en version testing, aptitude se chargera de régler le problème de dépendance mais également de version entre les dépendances

Installation de Cacti et des plugins Network Weathermap et Discovery

Administration des Réseaux, Adminstration Server Linux, Debian, Supervision 28 Comments »

Introduction

Cacti est un logiciel libre de supervision serveur basé sur la puissance de stockage de données de RRDTool. Il fonctionne grâce à un serveur web équipé d’une base de données et du langage PHP. Il peut-être considéré comme le successeur de MRTG et également comme une interface d’utilisation de RRDTool.

Il permet de représenter graphiquement divers statuts de périphériques réseau utilisant SNMP ou encore grâce à des scripts (Bash, PHP, Perl, VBs…) pour avoir par exemple l’espace disque restant ou bien la mémoire utilisée, la charge processeur ou le ping d’un élément actif. Les données sont récoltées auprès des différents agents SNMP (ou auprès des scripts locaux) grâce à un script php.

L’intérêt de ce logiciel réside principalement dans son principe de modèles (Templates) qui permet de créer de manière générique les graphiques afin de pouvoir les réutiliser. De manière générale, tout est modèle sous Cacti. Cela est avantageux lorsque de nombreuses données identiques doivent être observées, mais cela peut se révéler fastidieux à configurer lorsque les données sont hétérogènes.

Version des logiciels utilisés

Debian : Net Install Squeeze
Cacti : 0.8.7e-1.1
Plugin Architecture : 2.6

Installation du server LAMP

Une fois la distribution installée et la configuration réseau faites, on met à jour les dépôts et on met tous a jour, même si normalement tous doit être déjà à jour

aptitude update && aptitude full-upgrade

On installe maintenant le server apache2 avec php5 et mysql-server, plus d’autre outil nécessaire a cacti

aptitude install apache2 mysql-server php5 php5-cli snmp rrdtool phpmyadmin php-pear

Réponse aux questions durant l’installation :
Nouveau mot de passe du superutilisateur de MySQL : superpass
Confirmation du mot de passe du superutilisateur de MySQL : superpass
Serveur web à reconfigurer automatiquement: Apache2
Faut-il configurer la base de données de phpmyadmin avec dbconfig-common : oui
Mot de passe de l’administrateur de la base de données : superpass
Mot de passe de connexion MySQL pour phpmyadmin : laisser vide, il sera générer aléatoirement

Votre server web est fonctionnel, vous pouvez tester en allant sur http://ip-du-server/phpmyadmin

Installation de Cacti

aptitude install cacti cacti-spine

Réponse aux questions durant l’installation :
Faut-il configurer la base de données de cacti avec dbconfig-common : oui
Mot de passe de l’administrateur de la base de données : superpass
Mot de passe de connexion MySQL pour cacti : laisser vide, il sera générer aléatoirement
Type de serveur web: Apache2

Si tous c’est bien dérouler vous devriez avoir accès à l’interface de Cacti via cette adresse http://ip-du-server/cacti
Le login:password par défaut est admin:admin, il vous sera demandé de le changer immédiatement au premier login.
C’est terminer pour la partie installation de cacti

Installation du Plugin Architecture

Une grande force de Cacti est sa faculté d’utiliser des autres outils dans des plugins intégrés à son interface. L’avantage sera alors de pouvoir gérer plusieurs logiciels avec une seule plate-forme.

On le trouve sur le site http://cactiusers.org/downloads/

On commence par installer de quoi dézip et ensuite on télécharge l’archive

aptitude install unzip
cd /tmp
wget  http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7e-PA-v2.6.zip
unzip cacti-plugin-0.8.7e-PA-v2.6.zip

On copie les fichiers pré modifié dans cacti

cd /tmp/cacti-plugin-arch/files-0.8.7e
cp -r * /usr/share/cacti/site/

On met à jour la base de données

mysql -u root -p cacti < pa.sql

On va maintenant configurer et corriger quelque bug dans la configuration

cd /usr/share/cacti/site/
vi include/global.php

À la ligne 56 remplacer

$config['url_path'] = '/';

Par

$config['url_path'] = '/cacti/';

À la ligne 202 remplacer

include($config["library_path"] . "/adodb/adodb.inc.php");

Par

include("/usr/share/php/adodb/adodb.inc.php");

Le Plugin Architecture est installé et configuré, vous pouvez l’activé dans les permissions des utilisateurs
utilites -> user management -> admin -> Realm Permissions
Cochez Plugin Management

Ajout de plugins

On se place dans le dossier plugins de Cacti

cd  /usr/share/cacti/site/plugins

Network Weathermap

PHP Weathermap est un outil particulièrement utile qui génère des cartes graphiques pour mesurer les bandes passantes (en pourcentage ou en absolu) de vos liens réseaux.
Les cartes vont vous montrer s’il existe des goulots d’étranglements (bottlenecks) sur votre réseau et ainsi vous permettre de mettre à jour le bon lien réseau au lieu de les mettre à jour au hasard et à grand frais.

wget http://www.network-weathermap.com/files/php-weathermap-0.96a.zip
unzip php-weathermap-0.96a.zip
rm php-weathermap-0.96a.zip

Petite correction d’un bug connu

vi /usr/share/cacti/site/plugins/weathermap/setup.php

À la ligne 146 remplacer

if($_REQUEST["action"] == 'viewmapcycle')

Par

if (isset( $_REQUEST["action"] ) && $_REQUEST["action"] == 'viewmapcycle')

Discovery

Ce plugin ajoute la possibilité de découvrir automatiquement tous les périphériques d’un sous-réseau qui ne sont pas surveillées par Cacti et vous indique si SNMP est activé.
Disponible sur cactiusers.org

mkdir discovery
cd discovery/
wget http://cactiusers.org/downloads/discovery.zip
unzip discovery-0.8.5.zip
rm discovery-0.8.5.zip

Activation des plugins

Pour activer les plugins il suffit de remplir un tableau dans le fichier de configuration global

cd  /usr/share/cacti/site/
vi include/global.php

À la ligne 44 on remplace

$plugins = array();
//$plugins[] = 'thold';

Par

$plugins = array(
	'weathermap',
	'disco’
	) ;

Et enfin dans utilites -> user management -> admin -> Realm Permissions
Cochez:
Plugin -> Weathermap: Configure/Manage
Plugin -> Weathermap: View
View Host Auto-Discovery

Finalisation

On termine l’installation par créer le dossier rra si il n’a pas été créé automatiquement et on change le propriétaire des fichiers pour que tous fonctionne bien

mkdir  /usr/share/cacti/site/rra
chown www-data: -R usr/share/cacti/site

C’est fini, il ne vous reste plus cas ajouter vos devices et créer votre carte réseau.

Liens additionnels

Installer Debian Lenny dans une VM XenServer

Debian, Virtualisation 1 Comment »

Petit mémo pour installer une Debian Lenny dans une VM Xenserver

Installation

Tous d’abord, il faut installer une debian etch à partir des templates disponibles dans XenCenter.
Une fois l’installation terminée, on remplace etch par lenny dans les fichier source.list

vi /etc/apt/sources.list
vi /etc/apt/sources.list.d/citrix.list

On Install ensuite les nouvelles clés gpg des dépôts

wget -q http://updates.vmd.citrix.com/XenServer/5.5.0/GPG-KEY -O- | apt-key add -
gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 9AA38DCD55BE302B
gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 4D270D06F42584E6
apt-key add .gnupg/pubring.gpg

On met à jour la liste des paquets et on install les paquets suivant. On termine enfin par une mise à jour des clefs

aptitude update
aptitude install debian-keyring debian-archive-keyring
apt-key update

Mise à jour vers Lenny

On lance un apt-get dist-upgrade pour mettre à jour la ditribution

aptitude dist-upgrade

Une fois la mise à jour vers Lenny faites, on install les tools Xen et le dernier kernel disponible pour Xen, si durant l’installation des paquets il demande d’annuler, il faut ignorer ce message et continuer.

aptitude install linux-doc-2.6.29-xs5.5.0.14 linux-headers-2.6.29-xs5.5.0.14 linux-image-2.6.29-xs5.5.0.14 linux-manual-2.6.29-xs5.5.0.14 linux-source-2.6.29-xs5.5.0.14 xe-guest-utilities

Avant de rebooter il est trés important de faire ce qui suit, sans quoi votre VM ne démarrera plus.
On ajoute les modules suivant au initramfs

vi /etc/initramfs-tools/modules

Et on ajoute

xenblk
xennet

On met à jour les changements en faisant

update-initramfs -u

On va maintenant changer le le kernel par défaut dans grub

vi /boot/grub/menu.lst

On remplace

default 0

Par

default 2

On termine par une mise à jour de grub

update-grub

Dernière étape, il faut changer l’interface de sortie de la console, pour ce faire on édite /etc/inittab

vi /etc/inittab

On remplace

1:2345:respawn:/sbin/getty 38400 tty1

Par

1:2345:respawn:/sbin/getty 38400 hvc0

On reboot finalement le système

reboot

Vous avez à présent une Debian Lenny fonctionnel dans votre VM XenServer

Installation du mod deflate pour apache2

Adminstration Server Linux, Debian No Comments »

Le module mod_deflate est un module du serveur web Apache qui fournit les filtres DEFLATE permettant à la sortie du serveur d’être compressée avant d’être envoyée au navigateur sur le réseau. Ce qui apporte une économie de bande passante pouvant aller parfois jusqu’à 80%, une légère consommation en plus du processeur ainsi que de la mémoire est à prévoir.

Quelques informations en plus ce module :

Installation

Deflate est installé par défaut avec Apache mais il n’est pas lancé, de plus même une fois lancé il sera nécessaire de le configurer.

Paramétrage

Dans /etc/apache2/conf.d/mod_deflate, ajoutez :

# Mod Deflate

<IfModule mod_deflate.c>
 DeflateCompressionLevel 3
</IfModule>

<Location />
 AddOutputFilterByType DEFLATE text/plain
 AddOutputFilterByType DEFLATE text/xml
 AddOutputFilterByType DEFLATE text/html
 AddOutputFilterByType DEFLATE text/css
 AddOutputFilterByType DEFLATE image/svg+xml
 AddOutputFilterByType DEFLATE application/xhtml+xml
 AddOutputFilterByType DEFLATE application/xml
 AddOutputFilterByType DEFLATE application/rss+xml
 AddOutputFilterByType DEFLATE application/atom_xml
 AddOutputFilterByType DEFLATE application/x-javascript
 AddOutputFilterByType DEFLATE application/x-httpd-php
 AddOutputFilterByType DEFLATE application/x-httpd-fastphp
 AddOutputFilterByType DEFLATE application/x-httpd-eruby

 SetOutputFilter DEFLATE

 SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.rm$ no-gzip dont-vary

 BrowserMatch ^Mozilla/4 gzip-only-text/html
 BrowserMatch ^Mozilla/4\.0[678] no-gzip
 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

 # Make sure proxies don't deliver the wrong content
 Header append Vary User-Agent env=!dont-vary
</Location>

Explications

DeflateCompressionLevel 3
Détermine le niveau de compression, les valeurs vont de 1 à 9, de base le choix est à 1.

AddOutputFilterByType DEFLATE text/html
Indique que les pages .html seront compressées.

SetOutputFilter DEFLATE
Active la compression.

SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
Ne compresse pas les fichiers de type .gif .jpg .jpeg .png car ils possèdent déjà une compression.

BrowserMatch ^Mozilla/4 gzip-only-text/html
Active que la compression des pages HTML pour Netscape 4.

Header append Vary User-Agent env=!dont-vary
Assurez-vous que les proxy ne livrent pas les mauvais contenus

Mise en production

Activez les deux modules suivants :

a2enmod headers
a2enmod deflate

Relancez Apache

/etc/init.d/apache2 restart

Pour vérifier que la compression soit fonctionnelle, vous pouvez aller sur ce site : www.gidnetwork.com

D’où proviennent les noms de code des distributions Debian ?

Debian No Comments »

Jusqu’ici les noms de code des distribution Debian proviennent des personnages du film « Toy Story » par Pixar.

  • buzz (Buzz Lightyear) est le cosmonaute,
  • rex est le tyrannosaure,
  • bo (Bo Peep) est la bergère,
  • hamm est la tirelire en forme de cochon,
  • slink (Slinky Dog ®) est le chien,
  • potato est bien sûr, Mr. Patate ®,
  • woody est le cowboy,
  • sarge est le sergent de l’armée de plastique vert,
  • etch est l’ardoise magique (Etch-a-Sketch ®),
  • lenny est la paire de jumelles.
  • sid est le garçon des voisins qui détruit les jouets

Installation et configuration du mod_security pour apache2 sous Debian

Adminstration Server Linux, Debian, Sécurité 12 Comments »

Le module Security est une sorte de firewall pour Apache qui apporte une solution aux problèmes de sécurité et d’attaques applicatives web. En effet, malgrés le déploiement de mesures de sécurité élevées sur un serveur web, il est toujours possible qu’une simple erreur de programmation dans un script « cgi » ou « php » mette en péril l’intégrité et la confidentialité des données stockées.
Pour faire simple ce module bloque les requêtes pouvant être dangereuses.
Exemple en image :

modsecurity

Installation.

Ce module n’est pas installé de base avec Apache, je vais vous proposer deux méthodes à vous de choisir la votre :
L’installation par la commande dpkg est très simple, wget doit être installé sur votre système.

wget http://etc.inittab.org/~agi/debian/libapache-mod-security2/mod-security-common_2.5.9-1_all.deb
wget http://etc.inittab.org/~agi/debian/libapache-mod-security2/libapache-mod-security_2.5.9-1_i386.deb

Installation du paquet :

dpkg -i mod-security-common_2.5.9-1_all.deb libapache-mod-security_2.5.9-1_i386.deb

Voila le module est installé. Maintenant on active ce dernier auprès d’Apache.

 a2enmod mod-security

L’installation du module Security est terminée

Configuration

La configuration du module Security consiste dans sa plus grande partie à ajouter des règles “de filtrage”.
Ces règles sont séparées en plusieurs fichiers (blacklist, proxy, règles de bases, rootkits, etc…).
On créé un répertoire modsecurity2 dans le répertoire /etc/apache2/, on se place dedans et on télécharge les règles.

mkdir /etc/apache2/modsecurity2/
cd /etc/apache2/modsecurity2/
wget http://www.gotroot.com/downloads/ftp/mod_security/2.0/apache2/apache2-gotrootrules-modsec2.0-latest.tar.gz

Une fois le téléchargement terminé nous allons décompresser l’archive contenant les règles.

tar zxvf apache2-gotrootrules-modsec2.0-latest.tar.gz

Puis créez un fichiers nommé mod_security pour y ajouter les lignes suivantes :

vi /etc/apache2/conf.d/mod_security
# A adapter en fonction de la version du module qui est utilisé.
<IfModule mod_security.c>

# Analyse uniquement les requêtes dynamiques.
#SecFilterEngine DynamicOnly

# Active le filtrage.
SecFilterEngine On

# Rejette les requêtes ayant le status 500.
SecFilterDefaultAction "deny,log,status:500"

# Quelques règles de bases.
SecFilterScanPOST On
SecFilterCheckURLEncoding On
SecFilterCheckCookieFormat On
SecFilterCheckUnicodeEncoding Off
SecFilterNormalizeCookies On
# Active la version 1 (RFC 2965) cookies
SecFilterCookieFormat 1

# Ne donne aucune précision sur le serveur web.
SecServerResponseToken Off

# Scanner le flux de sortie.
#SecFilterScanOutput On
#SecFilterOutputMimeTypes "(null) text/html text/plain"

# Autorise presques toutes les valeurs de bytes.
SecFilterForceByteRange 1 255

# Masquer le serveur.
#fake server banner - NOYB used - no one needs to know what we are using
SecServerSignature "NOYB"

#SecUploadDir /tmp
#SecUploadKeepFiles Off

# Only record the interesting stuff
SecAuditEngine RelevantOnly
SecAuditLog logs/audit_log

# Configuration du module de debuggage.
SecFilterDebugLevel 0
SecFilterDebugLog /var/logs/apache2/modsec_debug_log

# Règles d'exlusion.
# Cette ligne doit rester devant les autres.
Include /etc/apache2/modsecurity2/exclude.conf

# Règles de protections.
Include /etc/apache2/modsecurity2/rules.conf

# Règles dédiées au spam.
Include /etc/apache2/modsecurity2/blacklist.conf

# Règles de filtrage des hotes, proxy, etc...
Include /etc/apache2/modsecurity2/blacklist2.conf

# Règles interdisant certains client, robots, etc...
Include /etc/apache2/modsecurity2/useragents.conf

# Protection contre les rootkits.
Include /etc/apache2/modsecurity2/rootkits.conf

# Règle empéchant l'utilisation du serveur comme proxy.
# A utiliser seulement si le serveur n'est pas en mod proxy.
Include /etc/apache2/modsecurity2/proxy.conf

# Quelques règles de plus, uniquement pour Apache2.
Include /etc/apache2/modsecurity2/apache2-rules.conf

</IfModule>

La configuration du module est terminé, il ne reste plus qu’a relancer Apache.

/etc/init.d/apache2 restart

Mise à jour des règles.

Un script a été conçu pour permettre le téléchargement des nouvelles règles automatiquement.
Cette méthode nécessite l’ajout d’une tâche dans votre crontab.

Dans le répertoire /etc/cron.d/ nous allons créer un fichier modsecurity contenant ceci :

vi /etc/cron.d/modsecurity
# Tout les jours à 5h30 du matin.
30 5 * * * /etc/apache2/modsecurity2/modsec.sh

Ce script bash a été adapté pour une distribution Debian, il aura pour nom modsec.sh et sera placé dans /etc/apache2/modsecurity2/

vi /etc/apache2/modsecurity2/modsec.sh
#!/bin/sh

# Autoupdater for modsec rulesets.
 #
 # This script will attempt to update your rulefiles, and restart apache.
 # If it apache does not start after changing rules, it will roll back to
 # the old ruleset and restart apache again.
 #
 # Version: $Id: modsec.sh,v 1.1 2005/06/29 18:07:53 olei Exp $
 # URL: http://cs.evilnetwork.org/cycro
 # Copyright 2005, All Rights Reserved

APACHESTART="/usr/sbin/apache2ctl start"
 MODSECPATH="/etc/apache2/modsecurity2 "
 APACHEPID="/var/run/apache2.pid"

##########################################################################
 ######### you probably don't need to change anything below here ##########
 ##########################################################################

# urls
 BLACKLIST="http://www.gotroot.com/downloads/ftp/mod_security/blacklist.conf"
 RULES="http://www.gotroot.com/downloads/ftp/mod_security/rules.conf"
 APACHE2="http://www.gotroot.com/downloads/ftp/mod_security/apache2-rules.conf"

# internal
 PID=`cat ${APACHEPID}`
 UPDATED=0

echo -n "Changing PWD: "
 cd ${MODSECPATH}
 echo `pwd`

# blacklist
 echo -n "Updating blacklist.conf: "
 /usr/bin/wget -t 30 -O blacklist.conf.1 -q ${BLACKLIST}
 if [ `md5sum blacklist.conf | cut -d " " -f1` != `md5sum blacklist.conf.1 | cut -d " " -f1` ] ; then
 /bin/mv blacklist.conf blacklist.conf.bak
 /bin/mv blacklist.conf.1 blacklist.conf
 UPDATED=`expr $UPDATED + 1`
 echo "ok."
 else
 echo "allready up to date."
 /bin/rm -f blacklist.conf.1
 fi

# rules
 echo -n "Updating rules.conf: "
 /usr/bin/wget -t 30 -O rules.conf.1 -q ${RULES}
 if [ `md5sum rules.conf | cut -d " " -f1` != `md5sum rules.conf.1 | cut -d " " -f1` ] ; then
 /bin/mv rules.conf rules.conf.bak
 /bin/mv rules.conf.1 rules.conf
 UPDATED=`expr $UPDATED + 1`
 echo "ok."
 else
 echo "allready up to date."
 /bin/rm -f rules.conf.1
 fi

# apache2 rules
 echo -n "Updating apache2-rules.conf: "
 /usr/bin/wget -t 30 -O apache2-rules.conf.1 -q ${APACHE2}
 if [ `md5sum apache2-rules.conf | cut -d " " -f1` != `md5sum apache2-rules.conf.1 | cut -d " " -f1` ] ; then
 /bin/mv apache2-rules.conf apache2-rules.conf.bak
 /bin/mv apache2-rules.conf.1 apache2-rules.conf
 UPDATED=`expr $UPDATED + 1`
 echo "ok."
 else
 echo "allready up to date."
 /bin/rm -f apache2-rules.conf.1
 fi

# try restart
 if [ "$UPDATED" -gt "0" ]; then
 echo -n "Restarting apache: "
 /bin/kill -HUP ${PID} 2>/dev/null
 # did it work?
 if `/bin/kill -CHLD ${PID} >/dev/null 2>&1`; then
 echo "ok."
 exit 0
 fi
 echo "error. Apache not running."

# blacklist
 echo -n "Rolling back blacklist.conf: "
 /bin/mv blacklist.conf blacklist.conf.new
 /bin/mv blacklist.conf.bak blacklist.conf
 echo "ok."

# rules
 echo -n "Rolling back rules.conf: "
 /bin/mv rules.conf rules.conf.new
 /bin/mv rules.conf.bak rules.conf
 echo "ok."

# apache2 rules
 echo -n "Rolling back apache2-rules.conf: "
 /bin/mv apache2-rules.conf apache2-rules.conf.new
 /bin/mv apache2-rules.conf.bak apache2-rules.conf
 echo "ok."

# try starting httpd again
 `${APACHESTART}`
 PID=`cat ${APACHEPID}`

# did that fix the problem?
 if `/bin/kill -CHLD ${PID} >/dev/null 2>&1`; then
 echo "That did the trick."
 exit 0
 fi

echo "Fatal: Apache still not running! Run apache2ctl -t to find the error."
 exit 999
 fi

Il faut rendre ce script exécutable.

chmod +x /etc/apache2/modsecurity2/modsec.sh

Installation et configuration d’un serveur OpenLDAP sous Debian

Administration des Réseaux, Adminstration Server Linux, Debian 7 Comments »

ldapworm

OpenLDAP est une implémentation libre du protocole LDAP développée par The OpenLDAP Project.
Lightweight Directory Access Protocol (LDAP) est à l’origine un protocole permettant l’interrogation et la modification des services d’annuaire.

Nous allons utiliser le serveur LDAP afin de centraliser les informations utilisateurs des sites et services du serveur. En effet la plus par des services telles que les serveur web, ftp, proxy peuvent s’authentifier sur un serveur LDAP, mais également les CMS les plus populaires.

Avant de commencer l’installation on va vérifier le hostname de la machine

# hostname -f
server.majorxtrem.be

Vous devez obtenir quelque chose de similaire, si ce n’était pas le cas éditer le fichier /etc/hostname afin d’avoir :  nomdelamchine.domaine.com

On commence l’installation par le traditionnel apt-get

apt-get install slapd ldap-utils

Durant l’installation on vous demande simplement le password admin du serveur .

Vous tapez ensuite la commande slappasswd, elle va vous permettre de générer un password SSHA

# slappasswd
New password: toto
Re-enter new password: toto
{SSHA}gHus2hriMC95mCcmPtXbK8Nv/oh2hZy5

Copiez-le on va en avoir besoin dans le fichier de configuration de slapd, il se trouve ici :

vi /etc/ldap/slapd.conf

Vous vérifiez que suffix est égale à :

suffix          "dc=majorxtrem,dc=be"

Et ajouter les lignes :

rootdn          "cn=admin,dc=majorxtrem,dc=be"
rootpw          {SSHA}gHus2hriMC95mCcmPtXbK8Nv/oh2hZy5

On édite également afin que l’annuaire ne soit pas lisible en anonyme

access to attrs=userPassword,shadowLastChange
        by dn="cn=admin,dc=majorxtrem,dc=be" write
        by anonymous auth
        by self write
        by * none

access to *
        by dn="cn=admin,dc=majorxtrem,dc=be" write
        by dn="uid=read_user,cn=Managers,dc=majorxtrem,dc=be" read

On redémarre slpad

/etc/init.d/slapd restart

On va maintenant créer la base de l’annuaire

vi racine.ldif

Et on ajoute les lignes suivantes dedans

# Racine
dn: dc=majorxtrem,dc=be
objectClass: top
objectClass: dcObject
objectClass: organization
o: majorxtrem.be
dc: majorxtrem

# OU Manager
dn: cn=Managers,dc=majorxtrem,dc=be
objectClass: organizationalRole
objectClass: top
cn: Managers

# OU Groups
dn: ou=Groups,dc=majorxtrem,dc=be
objectClass: organizationalUnit
objectClass: top
ou: Groups

# OU Users
dn: ou=Users,dc=majorxtrem,dc=be
objectClass: organizationalUnit
objectClass: top
ou: Users

Ensuite on l’ajoute au LDAP :

ldapadd -f racine.ldif -D "cn=admin,dc=majorxtrem,dc=be" -w toto

À ce stade votre serveur est fonctionnel, on va tous de même installer une interface de gestion en PHP
apt-get install phpldapadmin

L’interface sera accessible via l’url http://ipduserver/phpldapadmin

Loguez vous et ajoutez un utilisateur read_user dans le groupe Manager
Le login est cn=admin,dc=majorxtrem,dc=be, le pass est celui que vous avez généré tous à l’heure

Cliquez sur manager et ensuite sur Create a child

ldap1

Choisissez : Simple Security Object

ldap2

Ensuite remplissez le username, le password et spécifiez SSHA pour l’encryption

ldap3
Ce user servira pour authentifier apache, phpbb & cie pour vérifier le login de vos utilisateurs

Dans un prochain article, on verra comment restrientre via apache l’accés à un dossier via authentification LDAP

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Connexion
ipv6 ready