fév 18

Samba 4 : Créez votre Domaine Active Directory sous Centos 6.x

Et voilà après un long moment de silence, voici un nouveau HowTo qui traite de Samba 4.

Cet article est très largement inspiré d’un confrère anglophone, que j’ai adapté à mon usage.

Pour la petite histoire, Samba est un logiciel que je côtoie depuis mes débuts dans l’informatique (en même temps ça fait que 8 ans). Il a même fait l’objet de mon premier stage à l’époque.

Depuis il a fait son petit bonhomme de chemin, et est devenu très complet, puisqu’il gère entre autre :

  • LDAP
  • Kerberos
  • DNS/NTP
  • Partage CIFS en SMBv3
  • Les GPO Windows
  • Et j’en passe la liste étant non exhaustive…

Mettons maintenant en place les bases, le système retenu est un Centos 6.5 en 64 Bits, que j’ai choisi pour sa robustesse (certes moins léger qu’une Debian mais ce n’est pas le débat).

Nous nous appuierons également sur Bind 9 et NTPD.

Les pré-requis

Tout d’abord, nous devons installer les packages Bind et le nécessaire à la compilation de Samba et de NTPD.

yum -y install gcc make wget python-devel gnutls-devel openssl-devel libacl-devel krb5-server krb5-libs krb5-workstation bind bind-libs bind-utils

Nous devons également désactiver Selinux, qui empêchera la bonne exécution de Samba.

SELINUX=disabled

setenforce 0

Compilation et installation

Téléchargeons à présent la dernière version de Samba :

wget http://ftp.samba.org/pub/samba/samba-latest.tar.gz# tar -xzvf samba-latest.tar.gz

Et exécutons la compilation :

cd samba-latest/
./configure --enable-selftest
make -j4 && make install

Maintenant préparons le domaine :

/usr/local/samba/bin/samba-tool domain provision --realm=nexus.lan --domain=NEXUS--adminpass 'P@ssw0rd' --server-role=dc --dns-backend=BIND9_DLZ

Configuration DNS

Passons à présent à la configuration de notre serveur DNS.

Première étape sécuriser le serveur en DSNSSEC

rndc-confgen -a -r /dev/urandom

Modifions le fichier /etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
 
options {
        listen-on port 53 {
                172.16.17.20;
                127.0.0.1;
        };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        forwarders      {
                8.8.8.8;
                8.8.4.4;
        };
        allow-query     {
                172.16.0.0/16;
                localhost;
        };
        recursion yes;
 
        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;
 
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
        tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab";
 
        managed-keys-directory "/var/named/dynamic";
};
 
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
 
zone "." IN {
        type hint;
        file "named.ca";
};
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
include "/usr/local/samba/private/named.conf";

Il faut également éditer le fichier /etc/resolv.conf pour que votre système s’appuie sur le DNS de Samba.

search nexus.lan
domain nexus.lan
nameserver 127.0.0.1

Configuration Kerberos

Maintenant la partie la plus sympa pour ceux qui ont déjà fait du Kerberos, modifier 2 lignes :

[libdefaults]
default_realm = NEXUS.LAN
dns_lookup_realm = false
dns_lookup_kdc = true

Configuration Installation et configuration du NTP

Nous allons télécharger la version 4.2.6 qui supporte le NTP sign afin de garantir aux clients Windows qu’ils dialoguent bien avec leur contrôleur de domaine.

wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.6p5.tar.gz
tar -xzvf ntp-4.2.6p5.tar.gz# cd ntp-4.2.6p5
./configure --enable-ntp-signd
make -j4 && make install

Créons le fichier /etc/ntp.conf :

server 127.127.1.0
fudge 127.127.1.0 stratum 10
server 0.fr.pool.ntp.org iburst prefer
server 1.fr.pool.ntp.org iburst prefer
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
restrict default kod nomodify notrap nopeer mssntp
restrict 127.0.0.1
restrict 0.fr.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
restrict 1.fr.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
restrict 172.16.0.0 mask 255.255.0.0 nomodify notrap

Et enfin positionnons les bons droits sur les bons fichiers

chown named:named /usr/local/samba/private/dns
chown named:named /usr/local/samba/private/dns.keytab
chmod 775 /usr/local/samba/private/dns# chown named /etc/rndc.key
chmod 640 /etc/rndc.key

Création des init-scripts et démarrage des services

Comme nous avons compilé nos applications Samba et NTPD, nous devons leurs créer des init scripts afin qu’ils soient gérés comme des services par notre système et démarrés automatiquement.

#!/bin/bash
#
# samba4        This shell script takes care of starting and stopping
#               samba4 daemons.
#
# chkconfig: - 58 74
# description: Samba 4.0 will be the next version of the Samba suite
# and incorporates all the technology found in both the Samba4 alpha
# series and the stable 3.x series. The primary additional features
# over Samba 3.6 are support for the Active Directory logon protocols
# used by Windows 2000 and above.
 
### BEGIN INIT INFO
# Provides: samba4
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Should-Start: $syslog $named
# Should-Stop: $syslog $named
# Short-Description: start and stop samba4
# Description: Samba 4.0 will be the next version of the Samba suite
# and incorporates all the technology found in both the Samba4 alpha
# series and the stable 3.x series. The primary additional features
# over Samba 3.6 are support for the Active Directory logon protocols
# used by Windows 2000 and above.
### END INIT INFO
 
# Source function library.
. /etc/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
prog=samba
prog_dir=/usr/local/samba/sbin/
lockfile=/var/lock/subsys/$prog
 
start() {
        [ "$NETWORKING" = "no" ] && exit 1
#        [ -x /usr/local/sbin/ntpd ] || exit 5
 
                # Start daemons.
                echo -n $"Demarrage de samba4: "
                daemon $prog_dir/$prog -D
        RETVAL=$?
                echo
        [ $RETVAL -eq 0 ] && touch $lockfile
        return $RETVAL
}
 
stop() {
        [ "$EUID" != "0" ] && exit 4
                echo -n $"Arret de samba4: "
        killproc $prog_dir/$prog
        RETVAL=$?
                echo
        [ $RETVAL -eq 0 ] && rm -f $lockfile
        return $RETVAL
}
 
case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
status)
        status $prog
        ;;
restart)
        stop
        start
        ;;
*)
        echo $"Usage: $0 {start|stop|status|restart}"
        exit 2
esac

Et maintenant le script pour ntpd

#! /bin/bash
#
# ntp Bring up/down ntpd service
#
#chkconfig: - 99 30
#description: Bring up/down ntp
#
### BEGIN INIT INFO
# Provides: ntpd
# Required-Start: $network $local_fs
# Required-Stop: $network $local_fs
# Should-Start:
# Short-Description: Bring up/down ntpd
# Description: Bring up/down ntpd
### END INIT INFO
# Source function library.
. /etc/init.d/functions
 
CWD=$(pwd)
NTPD=/usr/local/bin/ntpd
prog="ntp"
start() {
        # Attach irda device
        echo -n $"Starting $prog: "
        $NTPD -p /var/run/ntpd.pid
        sleep 2
        if ps ax | grep -v "grep" | grep -q $NTPD ; then success $"ntp startup"; else failure $"ntp startup"; fi
        echo
}
stop() {
        # Stop service.
        echo -n $"Shutting down $prog: "
        kill -9 `cat /var/run/ntpd.pid` > /dev/null 2>&1
        sleep 2
        if ps ax | grep -v "grep" | grep -q $NTPD ; then failure $"ntp shutdown"; else success $"ntp shutdown"; fi
        echo
}
# See how we were called.
case "$1" in
        start)
                start
        ;;
        stop)
                stop
        ;;
        restart|reload)
                stop
                start
        ;;
        *)
                echo $"Usage: $0 {start|stop|restart}"
                exit 1
esac
exit 0

Mettez les bons droits sur les fichiers

chmod 755 /etc/init.d/ntpd
chmod 755 /etc/init.d/samba4

Procédons au lancement des services :

/etc/init.d/named start
/etc/init.d/ntpd start
/etc/init.d/samba4 start

Mettons-les automatiquement en route en fonction des runlevels

chkconfig --levels 235 samba4 on
chkconfig --levels 235 ntpd on
chkconfig --levels 235 named on

Configuration d’iptables

Centos ayant une configuration iptables par défaut, nous allons ajuster cette dernière :

# vi /etc/sysconfig/iptables
-A INPUT -m udp -p udp --dport 53 -m comment --comment "DNS" -j ACCEPT
-A INPUT -m udp -p udp --dport 123 -m comment --comment "NTP" -j ACCEPT
-A INPUT -m udp -p udp --dport 135 -m comment --comment "RPC UDP" -j ACCEPT
-A INPUT -m udp -p udp --dport 138 -m comment --comment "NetBIOS Netlogon and Browsing" -j ACCEPT
-A INPUT -m udp -p udp --dport 389 -m comment --comment "LDAP UDP" -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 88 -m comment --comment "Kerberos" -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 464 -m comment --comment "Kerberos Password Management" -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -m comment --comment "NetBIOS Session" -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -m comment --comment "SMB CIFS" -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -m comment --comment "LDAP TCP" -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 636 -m comment --comment "LDAP SSL" -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3268 -m comment --comment "LDAP Global Catalog" -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3269 -m comment --comment "LDAP Global Catalog SSL" -j ACCEPT
-A INPUT

# service iptables restart
Sources :

jan 21

Git : Le mémento pour les aficionados de la ligne de commande

Si comme moi, vous avez  êtes bloqués sur SVN est ces différentes commandes, voici un petit mémento GIT sympa qui vous permettra de vous rafraîchir les idées.

 

une-cheat-sheet-git-dediee-a-github-1-full

nov 08

Reprise de service, Raspberry me voici !

Bon après une pause très prolongé sur mon Blog dû à pas mal de changements personnels au cours de cette dernière année, j’ai décidé de faire un peu article histoire de me remettre dans le bain.

En effet depuis l’actualité informatique à bien bouger, mais pour le moment je me concentrer sur un sujet bien précis : la Raspberry PI.

Bon pour le moment j’ai un modèle B de 256Mo, et une carte SDHC 8Go Sandisk Extreme Pro (90Mo/s en écriture).

Dans l’attente de mon second modèle B de 512mo je vais m’employer ma première Board à remplacer mon boitier Popbox v8 de syabase.

Sur quoi vais-je me basé ? actuellement je possède :

  • Une Raspberry PI modèle B
  • Une Carte SD 8Go
  • Un dongle USB iRDA
  • Une télécommande Logitech Harmony
  • Un NAS

But du jeux, faire fonctionner ce petit monde ensemble et pouvoir lire des vidéos en h264 1080p :).

Bon maintenant au travail et je vous tien au courant !

mar 08

pfsense 2.0 disponnible en RC1

ça y est !!! Depuis le temps qu’on l’attendais, la version RC1 de pfsense 2.0 est sortie le 28 Février dernier.

Pour les non initiés, pfsense est à la base un projet de pare feu sous freebsd inspiré de m0n0wall. Je l’utilise depuis 2008 au sein d’un boitier avec une carte mère mini-itx comportant 3 ports réseaux. Le projet n’a pas beaucoup évolué depuis cette année là et pour cause, la version 2.0 de pfsense se détache complétement de se comparse monowall pour voler de ses propres ailles.

Parmi les nouveautés:

  • Support de la 3G
  • Support des tunnel GRE
  • Renommage des interface WAN/LAN
  • Multi WAN/Gateway
  • Interface d’admin en HTTPS par défaut
  • Gestion plus poussé des aliases
  • Pare feu de niveau 7
  • Gestion de la QoS sur des interfaces multiples
  • Gestion de l’authentification IPSec augmenté
  • Création d’un module de gestion des certificats centralisé
  • VLAN Wifi
  • Ticket pour portail captif….

la liste complète des évolutions : http://doc.pfsense.org/index.php/2.0_New_Features_and_Change

Ressources :
- Site de pfsense : http://www.pfsense.org
- Site de m0n0wall : http://m0n0.ch/wall

fév 22

Au revoir OVH :( Bonjour Online !!

Bonjour,

Bon petit bilan de mon passage chez Online avant que ma Kimsufi ne prenne un coup de format.

Premier point, l’installation du serveur. Comme vous l’avez peut être lu précédemment nous avons installé un VMware vSphere sur le serveur. Cependant, avec les affres de l’ADSL j’avais des petits soucis de corruptions de données. Heureusement une âme bienveillante ma prêté ça de bande passante NC (merci Jérem).

Une fois le serveur installé, des petits soucis de macs virtuels avec le routeur pfsense (2h passé sur les forums et une autre heure à trifouiller pfsense). Au final ça fonctionne et 3 VM son hébergé derrière ce pare feu.

Enfin la partie marrante : la migration de nh-ks01, le serveur Web, Mail, DNS et MySQL :). Et bien au final tout c’est super bien passé, juste un petit souci de compatibilité de mon roundcube sur Debian 5 avec le package de sécurité PHP (suhosin) présent pas défaut sur Debian 6. Pour le moment je l’ai désactivé en attendant la prochaine version de roundcube ou je referais la configuration. En effet avec un serveur à rendre pour le 1 mars, plus vite ça fonctionnait mieux c’était.

Donc voilà ! Sinon pour la partie Online, Malheureusement, en même pas un mois chez eux j’ai déjà subit un incident réseau. Coup de pas de bol ! On verra par la suite. @+

Articles plus anciens «