=====Création d'un nouveau service=====
Heimdall & Grydur éteints donc c'est obsolète. Il y a juste la fin qui est intéressant : créer son petit logo/texte pour le motd
Bon, il y a normalement tout en place pour mettre en place facilement de nouveaux services.
Chaque service va dans une [[musee:jails:jail]]. Et on essaye de faire propre et épuré dans une jail. Pas besoin de vim ou bash (normalement).
====Où ?====
Sur [[infrastructure:heimdall]] ou [[infrastructure:grydur]]. Ce sont des machines FreeBSD avec des gros disques ZFS. Donc faites pour servir !
Vous pouvez aussi essayer d'utiliser [[infrastructure:frigg]], mais elle est nettement moins puissante et n'a pas de disques ZFS.
====Attends, je pige rien====
[[https://www.freebsd.org/doc/handbook/jails.html|Lis ça]] et [[http://erdgeist.org/arts/software/ezjail/|ça]]
====Envoie la sauce, I am ready!====
On respecte les conventions :
^ ^ heimdall ^ grydur ^
| IP pour les jails | ''10.3.15.50'' à ''10.3.15.99'' | ''10.3.15.100'' à ''10.3.15.149'' |
On ne choisit évidemment pas une IP qui a déjà été prise...
Exemple sur heimdall :
root@heimdall ~ # jls # on vérifie qu'on va pas faire n'importe quoi
JID IP Address Hostname Path
1 10.3.15.50 samba /jail/samba
2 10.3.15.56 pxe /jail/pxe
4 10.3.15.59 graphite /jail/graphite
5 10.3.15.60 grafana /jail/grafana
6 10.3.15.58 duplicity /jail/duplicity
7 10.3.15.57 ck-mirror /jail/ck-mirror
8 10.3.15.53 bounce /jail/bounce
9 10.3.15.54 ldap /jail/ldap
# # l'interface réseau pour heimdall est bge0
# # SAUF ACCORD EXPLICITE DU CRI, pour grydur, c'est em0; si tu mets bge0, tu vas TOUT niquer sur le réseau ext.ec-m.fr
root@server# ezjail-admin create ma_nouvelle_jail_avec_un_nom_explicite_et_court 'mon_interface_réseau|10.3.15.XY'
root@server# ezjail-admin start ma_nouvelle_jail_avec_un_nom_explicite_et_court
# # blah blah...
Et sur Grydur :
root@grydur ~ (git)-[master] # jls
JID IP Address Hostname Path
1 10.3.15.105 terraria /jail/terraria
2 10.3.15.100 phytv /jail/phytv
3 10.3.15.106 owncloud /jail/owncloud
4 10.3.15.108 openra /jail/openra
5 10.3.15.104 nagios /jail/nagios
6 10.3.15.107 mysql /jail/mysql
7 10.3.15.103 minecraft /jail/minecraft
8 10.3.15.101 jenkins /jail/jenkins
9 10.3.15.102 gitlab /jail/gitlab
Voilà, une jail. Toute propre, tout bien :)
====OK, j'ai une jail, now what?====
===Avant toute chose===
On prend un instantané((qu'il est moche ce mot français...)) ZFS :
root@serveur# zfs snapshot jail/ma_jail@"$(date +%Y-%m-%d)"
===PKG managment===
Interdiction d'utiliser ''pkg'' directement dans la jail
==MAJ==
Bah il y a une FreeBSD dedans. Donc on en prend soin. Une idée, c'est par exemple de la mettre à jour.
root@serveur# pkg -j ma_jail upgrade
root@serveur# ezjail-admin restart ma_jail
Et on s'assure n'avoir rien pété... on regarde le nagios, par exemple. S'il y a une application web sur la machine, on s'assure qu'elle fonctionne encore, etc.
==Installation de choses==
On upgrade, d'abord. Puis ensuite :
root@serveur# pkg -j ma_jail install mon_paquet
=====C'est bien mignon, mais là, j'ai pas encore mis les pieds dans ma jail !=====
Si tu as déjà eu le prompt ''root@ma_jail#'', je propose que tu te suicides ou au moins que tu arrêtes le sysadmin
root@serveur# ezjail-admin console ma_jail
# # MOTD...
root@ma_jail#
Voilà, tu as ta jail. Tu peux jouer avec comme avec un serveur normal à l'exception de **ne pas utiliser ''pkg'' dedans**
====On configure et on fait tourner son service...====
Tu te débrouilles, c'est maintenant qu'intervient ta matière grise.
Si un service étrange tourne en tant qu'un utilisateur que **tu** as créé de toutes pièces (genre le user openra dans la jail openra). Il est impératif de mettre son shell à ''/sbin/nologin'' pour éviter qu'une faille dans le logiciel ne permette à un pirate de mettre les pieds dans la jail.
====Tests====
Avant de continuer et de le mettre en wide-open sur le réseau, on teste le service depuis [[musee:infrastructure:sif]] (Genre au pif, check_tcp).
On écrit les tests (sur sif) pour la nouvelle jail qui sera ajoutée aux machines :
define host{
use freebsd-jail ; oui, j'insiste pour que vous utilisiez ça
host_name ma_jail
alias Ma super jail de la mort
parents grydur ; ou heimdall...
address 10.3.15.XYZ ; avec la bonne IP
}
define service{
use 24x7-service ; y'a des chances que ce soit ça dont tu aies besoin
host_name ma_jail
service_description Mon super service du feu
check_command une_commande!nagios ; cf [[services:nagios]]
}
====Pare-Feu====
Avec tes petits neurones maintenant, tu décides qui a le droit d'accès vers ton service. Puis sur odin... bah on fait de la conf pf !
# Machines
# [...]
ma_jail=10.3.15.XY
mon_super_port=11111
# [...]
# Mon super service du feu
pass in quick inet proto tcp from to $ma_jail port $mon_super_port
# [...]
Tu peux aussi utiliser les tables existantes, au besoin... après avoir usé de tes neurones !
====OK, et pour le lulz====
===Un zoli MOTD===
Générique : Dans ''/etc/motd'', mettez le texte "Ma_jail" en ascii art en fonte "graffiti" [[http://patorjk.com/software/taag/|ici]]
Moins générique : Un truc plus original
== Exemples ==
FreeBSD 10.1-RELEASE-p6 (GENERIC) #0: Tue Feb 24 19:00:21 UTC 2015
________.__ __ .____ ___.
/ _____/|__|/ |_| | _____ \_ |__
/ \ ___| \ __\ | \__ \ | __ \
\ \_\ \ || | | |___ / __ \| \_\ \
\______ /__||__| |_______ (____ /___ /
\/ \/ \/ \/
FreeBSD 10.1-RELEASE-p6 (GENERIC) #0: Tue Feb 24 19:00:21 UTC 2015
!######### #
!########! ##!
!########! ###
!########## ####
######### ##### ######
!###! !####! ######
! ##### ######!
!####! #######
##### #######
!####! #######!
####!########
## ##########
,######! !#############
,#### ########################!####!
,####' ##################!' #####
,####' ####### !####!
####' #####
~## ##~
Welcome back, commander.