Archives de catégorie : linux

Ubuntu Openvpn

Le bon vieux openvpn est de la partie :

#sudo apt-get install openvpn openssl liblzo1

Je créer le répertoire qui va contenir les fichier de conf pour générer les certificats

#sudo mkdir /etc/openvpn/easy-rsa/

Je copie les exemple des fichiers de conf vers mon repertoire

#sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

Je me place dans mon repertoire

#cd /etc/openvpn/easy-rsa/

J’édite la conf de vars. Il faut bien remplir tous les champs et les adapter a votre conf.

#sudo nano /etc/openvpn/easy-rsa/vars

export EASY_RSA="/etc/openvpn/easy-rsa"
export KEY_CONFIG="$EASY_RSA/openssl.cnf"

export KEY_COUNTRY="FR"
export KEY_PROVINCE="TO"
export KEY_CITY="Mou"
export KEY_ORG="totox"
export KEY_EMAIL="the@totox.c0m"

Exeptionnelement pour une raison que j’ignore le sudo ne fonctionne par pour la suite, il faut donc se mettre en root natif.

#sudo -i

Génération du fichier de conf

#source ./vars

Netoyage des clés déjà créer.

#./clean-all

Création du certificats principal.

#./build-ca

Création des clés du serveur

#./build-key-server serveurtotox

Création de la clé de Defie Hellman pour plus de sécurité

#./build-dh

Je creer la clés qui permettra la signature des paquets échangé.

#openvpn –genkey –secret /etc/openvpn/easy-rsa/keys/ta.key

Voici enfin l’étape de création des clés pour un utilisateur

#./build-key usermoi

Je creer le user et le groupe openvpn et je leur donne les bons droits pour plus de sécurité.

# groupadd openvpn
# useradd -d /dev/null -g openvpn -s /bin/false openvpn

A présent je passe a l’étape des fichiers de configuration du serveur et du client.

Fichier de configuration sur le serveur :

nano /etc/openvpn/openvpn.conf

local xxx.xxx.xxx.xxx
port 1194
proto udp

dev tun
mode server

tls-server
tun-mtu 1500
mssfix

persist-key
persist-tun

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/xxxx.crt
key /etc/openvpn/easy-rsa/keys/xxxx.key  # This file should be kept secret
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0 # This file is secret

server 10.8.0.0 255.255.255.0

push "dhcp-option DNS 208.67.222.222" #dns de openDNS
push "dhcp-option DNS 208.67.220.220" #

push "redirect-gateway"

user openvpn
group openvpn

duplicate-cn
client-to-client
keepalive 10 120
cipher BF-CBC
comp-lzo
max-clients 15

status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
verb 4
mute 10

A présent j’autorise la transmission des paquets par le serveur

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j SNAT –to ipduserveur

Je démarre openvpn :

# /etc/init.d/openvpn restart

Et enfin je configure le client en créant le fichier configuration et en récupérant les clés généré préalablement sur le serveur. Ce qui me donner un dossier contenant :

user – Serveur.ovpn
user.key
user.crt
ta.key
ca.crt

Créer un fichier user.ovpn et rentrer ces informations du client pour Vista :

client

dev tun
proto udp

remote xxx.xxx.xxx.xxx 1194

resolv-retry infinite
nobind

persist-key
persist-tun

ca  ca.crt
tls-auth ta.key 1
cert  xxxx.crt
key  xxxx.key

route-method exe
route-delay 2

verb 3

Le backup c’est la santé

Aller en vue d’une migration dedibox vers kimsufi je me lance dans un grand backup. Youpi !

Mais pour tout backup bien réussis il me faut toujours mes amis :

Pour bien compresser :

tar -czvf fichier.tar.gz /home/repertoire

Pour la BDD

mysqldump –all-databases -uroot -p > backupall.sql et/ou mysqldump -uroot -p database > backup.sql

Pour l’envois

scp -Pport fichier.tar.gz login@addresse:fichier.tar.gz

Pour la décompression

tar -zxvf fichier.tar.gz

Pour le remettre avec les bon droits

cp -Rp repertoire/* /repertoire/repertoire/
chown -R user.group repertoire/ parce qu’il faut donner les bons droits

Pour remetre la base

mysql -uroot -p base_de_donnees < backup.sql

kimsufi et munin

Va falloir mettre des petites stats système maintenant pour monitoré tout çà.
Je sais que je vais en faire hurler certain mais je vais utiliser munin et non cacti pour s’acquitter de cette tache. Beaucoup plus simple d’utilisation pour un besoin « classique », munin a donc ma préférence.

#sudo apt-get install munin munin-node smartmontools libwww-perl lm-sensors sensord ethtool

Par defaut munin va stocker ses fichiers dans

dbdir /var/lib/munin
htmldir /var/www/munin
logdir /var/log/munin
rundir /var/run/munin

Maintenant il faut s’attaquer a Apache, on creer donc un Alias :

#sudo nano /etc/apache2/apache2.conf

Alias /stat /var/www/munin

Et ensuite activé le server-status et l’autoriser uniquement pour le localhost toujours dans le meme fichier de configuration.

      SetHandler server-status
      Order deny,allow
      Deny from all
      Allow from 127.0.0.1

ExtendedStatus On

Aller maintenant on rajoute les petits plugins sympa. Tous les plugins sont rangé dans /usr/share/munin/plugins/

#sudo ln -s /usr/share/munin/plugins/fw_packets /etc/munin/plugins/fw_packets
#sudo ln -s /usr/share/munin/plugins/fw_forwarded_local /etc/munin/plugins/fw_forwarded_local
#sudo ln -s /usr/share/munin/plugins/fw_conntrack /etc/munin/plugins/fw_conntrack

#sudo ln -s /usr/share/munin/plugins/postfix_mailstats /etc/munin/plugins/postfix_mailstats
#sudo ln -s /usr/share/munin/plugins/postfix_mailvolume /etc/munin/plugins/postfix_mailvolume
#sudo ln -s /usr/share/munin/plugins/postfix_mailqueue /etc/munin/plugins/postfix_mailqueue

#sudo ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses
#sudo ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes
#sudo ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume

#sudo ln -s /usr/share/munin/plugins/netstat /etc/munin/plugins/netstat

Pour que netstat affiche des informations il faut configurer munin :

nano /etc/munin/plugin-conf.d/munin-node

Et rajouter

[netstat]
user root

et enfin un bon

#sudo /etc/init.d/munin-node restart

Kimsufi LAMP

Ma kim ne va ni me servir a gérer les DNS ni les MAIL. Pour la bonne raison que je considère ces services comme trop sensible pour que ce soit le même serveur qui les gère tous. Donc les DNS seront gérer par OVH et les mail par google avec son service personnalisé. La kim ne servira donc que de LAMP.

Alors on va commencer par le minimum vitale pour une bonne utilisation du serveur :

# sudo apt-get install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.3-dev libpcre3 libpopt-dev lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++ build-essential

J’en profite aussi pour mettre ntp et maintenir mon serveur à l’heure automatiquement :

#sudo apt-get install ntp ntpdate

A présent je vais attaquer le LAMP.

Alors mysql :

#sudo apt-get install mysql-server mysql-client libmysqlclient15-dev

Ma kim possedant un noyau ovh qui n’a pas la gestion des modules activer je me retrouve avec ces erreurs :

grep: /proc/modules: Aucun fichier ou dossier de ce type
ls: ne peut accéder /sys/module/apparmor: Aucun fichier ou dossier de ce type
grep: /proc/modules: Aucun fichier ou dossier de ce type
ls: ne peut accéder /sys/module/apparmor: Aucun fichier ou dossier de ce type
grep: /proc/modules: Aucun fichier ou dossier de ce type
ls: ne peut accéder /sys/module/apparmor: Aucun fichier ou dossier de ce type
FATAL: Could not load /lib/modules/2.6.24.5-xxxx-std-ipv4-32/modules.dep: No such file or directory
$Loading AppArmor module: Failed.

Mais cela ne gène en rien l’installation et le bon fonctionnement du serveur mysql.

Enfin on verifie que mysql est bien lancé et écoute :

#sudo netstat -tap | grep mysql
tcp 0 0 localhost.localdo:mysql *:* LISTEN 11766/mysqld

Ensuite viens apache 2.2 (faut prononcé apachi) :

#sudo apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

Puis php5 et ruby (temps qu’a faire)

#sudo apt-get install libapache2-mod-php5 libapache2-mod-ruby php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Sans oublier phpmyadmin

#sudo apt-get install phpmyadmin

Allez à présent de la configuration pour faire marcher le bousin.
Je commence par modifier les fichiers index par défaut en rajoutant ceux qui manque :

#sudo nano /etc/apache2/mods-available/dir.conf
DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml

Ensuite j’active les modules suplémentaire dont j’ai besoin :

#sudo a2enmod ssl
#sudo a2enmod rewrite
#sudo a2enmod suexec
#sudo a2enmod include

Allez un petit reload d’apache pour vérifier que tout est ok avant de continuer la configuration.

#sudo /etc/init.d/apache2 force-reload

Maintenant on va plonger les doigts dans le apache2.conf

#sudo nano /etc/apache2/apache2.conf

La grande question du prefork et du worker. Pour ma part j’ai toujours lut que le worker était moins stable et plus gourmand que le prefork, je vais donc commenter le worker et configurer le prefork. Je vais mettre 150 client max ce qui est emplement suffisant pour une kim, ainsi que starter 20 server ce qui permetra de lisser le load en cas d’afflux de visiteurs. mon Spare est assez proche toujours pour lisser mon load et je donne 1000 request par child. Si j’avais un superplan j’aurais donné 4000 maxrequests et 250 maxclient.

StartServers       20
MinSpareServers      25
MaxSpareServers      30
MaxClients      150
MaxRequestsPerChild  1000

Décommenter le server-status et ne laisser l’accès que au localhost.


SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1

##
# Stat Systeme
##
Alias /tutu /var/www/munin

##
# Alias pour Phpmyadmin
##
Alias /toto /var/www/phpmyadmin

Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

##
# Config tuning
##
ServerTokens Prod
ServerName EMAX
ServerSignature Email
ServerAdmin root@artiflo.net
ExtendedStatus On

Un dernier reload

#sudo /etc/init.d/apache2 force-reload

Cela devrait être bon à présent vous pouvez tester.

A présent je m’occupe des virtual host pour gérer les sites qui vont etre hebergé sur le serveur. Je vais prendre le cas de artiflo.net.

Je creer un fichier dans /etc/apache2/sites-available/ que je nomme artiflo.net, je ferais un fichier par site pour facilité la configuration. Et ensuite je créer un liens symbolique entre ce fichier et /etc/apache2/sites-enabled/. Sans oublié de supprimer le liens symbolique de default. Petite précision apache définis la priorité d’affichage des hôte virtuel par ordre alphabétique. C’est a dire que si vous voulez que votre site toto.com apparaisse avant titi.net il faut créer un liens symbolique de ce type :

#sudo nano /etc/apache2/sites-available/artiflo.net
#sudo ln -s /etc/apache2/sites-available/artiflo.net /etc/apache2/sites-enabled/000-artiflo.net

Je creer le repertoire qui sera accessible du web et je met les bon droits dessus.

#sudo mkdir /home/artiflo/www
#sudo chown -R artiflo.artiflo /home/artiflo/www

Alors écrivons le contenue du virtual host.

NameVirtualHost *

        ServerName www.florian-cristina.fr
        ServerAlias *.florian-cristina.fr
        ServerAdmin admin@florian-cristina.fr

        DocumentRoot /home/artiflo/www/florian-cristina.fr/

                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                Allow from all

        ErrorLog /var/log/apache2/florian-cristina.fr.error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

C’est mieux aussi si ceci est placé dans un des vhost :

Order deny,allow
Deny from all

Les mail a présent. Meme si ma kim ne va pas servir de pop elle va tout de meme pouvoir envoyé des mail avec le bon postfix :

#sudo apt-get install postfix

Enfin il reste a verifier que les configuration du serveur de mail sont bien celle que vous vouliez.

#sudo nano /etc/postfix/main.cf

A présent changer le nom d’host et aussi le relay pour pas quelle prenne pour elle les message de son propre domaine.

Stout.

kimsufi, ubuntu 8.04 et locale

Encore en BETA chez ovh la release 8.04 de ubuntu soufre d’une petite erreur de configuration sur la version française.

Cela produit cette erreur :

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "fr_FR"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

La solution est assez simple, il suffit de changer dans le parametre des locales /etc/default/locale la bonne version du charset puis de le recompiler.

#sudo nano /etc/default/locale

LANG=fr_FR.UTF-8

#sudo dpkg-reconfigure locales

A présent il suffit de configurer votre putty avec le bon charset dans Windows/translation/UTF-8

Kimsufi et proftpd TLS

Aller un bon ubuntu 8.04 LTS tout neuf et c’est le début de l’installation des applicatifs. Let’s go pokemon !

Bon comme je suis pas demi-geek on va mettre du bon TLS avec le proftpd pour eviter que des kikoolol récupere mes login/pass ftp.

Alors dans la première partie on install proftpd normalement et dans la seconde avec TLS toussa.

#apt-get install proftpd

#sudo nano /etc/proftpd/proftpd.conf

ServerName "Kimounette"
Defaultroot ~
#Utilisateur Virtuel
AuthUserFile /etc/proftpd/ftpd.passwd
RequireValidShell off

#Optimisation du serveur FTP
UseReverseDNS off
IdentLookups off

#Activation de la reprise
AllowRetrieveRestart on
AllowStoreRestart on
AllowOverwrite on

Voila, enregistrez puis redémarrer proftpd.

Aller maintenant du bon TLS des familles

#sudo mkdir /etc/proftpd/ssl

Hop on creer le certificats SSL maison signé et reconnus par moi même tout seul.

#sudo openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem

Maintenant je vais dire a proftpd d’accepter les connexion TLS

#sudo nano /etc/proftpd/proftpd.conf

Dans mon cas j’ai deja un fichier tls de créer il me suffit de le décommenter. Mais comme je suis super feignant je préfère rajouter directement ceci dans le proftpd.conf sans rien décommenter :

TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSOptions NoCertRequest
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient off
TLSRequired off

J’ai mis en off le TLSRequired comme cela si je suis chez moi bien au chaud et que je n’ai pas envie de faire des connexion sécurisé je peux aussi. C’est vachetement bien toussa.
C’est toujours le meme port simplement il va falloir dire à filezilla que c’est du FTPES (FTP sur TLS/SSL chiffrement explicite) et lui faire accepter le certificats que vous vous êtes créer un peut plus tôt.

Aller dernière étape pour ceux qui voudrait se creer des utilisateurs virtuel. Placez vous dans /etc/proftpd/ et adaptait cette commande a votre besoin:

# ftpasswd --passwd --name=toto --uid=1000 --home=/home/artiflo --shell=/bin/false

Gentoo et ovhm 2

Bon après plusieurs jour, je me suis rendus a l’évidence que gentoo sur un serveur web c’est pas ce que l’on fait de plus judicieux.

La moindre mise a jour de sécurité des applicatifs me prenait plusieurs heures sur ma kimsufi avec 256mo de ram :/. Et avec un processeur a 100% et un load montant a 3-4 pendant plusieurs heures c’est pas terrible terrible.

Donc j’ai compris que la ovhm est fait pour ceux qui veulent la puissance d’un serveur dédié avec la facilité d’utilisation d’une interface de management bien faite et un serveur plutôt bien configurer de base.

Je ne vais pas encore retourner sur mon etch avant d’avoir fait des test avec de l’ubuntu hardy heron server et desktop.

Et une petite kim de plus

Je viens d’acquérir une nouvelle kimsufi juste avant le reload (forcement), j’ai commencé à travailler avec gentoo et l’ovhm. Bon venant de debian cela fait un peu bizarre mais je commence à prendre la main.

Lors de la première mise à jour de la gentoo il va y a avoir tout un tas d’erreur alors voici les commandes pour les éviter :

Aller une petite synchronisation histoire de bien commencer

# emerge –sync

Pour que cracklib arrête de faire son embêtante

# FEATURES=-unmerge-orphans emerge cracklib

La toute puissante glibc à aussi décidé de ne plus pouvoir ce passer de nptl alors on va lui donner. http://gentoo-wiki.com/NPTL

#USE= »nptl » emerge -pv glibc
#USE= »nptl » emerge glibc

Curl n’est pas en reste, il faut donc démasquer certain paquet et réinstaller curl

# nano /etc/portage/package.keywords
=net-misc/curl-7.18.1 ~*
# emerge –unmerge curl && emerge curl

GNUPG propose aussi son lot de blocage dans les dépendances. Une petite réinstallation règle tout cela.

# emerge –unmerge gnupg && gnupg

Aller on est des fou, on lance l’update et on laisse tourner la kimsufi toute seule les 4 prochaines heures le temps qu’elle compile tout ça.

# emerge -uavDN world

A oui, n’oubliez pas d’aller allumer un cierge/bâton d’encens/récitation de la cora/ou prière sur le mur des lamentations pour que tout ce passe bien.