Quick & Dirty HowtoConfiguration de la partie Serveur:apt-get install openvpn openssl cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn/ cd /etc/openvpn/easy-rsa/2.0 vi vars (change KEY_COUNTRY) ../vars ./clean-all ./build-ca ./build-key-server server ./build-key client1 ./build-dh cd /etc/openvpn/easy-rsa/2.0/keys cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn cd /etc/openvpn vi openvpn.confContenu d'openvpn.conf
port 1194 proto tcp dev tun ca ca.crt cert server.crt key server.key dh dh1024.pem server 172.16.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo user nobody group users persist-key persist-tun status openvpn-status.log verb 3 client-to-clientDémarrer le service:
/etc/init.d/openvpn startConfiguration de la partie Client:
- récupérer les fichiers:
ca.crt client1.crt client1.key- Créer un profil client:
client dev tun proto tcp remote ip-or-hostname-of-your-openvpn-server 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key comp-lzo verb 3Si on veut rediriger TOUT le trafic vers le VPN, voici une config:
remote ip-or-hostname-of-your-openvpn-server 1194 udp pull comp-lzo adaptive ca ca.crt redirect-gateway def1 dev tun cert client1.cert key client1.key tls-client nobind dhcp-option DNS ip-du-serveur-dnsEt c'est parti !
Crash Mysql -> Recovery
Ca n’a pas loupé, le dernier post au sujet de la sauvegarde de MySQL est plus que d’actualité.
En effet, hier, suite à une maj de mysql-server:
# portupgrade mysql-server
MySQL était alors plantée avec le message suivant:
110817 21:02:23 mysqld_safe Starting mysqld daemon with databases from /var/db/mysql 110817 21:02:23 InnoDB: The InnoDB memory heap is disabled 110817 21:02:23 InnoDB: Mutexes and rw_locks use GCC atomic builtins 110817 21:02:23 InnoDB: Compressed tables use zlib 1.2.3 110817 21:02:23 InnoDB: Initializing buffer pool, size = 256.0M 110817 21:02:23 InnoDB: Completed initialization of buffer pool InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes InnoDB: than specified in the .cnf file 0 67108864 bytes! 110817 21:02:23 [ERROR] Plugin 'InnoDB' init function returned error. 110817 21:02:23 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 110817 21:02:23 [ERROR] Unknown/unsupported storage engine: InnoDB 110817 21:02:23 [ERROR] Aborting 110817 21:02:23 [Note] /usr/local/libexec/mysqld: Shutdown complete 110817 21:02:23 mysqld_safe mysqld from pid file /var/db/mysql/tripaxland4thot.pid ended
Etant donné que le service est en production et que les bases sont relativement petites, la restauration fut immédiate:
# rm -rf /var/db/mysql/* # ls -la /root/_archives/mysql/db.all.201108* -rw-r--r-- 1 root wheel 3627458 Aug 15 01:01 /root/_archives/mysql/db.all.20110815.sql.gz -rw-r--r-- 1 root wheel 3639055 Aug 16 01:01 /root/_archives/mysql/db.all.20110816.sql.gz -rw-r--r-- 1 root wheel 3651217 Aug 17 01:01 /root/_archives/mysql/db.all.20110817.sql.gz # zcat /root/_archives/mysql/db.all.20110817.sql.gz | mysql # /usr/local/etc/rc.d/mysql start
Et tout refonctionne 🙂
Script pour sauvegarder un serveur MySQL sous Linux ou FreeBSD
Avoir une base de données MySQL c’est bien, la sauvegarder c’est mieux.
Voici un petit script permettant de s’éviter des nuits de sueur après un crash de sa DB.
Le délai de conservation est de 90 jours.
#!/bin/sh DUMP=/usr/local/bin/mysqldump MYSQL=/usr/local/bin/mysql OPTS="--opt" DATE=`date "+%Y%m%d"` ARCH_DIR=/root/_archives/mysql DAYS=90 if [ ! -d $ARCH_DIR ] then echo "error: no archive directory. Please create it or change it." exit 1 fi $DUMP $OPTS --all-databases | gzip > $ARCH_DIR/db.all.$DATE.sql.gz if [ $? -ne 0 ] then echo "error: check log" exit 2 fi echo "show databases" | $MYSQL -N | while read db do $DUMP $OPTS $db | gzip > $ARCH_DIR/db.$db.$DATE.sql.gz done find $ARCH_DIR -type f -name "db.*" -mtime +$DAYS -exec rm {} \; exit 0
Ce script est à exécuter en crontab pour avoir une sauvegarde journalière par exemple:
tripaxland4thot# crontab -l # Daily MySQL DUMP 1 1 * * * /root/_tools/dump_mysql.sh > /tmp/dump_mysql.log 2>&1
Xymon – Monitorer portaudit sur un Freebsd & ses Jails
Il est important de savoir si des packages comportent des vulnérabilités sur son système.
Pour cela, FreeBSD met à disposition un outil appelé portaudit.
Couplé avec Xymon, voici ce que cela donne:
Lorsqu’il y a une alerte, la diode devient rouge et affiche le(s) package(s) présentant la faille de vulnérabilité remontée par portaudit:
Il arrive bien souvent d’avoir des jails sur un FreeBSD, et plutôt que d’installer portait sur chaque jail, il est possible de l’exécuter depuis la globale et d’analyser les jails.
Ce script s’appuie sur ce principe et reportera au nom des jails sur Xymon.
#!/bin/sh # HOBBIT - WATCH THE SECURITY # nlienard - 13-06-2006 ##################################################### # TEST="portaudit" VERSION="1.0" COLOR="red" PORTAUDIT="/usr/local/sbin/portaudit" echo > $BBTMP/.portaudit.report # Hostmaster Portaudit Check echo "Hostmaster check:" >> $BBTMP/.portaudit.report $PORTAUDIT -Fad >> $BBTMP/.portaudit.report cat $BBTMP/.portaudit.report | grep 'Affected' > /dev/null if [ $? -ne 0 ]; then COLOR="green" fi echo "" >> $BBTMP/.portaudit.report # FORMAT IT PROPERLY FOR BB... LINE="status+1560 $MACHINE.$TEST $COLOR `date` - portaudit looks $COLOR `echo ; cat $BBTMP/.portaudit.report`" $BB $BBDISP "$LINE" # SEND IT TO BBDISPLAY # Jails Portaudit Check cd $BBTMP for JAIL in `jls | grep -v JID | awk '{print $4}'`; do COLOR="red" JIP=`basename $JAIL` #JNAME=`jls | grep $JIP | awk '{print $3}' | cut -d"." -f1` JNAME=`jls | grep $JIP | awk '{print $3}'` ls -1 $JAIL/var/db/pkg > $BBTMP/$JIP.paf echo "Jail ($JNAME) detection:" > $BBTMP/.portaudit.report $PORTAUDIT -f $BBTMP/$JIP.paf >> $BBTMP/.portaudit.report cat $BBTMP/.portaudit.report | grep 'Affected' > /dev/null if [ $? -ne 0 ]; then COLOR="green" fi LINE="status+1560 $JNAME.$TEST $COLOR `date` - portaudit looks $COLOR `echo ; cat $BBTMP/.portaudit.report`" $BB $BBDISP "$LINE" # SEND IT TO BBDISPLAY rm $BBTMP/$JIP.paf echo "" done exit 0
Ce script s’installe dans ~xymon/client/ext/
Il s’active en insérant les lignes suivante dans ~xymon/client/etc/clientlaunch.cfg
[portaudit] ENVFILE $XYMONCLIENTHOME/etc/xymonclient.cfg CMD $XYMONCLIENTHOME/ext/portaudit.sh LOGFILE $XYMONCLIENTLOGS/portaudit.log INTERVAL 60m
Ne pas oublier de redémarrer Xymon pour un résultat immédiat.
Si jamais Xymon n’est pas executé en root, il faudra utiliser sudo pour l’exécution de portaudit.
Test de Post depuis un script Perl
test from Command line
Code source:
#!/usr/bin/perl use strict; use warnings; use WordPress::XMLRPC; my $o = WordPress::XMLRPC->new({ username => 'thot', password => 'xxxxxxx', proxy => 'http://distran.org/xmlrpc.php', }); my $article; $article->{title} = "Test de Post depuis un script Perl"; $article->{categories} = ['Vrac']; $article->{description} = "test from Command line"; $o->newPost($article,1);
Ne pas oublier d’installer le port p5-WordPress-XMLRPC
# portinstall p5-WordPress-XMLRPC
Inauguration du portail Distran
Installation de WordPress sous Freebsd.
L’installation de wordpress est plutôt simple et se résume comme suit:
cd /usr/ports/www/wordpress make install clean cd /usr/local/www/wordpress/ cp wp-config-sample.php wp-config.php echo "create database wordpress" | mysql
Configurer les identifiants sql précédemment créés.
vi wp-config.php
Pour être fonctionnel, il faut évidemment configurer Apache pour répondre sur ce nouveau documentroot (/usr/local/www/wordpress).