Monthly Archives: April 2012

Choisir un onduleur: le guide complet

onduleur

Afin de sécuriser mon serveur de production, j'ai décidé d'acheter un onduleur.

J'ai parcouru de nombreux blogs et forums afin de comprendre ce qu'est un onduleur, comment il fonctionne et à quoi il sert.

Il existe de nombreuses sortes et modèles d'onduleurs, j'ai donc lu de nombreux guides et dossiers afin de faciliter mon choix.

Voici un récapitulatif afin de vous aider à choisir un onduleur.

A quoi sert un onduleur ?

Tout d'abord, les onduleurs sont communément appelés UPS (Uninterruptible Power Supply) ou ASI (Alimentation Statique sans Interruption).

Principalement utilisés en milieu professionnel afin de sécuriser des équipements, ils se sont démocratisés et sont désormais accessible à tous le monde.

Un onduleur peut être considérer comme une batterie d'énergie qui permettra d'obtenir de l'électricité lorsque vos équipements en ont besoin.

Un onduleur assure plusieurs fonctionnalités:

  • en cas de coupure d'électricité, l'onduleur fonctionnera comme une alimentation de secours en fournissant l'énergie stockée dans ses batteries aux différents équipements qui y sont reliés. Cela vous permettra par exemple de sauvegarder vos données puis d'éteindre proprement votre machine lorsqu'il y a une panne électrique.
  • le signal électrique fournit étant rarement parfait, un onduleur va réparer le signal afin d'obtenir une onde sinusoïdale parfaite de 50Hz pour une tension de 220v. En effet, il est fréquent que des perturbations diverses (parasites, variation de tensions,variation de fréquences) viennent altérer la qualité du signal électrique fournit par ERDF ou tout autre fournisseur d'électricité.
  • un onduleur saura protéger votre équipement des microcoupures électriques.

Indispensable dans le domaine professionnel, un onduleur permet d'assurer la sécurité de vos données, d'étendre la longévité de vos équipements électriques.

Bref, un onduleur est indispensable, d'autant plus qu'il est désormais accessible au tout public.

Les types d'onduleurs

Un onduleur se caractérise par sa puissance, son type, le nombre de prises électriques, son format, ses fonctions avancées (connection USB au PC, logiciel de supervision).

Il existe 3 sortes d'onduleurs, chacun ayant des caractéristiques spécifiques.

Les onduleurs OffLine

Les onduleurs OffLine sont les onduleurs historiques. C'est le modèle d'onduleur le plus utilisé chez les particuliers car son fonctionnement est simple et son coût est moindre.

Ce type d'onduleur commute sur le circuit de secours, ce qui signifie que l'onduleur bascule sur ses batteries dès qu'une chute de tension électrique est détectée.

La principale caractéristique de ce type d'onduleur est le temps de commutation (temps que met l'onduleur à basculer sur sa batterie) qui est souvent élevé (> 5ms).

Enfin, veuillez noter que les onduleurs OffLine ne régule pas la tension. Ils se limitent au filtrage des parasites, aux baisses de tension électrique et sont dépourvus de fonctionnalités avancées.

Les onduleurs OffLine étant souvent considérés comme du matériel d'entrée de gamme, ils s'utilisent principalement sur des stations de travail bureautique.

Les onduleurs InLine (Line Interactive)

Tout comme les onduleurs OffLine, les onduleurs InLine sont également des onduleurs à commutation mais ils sont dits "intelligents".

En effet, les onduleurs OffLine sont équipés d'un microprocesseur qui va réduire le temps de commutation (< 2ms) et qui va permettre de lisser la tension électrique afin d'obtenir une onde sinusoidale parfaite.

De plus, un mécanisme interne appelé "booster" permet d'augmenter la durée de vie des batteries en améliorant leur sollicitation.

Les onduleurs InLine sont une très bonne alternative aux onduleurs OffLine pour la sécurisation des postes de travails, serveur de backup et petit équipement électrique.

De plus, leur coût a été réduit ces dernières années. Ces onduleurs sont considérés comme étant des onduleurs milieu de gamme.

Les onduleurs OnLine

Les onduleurs OnLine sont les meilleurs onduleurs car ils régulent la tension en continue. Cela signifie donc qu'il n'y a plus de temps de commutation.

Les onduleurs OnLine sont très réactif et assurent une protection optimale grâce un signal parfaitement régulé et régulié.

Ce type d'onduleur est considéré comme le haut de gamme. 

Les onduleurs OnLine sont les plus performants et les plus sécurisés, leurs coûts est élevé, c'est pourquoi ils sont uniquement destinés à un usage professionnel (serveurs, baies, routeurs, …).

Choisir son onduleur

Maintenant que l'on connait les différents types d'onduleurs, il est important de savoir comment choisir un onduleur.

Tout d'abord, il faut savoir quel type d'équipements vous souhaitez protéger, la puissance dont vous avez besoin, et l'utilisation que vous allez en faire. 

Puissance d'un onduleur

La puissance de l'onduleur (exprimée en Volt Ampères VA) va dépendre de la puissance de vos équipements électriques (exprimée en Watts). 

Pour calculer la puissance nécessaire pour le choix d'un onduleur il faut appliquer la formule suivante:

Nombre VA = Nombre de Watts /0.66

Dans mon cas, mes équipements ont une puissance totale de 400W. Il me faudra donc un onduleur de 606VA minimum.

Si vous ne savez toujours pas quelle puissance doit faire votre onduleur, vous pouvez vous référer à la liste suivante:

  • PC Classique : 200 Watt de consommation soit 300 VA de puissance
  • PC Serveur : 250 Watt de consommation soit 350 VA de puissance
  • Ecran standard : 90 Watt de consommation soit 150 VA de puissance

La puissance est un point crucial lors du choix d'un onduleur. Un onduleur sous dimensionné ne servira à rien. Il vaut mieux surestimer la puissance que la sousestimer.

Solutions contre les défaillances électriques

Il faut également prendre en compte le type des défaillances électriques dont vous souhaitez vous protéger.

Voici une liste des principales perturbations électriques:

  • les coupures de courant: tous les types d'onduleurs prendront le relai grâce à leur batterie lorsqu'il y aura une coupure de courant.
  • les chutes de tension: seuls les onduleurs InLine et OnLine assurent une protection efficace contre les chutes de tension en boostant la tension jusqu'à 230 Volts.
  • les surtensions : tous les types d'onduleur vont abaisser la tension jusqu'à la tension nominale, soit 230 Volts.
  • les bruits et parasites: tous les types d'onduleurs vont filter les interférences électromagnétiques et radio (RFI).
  • les pics: tous les onduleurs proposent une protection parafoudre. Ils lissent la courbe de tension de sortie en supprimant les pics de tension.
  • les distorsions: seuls les onduleurs OnLine permettent de reformer la tension puisqu'il est filtré en permanence.

Type d'utilisation de votre onduleur

Enfin le dernier critère à prendre en compte est l'utilisation que vous allez faire de l'onduleur.

Les onduleurs OffLine ont une technologie basique et un temps de commutation élevé. Ils sont recommandés pour sécuriser des machines non critiques comme des ordinateurs de bureau. Par contre, ils sont peu chers.

Les onduleurs InLine ont un temps de communation faible (2ms en moyenne), améliorent la longévité des batteries, protègent correctement les équipements. Ils sont recommandés pour des serveurs de backups et autres équipements intermédiaires. Ils peuvent coûter chers.

Les onduleurs OnLine n'ont aucun temps de commutation car ils filtrent en permanence la tension. Ils assurent la plus grande sécurité mais sont onéreux. Ils sont recommandés pour sécuriser des équipements critiques: serveurs, routeurs, baies, nas, …

Mon choix

Mon choix s'est porté sur un onduleur "Eaton ellipse 750" car il rentre dans mon budget (hé oui je ne suis pas no limit malheureusement :-(), il délivre une puissance suffisante, il est compatible Linux via une connection USB. De plus, le remplacement des batteries ne coûtent pas très cher (une trentaine d'euros).

Allez voici une petite photo de mon onduleur acheté 50€ sur Internet :)

Utiliser TraceRoute et TracePath sur Linux Ubuntu

traceroute

TracePath et TraceRoute sont des logiciels qui permettent d'afficher une cartographie réseau entre votre serveur et un serveur distant ( c'est à dire la route parcourue entre votre machine et un serveur distant).

Sur Linux, il existe 2 différences entre TracePath et TraceRoute:

  • TraceRoute nécessite de disposer des droits super utilisateur (root) pour être exécuté alors que TracePath peut être exécuté par tous les utilisateurs.
  • TraceRoute autorise certains options qui ne sont pas disponibles par TracePath. Malheureusement ces options ne sont pas forcément supportées par tous les routeurs.

Utiliser TracePath

TracePath est disponible dans les distributions Linux dans le paquet iputils qui regroupe toute sorte d'outils permettant de superviser et monitorer votre serveur Linux.

Pour installer TracePath, vous devez tapez la commande suivante:

apt-get install iputils-tracepath

Ensuite pour utiliser TracePath c'est tout simple, il suffit de faire:

tracepath google.com

Et celà vous retournera alors:

 1:  monserver.fr                                          0.120ms pmtu 1500
 1:  freebox-server.local                                  0.440ms
 1:  freebox-server.local                                  0.374ms
 2:  88.182.245.255                                       50.015ms
 3:  213.228.39.62                                        59.668ms
 4:  nantes-6k-1-po7.intf.routers.proxad.net              68.641ms
 5:  bzn-crs16-1-be1104.intf.routers.proxad.net           48.563ms
 6:  no reply
 7:  te0-3-0-6.mpd21.par01.atlas.cogentco.com             59.288ms asymm  9
 8:  te0-1-0-1.mpd22.lon13.atlas.cogentco.com             62.591ms asymm 13
 9:  te0-1-0-1.ccr21.lon01.atlas.cogentco.com             65.574ms asymm 13
10:  no reply
11:  no reply
12:  no reply
13:  no reply
14:  no reply
15:  no reply
16:  no reply
17:  no reply
18:  no reply
19:  no reply
20:  no reply
21:  no reply
22:  no reply
23:  no reply
24:  no reply
25:  no reply
26:  no reply
27:  no reply
28:  no reply
29:  no reply
30:  no reply
31:  no reply
     Too many hops: pmtu 1500
     Resume: pmtu 1500

Utiliser TraceRoute

Pour installer TraceRoute, vous devez installer le paquet "traceroute":

apt-get install traceroute

Ensuite pour l'utiliser:

traceroute google.com

Ce qui retournera:

traceroute to google.com (74.125.230.194), 30 hops max, 60 byte packets
 1  freebox-server.local (192.168.0.254)  0.409 ms  0.452 ms  0.502 ms
 2  88.182.245.255 (88.182.245.255)  47.698 ms  47.880 ms  50.130 ms
 3  213.228.39.62 (213.228.39.62)  50.335 ms  51.331 ms  52.768 ms
 4  nantes-6k-1-po7.intf.routers.proxad.net (212.27.57.34)  52.794 ms * *
 5  bzn-crs16-1-be1104.intf.routers.proxad.net (212.27.50.185)  57.800 ms  57.818 ms  57.838 ms
 6  te1-7.359.mag02.par01.atlas.cogentco.com (149.6.160.85)  186.974 ms  171.249 ms  171.175 ms
 7  te0-5-0-6.mpd22.par01.atlas.cogentco.com (130.117.49.125)  53.854 ms te0-6-0-6.ccr22.par01.atlas.cogentco.com (154.54.38.177)  38.785 ms te0-7-0-7.mpd21.par01.atlas.cogentco.com (154.54.60.29)  35.242 ms
 8  te0-0-0-1.ccr21.lon13.atlas.cogentco.com (130.117.2.162)  43.816 ms te0-4-0-6.mpd21.lon13.atlas.cogentco.com (154.54.37.157)  44.495 ms te0-1-0-3.mpd22.lon13.atlas.cogentco.com (154.54.59.29)  47.226 ms
 9  te0-1-0-1.ccr21.lon01.atlas.cogentco.com (154.54.57.97)  46.677 ms  47.202 ms te0-0-0-1.ccr22.lon01.atlas.cogentco.com (154.54.57.158)  48.861 ms
10  te1-1.ccr01.lon18.atlas.cogentco.com (130.117.51.162)  268.524 ms te1-2.ccr01.lon18.atlas.cogentco.com (154.54.61.150)  268.585 ms te2-1.ccr01.lon18.atlas.cogentco.com (154.54.61.214)  268.532 ms
11  149.6.146.30 (149.6.146.30)  76.224 ms  77.655 ms  78.126 ms
12  209.85.255.86 (209.85.255.86)  53.251 ms 209.85.255.84 (209.85.255.84)  53.707 ms  80.480 ms
13  209.85.253.90 (209.85.253.90)  38.997 ms  51.467 ms 209.85.253.196 (209.85.253.196)  51.456 ms
14  209.85.242.79 (209.85.242.79)  51.446 ms  51.458 ms  51.835 ms
15  209.85.242.49 (209.85.242.49)  51.858 ms  51.882 ms  51.902 ms
16  par08s09-in-f2.1e100.net (74.125.230.194)  57.768 ms  57.785 ms  58.941 ms

Petite astuce: pour tracer une ipv6, vous pouvez utiliser tracepath6 et traceroute6.

Supprimer et désinstaller proprement un logiciel en ligne de commande sous Ubuntu Linux

uninstall_package

Il est vrai qu'il est facile d'installer et désinstaller des logiciels sous Linux Ubuntu en utilisant le gestionnaire d'applications.

En ligne de commande l'installation se fait facilement via "apt-get install", mais comment faire pour désinstaller proprement une application que vous n'utilisez plus.

Tout d'abord pour obtenir la liste des logiciels installés, il faut faire:

dpkg --list
dpkg --list | less
dpkg --list | grep mysql

Par exemple pour désinstaller "zfs", il faut tout d'abord lister les packages liés à zfs qui sont installés sur votre machine:

dpkg --list | grep zfs

Cela qui retourne chez moi:

libzfs1                                0.6.0.56-0ubuntu1~oneiric1              Native ZFS filesystem library for Linux
mountall                               2.31-zfs1                               filesystem mounting tool
ubuntu-zfs                             6~oneiric                               Native ZFS filesystem metapackage for Ubuntu.
zfs-dkms                               0.6.0.56-0ubuntu1~oneiric1              Native ZFS filesystem kernel modules for Linux
zfsutils                               0.6.0.56-0ubuntu1~oneiric1              Native ZFS management utilities for Linux

Pour supprimer un logiciel, il ne me reste plus qu'à faire:

sudo apt-get remove {nom_du_package}

Dans mon cas pour supprimer "zfs", je dois faire:

apt-get remove ubuntu-zfs

Notez bien cette procédure car c'est toujours la même démarche à suivre pour désinstaller un logiciel sous Linux Ubuntu.

Lister les bases de données MySQL sous Linux

mysql

Aujourd'hui mon serveur MediaTomb a eu un problème, il n'arrivait pas à se connecter à sa base de données. J'ai donc voulu comprendre pourquoi.

Pour celà, j'ai dû lister les bases de données présentes sur mon serveur MySQL.

Tout d'abord, il faut s'authentifier avec des droits suffisants pour lister les bases de données. Personnellement je m'identie toujours en tant que "root":

mysql -u root -p

Une fois identifié, il vous suffit d'utiliser la commande "show databases" dans le terminal:

mysql> show databases;

Cela vous retournera alors quelque chose comme çà:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mediatomb          |
| mysql              |
| zbase              |
| zbasebackup        |
+--------------------+
5 rows in set (0.02 sec)

Ma base mediatomb est bien présente. Après plusieurs minutes de recherche, je me suis aperçu qu'un processus s'était arrêté inopinément. Je l'ai relancé et c'est reparti :)

Bar de progression lors d’une copie sous Linux

rsync

Je gère la plupart de mes sauvegardes sous forme d'archives. L'intérêt principal est de pouvoir tout faire en ligne de commande.

Au début j'utilisais la commande "mv" qui permet de déplacer des répertoires et des fichiers mais lors de gros transferts il est impossible de savoir la progression du déplacement ou de la copie de fichiers.

Après avoir cherché plusieurs scripts et fonctions, mon choix s'est tourné vers l'application "rsync" qui permet de synchroniser des répertoires entre eux.

Simple d'utilisation, "rsync" permet également de synchroniser des fichiers distants. Pour utiliser rsync et voir la barre de progression lors de la synchronisation de fichiers, il faut utiliser une des commandes suivante:

sync -av --progress /home/desktop/*backup* /backup
rsync -av --progress /home/desktop/*backup* -e user@remote.example.com:/backup

Vous noterez l'utilisation du paramètre "–progress", qui permet d'afficher la barre de progression lors de la synchronisation des fichiers.

De plus, "rsync" affiche également le nombre de fichiers restant à synchroniser. "rsync" est tout simplement un outil indispensable :)

Attention: l'utilisation de "rsync" est tout de même consommatrice en ressource processeur. Veillez à ne pas charger votre serveur inutilement.

Température du CPU sous Linux Ubuntu

temperature

Aujourd'hui, ma carte SAS (une rocketraid 2680) c'est mise à biper. Immédiatement alerter, j'ai donc cherché à savoir pourquoi.

Ma piste s'est tout de suite diriger vers une surchauffe de la carte SAS mais également un surchauffe du processeur.

Pour savoir la température de mon processeur j'ai utilisé "lm_sensors" qui est disponible via le gestionnaire de paquets.

Installation de lm_sensors

Pour installer "lm_sensors", il suffit d'utiliser le gestionnaire de paquets:

apt-get install lm-sensors

Configuration de lm_sensors

Pour configurer "lm_sensors", il suffit de taper la commande suivante:

sensors-detect

Ce qui retourne:

# sensors-detect revision 5946 (2011-03-23 11:54:44 +0100)
# System: ASUSTeK Computer INC. M3N WS

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no): yes
Silicon Integrated Systems SIS5595...                       No
VIA VT82C686 Integrated Sensors...                          No
VIA VT8231 Integrated Sensors...                            No
AMD K8 thermal sensors...                                   Success!
    (driver `k8temp')
AMD Family 10h thermal sensors...                           No
AMD Family 11h thermal sensors...                           No
AMD Family 12h and 14h thermal sensors...                   No
Intel digital thermal sensor...                             No
Intel AMB FB-DIMM thermal sensor...                         No
VIA C7 thermal sensor...                                    No
VIA Nano thermal sensor...                                  No

Some Super I/O chips contain embedded sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no): yes
Probing for Super-I/O at 0x2e/0x2f
Trying family `National Semiconductor'...                   No
Trying family `SMSC'...                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek'...               No
Trying family `ITE'...                                      Yes
Found `ITE IT8716F Super IO Sensors'                        Success!
    (address 0x290, driver `it87')
Probing for Super-I/O at 0x4e/0x4f
Trying family `National Semiconductor'...                   No
Trying family `SMSC'...                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek'...               No
Trying family `ITE'...                                      No

Some systems (mainly servers) implement IPMI, a set of common interfaces
through which system health data may be retrieved, amongst other things.
We first try to get the information from SMBIOS. If we don't find it
there, we have to read from arbitrary I/O ports to probe for such
interfaces. This is normally safe. Do you want to scan for IPMI
interfaces? (YES/no): yes
Probing for `IPMI BMC KCS' at 0xca0...                      No
Probing for `IPMI BMC SMIC' at 0xca8...                     No

Some hardware monitoring chips are accessible through the ISA I/O ports.
We have to write to arbitrary I/O ports to probe them. This is usually
safe though. Yes, you do have ISA I/O ports even if you do not have any
ISA slots! Do you want to scan the ISA I/O ports? (yes/NO): yes
Probing for `National Semiconductor LM78' at 0x290...       No
Probing for `National Semiconductor LM79' at 0x290...       No
Probing for `Winbond W83781D' at 0x290...                   No
Probing for `Winbond W83782D' at 0x290...                   No

Lastly, we can probe the I2C/SMBus adapters for connected hardware
monitoring devices. This is the most risky part, and while it works
reasonably well on most systems, it has been reported to cause trouble
on some systems.
Do you want to probe the I2C/SMBus adapters now? (YES/no):
Using driver `i2c-nforce2' for device 0000:00:01.1: nVidia Corporation nForce SMBus (MCP78S)
Module i2c-dev loaded successfully.

Next adapter: SMBus nForce2 adapter at 1c00 (i2c-0)
Do you want to scan it? (YES/no/selectively): yes
Client found at address 0x50
Probing for `Analog Devices ADM1033'...                     No
Probing for `Analog Devices ADM1034'...                     No
Probing for `SPD EEPROM'...                                 Yes
    (confidence 8, not a hardware monitoring chip)
Probing for `EDID EEPROM'...                                No
Client found at address 0x51
Probing for `Analog Devices ADM1033'...                     No
Probing for `Analog Devices ADM1034'...                     No
Probing for `SPD EEPROM'...                                 Yes
    (confidence 8, not a hardware monitoring chip)

Next adapter: NVIDIA i2c adapter  (i2c-1)
Do you want to scan it? (YES/no/selectively): yes
Client found at address 0x49
Probing for `National Semiconductor LM75'...                No
Probing for `National Semiconductor LM75A'...               No
Probing for `Dallas Semiconductor DS75'...                  No
Probing for `National Semiconductor LM77'...                No
Probing for `Analog Devices ADT7410'...                     No
Probing for `Dallas Semiconductor DS1621/DS1631'...         No
Probing for `National Semiconductor LM73'...                No
Probing for `National Semiconductor LM92'...                No
Probing for `National Semiconductor LM76'...                No
Probing for `Maxim MAX6633/MAX6634/MAX6635'...              No
Probing for `SMSC EMC1023'...                               No
Probing for `SMSC EMC1043'...                               No
Probing for `SMSC EMC1053'...                               No
Probing for `SMSC EMC1063'...                               No
Client found at address 0x50
Probing for `Analog Devices ADM1033'...                     No
Probing for `Analog Devices ADM1034'...                     No
Probing for `SPD EEPROM'...                                 No
Probing for `EDID EEPROM'...                                Yes
    (confidence 8, not a hardware monitoring chip)

Next adapter: NVIDIA i2c adapter  (i2c-2)
Do you want to scan it? (YES/no/selectively): yes

Next adapter: NVIDIA i2c adapter  (i2c-3)
Do you want to scan it? (YES/no/selectively): yes

Now follows a summary of the probes I have just done.
Just press ENTER to continue:

Driver `it87':
  * ISA bus, address 0x290
    Chip `ITE IT8716F Super IO Sensors' (confidence: 9)

Driver `k8temp' (autoloaded):
  * Chip `AMD K8 thermal sensors' (confidence: 9)

To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
it87
#----cut here----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!

Do you want to add these lines automatically to /etc/modules? (yes/NO)yes
Successful!

Monitoring programs won't work until the needed modules are
loaded. You may want to run 'service module-init-tools start'
to load them.

Unloading i2c-dev... OK
Unloading cpuid... OK

Veuillez noter qu'à la question "Do you want to add these lines automatically to /etc/modules?" il faudra répondre "Yes". Celle-ci permet de mettre à jour certains modules et drivers afin de pouvoir récupérer les informations liées aux sondes spécifiques de votre hardware.

Pour les activer, vous pouvez tapez:

modprobe coretemp
modprobe it87

Récupération de la température du processeur

Une fois "lm_sensors" installé et configuré, il ne reste plus qu'à lancer la commande suivante pour récupérer les informations (voltage, température, …) de votre matériel:

sensors

Ce qui retournera:

acpitz-virtual-0
Adapter: Virtual device
temp1:        +40.0°C  (crit = +75.0°C)

atk0110-acpi-0
Adapter: ACPI interface
Vcore Voltage:       +1.23 V  (min =  +0.85 V, max =  +1.60 V)
+12V Voltage:       +12.22 V  (min = +10.20 V, max = +13.80 V)
+5V Voltage:         +4.92 V  (min =  +4.50 V, max =  +5.50 V)
+3.3V Voltage:       +3.34 V  (min =  +2.97 V, max =  +3.63 V)
CPU_FAN FAN Speed:     0 RPM  (min =  800 RPM)
CHA_FAN1 FAN Speed: 1167 RPM  (min =  800 RPM)
PWR_FAN FAN Speed:  3534 RPM  (min =  800 RPM)
CHA_FAN2 FAN Speed: 1192 RPM  (min =  800 RPM)
CPU Temperature:     +25.0°C  (high = +60.0°C, crit = +95.0°C)
MB Temperature:      +30.0°C  (high = +45.0°C, crit = +95.0°C)

k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp:   +24.0°C
Core1 Temp:   +25.0°C

Problème de SuperBlock: réparer une partition corrompue

partition superblock

Aujourd'hui, une des partitions sur mon serveur Linux a été marquée comme étant corrompue. L'erreur indique l'impossibilité de lire un superblock:

/dev/sda3: Input/output error
mount: /dev/sda3: can't read superblock

Ce genre d'erreur est fréquente sur les partitions de type Ext3 mais rassurez vous, il est possible de réparer la partition.

Les erreurs de SuperBlock sont elles réparables ?

Les erreurs dûes aux superblocks sont facilement récupérables car le système de fichier Ext3 ne stocke pas les superblocks sur la partition elle-même. Celà permet ainsi de ne pas avoir des données corrompues sur la partition elle même.

Veuillez noter qu'avant toute récupération ou réparation d'une partition, il faut que celle-ci soit démontée (unmounted). Une solution simple pour être sûr que la partition soit démontée est de démarrer votre machine est "Mode Récupération" (Rescue Mode).

SuperBlocks temporaires pour monter la partition

La première étape consiste à localiser le superblock de la partition (dans mon cas /dev/sda3)

dumpe2fs /dev/sda3 | grep superblock

Ce qui retourne:

Primary superblock at 0, Group descriptors at 1-6
Backup superblock at 32768, Group descriptors at 32769-32774
Backup superblock at 98304, Group descriptors at 98305-98310
Backup superblock at 163840, Group descriptors at 163841-163846
Backup superblock at 229376, Group descriptors at 229377-229382
Backup superblock at 294912, Group descriptors at 294913-294918
Backup superblock at 819200, Group descriptors at 819201-819206
Backup superblock at 884736, Group descriptors at 884737-884742
Backup superblock at 1605632, Group descriptors at 1605633-1605638
Backup superblock at 2654208, Group descriptors at 2654209-2654214
Backup superblock at 4096000, Group descriptors at 4096001-4096006
Backup superblock at 7962624, Group descriptors at 7962625-7962630
Backup superblock at 11239424, Group descriptors at 11239425-11239430
Backup superblock at 20480000, Group descriptors at 20480001-20480006
Backup superblock at 23887872, Group descriptors at 23887873-23887878

En lisant la sortie, on note qu'il faut réparer le système de fichier en utilisant un superblock temporaire #32768. On lance donc la commande:

fsck -b 32768 /dev/sda3

Ce qui retourne:

fsck 1.40.2 (12-Jul-2007)
e2fsck 1.40.2 (12-Jul-2007)
/dev/sda3 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong for group #241 (32254, counted=32253).
Fix? yes
Free blocks count wrong for group #362 (32254, counted=32248).
Fix? yes
Free blocks count wrong for group #368 (32254, counted=27774).
Fix? yes
..........
/dev/sda3: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda3: 59586/30539776 files (0.6% non-contiguous), 3604682/61059048 blocks

Maintenant on peut remonter la partition via la commande:

mount /dev/sda3 /webbackup

Veuillez noter que l'on aurait pu utiliser la commande suivantes:

mount sb=32768 /dev/sda3 /mnt

Pour être sûr que votre partition est saine et correctement montée, il suffit d'essayer de créer un dossier ou bien copier un fichier:

cd /webbackup
mkdir test
ls -l
cp file /home/jhd/test.txt

Dans mon cas j'ai eu la chance que ce soit ma partition de backup qui soit affecté par un superblock corrompu. Pensez à toujours sauvegarder vos données sur un média externe :-)

Récupérer des informations matérielles via SSH

Memory

Aujourd'hui j'ai été confronté à une intrigue toute simple: comment connaitre le type (DDR, DDR2, DDR3) et la vitesse de la mémoire RAM installée sur mon serveur dédié Linux ?

En effet, lorsque le serveur Linux est dans vos locaux, il suffit de décapoter la machine et de regarder directement sur les barettes mais dans le cas d'un serveur Linux hébergé à distance c'est plus compliqué.

Et bien pas tant que çà puisqu'il est possible de récupérer les informations matérielles de votre serveur Linux via une simple commande SSH.

Récupérer les informations matérielles via SSH

Pour récupérer les informations hardware via SSH, nous allons utiliser l'application "DmiDecode".

Cette application en ligne de commande permet d'extraire des informations relatives à vos composants et à votre matériel (RAM, CPU, Bios, Chassis, Carte mère, Numéros de série,…).

En explorant la page man de l'application "DmiDecode", on peut voir tous les types d'informations hardware que l'on peut récupérer sous Linux:

       Type   Information
       ââââââââââââââââââââââââââââââââââââââââ
          0   BIOS
          1   System
          2   Base Board
          3   Chassis
          4   Processor
          5   Memory Controller
          6   Memory Module
          7   Cache
          8   Port Connector
          9   System Slots
         10   On Board Devices
         11   OEM Strings
         12   System Configuration Options
         13   BIOS Language
         14   Group Associations
         15   System Event Log
         16   Physical Memory Array
         17   Memory Device
         18   32-bit Memory Error
         19   Memory Array Mapped Address
         20   Memory Device Mapped Address
         21   Built-in Pointing Device
         22   Portable Battery
         23   System Reset
         24   Hardware Security
         25   System Power Controls
         26   Voltage Probe
         27   Cooling Device
         28   Temperature Probe
         29   Electrical Current Probe
         30   Out-of-band Remote Access
         31   Boot Integrity Services
         32   System Boot
         33   64-bit Memory Error
         34   Management Device
         35   Management Device Component
         36   Management Device Threshold Data
         37   Memory Channel
         38   IPMI Device
         39   Power Supply

Récupérer les informations hardware de votre RAM

Voici la commande à utiliser:

dmidecode --type 17

Ce qui retournera:

# dmidecode 2.9
SMBIOS 2.5 present.

Handle 0x0032, DMI type 17, 27 bytes
Memory Device
        Array Handle: 0x0031
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 2048 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMM_A1
        Bank Locator: Bank0/1
        Type: DDR2
        Type Detail: None
        Speed: 800 MHz (1.2 ns)
        Manufacturer: None
        Serial Number: None
        Asset Tag: None
        Part Number: None

Handle 0x0033, DMI type 17, 27 bytes
Memory Device
        Array Handle: 0x0031
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 2048 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMM_B1
        Bank Locator: Bank2/3
        Type: DDR2
        Type Detail: None
        Speed: 800 MHz (1.2 ns)
        Manufacturer: None
        Serial Number: None
        Asset Tag: None
        Part Number: None

Handle 0x0034, DMI type 17, 27 bytes
Memory Device
        Array Handle: 0x0031
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: No Module Installed
        Form Factor: DIMM
        Set: None
        Locator: DIMM_A2
        Bank Locator: Bank4/5
        Type: Unknown
        Type Detail: None
        Speed: Unknown
        Manufacturer: None
        Serial Number: None
        Asset Tag: None
        Part Number: None

Handle 0x0035, DMI type 17, 27 bytes
Memory Device
        Array Handle: 0x0031
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: No Module Installed
        Form Factor: DIMM
        Set: None
        Locator: DIMM_B2
        Bank Locator: Bank6/7
        Type: Unknown
        Type Detail: None
        Speed: Unknown
        Manufacturer: None
        Serial Number: None
        Asset Tag: None
        Part Number: None

On récupère donc toutes les informations disponibles sur nos barettes de mémoire RAM.

Pour récupérer uniquement la vitesse de votre RAM, vous pouvez utiliser:

dmidecode --type 17  | grep -i speed

Ce qui retournera:

        Speed: 800 MHz (1.2 ns)
        Speed: 800 MHz (1.2 ns)
        Speed: Unknown
        Speed: Unknown

Etre notifié automatiquement par email d’une mise à jour de sécurité sur Ubuntu

security

Etant en vacances quelques jours, je me suis accordé une petite pause ordinateur. 

Toutefois, ne voulant pas mettre en danger mon serveur, je me suis demandé comment être notifié des mises à jour importantes de sécurité.

Après avoir fouillé sur Internet, j'ai trouvé de nombreux scripts shell mais ceux-ci s'avèrent trop complexes pour l'usage que j'en ai. Et j'ai finalement trouvé l'application "apticron" qui permet l'envoi automatique d'email lorsqu'il y a des mises à jour de sécurité en attente.

C'est exactement ce que dont j'ai besoin.

Installer Apticron

Pour installer "apticron" ouvez un terminal et tapez:

apt-get install apticron

Configurer Apticron pour envoyer des emails

Pour configurer "apticron", il suffit d'éditer son fichier de configuration "/etc/apticron/apticron.conf".

Il vous suffit alors de spécifier votre adresse email et de modifier les paramètres que vous souhaitez puis de sauvegarder le fichier.

Pour information le script de cron est localisé dans "/etc/cron.daily/apticron".

Pour ne rater aucune mise à jour

Aucun système n'étant infaillible, je vous conseille de vous inscrire sur les newsletters de sécurité d'Ubuntu (et Debian). Vous recevrez ainsi des emails et/ou des feeds RSS concernant les mises à jour de sécurité.

Capturer le trafic d’une interface réseau avec TCPDump

tcpdump

Aujourd'hui, mon serveur Web a subi des attaques de type FLOOD (une multitude de connection sur le serveur Web sous forme de requêtes de type GET).

J'ai dû analyser le trafic passant sur mon interface réseau afin de voir qui floodait mon serveur Web sur le port 80.

Sur un serveur Windows, il suffirait d'utiliser le logiciel Wireshark afin de capturer le trafic réseau pour l'analyser. Mon serveur étant sous Linux Debian, nous utiliserons donc TCPDump.

TCPDump est ce que l'on appelle classiquement un "packet analyzer".

Présentation de TCPDump

TCPDump est un logiciel de supervision réseau et d'acquisition de données réseau. Il est principalement utilisé pour débugger et trouver les problèmes relatifs aux trames et paquets qui circulent sur le réseau.

Utilisation de TCPDump

TCPDump est un logiciel très complet qui offre de nombreuses options pour l'utiliser.

Monitorer tout le trafic d'une interface

tcpdump -i eth1

Monitorer tout le trafic d'une interface sur le port 80 (HTTP)

tcpdump -i eth1 'port 80'

Monitorer tout le trafic d'une interface sur le port 25 (SMTP)

tcpdump -vv -x -X -s 1500 -i eth1 'port 25'

 

Voici le détail des options utilisées:

  • -vv : sortie écran
  • -x : affiche les données de chaque paquet en plus du header
  • -X : affiche les données de chaque paquet au format hexadécimal et ASCII sauf la couche de niveau 2. Cette fonction est pratique car elle nous retourne de nombreuses informations pratiques pour le débuggage et la programmation.
  • -s 1500: permet d'indiquer le nombre de bytes à capturer pour chaque paquet. Par défaut, la valeur utilisée est 68 bytes.
  • -i eth1 : monitorer l'interface eth1

Utiliser un cron pour capturer le trafic

Dans mon cas, je souhaite capturer et analyser le trafic suite à une attaque. La capture des paquets se faisant à un instant T, il ne sert à rien de lancer une capture l'attaque finie.

Par chance (ou malchance), les attaques se répètent chaque jour entre minuit et une heure. Il est donc intéressant de capturer à ce moment précis. Pour celà, nous allons lancer la capture via un cron mais qui limitera la capture à 100000 paquets (afin de ne pas charger le disque dur du serveur). Voilà la commande utilisée:

@midnight /usr/sbin/tcpdump -n -c 100000 -w /home/jhd/http_80.trace

Pour lire le fichier de capture (http_80.trace), il suffit de faire:

tcpdump -X -vv -r /home/jhd/http_80.trace

TCPDump est vraiment un super logiciel qui vous rendra bien des services. Ses fonctionnalités sont nombreuses donc n'hésitez pas à consulter l'aide via "man tcpdump".

Pour l'anecdote, ce qui floodait ma machine était tout simplement une application de test de proxy que j'étais en train de développer.