Installation d'un contrôleur de domaine sous FreeBsd 8.2
Le but de cette procédure est l'installation d'un contrôleur de domaine complet fonctionnant sous système d'exploitation FreeBsd 8.2. Il s'agit ici d'émuler les services systèmes des contrôleurs de domaines Windows 2003.
Il disposera donc de :
•un serveur DHCP : distribution des adresses Ip sur le réseau local
•un serveur DNS : résolution des noms internes et internet
•un serveur NTP : fournisseur de temps
•un serveur SAMBA : partage de fichiers
•un serveur LDAP : authentification des utilisateur et gestion des droits
•un serveur CUPS : service d'impression
Il aura également les fonctionnalités suivantes :
•Protection du serveur : filtrage des flux réseaux
•Routage des flux vers l'internet
•Administration distante via SSH depuis une/des adresses référencées
Nous partons ici d'une machine ou est installé un système d'exploitation FreeBsd 8.2 en configuration minimale.
Les variables utilisées dans la documentation sont les suivantes :
<HOSTNAME> Nom de la machine
<IP-SERVER> Adresse Ip du contrôleur de domaine
<LAST-IP-SERVER> Dernier chiffre de l'adresse Ip du serveur
<CARTE-1> Carte réseau interne
<CARTE-2> Carte réseau reliée au routeur
<IP-ROUTEUR> Adresse Ip du routeur
<DOMAIN-NAME> Nom FQDN de votre domaine
<IP-DOMAIN> Plan d'adressage Ip du domaine
<SMALL-IP-DOMAIN> Plan d'adressage Ip du domaine, sans le dernier chiffre (ex: 192.168.1)
<REVERSE-IP-DOMAIN> Plan d'adressage Ip inversé du domaine (ex : 192.168.1.0 donnera REVERSE-IP-DOMAINE = 1.168.192)
<IP-SERVE-START> Adresse de début de la zone DHCP
<IP-SERVE-STOP> Adresse de fin de la zone DHCP
<BROADCAST-DOMAIN> Adresse de broadcast (par exemple, si <IP-DOMAIN>=192.168.1.0 alors <BROADCAST-DOMAIN>=192.168.1.255)
<IP-FORWARD-1> Adresse Ip d'un serveur DNS externe
<IP-FORWARD-2> Adresse Ip d'un serveur DNS externe
<EXTERNAL-NTP> Adresse de serveur NTP externe
<SECRET> Mot de passe secret du Manager du serveur LDAP
<NOT-SO-SECRET> Mot de passe Manager en texte clair :-(
<DOMAIN-SID> SID du domaine
<EXTERNAL-ADMIN> Adresse Ip de la machine d'administration distante
1) Installation des packages requis
Packages nécessaires :
bash nano openldap24-server nss_ldap smbldap-tools samba35 cups-base cups-samba cups-smb-backend foomatic-db foomatic-db-engine foomatic-filters foomatic-db-hpijs ntp isc-dhcp42-server bind98 (packages optionnels : php5-extensions phpldapadmin)
Les options requises, à ajouter, lors de l'installation des paquetages et de leurs dépendances sont :
openldap24-server :
[X] SASL With (Cyrus) SASL2 support
[X] PASSWD With Passwd backend
[X] PERL With Perl backend
[X] SMBPWD With Samba Password hashes overlay
perl :
[X] PERL_MALLOC Use Perl malloc
[X] THREADS Build threaded perl
cyrus-sasl :
[X] BDB Use Berkeley DB
[X] KEEP_DB_OPEN Keep handle to Berkeley DB open
smbldap-tools :
[X] MIGRATION_SCRIPTS Install migration scripts
samba35 :
[X] ADS With Active Directory support
[X] FAM_SUPPORT With File Alteration Monitor
[X] SYSLOG With Syslog support
[X] DNSUPDATE With dynamic DNS update(require ADS)
cups-base :
[X] PHP Build PHP support
[X] PYTHON Build PYTHON support
[X] DBUS Build with DBUS support
[X] LIBUSB Build with USB support
php5 :
[X] APACHE Build Apache module
ghostscript9 :
[X] A4SIZE Set A4 (not Letter) as a default paper size
php5-extensions :
[X] LDAP OpenLDAP support
[X] MCRYPT Encryption support
2) Préparation de l'environnement
Changer le « shell » par défaut de l'utilisateur root :
chsh -s /usr/local/bin/bash
Ajouter la coloration syntaxique de la commande 'ls' :
echo 'alias ls="ls -G"' >> /etc/profile
Ajuster le hostname de la machine :
echo 'hostname="<HOSTNAME>"' >> /etc/rc.conf
perl -p -i -e 's/localhost.my.domain/localhost.my.domain <HOSTNAME>/' /etc/hosts
echo "<IP-SERVER> <HOSTNAME>" >> /etc/hosts
Configuration du réseau :
echo 'ifconfig_<CARTE-1>="inet <IP-SERVER> netmask 255.255.255.0"' >> /etc/rc.conf
echo 'defaultrouter="<IP-ROUTEUR>"' >> /etc/rc.conf
echo 'ifconfig_<CARTE-2>="DHCP"' >> /etc/rc.conf
cat > /etc/dhclient-enter-hooks << EOF
add_new_resolv_conf() {
return 0
}
EOF
cat > /etc/resolv.conf << EOF
domain <DOMAIN-NAME>
nameserver 127.0.0.1
EOF
Activer l'accès au serveur via une console ssh et activer le serveur :
perl -p -i -e 's/#PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_config
echo 'sshd_enable="YES"' >> /etc/rc.conf
Il faut alors redémarrer la machine pour la prise en compte des paramètres réseau et l'utilisation du bash en tant qu'éditeur de commande.
Vous pouvez alors continuer la configuration de votre serveur via une session ssh.
3) Installation du serveur DNS
Le serveur DNS installé ici permettra l'enregistrement et la résolution des noms des machines du domaine, cet enregistrement sera automatique pour les éléments bénéficiants du service DHCP. Il sera également capable de résoudre les adresses externes au domaine.
Le contrôleur de domaine sera lui renseigné manuellement dans les fichiers de configuration du DNS.
creer un fichier /etc/namedb/namedb.conf :
cat > /etc/namedb/namedb.conf << EOF
options {
directory "/etc/namedb/working";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
listen-on { 127.0.0.1; <IP-SERVER>; };
forwarders {
<IP-FORWARD-1>;
<IP-FORWARD-2>;
};
};
controls {
inet 127.0.0.1 port 953 allow { 127.0.0.1; <IP-SERVER>; };
inet <IP-SERVER> port 953 allow { 127.0.0.1; <IP-SERVER>; };
};
zone "." { type hint; file "/etc/namedb/named.root"; };
zone "localhost" { type master; file "/etc/namedb/master/localhost-forward.db"; };
zone "127.in-addr.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; };
include "/etc/namedb/rndc.key";
zone "<DOMAIN-NAME>" {
notify yes;
type master;
allow-update {
key "key.<DOMAIN-NAME>";
};
file "/etc/namedb/dynamic/<DOMAIN-NAME>.dns";
};
zone "<REVERSE-IP-DOMAIN>.in-addr.arpa" {
notify yes;
type master;
allow-update {
key "key.<DOMAIN-NAME>";
};
file "/etc/namedb/dynamic/<REVERSE-IP-DOMAIN>.in-addr.arpa";
};
EOF
creer un fichier /etc/namedb/rndc.key et modifier le nom de la clé :
rndc-confgen -a
perl -p -i -e 's/rndc-key/key.<DOMAIN-NAME>/' /etc/namedb/rndc.key
Il faut ensuite créer les deux fichiers de zone de recherche, un pour la recherche directe et un pour la recherche inverse :
cat > /etc/namedb/dynamic/<DOMAIN-NAME>.dns << EOF
\$ORIGIN .
\$TTL 3600 ; 1 hour
<DOMAIN-NAME>. IN SOA ns.<DOMAIN-NAME>. root.<DOMAIN-NAME>. (
2007120730 ; serial
86400 ; refresh (1 day)
7200 ; retry (2 hours)
2419200 ; expire (4 weeks)
3600 ; minimum (1 hour)
)
NS ns.<DOMAIN-NAME>.
\$ORIGIN <DOMAIN-NAME>.
\$TTL 3600 ; 1 hour
ns A <IP-SERVER>
<HOSTNAME> A <IP-SERVER>
\$TTL 150 ; 2 minutes 30 seconds
EOF
cat > /etc/namedb/dynamic/<REVERSE-IP-DOMAIN>.in-addr.arpa << EOF
\$ORIGIN .
\$TTL 10800 ; 3 hours
<REVERSE-IP-DOMAIN>.in-addr.arpa. IN SOA ns.<DOMAIN-NAME>. root.<DOMAIN-NAME>. (
2007040313 ; serial
14400 ; refresh (4 hours)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS ns.<DOMAIN-NAME>.
\$ORIGIN <REVERSE-IP-DOMAIN>.in-addr.arpa.
<LAST-IP-SERVER> PTR ns.<DOMAIN-NAME>.
<LAST-IP-SERVER> PTR <HOSTNAME>.<DOMAIN-NAME>.
\$TTL 150 ; 2 minutes 30 seconds
EOF
mise a jour des permissions des fichiers de zone :
chown bind /etc/namedb/dynamic/*
Préparation du lancement automatique du daemon bind :
echo 'named_enable="YES"' >> /etc/rc.conf
3) Installation du serveur DHCP
Le serveur DHCP fournira des adresses Ip dynamiquement aux machines membres du domaine.
Creer un fichier /etc/local/etc/dhcpd.conf :
cat > /usr/local/etc/dhcpd.conf << EOF
include "/etc/namedb/rndc.key";
server-identifier <HOSTNAME>;
ddns-updates on;
ddns-update-style interim;
ddns-domainname "<DOMAIN-NAME>";
include "/etc/namedb/rndc.key";
ddns-rev-domainname "<REVERSE-IP-DOMAIN>.in-addr.arpa";
ignore client-updates;
authoritative;
default-lease-time 10;
max-lease-time 7200;
log-facility local7;
zone <DOMAIN-NAME> {
primary <IP-SERVER>;
key "key.<DOMAIN-NAME>";
}
zone <REVERSE-IP-DOMAIN>.in-addr.arpa. {
primary <IP-SERVER>;
key "key.<DOMAIN-NAME>";
}
subnet <IP-DOMAIN> netmask 255.255.255.0 {
range <IP-SERVE-START> <IP-SERVE-STOP>;
allow unknown-clients;
option domain-name "<DOMAIN-NAME>";
option domain-name-servers <IP-SERVER>;
option ntp-servers <IP-SERVER>;
option routers <IP-ROUTEUR>;
option broadcast-address <BROADCAST-DOMAIN>;
option ntp-servers <EXTERNAL-NTP>;
option ip-forwarding off;
option netbios-name-servers <IP-SERVER>;
option netbios-node-type 8;
}
EOF
Préparation du lancement automatique du daemon isc-dhcp :
echo 'dhcpd_enable="YES"' >> /etc/rc.conf
4) Installation du serveur LDAP
Le serveur LDAP servira de base de donnée des comptes et des groupes d'utilisateurs et de machines. Ce sera a partir de cette base que seront données les autorisations d'accès du serveur SAMBA.
Copier le fichier de schema SAMBA dans le répertoire de configuration de OpenLDAP:
cp /usr/local/share/examples/samba35/LDAP/samba.schema /usr/local/etc/openldap/schema/
Creer le fichier /usr/local/etc/openldap/slapd.conf :
cat > /usr/local/etc/openldap/slapd.conf << EOF
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/samba.schema
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
modulepath /usr/local/libexec/openldap
moduleload back_bdb
database bdb
suffix "dc=<DOMAIN-NAME>"
rootdn "cn=Manager,dc=<DOMAIN-NAME>"
rootpw "<SECRET>"
directory /var/db/openldap-data
index objectClass eq
index cn pres,sub,eq
index sn pres,sub,eq
index uid pres,sub,eq
index displayName pres,sub,eq
index uidNumber eq
index gidNumber eq
index memberUid eq
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
index default sub
access to attrs=userpassword,sambaLMPassword,sambaNTPassword
by anonymous auth
by self write
by * none
access to *
by self write
by * read
EOF
le mot de passe secret de Manager se génère de la façon suivante :
slappasswd
New password:
Re-enter new password:
{SSHA} ??????????????????????????????
Copier le retour de la commande {SSHA}... et remplacer <SECRET> dans le fichier slapd.conf :
perl -p -i -e 's/<SECRET>/{SSHA} ??????????????????????????????/' /usr/local/etc/openldap/slapd.conf
Il faut ensuite configurer les permissions des fichiers :
chmod 640 /usr/local/etc/openldap/slapd.conf
chown ldap:ldap /etc/opiekeys
Creer le répertoire de stockage des données du serveur :
mkdir /var/db/openldap-data
chmod 700 /var/db/openldap-data/
chown ldap:ldap /var/db/openldap-data/
cp /usr/local/etc/openldap/DB_CONFIG.example /var/db/openldap-data/DB_CONFIG
creer le fichier /usr/local/etc/openldap/ldap.conf :
cat >> /usr/local/etc/openldap/ldap.conf < EOF
bind_policy soft
uri ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://<IP-SERVER>/ ldap://127.0.0.1/
base dc=<DOMAIN-NAME>
bind_timelimit 10
host localhost
idle_timelimit 3600
ldap_version 3
rootbinddn cn=Manager,dc=<DOMAIN-NAME>
nss_base_group ou=Groups,dc=<DOMAIN-NAME>?one
nss_base_passwd ou=Users,dc=<DOMAIN-NAME>?one
nss_base_passwd ou=Computers,dc=<DOMAIN-NAME>?one
nss_base_shadow ou=Users,dc=<DOMAIN-NAME>?one
pamlogin_attribute uid
nss_connect_policy persist
nss_paged_results yes
pagesize 1000
port 389
scope one
timelimit 30
EOF
configurer les permissions et créer le lien symboliques :
chmod 400 /usr/local/etc/openldap/ldap.conf
mv /usr/local/etc/nss_ldap.conf /usr/local/etc/nss_ldap.conf.orig
ln -s /usr/local/etc/openldap/ldap.conf /usr/local/etc/ldap.conf
ln -s /usr/local/etc/openldap/ldap.conf /usr/local/etc/nss_ldap.conf
Préparer le démarrage automatique du daemon LDAP :
echo "slapd_enable=\"YES\" " >> /etc/rc.conf
echo "slapd_flags=' -h \"ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://127.0.0.1/ ldap://<IP-SERVER>/\" ' " >> /etc/rc.conf
echo "slapd_sockets=\"/var/run/openldap/ldapi\" " >> /etc/rc.conf
Pour tracer le fonctionnement du serveur, ajouter ces lignes dans /etc/syslog.conf :
cat >> /etc/syslog.conf << EOF
!slapd
*.* /var/log/slapd.log
EOF
Démarrer le serveur, il est necessaire qu(il fonctionne pour la suite de la procédure. Redémarrez également le demon de log :
/usr/local/etc/rc.d/slapd start
touch /var/log/slapd.log
/etc/rc.d/syslogd restart
5) Installation du serveur SAMBA
Le serveur samba sera celui qui rendra les services de partages de fichiers et d'autorisation d'accès au domaine.
Creer le fichier /usr/local/etc/smb.conf :
cat > /usr/local/etc/smb.conf << EOF
# Global parameters
[global]
workgroup = <DOMAIN-NAME>
server string = Samba File Server
netbios name = <HOSTNAME>
hosts allow = <SMALL-IP-DOMAIN>. 127. 10.0.1.
interfaces = <CARTE-1>, lo
bind interfaces only = Yes
# passwd backend
encrypt passwords = yes
passdb backend = ldapsam:ldap://<IP-SERVER>/
enable privileges = yes
pam password change= Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*UNIX*password* %nn *ReType*new*UNIX*password*%nn * passwd:*all*authentication*tokens*updated*successfully*
unix password sync = Yes
# Log options
log level = 2
log file = /var/log/samba/full.log
max log size = 50
syslog = 0
# Name resolution
name resolve order = wins bcast host
# misc
timeserver = Yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
use sendfile = yes
veto files = /*.eml/*.nws/*.{*}/
veto oplock files = /*.doc/*.xls/*.mdb/
deadtime = 120
# Dos-Attribute
map hidden = No
map system = No
map archive = No
map read only = No
store dos attributes = Yes
# printers - configured to use CUPS and automatically load them
load printers = Yes
printcap name = CUPS
printing = cups
cups options = Raw
show add printer wizard = No
# scripts invoked by samba
add user script = /usr/local/sbin/smbldap-useradd -m %u
delete user script = /usr/local/sbin/smbldap-userdel %u
add group script = /usr/local/sbin/smbldap-groupadd -p %g
delete group script = /usr/local/sbin/smbldap-groupdel %g
add user to group script = /usr/local/sbin/smbldap-groupmod -m %u %g
delete user from group script = /usr/local/sbin/smbldap-groupmod -x %u %g
set primary group script = /usr/local/sbin/smbldap-usermod -g %g %u
add machine script = /usr/local/sbin/smbldap-useradd -w %m
# LDAP-Configuration
ldap delete dn = Yes
ldap ssl = off
ldap passwd sync = Yes
ldap suffix = dc=<DOMAIN-NAME>
ldap machine suffix = ou=Computers
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap idmap suffix = ou=Idmap
ldap admin dn = cn=Manager,dc=<DOMAIN-NAME>
idmap backend = ldap:ldap://<IP-SERVER>
idmap uid = 10000-20000
idmap gid = 10000-20000
# logon options
logon script = logon.bat
logon path = \%L\profiles\%u
logon path =
logon home = \%L\%U
logon drive = H:
# setting up as domain controller
username map = /usr/local/etc/samba/usermap
preferred master = Yes
security = user
wins support = Yes
domain logons = Yes
domain master = Yes
local master = Yes
os level = 64
map acl inherit = Yes
unix charset = UTF8
[netlogon]
comment = Network Logon Service
path = /srv/netlogon
guest ok = yes
writable = no
browseable = no
[profiles]
path = /srv/profiles/
writable = yes
create mask = 700
directory mask = 700
force create mode = 700
force directory mode = 700
browseable = yes
EOF
Creer les répertoires /srv/netlogon et /srv/profiles et mettre les droits d'accès appropriés :
mkdir /srv
mkdir /srv/netlogon
mkdir /srv/profiles
chown -R nobody:nobody /srv
chmod -R 777 /srv
Creer ensuite le fichier /usr/local/etc/samba/smbusers :
echo "root = administrator" > /usr/local/etc/samba/smbusers
Ajouter la ligne suivante à /boot/loader.conf
echo 'kern.maxfiles="20480"' >> /boot/loder.conf
Configurer le démarrage automatique du serveur samba et modifier fichier /usr/local/etc/rc.d/samba pour renseigner la position du fichier de configuration:
echo 'smbd_enable="YES"' >> /etc/rc.conf
perl -p -i -e 's/#samba_config/samba_config/' /usr/local/etc/rc.d/samba
perl -p -i -e 's/#nmbd_enable/nmbd_enable/' /usr/local/etc/rc.d/samba
perl -p -i -e 's/#smbd_enable/smbd_enable/' /usr/local/etc/rc.d/samba
perl -p -i -e 's/#winbindd_enable/winbindd_enable/' /usr/local/etc/rc.d/samba
Démarrer ensuite le serveur avec la commande :
/usr/local/etc/rc.d/samba start
6) Installation des outils SMBLSAP-SAMBA
L'outil smbldap-samba est le paquetage faisant la liaison entre le serveur samba et le serveur ldap.
Creer le fichier /usr/local/etc/smbldap-tools/smbldap_bind.conf :
cat > /usr/local/etc/smbldap-tools/smbldap_bind.conf << EOF
masterDN="cn=Manager,dc=<DOMAIN-NAME>"
masterPw="<NOT-SO-SECRET>"
EOF
Creer le fichier /usr/local/etc/smbldap-tools/smbldap.conf :
cat > /usr/local/etc/smbldap-tools/smbldap.conf << EOF
sambaDomain="<DOMAIN-NAME>"
masterLDAP="<IP-SERVER>"
masterPort="389"
ldapTLS="0"
ldapSSL="0"
verify="require"
suffix="dc=<DOMAIN-NAME>"
usersdn="ou=Users,${suffix}"
computersdn="ou=Computers,${suffix}"
groupsdn="ou=Groups,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=<DOMAIN-NAME>,${suffix}"
scope="sub"
hash_encrypt="SSHA"
crypt_salt_format="%s"
userLoginShell="/usr/local/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="45"
userSmbHome="\\<HOSTNAME>\%U"
userProfile="\\<HOSTNAME>\profiles\%U"
userHomeDrive="H:"
userScript="netlogon.cmd"
mailDomain="<DOMAIN-NAME>"
with_smbpasswd="0"
smbpasswd="/usr/local/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
sambaPwdCanChange="1"
SID="<DOMAIN-SID>"
EOF
Enregistrer le mot de passe du compte manager du serveur ldap dans samba :
smbpasswd -W
Le contenu de la variable SID est obtenu par le retour de la commande (cela ne fonctionnera que si le serveur LDAP fonctionne !) :
net getlocalsid
S-X-X-XX-XXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX
perl -p -i -e 's/<DOMAIN-SID>/S-X-X-XX-XXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX/' /usr/local/etc/smbldap-tools/smbldap.conf
Protéger le fichier contenant les mots de passes :
chmod 600 /usr/local/etc/smbldap-tools/smbldap_bind.conf
Charger ensuite la base de donnée avec les groupes utiles avec la commande :
smbldap-populate
Note : pour pouvoir utiliser le compte root comme administrateur du domaine, il faut modifier son SID, les comptes sont définis par le dernier chiffre du sid définit comme suit :
<SID-DOMAINE>-<NUMBER-TYPE-ACCOUNT>
pour le compte root, ce sera donc <SID-DOMAIN>-500 :
pdbedit -U <SID-DOMAIN>-500 -u root -r
7) Installation du serveur NTP
Le serveur NTP fournira le service de temps aux machines clients du domaine.
Le fichier de configuration /etc/ntp.conf :
cat > /etc/ntp.conf << EOF
server <EXTERNAL-NTP> prefer
driftfile /var/db/ntp.drift
restrict <IP-DOMAIN> mask 255.255.255.0 nomodify notrap
EOF
Démarrage automatique de ntp :
touch /var/db/ntp.drift
echo 'ntpd_enable="YES"' >> /etc/rc.conf
Vérifier que notre serveur est a la bonne heure avec la commande 'date'. Si tel n'est pas le cas, synchroniser l'horloge du serveur avec un serveur de temps externe :
ntpdate <EXTERNAL-NTP>
8) Installation du serveur d'impression CUPS
Le serveur CUPS se charge de gérer les impressions réseau.
Ajouter la directivea suivante dans le fichiers /usr/local/etc/smb.conf :
cat >> /usr/local/etc/smb.conf << EOF
[print$]
comment = Printer Drivers
path = /usr/local/etc/samba/drivers
browseable = no
guest ok = no
read only = yes
write list = root
EOF
Changer les permissions :
mkdir /var/spool/samba/printing
chgrp 513 /var/spool/samba/printing
chmod 1770 /var/spool/samba/printing
Pour installer les drivers pour les clients microsoft, créer un répertoire :
mkdir /usr/local/share/cups/drivers/w32x86
mkdir /usr/local/share/cups/drivers/w32x86/3
Il faut installer les "Universal PostScript printer drivers for Windows" (télécharger depuis le site http://www.adobe.com/support/downloads/product.jsp?product=44&platform=Windows), les installer sur une machine microsoft et récupérer les fichiers du répertoire C:\WINDOWS\system32\spool\drivers\w32x86\3 . Ces fichiers sont : PS5UI.DLL, PSCRIPT.HLP, PSCRIPT.NTF et PSCRIPT5.DLL.
Copier ces fichiers (attention, les renomer en minuscule) dans le répertoire /usr/local/share/cups/drivers/w32x86/3
Activer le démarrage automatique de cups et lancer le serveur:
echo 'cupsd_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/cupsd start
créer le répertoire /usr/local/etc/samba/drivers/ pour permettre au serveur SAMBA de stocker les drivers à distribuer :
mkdir /usr/local/etc/samba/drivers
Vous pourrez ensuite ajouter les imprimantes dans le serveur CUPS en utilisant l'URL :
http://<HOSTNAME>:631
Il faudra alors configurer le fichier /usr/local/etc/cups/cupsd.conf en remplaçant :
Listen localhost:631 par Listen <HOSTNAME>.<DOMAIN-NAME>:631
et ajouter la directive Allow from @LOCAL dans les sections :
<Location /> , <Location /admin/conf> et <Location /admin>
La commande cupsaddsmb -H localhost -U root -v -a devra être utilisée, depuis le serveur, après chaque ajout d'imprimante dans le serveur CUPS afin de permettre le partage de l'imprimante et des drivers sur le réseau.
8) Installation du serveur APACHE
Pour pouvoir administrer facilement le serveur LDAP, nous utilisons le logiciel web phpldapadmin.
Créer le lien symbolique suivant :
ln -s /usr/local/www/phpldapadmin /usr/local/www/apache22/data/
Modifier ensuite le fichier /usr/local/etc/apache22/httpd.conf en ajoutant les directives :
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
LoadModule php5_module libexec/apache22/libphp5.so
AddHandler php5-script .php
Activer le démarrage automatique d'apache et lancer l'exécution:
echo 'apache22_enable="YES"' >> /etc/rc.conf
Vous pourrez connecter phpldapadmin avec l'URL :
http://<HOSTNAME>/phpldapadmin
le login sera cn=Manager,dc=<DOMAIN-NAME> et le mot de passe, celui entré lors de la configuration d'OpenLdap.
10) Configuration des authentification
Pour pouvoir fonctionner, le système doit pouvoir authentifier les utilisateurs stockés dans le serveur LDAP.
Creer les liens symboliques suivants :
ln -s /usr/local/lib/pam_* /usr/lib/
Modifier le fichier /etc/nsswitch.conf pour qu'il soit conforme a celui-ci :
#
# nsswitch.conf(5) - name service switch configuration file
# $FreeBSD: src/etc/nsswitch.conf,v 1.1.10.1.6.1 2010/12/21 17:09:25 kensmith Exp $
#
group: files ldap
group_compat: nis
hosts: files dns
networks: files
passwd: files ldap
passwd_compat: nis
shells: files
services: compat
services_compat: nis
protocols: files
rpc: files
11) Devenir routeur et sécuriser le réseau
Pour sécuriser le réseau local, il est necessaire de protéger les services locaux des attaques éventuelles provenant de l'internet. Pour cela, il faut pouvoir empêcher les flux réseaux externes non autorisés d'atteindre les services du serveur et les machines du réseau local. Les machines du réseau local devront donc utiliser comme passerelle le serveur de domaine et non pas directement le routeur (cette configuration est faite à partir du serveur DHCP).
Un firewall va être mis en place sur le serveur, refusant toute connexion depuis l'extérieur (sauf pour l'administrateur distant sur le port 22 – ssh) mais en autorisant les flux entrants initiés depuis l'intérieur.
dans le fichier rc.conf, pour activer le firewall et le routage, ajouter :
cat >> /etc/rc.conf << EOF
gateway_enable="YES"
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_program="/sbin/pfctl"
pflog_enable="YES"
pf_logfile="/var/log/pflog"
pflog_program="/sbin/pflogd"
EOF
Attention cependant, le support NAT n'est pas activé dans le kernel Freebsd, il faut le recompiler si cela n'est pas fait, le serveur sera incapable de transférer les requêtes internes vers l'extérieur :
cd /usr/src/sys/<ARCH>/conf/
cp GENERIC ROUTEUR
cat >> ROUTEUR < EOF
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_PRIQ
options ALTQ_NOPCC
device pf
device pflog
device pfsync
EOF
config ROUTEUR
cd ../compile/ROUTEUR
make cleandepend
make depend
make
make install
créer le fichier /etc/pf.conf, qui sera le fichiers de règles du firewall :
cat > /etc/pf.conf << EOF
ext_if="<CARTE-2>"
int_if="<CARTE-1>"
localnet=\$int_if:network
external_admin="<EXTERNAL-ADMIN>"
nat on \$ext_if from \$localnet to any -> (\$ext_if)
set skip on lo0
antispoof quick for {lo \$int_if}
antispoof for \$ext_if inet
pass from { lo0 , \$localnet } to any keep state
pass out quick on \$ext_if inet from (\$ext_if) to any flags S/SA modulate state
pass quick on \$ext_if proto tcp from \$external_admin to any port 22
pass quick on \$int_if proto any to any
block all
EOF