Installation/MAJ : iTunes par GPO

Itunes :

Télécharger la version 32 bits ou 64 bits du logiciel iTunes (dans ce cas-ci la version 32 bits): http://www.apple.com/fr/itunes/download/

Lorsque le téléchargement est terminé, il faut extraire l’archive en utilisant par exemple 7zip.

Le fichier SetupAdmin.exe ne nous sera d’aucune utilisé, on le supprime.
Ce qui nous laisse comme contenu du dossier (qui doit être accessible pour les utilisateurs via un dossier partagé par exemple) :

Contenu Archive

On peut aussi supprimer AppleSoftwareUpdate.msi.

On doit maintenant télécharger et installer Orca MSI Editor : http://www.technipages.com/download-orca-msi-editor.html

AppleApplicationSupport.msi ne nécessite aucune modification. On le laissera donc tel qu’il est.

On s’occupe alors du fichier iTunes.msi, il suffit simplement de drag and drop dans ORCA :

Orca

On se rend dans View puis Summary Information … et on supprime l’ensemble des Languages à l’exception du 1033.

Orca 2

On clique sur OK et on sauvegarde les changements. Ensuite, on se rend dans Transform puis New Transform, il faut changer :

  • Dans Component trouver iTunesDesktopShortcuts et modifier le paramètre Condition de cette manière : DESKTOP_SHORTCUTS= »0″
  • Property puis IAcceptLicense mettre la valeur à Yes
  • Property puis SCHEDULE_ASUW et mettre la valeur à 0
  • Dans Shortcut, supprimer la ligne AboutiTunes  (en faisant un clic droit)

On génère le fichier .mst : Transform -> Generate Transform. On l’enregistre sous le nom iTunes.mst.

On s’occupe maintenant du Bonjour.msi. Comme précédemment, on ne laisse que le 1033 et on fait un New Transform. On modifie :

  • Property puis IAcceptLicense, on met la valeur à Yes
  • LaunchCondition puis NOT BNEWERPRODUCTISINSTALLED, on supprime la ligne
  • Shortcut et on supprime toutes les lignes

On génère le fichier .mst : Transform -> Generate Transform. On l’enregistre sous le nom Bonjour.mst.

Au tour du fichier AppleMobileDeviceSupport.msi à être modifié. Même procédé qu’avant, il faut modifier :

  • Property puis IAcceptLicense, mettre la valeur à Yes
  • LaunchCondition puis NOT BNEWERPRODUCTISINSTALLED, il faut supprimer cette ligne

On génère le fichier .mst : Transform -> Generate Transform. On l’enregistre sous le nom AppleMobileDeviceSupport.mst.

On peut quitter Orca.

On s’occupe maintenant de la GPO. Comme pour Adobe : Computer Configuration –> Policies –> Software Settings –> Software Installation.

On ajoute comme Package, les différents .msi sans oublier les .mst correspondants.

Pour iTunes.msi, il faut sélectionner l’option suivante :

iTunes

Dans Computer Configuration à Preferences à Windows Settings à Registry, on va créer un nouveau Registry

Registry

– Hive: HKEY_LOCAL_MACHINE
– Key Path: SOFTWARE\Apple Computer, Inc.\iTunes\Parental Controls\Default
– Value name: AdminFlags (do not tick Default)
– Value type: REG_DWORD
– Value data: Please see the next step to work out your particular value.
– Base: Decimal

Tableau des valeurs : 

Item Value
kParentalFlags_Locked 1
kParentalFlags_DisablePodcasts 2
kParentalFlags_DisableMusicStore 4
kParentalFlags_DisableSharing 8
kParentalFlags_DisableExplicitContent 16
kParentalFlags_DisableRadio 32
kParentalFlags_RestrictMovieContent 64
kParentalFlags_RestrictTVShowContent 128
kParentalFlags_DisableCheckForUpdates 256
kParentalFlags_RestrictGames 512
kParentalFlags_DisableMiniStore 1024
kParentalFlags_DisableAutomaticDeviceSync 2048
kParentalFlags_DisableGetAlbumArtwork 4096
kParentalFlags_DisablePlugins 8192
kParentalFlags_DisableOpenStream 16384
kParentalFlags_DisableAppleTV 32768
kParentalFlags_DisableDeviceRegistration 65536
kParentalFlags_DisableDiagnostics 131072
kParentalFlags_AllowITunesUAccess 262144
kParentalFlags_RequireEncryptedBackups 524288
kParentalFlags_DisableHomeSharing 1048576
kParentalFlags_DisableCheckForAppUpdates 2097152
kParentalFlags_DisableCheckForDeviceUpdates 4194304
kParentalFlags_DisablePing 8388608
kParentalFlags_DisableFirstRunWelcomeWindow 16777216

Ce qui est utilisé ici :

  • kParentalFlags_Locked: You must include this or users will be able to override your settings.
  • kParentalFlags_DisableSharing
  • kParentalFlags_DisableExplicitContent
  • kParentalFlags_DisableHomeSharing
  • kParentalFlags_DisableCheckForAppUpdates
  • kParentalFlags_DisablePing
  • kParentalFlags_DisableFirstRunWelcomeWindow

Valeur :  1 + 8 +16 + 1048576 + 2097152 + 8388608 + 16777216 = 28311577.

QuickTimes

Après l’avoir téléchargé, on fait pareil pour QuickTimes.msi et on modifie:

  • Dans InstallExecuteSequence, on met PreventDowngrade à 0
  • Dans Properties, on ajoute DESKTOP_SHORTCUTS avec la valeur  0 et on change SCHEDULE_ASUW de 1 à 0

On génère le fichier .mst : Transform -> Generate Transform. On l’enregistre sous le nom QuickTimes.mst.

On place maintenant le .msi (avec le .mst) dans notre GPO.

Il faudra également ajouter un WMI Filter :

WMI Filter

Script pour fixer l’ordre d’installation des éléments :

Via une autre GPO, on va fixer l’exécution d’un script au démarrage de l’ordinateur (Computer Configuration à Policies à Windows Settings à Script à Startup).

Le script .bat :

@echo off

start /wait msiexec /i "\\WINGPO\itunes_itunes_11.0.2_32_bits_francais_11140\AppleApplicationSupport.msi" /qn

start /wait msiexec /i "\\WINGPO\itunes_itunes_11.0.2_32_bits_francais_11140\AppleMobileDeviceSupport.msi" TRANSFORMS="\\WINGPO\itunes_itunes_11.0.2_32_bits_francais_11140\AppleMobileDeviceSupport.mst" /qn 

start /wait msiexec /i "\\WINGPO\itunes_itunes_11.0.2_32_bits_francais_11140\Bonjour.msi" TRANSFORM="\\WINGPO\itunes_itunes_11.0.2_32_bits_francais_11140\Bonjour.mst" /qn

start /wait msiexec /i "\\WINGPO\quicktime_quicktime_7.71.80.42_francais_anglais_9524\QuickTime.msi" TRANSFORMS="\\WINGPO\itunes_itunes_11.0.2_32_bits_francais_11140\QuickTime.mst" /qn

start /wait msiexec /i "\\WINGPO\itunes_itunes_11.0.2_32_bits_francais_11140\iTunes.msi" TRANSFORM="\\WINGPO\itunes_itunes_11.0.2_32_bits_francais_11140\iTunes.mst" /qn

Il faut que cette GPO s’exécute avant celle concernant iTunes + QuickTimes:

Ordre GPO

Un petit gpupdate /force pour éventuellement accélérer le processus et c’est terminé.

Une erreur pourrait s’afficher (Apple Application Support is required to run iTunesHelper – Error 2) lorsque l’utilisateur ouvre sa session, mais lorsqu’il cliquera sur l’icône d’iTunes, il va s’exécuter sans problème.

Erreur

Lorsqu’une nouvelle version sera disponible, on enlèvera les anciens .msi et on refera la même procédure pour les nouveaux.

Installation/MAJ : Adobe Reader par GPO

Adobe Reader

Attention : Il faut impérativement avoir demandé pour obtenir la licence gratuite (http://www.adobe.com/fr/products/reader/distribution.html) sinon ça ne fonctionne pas.

Après avoir téléchargé Acrobat Reader, nous devons  télécharger l’outil fourni par Adobe afin de personnaliser le package MSI : Adobe Customization Wizard XI.

Ouvrons Acrobat Reader avec un outil comme 7zip pour extraire l’archive.

7zip

On va alors chercher le .msi qui a été extrait et on l’ouvre avec l’outil pour le personnaliser.

On peut via cet outil modifier les paramètres comme souhaité. Par exemple :

  • Personalization Options

Suppress display of End User Agreement (EULA)

  • Installation Options

Make Reader the default PDF viewer
Remove all versions of Reader
Enable Optimization
Enable Caching of installer files on local hard drive
Run Silently (no interface)
Supress Reboot

  • Security

Protected View – Off

  • Online and Adobe online

Online

Lorsque ce que l’on désirait modifier a été fait, on sauvegarde via l’icône prévu à cet effet. Cette sauvegarde aura pour effet de créer un fichier .mst contenant les préférences d’installation.

On crée maintenant un dossier qui sera accessible pour tous les utilisateurs de l’AD avec comme contenu celui d’Acrobat Reader.

On peut maintenant créer la GPO :

GPO

Il faut maintenant l’éditer :

GPO Soft

On clique droit sur Software installation puis New et ensuite Package…

On se rend alors dans l’emplacement partagé et on sélectionne le .msi. On choisit la méthode « Advanced » pour le déploiement.
On se rend alors dans l’onglet « Modifications » pour y ajouter le .mst :

Fichier mst

Ne pas oublier de lier la GPO !

L’installation aura lieu après un ou 2 redémarrages de l’ordinateur et se passera avant l’ouverture de session.

De cette manière, lorsqu’une nouvelle version sortira, la même opération devra être exécutée. Il suffira de supprimer le Package existant et d’ajouter un nouveau correspondant à la dernière version.

Note : La procédure reste la même pour Adobe Flash Player (et pour Java aussi).

Coova Chilli

Coova Chilli, à quoi ça sert ?

Coova Chilli n’est rien d‟autre qu’ un portail captif, open-source sous la licence GPL. Un portail captif consiste à forcer les clients http d‟un réseau à afficher une page web dans un but d‟authentification avant de pouvoir avoir accès à internet.
Cela est obtenu en interceptant tous les paquets quelles que soient leurs destinations jusqu’à ce que l’utilisateur ouvre son navigateur web et essaie d’accéder à Internet. Le navigateur est alors redirigé vers une page web qui peut demander une authentification et/ou un paiement ou tout simplement demander d’accepter les conditions d’utilisation du réseau. Cette technique est souvent employée pour les accès Wi-Fi et peut aussi être utilisée pour l’accès à des réseaux filaires (ex. hôtels, campus etc.).

Ce dont nous avons besoin :

Afin de faire fonctionner notre Coova-chilli, toute une infrastructure autour de lui doit être mise au point.
Nous aurons besoin d‟une Debian (ou une autre distribution), d’un service Web (apache2), de freeradius, de MySQL, d‟un service DNS, de phpMyAdmin, de daloradius et bien évidemment de Coova-chilli.

Note : Cette manipulation ayant été testée il y a quelques temps, quelques changements peuvent apparaître. 

Le début des hostilités :

Nous allons commencer par configurer les interfaces réseaux.

Dans /etc/network/interfaces, nous allons déclarer 2 interfaces en statiques, eth4 sera l‟interface pour le WAN et eth5 pour le LAN (afin d‟utiliser coova-chilli dans les meilleures conditions) :

# interface vers WAN 
allow-hotplug eth4 
iface eth4 inet static 
   address 192.168.0.5 
   netmask 255.255.255.0 
   gateway 192.168.0.1
# interface vers LAN 
allow-hotplug eth5 
iface eth5 inet static 
   address 10.0.2.1
   netmask 255.255.255.0

Nous allons maintenant procéder au téléchargement des différents paquets qui nous seront utiles :

# apt-get install ssh bind9 apache2 mysql-server phpmyadmin php5 perl build-essential ssl-cert freeradius freeradius-mysql

Un mot de passe pour MySQL nous sera demandé. Dans cette démonstration, le mot de passe « mysqladminsecret » a été choisi.

  • Freeradius :

Dans cette étape nous allons travailler avec le paquet freeradius (qui sera notre serveur d‟authentification) et le paquet freeradius-mysql (qui va travailler avec MySQL pour comptabiliser et authentifier les utilisateurs).

Créons tout d‟abord une base de données dans MySQL, qu‟on appellera « radius » :

# mysql –u root –p
 Enter password : mysqladminsecret
 mysql > CREATE DATABASE radius;
 mysql > quit

Après ça, on va devoir rajouter les tables afin que freeradius puisse fonctionner avec la base de données « radius » :

# mysql –u root –p radius </etc/freeradius/sql/mysql/schema.sql
Enter password : mysqladminsecret
# mysql –u root –p radius < /etc/freeradius/sql/mysql/nas.sql
Enter password : mysqladminsecret

Rajoutons un utilisateur et donnons-lui les privilèges sur la base de données “radius”. Appelons cet utilisateur : « radius » :

# mysql –u root –p
Enter password : mysqladminsecret
mysql > GRANT ALL PRIVILEGES ON radius.* TO 'radius'@'localhost' IDENTIFIED BY'mysqlsecret';
mysql > FLUSH PRIVILEGES;
mysql > quit

Il va falloir configurer 5 fichiers : clients.conf, radiusd.conf, sql.conf, user et default.
Les 4 premiers se trouvent tous dans /etc/freeradius, le dernier dans /etc/freeradius/sites-available/default.

Ces fichiers vont servir à préciser certaines informations à freeradius, afin que celui-ci puisse se connecter à la base de données.

On se rend dans le fichier sql.conf :

# nano /etc/freeradius/sql.conf

On modifie la ligne « password » : puisqu’on a choisi mysqlsecret comme mot de passe pour radius.

On laisse les autres lignes comme elles sont :

database = « mysql »
 Définit le type de base de données (mysql, mssql, oracle, postgresql)
server = « localhost »
 Définit l‟ip du serveur sql (ici localhost puisque nous sommes sur le même serveur)
login = « radius »
 Définit le login permettant de se connecter au serveur sql
Et on décommente la ligne readclient = yes.

Rendons nous dans le fichier clients.conf :

Ce fichier va permettre d‟autoriser certaines personnes à se connecter.

# nano /etc/freeradius/clients.conf

On trouve la ligne contenant le mot « secret » et on la modifie comme suit :

secret = radiussecret

Le mot de passe par défaut est « testing123 » pour des raisons de sécurité, nous l’avons changé.

Il est possible que le serveur radius ne soit pas sur la même machine que les autres services, dans ce cas on pourra autoriser une ip / un hôte / un range d’ip. Pour configurer cela, il faut se rendre a la fin du fichier de configuration et décommenter les paramètres nécessaires.

On se rend dans le fichier default :

# nano /etc/freeradius/sites-available/default

Dans ce fichier, on retrouve de nombreux paragraphes. Ceux qui nous intéressent sont les suivants : « authorize », « accounting » et « session ».
Il va falloir décommenter dans ces paragraphes les lignes « sql » (afin que freeradius sache qu‟on va utiliser sql).

On va maintenant modifier le fichier radiusd.conf :

# nano /etc/freeradius/radiusd.conf

On y décommente la ligne 680 : $INCLUDE sql.conf
Seule cette ligne est à décommenter pour indiquer à freeradius qu‟il doit prendre en compte le fichier sql.conf afin de pouvoir se connecter à une base de données sql.

Cinquième et dernier fichier à modifier (users):

Dans ce fichier de configuration on entre des utilisateurs autorisés.

A Ligne 90, il existe déjà un exemple de configuration pour un utilisateur (John Doe).

Il suffit donc de recopier les 2 lignes d‟exemple en modifiant le nom d‟utilisateur et le mot de passe.

Dans notre cas, ce n’est utile que dans le cadre du test de freeradius avec la commande « radtest« .
Lorsque ces fichiers ont été modifiés, on peut tester notre serveur freeradius afin de vérifier qu‟il tourne correctement :

# echo “INSERT INTO radcheck(UserName, Attribute, Value) VALUES (‟usercheck‟, ‟Password‟, ‟passcheck‟); “ | mysql –u radius –p radius
Enter password : mysqlsecret

On redémarre le service et on peut utliser la commande radtest:

# /etc/init.d/freeradius restart
# radtest usercheck passcheck 127.0.0.1 0 radiussecret

On doit normalement obtenir quelque chose comme ça :

Nous avons bien un « access-accept » en réponse.

  • Coova-chilli

Voici l‟étape qui nous intéresse le plus. Nous tenterons donc d’être le plus précis possible.

Retournons dans le répertoire root :

# cd /root
# wget http://ap.coova.org/chilli/coova-chilli_1.2.2_i386.deb

On va se servir de dpkg pour installer coova-chilli :

# dpkg –i coova-chilli_1.2.2_i386.deb

Pour pouvoir configurer le serveur apache (dans l’étape suivante), on va devoir mettre en place certains fichiers :

# cp /etc/chilli/defaults /etc/chilli/config
# mkdir /var/www/hotspot
# cd /var/www/hotspot
# cp /etc/chilli/www/* /var/www/hotspot
# mkdir /var/www/hotspot/images
# cp /var/www/hotspot/coova.jpg /var/www/hotspot/images/
# mkdir /var/www/hotspot/uam
# cd /var/www/hotspot/uam
# wget http://ap.coova.org/uam/
# wget http://ap.coova.org/js/chilli.js

Occupons-nous maintenant du fichier chilli.js. A l‟aide de la commande sed, nous allons remplacer facilement une chaine de caractère dans ce fichier.

# sed –i 's/ap.coova.org\/js\/chilli.js/10.0.2.1\/uam\/chilli.js/g' /var/www/hotspot/uam/index.html
# sed –i 's/192.168.182.1/10.0.2.1/g' /etc/chilli/www/ChilliLibrary.js
# sed –i 's/192.168.182.1/10.0.2.1/g' /var/www/hotspot/ChilliLibrary.js

La première commande va permettre de modifier index.html en remplaçant ap.coova.org/js/chilli.js par 10.0.2.1/uam/chilli.js.
Les deux autres commandes vont permettre de remplacer 192.168.182.1 par la bonne adresse IP (10.0.2.1) dans les différents fichiers.
Le s/ signifie substitution c’est-à-dire que la commande va changer toutes les occurrences de l‟expression régulière dans une nouvelle valeur.
Le /g signifie global, ce qui indique que toutes les occurrences dans chaque ligne doivent être remplacées.

On se rend ensuite dans le fichier chilli :

# nano /etc/default/chilli

Et on va mettre un 1 (à la place du 0) à la ligne « START_CHILLI », ce qui va permettre à chilli de démarrer sans reboot.

Nous pouvons démarrer coova-chilli :

# /etc/init.d/chilli start

Une fois le service lancé, on constate que l‟interface tun0-00 est apparue :

Nous pouvons maintenant nous occuper du fichier le plus important :

# nano /etc/chilli/config

Explication de ce fichier:

HS_WANIF=eth4 : Interface menant à Internet
HS_LANIF=eth5 : Interface reliée aux clients
HS_NETWORK=10.0.2.0 : L’adresse réseau du Hotspot
HS_NETMASK=255.255.255.0 : Le masque réseau du Hotspot
HS_UAMLISTEN=10.0.2.1 : L’adresse IP du Hotspot
HS_UAMPORT=3990 : C’est le port TCP qui est lié à l‟authentification des clients, si un client non   authentifié tente de se rendre sur internet, il sera redirigé sur ce port-là, à l‟adresse IP spécifiée plus haut.
HS_UAMUIPORT=4990 : Port permettant de contacter le portail captif
HS_DNS1=10.0.2.1 : L’adresse IP du DNS
HS_DNS2=10.0.2.1 : Puisqu’on utilise un seul DNS, on met le même ici
HS_NASID=nas01 : L’identifiant du serveur d‟accès réseau, par défaut nas0
HS_RADIUS=127.0.0.1 : On marque ici l‟adresse IP du serveur d‟authentification
HS_RADIUS2=127.0.0.1 : On réécrit la même chose
HS_UAMALLOW=10.0.2.0/24 : On reprend ici l’adresse réseau et le masque
HS_RADSECRET=radiussecret : On précise le mot de passe qu’on avait choisi précédemment
HS_UAMSECRET=uamsecret : Secret partagé en le serveur UAM et Chilli
HS_UAMALIASNAME=chilli : Alias pour les services UAM
HS_UAMSERVER=$HS_UAMLISTEN : URL du serveur WEB à utiliser pour authentifier les clients (ici 10.0.2.1)
HS_UAMFORMAT=http://\$HS_UAMLISTEN:\$HS_UAMUIPORT/www/login.chi : Définit l‟url du portail captif
HS_UAMHOMEPAGE=http://\$HS_UAMLISTEN:\$HS_UAMPORT/www/coova.html : L’url de la page d‟accueil pour les utilisateurs non authentifiés
HS_UAMSERVICE=https://10.0.2.1/cgi-bin/hotspotlogin.cgi : Permet d’aller rechercher chez un utilisateur ses informations de connexion et donc lui donner la possibilité de passer d’un AP à un autre sans avoir besoin d’avoir à se connecter au portail captif

HS_TCP_PORTS= »81″ : On ouvre un port, par exemple le 81 si on veut que les utilisateurs puissent s‟inscrire eux-mêmes
HS_LOC_NAME= »My Hotspot » : Permet de mettre un petit nom au Coova-Chilli

On rajoute ensuite le module haserl qui permettra d’exécuter des scripts dans une page web :

 # cd /usr/src
 # wget

http://downloads.sourceforge.net/project/haserl/haserldevel/

 0.9.26/haserl-0.9.26.tar.gz?use_mirror=ovh
 # tar xvf haserl-0.9.26.tar.gz
 # cd haserl-0.9.26
 # ./configure
 # make
 # make install

On modifie un fichier dans Coova-Chilli pour qu‟il sache où se trouve haserl :

# nano /etc/chilli/wwwsh

On remplace cette ligne : haserl=$(which haserl 2>/dev/null)
Par cette ligne-ci : haserl=/usr/local/bin/haserl (emplacement où se trouve haserl)

Et on va également modifier les règles de firewall (qui seront appliquées lorsqu‟un user se connectera avec succès à notre hotspot) :

# nano /etc/chilli/up.sh

On rajoute tout au bout de ce fichier :

[ -e “/var/run/chilli.iptables” ] && sh /var/run/chilli.iptables
iptables –A POSTROUTING –t nat –o $HS_WANIF –j MASQUERADE (cette commande permet d‟activer le NAT)
  • Apache

On place avant tout le fichier hotspotlogin.cgi au bon endroit.

# mkdir –p /var/www/hotspot/cgi-bin
# zcat –c /usr/share/doc/coova-chilli/hotspotlogin.cgi.gz | tee /var/www/hotspot/cgi-bin/hotspotlogin.cgi
# chmod a+x /var/www/hotspot/cgi-bin/hotspotlogin.cgi

On l‟édite :

# nano /var/www/hotspot/cgi-bin/hotspotlogin.cgi

On supprime/commente cette ligne :

$uamsecret=‟"ht2eb8ej6s4et3rg1ulp"

On installe le paquet suivant :

# apt-get install libapache2-mod-auth-mysql

On crée le dossier qui contiendra le certificat :

# mkdir /etc/apache2/ssl

(Il est préférable de vérifier le nom de la machine avant de créer le certificat : # hostname –f, ici debian)

On crée ensuite le certificat :

# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

Lorsqu’il est demandé le nom de la machine, on vient mettre ce qu‟on a obtenu via hostname.

On ajoute le module ssl à apache et on le restart :

# a2enmod ssl
# /etc/init.d/apache2 restart

On peut maintenant créer un nouveau site nommé hotspot :

# nano /etc/apache2/sites-available/hotspot

On le remplit par :

NameVirtualHost 10.0.2.1:443

<VirtualHost 10.0.2.1:443>
ServerAdmin webmaster@domain.org
DocumentRoot "/var/www/hotspot"
ServerName "10.0.2.1"

<Directory "/var/www/hotspot/">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /var/www/hotspot/cgi-bin/

<Directory "/var/www/hotspot/cgi-bin/">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/hotspot-error.log
LogLevel warn
CustomLog /var/log/apache2/hotspot-access.log combined
ServerSignature On
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
</VirtualHost>

On active ensuite ce nouveau site :

# a2ensite hotspot
# /etc/init.d/apache2 reload

On modifie ensuite le fichier ports.conf :

# nano /etc/apache2/ports.conf

Il ne doit contenir que ceci :

Listen *:443
Listen *:80
Listen *:81

Ensuite on ouvre ce fichier :

# nano /etc/apache2/sites-available/default

Et on y rajoute en première ligne :

NameVirtualHost *:80

On se rend sur le fichier apache2.conf :

# nano /etc/apache2/apache2.conf

Et on rajoute à la fin de ce fichier :

ServerName 10.0.2.1

On ouvre le fichier hosts :

# nano /etc/hosts

Et on rajoute à la suite des 2 premières lignes :

10.0.2.1 debian debian

(si la machine ne s’appelait pas debian, il suffirait de mettre le nom de la machine éventuellement suivi du domaine dans lequel elle est)

On redémarre le serveur apache et on peut éventuellement redémarrer la machine :

# /etc/init.d/apache2 restart
# reboot

Notre HotSpot est prêt à fonctionner. Nous pouvons déjà vérifier que coova-chilli fonctionne sans erreur en nous rendant dans le navigateur, on tape http://www.google.be. Nous devrions être redirigés automatiquement sur le page de coova.

Coova

  • Daloradius

  # cd /usr/src
  # wget http://downloads.sourceforge.net/project/daloradius/daloradius/dalor  adius-0.9-8.tar.gz?use_mirror=ovh
  # tar xvf daloradius-0.9-8.tar.gz
  # cp daloradius-0.9-8/ /var/www –R
  # chmod 644 /var/www/daloradius-0.9-8/library/daloradius.conf.php
  # mysql –u root –p radius </var/www/daloradius-0.9-
  8/contrib/db/mysql-daloradius.sql
  Enter password : mysqladminsecret

On configure daloradius :

 # nano /var/www/daloradius-0.9- 8/library/daloradius.conf.php

On modifie ce fichier (user=radius, pass=mysqlsecret,
database=radius), il doit alors ressembler à ça :

Daloradius Configuration de la base de données :

$configValues[‘CONFIG_DB_ENGINE’] = ‘mysql';
 Définit le type de base de données (mysql, mssql, oracle, postgresql)
$configValues[‘CONFIG_DB_HOST’] = ‘127.0.0.1’;
 Définit l‟ip du serveur sql (ici 127.0.0.1 puisque nous sommes sur le même serveur)
$configValues[‘CONFIG_DB_USER’] = ‘radius';
 Définit le login permettant de se connecter au serveur sql
$configValues[‘CONFIG_DB_PASS’] = ‘mysqlsecret';
 Définit le mot de passe permettant de se connecter au serveur sql
$configValues[‘CONFIG_DB_NAME’] = ‘radius';
 Définit le nom de la base de données
$configValues[‘CONFIG_PATH_DALO_VARIABLE_DATA’] = ‘/var/www/daloradius/var';
 Définit le chemin vers le dossier „var‟ de daloradius

$configValues[‘CONFIG_MAINT_TEST_USER_RADIUSSERVER’] = ‘127.0.0.1’;
 Définit l‟ip du serveur Radius (ici 127.0.01 puisque nous sommes sur le même serveur)
$configValues[‘CONFIG_MAINT_TEST_USER_RADIUSSECRET’] = ‘radiussecret';
 Définit le secret partagé par tous les clients radius

On rajoute également le paquet suivant :

# apt-get install php-pear  

# pear install DB

On configure ensuite apache afin d‟accéder à daloradius de manière conviviale : # nano /etc/apache2/httpd.conf

On y rajoute :

Alias /daloradius ‟‟/var/www/daloradius-0.9-8/‟‟
<Directory /var/www/daloradius-0.9-8/>
Options None
Order deny,allow
deny from all
allow from all
</Directory>

Il faut également restart apache2.

On peut maintenant accéder à daloradius via le lien : http://10.0.2.1/daloradius (le nom d‟utilisateur de base pour daloradius est « administrator » et le mot de passe est « radius »).

DaloDola 3

Et voilà qui est fait…

DFS et RFS

Distributed File System

1.   Introduction

DFS va permettre de fournir aux utilisateurs un moyen simple d’accéder à des données réparties et distribuées sur un réseau.  Un dossier partagé DFS va servir de point d’accès pour d’autres dossiers sur le réseau.

Il va organiser les ressources partagées (sur plusieurs ordinateurs) pour fournir une arborescence logique.

Il y a plusieurs avantages à l’utiliser :

      • Transparence vis-à-vis des utilisateurs
      • Equilibrage de charge (dans un domaine)
      • Tolérance de pannes (si un serveur tombe, on est redirigé vers un autre qui assure le service)

2.   Mise en pratique

Tout d’abord, il faudra faire un dcpromo car DFS nécessite d’être dans un environnement Active Directory correctement configuré.

Ensuite, on installe le rôle File Services et on coche Distributed File System.

On utilisera le nom de domaine pour accéder aux partages : 

On doit ensuite rentrer le login et le mot de passe d’un compte membre du groupe Administrateurs du domaine :

Il faut ensuite se rendre dans Server Manager et aller dans l’option File Services afin d’ajouter pour le chemin \\pixie.local\Pixie  un nouveau dossier.

On donne un nom à notre dossier (ici data) et on le lie à un dossier créé physiquement sur notre serveur (ici donnees) et qui est partagé.

On teste si on a bien accès à \\pixie.local\ : 

Remote File Sharing

1.   Introduction

RFS est basé sur un modèle client/serveur.  La réplication du dossier ciblé se fera sur la machine cliente.

Pour y arriver, il faudra installer DFS sur les 2 serveurs (sur le 2ème rien de spécial à faire, juste l’installer).

2.   Mise en pratique

On se rend dans Server Manager et dans File Services pour cliquer droit sur Replication.
On clique ensuite sur New Replication Group… :

On coche Multipurpose replication group (puisque l’on souhaite avoir une réplication de contenu entre 2 serveurs). 

                On donne un nom à notre groupe de réplication ainsi que le domaine ciblé. 

On sélectionne les 2 serveurs : PixServ2k8 et PixServ2

On choisit l’option Full mesh afin de répliquer pour chaque membre du groupe. C’est-à-dire que chaque membre répliquera aux autres les données. 

On décide de répliquer continuellement et on ne fixe pas de limite pour la bande passante. 

FTPS, Active Directory et …

Partie 0 : Brève explication

Avant d’entrer dans le vif du sujet, nous devrons tout d’abord intégrer notre machine (ici Debian 6.0.3) dans l’Active Directory afin que les utilisateurs de celui-ci puissent également accéder au FTPS qui sera mis en place.

Le domaine sera : test.local

Le contrôleur de domaine : ldap.test.local

Le contrôleur intègre un serveur DNS.

Partie 1 : Intégration AD

Nous partirons du principe que notre Active directory est déjà présent et qu’il tourne parfaitement sur notre machine Windows 2008 R2.

Les paquets à installer sont les suivants : libkrb53 krb5-config krb5-user samba winbind ntpdate ntp

Etant donné que nous utiliserons le protocole Kerberos, nous devons nous assurer d’avoir une parfaite synchronisation des horloges systèmes.

# ntpdate ldap.test.local

Passons maintenant au fichier /etc/krb5.conf (il ne faut rien mettre d’autre dans ce fichier):

[logging]
default = FILE:/var/log/krb5.log

[libdefaults]
ticket_lifetime = 24000
clock_skew = 300
dns_lookup_realm = false
dns_lookup_kdc = true

[realms]
TEST.LOCAL = {
kdc = ldap.test.local:88
admin_server = ldap.test.local
default_domain = TEST.LOCAL
}

[domain_realm]
.test.local = TEST.LOCAL
test.local = TEST.LOCAL

Nous allons ouvrir un ticket kerberos avec ce compte en tapant la commande :

# kinit Administrator@TEST.LOCAL

La console affiche ce message : Password for Administrator@TEST.LOCAL:
On entre alors le password et si la console nous rend la main sans message d’erreur on peut s’assurer du succès de l’ouverture du ticket en tapant:

 # klist

La console nous renvoie alors : Ticket cache: FILE:/tmp/krb5cc_0Default principal: Administrator@TEST.LOCAL avec la date de création et d’expiration.

Il faut maintenant se rendre dans le fichier de configuration de Samba.

Samba va permettre de faire communiquer une machine Windows et avec une machine Unix, Winbind permet de récupérer les utilisateurs et les groupes du  domaine Windows.

# nano /etc/samba/smb.conf

On y copie EXACTEMENT les lignes suivantes :

  [global]
  security = ads
  realm = TEST.LOCAL
  password server = 172.16.10.1
  # note that workgroup is the \'short\' domain name
  workgroup = test
  winbind separator = /
  idmap uid = 10000-20000
  idmap gid = 10000-20000
  winbind enum users = yes
  winbind enum groups = yes
  template homedir = /home/%D/%U
  template shell = /bin/bash
  client use spnego = yes
  client ntlmv2 auth = yes
  encrypt passwords = yes
  winbind use default domain = yes
  restrict anonymous = 2
  # to avoid the workstation from
  # trying to become a master browser
  # on your windows network add the
  # following lines
  domain master = no
  local master = no
  preferred master = no
  os level = 0

Maintenant que nous avons modifié le fichier, un redémarrage des différents services est nécessaire :

  # /etc/init.d/samba stop
  # /etc/init.d/winbind stop
  # /etc/init.d/samba start
  # /etc/init.d/winbind start

Il faut maintenant que nous configurions le système d’authentification.

    • Rendons nous dans le fichier /etc/nsswitch.conf et ajoutons les lignes suivantes :
  # nano /etc/nsswitch.conf
  # Example configuration of GNU Name Service Switch functionality.
  # If you have the `glibc-doc-reference' and `info' packages installed, try:
  # `info libc "Name Service Switch"' for information about this file.
  passwd:         compat winbind
  group:          compat winbind
  shadow:         compat
  hosts:          files dns
  networks:       files
  protocols:      db files
  services:       db files
  ethers:         db files
  rpc:            db files
  netgroup:       nis
  bootparams:     files
  automount:      files
  aliases:        mount
    • Dans le fichier /etc/pam.d/common-account, nous devons rajouter la ligne suivante :
account sufficient      pam_winbind.so

C’est-à-dire qu’au final, le fichier doit contenir ces 2 lignes :

account sufficient      pam_winbind.so
account sufficient      pam_unix.so
    • Modifions maintenant le fichier /etc/pam.d/common-auth :
auth sufficient pam_winbind.so krb5_auth krb5_ccache_type=FILE
auth sufficient pam_unix.so nullok_secure use_first_pass
auth required pam_deny.so
    • Dernier fichier à modifier, /etc/pam.d/common-session :
session required pam_unix.so
session required pam_mkhomedir.so umask=0022 skel=/etc/skel

Nous allons à présent modifier les fichiers /etc/hostname, /etc/hosts et /etc/resolv.conf. Commençons par le premier :

     # nano /etc/hostname

On ajoute dans ce fichier le nom de la machine suivi du suffixe :

ftps.test.local

Dans le fichier /etc/hosts, on rassemble l’ensemble des noms pouvant être utilisés pour identifier la machine :

127.0.0.1 localhost
127.0.0.1 ftps.test.local ftps
172.16.10.1 ldap.test.local ldap
172.16.10.42 ftps.test.local ftps

Dans /etc/resolv.conf :

nameserver 172.16.10.1

Nous allons à présent intégrer notre Debian au domaine, pour cela on utilise la commande suivante :

# net ads join -S LDAP.TEST.LOCAL -U Administrator

Le mot de passe nous est demandé, on le rentre. On obtient ceci en réponse : 

Using short domain name – TEST
Joined 'ftps to realm 'TEST.LOCAL’

On peut tester que nous avons bien rejoint le domaine :

# wbinfo –u (liste des utilisateurs du domaine)
# wbinfo –g (liste des groupes du domaine)
# getent passwd (renvoi l’ensemble des utilisateurs utilisables)
# getent group (renvoi l’ensemble des groupes utilisables)

Partie 2 : FTPS

Pour une question d’affinité, j’ai décidé de travailer avec vsftpd.

vsFTPd, forme raccourcie de Very Secure FTP Daemon, est un serveur FTP libre simple et sécurisé.

Il a été développé dans l’optique de la meilleure sécurité possible afin de combler les failles des serveurs FTP classiques. Il bénéficie de toutes les options habituelles des serveurs FTP classiques (proFTPd, Pure-FTPd,…) et prend en charge l’IPv6 ainsi que SSL.

Afin d’installer vsftpd, nous allons utiliser le célèbre apt-get install :

# apt-get install vsftpd

On se rend maintenant dans le fichier de configuration :

# nano /etc/vsftpd.conf

On supprime l’entièreté du fichier et on copie :

#### GENERAL CONFIGURATION ####
listen=YES
connect_from_port_20=YES
pam_service_name=vsftpd
#ftpd_banner=Bienvenue sur le serveur ftp.
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
use_localtime=YES
#dirlist_enable=NO
idle_session_timeout=600
data_connection_timeout=12

#### RIGHTS CONFIGURATION #####
local_enable=YES
write_enable=YES
anonymous_enable=NO
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/user_list
local_umask=077
#chown_uploads=YES
#chown_username=whoever
secure_chroot_dir=/var/run/vsftpd/empty
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ls_recurse_enable=YES
setproctitle_enable=YES

#### VIRTUAL USER CONFIGURATION #####
virtual_use_local_privs=YES
user_sub_token=$USER
local_root=/home/TEST/$USER
hide_ids=YES # SUPER IMPORTANT
#########

##### SECURE CONFIGURATION #####
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=YES
# require_ssl_reuse=NO # Certains clients FTP necessitent cette ligne
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
rsa_cert_file=/etc/ssl/private/vsftpd.cert.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key.pem
pasv_enable=YES
pasv_promiscuous=NO
pasv_min_port=40000
pasv_max_port=40100pasv_address=127.0.0.1
#ou domaine.com avec pasv_addr_resolve=YES
port_promiscuous=NO
#rsa_cert_file=/etc/ssl/private/vsftpd.pem
###########

Il faut maintenant sécuriser le protocole (car de base, il ne l’est pas). On va alors créer un certificat :

# apt-get install openssl
# openssl req -x509 -nodes -days 730 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem

Il nous est alors demandé de renseigner plusieurs champs, le plus important : Common Name (eg, YOUR name) []

On copie le fichier généré dans le répertoire /etc/ssl/certs/ :

# cp vsftpd.pem /etc/ssl/certs

On sécurise le certificat :

# chown root:root /etc/ssl/certs/vsftpd.pem
# chmod 600 /etc/ssl/certs/vsftpd.pem

Nous ajoutons les lignes suivantes dans notre fichier de configuration (déjà présente dans le fichier du dessus) :

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=YES
 
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES

On redémarre le service :

# /etc/init.d/vsftpd restart

Partie 3 : Répertoire personnel

Un problème se pose, pour que l’utilisateur de l’Active Directory ait un répertoire personnel créé automatique, il faut normalement se connecter avec celui-ci sur la Debian, nous ne pouvons procéder ainsi.

La solution trouvée est de créer un script qui va vérifier l’existence ou nom pour chaque utilisateur du domaine d’un répertoire personnel, si le répertoire n’existe pas il sera créé.

# nano script.sh

On rajoute :

#!/bin/sh
 for user in $( wbinfo -u );
 do
         if [ ! -d /home/TEST/$user ]
         then
                 /bin/mkdir /home/TEST/$user
                 /bin/chown -R $user:"domain users" /home/TEST/$user
         fi
 done
 /etc/init.d/winbind restart

On sauvegarde et on rend exécutable le script :

# chmod +x (777) script.sh

Maintenant, nous devons faire en sorte que ce script soit automatisé toutes les minutes :

# nano /etc/crontab

On y ajoute :

*/1 * * * * root   /root/script.sh

On redémarre le service avec un petit /etc/init.d/cron restart

Partie 4 : Bloquer SSH

Pour une question de sécurité, seul root sera autorisé à utiliser ssh. Nous allons rajouter une ligne dans le fichier /etc/ssh/sshd_config :

AllowUsers root

Partie 5 : Clé publique / Clé privée

Dans PuTTYGen, nous cliquons sur « Generate » puis on remue la souris dans l’encadré rouge afin de générer la clé.

On copie alors la clé publique et on la colle dans le fichier .ssh/authorized_key

# mkdir –p .ssh
# nano .ssh/authorized_keys

On clique ensuite sur “save private key”, nous répondons “oui” à la question « Are you sure you want to save this key without a passphrase to protect it ». On choisit alors un emplacement ou sauver la clé.

Dans PuTTY, on va dans “Connection” puis “Data”, on renseigne le champ « Auto-login username »

Dans « Connection » à « SSH » à « Auth », on clique sur « browse » et on va rechercher la clé privée.

Et pour une question de meilleure lisibilité, on peut se rendre dans « Window » puis « Translation » et choisir «UTF-8»

Pour terminer, on retourne dans « Session », on ajoute l’adresse IP (ou l’Host Name). On donne un nom à la session dans « Saved Sessions », on sauvegarde et on clique sur « Open ».

Partie 6: Client FTP

Le client FTP utilisé ici sera FileZilla. Quelques petites modifications sont à faire afin qu’il fonctionne correctement.

On clique sur « Ouvrir le gestionnaire des sites »

On crée un nouveau site et on y ajoute les champs suivants :

ftp 2ftp

L’identifiant et le mot de passe correspondent à un utilisateur de l’Active Directory.