Configuration de FreeBSD

De Diablotins.org.

Version du 8 septembre 2009 à 07:22 par Lecid (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Image:brush.png

Sommaire

Configuration de base de FreeBSD

Modification du Shell par défaut

Une des premières choses à faire, c'est de changer le Shell de root en Bash pour des motifs de commodités. Tout, d'abord, vérifier l'intégrité du fichier des shells autorisés, il doit y avoir la ligne :

  /usr/local/bin/bash

Assurer vous que vous vous trouvez bien dans le répertoire /root (home du root). Taper 'pwd' pour le vérifier. Tapez à l'invite en root :

  # chsh

Le système affiche alors, un listing au format 'Clef : valeur'. Changer la valeur pour la clef 'Shell' à '/usr/local/bin/bash' .

Pour valider il suffit de sauver le buffer provisoire.

Nota : Pour diverses raisons, il n'est pas conseillé de modifier le compte root par un shell qui n'est pas dans le système de base (ie hors de /bin). Mais vous pouvez utilisez le compte toor qui est fait pour ça.

Modification du fichier d'initialisation

Pour des raisons de compatibilité du Bash, il est conseillé de lier symboliquement les fichiers d'initialisations du Bash,sh et de Csh,Tcsh, respectivement .bashrc et .profile. Pour cela, tapez :

  # ln -s .profile .bashrc

Editer le .profile et taper :

# Variable d'environnement de La repository CVS des sources et des ports de FreeBSD.
export CVSROOT=':pserver :anoncvs@anoncvs.freebsd.org:/home/ncvs'
# Variable d'environnement de votre éditeur préféré.
export EDITOR='ee'
# Variable d'environnement du prompt format
'user@machine:/path#'
export PS1='\u@\h:\w#'
# alias qui colorise la commande ls
alias ls='ls -G'
alias ll='ls -l'
alias la='ll -a'

Quitter votre session et relancé la. Remarque : Si vous étiez déjà en bash, après avoir tapé 'bash' au prompt, vous pouviez taper :

  # . .profile

pour relancer le fichier d'initialisation.

Cette fois ci, quittez réellement la session root, faîtes le même lien symbolique et la même configuration pour le user que vous avez créé.

Remarque : Les variables d'environnement comme PAGER, CVSROOT,PS1, EDITOR… , dépendent des utilisateurs.

Mise en place du fichier /etc/hosts valide

Passer en root.
Vous allez mettre en œuvre votre fichier /etc/hosts (fichier de résolution IP/nom de domaine local) :

Mettez les lignes suivantes :

::1 localhost localhost.localdomain
127.0.0.1 localhost localhost.localdomain
127.0.0.1 votre_host votre_host.votre_domain

et puis les autres associations.

Validation du fichier d'initialisation de FreeBSD rc.conf

Vous allez maintenant vérifier l'intégrité du fichier de configuration au démarrage de FreeBSD, le fichier rc.conf : Il doit y avoir les lignes suivantes :

hostname= "nom.domaine"
ifconfig_xl0= "DHCP"
inetd_enable="YES"
ipv6_enable="YES"
kern_securelevel_enable="NO"
keymap="fr.iso.acc"
linux_enable="YES"
local_startup="/usr/local/etc/rc.d"
moused_enable="YES"
sendmail_enable="NO"
sshd_enable="YES"
tcp_extensions="YES"
usbd_enable="YES"

Limitation des consoles virtuelles

Si vous voulez, vous pouvez limiter le nombre de consoles virtuelles, en modifiant des lignes dans le fichier /etc/ttys :

  Ttyv[1,8] " /usr/libexec/getty Pc " cons25 [on|off] secure

Les ttys sont les terminaux, le v signifie " virtuel ", getty est un programme système qui est lancé quand une console est en attente et qui demande un login et un password. " cons25 " est un type de terminal, " on " est le statut que l'on peut passer à " off " pour supprimer une console virtuelle Secure précise le niveau de sécurité de la console virtuel.

Mise en place de l'identification de la machine

Il est judicieux dans le cas d'un serveur, de modifier le message de login de session pour préciser le contact, le nom, l'OS et la version de l'OS installé, et son orientation, les services disponibles. Il suffit d'éditer le fichier /etc/motd(5).

Ajout d'utilisateur au système via la commande adduser

Pour ajouter un utilisateur sour FreeBSD il existe la commande adduser(8) (rmuser pour les supprimer).

# adduser Enter username [a-z0-9_-]: rge
Enter full name []: Romain GEORGES
Enter Shell Bash csh ksh nologin sh [csh] bash
UID [1000]:
Login group rge [rge]:
Login group is 'rge'. Invite rge into other group : guest no [no] wheel
Enter password []:
Enter password again []:

Cette description des lignes de adduser n'est pas exhaustive

Remarque : Le groupe wheel au quel on peut ajouter un utilisateur, est un groupe administratif, il permet à l'utilisateur de faire des su - sur le root.

Modification des droits d'accession root pour les utilisateurs

Vous pouvez donc éditer le fichier /etc/group pour ajouter les utilisateurs ayant droit à l'accession root.

Taper les logins séparés par des virgules sur la ligne du groupe wheel :

  Wheel :* :0 :root,rge

Le répertoire /etc/skel, contient un template de répertoire home avec les fichiers d'initialisations standards, vous pouvez effectuer une fois pour toute les modifications que vous aviez fais pour un utilisateur, de tel sorte qu'elles seront effectué pour chaque créations d'utilisateurs.

Remarque : La commande adduser permet de choisir un autre template que celui-ci, vous pouvez donc définir vos propres profiles suivant les groupes d'utilisateurs.

Mise en œuvre de sudo

Avantage de SUDO

Il peut être utile d'installer sudo sur la machine, cette utilitaire permet d'accepter la majorité des opérations de root pour certains utilisateurs, en leur laissant s'identifier avec leur propre mot de passe et non celui du root, ou meme sans mot de passe, que vous restez le seul à connaître. De plus cela vous permet de vous connecter en user sur votre machine via ssh pour acquérir en sudo les droits de root en tapant :

  # sudo bash " password user"

Et de ne plus accepter les connections en root.

Installer SUDO

Pour installer sudo, vous allez utiliser son package, tapez en root :

  # /stand/sysinstall

vous arrivez sur le Menu d'installation de FreeBSD que vous connaissez déjà. Sélectionnez :

  Configure Do post-installation configuration of FreeBSD

Sélectionnez :

  Packages Install pre-packaged softwares for FreeBSD

Choisissez , pour vous connecter par FTP :

  2 FTP Install from an FTP server.

Choisissez un serveur FTP proche de vous, par exemple :

  France #6 ftp6.fr.freebsd.org

Le processus vous demande confirmation, valider. Il se connecte, et vous donne un menu par catégorie des packages comme nous l'avions déjà vue pour les shells, cette fois-ci, nous allons dans la catégorie " security ". Sélectionnez sudo dans sa version actuelle, validez, déplacez vous sur [install] et re-validez. Sudo s'installe.

Quittez comme précédemment.

Remarque : l'intérêt des packages FTP, est qu'ils sont régulièrement mis à jour.

Pour supprimer un packages il suffit de faire la même démarche mais cette fois de le décocher.

Configurer SUDO

Maintenant il faut configurer cet utilitaire.

Allez dans /usr/local/etc/

Il faut régler les droits sur le fichiers sudoers, Tapez :

  # chmod 440 sudoers

Editez ce même fichier et ajoutez les lignes tels que :

  # vi /usr/local/etc/sudoers
  --
  root ALL = (ALL) ALL
  %wheel ALL = (ALL) ALL
  ALL = (ALL) ALL


10) Mise a jour des ports FreeBSD

Vous devez mettre à jour vos 'ports', le système de ports de FreeBSD, constitue un arbre de Makefiles de logiciels pré configuré qui vous permet de télécharger, compiler, installer réinstaller les dernières versions des utilitaires UNIX.

Remarque : Le système de ports, possède un ensemble de méthodes et de commandes utiles.

  • Pour compiler un logiciel : make
  • Pour télécharger un logiciel : make fetch
  • Pour installer un logiciel : make install
  • Pour désinstaller un logiciel : make deinstall
  • Pour réinstaller un logiciel : make reinstall
  • Pour lister les logiciels installé : pkg_info
  • Pour installer un package FreeBSD (.tgz) : pkg_add
  • Pour supprimer un package FreeBSD : pkg_delete

Pour mettre à jour les ports, nous allons utiliser CVS (il y a d'autre moyen ). Nous avons déjà fixé la variable CVSROOT dans notre fichier d'initial.

Tapez :

  # env|grep CVSROOT

Vous devez trouvez une ligne tel que :

  CVSROOT=:pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs

Si cette ligne n'existe pas, vous pouvez initialiser la variable d'environnement grâce à la commande:

  # export CVSROOT=':pserver :anoncvs@anoncvs.freebsd.org:/home/ncvs'

Maintenant que cette variable existe, placer vous dans /usr. Et supprimer le répertoire ports en tapant :

  # cvs login
  [le mot de passe 'anoncvs']
  # rm -r ports


Le traitement est assez long.
Pour rapatrier les ports depuis de le serveur anonyme CVS de FreeBSD, il suffit maintenant de taper :

  # cvs co ports

Ce traitement est aussi très long.
Jusqu'à deux heures et plus, suivant le serveur que vous utilisez comme CVS anonyme, j'ai sélectionné ici le serveur générique et ses temps d'accès peuvent êtres relativement long. Une fois le processus terminé, vos ports sont à jour.

Pour les conserver à jour, vous devrez taper régulièrement depuis le répertoire '/usr/ports' la commande :

  # cvs update

Vous pouvez procéder ainsi pour les sources de FreeBSD. Il suffit de remplacer ports dans les séquences de commandes précédentes par 'src'. Cette action est d'ailleurs impérative pour la suite, si vous voulez mettre à jour le système FreeBSD dans sa totalité.

Make world ou la mise a jour du systeme

Nota : La méthode ci-dessous est obsolète et déconseillée. Pour archives seulement. LA METHODE est de construire un nouveau monde (make buildworld, de contruire un nouveau noyau (make buildkernel), d'installer le nouveau noyau (make installkernel), de faire un mergemaster -p, de rebooter en single user puis enfin installer le nouveau monde (make installworld) puis de faire un mergemaster.

Pour effectuer une Mise à jour du système, nous allons utiliser deux cibles du Makefile FreeBSD sous /usr/src, 'clean' et 'world'.

Passez votre FreeBSD en mode single user.
Pour se faire, redémarrez la, en tapant :

  # reboot

Laissez le noyaux se charger en mémoire, et quand le système vous y invite, tapez sur .

Le prompt du loader s'affiche alors, tapez :

  boot -s

Votre système boot alors en mode dégradé single user.

Il suffit maintenant de taper les commandes suivantes :

  # cd /usr/src
  # make world

le traitement est long, environ 1h.

Recompiler le noyau

Ne redémarrez pas votre machine tout de suite, l'étape d'après devient obligatoire, si vous avez mis à jour votre système vous devez aussi recompiler votre noyau FreeBSD.
Pour se faire vous devez taper plusieurs commandes, mais rien de très compliqué.

Remarque : Nous allons ici considérer le cas d'une installation comme précédemment sur un PC i386.

Tapez :

  # cd /usr/local/src/sys/i386/conf

La compilation d'un noyau sur un système BSD, oblige la mise en œuvre d'un fichier de configuration spécial dans le répertoire si dessus. Nous allons dans le cas présent, recompiler un noyau générique pour votre système.

Remarque : Le noyau chargé par défaut par FreeBSD se trouve sur / et se nomme évidement /kernel une copie de celui-ci se nomme /kernel.GENERIC, ne la supprimez que si vous savez se que vous faites, elle peut vous rendre de grand service comme nous le verrons plus tard.

Copiez le fichier de conf du noyau générique dans un fichier de conf personnel.

Remarque : Une convention sous FreeBSD veut que l'on nomme le fichier de conf du noyau par le nom de la machine en majuscule.

Tapez donc :

  # cp GENERIC MAMACHINE

Remarque : Nous n'allons pas modifié ce fichier de configuration. Mais sachez que vous pouvez supprimer des lignes concernant des matériels que vous n'avez pas sur votre machine , spécifiez le type de processeur que vous avez …

Un fichier nommé LINT ou maintenant NOTES contient toutes les lignes possibles pour ce fichier, consultez le et utilisez le comme modèle, le HandBook de FreeBSD demeure la seule source fiable pour toutes les opérations sur le noyau de FreeBSD.

Une fois que vous avez copié votre fichier de configuration, il faut spécifier au système qu'il faut l'utiliser comme modèle, et lui laisser générer le Makefile et ses includes pour le noyau et ses modules.

On ajoute deux ligne dans le make.conf :

  # vi /etc/make.conf
  --
  [...]
  KERNCONF=MAMACHINE
  [...]

tapez :

  # cd /usr/src
  # make buildkernel 
  # make install kernel

Vous n'avez plus qu'à redémarrer votre machine. Tapez :

reboot

Remarque importante : au cas ou un problème survienne au démarrage, reporté vous au chapitre qui suis la configuration du loader, juste après, et qui traite justement du loader.

Votre machine redémarre avec un noyau mis à jour et un système mis à jour.

Modification des paramètres de démarrage du système

Nous pouvons maintenant modifier les paramètres de démarrage de votre système :

Un fichier contient toutes les informations et configurations de démarrage pour votre FreeBSD, le fichier '/boot/default/loader.conf'.
Vous pouvez y régler plusieurs détails pour le chargement de votre noyau, nous n'allons que modifier le temps de chargement par défaut du noyau.

Modifiez la ligne, en la dé-commentant :

  #autoboot_delay= "10"

en

  autoboot_delay= "2"

Vous pouvez aussi choisir un autre noyaux que le noyau par défaut au démarrage.

  kernel = "/kernel "

en

  kernel = "/path_to_Mykernel"

Utilisation du loader et du boot loader de la FreeBSD

Nous allons voir maintenant, les différents modes de démarrage de la FreeBSD. Redémarrez votre système et appuyez sur une touche sauf avant la fin du boot_delay que vous venez de définir.

  Hit [Enter] to boot immediatly, or any other key for command prompt.

Vous arrivez devant un prompt 'ok'.
Vous pouvez taper , 'help' ou ' ?' (attention clavier QUERTY).
Les commandes les plus utiles de se mode sont :

  • Reboot : qui redémarre.
  • Boot : qui continu un chargement, cette commande a des options :
'-c' qui boot en mode configuration du noyau, mode de sélection des modules à charger.
'-v' qui boot en mode bavard (debugage du noyau).
'-s' qui boot en mode single user.
  • unload : qui permet de décharger un module ou le noyau.
  • load : qui permet de charger un module ou un noyau.
  • ls : qui liste les fichier (comme le ls bash).
  • lsdev : qui liste les périphériques (tel que les disques durs et le floppy).
  • lsmod : qui liste les modules chargés et le noyau.
  • more : comme le more bash.
  • set : qui défini une variable du loader.
  • unset : l'inverse.
  • show : qui affiche ces mêmes variables.

Si vous voulez charger un noyau différent, par exemple si le votre, après la compilation ne fonctionne pas, vous pouvez entrer dans se menu du loader et taper :

  unload kernel
  load /kernel.GENERIC

Ou, si vous venez juste de compiler un nouveau noyau et qu'il ne fonctionne pas :

  unload kernel
  load /kernel.old


Vous pouvez , de la même manière lancer un noyau spécifique à votre convenance :

  unload kernel
  load /my/path/to/mykernel!


Nous continuons un peu sur le loader et abordons un autre aspect utile de cette application, le 'boot single user'.

Au prompt 'ok', vous pouvez taper :

  > boot -s

Ainsi, après son démarrage votre système vas directement lancer un shell. Cette fonctionnalité peu par exemple servir à récupérer un mot de passe root perdu.

Modification d'un mot de passe de root perdu.

Les système vous demande alors le shell que vous voulez utiliser, contentez vous de valider, le bash n'est pas accessible, car /usr/local/bin n'est pas encore monté.

Pour le moment le système de fichiers / est le seul à êtres monté et en lecture seul. Tapez :

  # mount -u

Qui remonte en lecture/écriture le système de fichier primaire et :

  # mount -a

Qui monte le reste des systèmes de fichiers.
Vous pouvez alors taper :

  # passwd root

Le système vous redemande un mot de passe, et continué le démarrage en tapant :

  # reboot

Remarque : Vous pouvez redémarrer le système en tapant reboot, mais prenez garde de démonter vos système de fichier !!

Configuration de syslogd

Nous allons maintenant configurer le démon de répartition des logs du système. En vue de la mise en place d'un système de monitoring, nous allons rediriger les messages du système vers des fichiers spécifiques et non vers un TTY.
On doit modifier le fichier /etc/syslogd.conf :

  # vi /etc/syslogd.conf 
  --
  [...]
  *.err /var/log/errors
  *.notice ;news.err /var/log/notices
  *.alert /var/log/alerts
  *.emerg /var/log/emergs
  [...]

Puis, on doit créer les fichiers vierges et redémarrer Syslogd.

  # touch /var/log/errors
  # touch /var/log/notices
  # touch /var/log/alerts
  # touch /var/log/emergs

On tape alors :

  # ps afx|grep Syslogd|awk '{ print $1 " " $5}' 

Qui nous donne le pid de Syslogd
Nous redémarrons le démon en tapant donc :

 # kill -HUP <pid>

Remarque : la ligne qui nous donne le PID (Processus IDentification number) peut être intéressante à implémenter comme commande supplémentaire pour FreeBSD dans le /usr/local/bin/, vous pouvez soit coder un script Perl, soit un script Bash, suivant vos goût personnel ou faire un alias.

Dans notre cas, nous allons considérer dès maintenant l'alias suivant, comme établi dans vos sessions :

  # alias pid='ps afx|grep'

Verification du fonctionnement de SSHD

Nous allons vérifier maintenant que notre Sshd est bien installé et configuré :

Tapons :

  # pid ssh

Vous devez obtenir une ligne telle que :

  ?? Is 0 :00 :39 /usr/sbin/sshd

Editez le fichier /etc/ssh/sshd_config et verifier que vous avez la ligne :

  # vi /etc/ssh/sshd_config
  --
  [...]
  PermitRootLogin no
  [...]

Un utilitaire bien pratique peut vous être utile : nmap.

Remarque importante : Attention, cette l'usage de cet utilitaire est considéré comme une attaque si vous l'utilisé sur une machine qui n'est pas la votre !!

Installez le port de nmap. Nous avons vue les commandes sur les ports :

  # cd /usr/ports/security/nmap/
  # make
  # make install

Remarque : lors de cette installation, il apparait des erreurs, c'est normal, vous n'avez pas de serveur X et donc la compilation du Front End X de Nmap ne peut pas s'effectuer.

Nmap est installé. Cet utilitaire permet de lister l'activité des ports TCP/IP d'une machine.

  # nmap 192.168.3.86

Pourrait donner comme resultats :

Starting nmap V. 2.54BETA29 ( www.insecure.org/nmap/ )
Interesting ports on (192.168.3.86):
(The 1538 ports scanned but not shown below are in state: closed)
Port State Service
21/tcp open ftp
22/tcp open ssh
80/tcp open http
111/tcp open sunrpc
515/tcp open printer
1022/tcp open unknown
1023/tcp open unknown
2401/tcp open cvspserver
3306/tcp open mysql
5432/tcp open postgres

Nmap run completed -- 1 IP address (1 host up) scanned in 14 seconds

Installation d'un FTPD anonyme

Nous allons maintenant Installer le FTP de FreeBSD en Anonymes :
Nous allons dans l'utilitaire sysinstall :

  # /stand/sysinstall

Vous devez sélectionner :

  Configure Do post-install configuration of FreeBSD
  Networking Configure additional network services
  [x] Anon FTP This machine wishes to allow anonymous FTP.

Le processus vous propose une configuration par défaut, acceptez là et validez.

Vous devez maintenant créer un message d'accueil pour votre FTP, soyez clair et précis.
Le fichier est dans notre cas /var/ftp/etc/ftpmotd
Sauvegarder le tampon pour valider.
Quitter comme d'habitude l'assistant sysinstall, votre FTP anonyme est près à l'usage.


Remarque : le FTP sous FreeBSD, par défaut, permet les connections en utilisateur et maintenant en anonymes. Vous devez mettre en œuvre votre logging sur le serveur FTP.

La ligne suivante doit être ajouter dans votre /etc/syslogd.conf

  # vi /etc/syslogd.conf
  -- 
  [...]
  ftp.* /var/log/ftpd
  [...]

tapez :

  # touch /var/log/ftpd

Puis modifier la sensibilité des logs au maximum pour votre FTP dans le fichier /etc/inetd.conf :

  # vi /etc/sinetd.conf
  -- 
  [...]
  ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -l -S
  [...]   

Relancez votre syslogd :

  # pid syslogd
  # Kill -HUP <pid>
  # pid inetd
  # kill -HUP <pid>


Installation d'un serveur de versionning CVS

Vous pouvez installer un serveur CVS sur votre machine, pour vos backup, mise à jour de scripts de fichiers de config, vous pouvez installer CVS, bien sur pour gérer un projet de développement a plusieurs Pour cela, vous devez ajouter dans le fichier /etc/group, le groupe cvs.

  # vi /etc/group
  -- 
  [...]
  cvs :* :1020 :cvsuser
  [...]

CVS, est livre en natif sur FreeBSD, car c'est un des éléments primordiaux de la mise a jour du système. Voici la marche à suivre pour installer rapidement un serveur CVS: Apres avoir crée un groupe UNIX cvs et un utilisateur membre de ce groupe cvsuser en tapant :

  # adduser cvsuser

La création de cet utilisateur se fait sans password, sans Shell, et ayant pour home directory la repository,

/usr/local/cvs-root : la cvsroot du serveur

il doit être évidement membre du group cvs et d'aucun autre sans plus de privilèges, tel que l'appartenance au group wheel.

Créer un répertoire de Repository.

  # mkdir /usr/local/cvs_root

Editez /etc/inetd.conf, rajoutez-y :

  # vi /etc/inetd.conf
  -- 
  [...]
  cvspserver stream tcp nowait cvsuser /usr/bin/cvs cvs --allow-root/usr/local/cvs_root pserver
  [...]

Redémarrez votre super démon Inetd

  # pid inetd
  # kill -HUP <pid>

Initialisez le CVSROOT de cette façon :

  # export CVSROOT=/usr/local/cvs_root
  # cvs init

Si vous voulez limiter les droits d'accès au serveur CVS, faite un check out de CVSROOT dans un répertoire  :

  # cd /tmp
  # export CVSROOT=/usr/local/cvs_root
  # cvs co CVSROOT
  #  cd /tmp/CVSROOT

créez ou éditer un fichier : /tmp/CVSROOT/access contenant la liste des utilisateurs autorisés.

Exemple :

  # cat /tmp/CVSROOT/access
  user1
  user2

Si il faut :

  # cvs add access

Editez alors le fichier /tmp/CVSROOT/checkoutlist et ajoutez-y "access"
Finnissez par :

  # cvs commit
  # cvs release CVSROOT
  # cd ..
  # rm -rf CVSROOT 

Petit exemple d'utilisation :
Nous avons créé un logiciel nommé "prog", ses sources se trouvent dans un répertoire "prog". Nous somme le user : toto

Nous devons d'abord créer cet utilisateur, en tapant :

  # adduser toto

(création d'utilisateur standard BSD)

Il faut que toto appartienne au group cvs, crée precedement .

Nous allons mettre sous CVS ce code source :

  # cd prog
  # export CVSROOT=":pserver:user@:/usr/local/cvs_root"
  # cvs login
  # cvs import prog prog VERSION_INIT


[ le projet se place sur l'arborescence CVS ]

C'est terminé, vérifions maintenant que tout s'est bien passé :

  # cd ..
  # cp prog prog.bak 
  # cvs checkout prog

on vérifie :

  # ls -Rsal prog/
  # rm -rf prog.bak 

C'est terminé.

Mise en place d'un serveur MySQL

Nous pouvons maintenant mettre en œuvre un système de gestion de base de données MySQL. Comme toujours, deux solutions s'offre a vous, soit les ports, soit les packages : Nous allons choisir pour ce composant les packages :

On lance le sysinstall.

  # /stand/sysinstall
Outils personnels
Projets :