lindev.fr

Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé - serveur

Fil des billets - Fil des commentaires

01 oct. 2015

EC2, ajouter un compte utilisateur avec certificat .pem

A la création d'une instance EC2, vous avez un compte par défaut ( ec2-user ou admin selon la distrib ) .
Ce compte vous permet d’accéder et d'administrer votre instance via une connexion SSH , avec une authentification par certificat ( que vous avez préalablement téléchargé à la création de l'instance ).

On va voir ici comment ajouter un compte utilisateur avec un nouveau certificat pour qu'il puisse également se connecter sur cette instance EC2.

Première étape le certificat

Nous allons commencer par créer ce nouveau certificat via l'interface d'amazon ( la clef privée )

Clef privée ( .pem )

C'est très simple, suivez le guide...

Dirigez-vous vers le service EC2 Capture_d_e_cran_2015-10-01_a__09.22.02.png

Gestion des clef Capture_d_e_cran_2015-10-01_a__09.22.13.png

Créer un clef Capture_d_e_cran_2015-10-01_a__09.22.23.png

Vous devrez alors télécharger cette nouvelle clef ( ici elle s'appelle lindev.pem )

Clef public

Coté serveur, nous allons devoir spécifier la clef publique liée à cette clef privée pour le nouvel utilisateur.
Commençons donc par récupérer cette clef publique.

Changez les droits du certificat
chmod 400 lindev.pem
Générer les clef publique à partir de la clef privée
ssh-keygen -y

Cette commande va vous demander le chemin vers la clef privée. Suite à quoi il va vous sortir la clef public .
Par exemple :

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCISBb/pQYoSz1tm2mWrBBK8Yfs+8z2rdcbYhCIgz7oLE2YNrT/cs8D9WXduTezS1p/SjdfA4zhXSJNBvjNP0A0M2s1Mj3E+edpENhsYrLBxDc1F60CQ4be0hLICX2e2mDzPYi7sLgAzAdVI67Eo2Zmj/0QYwckS4JgFl7JXedV8Fz4D2gm8xjByxbtlsPhG84Y9wq7GGmtHuaHzi+H+RVS1hlDZIH8QKwX9U5eWJY3BaQjXpwnorNvn2OrlO9wmTE+22A7F0vF8zsRia+t5TwqPaVYmfX7DN5zqBMcd8tQC1LdYS0b+h6+fLAkUdaqQ0kXGm1FCxYH00hTYNS+JV/V

Gardez cette clef nous allons en avoir besoin bientôt coté serveur.

Coté serveur

Nous sommes maintenant sur notre instance EC2 avec l'utilisateur par defaut, nous allons donc créer notre second utilisateur et lui transmettre notre clef publique.

Création de l'utilisateur

root@ip-172-41-26-237:/home/admin# adduser lindev
Adding user `lindev' ...
Adding new group `lindev' (1001) ...
Adding new user `lindev' (1001) with group `lindev' ...
Creating home directory `/home/lindev' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for lindev
Enter the new value, or press ENTER for the default
	Full Name []: Lindev
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] Y

Voilà mon utilisateur créé, ne nous reste plus qu'à lui créer sa configuration ssh

ssh

Création du répertoire contenant la configuration ssh de l'utilisateur

sudo -s
su - lindev
mkdir /home/lindev/.ssh
chmod 700 /home/lindev/.ssh

Création du fichier contenant les clefs publiques

touch /home/lindev/.ssh/authorized_keys
chmod 600 /home/lindev/.ssh/authorized_keys

Editer le fichier authorized_keys et y coller votre clef public .

vim /home/lindev/.ssh/authorized_keys

je colle donc :

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCISBb/pQYoSz1tm2mWrBBK8Yfs+8z2rdcbYhCIgz7oLE2YNrT/cs8D9WXduTezS1p/SjdfA4zhXSJNBvjNP0A0M2s1Mj3E+edpENhsYrLBxDc1F60CQ4be0hLICX2e2mDzPYi7sLgAzAdVI67Eo2Zmj/0QYwckS4JgFl7JXedV8Fz4D2gm8xjByxbtlsPhG84Y9wq7GGmtHuaHzi+H+RVS1hlDZIH8QKwX9U5eWJY3BaQjXpwnorNvn2OrlO9wmTE+22A7F0vF8zsRia+t5TwqPaVYmfX7DN5zqBMcd8tQC1LdYS0b+h6+fLAkUdaqQ0kXGm1FCxYH00hTYNS+JV/V

On enregistre et on quitte.

Tests

Il ne vous reste plus qu'à tester a connexion avec votre nouvel utilisateur .

ssh -i "lindev.pem" lindev@52.29.115.207

Normalement vous devriez être connecté sans avoir à rentrer le moindre mot de passe, en utilisant le certificat Amazon.

17 sept. 2013

Serveur de fichiers AFP sous wheezy

netatalk.gif Je partages de gros volumes sur le réseau, avec majoritairement des Clients Apple .
Jusqu'à maintenant, samba répondait pleinement à mon besoin, mais depuis la version Lion d'OS X, je rencontre des lenteurs plus ou moins prononcées pendant la navigation dans les volumes partagés.
Seuls les anciens postes et autres systèmes d'exploitation se comportent normalement.

N'ayant pas trouvé la cause pour le moment, j'ai décider de tester le protocole AFP, protocole de prédilection Apple ..

Sous linux, AFP == Netatalk, qui est intégré au noyau, afin de nous faciliter la tâche pour interconnecter des réseaux Apple .

Prérequis

Sous linux ( wheezy ) au moment ou j'écris ce tuto

sudo apt-get install netatalk avahi-daemon

Configuration

Afin de diffuser le service Netatalk sur le réseau, il nous faut mettre en place Avahi

netatalk

Pour avoir une idée clair des fichiers de configuration de netatalk, utiliser la commande

afpd -V

Ce qui donne

afpd 2.2.2 - Apple Filing Protocol (AFP) daemon of Netatalk
 
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. Please see the file COPYING for further information and details.
 
afpd has been compiled with support for these features:
 
          AFP versions:	1.1 2.0 2.1 2.2 3.0 3.1 3.2 3.3 
DDP(AppleTalk) Support:	Yes
         CNID backends:	dbd last tdb 
           SLP support:	No
      Zeroconf support:	Yes
  TCP wrappers support:	Yes
         Quota support:	Yes
   Admin group support:	Yes
    Valid shell checks:	Yes
      cracklib support:	Yes
        Dropbox kludge:	No
  Force volume uid/gid:	No
            EA support:	ad | sys
           ACL support:	Yes
          LDAP support:	Yes
 
             afpd.conf:	/etc/netatalk/afpd.conf
   AppleVolumes.system:	/etc/netatalk/AppleVolumes.system
  AppleVolumes.default:	/etc/netatalk/AppleVolumes.default
    afp_signature.conf:	/etc/netatalk/afp_signature.conf
      afp_voluuid.conf:	/etc/netatalk/afp_voluuid.conf
         afp_ldap.conf:	/etc/netatalk/afp_ldap.conf
       UAM search path:	/usr/lib/netatalk/
  Server messages path:	/etc/netatalk/msg/
              lockfile:	/var/run/afpd.pid

Dans mon cas, je partage un répertoire commun à tous mes utilisateurs, donc pas de login ni de mot de passe.

vim /etc/netatalk/afpd.conf

pour éviter la demande de mot de passe à la connexion, nous allons dans le fichier afpd.conf modifier la ligne suivante

- -tcp -noddp -uamlist uams_dhx.so,uams_dhx2.so -nosavepassword

par celle-ci

- -tcp -noddp -uamlist uams_guest.so,uams_dhx.so,uams_dhx2.so -nosavepassword

Afin d'activer le compte invité.

Déclarer un partage

Il ne reste plus à déclarer un partage, exemple /var/data/commun . Évidemment ce répertoire doit exister .

Nous allons déclarer ce partage dans le fichier AppleVolumes.default

vim /etc/netatalk/AppleVolumes.default

On y déclare le répertoire à partager, en ajoutant à la fin

/var/data/commun "commun" cnidscheme:dbd options:usedots,upriv,tm

Le fichier contient toutes les explications sur les options disponibles .

Avahi

Nous allons demander à Avahi de déclarer le service afpd de notre serveur sur le réseau . Nous allons donc simplement déclarer un nouveau service à avahi

vim /etc/avahi/services/afpd.service

Voici le contenu ( qui n'est pas à modifier )

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_afpovertcp._tcp</type>
    <port>548</port>
  </service>
  <service>
    <type>_device-info._tcp</type>
    <port>0</port>
    <txt-record>model=Xserve</txt-record>
  </service>
</service-group>

Lancement des services

Nous reste plus à lancer les services netatalk et avahi fraichement configurés .

sudo /etc/init.d/netatalk restart
sudo /etc/init.d/avahi-daemon restart

Sur les postes clients, dans l'exploration réseau, vous devriez voir apparaître le partage .

Ch.

27 mai 2011

LVM exemple de mise en pratique

recuperation-donnees-fichiers-9.jpg Cela fait longtemps que je tourne autour de ce gestionnaire de volumes jamais avoir eu l'occasion d'y mettre les mains . Aujourd'hui c'est chose faite !

LVM / LVM2 utilisation

Il y a quelques jours j'ai eu pour mission la mise en production d'un serveur web linux, hébergé sur une plateforme de virtualisation microsoft Hyper-V. Le contrainte principale était bien entendu la disponibilité de ce serveur , mais aussi la possibilité de restaurer le serveur sans connaissance particulière et surtout en un temps record ..

Première possibilité ,

La mise en place d'un cluster ( soit , deux machines virtuelles en front ou une maitre et l'autre esclave ). La machine hôte ( Hyper-V ) étant déjà bien chargé , la mise en place d'une seconde VM n'était pas envisageable.

Seconde possibilité ,

La machine hôte étant associée à une baie SAN, nous avons donc migré les données variables ( sources et BDD ) sur cette dernière , ce qui rend la restauration de la machine virtuelle aussi simple qu'un "copier coller", à partir du moment ou la vm est sauvegardé.

Pourquoi LVM

J'y viens, mettre les données dynamiques sur la baie SAN est bien beau , mais figer une taille de disque ( aussi virtuel soit-il ) est assez délicat. A moins d'être devint, il est très difficile d'estimer une taille suffisamment grande pour supporter les éventuelles évolutions, et il serait vraiment dommage de gâcher de de l'espace disque en surestimant le besoin .( l'espace disque SAS est à utiliser avec parcimonie, le moindre Go de cette qualité est précieux ).

J'ai donc créé un disque virtuel d'une taille fixe de 5Go ( il est aussi possible de créer un disque à taille variable , mais les performances chutent de 30% selon la doc ... ). 5Go est bien assez pour commencer et être tranquille un bon moment ( plus ou moins long selon l'activité ).

Ce disque virtuel nommé sdb ( que nos pouvons comparer à un disque dur physique ), sera dans un premier temps formaté, et nous allons créer une partition primaire sdb1 .

Création de la partition primaire

cfdisk /dev/sdb

Maintenant, étant donné que je souhaite utiliser ce disque avec LVM, il est nécessaire de déclarer la partition fraichement créée

Déclaration de la partition sdb1 à LVM

pvcreate /dev/sdb1

Maintenant étape importante, créer le groupe de volume(s) GV. Ce groupe de volume peut être représenté comme une unité regroupant un ensemble de volumes , ou plus simplement expliqué , une grosse partition composée de une ou plusieurs partitions de niveau inférieur appartenant ou non au même disque dur . Ce ne sera plus à vous de gérer la répartition de vos données sur entre les différentes partitions , le GV s'en chargera pour vous.

Création du GV ( Groupe de volumes )

vgcreate MONGROUP /dev/sdb1

Nous voilà maintenant avec un superbe groupe de volumes nommé MONGROUP sur lequel nous allons créer nos volumes logiques LV ( pour les utiliser comme des partitions standard )

Création d'une partition LV ( Volume Logique )

lvcreate -n mapartition -L 4,95g MONGROUP

warning.png Attention à mettre une taille valide, elle ne doit en aucun cas être supérieur à l'espace disponible ( risque de pertes ).

La partition maintenant créée, dernière étape avant de l'exploiter, le formatage .

Formatage de la partition mapartition

mkfs -t ext4 /dev/MONGROUP/mapartition

Et voilà notre volume prêt à l'emploi .

Ne reste plus qu'à le monter .. et l'exploiter ..

mount -t ext4 /dev/MONGROUP/mapartition /mnt

Je vous vois déjà venir en me disant .. que jusqu'à maintenant .. il n'y a pas d'avantage à utiliser LVM ... C'est vrai , créer simplement une partition et la formater directement serait tout aussi performant et bien plus rapide à mettre en place ..

Ok, alors le temps passe et tout d'un coup vous recevez mail de votre client indiquant avoir reçu plusieurs alerte concernant l'espace disponible sur le disque .. aïe !

Pas de panique puisque vous avez pris la peine de créer une partition géré par LVM, dans notre cas il suffira d'augmenter la taille de notre disque virtuel ( ou d'en créer un second ) et de l'ajouter à notre groupe de volumes MONGROUP

Augmenter la capacité du volume

Voyons comment faire cette manip en 5 minutes.

Dans un premier temps il faut démonter le volume avec la commande umount

Démonter le volume à modifier

umount /mnt

Puis il nous faut créer une nouvelle partition ( à partir du nouveau disque ou de l'espace disponible sur le disque virtuel sdb 5G de plus )

cfdisk /dev/sdb

info.png La nouvelle partition sera déclarée comme étant sdb2 ( à adapter dans votre cas )

Une fois la partition créée, nous allons la déclarer à LVM

pvcreate /dev/sdb2

Nous allons ensuite étendre notre groupe de volumes ( MONGROUP ) afin qu'il prenne en compte ma nouvelle partition , et de ce fait , offrir autant d'espace en plus.

Extension du groupe de volumes

vgextend MONGROUP /dev/sdb2

Voilà qui est fait. Nous allons vérifier la partition existante avant de la redimensionner

Vérification de la partition existante

e2fsck -f /dev/MONGROUP/mapartition

Une fois terminé, l'étape la plus importante , le redimensionnement de la partition . Pour commencer nous allons redimensionner notre volume logique ( LV ) mapartition

Redimensionnement de mapartition ( LV )

lvresize -L9,95g /dev/MONGROUP/mapartition

warning.png Attention à mettre une taille valide, elle ne doit en aucun cas être supérieur à l'espace disponible ( risque de pertes ).

Enfin, le volume logique redimensionné, reste à redimensionner notre système de fichiers ext4

Redimensionnement du système de fichiers ext4

resize2fs /dev/MONGROUP/mapartition

Et voilà mon espace disque vient d'augmenter de 5Go . Cette opération peut être répété autant de fois que nécessaire .

lvm2.png

Ch.

14 sept. 2010

Git pour une petite équipe

header.gif Un billet sans prétention , qui explique comment mettre en place GIT sur un serveur pour partager les sources entres développeurs afin de permettre le travail en équipe sans risquer de se marcher dessus .

Installation

Cette étape est la même sur les postes clients et sur le serveur .

L'installation est très simple , dans un premier temps vérifier que les paquets suivants sont bien installé :

apt-get install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

Une fois fait ,

apt-get install git-core

Votre identité

Il vous faut ( sur chaque poste client ) définir au moins deux paramètres qui permettrons de vous identifier à chaque commit , il est donc important de les initialiser .

cd ~
git config --global user.name "Mon nom"
git config --global user.email monemail@mondomaine.fr

Nous voilà maintenant prêt à utiliser git .

Créer l'utilisateur git

Pour simplifier les étapes suivantes ( connexion ssh ) nous allons créer tout de suite l'utilisateur **git**

sudo adduser git

Nous allons limiter les possibilités de ce nouvel utilisateur sur le serveur , pour celà , nous allons lui attribuer un autre interpréteur de commande .

sudo vim /etc/passwd

Remplacer /bin/bash à la ligne ( selon l'interpréteur par défaut )

git:x:1002:1003:,,,:/home/git:/bin/bash

par

git:x:1002:1003:,,,:/home/git:/usr/bin/git-shell

Créer un Dépôt vierge sur le serveur

Voilà une étape importante et indispensable pour ce que nous souhaitons faire .
Rendez-vous sur votre serveur de développement , dans le répertoire qui contiendra les dépôts .

su git
cd /var/www/depotsGit
mkdir monProjet.git
git --bare init 

Et voilà votre dépôt est bien créé.

Accès ssh

Afin de na pas avoir à rentrer le mot de passe de git à chaque "push" nous allons mettre en place l'authentification ssh par certificats .
Suivez les étapes suivantes :

Sur votre poste utilisateur

Génération des clef

N'entrer ni passphrase ni mot de passe , passer les étapes en tapant "enter" ...

cd ~
ssh-keygen -t rsa 

Copie de la clef public

Copier le contenu de se fichier

vim ~/.ssh/id_rsa.pub

Sur le serveur

Nous allons ajouter la clef public au compte git .

su git
cd ~
mkdir .ssh
vim authorized_keys

Copier la clef public dans de fichier , enregistrez et quittez .

Répéter cette étape ( copier-coller de clef publique ) pour chaque poste qui doit avoir un accès aux dépôt GIT .

Premier git push

Retournez sur votre machine ( poste utilisateur ) , vérifiez tout de même que vous avez un accès ssh sans mot de passe

ssh git@ipduserveur

Vous devriez avoir un message de ce type :

fatal: What do you think I am? A shell?
Connection to golum closed.

Si c'est la cas bravo tout va bien , sinon, revoyez le passage clef ssh/public.

Nous allons maintenant nous occuper de nos fichiers sources , rendez-vous dans le répertoire qui va contenir vous sources .

mkdir /var/www/monSite
cd /var/www/monSite

Le répertoire est pour le moment vide , nous allons donc créer un premier fichier , **.giignore** qui vous servira peut être plus tard ( vous pouvez créer ce que vous voulez comme fichier , j'utilise .gitignore car quite à faire un test , autant faire quelque chose qui me servira :) )

Initialisation du dépôt local

Il nous faut initialiser notre dépôt local , afin que **git** gère les fichiers de ce répertoire .

touch .gitignore
git init
git add .
git commit -a -m "Initialisation Dépôt local"

Et voilà , vous avez désormais un dépôt local sur lequel vous pouvez gérer vos versions , vos branches ect .. bref utiliser toute la puissance de GIT.

Synchronisation avec le serveur de dépôts

Étape importante maintenant puisque nous souhaitons rendre nos sources public ( enfin public pour les postes qui auront copié leur clef public sur le serveur )

cd /var/www/monSite
git remote add origin git@ipduserveur:/var/www/depotsGit/monProjet.git
git push origin master

Cette dernière ligne aura pour effet d'envoyer les modifications dans le dépôt sur le serveur sur a branche "master".

Chaque développeur déclaré dans authorized_keys peut maintenant cloner le dépôt à partir du serveur , mais aussi envoyer leurs modifications .
Par exemple , si je veux cloner le dépôt actuel et donc récupérer le fichier **.gitignore** que vous avez posté .

cd /var/www/
git clone git@ipduserveur:/var/www/depotsGit/monProjet.git

Fin

Je vous laisse lire les nombreux tutoriaus concernant les commandes de bases de GIT , pour ajouter supprimer renommer les fichiers branches ect ...

www.deimos.fr
www.alexgirard.com
www.siteduzero.com
www.unixgarden.com

06 sept. 2010

Relayer vos mails

Installer un relais pour vos mails

passage-relais.jpg

Un petit billet pour vous montrer comment installer un relais pour vos mails avec authentification..
J'utilise ce genre de chose sur les serveurs dédiés , par exemple un dédié chez 1&1 , votre application web doit envoyer des mails pour une raison X ou Y , vous avez beau faire ce que vous voulez , ( belles entêtes , structures propres et aux normes , config dns pour déclarer votre serveur comme expéditeur , signature dkim ect ... ) certaines boites ne laisserons pas passer ...
Et ... quel boulot .

En utilisant les serveurs SMTP de votre prestataire , cela vous rendra la tâche déjà bien plus simple et rapide .
Seule la structure du mail devra évidemment être parfaite .. du coté serveur ... rien à gérer .. ouf !

Allons y ..

Ressources : postfix sasl

Installation

Nous allons installer le minimum requis pour notre relais , à savoir postfix et ses paquets liés pour sasl

apt-get postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util

Vous voilà avec un serveur smtp .. chouette , vous pouvez expédier des mails directement ( serveur SMTP : 127.0.0.1 ) .. c'est bien , mais encore insuffisant pour ce que nous souhaitons faire.

Configuration :

La configuration se passe principalement dans le fichier main.cf .
Commençons donc par l'éditer :

vim /etc/postfix/main.cf

Nous allons modifier / ajouter les lignes suivantes :

relayhost = auth.smtp.1and1.fr

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options = noanonymous

Bon voilà vous l'avez deviné , pour l'exemple , j'utilise les serveurs SMTP de 1and1 , défini donc au niveau de la ligne relayhost.

relayhost

La machine par défaut où livrer le courrier extérieur .
Si aucun relayhost n'est renseigné, le courrier est routé directement vers sa destination finale (champs MX).

smtp_sasl_auth_enable

Active l'authentification SASL dans le client SMTP de Postfix. Par défaut, le client SMTP de Postfix n'utilise pas d'authentification.

smtp_sasl_password_maps

Tables optionnelles de consultation du client SMTP contenant une entrée username:password par nom de machine ou domaine distant.

smtp_sasl_security_options

Options de sécurité SASL



Il est temps maintenant de s'occuper du couple login/pwd , chez 1and1 , il vous faut simplement creer un compte mail , le login sera donc votre adresse , et le mot de passe celui defini à la création du compte.
Pour définir ces paramètres , vous avez certainement remarqué que postfix fait appel à une table de hash hash:/etc/postfix/sasl/sasl_passwd , commençons donc par créer ce fichier.

vim /etc/postfix/sasl/sasl_passwd

A l'intérieur de ce fichier , il vous faut écrire la ligne comme ceci :

nom_du_serveur    login:motdepasse

Ensuite créons cette table de hashage , via postmap

postmap /etc/postfix/sasl/sasl_passwd

Nous voilà à la fin de notre configuration de notre serveur mail en relais pour nos applications , il reste la dernière étape , relancer postfix et vérifier les logs .

/etc/init.d/postfix restart

Pour les logs :

tail -f /var/log/mail.log

Tests

Pour les tests, un simple appel à la fonction php mail() , va envoyer le mail à postfix qui lui va demander au serveur de votre prestataire de le relayer , et ce de façon officiel ( si le mail est correct il sera reçu partout , même dans les boites hotmail et yahoo :) )

Sep  6 22:09:11 s15407375 postfix/pickup[29187]: 10E2F401A53: uid=33 from=<www-data>
Sep  6 22:09:11 s15407375 postfix/cleanup[29308]: 10E2F401A53: message-id=<20100906200911.10E2F401A53@s15407375.onlinehome-server.info>
Sep  6 22:09:11 s15407375 postfix/qmgr[23225]: 10E2F401A53: from=<www-data@s15407375.onlinehome-server.info>, size=410, nrcpt=1 (queue active)
Sep  6 22:09:12 s15407375 postfix/smtp[29310]: 10E2F401A53: to=<monadresse@mondomaine.fr>, relay=auth.smtp.1and1.fr[212.227.15.184]:25, delay=1.1, 
delays=0.09/0.01/0.06/0.97, dsn=2.0.0, status=sent (250 Message 0LlpLM-1OJeIZ1ir2-00ZaNS accepted by mrbap1.kundenserver.de)
Sep  6 22:09:12 s15407375 postfix/qmgr[23225]: 10E2F401A53: removed

Good Job .

J'espère que ce billet vous a intéressé , à bientôt ,
Christophe.

- page 1 de 6