W . A . X . O
ncc-1701
LINUX - UNIX





NETBSD, DA ONE OS FOR GEEKS AND HUMAN BEINGS

NetBSD


    INSTALLATION DE NetBSD

  • 1 - récupérer l'iso
  • 2 - installation : oui, oui, oui ...
  • 3 - récupérer les sources des packages dans un repertoire quelconque:
  • a - ftp ftp://cdn.netbsd.org/pub/pkgsrc/current/pkgsrc.tar.gz
  • b - prendre le package pkgsrc.tar.gz
  • c - installer les sources : tar -xzvpf pkgsrc.tar.gz -C /usr
  • 4 - Mise à jour du système
  • Télécharger le dernier fichier sources "pkgsrc"
  • Dans le répertoire d'un package, taper l'une des deux méthodes
  • a) "Make update" : méthode violente, packages et dépendances, désintallent tout et recompile ...
  • b) "Make replace" : méthode douce, ne fait que remplacer le soft et non les dépendances.


    ORGANISATION DU SYSTEME

  • 1 - L'OS fonctionne sur le "BaseSystem" qui est construit à la racine.
  • 2 - Les packages s'installent à partir de /usr/pkg/ dans une seconde arborescence classique (etc, user, bin, sbin, lib etc).

    Création d'un autre utilisateur - avec sudo

  • useradd -m benoit (/usr/sbin/useradd en tant que root)
  • passwd benoit
  • cd /usr/pkgsrc/security/sudo
  • make
  • make install
  • sudoedit /usr/pkg/etc/sudoers

    Installation d'un logiciel

  • Compilation du source
  • 1 - cd /usr/pkgsrc
  • 2 - cd repertoire-de-categorie/nom-du-logiciel
  • 3 - make
  • 4 - make install
  • Installation du binaire
  • sudo pkg_add ftp.netbsd.org/pub/NetBSD/packages/3.1/i386/net/wget-1.10.2nb1.tgz

    Mises à jour des packages

  • Auditer le système
  • Installer le package security/audit-packages
  • Deux méthodes existent : binaire ou sources.
  • Binaire : pkg_add -uu nom-du-package
  • Source : cd /usr/pkgsrc/nom-du-package
  • Source : mettre à jour les sources + make replace nom-du-package

    Changer de shell : let's go to Bash

  • installer le logiciel BASH (via make et make install dans /usr/pkgsrc/shells/bash)
  • exécuter "chsh" qui edite le fichier de conf du shell de l'utilisateur.
  • remplacer /bin/sh par le bon shell (/usr/pkg/bin/bash).
  • Créer .bashrc et .bash_profile dans le repertoire de l'utilisateur
  • Personnaliser votre Bash avec la variable "PS1"
  • .bash_profile
    if [ -f ~/.bashrc ]; then
        . ~/.bashrc
    fi
    
  • .bashrc

    PS1="\h:\W$ "
    alias ll='ls -l'
    


RESEAU AVEC NETBSD

    Installation du réseau

  • 1 - Carte Ethernet
  • Fichier /etc/ifconfig.ne2
    up
    192.168.1.208 netmask 255.255.255.0 media autoselect
    
  • 2 - Carte Wifi

  • Fichier /etc/ifconfig.wi0
    up
    192.168.1.208 nwkey 0xNUMERO-DE-LA-CLEF netmask 255.255.255.0 ssid wifiqazi
    
  • 3 - Route

  • route add default 192.168.1.1
  • 4 - DNS
  • Fichier /etc/resolv.conf

    Serveur SSHd

  • Installer /usr/pkgsrc/security/ssh2 (attention si un pb de licence se pose, c'est dans le fichier /usr/pkgsrc/mk/defaults/mk.conf qu'il faut ajouter la ligne.
  • 1 - Générer les clefs SSH pour pouvoir se connecter à la machine.
  • "ssh-keygen -t rsa1 -b 1024 -f /etc/ssh/ssh_host_key -N '' "
  • "ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' "
  • "ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N '' "
  • Installer le script de démarrage du service dans /etc/rc.d (voir /usr/pkg/share/examples/rc.d)
  • 2 - Ou indiquer dans /etc/rc.conf "sshd=YES" et rebooter ;-)

    Serveur DHCP

  • HOWTO DHCP
  • Il n'y a pas de logiciel à installer pour lancer un serveur DHCP.
  • Il faut faire un fichier de configuration (/etc/dhcpd.conf) ajouter à /etc/rc.conf quelques instructions (où ex0 est l'interface réseau).
  • Remplacer les deux premières lignes par : "allow unknown-clients; ddns-update-style ad-hoc;" pour une configuration un peu plus ouverte
    /etc/dhcpd.conf
    deny unknown-clients;       
    ddns-update-style none;      
    subnet 192.168.0.0 netmask 255.255.255.0 {
            range 192.168.0.200 192.168.0.254; 
            default-lease-time 28800;
            max-lease-time 86400;
            option broadcast-address 192.168.0.255;
            option domain-name "mycompanydomainname.com";
            option domain-name-servers 194.152.64.35, 194.25.2.132;
            option routers 192.168.0.1;
     
            host ftp-server {
                    hardware ethernet 00:00:0a:d8:39:ee;
                    fixed-address 192.168.0.199;
                    }
            host sparc {
                    hardware ethernet 00:50:04:01:ee:20;
                    fixed-address 192.168.0.198;
                    }
    }
    
    /etc/rc.conf 
    dhcpd=yes
    dhcpd_flags="-q ex0"
    ---
    touch /var/db/dhcpd.leases
    ---
    /etc/rc.d/dhcpd start
    

    Firewall : Ipfilter

  • PF et IPF sont tous deux disponibles sous NetBSD. IPF est le firewall naturel de NetBSD. PF, son déscendant est celui de OpenBSD.
  • Site officiel de Ipfilter : http://coombs.anu.edu.au/~avalon
  • ipfilter=YES dans /etc/rc.conf
  • Ecrire les règles de filtrage dans /etc/ipf.conf
  • Exemple : Bannir une adresse IP : block in from 90.31.56.643 to any

    Routeur NetBSD

  • Documentation réseau de NetBSD (version française)
  • Doc routage dynamique
  • 1) Configurer les interfaces réseau de votre routeur
    sudo /sbin/ifconfig sip0 192.168.15.108 up
    sudo /sbin/ifconfig sip1 192.168.0.168 up
    
  • 2) Configurer votre passerelle

    sudo /sbin/route delete default
    sudo /sbin/route add default 192.168.0.254
    
  • 3) Configurer la résolution DNS

    -bash-3.2$ cat /etc/resolv.conf (ex: les DNS de free)
    ;
    ; BIND data file
    ; Created by NetBSD sysinst on Sun Dec 16 10:12:07 2007
    ;
    nameserver 212.27.54.252
    nameserver 212.27.39.135
    
  • 4) Configuration de IPF (/etc/ipf.conf)
    IPF est l'outil de filtrage de paquets par défaut de netbsd.

  • 5) Configuration de IPNAT (/etc/ipnat.conf)
    La carte ethernet externe est SP1 et le réseau interne est 192.168.15.0.

    map sip1 192.168.15.0/8 -> 192.168.0.168/32 portmap tcp/udp 40000:60000
    map sip1 192.168.15.0/8 -> 192.168.0.168/32
    
  • 6) Démarrage des services IPF et IPNAT
    Il faut démarrer IPF avant IPNAT.

    sudo /etc/rc.d/ipfilter start
    sudo /etc/rc.d/ipnat start
    
  • 7) Activer les régles du fichier de configuration /etc/ipnat.conf

    sudo /usr/sbin/ipnat -FC -f /etc/ipnat.conf
    
  • 8) Redirection de port (/etc/ipnat.conf)

    rdr sip1 192.168.0.168/32 port 80 -> 192.168.15.98/ port 80 tcp
    rdr sip1 192.168.0.168/32 port 25 -> 192.168.15.99/ port 25 tcp
    rdr sip1 192.168.0.168/32 port 22 -> 192.168.15.99/ port 22 tcp
    

    Serveur DNS sur NetBSD

  • Installer l'un des trois packages disponibles : "named", "named9" ou "named95" suivant la version que vous souhaitez utiliser.
  • La configuration se fait dans le fichier "/etc/named.conf" (contrairement à debian par exemple il n'y a pas d'instructions "include" pour les fichiers "named.conf.options" et "named.conf.local" que l'on peut mettre en amont et en aval des zones par défaut).
  • Copier le fichier de démarrage : sudo cp /usr/pkg/share/examples/rc.d/named9 /etc/rc.d/named9
  • Ajouter le flag de démarrage dans /etc/rc.conf : named9=YES
  • Le démarrage du service se fait via un classique /etc/rc.d/named9 start

    Serveur SMTP sur NetBSD (Postfix)

  • Postfix est installé par défaut sur NetBSD 4.x
  • Ouvrir le port 25 en décommentant la ligne "inet" dans /etc/postfix/master.cf
    smtp      inet  n       -       n       -       -       smtpd
    
  • Configurer le fichier principal de configuration /etc/postfix/main.cf

  • Installé ces alias dans /etc/aliases
  • Lancer Postfix : /etc/rc.d/postfix start
  • Générer la carte des alias :
  • sudo newaliases
  • sudo /usr/sbin/postalias /etc/aliases


SERVICE WEB SOUS NetBSD

    Serveur Apache 2

  • Installer /usr/pkgsrc/www/apache2/
  • Lancer Apache : sudo /usr/pkg/sbin/apachectl start
  • Site web : /usr/pkg/share/httpd/htdocs/
  • Configuration : /usr/pkg/etc/httpd/
  • Installer le script de démarrage du service dans /etc/rc.d (voir /usr/pkg/share/examples/rc.d)
  • Installer les bonnes variables dans le script /etc/rc.conf

    PHP avec Apache

  • Installer /usr/pkgsrc/lang/php5/
  • Installer /usr/pkgsrc/www/ap-php (le module Apache-PHP)
  • Configuration : /usr/pkg/etc/php.ini
  • Ajouter les lignes suivantes au HTTP.CONF :
  • LoadModule php5_module lib/httpd/mod_php5.so
  • AddHandler application/x-httpd-php .php

    Serveur HTTPS

  • 1 - GENERATION DES CLEFS
  • /etc/openssl
  • openssl req -config /etc/ssl/openssl.cnf -new -out mamachine.csr
  • openssl rsa -in privkey.pem -out mamachine.key
  • openssl x509 -in mamachine.csr -out mamachine.crt -req -signkey mamachine.key -days 3650
  • openssl x509 -in mamachine.crt -out mamachine.der.crt -outform DER
  • 2 - CONFIGURATION DE APACHE
  • Copier les clefs dans le repertoire d'apache
  • cp mamachine.crt /usr/pkg/etc/httpd/
  • cp mamachine.key /usr/pkg/etc/httpd/

    Monitoring MRTG

  • Installer le package MRTG /usr/pkgsrc/net/mrtg/
  • Copier /usr/pkg/share/examples/mrtg/mrtg.conf vers /usr/pkg/etc/mrtg.conf
  • Configurer MRTG via /usr/pkg/etc/mrtg.conf pour indiquer 2 types d'information:
  • a) Le repertoire de destination des graphes généres
  • b) Les différents scripts de mesures
  • Invoquer mrtg via la commande : sudo mrtg /usr/pkg/etc/mrtg.conf
  • Créer l'index : sudo /usr/pkg/bin/mrtgindexmaker --output=/home/www/mrtg/index.html /usr/pkg/etc/mrtg.conf
  • Installer si nécessaire l'execution de MRTG dans le crontab de root (sudo crontab -e)

    Serveur web LIGHTTPHD

  • Installer le logiciel LIGHTTPD à partir de /usr/pkgsrc/www/lighttpd
  • Configuration du logiciel LIGHTTPD
  • Authentification avec lighttpd sous NetBSD
  • Pour utiliser le mode "auth" avec Lighttpd sous NetBSD, deux actions à faire.
  • Créer un fichier avec le mot de passe encrypté :
    perl -le 'print crypt ("motdepasse", "login")'
    login:hqg5fshj
  • Activer le module "auth" dans /usr/pkg/etc/lighttpd/lighttpd.conf en décommentant la ligne suivante :

    "mod_auth",

    PHP avec LIGHTTPHD

  • En étant root exécuter cette commande pour préparer l'installation de PHP5.
    echo "PKG_OPTIONS.php5=cgi fastcgi" >> /etc/mk.conf
  • Installer /usr/pkgsrc/lang/php5/
    Préparation de lighttpd

  • Décommenter "mod_redirect, mod_access, mod_cgi, mod_accesslog"
  • Vérifier la prise en compte de l'index.php
  • Relancer lighttpd : /etc/rc.d/lighttpd restart


DIVERS

    Serveur XFree86

  • Le serveur X est installé par défaut.
  • Vérifier avec startx, si besoin (!), configurer le serveur X avec "xf86config" en créant le fichier /etc/X11/XF86Config.
  • Créer un fichier de configuration pour chaque utilisateur avec ".xinitrc"
  • Installer un Window Manager comme icewm - ecrire la commande de démarrage du WM dans .xinitrc : "exec icewm" (sans le & final s'il n'y a rien après)
  • Utiliser "dmesg" pour connaître le matos.
  • Attention à la souris : /dev/wsmouse sur les versions > 2.0.

    Monitoring Hardware : SMARTtools + envstat

    Disque dur

  • Installation de SMARTtools avec le packages pkgsrc/sysutils/smarttools/
  • /usr/pkg/sbin/smartctl -a /dev/wd0d
    Carte mère

  • How to use hardware monitors with NetBSD

    NTP

  • Installation de NTP via le package /usr/pkgsrc/net/ntp4/
  • Exécuter la commande : ntpdate ntp.internet-fr.net
  • Ajouter cette commande à la crontab : /usr/pkg/bin/ntpdate ntp.internet-fr.net

    INFORMATIONS SUR LE SYSTEME

  • /sbin/sysctl -a : tout
  • /sbin/sysctl hw
         Name          Constant          Next level names      Description
         kern          CTL_KERN          sys/sysctl.h          High kernel limits
         vm            CTL_VM            uvm/uvm_param.h       Virtual memory
         vfs           CTL_VFS           sys/mount.h           Filesystem
         net           CTL_NET           sys/socket.h          Networking
         debug         CTL_DEBUG         sys/sysctl.h          Debugging
         hw            CTL_HW            sys/sysctl.h          Generic CPU, I/O
         machdep       CTL_MACHDEP       sys/sysctl.h          Machine dependent
         user          CTL_USER          sys/sysctl.h          User-level
         ddb           CTL_DDB           sys/sysctl.h          In-kernel debugger
         proc          CTL_PROC          sys/sysctl.h          Per-process
         vendor        CTL_VENDOR        ?                     Vendor specific
         emul          CTL_EMUL          sys/sysctl.h          Emulation settings
         security      CTL_SECURITY      sys/sysctl.h          Security settings