Geneweb – Généalogie

logo genewebGeneweb est un logiciel de généalogie, ou plus précisément un serveur de généalogie.

Il s’agit d’un logiciel libre multi-plateforme (linux, bsd, windows, Mac Os X), on y accède via une interface web. On peut l’utiliser en mono poste (localhost) ou l’installer sur un serveur.

Je parle ici de geneweb sous serveur linux, pour ceux sous pc windows, j’imagine que ce doit se faire via mode graphique.
Sur un serveur, deux possibilités d’installation :

  • soit comme un traditionnel site web avec un script cgi.bin accessible via www.nom_du_serveur.fr/votre_cgi.bin/
  • soit en service, il est dans ce cas accessible via www.nom_du_serveur.fr:2317/

Vous pouvez démarrer en partant d’un fichier gedcom ou en partant de zéro.

La création de famille, l’enrichissement de l’arbre se fait simplement en remplissant des champs comme sur l »exemple de saisie ci-dessous :

geneweb sima78Les points forts de GeneWeb sont les suivants Interface Web

  • Affichage dynamique
  • Calculs de parenté et de consanguinité
  • Polyglotte
  • Correction d’orthographe
  • Titres de noblesse
  • Mise à jour et protection des informations
  • Personnalisation (couleur de fond, etc)
  • Importation et exportation de fichiers GEDCOM
  • Autres : Historique des mises à jour, Dictionnaire des lieux, Chronique familiale, Forum de la base de données, Statistiques, Anniversaires, Calendriers

Pour certaines tâches spécifiques, si vous avez directement la main sur votre serveur, qu’il est muni d’une interface graphique, d’un écran et un clavier, vous y accéderez par le port 2316 www.localhost:2316/

Si votre serveur est hébergé ou comme moi, n’a pas de clavier, ni écran, ni interface graphique… se sera la ligne de commande.

Amélioration, maintenance.

Le fichier avec l’extension « .gwf » contient la configuration pour une base de données. Si votre arbre s’appelle trucmuche son fichier de configuration sera « trucmuche.gwf ».

Exemple pour trucmuche.gwf

# File generated by "setup"
default_lang=
max_anc_level=10
max_desc_level=14
max_anc_tree=12
max_desc_tree=12
history=yes
images_path=//var/www/geneweb/trucmuche/gw/images/trucmuche/
hide_advanced_request=yes
friend_passwd=NUP[/b0R65,ID2
wizard_passwd=9k?rW_-C/&FyCA
wizard_just_friend=no
hide_private_names=yes
can_send_image=yes
renamed=

Vous y trouvez entre autres le chemin du dossier dans lequel vous souhaitez que vos images soient chargées ainsi que les mots de passe Ami (mode lecture) et Magicien (administrateur)

Spécifier des utilisateurs Amis et Magiciens
Créez 2 fichiers texte avec votre éditeur préféré, le nom et l’extension n’ont pas d’importance, du moins sous linux car je suppose que sous windows l’extension doit avoir son importance, à confimer…
Prenons pour exemple « amitrucmuche.auth » et « magitrucmuche.auth »

Dans le premier, vous mettez « les_noms_amis:mot_de_passe » et sauvegardez dans le même dossier ou se trouve trucmuche.gwf, dans le second, vous faites la même chose avec « les_noms_admin:mot_de_passe ».
Exemple :

pierre:u]<AYj$c*=>''4
paul:$D%E-=B{5m$z,v
jacques:DLX2F_qZx7=Ei#

Puis modifiez dans votre fichier « trucmuche.gwf » les lignes suivantes

#friend_passwd=
#wizard_passwd=
friend_passwd_file= amitrucmuche.auth
wizard_passwd_file=magitrucmuche.auth

Nettoyer la base de données
De temps à autres, et à force d’enrichir, modifier, supprimer… la base de données nécessite d’un nettoyage.

– Nettoyage light, on utilise la commande consang, et c’est tout!

consang trucmuche

– Nettoyage, plus blanc que blanc avec les commandes gwu et gwc, c’est un peu plus long…

gwu trucmuche > trucmuche.gw
gwc trucmuche.gw -o machintruc

Vérifier que « machintruc » est correct et s’il l’est, vous pouvez supprimer trucmuche.gwf, trucmuche.gwo (qui vient d’être créé) et trucmuche.gw (sauf si vous souhaitez le garder comme sauvegarde)

rm -Rf  trucmuche.gwf trucmuche.gwo trucmuche.gw

Puis renommer machintruc

mv machintruc.gwb trucmumuche.gwb

Sauvegarder

gwu trucmumuche > trucmumuche.gw

Restaurer

gwc  trucmumuche.gw -o  trucmumuche

Importer un GEDCOM

ged2gwb trucmuche.ged -o trucmuche

Exporter ver un GEDCOM

gwb2ged trucmuche [options]

Le man pour les options (avec ma modeste traduction)

man gwb2ged
-help  aide de ligne de commande

-o <ged>
       Nom du fichier de sortie (par défaut: a.ged)

-charset [ASCII | ANSEL]:
       Set charset. Par défaut est ASCII. Attention: la valeur ANSEL fonctionne correctement que sur iso-8859-1 bases de données codées.

-o <ged>
       Nom du fichier de sortie (par défaut: a.ged)

-mem   économiser de l'espace mémoire, mais plus lent

-a <1st_name> [num] <nom>
       sélectionnez les ancêtres de

-d <1st_name> [num] <nom>
       sélectionnez les descendants de

-aws <1st_name> [num] <nom>
       sélectionnez les ancêtres de... avec les frères et sœurs

-s <nom>
       sélectionnez ce patronyme (option utilisable plusieurs fois)

-nsp   pas les parents ni conjoints (pour les options -s et -d)

-nn    aucune note (base de données)

-c <num>
       Quand une personne est né il ya moins de <num> années, elle n'est pas exportée sauf si elle est publique. Tous les conjoints et descendants sont également censurés.

Voilà de quoi bien avancer en généalogie avec Geneweb.

Crypsetup – Chiffrer la partition var

chiffrer partition varDéplacer la partition var dans une partition chiffrée

ATTENTION! La partition « var/ » est solicitée très tôt au boot, la déplacer sans précaution sur une partition chiffrée, c’est vous assurer d’un plantage au démarrage… Sauvegardez et suivez les instructions sans sauter d’étape.

Ce billet est dans la catégorie « Serveur », mais on peut appliquer cette méthode à tout pc sous linux.

Partons d’un principe que vous ayez déjà une partition chiffrée nommée « d5 » sur laquelle vous souhaitez déplacer le dossier « var » et tout ce qui s’y trouve… Étape par étape…

Pour en savoir plus sur le chiffrement de données allez faire un tour du côté de chez Hoper que je remercie!
Chiffrement-Theorie
Chiffrement-Pratique

Donc c’est fait! Vous avez une partition chiffrée prête à accueillir votre dossier « /var/ »

Déplacer /var dans une partition chiffrée en 6 étapes

1 Créer un fichier « crypttab » dans /etc/
Mettre le nom de la partition chiffrée, le « /dev/XXX » Correspondant « none » et la méthode de chiffrement. Ici, nous prenons l’exemple qu’il s’agit du /dev/sda5… Recherchez votre « dev/ » avec la commande « sudo fdisk -l »:

# vi /etc/crypttab

Et mettre

d5   /dev/sda5    none     cipher=aes-xts-plain64,size=512

2 Rechercher UUID de la partition avec la commande « blkid »

# blkid
/dev/sda1: UUID="53ca7412-1ff7-105d-13fd-b15ab0d5" TYPE="ext4"
/dev/sda5: UUID="24fda933-44f3-30da-1947-3c4508af77ae" TYPE="swap"
/dev/mapper/d5: UUID="f254212d-9492-fab0-9220-4f5dad3c940a" TYPE="ext4"

Il s’agit de la 3ème ligne

3 Ouvrir le fichier « fstab » et rajouter à la fin:

UUID="f254212d-9492-fab0-9220-4f5dad3c940a" /var    ext4    defaults    0    0

Vérifier avec la commande df -h, vous devriez voir la ligne suivante dans la liste

# df -h
(…)
/dev/mapper/d5   650G    1,4G  382G   1% /var

Moi j’ai:
/dev/mapper/d5_unformatted   650G    1,4G  382G   1% /var
Mais ça marche très bien !

4 Vérifier les processus en cours

# ps -eaf | less

D’autres préférerons « more »

# ps -eaf | more

    Arrêter les bases de données et apaches… dans mon cas:

# /etc/init.d/mysql stop
# /etc/init.d/apache2 stop
# /etc/init.d/postgresql stop

Puis revérifier:

# ps -eaf | less

5 Copier le contenu de /var dans /d5

# cp -a /var/* /d5/

    renommer le dossier /var pour pouvoir « faire marche arrière » en cas de problème.

# mv /var /var.old

6 C’est fini, on redémarre.
Seule contrainte, il faudra mettre un clavier et un écran sur le serveur qui demandera un mot de passe au moment de monter /var, donc à chaque reboot.

# reboot

LVM et cryptsetup partitioner et chiffrer un disque dur

lvm crypsetupJ’ai mis ce billet dans la catégorie serveur, mais en réalité cela s’applique à n’importe quel PC

Vous venez d’installer un disque supplémentaire sur votre pc.

Vous souhaitez le partitionner avec LVM (logical volume management ou gestion par volumes logiques) puis chiffrer les partitions avec Cryptsetup.

Prenons ici un disque dur de 1To et que l’on souhaite faire deux partitions qu’on nommera « donnees » et « save »

Vérifier les disques montés, et éviter de se tromper de disque. 🙂
Deux commandes utiles
sudo fdisk -l
sudo df -h

Avant tout, connaître sur quel « dev » se trouve le nouveau disque.

sudo fdisk -l
(...)
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 têtes, 63 secteurs/piste, 121601 cylindres, total 1953525168 secteurs
(...)
Le disque /dev/sdb ne contient pas une table de partitions valable
(...)

On commence par créer notre volume physique

sudo pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created

Puis on crée le groupe de volume

sudo vgcreate mvg /dev/sdb
  Volume group "mvg" successfully created

Maintenant on crée les volumes logiques (nos nouvelles partitions) :

sudo lvcreate -n donnees -L 700g mvg
  Logical volume "donnees" created
sudo lvcreate -n save -L 300g mvg
  Volume group "mvg" has insufficient free space (59267 extents): 76800 required.

Houps ! lors de la création du 2ème volume, il n’y a pas assez de place…
Solution et explication:
Il se trouve qu’il ne reste pas 300 Go de disponible mais, comme il l’indique seulement 59267 « extends ».
La taille d’un extend dépend des paramétrages utilisés lors de la création de la configuration LVM.
Par défaut, il fait des extends de 4 Mo.
Il indique donc très justement que pour créer un volume de 300 Go, il te faudrait 59267 « bouts » de 4 Mo.
  Volume group « mvg » has insufficient free space (59267 extents): 76800
Pour utiliser tout l’espace restant, le plus simple est de lui indiquer une taille en extend, dans ce cas :

sudo lvcreate -n save -l 59267 mvg 

Notez bien que ce n’est plus -L (taille) mais -l (extend), le petit l permet d’indiquer une taille directement en nombre d’extend, et pas en Mo/Go/To etc. »

Là le disque dur sous LVM est opérationnel…. Le chiffrage est un plus…

Maintenant je souhaite chiffrer les 2 partions créées, puis les monter respectivement dans « /mnt/donnees » et « /mnt/save »
Dans l’ordre: on se rend sur le répertoire /mnt, puis on crée les 2 répertoires (donnees et save).

cd /mnt
sudo mkdir donnees
sudo mkdir save

On chiffre les partitions avec cryptsetup, on y mets un type de fichier (là ext4) puis on les montes.

sudo cryptsetup -y --cipher=aes-xts-plain64 -s 512 create don /dev/mvg/donnees
sudo mkfs -t ext4 /dev/mapper/don
sudo mount /dev/mapper/don /mnt/donnees
sudo cryptsetup -y --cipher=aes-xts-plain64 -s 512 create sav /dev/mvg/save
sudo mkfs -t ext4 /dev/mapper/sav
sudo mount /dev/mapper/sav /mnt/save

Et voilà, c’est fini !

Pour « démonter » les volumes.

sudo umount /mnt/donnees
sudo cryptsetup remove don
sudo umount /mnt/save
sudo cryptsetup remove sav

Pour y accéder par la suite, à chaque démarrage il faudra taper les commandes suivantes:

sudo cryptsetup --cipher=aes-xts-plain64 -s 512 create don /dev/mvg/donnees
sudo mount /dev/mapper/don /mnt/donnees
sudo cryptsetup --cipher=aes-xts-plain64 -s 512 create sav /dev/mvg/save
sudo mount /dev/mapper/sav /mnt/save

Pour aller plus loin:
4 billets sur LVM et 2 sur le chiffrage sur le site Hoper sur l’onglet « Partage de connaissances »

Sécuriser un accès ssh sur un serveur

Sécurisé un accès ssh sur un serveurCréer un double accès ssh

L’idée de départ était de modifier le port d’écoute du ssh (Secure SHell) « port 22 » pour mettre, par exemple, 6721 et interdire la connexion en « root », soit:

vi /etc/ssh/sshd_config

Et modifier les 2 linges suivantes « Port 22 » et « PermitRootLogin yes » comme suit:

Port 6721
PermitRootLogin no

Vous pouvez vérifier avec la commande suivante:

grep Port /etc/ssh/sshd_config
#Port 22
Port 6721

Un ami, Emile C., pour ne pas le nommé m’a dit:

puisque tu te connectes toujours du même pc local et du même pc distant, pourquoi ne ferais-tu pas un double ssh avec restriction sur ip?

C’est donc parti pour un double ssh.

– On va créer un lien symbolique appelé « sshd_exterieur »
– Créer un fichier de configuration appelé « sshd_config_exterieur »
– Modifier ce fichier de configuration.

ln -s /usr/sbin/sshd /usr/sbin/sshd_exterieur
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_exterieur
vi /etc/ssh/sshd_config_exterieur

Mettre le port à 6722 et « UsePAM no »
Voyons les différences entre les deux fichiers:

sdiff -s sshd_config sshd_config_exterieur
Port 6721 | Port 6722
UsePAM yes | UsePAM no

pour un démarrage lors du boot! Dans /etc/rc.local ajouter ceci :

/usr/sbin/sshd_exterieur -f /etc/ssh/sshd_config_exterieur 2>&1

Modifiez votre iptables pour accepter les deux connexions.

 

-A INPUT -p tcp -m state --state NEW -m tcp --dport 6721 --source 192.168.1.21 -j ACCEPT #adaptez avec votre ip locale
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6722 --source 88.224.XXX.XX -j ACCEPT #adaptez avec votre ip distante

– Ajouter un service sshd_exterieur surveillé par logwatch tous les jours :

 

 

/usr/share/logwatch/default.conf/services/sshd_exterieur.conf
/usr/share/logwatch/scripts/services/sshd_exterieur

– Rebootez votre serveur et vérifier avec la commande suivante:

 

 

ps -ef | grep sshd | grep -v grep

Pensez aussi à modifier votre routeur! 🙂
Merci Emile C.!

 

Fail2ban – Bloquer les requetes phpmyAdmin w00tw00t et dos avec mod_evasive

Fail2Ban bloquer les requêtesFail2ban ou comment bloquer les requêtes phpmyAdmin w00tw00t et dos avec mod_evasive

Élément essentiel pour sécuriser son serveur, Fail2ban permet d’éviter des intrusions via force-brute. Il se charge d’analyser les logs des services installés et bannit automatiquement et pour une durée déterminée un hôte via iptables en cas d’échecs de connexion après X tentatives.

Installer Fail2ban:

sudo apt-get install fail2ban

Par défaut, Fail2ban propose déjà plusieurs filtres pré-configurés. On retrouve les filtres dans « /etc/fail2ban/filter.d/ ».
Le fichier de configuration où l’on peut spécifier pour chaque filtre le nombre d’essai avant le bannissement et le temps de bannissement, est: /etc/fail2ban/jail.conf

En plus des filtres existants, on peut ajouter des filtres pour se protéger des requêtes excessives sur phpmyadmin ainsi que bloquer les attaques w00tw00t (fruit d’un logiciel de scanning « DFind » utilisé par des kiddies) et DOS et autres, ici, nous verrons les 3 que je viens de citer.

1 – Fail2ban contre les attaques sur phpmyadmin
Créez un nouveau filtre dans « /etc/fail2ban/filter.d »

sudo nano /etc/fail2ban/filter.d/apache-phpmyadmin.conf

et copiez:

[Definition]
docroot = /var/www
badadmin = PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2|administrator|d$
failregex = [[]client <HOST>[]] File does not exist: %(docroot)s/(?:%(badadmin)s)
ignoreregex =

Et enregistrez.
Dans le fichier /etc/fail2ban/jail.conf ajoutez à la fin:

[apache-phpmyadmin]
enabled = true
port = http,https
filter = apache-phpmyadmin
logpath = /var/log/apache*/*error.log
maxretry = 3

2 – Fail2ban et protection contre les requêtes w00tw00t

 

sudo nano /etc/fail2ban/filter.d/apache-w00tw00t.conf

Copiez:

 

 

[Definition]
failregex = ^<HOST> -.*"GET \/w00tw00t\.at\.ISC\.SANS\.DFind\:\).*".*
ignoreregex =

Dans /etc/fail2ban/jail.conf copiez:

 

 

[apache-w00tw00t]
enabled = true
port = 80,443
action = %(action_mwl)s
filter = apache-w00tw00t
logpath = /var/log/apache*/*error.log
maxretry = 1

3 – Fail2ban contre les DOS avec mod_evasive (source Linux magazine, hors-série N°66)
Installation mod_evasive

 

 

sudo apt-get install libapache2-mod-evasive

Créer un répertoire pour stocker les informations liées aux attaques et préciser les propriétés du répertoire.

 

 

sudo mkdir /var/log/apache2/mod_evasive
sudo chown www-data.www-data /var/log/apache2/mod_evasive

Configurer apache

 

 

sudo nano /etc/apache2/conf.d/evasive

et collez:

 

 

DOSHashTableSize 3097
# pas plus de 5 pages toutes les 2 secondes
DOSPageCount 5
DOSPageInterval 2
# Pas plus de 100 requête par seconde (image, CSS…)
DOSSiteCount 100
DOSSiteInterval 1
# Bloquer le client pendant 10 secondes
DOSBlockingPeriod 10
# Dossier contenantles IP blacklistées
DOSLogDir "/var/log/apache2/mod_evasive"

Puis recharger la configuration

 

 

sudo service apache2 reload

Créez le filtre

 

 

sudo nano /etc/fail2ban/filter.d/apache-modevasive.conf

copiez:

 

 

[Definition]
failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client <HOST>\] client denied by server configuration:\s
ignoreregex =

Dans /etc/fail2ban/jail.conf copiez:

 

 

[apache-modevasive]
enabled = true
filter&nbsp; = apache-modevasive
action = iptables-allports[name=apache-modevasive]
logpath = /var/log/apache*/*error.log
bantime = 60
bantime = 3600
maxretry = 10

FIN.
Si vous avez d’autres suggestions ou améliorations, je suis preneur…

 

https sur serveur unbuntu facile

https sur serveur unbuntu facileComment créer un accès https sur un serveur ubuntu 12.04.

Il s’agit d’un serveur LAMP (Linux, apache, Mysql, Php) ou autres…

Rapide, simple et efficace.

On active le module ssl, si ce n’est pas fait.

sudo a2enmod ssl

On redémarre apache:

sudo /etc/init.d/apache2 restart

ou

sudo service apache2 restart

Nous avons besoin de créer un nouveau répertoire dans lequel nous allons stocker la clé serveur et le certificat.
Créons un répertoire « ssl » sous /etc/
Puis un répertoire du nom de domaine, ex. « mon_serveur.fr » sous /etc/ssl/

sudo mkdir /etc/ssl
sudo mkdir /etc/ssl/mon_serveur.fr

Créez un certificat auto-signé « SSL »

Lorsque qu’on crée un nouveau certificat, nous pouvons spécifier combien de temps le certificat reste valide en mettant par exemple 365… Le certificat expire après un an… Ce qui semble logique 😉

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/mon_serveur.fr/mon_serveur.key -out /etc/ssl/mon_serveur.fr/mon_serveur.crt

Avec cette commande, nous allons à la fois créer un certificat SSL auto-signé ainsi que la clé sous le nouveau répertoire (/etc/ssl/mon_serveur.fr/).

Cette commande vous demandera un certain nombre de renseignements à remplir…

La ligne la plus importante est « Common Name (e.g. server FQDN or YOUR name) []: ». Entrez votre nom de domaine officiel ici ou, si vous n’en avez pas encore, l’adresse IP de votre site.

Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:IdF
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:mon_serveur
Organizational Unit Name (eg, section) []:mon_serveur
Common Name (e.g. server FQDN or YOUR name) []:mon_serveur.fr
Email Address []:votre_adresse@fai.fr

Maintenant, nous avons tous les éléments nécessaires pour terminer la prochaine étape est de mettre en place le serveur virtuel pour afficher le nouveau certificat.

Ouvrez le fichier de configuration de SSL:

sudo nano /etc/apache2/sites-available/default-ssl

Sur « ServerAdmin » mettez cotre mail
En dessous, rajouter la ligne:
« ServerName votre-serveur.fr:443« 
comme exemple ci-dessous

ServerAdmin votre_adresse@fai.fr
ServerName mon_serveur.fr:443

Rechercher les lignes ci-dessous et adaptez-les à votre configuration, dans notre exemple:

SSLEngine on
SSLCertificateFile /etc/ssl/mon_serveur.fr/mon_serveur.crt
SSLCertificateKeyFile /etc/ssl/mon_serveur.fr/mon_serveur.key

Sauvez et quittez.
Activez le nouveau site virtuel « Virtual host« 

sudo a2ensite default-ssl

Redémarrez le serveur:

sudo /etc/init.d/apache2 restart

ou

sudo service apache2 restart

Dans votre navigateur, tapez « https://votre-adresse » et vous serez en mesure de voir le nouveau certificat.

En cas de problème, on peut tester avec la commande suivante

curl -kv https://votreserveur.fr

Suivre son serveur avec Logwatch

regardez vos logs avec logwatchInstaller et configurer Logwatch

Pourquoi plutôt logwatch qu’une autre application de surveillance?

Je trouve logwatch très explicite, facile à configurer, simple et agréable à lire, il livre les logs bien structurés sous forme de chapitres, bref, pas besoin d’être un pro de la sécurité pour déchiffrer les logs… Qu’on peut recevoir par mail.

Logwatch sur ubuntu 14.04 server

Première chose à faire, vérifier que votre serveur peut vous envoyer un mail.

$ echo Contenu du message | mail -s "Sujet du mail" votremail@fai.fr

Supposons que vous avez bien reçu le mail… Tout va bien, on continue.

$ sudo apt-get install logwatch

Avant de configurer, faire une copie du fichier « logwatch.conf » dans /etc/logwatch/conf/

$ sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/

Ensuite, ouvrez le fichier de configuration avec VIm, pour faire pro, ou comme moi avec « nano« 

$ sudo nano /etc/logwatch/conf/logwatch.conf

garder en mémoire la ligne 30 et modifier les lignes 35 (mettre « mail »), 44 (votre mail) et 77 (précision des informations traitées) comme suit :

29 # You can override the default temp directory (/tmp) here
30 TmpDir = /var/cache/logwatch
35 Output = "mail"
44 MailTo = votremail@fai.fr
77 Detail = 10

Vérifier que le dossier logwatch existe dans /var/ (vu ligne 30) sinon le créer.

$ sudo cd /var/cache/
$ ls
$ sudo mkdir logwatch

Faire un test avec la commande :

$ sudo logwatch –range=Today

Normalement, c’est fini et doit bien fonctionner !
N’hésitez pas à commenter pour apporter des précisions ou pour vos remarques.