jeudi 25 octobre 2012

Candy, chat are no dead yet

Candy est un chat en javascript qui semble très flexible et dispose de plus en plus de plugin.
http://candy-chat.github.com/candy/


Il s'intègre bien avec Openfire même si c'est un peu compliqué la première fois.
Je l'ai par exemple couplé avec Openfire, lui même couplé avec le LDAP de Zimbra pour créer un chat room pour les utilisateurs.

Config Openfire


Dans la paramètres du serveur activé HTTP Binding.
Activlé les ports 7070 et 7443.
Activé le script syntax : Allows BOSH.
Laisser ar défaut la Cross-domain policy.

Installation Candy


Télécharger Candy dans votre répertoire www.
Définir votre vhost.
La difficulté est dans Rewrite rule

RewriteRule http-bind/ http://monserver.com:7070/http-bind/ [P]


Config vhost


<VirtualHost *:8081>
ServerName mon.server.com
DocumentRoot /var/www/candy/
<Directory />
                Options FollowSymLinks
                AllowOverride All
</Directory>
<Directory /var/www/candy>
               Options Indexes FollowSymLinks MultiViews
              AllowOverride All
              Order allow,deny
              allow from all
</Directory>
             AddDefaultCharset UTF-8
            Options +MultiViews
            RewriteEngine On
            RewriteRule http-bind/ http://monserver.com:7070/http-bind/ [P]
</VirtualHost>

Config cany/index.html 


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Candy - Chats are not dead yet</title>
<link rel="shortcut icon" href="res/img/favicon.png" type="image/gif" />
<link rel="stylesheet" type="text/css" href="res/default.css" />
<link rel="stylesheet" type="text/css" href="candy-chat-candy-plugins-e9310e4/colors/candy.css" />
        <link rel="stylesheet" type="text/css" href="candy-chat-candy-plugins-e9310e4/roomPanel/default.css" />
        <link rel="stylesheet" type="text/css" href="candy-chat-candy-plugins-e9310e4/inline-images/candy.css" />

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<script type="text/javascript" src="libs/libs.min.js"></script>
<script type="text/javascript" src="candy.min.js"></script>
<script type="text/javascript" src="candy-chat-candy-plugins-e9310e4/colors/candy.js"></script>
        <script type="text/javascript" src="candy-chat-candy-plugins-e9310e4/inline-images/candy.js"></script>
        <script type="text/javascript" src="candy-chat-candy-plugins-e9310e4/roomPanel/roomPanel.js"></script>

<script type="text/javascript">
$(document).ready(function() {
Candy.init( 'http://monserveur.com/http-bind/', {
core: { debug: false, autojoin: ['info@conference.monserver.com' ]},
view: { resources: 'res/', language: 'fr'}
});

// enable Colors plugin (default: 8 colors)
                        CandyShop.Colors.init();
CandyShop.InlineImages.init();
// enable RoomPanel plugin
                        CandyShop.RoomPanel.init({
                                // domain that hosts the muc rooms, only required if autoDetectRooms is enabled
                                mucDomain: 'info.monserver.com',

                                // allow you to force a list of rooms, only required if autoDetectRoom is disabled
                                roomList: [
                                       {
                                                name: 'info',
                                                jid:  'info@monserver.com'
                                        },
                                                                       ],
                                // show room list if all rooms are closed, default value is true. [optional]
                                showIfAllTabClosed: true,
                                // detect rooms before showing list, default value is true. [optional]
                                autoDetectRooms: true,
                                // how long in seconds before refreshing room list, default value is 600. [optional]
                                roomCacheTime: 600
                        });
Candy.Core.connect();
});
</script>
</head>
<body>
<div id="candy"></div>
</body>
</html>

Merci à Candy


Le support est assuré au travers de google group, la communauté Candy est très active.
Merci à eux.
https://groups.google.com/forum/#!forum/candy-chat


vendredi 5 octobre 2012

Zabbix superviser Postfix

Superviser Postfix pour éviter par exemple que des emails restent bloquer sans s'en appercevoir.
Recette: un zabbix, un template, un petit script et l'erreur est corrigée.

Zabbix Postfix Template

Template Zabbix-Postfix
Les items, 2 triggers et un graph détaillant les items. Ce template est ccompatible Zabbix 2.0

Installer les outils

Installer sur les serveurs les outils suivants : pflogsumm et logcheck

Config Zabbix agent

Pour récupérer l'était de la queue, on déclare un Userparmeter qui exécutera la commande suivante ;

UserParameter=postfix.mailq,mailq | grep -v "Mail queue is empty" | grep -c '^[0-9A-Z]'

Script Zabbix-Postfix

Créer le script suivant qui une fois les logs analyser, envoi les données au moyen de zabbix_sender au serveur qui actualisera les items correspodants.
#!/bin/bash +x
PFLOGSUMM=/usr/sbin/pflogsumm.pl
MAILLOG=/var/log/mail.log
LOGTAIL=/usr/sbin/logtail
DAT1=/tmp/zabbix-postfix-offset.dat
DAT2=$(mktemp)
ZABBIX_SENDER=/usr/bin/zabbix_sender
ZABBIX_HOST=monserver #même nom que dans Zabbix
ZABBIX_SERVER=monserverzabbix.com
ZABBIX_CONF=/etc/zabbix/zabbix_agentd.conf
DEBUG=0

function zsend {
 key="postfix.`echo "$1" | tr ' -' '_' | tr '[A-Z]' '[a-z]' | tr -cd [a-z_]`"
 value=`grep -m 1 "$1" $DAT2 | awk '{print $1}'`

 [ ${DEBUG} -ne 0 ] && echo "Send key \"${key}\" with value \"${value}\"" >&2
 $ZABBIX_SENDER -s $ZABBIX_HOST -z $ZABBIX_SERVER -c $ZABBIX_CONF -k "${key}" -o "${value}" 2>&1 >/dev/null
}

$LOGTAIL -f $MAILLOG -o $DAT1 | $PFLOGSUMM -h 0 -u 0 --bounce_detail=0 --deferral_detail=0 --reject_detail=0 --no_no_msg_size --smtpd_warning_detail=0 > $DAT2

zsend received
zsend delivered
zsend forwarded
zsend deferred
zsend bounced
zsend rejected
zsend held
zsend discarded
zsend "reject warnings"
zsend "bytes received"
zsend "bytes delivered"
zsend senders
zsend recipients

rm $DAT2

Automatiser le script

Toutes les minutes

* * * * * /etc/zabbix/zabbix-postfix.sh

Astuce supprimer les emails bloqués en queue

# perl -e 'foreach (`postqueue -p`) {`postsuper -d $1` if /^([0-9A-Z]+)/}'


Remerciements

http://blog.hbis.fr/2012/03/30/zabbix-postfix_monitoring/
http://www.zabbix.com/wiki/howto/monitor/mail/postfix/monitoringpostfix

mardi 28 août 2012

Fail2ban + Asterisk 1.8


Fail2ban est souvent utilisé avec Asterisk pour sécuriser les connexions, éviter les fraudes.
Mais depuis la version 1.8 le format des log a quelque peu changé.
Le port de l'utilisateur distant a été ajouté et par conséquent les filtres Asterisk existant sont inopérants.

Par conséquend modifier comme suit la configuration de votre jail pour Asterisk.

NOTICE.* .*: Registration from '.*' failed for '<HOST>(:[0-9]{1,5})?' - Wrong password
NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>(:[0-9]{1,5})?' - No matching peer found

La première ligne permet de bloquer les connexions intempestive.
La seconde bloque les appels anonymes ou les appels entrants venant de peer inconnu.


mardi 21 août 2012

SSH reverse tunnel

Parfois il est pratique de mettre en place un tunnel ssh inversé.
Par exemple, le serveur de mon client déménage et change d'IP pour être sûr d'en récupérer le contrôle je mets en place un tunnel ssh inverse.


La commande a éxécuté sur le serveur du client :
ssh -p 2222 -R 10000:localhost:22 root@monserveur





Une fois connecté sur mon serveur pour aller sur le serveur du client
ssh -p 10000 localhost

Pour automatiser créer un script : reverse_ssh.sh

#!/bin/sh
#set -x
COMMAND="ssh -p 2222 -N -f -R 10000:localhost:22 root@monserver"
pgrep -f -x "$COMMAND" > /dev/null 2<&1 || $COMMAND

Exécuter ce script par cron
*/10 * * * * /bin/sh /root/reverse_ssh.sh



Avec l'aide de l'excellent blog

http://rhnotebook.wordpress.com/2010/02/13/reverse-ssh-port-forwarding-t-o-i-c-o-r-g/

mercredi 15 août 2012

Installer un serveur dhcp et tftp

Souvent avec les téléphones SIP, nous avons besoin de mettre à jour le firmware et les fichiers de configurations.

Le plus simple est d'utiliser TFTP pour automatiser la mise à jour.
la seule difficulté est declarer les options dhcp 66 et 150 pour indiquer aux téléphones SIP l'adresse du serveur TFTP.

Installer TFTP server

Installer les paquets xinetd tftpd.

Créer le fichier /etc/xinetd.d/tftp

service tftp { 
protocol = udp 
port = 69 
socket_type = dgram 
wait = yes 
user = nobody 
server = /usr/sbin/in.tftpd 
server_args = /tftpboot 
disable = no 
}

Placer les fichiers dans /tftpboot, changer le propriétaire en nobody.

Redémarrer xinited

Installer DHCPD

Editer /etc/dhcp/dhcpd.conf

ddns-update-style none;
ddns-update off;
option T150 code 150 = string; #Déclaration DHCP option 150
deny client-updates;
one-lease-per-client false;
allow bootp;

subnet 10.0.0.0 netmask 255.255.255.0 {
interface eth0;
range 10.0.0.100 10.0.0.150;
default-lease-time 6000;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option time-offset -28000;
option tftp-server-name "tftp://10.0.0.1"; #Option DHCP 66
option ntp-servers pool.ntp.org;
option T150 "10.0.0.1"; #Option 150, ip du server TFTP
}

Redémarrer dhcpd

lundi 2 juillet 2012

Memo Proxmox/OpenVz

Une petite suite de chose à penser lorsqu'on utilise Proxmox et OpenVZ.

Ne pas oublier le boot
Lorsqu'on crée un CT ou un VM avec Proxmox curieusement l'option boot au démarrage n'est pas proposée et immanquablement à un moment le serveur redémarre sans démarrer automatiquement les machines virtuelles. Pensez donc pas à activer le boot de vos VM une fois crées.
onboot="yes"

On peut le faire également pour les CT dans /etc/vz/conf/100.conf et mettre l'option boot à yes.
Pour les VM /etc/pve/qemu-server/100.conf et mettre l'option onboot à 1.
onboot : 1

Mettre les CT à l'heure
Autre chose stressant avec les CT, tous les templates ont la timezone de Moscou. J'adore OpenVZ et je remercie les auteurs mais mes serveurs ne sont pas Moscou.
Ajouter la conf du CT /etc/vz/conf/100.conf l'option suivante :

CAPABILITY="SYS_TIME:on"
Reboot du CT

puis remplacer /etc/localtime par la bonne timezone.
cp /usr/share/timezone/xxx /etc/localtime

Et le tour est joué. C'est mieux pour les logs.

lundi 25 juin 2012

OpenVZ Ubuntu Iptables problèmes de modules

Je rencontre toujours ce problèmes lorsque j'utilise Iptables sur un VE avec les templates Ubuntu, pas avec les Debian.
Il manque les modules nécessaires.

Starting Shorewall....

FATAL: Could not load /lib/modules/2.6.32-4-pve/modules.dep: No such file or directory
FATAL: Could not load /lib/modules/2.6.32-4-pve/modules.dep: No such file or directory
FATAL: Could not load /lib/modules/2.6.32-4-pve/modules.dep: No such file or directory
done.

C'est normal puisqu'on ne peut pas charger de modules dans un container mais comment faire ?


Tout d'abord et passer les modules au VE, soit en modifiant le fichier de configuration /etc/vz/conf/100.conf pour le VE 100 soit en passant les paramètres
IPTABLES="ip_tables iptable_filter iptable_mangle ipt_limit ipt_REJECT ipt_length ip_conntrack ipt_state "
ou 
vzctl set 100 --iptables iptable_filter --iptables ipt_length --iptables ipt_limit --iptables iptable_mangle --iptables ipt_REJECT--iptable ipt_state --iptables ipt_conntrack --save


Quelque soit votre choix, il faudra redémarrer le VE.


Ensuite revérifier les modules
depmod -a 


Après je sais pas si c'est très orthodoxe je crée les répertoires manquants :
mkdir /lib/modules/2.6.32-4-pve


Je redemarre iptables et ça fonctionne.

mercredi 20 juin 2012

Zabbix 2.0 modification du script initialisation

Je viens d'installer Zabbix 2.0, sympa.
Je l'ai pas encore tester, l'interface est un peu plus sympa.

Juste un petit souci au démarrage de zabbix_server et zabbix_agent.

Au démarrage ils ne se réfèrent pas au fichier de conf placé dans c:\etc\zabbix\ et utilise les paramètres par défaut particulièrement le fait de mettre les logs dans /tmp

Pour utiliser son fichier de configuration modifier le fichier init.

Ajouter au /etc/init.d/zabbix-server

CONF="--config /etc/zabbix/zabbix_server.conf"

case "$1" in
  start)
    log_daemon_msg "Starting $DESC" "$NAME"
        start-stop-daemon --oknodo --start --pidfile $PID \
          --exec $DAEMON -- $CONF < /dev/null &> /dev/null 
    case "$?" in
        0) log_end_msg 0 ;;
        *) log_end_msg 1; exit 1 ;;
    esac
        ;;

Idem pour le zabbix-agent.

Attention il y a bien un espace entre -- et $CONF

lundi 18 juin 2012

Nginx reverse proxy avec SSL


Nginx est toujours plus populaire et est utilisé comme : serveur HTTP bien sûr, reverse proxy avec ou sans cache, réécriture d’URL, de protéger et masquer son infrastructure.

Dernièrement, je l'ai utilisé comme reverse proxy afin de regrouper sur un même adresse IP plusieurs sites web (plusieurs serveurs et technos : IIS, Apache, Tomcat) et de préparer une future migration de data center.

Utilisé comme reverse proxy la config est très simple.

Sous Debian télécharger la dernière version.


Ajouter à  /etc/apt/sources.list
deb http://nginx.org/packages/debian/ squeeze nginx 
deb-src http://nginx.org/packages/debian/ squeeze nginx


Puis installer nginx et openssl
apt-get install nginx openssl

Configurer nginx

/etc/nginx/nginx.conf

user nginx;
worker_processes 2;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
server_names_hash_bucket_size 64;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
send_timeout 5m;
}

Créer le site 

dans /etc/nginx/sites-available
server {
listen 80;
server_name www.nomdusite.com *.nomdusite.com nomdusite.com;
access_log /var/log/nginx/nomdusite .com.log;
error_log /var/log/nginx/nomdusite .com.error.log notice;
location / {
proxy_pass http://www.nomdusite.com;
}
}

J'ai déclarer dans le /etc/hosts l'adresse privée de nomdusite.com
192.168.0.1 www.nomdusite.com

Utiliser SSL

Pour gérer le reverse proxy avec SSL

Créer  une répertoire contenant le certificat SSL.
mkdir -p /etc/nginx/ssl/nomdusite
cd /etc/nginx/ssl/nomdusite

Générer le certificat SSL à faire signer par une autorité de confiance.
openssl req -new -newkey rsa:2048 -nodes -keyout nomdusite.com.key -out nomdusite.com.csr

Copier le contenu du fichier nomdusite.com.csr au près de votre CA, dans mon cas Godaddy.

Récupérer le certificat nomdusite.com.crt et déclarer le dans la configuration de Nginx avec la clé nomdusite.com.key obtenue lors de la génération du fichier csr.

server {
listen 443;
ssl on;
server_name www.nomdusite.com *.nomdusite.com nomdusite.com;
ssl_certificate /etc/nginx/ssl/nomdusite/nomdusite.com.crt;
ssl_certificate_key /etc/nginx/ssl/nomdusite/nomdusite.key;
access_log /var/log/nginx/nomdusite .com.log;
error_log /var/log/nginx/nomdusite.com.error.log notice;
location / {
proxy_pass https://www.nomdusite.com:443;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

Il est parfois nécessaire de chaîner les certificats, je vous renvoi à la documentation de Nginx.


Pour tester la syntaxe de la configuration de nginx :
nginx -t

Pour activer le site, créer un alias dans /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/nomdusite.com /etc/nginx/sites-enabled/nomdusite.com

Puis ensuite pour appliquer la nouvelle configuration :

/etc/init.d/nginx reload

vendredi 15 juin 2012

Nobel pour Linux


Nobel de technologie pour Linus Torvalds, partage avec Shinya Yamanaka pour son travail sur les cellules souches.

Je trouve ca formidable et remercie Linus sans qui beaucoup de choses n'aurait pas été possible, l’informatique moderne, mon métier et ma passion.
Je me souviens de mon premier Mandrake puis Debian et de Ubuntu, hedgedog je crois.

Incroyable d'avoir crée tout ce pan de l'informatique d'aujourd'hui.
Bravo aussi bien a Andrew Tanenbaum et a son Minix qui reprit par Linus donne naissance a Linux et inaugure ce fameux gout pour les jeux de mots douteux que l'on retrouve avec Linux, les commandes : cat/tac, more/less et j'en oublie.
Merci aussi a Richard Stallman et a la philosophie du libre : nous ne voulons pas des free beer ! Quoique.

Sans être un gourou ou un fanatique de Linux, je suis content de voir Linux récompensé cela prouve que l'on peut faire de grande chose sans un avoir a payer des $$$ en marketing ou en certifications... (même si Redhat et consort, bof bof, d'ou le débat Linux/Open source, ....)

Merci d'avoir ouvert une porte et laisser entrer qui veut.
Je pense toujours que les autres finiront par s’effondrer, on ne peut pas tout emprisonner.


Un entretien a la BBC

Pour Linux et Linus, hip hip hip. Hourra.

lundi 4 juin 2012

Convertir Windows physique vers Windows virtuel


Comment convertir un Windows physique vers une machine virtuel KVM, avec Proxmox, bien évidement.

C'est simple mais réserve quelques surprises.

J'ai suivi la procédure Selfimage car cela évite d'immobiliser le serveur.

Appliquer le patch mergeide.reg pour mettre à jour les drivers auparavant.

Mais malgré tout au 1er boot, blue screen of the death erreur 0x07B signifiant que Windows n'a pas les drivers pour accéder au disque.

Solution : la toolbox de l'adminsys : Hiren'CD Boot.

Boot dessus et mise à jour de Windows à l'aide l'utilitaire fix_hdc.
Parfait ça fonctionne Windows, boot et ............. autre BOD 0x000000CE

Oups !!!

En fait c'est simple Windows essaye de charger les pilotes d'un dispositif qui n'existe plus.
Regarder bien le driver mentionné lors du BOD.
Par exemple  : processr.sys

Redémarrer le Windows en mode sans échec, ouvrer regedit aller chercher la valeur correspondante :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Processor

Et changer la valeur start à 4 pour ne pas le charger.

http://msdn.microsoft.com/en-us/library/windows/hardware/ff560226(v=vs.85).aspx

mardi 29 mai 2012

Proxmox, VZDUMP et LVM


En ce moment j'utilise beaucoup Proxmox, une solution Debian intégrant OpenVZ et QEMU/KVM.

Proxmox est très puissant, très agile et permet de virtualiser des machines Linux et Windows sans impact sur les performances avec de nombreuses fonctionnalités : 
  • Cluster, 
  • Backup, 
  • Web interface de management,
  • Template personnalité pour facilité la mise en production.
Proxmox permet de faire tout ça et gratuitement bien sûr.
Beaucoup de hosting compagnies l'utilisent ou bien seulement OpenVZ, la plus part des VPS sont des containers ou des VM Xen.

Une des qualités principales de Proxmox est VZDUMP.
VZDUMP permet de sauvegarder le serveur virtuel selon 3 modes :
  • Arrêt du serveur
  • Interruption du serveur, comme un freeze
  • Snapshot sans arrêt du serveur.


Évidement le mode snapshot est le plus intéressant mais curieusement avec une installation typique de Proxmox ce mode n'est pas possible car pour effectuer le snapshot il faut
  • Une partition source, un volume logique utilisant LVM
  • Une espace non utilisé, pour créer le volume logique snapshot
  • Une partition cible qui va recevoir le backup
Or la partition cible n'existe pas.

Proxmox installe
1 Volume groupe : PVE, conserve de l'espace libre et également ;
3 volumes logique :
  • /
  • swap
  • /var/lib/vz, qui contient les données de VZ (les serveurs virtuels)



Pour utiliser Vzdump en snapshot il faut conserver l'espace libre et créer une nouvelle partition Backup.



Étapes à suivre :


Arrêter les services VZ
/etc/init.d/vz stop (arrêter tous les VM et VE)
Démonter la partition Data
umount /var/lib/vz
Vérifier le filesystem de la partition
e2fsck /dev/pve/data
Réduire le filesystem de la partition
Réduire le Volume logique
lvreduce -r -L -500G /dev/pve/data
Vérifier le filesystem de la partition
e2fsck /dev/pve/data
Remonter la partition
mount /var/lib/vz
Créer le volume logique Backup
lvcreate -L 500G -n backup pve
Créer le filesystem de Backup
mkfs.ext3 -m 1 -v /dev/pve/backup
Créer le point de montage
mkdir /var/lib/vz/backup
Monter le disque
mount /dev/pve/backup /var/lib/vz/backup/
Démarrer les services VZ
/etc/init.d/vz start


Ne pas oublier d'ajouter /var/lib/vz/backup dans /etc/fstab


Pour éviter d'avoir un problèmes plutôt que d'utiliser efsresize, 
je préfère utiliser lvreduce avec l'option -r pour efsresize.


Évidement l'inverse est possible avec lvextend.

jeudi 3 mai 2012

Using plesk, impossible to connect to SSH

Lately for a client I managed his Plesk 9.5 server (Centos 5.4)
But impossible to connect it using SSH.

Of course I searched everywhere in the plesk panel :
Ok - SSH is enable for the domain administrator and so on

Finally I tried to restarted ssh using the schedule task.
Firstly don't forget to change in the properties the address to recieve the crontab message and Eureka I got :

/var/empty must be owned by root and not group or world-writable

Just make another schedule task to apply the good rights and restart sshd :

chown root:root /var/empty -R && /etc/init.d/sshd restart

And everything is fine now

mercredi 4 avril 2012

Backup avec Rsnapshot

Pour sauvegarder mes serveurs Linux, j'utilise maintenant Rsnapshot.

Il s'agit d'un script perl qui utilise rsync mais qui en plus permet de gérer la rotation des backups et de mettre en place une stratégie type fils/pere/grand-pere.

La configuration est très simple et est regroupe dans /etc/rsnapshot.conf
Seule particularité :

  • Utiliser des "tab" et non des espaces
  • Utiliser des / a la fin des path


    • bon :           /home/
    • mauvais :    /home

Penser toujours a exécuter : rsnapshot configtest pour vérifier votre config et sa syntaxe.
Ensuite vous pouvez utiliser rsnapshot du pour vérifier l'espace disque utilise.

Comme pour rsync on definit le serveur d'origine et la cible par exemple :

backup                              tintin@xxx.xxx.xxx.xxx:/etc/      backuptintin/


Bien sur avant on transmet la clé publique du serveur qui fait tourner rsnapshot vers le serveur que l'on souhaite sauvegarder pour s’authentifier et se connecter.

Ensuite en fonction de la configuration la rotation s'effectue :


  • daily.0
  • daily.1
  • daily.2
  • daily.3
  • daily.4
  • daily.5
  • daily.6
  • weekly.0
  • weekly.1
Le répertoire cible est le daily.0 et ensuite chaque répertoire renferme juste la différence (ce qui a été ajoute en plus) a l'aide des hard link.

Enfin, il possible d’exécuter des scripts au moment du backup ou d'exclure des fichiers/répertoires.

De plus rsync est porté sur Windows on peut donc avec cygwin utiliser rsnapshot et ainsi nous disposons d'un superbe outils pour sauvegarder nos serveurs.



mercredi 29 février 2012

Supervision de Open VZ avec Zabbix


Il est interessant de superviser l'etat des user_beancounters des VE pour suivre les besoins en ressouces memoires, processeurs, s'assurer que les limites ne sont pas atteintes afin ne pas avoir de blocage.


Sur le VE

Ajouter les parametres suivants a zabbix_agentd.conf

### Parameter for monitoring OpenVZ resources
UserParameter=openvz.ubc[*],/usr/bin/sudo /usr/bin/tac /proc/user_beancounters | awk '/$1/{print $(NF-5+$2);exit}'
UserParameter=openvz.vzmemcheck.putil[*],/usr/bin/sudo /usr/sbin/vzmemcheck | awk '/[0-9]/{print $$$1}'
UserParameter=openvz.vzmemcheck.util[*],/usr/bin/sudo /usr/sbin/vzmemcheck -A | awk '/[0-9]/{print $$$1;exit}'

Donner les droits a l'utilisateur Zabbix avec visudo

## Allow zabbix access to OpenVZ's resources
Cmnd_Alias MON_OVZ_HN = /usr/sbin/vzmemcheck, /usr/sbin/vzmemcheck -A
Cmnd_Alias MON_OVZ_UBC = /usr/bin/tac /proc/user_beancounters
 zabbix ALL = NOPASSWD: MON_OVZ_HN, MON_OVZ_UBC
#Desactive l'obligation d'avoir un TTY pour executer sudo

Defaults:zabbix !requiretty

Sur le Serveur Zabbix
Charger les templates suivants dans le serveur Zabbix.

Template OpenVZ

Template OpenVZ Node


Toute l'info en anglais issue du Forum Zabbix, merci a eux.
Zabbix Forum

mercredi 15 février 2012

Wine ne marche plus !!!

Apres un nouvel update, wine 1.3 ne fonctionne plus.
C'est a dire plus de Teamviewer, plus de client fortinet, plus rien.
La cata pour le support.

Finalement le probleme est lie a des updates, a l'utilisation de libriaire 64 bit au lieu de 32 bit.
Solution :
apt-get install ia32-libs-multiarch:i386


lundi 13 février 2012

Gestion des mots de passes


Pour gérer les mots de passe comme je suis passe par :
  • notepad,
  • excel,
  • glpi et son plugin password,
  • excel dans un fichier true crypt

Et finalement maintenant j’utilise Keepass.

Keepass permet entre autre 
  • de conserver les mots de passes, 
  • d'organiser les password avec des icones, 
  • se ferme automatiquement pour éviter les indiscrets, 
  • masque les mots de passe 
  • mais permet de les copier rapidement 
  • et bien sur demande un mot de passe a l’ouverture.

Contrairement a Gorilla, Keepass permet de generer automatiquement des mots de passes.
Enfin Keepass me permet d’exporter les mots de passe d’un client dans un nouveau fichier Keepass qui contiendra l'organisation désirée.

Un outil indispensable a tout Sys admin, aujourd’hui je suis sur que chaque niveau (équipement, utilisateurs, …) à un mot de passe complexe et différent.

Finalement je ne connais même  plus les mots de passes par cœur et c'est bien mieux comme ca.



vendredi 10 février 2012

Offre de services



Je me lance dans l’aventure Freelance et a distance.

Je propose mes services comme indépendant aux entreprises a des prix très compétitifs depuis la Colombie ou je vis.

Maintenance ou installation a distance et en profitant du décalage horaire, je propose mes services sur Linux,  Asterisk, sécurité, Supervision, Backup.

Si vous avez besoin d'aide, de conseils, d'un avis extérieur sur votre infrastructure (interne ou hébergée)
Plus détails : SILVERSTON IT





vendredi 3 février 2012

Dans quel état j'erre ?


Ou plutôt la longue liste de méthode pour savoir si je suis dans la matrix, si je suis dans une machine virtuelle.

Simple et a installer virt-what permet de savoir si le serveur est virtuel ou non.

Ou bien vous pouvez utiliser tout un arsenal pour savoir si vous etes dans la matrix ou non.


dmidecode
exemple: dmidecode | egrep -i 'manufacturer|product'

dmesg                     
exemple : dmesg | grep -i virtual

mercredi 1 février 2012

Hairpin NAT avec Mikrotik

Hairpin NAT avec Mikrotik


Souvent on héberge en interne un serveur qui propose un service internet : SMTP, Web, Voix, ...
Bien sur en interne l'adressage IP est privée et sur internet public.
Pour éviter d'avoir a manipuler deux adresses différentes en interne et a l'extérieur.

2 solutions :
Le split DNS, une même zone, 2 serveurs DNS qui ne sont pas synchronisés avec des résolutions différentes IP différentes
Le Hairpin NAT, c’est le routeur/firewall qui va résoudre une ip public en ip interne et inversement.

Evidement cette technique n’est pas restreinte a Mikrotik, c’est possible avec Cisco, Iptables, etc …

Les commandes pour le faire :

 ;;; NAT Inside to 192.168.1.90

Pour renvoyer le traffic a destination de 190.x.x. vers le 192.168.1.90
     chain=dstnat action=dst-nat to-addresses=192.168.1.90 protocol=tcp 
     dst-address=190.0.x.x dst-port=80 

Pour forcer le traffic retour
    chain=srcnat action=masquerade protocol=tcp src-address=192.168.1.0/24 
     dst-address=192.168.1.90 out-interface=ether2-local-master dst-port=80 


De cette facon les utilisateurs n'utilisent plus qu'une seule adresse ip en interne et sur internet.

La doc en anglais :
http://wiki.mikrotik.com/wiki/Hairpin_NAT

jeudi 5 janvier 2012

Aide memoire Asterisk

Un petit aide memoire qui evolue avec le temps concernant Asterisk

Commandes et astuces

Pour initier un appel depuis le IPPBX
originate type de channel/trunk/numero et puis ce qu'on fait, par exemple pour jouer les musiques des singes

version Asterisk < 1.6
originate sip/celufijo/300471xxxx application playback tt-monkeys&tt-weasels&tt-monkeys


Version Asterisk > 1.6

channel originate sip/1608 application playback tt-monkeys&tt-weasels&tt-monkeys




Securiser Asterisk
Si votre Asterisk est expose sur internet :

  • Extension distance
  • Troncal SIP



N'oubliez pas d'installer fail2ban pour eviter des attaques.
http://www.voip-info.org/wiki/view/Fail2Ban+(with+iptables)+And+Asterisk

Si vous installer fail2ban, modifier fail2ban pour ne pas avoir de mauvaises suprises.
http://oschgan.com/drupal/node/52
http://www.fail2ban.org/wiki/index.php/Fail2ban_talk:Community_Portal#fail2ban.actions.action_ERROR_on_startup.2Frestart

Charger des messages vocaux
sox message.wav -t raw -r 8000 -s -w -c 1 message.raw

mardi 3 janvier 2012

Openfire et Zimbra

Zimbra et Openfire, l'union

A ma gauche Zimbra le serveur d'emails du monde open source, l'est-il vraiment ?
A ma droite Openfire, le serveur Jabber-like.

Maintenant que Zimbra n'offre plus de chat, concentez vous a vous unir ?
Oui mais ....

Oui, installe facile sur le meme serveur en faisant attention a Java et en indiquant bien a Openfire ou il doit trouver le Java de Zimbra.

Mais lors de la configuration d'Openfire pour avoir une seule gestion des utilisateurs, pensez a le connecter au LDAP de Zimbra. Et pour ce faire penser a verifier le password du l'utilisateur zimbra dans LDAP.
Car attention ce n'est pas le meme utilisateur que l'utilisateur admin  de Zimbra.

comme utilisateur zimbra
# zmlocalconfig -s zimbra_ldap_password


Ensuite ils seront unis pour le meilleur ou pour le pire.

Host:192.168.1.121
Port:389
Base DN:dc="patate",dc="chaude" ,dc="com"
Administrator DN:uid="zimbra",cn="admins",cn="zimbra" 





Ca c'est pour la gestion des utilisateurs mais pour la gestion de groupe, il est plus simple de rester dans Openfire.

Pour cela le plus simple est de ne pas faire de mapping et dans les proprietes du serveur de laisser les champs suivant vide :
  • ldap.groupDescriptionField 
  • ldap.groupMemberField
  • ldap.groupNameField
Et de modifier la propriete suivante 
provider.group.className = org.jivesoftware.openfire.group.DefaultGroupProvider

Securiser le serveur

Interdire la connexion depuis un autre serveur
Server to Server Settings = disable

Authoriser les connexions SSL

SparkWeb
Pour installer un chat live, le plus simple est de telecharger la paquet sparkweb et de le place dans le repertoire d'Openfire
/usr/share/openfire/plugins/admin/webapp/sparkweb/