Upload
others
View
9
Download
1
Embed Size (px)
Citation preview
Baptiste MOINE Déploiement d’un serveur d’impression ~ 1 ~
Déploiement d’un serveur d’impression
CONTEXTE ................................................................................................................ 1
TRAVAIL DEMANDE .................................................................................................... 1
CAHIER DES CHARGES ............................................................................................... 1
INSTALLATION DE DEBIAN JESSIE (8.0) .......................................................................... 5
INSTALLATION DE SSH ................................................................................................ 6
CONFIGURATION DU PARE-FEU ................................................................................... 8
INSTALLATION DE CUPS ........................................................................................... 11
INSTALLATION DE SAMBA ......................................................................................... 14
CONFIGURATION DE PAM ....................................................................................... 18
PREPARATION DES PILOTES ........................................................................................ 19
TEST SUR UN CLIENT .................................................................................................. 20
CONCLUSION ......................................................................................................... 21
INFORMATIONS SUPPLEMENTAIRES .............................................................................. 21
CONTEXTE
Période de formation en milieu professionnel en première année de BTS SIO (2014-2015)
au Centre des Ressources Informatiques (CRI) de l’Ecole Supérieur National de
Mécanique et d’Aéronautique (ENSMA).
TRAVAIL DEMANDE
Mettre en place un service d’impression qui sera joint au domaine existant pour
permettre une centralisation des ressources d’impression (logs, gestion des copies,
gestion des pilotes, etc.). Cette centralisation permettra en étant jointe au domaine, de
déployer les imprimantes sur l’ensemble des machines du domaine sans devoir passer
par des déploiement multiples qui peuvent devenir laborieux en fonction du système
installé, de sa localisation, etc. De plus, ceci permettra une gestion des droits
d’impression (par exemple le groupe Stage peut imprimer sur l’imprimante du lab mais
pas celle des professeurs).
CAHIER DES CHARGES
Contraintes
La solution doit :
Ne pas engendrer des coûts supplémentaires trop importants ;
Permettre une jonction au domaine existant ;
Offrir une configuration simplifiée pour permettre la gestion des imprimantes
rapidement ;
Être facilement reconfigurable en cas de panne ou de nécessité de
modifications
Ne pas entrer en conflit avec un autre service/serveur existant
Baptiste MOINE Déploiement d’un serveur d’impression ~ 2 ~
Ressources exploitables
Infrastructure réseau + clients (voir Figure 1) ;
Hyperviseur (HyperV) ;
Contrôleurs de domaine, possédant divers services :
Service DNS ;
Serveur WINS ;
Service DHCP (+BOOTP/PXE) ;
Service d’annuaire Active Directory ;
Service de déploiement WDS (Windows Deployment Service) MDT.
Baptiste MOINE Déploiement d’un serveur d’impression ~ 3 ~
Comparatif des solutions
Nom Licence Coût Intégration au
domaine
CUPS + SaMBa Libre Gratuit Oui
Serveur d’impression /
Windows Server
Propriétaire Payant mais
inclut avec le
système
PXE
Solution retenue
Suite à une réunion avec l’équipe, nous avons choisis de ne pas installer de serveur
d’impression sur un contrôleur de domaine mais sur un serveur membre du domaine.
Étant donné que l’architecture système du domaine est amenée à évoluer pour
changer son niveau fonctionnel, actuellement à Windows Server 2008, il passera à 2012,
nous avons décidé de ne pas installer de serveur d’impression sur un Windows Server par
pure optimisation des ressources.
La solution retenue est donc le service de gestion des imprimantes CUPS avec un serveur
SaMBa qui permettra de partager les imprimantes. L’objectif sera donc de faire
fonctionner le serveur d’impression comme décrit sur la Figure 2.
Clients
Contrôleur 1
Serveur de virtualisation Hyper-V
Contrôleur 2
DHCP/BOOTPDNS
WDS (MDT) Firewallavec RADIUS
Routeur
Internet
Imprimantes Serveur d’impression
Figure 1 - Schéma logique du réseau
Baptiste MOINE Déploiement d’un serveur d’impression ~ 4 ~
ClientServeur d’impression
1 - Authentification
3 - Accès aux partages
1 - Le client s’authentifie sur le serveur d’impression2 - Le serveur d’impression transmet la demande d’authentification au contrôleur de domaine3 - Le client authentifié accède aux ressources disponibles selon ses droits4 - Le client procède à une impression en utilisant l’imprimante partagée5 - Le serveur procède à l’impression et récupère l ‘état de l’opération d’impression6 - Le serveur transmet l’état de l’opération au client
4 & 6 – Impression
Contrôleurde domaine AD
2 - Vérification
5 - Impression
Figure 2 - Processus d'impression
Comparatif des systèmes d’exploitation compatibles
Nom Licence Coût Mémoire vive Espace disque Processeur
Debian Libre Gratuit 512Mo 3Go 1GHz
CentOS Libre Gratuit 512Mo 2Go 500MHz
Ubuntu Libre Gratuit 192Mo 1Go 300MHz
Système d’exploitation retenue
Nous avons décidé afin d’optimiser les ressources et donc le budget d’installer le service
SaMBa sur un système virtualisé sur l’hyperviseur (HyperV). Afin d’optimiser au mieux le
service d’impression, nous installerons SaMBa sur une distribution Debian server car elle
est plus facilement maintenable et ne nécessite pas d’une grande configuration
matérielle.
Baptiste MOINE Déploiement d’un serveur d’impression ~ 5 ~
INSTALLATION DE DEBIAN JESSIE (8.0)
Pour installer Debian Jessy, il faut commencer par télécharger l’image d’installation
depuis le site officiel, télécharger une image au format CD, dans la mesure où seul le
système basique sera installé (sans interface graphique). Une fois téléchargé, créer un
support d’installation, soit en gravant l’image disque soit en ajoutant une partition active
à une clé USB et en y copiant les fichiers de l’image d’installation de Ubuntu
(UnetBootin). Une fois le support d’installation préparé, il suffit de démarrer la machine sur
le support d’installation en modifiant les paramètres d’amorçage du BIOS.
Lorsque le programme d’installation s’affiche, procéder à une installation simple, sans
pour autant ajouter les utilitaires usuels du système ni une interface graphique (inutile
dans cette situation).
Configuration du système post-installation
Afin de pouvoir bénéficier d’une connectivité sur notre serveur et pouvoir y installer des
services, configurer l’interface Ethernet de la machine comme ceci :
1 $ sudo su -
2 # cat >> /etc/network/interfaces << EOT
3 allow-hotplug eth0
4 iface eth0 inet dhcp
5 EOT
6 # ifdown eth0; ifup eth0
Suite à la configuration dynamique de notre adressage IPv4 par DHCP, nous obtenons
cette configuration :
IP/CIDR : 192.168.251.108/24
Bail DHCP : 288961 secondes
DNS : 192.168.251.1
DNS secondaire : 192.168.251.2
Serveur DHCP : 192.168.251.1
Passerelle par défaut : 192.168.251.1
Pour conserver cette configuration IPv4, nous allons ajouter ce bail aux réservations du
serveur DHCP. Le service DHCP étant installé sur le contrôleur 1 (sous Windows Server),
nous allons effectuer cette configuration en utilisant l’outil de gestion d’ouverture de
session à distance. De plus nous ajouterons cette configuration en statique dans le fichier
de configuration /etc/network/interfaces.
Baptiste MOINE Déploiement d’un serveur d’impression ~ 6 ~
INSTALLATION DE SSH
Pour respecter le cahier des charges stipulant de faciliter l’administration de ce serveur,
nous installerons un service SSH pour prendre plus facilement le contrôle du serveur à
distance. Cependant à des fins purement sécuritaires, nous changerons le port par
défaut du service SSH et n’autoriserons que le réseau CRI.LAB à accéder au serveur SSH.
Pour installer un serveur SSH, nous allons installer le paquet openssh-server :
1 # apt-get update
2 # apt-get install -fy openssh-server
A présent nous allons configurer le service SSH de manière à le sécuriser au maximum
(tous les détails sont des commentaires et peuvent donc être laissés) :
3 # /etc/init.d/ssh stop # Stop le service SSH
4 # cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak # Sauvegarde la configuration actuelle
5 # cat > /etc/ssh/sshd_config << EOT
6 #### Configuration initiale de SSH2 ####
7 Port 54365 # Écoute sur un port non standard > 1024
8 Protocol 2 # Le SSH1 est moins sécurisé
9 AddressFamily inet # Restriction à IPv4
10 X11Forwarding no # Désactive la redirection d'une session X11
11 #### Prévenir des attaques par spoofing ####
12 TCPKeepAlive no
13 ClientAliveInterval 600
14 ClientAliveCountMax 3
15 ListenAddress 192.168.251.108 # Écoute uniquement sur cette interface (eth0)
16
17 #### Clés d'authentification pour SSH2 ####
18 HostKey /etc/ssh/ssh_host_rsa_key
19 HostKey /etc/ssh/ssh_host_dsa_key
20
21 UsePrivilegeSeparation yes # Active la séparation des privilèges en créant un processus avec les droits de l'utilisateur authentifié à chaque connexion-
22 #### Authentification par clés publiques ####
23 PubkeyAuthentication yes
24 AuthorizedKeysFile %h/.ssh/authorized_keys
Baptiste MOINE Déploiement d’un serveur d’impression ~ 7 ~
25 PermitBlacklistedKeys no # Rejette les connexions avec une clé compromise
26 AllowUsers user # Autorise un nombre limité d'utilisateur à se connecter
27 LoginGraceTime 60 # Laisse 1 minute à l'utilisateur pour se connecter en entrant sa passphrase (sinon timeout)
28 StrictModes yes # Vérifie les permissions et les droits sur les clés privées
29 PermitRootLogin no # Empêcher une connexion avec le compte root
30 IgnoreRhosts yes # Ignore les fichiers ~/.rhosts et ~/.shosts car rhost est obsolète
31 HostbasedAuthentication no # Désactive l'authentification basée sur l'hôte (rhosts)
32 IgnoreUserKnownHosts yes # Ignore le fichier ~/.ssh/known_hosts pour les connexions RSA
33 PermitEmptyPasswords no # Interdit les connexions sans mot de passe
34 UsePAM no # Désactive PAM
35 ChallengeResponseAuthentication no # Désactive la réponse PAM
36 PasswordAuthentication no # Désactive l'authentification par mot de passe (utilisation de passphrase)
37 UseLogin no # Désactive la fonction login()
38 #### Logging ####
39 SyslogFacility AUTH # /var/log/auth.log
40 LogLevel INFO # Verbosité à INFO
41 PrintLastLog yes # Affiche la dernière connexion de l'utilisateur
42 MaxAuthTries 2 # Maximum de tentative avant échec de l'authentification
43 MaxStartups 10:30:60 # Bloque les connexions entrantes au-delà de 10 connexion actives
44 AcceptEnv LANG LC_* # Autorise le passage de variables locales au client
45 Subsystem sftp /usr/lib/openssh/sftp-server # Active le service sftp sur SSH
46 Banner /etc/issue # Affiche une bannière d'avertissement
47 EOT
Baptiste MOINE Déploiement d’un serveur d’impression ~ 8 ~
Nous avons à présent recrée un fichier de configuration pour le service SSH de manière à
garantir de manière optimale, la sécurité de l’administration du serveur à distance. A
présent il faut préparer les jeux de clés RSA et DSA nécessaires à l’authentification mais
aussi le message d’avertissement lors de la connexion :
48 # cat > /etc/issue << EOT
49 -------------------------------------------------------------------------
50 AVERTISSEMENT: L'accès à ce système est restreint aux seuls utilisateurs autorisées à s'y connecter.
51 -------------------------------------------------------------------------
52 EOT
53 # rm /etc/ssh/ssh_host_*
54 # ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa # Recréation du jeu de clé RSA
55 # ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa # Recréation du jeu de clé DSA
56 # su user
57 $ mkdir ~/.ssh && cd ~/.ssh
58 $ ssh-keygen -t rsa -b 2048 # Création d'un jeu de clé avec un passkey
59 $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
60 $ chmod 600 ~/.ssh/id_rsa
61 $ chmod 600 ~/.ssh/authorized_keys
62 $ chmod 700 ~/.ssh
63 $ exit
64 # /etc/init.d/ssh start # Démarre le service SSH
CONFIGURATION DU PARE-FEU
Afin d’apporter une protection supplémentaire, nous avons décidés de configurer le
pare-feu pour ne permettre l’interrogation des services qu’aux seules machines
autorisées.
Baptiste MOINE Déploiement d’un serveur d’impression ~ 9 ~
Nous avons donc créé un fichier de script permettant de s’adapter aux modifications IP
du système de manière pseudo-automatique :
1 # cat > /etc/init.d/firewall.sh << EOT # Création d'un fichier contenant nos règles de pare-feu (meilleur persistance)
2 #!/bin/sh
3 if ![ -x /sbin/iptables]; then # Quitte si iptables n'existe pas
4 exit 0
5 fi
6 #### Déclaration des variables ####
7 IP_eth0="$(ifconfig eth0 | grep 'inet adr:'| cut -d: -f2 | awk '{print$1}' | grep -Eo '([0-9]{1,3}[\.]){3}[0-9]{1,3}')" #Récupération dynamique de l'adresse IP
8 CRI_lab="192.168.251.0/24"
9
10 #### Configuration ####
11 iptables-save > /etc/iptables.backup # Sauvegarde la configuration actuelle
12 iptables -F # Vide (flush) la table de configuration du pare-feu actuellement utilisée
13
14 iptables -t nat -F # Vide les règles nat, relatives au rôle de passerelle (non installé ...)
15 iptables -t mangle -F # Vide les règles mangle, relatives à la QoS
16 iptables -P INPUT DROP # Rejet par défaut de toute les requêtes entrantes sur les cartes réseau
17 iptables -A INPUT -i lo -j ACCEPT # Accepte les paquets entrant depuis la carte de bouclage (loopback)
18 iptables -P FORWARD DROP # Rejet par défaut de toute les requêtes passant d'une carte réseau à une autre
19 iptables -P OUTPUT ACCEPT # Autorise par défaut toute les requêtes sortantes d'une des cartes réseau
20 iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT # Autorisation de paquets faisant partie d'une session ou flux déjà établie (donc autorisé)
21 iptables -A INPUT -p icmp -j ACCEPT # Autorise les requêtes ICMP entrantes
22
23 #### SSH ####
24 iptables -A INPUT -p tcp -s $CRI_lab -d $IP_eth0 --dport 54365 -m state --state NEW,ESTABLISHED -j ACCEPT # Ajoute une règle autorisant l'interrogation du service SSH depuis le réseau CRI_lab uniquement
25
Baptiste MOINE Déploiement d’un serveur d’impression ~ 10 ~
26 #### CUPS ####
27 iptables -A INPUT -p tcp -s $CRI_lab -d $IP_eth0 --dport 631 -m state --state NEW,ESTABLISHED -j ACCEPT # Ajoute une règle autorisant l'interrogation de CUPS par le réseau CRI.lab
28 iptables -A INPUT -p udp -s $CRI_lab -d $IP_eth0 --dport 631 -m state --state NEW,ESTABLISHED -j ACCEPT # Ajoute une règle autorisant l'interrogation de CUPS par le réseau CRI.lab
29
30 #### SaMBa ####
31 iptables -A INPUT -p udp -s $CRI_lab -d $IP_eth0 --dport 137 -m state --state NEW,ESTABLISHED -j ACCEPT
32 iptables -A INPUT -p udp -s $CRI_lab -d $IP_eth0 --dport 138 -m state --state NEW,ESTABLISHED -j ACCEPT
33
34 iptables -A INPUT -p tcp -s $CRI_lab -d $IP_eth0 --dport 139 -m state --state NEW,ESTABLISHED -j ACCEPT
35 iptables -A INPUT -p tcp -s $CRI_lab -d $IP_eth0 --dport 445 -m state --state NEW,ESTABLISHED -j ACCEPT
36
37 #### Sauvegarde de la configuration ####
38 iptables-save > /etc/network/iptables.up.rules
39 printf "y\n" | iptables-apply –w /etc/network/iptables.up.rules >/dev/null
40 #### Désaffectation des variables ####
41 unset IP_eth0
42 unset CRI_lab
43 exit 0
44 EOT
45 # chmod +x /etc/init.d/firewall.sh
Baptiste MOINE Déploiement d’un serveur d’impression ~ 11 ~
INSTALLATION DE CUPS
Afin de gérer les imprimantes installées sur le serveur, nous allons installer CUPS qui est un
outil de gestion d’imprimante. En utilisant cet outil nous pourrons ajouter de manière plus
souple et en utilisant une interface de configuration basé sur http, les imprimantes que
l’on souhaite ou non partager par la suite en utilisant le serveur SaMBa.
Préparation du système Avant de procéder à l’installation du service, nous allons apporter quelques
modifications aux sources d’installation d’Aptitude qui par défaut utilise le support
d’installation système pour récupérer les paquets :
1 # sed -i 's/\(deb cdrom\)/# \1/' /etc/apt/sources.list # Commente les lignes concernant les CDROM
Le fichier de source devrait alors ressembler à ceci (sans les commentaires) :
2 deb http://httpredir.debian.org/debian jessie main
3 deb-src http://httpredir.debian.org/debian jessie main
4
5 deb http://httpredir.debian.org/debian jessie-updates main
6 deb-src http://httpredir.debian.org/debian jessie-updates main
7
8 deb http://security.debian.org/ jessie/updates main
9 deb-src http://security.debian.org/ jessie/updates main
Ajoutons une source supplémentaire qui permettra l’installation de paquets non open-
source :
10 # printf "\ndeb http://httpredir.debian.org/debian jessie-backports main contrib non-free" >> /etc/apt/sources.list
11 # apt-get update # Mise à jour de la base de données des dépots apt
Installation et configuration A présent, nous pouvons installer CUPS ainsi que ses dépendances :
1 # apt-get -fy install cups cups-client
Le service CUPS est installé, passons à sa configuration :
2 # cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.bak
3 # sed -i 's/^\(Listen \)localhost:631$/\1192.168.251.108:631/' /etc/cups/cupsd.conf # Permet l'écoute sur l'interface eth0 et donc un accès distant pour l'administration
4 # usermod -aG lpadmin user # Ajoute user au groupe lpadmin
Baptiste MOINE Déploiement d’un serveur d’impression ~ 12 ~
5 # nano /etc/cups/cupsd.conf
6 # Restrict access to the server...
7 <Location />
8 Order allow,deny
9 Allow from 192.168.251.*
10 </Location>
11
12 # Restrict access to the admin pages...
13 <Location /admin>
14 Order allow all
15 Allow from 192.168.251.*
16 </Location>
17
18 # Restrict access to configuration files...
19 <Location /admin/conf>
20 AuthType Default
21 Require user @SYSTEM
22 Order allow,deny
23 Allow from 192.168.251.*
24 </Location>
25
26 # Allow machines on local network to use printers
27 <Location /printers>
28 Order allow,deny
29 Allow from 192.168.251.*
30 </Location>
31 # /etc/init.d/cups start
A présent, pour ajouter une imprimante il faut accéder à la page
http://192.168.251.108:631 en utilisant un navigateur WEB, dans l’onglet « Administration »,
choisir l’option « ajouter une imprimante » en se connectant avec l’utilisateur simple
ajouté au groupe lpadmin (ici « user »). Ajouter l’imprimante en suivant les indications du
constructeur, par exemple la Toshiba 2540 CSE s’ajoute en choisissant l’option « Hôte ou
imprimante LPD/LPR » puis en chargeant le fichier ppd fournis par le constructeur (pour le
Toshiba eStudio 2500CSE : http://pastebin.com/raw.php?i=BfbevSj3).
Baptiste MOINE Déploiement d’un serveur d’impression ~ 13 ~
Pour connaitre les protocoles d'impression utilisés par l'imprimante (avec l'accord du RSSI
!), utiliser NMAP comme ceci :
32 # nmap -A -sV --open 172.16.1.159/32
33 Starting Nmap 6.47 ( http://nmap.org ) at 2015-05-28 09:26 Paris, Madrid (heure dÆÚtÚ)
34 Nmap scan report for 172.16.1.159
35 Host is up (0.000068s latency).
36 Not shown: 990 closed ports
37 PORT STATE SERVICE
38 21/tcp open ftp
39 25/tcp open smtp
40 80/tcp open http
41 139/tcp open netbios-ssn
42 427/tcp open svrloc
43 445/tcp open microsoft-ds
44 515/tcp open printer
45 631/tcp open ipp
46 8080/tcp open http-proxy
47 9100/tcp open jetdirect
Ici nous pouvons voir que le port631 est en écoute et fournis un service IPP qui est un
standard de communication basé sur HTTP, ainsi pour ajouter l’imprimante Toshiba nous
pouvons entrer l'URL « lpd://172.16.1.159/ ». Il sera alors nécessaire de donner un nom à
l’imprimante, par exemple « TOSHIBA2540CSE_LAB ».
L’imprimante est à présent ajoutée, comme il s’agit de la seule imprimante installée pour
le moment, nous pouvons la définir comme imprimante par défaut.
Baptiste MOINE Déploiement d’un serveur d’impression ~ 14 ~
INSTALLATION DE SAMBA
Afin de partager l’imprimante fraichement installé nous allons installer SaMBa et le
configurer pour permettre son intégration au domaine en tant que serveur membre et
non pas contrôleur de domaine :
1 # apt-get -fy install samba
2 # cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
3 # nano /etc/samba/smb.conf # Remplacer la configuration
4 #======================= Paramètres globaux =======================
5
6 [global]
7 ### Groupe de travail et domaine ###
8 workgroup = CRI
9 server string = Serveur d’impression
10 netbios name = printsrv
11 realm = CRI.lab
12 local master = no
13 domain master = no
14 preferred master = no
15 os level = 0
16
17 ### Sécurité ###
18 security = ADS
19 encrypt passwords = yes
20 guest account = nobody
21
22 ### Réseau ###
23 # Serveurs et option des services voisins
24 wins server = 192.168.251.11
25 socket options = TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384
26 dns proxy = no
27 disable netbios = no
28 # Port et interfaces d'écoute
29 smb ports = 445
30 interfaces = 127.0.0.0/8 eth0
31 bind interfaces only = yes
Baptiste MOINE Déploiement d’un serveur d’impression ~ 15 ~
32 ### Authentification ###
33 guest ok = no
34 encrypt passwords = true
35 client use spnego = yes
36 client ntlmv2 auth = yes
37
38 ### Winbind ###
39 winbind separator = +
40 winbind use default domain = yes
41 winbind refresh tickets = yes
42 winbind enum users = yes
43 winbind enum groups = yes
44 winbind nested groups = yes
45 winbind cache time = 40
46
47 idmap config *: backend = ad
48 idmap config *: range = 10000-20000
49
50 idmap config CRI: backend = rid
51 idmap config CRI: schema_mode = rfc2307
52 idmap config CRI: default = yes
53 idmap config CRI: range = 10000-20000
54
55 ### Authentification ###
56 winbind offline logon = yes
57 template shell = /bin/bash
58 template homedir = /home/%u
59
60 ### Journalisation ###
61 # Débogage verbeux
62 log level = 3
63 # Répertoire avec variable dédiée à la machine
64 log file = /var/log/samba/log.%m
65 # Taille maximale des fichiers de log
66 max log size = 1000
Baptiste MOINE Déploiement d’un serveur d’impression ~ 16 ~
67 # Désactivation de syslog
68 syslog only = no
69 syslog = 0
70 # Action si problème critique
71 panic action = /usr/share/samba/panic-action %d
72
73 ### CUPS ###
74 load printers = yes
75 printing = cups
76 printcap name = cups
77 preserve case = yes
78 short preserve case = yes
79
80 #======================= Partages =======================
81
82 [printers]
83 comment = Toute les imprimantes
84 valid users = @\"CRI+utilisateurs du domaine\"
85 browseable = yes
86 path = /var/spool/samba
87 printable = yes
88 guest ok = no
89 create mode = 0700
90 write list = @lpadmin, root
91
92 [print$]
93 comment = Drivers d'impression
94 path = /var/lib/samba/printers
95 browseable = yes
96 read only = yes
97 guest ok = no
A présent nous allons procéder à la configuration de Kerberos afin de pouvoir obtenir le
jeton nécessaire à l’intégration de notre serveur au domaine :
1 # apt-get -fy install krb5-user libpam-krb5 winbind
2 # cp /etc/krb5.conf /etc/krb5.conf.bak
Baptiste MOINE Déploiement d’un serveur d’impression ~ 17 ~
3 # nano /etc/krb5.conf # Ajouter / modifier la configuration
4 [logging]
5 default = FILE:/var/log/krb5libs.log
6 kdc = FILE:/var/log/krb5kdc.log
7 admin_server = FILE:/var/log/kadmind.log
8
9 [libdefaults]
10 default_realm = CRI.LAB
11 dns_lookup_realm = false
12 dns_lookup_kdc = false
13 ticket_lifetime = 24h
14 forwardable = yes
15
16 [realms]
17 CRI.LAB = {
18 kdc = controleur1.cri.lab
19 admin_server = controleur1.cri.lab
20 default_domain = cri.lab
21 }
22
23 [domain_realm]
24 .kerberos.server = CRI.LAB
25 .cri.lab = CRI.LAB
26 cri.lab = CRI.LAB
27
28 [kdc]
29 profile = /var/kerberos/krb5kdc/kdc.conf
30
31 [appdefaults]
32 pam = {
33 debug = false
34 ticket_lifetime = 36000
35 renew_lifetime = 36000
36 forwardable = true
37 krb4_convert = false
Baptiste MOINE Déploiement d’un serveur d’impression ~ 18 ~
38 }
Passons maintenant à la configuration de la résolution de nom en modifiant le Name
Service Switch :
1 # cp /etc/nsswitch.conf /etc/nsswitch.conf.bak
2 # nano /etc/nsswitch.conf
3 passwd: compat winbind
4 group: compat winbind
5 shadow: compat
Nos services étant configurés, nous pouvons procéder à l’intégration de notre serveur au
domaine CRI.lab :
1 # /etc/init.d/winbind restart
2 # testparm /etc/samba/smb.conf
3 # /etc/init.d/cups restart
4 # /etc/init.d/samba restart
5 # kinit admens
6 # klist
7 Ticket cache: FILE:/tmp/krb5cc_0
8 Default principal: [email protected]
9
10 Valid starting Expires Service principal
11 28/05/2015 16:47:03 29/05/2015 02:47:03 krbtgt/[email protected]
12 renew until 29/05/2015 16:46:48
13 # net rpc join -U admens
14 Enter admens's password:
15 Using short domain name -- CRI
16 Joined 'PRINTSRV' to dns domain 'CRI.LAB'
CONFIGURATION DE PAM
Pour permettre l’authentification en utilisant LDAP, il faut modifier les fichiers de
configurations de PAM (Pluggable Authentication Modules) :
1 # cp /etc/pam.d/common-account /etc/pam.d/common-account.bak
2 # cp /etc/pam.d/common-auth /etc/pam.d/common-auth.bak
3 # cp /etc/pam.d/common-session /etc/pam.d/common-session.bak
4 # nano /etc/pam.d/common-auth
Baptiste MOINE Déploiement d’un serveur d’impression ~ 19 ~
5 auth sufficient pam_winbind.so
6 auth required pam_unix.so use_first_pass nullok_secure
7 # nano /etc/pam.d/common-session
8 session required pam_mkhomedir.so skel=/etc/skel/ umask=0066
9 session sufficient pam_winbind.so
10 session required pam_unix.so
PREPARATION DES PILOTES
Pour permettre aux utilisateurs de notre serveur d’impression de ne pas avoir à
télécharger les pilotes, nous allons ajouter les pilotes de notre imprimante à SaMBa :
1 # mkdir -p /var/spool/samba/
2 # chmod 1777 /var/spool/samba/ # Empêche la suppression accidentelle
3 # lpadmin -d TOSHIBA2540CSE_LAB # Définie l’imprimante par défaut
A présent pour récupérer les pilotes nécessaires, il est possible d’imprimer une page de
test d'imprimante depuis un PC possédant déjà une installation de cette imprimante et
d’en extraire la liste des pilotes nécessaire à son fonctionnement (voir Figure 3)
Figure 3 - Pilotes d'impression
Baptiste MOINE Déploiement d’un serveur d’impression ~ 20 ~
Une fois cette liste récupéré, il faut indiquer à CUPS que l’on souhaite installer des pilotes
et les déployer sur SaMBa, pour cela il faut commencer par copier ces pilotes en
conservant leur casse (majuscules et minuscules) dans le répertoire prévu à cet effet
(/usr/share/cups/drivers). Il est possible de compléter ce package de pilote avec
d’autres qui sont notamment prévu pour le Postscript de CUPS :
4 # cd /tmp/
5 # wget http://ftp.ntua.gr/mirror/gnu/cups/windows/cups-windows-6.0-source.tar.gz
6 # tar xvzf cups-windows-6.0-source.tar.gz
7 # cd cups-windows-6.0
8 # make install
9 # cupsaddsmb -H localhost -U admens -v -a
TEST SUR UN CLIENT
Pour vérifier le fonctionnement du serveur d’impression, il suffit de s’authentifier sur un
poste du domaine CRI.LAB et d’accéder au partage du serveur SaMBa, si tout se passe
bien l’imprimante et installée en utilisant le pilotes partagées via le partage « print$ ».
Pour vérifier le fonctionnement de l’imprimante, il suffit d’imprimer une page de test, si
cela fonctionne, le partage a fonctionné (voir Figure 4).
Figure 4 - Page de teste d'imprimante via partage SaMBa
Baptiste MOINE Déploiement d’un serveur d’impression ~ 21 ~
CONCLUSION
Après avoir procédé à plusieurs installations du service et vérifier son fonctionnement
avant que ce dernier soit effectif, j’ai dû procéder à de nombreuses analyses
protocolaires mais aussi applicative via les journaux d’évènement pour comprendre le
fonctionnement réel de ce service, j’ai ainsi pu constater que celui-ci est très compliqué
à maintenir dans la mesure où plusieurs gestion des droits sont à prendre en compte à
savoir les ACL, les droits NTFS mais aussi les droits POSIX. De plus il faut également prendre
en compte la compatibilité entre les services d’authentification propriétaire et libres.
Cela m’a donc permis de comprendre la véritable complexité d’intégrer un service
dédié à un environnement libre, dans un domaine fournis par des services propriétaire
tout en gérant la rétrocompatibilité des services. Il n’en reste pas moins que cette
solution fonctionne mais est plus complexe à administrer si l’on possède déjà une
infrastructure de domaine propriétaire.
INFORMATIONS SUPPLEMENTAIRES
Contact : [email protected]
Références :
Ask Ubuntu - http://askubuntu.com/
Super User - http://superuser.com/
Stack Overflow - http://stackoverflow.com/
Server Fault - http://serverfault.com/
Information Security - http://security.stackexchange.com/
Stack Exchange Unix and Linux - http://unix.stackexchange.com/
Ubuntu Wiki -https://wiki.ubuntu.com/
Ubuntu Documentation - https://help.ubuntu.com/
ArchWiki - https://wiki.archlinux.org/
Syslinux Wiki - http://www.syslinux.org
DigitalOcean Community - https://www.digitalocean.com/community/
IT-Connect - http://www.it-connect.fr/