Subversion Repositories ALCASAR

Rev

Rev 589 | Rev 597 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 589 Rev 595
1
#!/bin/sh
1
#!/bin/sh
2
#  $Id: alcasar.sh 589 2011-04-26 20:08:21Z richard $ 
2
#  $Id: alcasar.sh 595 2011-05-04 21:51:30Z richard $ 
3
 
3
 
4
# alcasar.sh
4
# alcasar.sh
5
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
5
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
6
# This script is distributed under the Gnu General Public License (GPL)
6
# This script is distributed under the Gnu General Public License (GPL)
7
 
7
 
8
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
8
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
9
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
9
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
10
 
10
 
11
# ALCASAR is based on a stripped Mandriva (LSB) with the following open source softwares :
11
# ALCASAR is based on a stripped Mandriva (LSB) with the following open source softwares :
12
# ALCASAR est architecturé autour d'une distribution Linux Mandriva minimaliste et les logiciels libres suivants :
12
# ALCASAR est architecturé autour d'une distribution Linux Mandriva minimaliste et les logiciels libres suivants :
13
# Coovachilli (a fork of chillispot), freeradius, mysql, apache, netfilter, squid, dansguardian, mondo, mindi, dialupadmin, awstat, ntpd, openssl, dnsmasq, havp, libclamav  and firewalleyes
13
# Coovachilli (a fork of chillispot), freeradius, mysql, apache, netfilter, squid, dansguardian, mondo, mindi, dialupadmin, awstat, ntpd, openssl, dnsmasq, havp, libclamav  and firewalleyes
14
 
14
 
15
# Options :
15
# Options :
16
#       -i or --install
16
#       -i or --install
17
#       -u or --uninstall
17
#       -u or --uninstall
18
 
18
 
19
# Functions :
19
# Functions :
20
#	testing		: Tests de connectivité et de téléchargement avant installation
20
#	testing		: Tests de connectivité et de téléchargement avant installation
21
#	init		: Installation des RPM et des scripts
21
#	init		: Installation des RPM et des scripts
22
#	network		: Paramètrage du réseau
22
#	network		: Paramètrage du réseau
23
#	gestion		: Installation de l'interface de gestion
23
#	gestion		: Installation de l'interface de gestion
24
#	AC		: Initialisation de l'autorité de certification. Création des certificats
24
#	AC		: Initialisation de l'autorité de certification. Création des certificats
25
#	init_db		: Création de la base 'radius' sur le serveur MySql
25
#	init_db		: Création de la base 'radius' sur le serveur MySql
26
#	param_radius	: Configuration du serveur d'authentification FreeRadius
26
#	param_radius	: Configuration du serveur d'authentification FreeRadius
27
#	param_web_radius: Configuration de l'interface de gestion de FreeRadius (dialupadmin)
27
#	param_web_radius: Configuration de l'interface de gestion de FreeRadius (dialupadmin)
28
#	param_chilli	: Configuration du daemon 'coova-chilli' et de la page d'authentification
28
#	param_chilli	: Configuration du daemon 'coova-chilli' et de la page d'authentification
29
#	param_squid	: Configuration du proxy squid en mode 'cache'
29
#	param_squid	: Configuration du proxy squid en mode 'cache'
30
#	param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
30
#	param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
31
#	antivirus	: Installation havp + libclamav
31
#	antivirus	: Installation havp + libclamav
32
#	firewall	: Mise en place des règles du parefeu et de l'interface WEB FirewallEyes
32
#	firewall	: Mise en place des règles du parefeu et de l'interface WEB FirewallEyes
33
#	param_awstats	: Configuration de l'interface des statistiques de consultation WEB
33
#	param_awstats	: Configuration de l'interface des statistiques de consultation WEB
34
#	dnsmasq		: Configuration du serveur de noms et du serveur dhcp de secours
34
#	dnsmasq		: Configuration du serveur de noms et du serveur dhcp de secours
35
#	BL		: Configuration de la BlackList
35
#	BL		: Configuration de la BlackList
36
#	cron		: Mise en place des exports de logs (+ chiffrement)
36
#	cron		: Mise en place des exports de logs (+ chiffrement)
37
#	post_install	: Finalisation environnement ( sécurité, bannières, rotation logs, ...)
37
#	post_install	: Finalisation environnement ( sécurité, bannières, rotation logs, ...)
38
 
38
 
39
VERSION=`cat VERSION`
39
VERSION=`cat VERSION`
40
DATE=`date '+%d %B %Y - %Hh%M'`
40
DATE=`date '+%d %B %Y - %Hh%M'`
41
DATE_SHORT=`date '+%d/%m/%Y'`
41
DATE_SHORT=`date '+%d/%m/%Y'`
-
 
42
Lang=`echo $LANG|cut -c 1-2`
42
# ******* Files parameters - paramètres fichiers *********
43
# ******* Files parameters - paramètres fichiers *********
43
DIR_INSTALL=`pwd`				# répertoire d'installation
44
DIR_INSTALL=`pwd`				# répertoire d'installation
44
DIR_CONF="$DIR_INSTALL/conf"			# répertoire d'installation contenant les fichiers de configuration
45
DIR_CONF="$DIR_INSTALL/conf"			# répertoire d'installation contenant les fichiers de configuration
45
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# répertoire d'installation contenant les scripts
46
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# répertoire d'installation contenant les scripts
46
DIR_SAVE="/var/Save"				# répertoire de sauvegarde (ISO, backup, etc.)
47
DIR_SAVE="/var/Save"				# répertoire de sauvegarde (ISO, backup, etc.)
47
DIR_WEB="/var/www/html"				# répertoire racine APACHE
48
DIR_WEB="/var/www/html"				# répertoire racine APACHE
48
DIR_ACC="$DIR_WEB/acc"				# répertoire du centre de gestion 'ALCASAR Control Center'
49
DIR_ACC="$DIR_WEB/acc"				# répertoire du centre de gestion 'ALCASAR Control Center'
49
DIR_DEST_BIN="/usr/local/bin"			# répertoire des scripts
50
DIR_DEST_BIN="/usr/local/bin"			# répertoire des scripts
50
DIR_DEST_SBIN="/usr/local/sbin"			# répertoire des scripts d'admin
51
DIR_DEST_SBIN="/usr/local/sbin"			# répertoire des scripts d'admin
51
DIR_DEST_ETC="/usr/local/etc"			# répertoire des fichiers de conf
52
DIR_DEST_ETC="/usr/local/etc"			# répertoire des fichiers de conf
52
FIC_PARAM="/root/ALCASAR-parameters.txt"	# fichier texte résumant les paramètres d'installation
53
FIC_PARAM="/root/ALCASAR-parameters.txt"	# fichier texte résumant les paramètres d'installation
53
FIC_PASSWD="/root/ALCASAR-passwords.txt"	# fichier texte contenant les mots de passe et secrets partagés 
54
FIC_PASSWD="/root/ALCASAR-passwords.txt"	# fichier texte contenant les mots de passe et secrets partagés 
54
# ******* DBMS parameters - paramètres SGBD ********
55
# ******* DBMS parameters - paramètres SGBD ********
55
DB_RADIUS="radius"				# nom de la base de données utilisée par le serveur FreeRadius
56
DB_RADIUS="radius"				# nom de la base de données utilisée par le serveur FreeRadius
56
DB_USER="radius"				# nom de l'utilisateur de la base de données
57
DB_USER="radius"				# nom de l'utilisateur de la base de données
57
# ******* Network parameters - paramètres réseau *******
58
# ******* Network parameters - paramètres réseau *******
58
HOSTNAME="alcasar"				# 
59
HOSTNAME="alcasar"				# 
59
DOMAIN="localdomain"				# domaine local
60
DOMAIN="localdomain"				# domaine local
60
EXTIF="eth0"					# ETH0 est l'interface connectée à Internet (Box FAI)
61
EXTIF="eth0"					# ETH0 est l'interface connectée à Internet (Box FAI)
61
INTIF="eth1"					# ETH1 est l'interface connectée au réseau local de consultation
62
INTIF="eth1"					# ETH1 est l'interface connectée au réseau local de consultation
62
CUSTOM_PRIVATE_NETWORK_MASK="192.168.182.0/24"	# adresse du réseau de consultation proposée par défaut
63
DEFAULT_PRIVATE_NETWORK_MASK="192.168.182.0/24"	# adresse du réseau de consultation proposée par défaut
63
SQUID_PORT="3128"				# Port d'écoute du proxy Squid
-
 
64
# ****** Paths - chemin des commandes *******
64
# ****** Paths - chemin des commandes *******
65
SED="/bin/sed -i"
65
SED="/bin/sed -i"
66
# ****************** End of global parameters *********************
66
# ****************** End of global parameters *********************
67
 
67
 
68
header_install ()
68
header_install ()
69
{
69
{
70
	clear
70
	clear
71
	echo "-----------------------------------------------------------------------------"
71
	echo "-----------------------------------------------------------------------------"
72
	echo "                     ALCASAR V$VERSION Installation"
72
	echo "                     ALCASAR V$VERSION Installation"
73
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
73
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
74
	echo "-----------------------------------------------------------------------------"
74
	echo "-----------------------------------------------------------------------------"
75
} # End of header_install ()
75
} # End of header_install ()
76
 
76
 
77
##################################################################
77
##################################################################
78
##			Fonction TESTING			##
78
##			Fonction TESTING			##
79
## - Test de la connectivité Internet				##
79
## - Test de la connectivité Internet				##
80
##################################################################
80
##################################################################
81
testing ()
81
testing ()
82
{
82
{
-
 
83
	if [ $Lang == "fr" ]
83
	echo "Tests des paramètres réseau."
84
		then echo -n "Tests des paramètres réseau :"
84
	echo -n "Network parameters tests : "
85
		else echo -n "Network parameters tests : "
-
 
86
	fi
85
# We test the Ethernet links state
87
# We test the Ethernet links state
86
	for i in $EXTIF $INTIF
88
	for i in $EXTIF $INTIF
87
	do
89
	do
88
		/sbin/ip link set $i up
90
		/sbin/ip link set $i up
89
		sleep 3
91
		sleep 3
90
		if [ "`/usr/sbin/ethtool $i|grep Link|cut -d' ' -f3`" != "yes" ]
92
		if [ "`/usr/sbin/ethtool $i|grep Link|cut -d' ' -f3`" != "yes" ]
91
			then
93
			then
-
 
94
			if [ $Lang == "fr" ]
-
 
95
			then 
92
			echo "Échec"
96
				echo "Échec"
93
			echo "Le lien réseau de la carte $i n'est pas actif."
97
				echo "Le lien réseau de la carte $i n'est pas actif."
94
			echo "Réglez ce problème puis relancez ce script."
98
				echo "Réglez ce problème puis relancez ce script."
-
 
99
			else
95
			echo "Failed"
100
				echo "Failed"
96
			echo "The link state of $i interface id down."
101
				echo "The link state of $i interface id down."
97
			echo "Resolv this problem, then restart this script."
102
				echo "Resolv this problem, then restart this script."
-
 
103
			fi
98
			exit 0
104
			exit 0
99
		fi
105
		fi
100
	echo -n "."
106
	echo -n "."
101
	done
107
	done
102
# On teste la présence d'un routeur par défaut (Box FAI)
108
# On teste la présence d'un routeur par défaut (Box FAI)
103
	if [ `/sbin/route -n|grep -c ^0.0.0.0` -ne "1" ] ; then
109
	if [ `/sbin/route -n|grep -c ^0.0.0.0` -ne "1" ] ; then
-
 
110
		if [ $Lang == "fr" ]
-
 
111
		then 
104
		echo "Échec"
112
			echo "Échec"
105
		echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
113
			echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
106
		echo "Réglez ce problème puis relancez ce script."
114
			echo "Réglez ce problème puis relancez ce script."
-
 
115
		else
107
		echo "Failed"
116
			echo "Failed"
108
		echo "You haven't configured Internet access or Internet link is on the wrong Ethernet card"
117
			echo "You haven't configured Internet access or Internet link is on the wrong Ethernet card"
109
		echo "Resolv this problem, then restart this script."
118
			echo "Resolv this problem, then restart this script."
-
 
119
		fi
110
		exit 0
120
		exit 0
111
	fi
121
	fi
112
	echo -n "."
122
	echo -n "."
113
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certaines version de BIOS et de VirtualBox)
123
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certaines version de BIOS et de VirtualBox)
114
	if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
124
	if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
-
 
125
		if [ $Lang == "fr" ]
115
		echo "La configuration des cartes réseau va être corrigée."
126
			then echo "La configuration des cartes réseau va être corrigée."
116
		echo "The Ethernet card configuration will be corrected."
127
			else echo "The Ethernet card configuration will be corrected."
-
 
128
		fi
117
		/etc/init.d/network stop
129
		/etc/init.d/network stop
118
		mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
130
		mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
119
		$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
131
		$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
120
		/etc/init.d/network start
132
		/etc/init.d/network start
121
		echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
133
		echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
122
		sleep 2
134
		sleep 2
-
 
135
		if [ $Lang == "fr" ]
123
		echo "Configuration corrigée"
136
			then echo "Configuration corrigée"
124
		echo "Configuration updated"
137
			else echo "Configuration updated"
-
 
138
		fi
125
		sleep 2
139
		sleep 2
-
 
140
		if [ $Lang == "fr" ]
126
		echo "Vous pouvez relancer ce script."
141
			then echo "Vous pouvez relancer ce script."
127
		echo "You can restart this script."
142
			else echo "You can restart this script."
-
 
143
		fi
128
		exit 0
144
		exit 0
129
	fi
145
	fi
130
	echo -n "."
146
	echo -n "."
131
# On test le lien vers le routeur par default
147
# On test le lien vers le routeur par default
132
	IP_GW=`ip route list|grep ^default|cut -d" " -f3`
148
	IP_GW=`ip route list|grep ^default|cut -d" " -f3`
133
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $IP_GW|grep response|cut -d" " -f2`
149
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $IP_GW|grep response|cut -d" " -f2`
134
	if [ $(expr $arp_reply) -eq 0 ]
150
	if [ $(expr $arp_reply) -eq 0 ]
135
	       	then
151
	       	then
-
 
152
		if [ $Lang == "fr" ]
-
 
153
		then 
136
		echo "Échec"
154
			echo "Échec"
137
		echo "Le routeur de site ou la Box Internet ($IP_GW) ne répond pas."
155
			echo "Le routeur de site ou la Box Internet ($IP_GW) ne répond pas."
138
		echo "Réglez ce problème puis relancez ce script."
156
			echo "Réglez ce problème puis relancez ce script."
-
 
157
		else
139
		echo "Failed"
158
			echo "Failed"
140
		echo "The Internet gateway doesn't answered"
159
			echo "The Internet gateway doesn't answered"
141
		echo "Resolv this problem, then restart this script."
160
			echo "Resolv this problem, then restart this script."
-
 
161
		fi
142
		exit 0
162
		exit 0
143
	fi
163
	fi
144
	echo -n "."
164
	echo -n "."
145
# On teste la connectivité Internet
165
# On teste la connectivité Internet
146
	rm -rf /tmp/con_ok.html
166
	rm -rf /tmp/con_ok.html
147
	/usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
167
	/usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
148
	if [ ! -e /tmp/con_ok.html ]
168
	if [ ! -e /tmp/con_ok.html ]
149
	then
169
	then
-
 
170
		if [ $Lang == "fr" ]
-
 
171
		then 
150
		echo "La tentative de connexion vers Internet a échoué (google.fr)."
172
			echo "La tentative de connexion vers Internet a échoué (google.fr)."
151
		echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
173
			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
152
		echo "Vérifiez la validité des adresses IP des DNS."
174
			echo "Vérifiez la validité des adresses IP des DNS."
-
 
175
		else
153
		echo "The Internet connection try failed (google.fr)."
176
			echo "The Internet connection try failed (google.fr)."
154
		echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
177
			echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
155
		echo "Verify the DNS IP addresses"
178
			echo "Verify the DNS IP addresses"
-
 
179
		fi
156
		exit 0
180
		exit 0
157
	fi
181
	fi
158
	rm -rf /tmp/con_ok.html
182
	rm -rf /tmp/con_ok.html
159
	echo ". : ok"
183
	echo ". : ok"
160
} # end of testing
184
} # end of testing
161
 
185
 
162
##################################################################
186
##################################################################
163
##			Fonction INIT				##
187
##			Fonction INIT				##
164
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
188
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
165
## - Installation et modification des scripts du portail	##
189
## - Installation et modification des scripts du portail	##
166
##################################################################
190
##################################################################
167
init ()
191
init ()
168
{
192
{
169
	if [ "$mode" != "update" ]
193
	if [ "$mode" != "update" ]
170
	then
194
	then
171
# On affecte le nom d'organisme
195
# On affecte le nom d'organisme
172
		ORGANISME=!
196
		ORGANISME=!
173
		PTN='^[a-zA-Z0-9-]*$'
197
		PTN='^[a-zA-Z0-9-]*$'
174
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
198
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
175
                do
199
                do
-
 
200
			if [ $Lang == "fr" ]
176
			echo "Entrez le nom de votre organisme : "
201
			       	then echo "Entrez le nom de votre organisme : "
177
			echo -n "Enter the name of your organisation : "
202
				else echo -n "Enter the name of your organisation : "
-
 
203
			fi
178
			read ORGANISME
204
			read ORGANISME
179
			if [ "$ORGANISME" = "" ]
205
			if [ "$ORGANISME" = "" ]
180
				then
206
				then
181
				ORGANISME=!
207
				ORGANISME=!
182
			fi
208
			fi
183
		done
209
		done
184
	fi
210
	fi
185
# On crée aléatoirement les mots de passe et les secrets partagés
211
# On crée aléatoirement les mots de passe et les secrets partagés
186
	rm -f $FIC_PASSWD
212
	rm -f $FIC_PASSWD
187
	grubpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de protection du menu Grub
213
	grubpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de protection du menu Grub
188
	echo -n "mot de passe de protection du menu de démarrage (GRUB) : " > $FIC_PASSWD
214
	echo -n "mot de passe de protection du menu de démarrage (GRUB) : " > $FIC_PASSWD
189
	echo "$grubpwd" >> $FIC_PASSWD
215
	echo "$grubpwd" >> $FIC_PASSWD
190
	md5_grubpwd=`/usr/bin/md5pass $grubpwd`
216
	md5_grubpwd=`/usr/bin/md5pass $grubpwd`
191
	$SED "/^password.*/d" /boot/grub/menu.lst
217
	$SED "/^password.*/d" /boot/grub/menu.lst
192
	$SED "1ipassword --md5 $md5_grubpwd" /boot/grub/menu.lst
218
	$SED "1ipassword --md5 $md5_grubpwd" /boot/grub/menu.lst
193
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'administrateur Mysqld
219
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'administrateur Mysqld
194
	echo -n "compte et mot de passe de l'administrateur Mysqld : " >> $FIC_PASSWD
220
	echo -n "compte et mot de passe de l'administrateur Mysqld : " >> $FIC_PASSWD
195
	echo "root / $mysqlpwd" >> $FIC_PASSWD
221
	echo "root / $mysqlpwd" >> $FIC_PASSWD
196
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'utilisateur Mysqld (utilisé par freeradius)
222
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'utilisateur Mysqld (utilisé par freeradius)
197
	echo -n "compte et mot de passe de l'utilisateur Mysqld : " >> $FIC_PASSWD
223
	echo -n "compte et mot de passe de l'utilisateur Mysqld : " >> $FIC_PASSWD
198
	echo "$DB_USER / $radiuspwd" >> $FIC_PASSWD
224
	echo "$DB_USER / $radiuspwd" >> $FIC_PASSWD
199
	secretuam=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre intercept.php et coova-chilli
225
	secretuam=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre intercept.php et coova-chilli
200
	echo -n "secret partagé entre le script 'intercept.php' et coova-chilli : " >> $FIC_PASSWD
226
	echo -n "secret partagé entre le script 'intercept.php' et coova-chilli : " >> $FIC_PASSWD
201
	echo "$secretuam" >> $FIC_PASSWD
227
	echo "$secretuam" >> $FIC_PASSWD
202
	secretradius=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre coova-chilli et FreeRadius
228
	secretradius=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre coova-chilli et FreeRadius
203
	echo -n "secret partagé entre coova-chilli et FreeRadius : " >> $FIC_PASSWD
229
	echo -n "secret partagé entre coova-chilli et FreeRadius : " >> $FIC_PASSWD
204
	echo "$secretradius" >> $FIC_PASSWD
230
	echo "$secretradius" >> $FIC_PASSWD
205
	chmod 640 $FIC_PASSWD
231
	chmod 640 $FIC_PASSWD
206
# On installe les scripts et fichiers de configuration d'ALCASAR 
232
# On installe les scripts et fichiers de configuration d'ALCASAR 
207
#  - dans /usr/local/bin :  alcasar-{CA.sh,conf.sh,import-clean.sh,iptables-bypass.sh,iptables.sh,log-clean.sh,log-export.sh,mondo.sh,watchdog.sh}
233
#  - dans /usr/local/bin :  alcasar-{CA.sh,conf.sh,import-clean.sh,iptables-bypass.sh,iptables.sh,log-clean.sh,log-export.sh,mondo.sh,watchdog.sh}
208
	cp -f $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown root:root $DIR_DEST_BIN/alcasar* ; chmod 740 $DIR_DEST_BIN/alcasar*
234
	cp -f $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown root:root $DIR_DEST_BIN/alcasar* ; chmod 740 $DIR_DEST_BIN/alcasar*
209
#  - dans /usr/local/sbin :  alcasar-{bl.sh,bypass.sh,dateLog.sh,havp.sh,logout.sh,mysql.sh,nf.sh,profil.sh,uninstall.sh,version-list.sh,load-balancing.sh}
235
#  - dans /usr/local/sbin :  alcasar-{bl.sh,bypass.sh,dateLog.sh,havp.sh,logout.sh,mysql.sh,nf.sh,profil.sh,uninstall.sh,version-list.sh,load-balancing.sh}
210
	cp -f $DIR_SCRIPTS/sbin/alcasar* $DIR_DEST_SBIN/. ; chown root:root $DIR_DEST_SBIN/alcasar* ; chmod 740 $DIR_DEST_SBIN/alcasar*
236
	cp -f $DIR_SCRIPTS/sbin/alcasar* $DIR_DEST_SBIN/. ; chown root:root $DIR_DEST_SBIN/alcasar* ; chmod 740 $DIR_DEST_SBIN/alcasar*
211
#  - des fichiers de conf dans /usr/local/etc : alcasar-{bl-categories-enabled,dns-name,ethers,iptables-local.sh,services}
237
#  - des fichiers de conf dans /usr/local/etc : alcasar-{bl-categories-enabled,dns-name,ethers,iptables-local.sh,services}
212
	cp -f $DIR_SCRIPTS/etc/alcasar* $DIR_DEST_ETC/. ; chown root:apache $DIR_DEST_ETC/alcasar* ; chmod 660 $DIR_DEST_ETC/alcasar*
238
	cp -f $DIR_SCRIPTS/etc/alcasar* $DIR_DEST_ETC/. ; chown root:apache $DIR_DEST_ETC/alcasar* ; chmod 660 $DIR_DEST_ETC/alcasar*
213
	$SED "s?^radiussecret.*?radiussecret=\"$secretradius\"?g" $DIR_DEST_SBIN/alcasar-logout.sh
239
	$SED "s?^radiussecret.*?radiussecret=\"$secretradius\"?g" $DIR_DEST_SBIN/alcasar-logout.sh
214
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh
240
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh
215
	$SED "s?^DB_USER=.*?DB_USER=\"$DB_USER\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
241
	$SED "s?^DB_USER=.*?DB_USER=\"$DB_USER\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
216
	$SED "s?^radiuspwd=.*?radiuspwd=\"$radiuspwd\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
242
	$SED "s?^radiuspwd=.*?radiuspwd=\"$radiuspwd\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
217
# On génère le début du fichier récapitulatif
243
# On génère le début du fichier récapitulatif
218
	cat <<EOF > $FIC_PARAM
244
	cat <<EOF > $FIC_PARAM
219
########################################################
245
################################################
220
##                                                    ##
246
##                                            ##
221
##   Fichier récapitulatif des paramètres d'ALCASAR   ##
247
##          ALCASAR Paramèters                ##
222
##                                                    ##
248
##                                            ##
223
########################################################
249
################################################
224
 
250
 
225
- Date d'installation : $DATE
251
- Install date : $DATE
226
- Version istallée : $VERSION
252
- Version : $VERSION
227
- Organisme : $ORGANISME
253
- Organism : $ORGANISME
228
EOF
254
EOF
229
	chmod o-rwx $FIC_PARAM
255
	chmod o-rwx $FIC_PARAM
230
} # End of init ()
256
} # End of init ()
231
 
257
 
232
##################################################################
258
##################################################################
233
##			Fonction network			##
259
##			Fonction network			##
234
## - Définition du plan d'adressage du réseau de consultation	##
260
## - Définition du plan d'adressage du réseau de consultation	##
235
##  (merci à Alexandre Trias pour le calcul de masque et RegEx) ##
-
 
236
## - Nommage DNS du système (portail + nom d'organisme)		##
261
## - Nommage DNS du système 					##
237
## - Configuration de l'interface eth1 (réseau de consultation)	##
262
## - Configuration de l'interface eth1 (réseau de consultation)	##
238
## - Modification du fichier /etc/hosts				##
263
## - Modification du fichier /etc/hosts				##
239
## - Configuration du serveur de temps (NTP)			##
264
## - Configuration du serveur de temps (NTP)			##
240
## - Renseignement des fichiers hosts.allow et hosts.deny	##
265
## - Renseignement des fichiers hosts.allow et hosts.deny	##
241
##################################################################
266
##################################################################
242
network ()
267
network ()
243
{
268
{
244
	header_install
269
	header_install
-
 
270
	if [ $Lang == "fr" ]
245
	echo "Par défaut, le plan d'adressage du réseau de consultation est : $CUSTOM_PRIVATE_NETWORK_MASK"
271
		then echo "Par défaut, le plan d'adressage IP du réseau de consultation est : $DEFAULT_PRIVATE_NETWORK_MASK"
-
 
272
		else echo "The default consultation network IP address is : $DEFAULT_PRIVATE_NETWORK_MASK"
-
 
273
	fi
246
	response=0
274
	response=0
247
	PTN='^[oOnN]$'
275
	PTN='^[oOyYnN]$'
248
	until [[ $(expr $response : $PTN) -gt 0 ]]
276
	until [[ $(expr $response : $PTN) -gt 0 ]]
249
		do
277
		do
-
 
278
			if [ $Lang == "fr" ]
250
			echo -n "Voulez-vous utiliser ce plan d'adressage (recommandé) (O/n)? : "
279
				then echo -n "Voulez-vous utiliser ce plan d'adressage (recommandé) (O/n)? : "
-
 
280
				else echo -n "Do you want to use it (recommanded) (Y/n)? : "
-
 
281
			fi
251
			read response
282
			read response
252
		done
283
		done
253
	if [ "$response" = "n" ] || [ "$response" = "N" ]
284
	if [ "$response" = "n" ] || [ "$response" = "N" ]
254
	then
285
	then
255
		CUSTOM_PRIVATE_NETWORK_MASK="0"
286
		PRIVATE_NETWORK_MASK="0"
256
		PTN='^\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\)/[012]\?[[:digit:]]$'
287
		PTN='^\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\)/[012]\?[[:digit:]]$'
257
		until [[ $(expr $CUSTOM_PRIVATE_NETWORK_MASK : $PTN) -gt 0 ]]
288
		until [[ $(expr $PRIVATE_NETWORK_MASK : $PTN) -gt 0 ]]
258
			do
289
			do
-
 
290
				if [ $Lang == "fr" ]
259
				echo -n "Entrez un plan d'adressage au format CIDR (a.b.c.d/xx) : "
291
					then echo -n "Entrez un plan d'adressage IP au format CIDR (a.b.c.d/xx) : "
-
 
292
					else echo -n "Enter a network IP address in CIDR format (a.b.c.d/xx) : "
-
 
293
				fi
260
				read CUSTOM_PRIVATE_NETWORK_MASK
294
				read PRIVATE_NETWORK_MASK
261
 
295
 
262
			done
296
			done
-
 
297
	else
-
 
298
       		PRIVATE_NETWORK_MASK=$DEFAULT_PRIVATE_NETWORK_MASK
263
	fi
299
	fi
264
# Récupération de la config réseau côté "LAN de consultation"
300
# Définition de la config réseau côté "LAN de consultation"
265
	hostname $HOSTNAME
301
	hostname $HOSTNAME
266
	echo "- Nom du système : $HOSTNAME" >> $FIC_PARAM
302
	echo "- Hostname : $HOSTNAME" >> $FIC_PARAM
267
	PRIVATE_NETWORK=`/bin/ipcalc -n $CUSTOM_PRIVATE_NETWORK_MASK | cut -d"=" -f2`		# @ réseau de consultation (ex.: 192.168.182.0)
303
	PRIVATE_NETWORK=`/bin/ipcalc -n $DEFAULT_PRIVATE_NETWORK_MASK | cut -d"=" -f2`	# @ réseau de consultation (ex.: 192.168.182.0)
268
	private_prefix=`/bin/ipcalc -p $CUSTOM_PRIVATE_NETWORK_MASK |cut -d"=" -f2`		# prefixe du réseau (ex. 24)
304
	PRIVATE_PREFIX=`/bin/ipcalc -p $DEFAULT_PRIVATE_NETWORK_MASK |cut -d"=" -f2`	# prefixe du réseau (ex. 24)
269
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$private_prefix					# @ réseau + masque (x.0.0.0/8 ou x.y.0.0/16 ou x.y.z.0/24)
305
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$PRIVATE_PREFIX				# @ réseau + masque (x.0.0.0/8 ou x.y.0.0/16 ou x.y.z.0/24)
270
	classe=$((private_prefix/8));								# classe de réseau (ex.: 2=classe B, 3=classe C)
306
	classe=$((PRIVATE_PREFIX/8));							# classe de réseau (ex.: 2=classe B, 3=classe C)
271
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.			# @ compatible hosts.allow et hosts.deny (ex.: 192.168.182.)
-
 
272
	PRIVATE_MASK=`/bin/ipcalc -m $PRIVATE_NETWORK_MASK | cut -d"=" -f2`			# masque réseau de consultation (ex.: 255.255.255.0)
-
 
273
	PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2`		# @ broadcast réseau de consultation (ex.: 192.168.182.255)
-
 
274
	TMP_MASK=`echo $PRIVATE_NETWORK_MASK|cut -d"/" -f2`; HALF_MASK=`expr $TMP_MASK + 1`	# masque du 1/2 réseau de consultation (ex.: 25)
-
 
275
	PRIVATE_STAT_IP=$PRIVATE_NETWORK/$HALF_MASK						# plage des adresses statiques (ex.: 192.168.182.0/25)
-
 
276
	PRIVATE_STAT_MASK=`/bin/ipcalc -m $PRIVATE_STAT_IP/$HALF_MASK | cut -d"=" -f2`		# masque des adresses statiques (ex.: 255.255.255.128)
-
 
277
	classe_sup=`expr $classe + 1`
307
	classe_sup=`expr $classe + 1`
278
	classe_sup_sup=`expr $classe + 2`
-
 
279
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup`
308
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup`
280
	private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f$classe_sup`
-
 
281
	private_plage=`expr $private_broadcast_ending - $private_network_ending + 1`
-
 
282
	private_half_plage=`expr $private_plage / 2`
-
 
283
	private_dyn=`expr $private_half_plage + $private_network_ending`
-
 
284
	private_dyn_ip_network=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`"."$private_dyn"."`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup_sup-5`
-
 
285
	PRIVATE_DYN_IP=`echo $private_dyn_ip_network | cut -d"." -f1-4`/$HALF_MASK		# plage des adresses dynamiques (ex.: 192.168.182.128/25)
309
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.		# @ compatible hosts.allow et hosts.deny (ex.: 192.168.182.)
286
	PRIVATE_DYN_MASK=`/bin/ipcalc -m $PRIVATE_DYN_IP/$HALF_MASK | cut -d"=" -f2`		# masque des adresses dynamiques (ex.: 255.255.255.128)
310
	PRIVATE_MASK=`/bin/ipcalc -m $PRIVATE_NETWORK_MASK | cut -d"=" -f2`		# masque réseau de consultation (ex.: 255.255.255.0)
287
	private_dyn_ip_network=`echo $PRIVATE_DYN_IP | cut -d"/" -f1`				# plage des adresses dynamiques sans le masque (ex.: 192.168.182.0)
311
	PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2`	# @ broadcast réseau de consultation (ex.: 192.168.182.255)
288
	private_dyn_ip_end=`echo $private_dyn_ip_network | cut -d"." -f4`			# dernier octet de la plage des adresses dynamiques (ex.: 128)
-
 
289
	PRIVATE_DYN_FIRST_IP=`echo $private_dyn_ip_network | cut -d"." -f1-3`"."`expr $private_dyn_ip_end + 1`	# 1ère adresse de la plage dynamique (ex.: 192.168.182.129)
312
	PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`	# @ip du portail (côté réseau de consultation)
290
	private_broadcast_end=`echo $PRIVATE_BROADCAST | cut -d"." -f4`
-
 
291
	PRIVATE_DYN_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_end - 1`	# dernière adresse de la plage dynamique (ex.: 192.168.182.254)
313
	PRIVATE_DYN_FIRST_IP=`echo $PRIVATE_IP | cut -d"." -f1-3`"."`expr $private_network_ending + 1`	# @ip du portail (côté réseau de consultation)
292
	PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_end + 1`	# @ip du portail (côté réseau de consultation)
314
	PRIVATE_DYN_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_network_ending - 1`	# @ip du portail (côté réseau de consultation)
293
# Récupération de la config réseau côté "Internet"
315
# Récupération de la config réseau côté "Internet"
294
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
316
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
295
	EXT_IP=`grep IPADDR /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip du portail (côté Internet)
317
	EXT_IP=`grep IPADDR /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip du portail (côté Internet)
296
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
318
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
297
	DNS1=`grep DNS1 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 1er DNS
319
	DNS1=`grep DNS1 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 1er DNS
298
	DNS2=`grep DNS2 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 2ème DNS
320
	DNS2=`grep DNS2 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 2ème DNS
299
	DNS1=${DNS1:=208.67.220.220}
321
	DNS1=${DNS1:=208.67.220.220}
300
	DNS2=${DNS2:=208.67.222.222}
322
	DNS2=${DNS2:=208.67.222.222}
301
	EXT_NETMASK=`grep NETMASK /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
323
	EXT_NETMASK=`grep NETMASK /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
302
	EXT_GATEWAY=`grep GATEWAY /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
324
	EXT_GATEWAY=`grep GATEWAY /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
303
	echo "- Adresse IP 'côté Internet' ($EXTIF) : $EXT_IP / $EXT_NETMASK" >> $FIC_PARAM
325
	echo "- IP address 'Internet side' ($EXTIF) : $EXT_IP / $EXT_NETMASK" >> $FIC_PARAM
-
 
326
	echo "- Gateway : $EXT_GATEWAY" >> $FIC_PARAM
304
	echo "- Serveurs DNS renseignés : $DNS1 et $DNS2" >> $FIC_PARAM
327
	echo "- DNS servers : $DNS1 et $DNS2" >> $FIC_PARAM
305
	echo "- Routeur de sortie : $EXT_GATEWAY" >> $FIC_PARAM
328
	echo "- IP address 'LAN side' ($INTIF) : $PRIVATE_IP/$PRIVATE_PREFIX" >> $FIC_PARAM
-
 
329
	echo "- Dynamic IP addresses (DHCP) : from $PRIVATE_DYN_FIRST_IP to $PRIVATE_DYN_LAST_IP" >> $FIC_PARAM
-
 
330
	echo "PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK_MASK" > $DIR_DEST_ETC/alcasar-network 
-
 
331
	echo "PRIVATE_IP=$PRIVATE_IP" >> $DIR_DEST_ETC/alcasar-network 
-
 
332
	echo "DHCP=on" >> $DIR_DEST_ETC/alcasar-network 
306
# Configuration réseau
333
# Configuration réseau
307
	cat <<EOF > /etc/sysconfig/network
334
	cat <<EOF > /etc/sysconfig/network
308
NETWORKING=yes
335
NETWORKING=yes
309
HOSTNAME="$HOSTNAME"
336
HOSTNAME="$HOSTNAME"
310
FORWARD_IPV4=true
337
FORWARD_IPV4=true
311
EOF
338
EOF
312
# Modif /etc/hosts
339
# Modif /etc/hosts
313
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
340
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
314
	cat <<EOF > /etc/hosts
341
	cat <<EOF > /etc/hosts
315
127.0.0.1	localhost
342
127.0.0.1	localhost
316
$PRIVATE_IP	$HOSTNAME 
343
$PRIVATE_IP	$HOSTNAME 
317
EOF
344
EOF
318
	echo "- Adresse IP 'côté réseau de consultation' ($INTIF) : $PRIVATE_IP / $PRIVATE_NETWORK_MASK" >> $FIC_PARAM
-
 
319
	echo "    - plage d'adresses statiques : $PRIVATE_STAT_IP" >> $FIC_PARAM
-
 
320
	echo "    - plage d'adresses dynamiques (via DHCP) : $PRIVATE_DYN_IP" >> $FIC_PARAM
-
 
321
# Configuration de l'interface eth0 (Internet)
345
# Configuration de l'interface eth0 (Internet)
322
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
346
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
323
DEVICE=$EXTIF
347
DEVICE=$EXTIF
324
BOOTPROTO=static
348
BOOTPROTO=static
325
IPADDR=$EXT_IP
349
IPADDR=$EXT_IP
326
NETMASK=$EXT_NETMASK
350
NETMASK=$EXT_NETMASK
327
GATEWAY=$EXT_GATEWAY
351
GATEWAY=$EXT_GATEWAY
328
DNS1=127.0.0.1
352
DNS1=127.0.0.1
329
ONBOOT=yes
353
ONBOOT=yes
330
METRIC=10
354
METRIC=10
331
NOZEROCONF=yes
355
NOZEROCONF=yes
332
MII_NOT_SUPPORTED=yes
356
MII_NOT_SUPPORTED=yes
333
IPV6INIT=no
357
IPV6INIT=no
334
IPV6TO4INIT=no
358
IPV6TO4INIT=no
335
ACCOUNTING=no
359
ACCOUNTING=no
336
USERCTL=no
360
USERCTL=no
337
EOF
361
EOF
338
# Configuration de l'interface eth1 (réseau de consultation)
362
# Configuration de l'interface eth1 (réseau de consultation)
339
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
363
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
340
DEVICE=$INTIF
364
DEVICE=$INTIF
341
BOOTPROTO=static
365
BOOTPROTO=static
342
IPADDR=$PRIVATE_IP
366
IPADDR=$PRIVATE_IP
343
NETMASK=$PRIVATE_MASK
367
NETMASK=$PRIVATE_MASK
344
ONBOOT=yes
368
ONBOOT=yes
345
METRIC=10
369
METRIC=10
346
NOZEROCONF=yes
370
NOZEROCONF=yes
347
MII_NOT_SUPPORTED=yes
371
MII_NOT_SUPPORTED=yes
348
IPV6INIT=no
372
IPV6INIT=no
349
IPV6TO4INIT=no
373
IPV6TO4INIT=no
350
ACCOUNTING=no
374
ACCOUNTING=no
351
USERCTL=no
375
USERCTL=no
352
EOF
376
EOF
353
# Mise à l'heure du serveur
377
# Mise à l'heure du serveur
354
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
378
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
355
	cat <<EOF > /etc/ntp/step-tickers
379
	cat <<EOF > /etc/ntp/step-tickers
356
0.fr.pool.ntp.org	# adapt to your country
380
0.fr.pool.ntp.org	# adapt to your country
357
1.fr.pool.ntp.org
381
1.fr.pool.ntp.org
358
2.fr.pool.ntp.org
382
2.fr.pool.ntp.org
359
EOF
383
EOF
360
# Configuration du serveur de temps (sur lui même)
384
# Configuration du serveur de temps (sur lui même)
361
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
385
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
362
	cat <<EOF > /etc/ntp.conf
386
	cat <<EOF > /etc/ntp.conf
363
server 0.fr.pool.ntp.org	# adapt to your country
387
server 0.fr.pool.ntp.org	# adapt to your country
364
server 1.fr.pool.ntp.org
388
server 1.fr.pool.ntp.org
365
server 2.fr.pool.ntp.org
389
server 2.fr.pool.ntp.org
366
server 127.127.1.0   		# local clock si NTP internet indisponible ...
390
server 127.127.1.0   		# local clock si NTP internet indisponible ...
367
fudge 127.127.1.0 stratum 10
391
fudge 127.127.1.0 stratum 10
368
restrict $PRIVATE_NETWORK mask $PRIVATE_MASK nomodify notrap
392
restrict $PRIVATE_NETWORK mask $PRIVATE_MASK nomodify notrap
369
restrict 127.0.0.1
393
restrict 127.0.0.1
370
driftfile /var/lib/ntp/drift
394
driftfile /var/lib/ntp/drift
371
logfile /var/log/ntp.log
395
logfile /var/log/ntp.log
372
EOF
396
EOF
373
 
397
 
374
	chown -R ntp:ntp /var/lib/ntp
398
	chown -R ntp:ntp /var/lib/ntp
375
# Renseignement des fichiers hosts.allow et hosts.deny
399
# Renseignement des fichiers hosts.allow et hosts.deny
376
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
400
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
377
	cat <<EOF > /etc/hosts.allow
401
	cat <<EOF > /etc/hosts.allow
378
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
402
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
379
sshd: $PRIVATE_NETWORK_SHORT
403
sshd: $PRIVATE_NETWORK_SHORT
380
ntpd: $PRIVATE_NETWORK_SHORT
404
ntpd: $PRIVATE_NETWORK_SHORT
381
EOF
405
EOF
382
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
406
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
383
	cat <<EOF > /etc/hosts.deny
407
	cat <<EOF > /etc/hosts.deny
384
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
408
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
385
EOF
409
EOF
386
} # End of network ()
410
} # End of network ()
387
 
411
 
388
##################################################################
412
##################################################################
389
##			Fonction gestion			##
413
##			Fonction gestion			##
390
## - installation du centre de gestion				##
414
## - installation du centre de gestion				##
391
## - configuration du serveur web (Apache)			##
415
## - configuration du serveur web (Apache)			##
392
## - définition du 1er comptes de gestion 			##
416
## - définition du 1er comptes de gestion 			##
393
## - sécurisation des accès					##
417
## - sécurisation des accès					##
394
##################################################################
418
##################################################################
395
gestion()
419
gestion()
396
{
420
{
397
# Suppression des CGI et des pages WEB installés par défaut
421
# Suppression des CGI et des pages WEB installés par défaut
398
	rm -rf /var/www/cgi-bin/*
422
	rm -rf /var/www/cgi-bin/*
399
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
423
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
400
	mkdir $DIR_WEB
424
	mkdir $DIR_WEB
401
# Copie et configuration des fichiers du centre de gestion
425
# Copie et configuration des fichiers du centre de gestion
402
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
426
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
403
	echo "$VERSION du $DATE" > $DIR_WEB/VERSION
427
	echo "$VERSION du $DATE" > $DIR_WEB/VERSION
404
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
428
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
405
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
429
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
406
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
430
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
407
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
431
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
408
	$SED "s?^\$private_ip =.*?\$private_ip = \"$PRIVATE_IP\";?g" $DIR_WEB/index.php
432
	$SED "s?^\$private_ip =.*?\$private_ip = \"$PRIVATE_IP\";?g" $DIR_WEB/index.php
409
	$SED "s?\$hostname =.*?\$hostname = \"$HOSTNAME\";?g" $DIR_WEB/index.php
433
	$SED "s?\$hostname =.*?\$hostname = \"$HOSTNAME\";?g" $DIR_WEB/index.php
410
	chmod 640 $DIR_ACC/phpsysinfo/includes/xml/portail.php
434
	chmod 640 $DIR_ACC/phpsysinfo/includes/xml/portail.php
411
	chown -R apache:apache $DIR_WEB/*
435
	chown -R apache:apache $DIR_WEB/*
412
	for i in ISO base logs/firewall logs/httpd logs/squid ;
436
	for i in ISO base logs/firewall logs/httpd logs/squid ;
413
	do
437
	do
414
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
438
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
415
	done
439
	done
416
	chown -R root:apache $DIR_SAVE
440
	chown -R root:apache $DIR_SAVE
417
# Configuration et sécurisation php
441
# Configuration et sécurisation php
418
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
442
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
419
	timezone=`cat /etc/sysconfig/clock|grep ZONE|cut -d"=" -f2`
443
	timezone=`cat /etc/sysconfig/clock|grep ZONE|cut -d"=" -f2`
420
	$SED "s?^;date.timezone =.*?date.timezone = $timezone?g" /etc/php.ini
444
	$SED "s?^;date.timezone =.*?date.timezone = $timezone?g" /etc/php.ini
421
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
445
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
422
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
446
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
423
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
447
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
424
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
448
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
425
# Configuration et sécurisation Apache
449
# Configuration et sécurisation Apache
426
	[ -e /etc/httpd/conf/httpd.conf.default ] || cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
450
	[ -e /etc/httpd/conf/httpd.conf.default ] || cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
427
	$SED "s?^#ServerName.*?ServerName $HOSTNAME?g" /etc/httpd/conf/httpd.conf
451
	$SED "s?^#ServerName.*?ServerName $HOSTNAME?g" /etc/httpd/conf/httpd.conf
428
	$SED "s?^Listen.*?Listen $PRIVATE_IP:80?g" /etc/httpd/conf/httpd.conf
452
	$SED "s?^Listen.*?Listen $PRIVATE_IP:80?g" /etc/httpd/conf/httpd.conf
429
	$SED "s?^ServerTokens.*?ServerTokens Prod?g" /etc/httpd/conf/httpd.conf
453
	$SED "s?^ServerTokens.*?ServerTokens Prod?g" /etc/httpd/conf/httpd.conf
430
	$SED "s?^ServerSignature.*?ServerSignature Off?g" /etc/httpd/conf/httpd.conf
454
	$SED "s?^ServerSignature.*?ServerSignature Off?g" /etc/httpd/conf/httpd.conf
431
	$SED "s?^#ErrorDocument 404 /missing.html.*?ErrorDocument 404 /index.html?g" /etc/httpd/conf/httpd.conf
455
	$SED "s?^#ErrorDocument 404 /missing.html.*?ErrorDocument 404 /index.html?g" /etc/httpd/conf/httpd.conf
432
	FIC_MOD_SSL=`find /etc/httpd/modules.d/ -type f -name *mod_ssl.conf`
456
	FIC_MOD_SSL=`find /etc/httpd/modules.d/ -type f -name *mod_ssl.conf`
433
	$SED "s?^Listen.*?Listen $PRIVATE_IP:443?g" $FIC_MOD_SSL # On écoute en SSL que sur INTIF
457
	$SED "s?^Listen.*?Listen $PRIVATE_IP:443?g" $FIC_MOD_SSL # On écoute en SSL que sur INTIF
434
	$SED "s?background-color.*?background-color: #EFEFEF; }?g" /var/www/error/include/top.html
458
	$SED "s?background-color.*?background-color: #EFEFEF; }?g" /var/www/error/include/top.html
435
	[ -e /var/www/error/include/bottom.html.default ] || mv /var/www/error/include/bottom.html /var/www/error/include/bottom.html.default
459
	[ -e /var/www/error/include/bottom.html.default ] || mv /var/www/error/include/bottom.html /var/www/error/include/bottom.html.default
436
	cat <<EOF > /var/www/error/include/bottom.html
460
	cat <<EOF > /var/www/error/include/bottom.html
437
</body>
461
</body>
438
</html>
462
</html>
439
EOF
463
EOF
440
	echo "- URL d'accès au centre de gestion : http://$HOSTNAME" >> $FIC_PARAM
464
	echo "- ALCASAR Control Center URL : http://$HOSTNAME" >> $FIC_PARAM
441
# Définition du premier compte lié au profil 'admin'
465
# Définition du premier compte lié au profil 'admin'
442
	header_install
466
	header_install
443
	if [ "$mode" = "install" ]
467
	if [ "$mode" = "install" ]
444
	then
468
	then
445
		header_install
469
		header_install
-
 
470
		if [ $Lang == "fr" ]
-
 
471
		then 
446
		echo "Pour administrer Alcasar via le centre de gestion WEB, trois profils de comptes ont été définis :"
472
			echo "Pour administrer Alcasar via le centre de gestion WEB, trois profils de comptes ont été définis :"
447
		echo " - le profil 'admin' capable de réaliser toutes les opérations"
473
			echo " - le profil 'admin' capable de réaliser toutes les opérations"
448
		echo " - le profil 'backup' lié uniquement aux fonctions d'archivage"
474
			echo " - le profil 'backup' lié uniquement aux fonctions d'archivage"
449
		echo " - le profil 'manager' lié uniquement aux fonctions de gestion des usagers"
475
			echo " - le profil 'manager' lié uniquement aux fonctions de gestion des usagers"
450
		echo ""
476
			echo ""
451
		echo "Définissez le premier compte du profil 'admin' :"
477
			echo "Définissez le premier compte du profil 'admin' :"
452
		echo
478
			echo
453
		echo -n "Nom : "
479
			echo -n "Nom : "
-
 
480
		else
-
 
481
			echo "To manage Alcasar thru the WEB control center, three accounts profiles were defined :"
-
 
482
			echo " - the 'admin profile who can do all operations"
-
 
483
			echo " - the 'backup' profile link to backup functions"
-
 
484
			echo " - the 'manager' profile link to users management"
-
 
485
			echo ""
-
 
486
			echo "Define the first account of the 'admin' profile :"
-
 
487
			echo
-
 
488
			echo -n "Account : "
-
 
489
		fi
454
		read admin_portail
490
		read admin_portail
455
		echo "- Nom du premier compte lié au profil 'admin' : $admin_portail" >> $FIC_PARAM
491
		echo "- Name of the first account of the admin profile : $admin_portail" >> $FIC_PARAM
456
# Création du fichier de clés de ce compte dans le profil "admin"
492
# Création du fichier de clés de ce compte dans le profil "admin"
457
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
493
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
458
		mkdir -p $DIR_DEST_ETC/digest
494
		mkdir -p $DIR_DEST_ETC/digest
459
		chmod 755 $DIR_DEST_ETC/digest
495
		chmod 755 $DIR_DEST_ETC/digest
460
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
496
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
461
			do
497
			do
462
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portail
498
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portail
463
			done
499
			done
464
		$DIR_DEST_SBIN/alcasar-profil.sh --list
500
		$DIR_DEST_SBIN/alcasar-profil.sh --list
465
	else   # version < 2.1
501
	else   # mise à jour des versions < 2.1
466
		if ([ $MAJ_RUNNING_VERSION -lt 2 ] || ([ $MAJ_RUNNING_VERSION -eq 2 ] && [ $MIN_RUNNING_VERSION -lt 1 ]))
502
		if ([ $MAJ_RUNNING_VERSION -lt 2 ] || ([ $MAJ_RUNNING_VERSION -eq 2 ] && [ $MIN_RUNNING_VERSION -lt 1 ]))
467
			then
503
			then
468
			echo "Cette mise à jour nécessite de redéfinir le premier compte d'administration du portail"
504
			echo "Cette mise à jour nécessite de redéfinir le premier compte d'administration du portail"
469
			echo
505
			echo
470
			echo -n "Nom : "
506
			echo -n "Nom : "
471
			read admin_portail
507
			read admin_portail
472
			echo "- Nom du premier compte lié au profil 'admin' : $admin_portail" >> $FIC_PARAM
508
			echo "- Name of the first user of admin profile : $admin_portail" >> $FIC_PARAM
473
			[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
509
			[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
474
			mkdir -p $DIR_DEST_ETC/digest
510
			mkdir -p $DIR_DEST_ETC/digest
475
			chmod 755 $DIR_DEST_ETC/digest
511
			chmod 755 $DIR_DEST_ETC/digest
476
			until [ -s $DIR_DEST_ETC/digest/key_admin ]
512
			until [ -s $DIR_DEST_ETC/digest/key_admin ]
477
			do
513
			do
478
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portail
514
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portail
479
			done
515
			done
480
			$DIR_DEST_SBIN/alcasar-profil.sh --list
516
			$DIR_DEST_SBIN/alcasar-profil.sh --list
481
		fi
517
		fi
482
	fi
518
	fi
483
# synchronisation horaire
519
# synchronisation horaire
484
	ntpd -q -g &
520
	ntpd -q -g &
485
# Sécurisation du centre
521
# Sécurisation du centre
486
	rm -f /etc/httpd/conf/webapps.d/*
522
	rm -f /etc/httpd/conf/webapps.d/*
487
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
523
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
488
<Directory $DIR_ACC>
524
<Directory $DIR_ACC>
489
	SSLRequireSSL
525
	SSLRequireSSL
490
	AllowOverride None
526
	AllowOverride None
491
	Order deny,allow
527
	Order deny,allow
492
	Deny from all
528
	Deny from all
493
	Allow from 127.0.0.1
529
	Allow from 127.0.0.1
494
	Allow from $PRIVATE_NETWORK_MASK
530
	Allow from $PRIVATE_NETWORK_MASK
495
#	Allow from $SRC_ADMIN 
531
#	Allow from $SRC_ADMIN 
496
	require valid-user
532
	require valid-user
497
	AuthType digest
533
	AuthType digest
498
	AuthName $HOSTNAME
534
	AuthName $HOSTNAME
499
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
535
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
500
	AuthUserFile $DIR_DEST_ETC/digest/key_all
536
	AuthUserFile $DIR_DEST_ETC/digest/key_all
501
	ErrorDocument 404 https://$HOSTNAME/
537
	ErrorDocument 404 https://$HOSTNAME/
502
</Directory>
538
</Directory>
503
<Directory $DIR_ACC/admin>
539
<Directory $DIR_ACC/admin>
504
	SSLRequireSSL
540
	SSLRequireSSL
505
	AllowOverride None
541
	AllowOverride None
506
	Order deny,allow
542
	Order deny,allow
507
	Deny from all
543
	Deny from all
508
	Allow from 127.0.0.1
544
	Allow from 127.0.0.1
509
	Allow from $PRIVATE_NETWORK_MASK
545
	Allow from $PRIVATE_NETWORK_MASK
510
#	Allow from $SRC_ADMIN
546
#	Allow from $SRC_ADMIN
511
	require valid-user
547
	require valid-user
512
	AuthType digest
548
	AuthType digest
513
	AuthName $HOSTNAME
549
	AuthName $HOSTNAME
514
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
550
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
515
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
551
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
516
	ErrorDocument 404 https://$HOSTNAME/
552
	ErrorDocument 404 https://$HOSTNAME/
517
</Directory>
553
</Directory>
518
<Directory $DIR_ACC/manager>
554
<Directory $DIR_ACC/manager>
519
	SSLRequireSSL
555
	SSLRequireSSL
520
	AllowOverride None
556
	AllowOverride None
521
	Order deny,allow
557
	Order deny,allow
522
	Deny from all
558
	Deny from all
523
	Allow from 127.0.0.1
559
	Allow from 127.0.0.1
524
	Allow from $PRIVATE_NETWORK_MASK
560
	Allow from $PRIVATE_NETWORK_MASK
525
#	Allow from $SRC_ADMIN
561
#	Allow from $SRC_ADMIN
526
	require valid-user
562
	require valid-user
527
	AuthType digest
563
	AuthType digest
528
	AuthName $HOSTNAME
564
	AuthName $HOSTNAME
529
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
565
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
530
	AuthUserFile $DIR_DEST_ETC/digest/key_manager
566
	AuthUserFile $DIR_DEST_ETC/digest/key_manager
531
	ErrorDocument 404 https://$HOSTNAME/
567
	ErrorDocument 404 https://$HOSTNAME/
532
</Directory>
568
</Directory>
533
<Directory $DIR_ACC/backup>
569
<Directory $DIR_ACC/backup>
534
	SSLRequireSSL
570
	SSLRequireSSL
535
	AllowOverride None
571
	AllowOverride None
536
	Order deny,allow
572
	Order deny,allow
537
	Deny from all
573
	Deny from all
538
	Allow from 127.0.0.1
574
	Allow from 127.0.0.1
539
	Allow from $PRIVATE_NETWORK_MASK
575
	Allow from $PRIVATE_NETWORK_MASK
540
#	Allow from $SRC_ADMIN
576
#	Allow from $SRC_ADMIN
541
	require valid-user
577
	require valid-user
542
	AuthType digest
578
	AuthType digest
543
	AuthName $HOSTNAME
579
	AuthName $HOSTNAME
544
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
580
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
545
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
581
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
546
	ErrorDocument 404 https://$HOSTNAME/
582
	ErrorDocument 404 https://$HOSTNAME/
547
</Directory>
583
</Directory>
548
Alias /save/ "$DIR_SAVE/"
584
Alias /save/ "$DIR_SAVE/"
549
<Directory $DIR_SAVE>
585
<Directory $DIR_SAVE>
550
	SSLRequireSSL
586
	SSLRequireSSL
551
	Options Indexes
587
	Options Indexes
552
	Order deny,allow
588
	Order deny,allow
553
	Deny from all
589
	Deny from all
554
	Allow from 127.0.0.1
590
	Allow from 127.0.0.1
555
	Allow from $PRIVATE_NETWORK_MASK
591
	Allow from $PRIVATE_NETWORK_MASK
556
#	Allow from $SRC_ADMIN
592
#	Allow from $SRC_ADMIN
557
	require valid-user
593
	require valid-user
558
	AuthType digest
594
	AuthType digest
559
	AuthName $HOSTNAME
595
	AuthName $HOSTNAME
560
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
596
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
561
	ErrorDocument 404 https://$HOSTNAME/
597
	ErrorDocument 404 https://$HOSTNAME/
562
	ReadmeName	/readmeSave.html
598
	ReadmeName	/readmeSave.html
563
</Directory>
599
</Directory>
564
EOF
600
EOF
565
} # End of gestion ()
601
} # End of gestion ()
566
 
602
 
567
##########################################################################################
603
##########################################################################################
568
##				Fonction AC()						##
604
##				Fonction AC()						##
569
## - Création d'une Autorité de Certification et du certificat serveur pour apache 	##
605
## - Création d'une Autorité de Certification et du certificat serveur pour apache 	##
570
##########################################################################################
606
##########################################################################################
571
AC ()
607
AC ()
572
{
608
{
573
	$SED "s?ifcfg-eth.?ifcfg-$INTIF?g" $DIR_DEST_BIN/alcasar-CA.sh
609
	$SED "s?ifcfg-eth.?ifcfg-$INTIF?g" $DIR_DEST_BIN/alcasar-CA.sh
574
	$DIR_DEST_BIN/alcasar-CA.sh
610
	$DIR_DEST_BIN/alcasar-CA.sh
575
	FIC_VIRTUAL_SSL=`find /etc/httpd/conf -type f -name *default_ssl*`
611
	FIC_VIRTUAL_SSL=`find /etc/httpd/conf -type f -name *default_ssl*`
576
	[ -e /etc/httpd/conf/vhosts-ssl.default ]  || cp $FIC_VIRTUAL_SSL /etc/httpd/conf/vhosts-ssl.default
612
	[ -e /etc/httpd/conf/vhosts-ssl.default ]  || cp $FIC_VIRTUAL_SSL /etc/httpd/conf/vhosts-ssl.default
577
	$SED "s?localhost.crt?alcasar.crt?g" $FIC_VIRTUAL_SSL
613
	$SED "s?localhost.crt?alcasar.crt?g" $FIC_VIRTUAL_SSL
578
	$SED "s?localhost.key?alcasar.key?g" $FIC_VIRTUAL_SSL
614
	$SED "s?localhost.key?alcasar.key?g" $FIC_VIRTUAL_SSL
579
	chown -R root:apache /etc/pki
615
	chown -R root:apache /etc/pki
580
	chmod -R 750 /etc/pki
616
	chmod -R 750 /etc/pki
581
} # End AC ()
617
} # End AC ()
582
 
618
 
583
##########################################################################################
619
##########################################################################################
584
##			Fonction init_db()						##
620
##			Fonction init_db()						##
585
## - Initialisation de la base Mysql							##
621
## - Initialisation de la base Mysql							##
586
## - Affectation du mot de passe de l'administrateur (root)				##
622
## - Affectation du mot de passe de l'administrateur (root)				##
587
## - Suppression des bases et des utilisateurs superflus				##
623
## - Suppression des bases et des utilisateurs superflus				##
588
## - Création de la base 'radius'							##
624
## - Création de la base 'radius'							##
589
## - Installation du schéma de cette base						##
625
## - Installation du schéma de cette base						##
590
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
626
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
591
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
627
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
592
##########################################################################################
628
##########################################################################################
593
init_db ()
629
init_db ()
594
{
630
{
595
	mkdir -p /var/lib/mysql/.tmp
631
	mkdir -p /var/lib/mysql/.tmp
596
	chown mysql:mysql /var/lib/mysql/.tmp
632
	chown mysql:mysql /var/lib/mysql/.tmp
597
	[ -e /etc/my.cnf.rpmnew ] && mv /etc/my.cnf.rpmnew /etc/my.cnf		# prend en compte les migrations de MySQL
633
	[ -e /etc/my.cnf.rpmnew ] && mv /etc/my.cnf.rpmnew /etc/my.cnf		# prend en compte les migrations de MySQL
598
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
634
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
599
	$SED "s?^#bind-address.*?bind-address=127.0.0.1?g" /etc/my.cnf
635
	$SED "s?^#bind-address.*?bind-address=127.0.0.1?g" /etc/my.cnf
600
	/etc/init.d/mysqld start
636
	/etc/init.d/mysqld start
601
	sleep 4
637
	sleep 4
602
	mysqladmin -u root password $mysqlpwd
638
	mysqladmin -u root password $mysqlpwd
603
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
639
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
604
# On supprime les tables d'exemple
640
# On supprime les tables d'exemple
605
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;CONNECT mysql;DELETE from user where user='';FLUSH PRIVILEGES;" 
641
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;CONNECT mysql;DELETE from user where user='';FLUSH PRIVILEGES;" 
606
	# On crée la base 'radius'
642
	# On crée la base 'radius'
607
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
643
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
608
# Ajout d'une base vierge	
644
# Ajout d'une base vierge	
609
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/radiusd-db-vierge.sql
645
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/radiusd-db-vierge.sql
610
} # End init_db ()
646
} # End init_db ()
611
 
647
 
612
##########################################################################
648
##########################################################################
613
##			Fonction param_radius				##
649
##			Fonction param_radius				##
614
## - Paramètrage des fichiers de configuration FreeRadius		##
650
## - Paramètrage des fichiers de configuration FreeRadius		##
615
## - Affectation du secret partagé entre coova-chilli et freeradius	##
651
## - Affectation du secret partagé entre coova-chilli et freeradius	##
616
## - Modification de fichier de conf pour l'accès à Mysql		##
652
## - Modification de fichier de conf pour l'accès à Mysql		##
617
##########################################################################
653
##########################################################################
618
param_radius ()
654
param_radius ()
619
{
655
{
620
	cp -f $DIR_CONF/radiusd-db-vierge.sql /etc/raddb/
656
	cp -f $DIR_CONF/radiusd-db-vierge.sql /etc/raddb/
621
	chown -R radius:radius /etc/raddb
657
	chown -R radius:radius /etc/raddb
622
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
658
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
623
# paramètrage radius.conf
659
# paramètrage radius.conf
624
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
660
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
625
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
661
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
626
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
662
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
627
# suppression de la fonction proxy
663
# suppression de la fonction proxy
628
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
664
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
629
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
665
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
630
# écoute sur loopback uniquement (à modifier plus tard pour l'EAP)
666
# écoute sur loopback uniquement (à modifier plus tard pour l'EAP)
631
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
667
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
632
# prise en compte du module SQL et des compteurs SQL
668
# prise en compte du module SQL et des compteurs SQL
633
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
669
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
634
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
670
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
635
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
671
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
636
# purge du répertoire des serveurs virtuels et copie du fichier de configuration d'Alcasar
672
# purge du répertoire des serveurs virtuels et copie du fichier de configuration d'Alcasar
637
	rm -f /etc/raddb/sites-enabled/*
673
	rm -f /etc/raddb/sites-enabled/*
638
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
674
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
639
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
675
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
640
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
676
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
641
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
677
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
642
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
678
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
643
# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
679
# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
644
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
680
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
645
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
681
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
646
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
682
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
647
	cat << EOF > /etc/raddb/clients.conf
683
	cat << EOF > /etc/raddb/clients.conf
648
client 127.0.0.1 {
684
client 127.0.0.1 {
649
	secret = $secretradius
685
	secret = $secretradius
650
	shortname = localhost
686
	shortname = localhost
651
}
687
}
652
EOF
688
EOF
653
# modif sql.conf
689
# modif sql.conf
654
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
690
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
655
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
691
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
656
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
692
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
657
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
693
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
658
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
694
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
659
# modif dialup.conf
695
# modif dialup.conf
660
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
696
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
661
	cp -f $DIR_CONF/dialup.conf /etc/raddb/sql/mysql/dialup.conf
697
	cp -f $DIR_CONF/dialup.conf /etc/raddb/sql/mysql/dialup.conf
662
} # End param_radius ()
698
} # End param_radius ()
663
 
699
 
664
##########################################################################
700
##########################################################################
665
##			Fonction param_web_radius			##
701
##			Fonction param_web_radius			##
666
## - Import, modification et paramètrage de l'interface "dialupadmin"	##
702
## - Import, modification et paramètrage de l'interface "dialupadmin"	##
667
## - Création du lien vers la page de changement de mot de passe        ##
703
## - Création du lien vers la page de changement de mot de passe        ##
668
##########################################################################
704
##########################################################################
669
param_web_radius ()
705
param_web_radius ()
670
{
706
{
671
# copie de l'interface d'origine dans la structure Alcasar
707
# copie de l'interface d'origine dans la structure Alcasar
672
	[ -d /usr/share/freeradius-web ] && cp -rf /usr/share/freeradius-web/* $DIR_ACC/manager/
708
	[ -d /usr/share/freeradius-web ] && cp -rf /usr/share/freeradius-web/* $DIR_ACC/manager/
673
	rm -f $DIR_ACC/manager/index.html $DIR_ACC/manager/readme 
709
	rm -f $DIR_ACC/manager/index.html $DIR_ACC/manager/readme 
674
	rm -f $DIR_ACC/manager/htdocs/about.html $DIR_ACC/manager/htdocs/index.html $DIR_ACC/manager/htdocs/content.html
710
	rm -f $DIR_ACC/manager/htdocs/about.html $DIR_ACC/manager/htdocs/index.html $DIR_ACC/manager/htdocs/content.html
675
# copie des fichiers modifiés
711
# copie des fichiers modifiés
676
	cp -rf $DIR_INSTALL/web/acc/manager/* $DIR_ACC/manager/
712
	cp -rf $DIR_INSTALL/web/acc/manager/* $DIR_ACC/manager/
677
	chown -R apache:apache $DIR_ACC/manager/
713
	chown -R apache:apache $DIR_ACC/manager/
678
# Modification des fichiers de configuration
714
# Modification des fichiers de configuration
679
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
715
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
680
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
716
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
681
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
717
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
682
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
718
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
683
	$SED "s?^sql_debug:.*?sql_debug: false?g" /etc/freeradius-web/admin.conf
719
	$SED "s?^sql_debug:.*?sql_debug: false?g" /etc/freeradius-web/admin.conf
684
	$SED "s?^sql_usergroup_table: .*?sql_usergroup_table: radusergroup?g" /etc/freeradius-web/admin.conf
720
	$SED "s?^sql_usergroup_table: .*?sql_usergroup_table: radusergroup?g" /etc/freeradius-web/admin.conf
685
	$SED "s?^sql_password_attribute:.*?sql_password_attribute: Crypt-Password?g" /etc/freeradius-web/admin.conf
721
	$SED "s?^sql_password_attribute:.*?sql_password_attribute: Crypt-Password?g" /etc/freeradius-web/admin.conf
686
	$SED "s?^general_finger_type.*?# general_finger_type: snmp?g" /etc/freeradius-web/admin.conf
722
	$SED "s?^general_finger_type.*?# general_finger_type: snmp?g" /etc/freeradius-web/admin.conf
687
	$SED "s?^general_stats_use_totacct.*?general_stats_use_totacct: yes?g" /etc/freeradius-web/admin.conf
723
	$SED "s?^general_stats_use_totacct.*?general_stats_use_totacct: yes?g" /etc/freeradius-web/admin.conf
688
	$SED "s?^general_charset.*?general_charset: utf8?g" /etc/freeradius-web/admin.conf
724
	$SED "s?^general_charset.*?general_charset: utf8?g" /etc/freeradius-web/admin.conf
689
	[ -e /etc/freeradius-web/config.php.default ] || cp /etc/freeradius-web/config.php /etc/freeradius-web/config.php.default
725
	[ -e /etc/freeradius-web/config.php.default ] || cp /etc/freeradius-web/config.php /etc/freeradius-web/config.php.default
690
	cp -f $DIR_CONF/freeradiusweb-config.php /etc/freeradius-web/config.php
726
	cp -f $DIR_CONF/freeradiusweb-config.php /etc/freeradius-web/config.php
691
	cat <<EOF > /etc/freeradius-web/naslist.conf
727
	cat <<EOF > /etc/freeradius-web/naslist.conf
692
nas1_name: alcasar.%{general_domain}
728
nas1_name: alcasar.%{general_domain}
693
nas1_model: Portail captif
729
nas1_model: Portail captif
694
nas1_ip: $PRIVATE_IP
730
nas1_ip: $PRIVATE_IP
695
nas1_port_num: 0
731
nas1_port_num: 0
696
nas1_community: public
732
nas1_community: public
697
EOF
733
EOF
698
# Modification des attributs visibles lors de la création d'un usager ou d'un groupe
734
# Modification des attributs visibles lors de la création d'un usager ou d'un groupe
699
	[ -e /etc/freeradius-web/user_edit.attrs.default ] || mv /etc/freeradius-web/user_edit.attrs /etc/freeradius-web/user_edit.attrs.default
735
	[ -e /etc/freeradius-web/user_edit.attrs.default ] || mv /etc/freeradius-web/user_edit.attrs /etc/freeradius-web/user_edit.attrs.default
700
	cp -f $DIR_CONF/user_edit.attrs /etc/freeradius-web/user_edit.attrs
736
	cp -f $DIR_CONF/user_edit.attrs /etc/freeradius-web/user_edit.attrs
701
# Ajout du mappage des attributs chillispot
737
# Ajout du mappage des attributs chillispot
702
	[ -e /etc/freeradius-web/sql.attrmap.default ] || mv /etc/freeradius-web/sql.attrmap /etc/freeradius-web/sql.attrmap.default
738
	[ -e /etc/freeradius-web/sql.attrmap.default ] || mv /etc/freeradius-web/sql.attrmap /etc/freeradius-web/sql.attrmap.default
703
	cp -f $DIR_CONF/sql.attrmap /etc/freeradius-web/sql.attrmap
739
	cp -f $DIR_CONF/sql.attrmap /etc/freeradius-web/sql.attrmap
704
# Modification des attributs visibles sur les pages des statistiques (suppression NAS_IP et NAS_port)
740
# Modification des attributs visibles sur les pages des statistiques (suppression NAS_IP et NAS_port)
705
	[ -e /etc/freeradius-web/sql.attrs.default ] || cp /etc/freeradius-web/sql.attrs /etc/freeradius-web/user_edit.attrs.default
741
	[ -e /etc/freeradius-web/sql.attrs.default ] || cp /etc/freeradius-web/sql.attrs /etc/freeradius-web/user_edit.attrs.default
706
	$SED "s?^NASIPAddress.*?NASIPAddress\tNas IP Address\tno?g" /etc/freeradius-web/sql.attrs
742
	$SED "s?^NASIPAddress.*?NASIPAddress\tNas IP Address\tno?g" /etc/freeradius-web/sql.attrs
707
	$SED "s?^NASPortId.*?NASPortId\tNas Port\tno?g" /etc/freeradius-web/sql.attrs
743
	$SED "s?^NASPortId.*?NASPortId\tNas Port\tno?g" /etc/freeradius-web/sql.attrs
708
	chown -R apache:apache /etc/freeradius-web
744
	chown -R apache:apache /etc/freeradius-web
709
# Ajout de l'alias vers la page de "changement de mot de passe usager"
745
# Ajout de l'alias vers la page de "changement de mot de passe usager"
710
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
746
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
711
<Directory $DIR_WEB/pass>
747
<Directory $DIR_WEB/pass>
712
	SSLRequireSSL
748
	SSLRequireSSL
713
	AllowOverride None
749
	AllowOverride None
714
	Order deny,allow
750
	Order deny,allow
715
	Deny from all
751
	Deny from all
716
	Allow from 127.0.0.1
752
	Allow from 127.0.0.1
717
	Allow from $PRIVATE_NETWORK_MASK
753
	Allow from $PRIVATE_NETWORK_MASK
718
	ErrorDocument 404 https://$HOSTNAME
754
	ErrorDocument 404 https://$HOSTNAME
719
</Directory>
755
</Directory>
720
EOF
756
EOF
721
	echo "- URL pour le changement du mot de passe usager : https://$HOSTNAME/pass/" >> $FIC_PARAM
757
	echo "- User change password URL : https://$HOSTNAME/pass/" >> $FIC_PARAM
722
} # End of param_web_radius ()
758
} # End of param_web_radius ()
723
 
759
 
724
##########################################################################################
760
##########################################################################################
725
##			Fonction param_chilli						##
761
##			Fonction param_chilli						##
726
## - Paramètrage du fichier d'initialisation et de configuration de coova-chilli	##
762
## - Paramètrage du fichier d'initialisation et de configuration de coova-chilli	##
727
## - Paramètrage de la page d'authentification (intercept.php)				##
763
## - Paramètrage de la page d'authentification (intercept.php)				##
728
##########################################################################################
764
##########################################################################################
729
param_chilli ()
765
param_chilli ()
730
{
766
{
731
# modification du fichier d'initialisation
767
# modification du fichier d'initialisation
732
	[ -e /etc/init.d/chilli.default ] || cp /etc/init.d/chilli /etc/init.d/chilli.default
768
	[ -e /etc/init.d/chilli.default ] || cp /etc/init.d/chilli /etc/init.d/chilli.default
733
	# configuration d'eth1 (utile pour dnsmasq))
769
	# configuration d'eth1 (utile pour dnsmasq))
734
	$SED "s?ifconfig.*?ifconfig \$HS_LANIF $PRIVATE_IP?g" /etc/init.d/chilli
770
	$SED "s?ifconfig.*?ifconfig \$HS_LANIF $PRIVATE_IP?g" /etc/init.d/chilli
735
	# ajout de la fonction 'status' (utile pour la gestion du process)
771
	# ajout de la fonction 'status' (utile pour la gestion du process)
736
	$SED "/^.*functions/i. /etc/init.d/functions" /etc/init.d/chilli
772
	$SED "/^.*functions/i. /etc/init.d/functions" /etc/init.d/chilli
737
	$SED "/^[\t ]*stop)/i\    status)\n        status chilli\n        RETVAL=$?\n        ;;\n" /etc/init.d/chilli
773
	$SED "/^[\t ]*stop)/i\    status)\n        status chilli\n        RETVAL=$?\n        ;;\n" /etc/init.d/chilli
738
	# insertion d'une tempo sur le 'restart' pour permettre à tun0 d'être libérée
774
	# insertion d'une tempo sur le 'restart' pour permettre à tun0 d'être libérée
739
	$SED "/^[\t ]*\$0 start/i\        sleep 2" /etc/init.d/chilli
775
	$SED "/^[\t ]*\$0 start/i\        sleep 2" /etc/init.d/chilli
740
	# suppression des fonctions 'writeconfig' et 'radiusconfig'
776
	# suppression des fonctions 'writeconfig' et 'radiusconfig'
741
	$SED "/writeconfig/d" /etc/init.d/chilli
777
	$SED "/writeconfig/d" /etc/init.d/chilli
742
	$SED "/radiusconfig/d" /etc/init.d/chilli
778
	$SED "/radiusconfig/d" /etc/init.d/chilli
743
	# suppression de warning disgracieux
779
	# suppression de warning disgracieux
744
	$SED "s?which start-stop-daemon?which start-stop-daemon 2>/dev/null?g" /etc/init.d/chilli
780
	$SED "s?which start-stop-daemon?which start-stop-daemon 2>/dev/null?g" /etc/init.d/chilli
745
# création du fichier de conf
781
# création du fichier de conf
746
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
782
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
747
	cat <<EOF > /etc/chilli.conf
783
	cat <<EOF > /etc/chilli.conf
748
# coova config for ALCASAR
784
# coova config for ALCASAR
749
cmdsocket	/var/run/chilli.sock
785
cmdsocket	/var/run/chilli.sock
750
unixipc		chilli.eth1.ipc
786
unixipc		chilli.eth1.ipc
751
pidfile		/var/run/chilli.eth1.pid
787
pidfile		/var/run/chilli.eth1.pid
752
net		$PRIVATE_NETWORK_MASK
788
net		$PRIVATE_NETWORK_MASK
753
dynip		$PRIVATE_DYN_IP
789
dhcpif		$INTIF
-
 
790
#nodynip
754
statip		$PRIVATE_STAT_IP
791
#statip		$PRIVATE_NETWORK_MASK
-
 
792
ethers		$DIR_DEST_ETC/alcasar-ethers
755
domain		localdomain
793
domain		localdomain
756
dns1		$PRIVATE_IP
794
dns1		$PRIVATE_IP
757
dns2		$PRIVATE_IP
795
dns2		$PRIVATE_IP
758
uamlisten	$PRIVATE_IP
796
uamlisten	$PRIVATE_IP
759
uamport		3990
797
uamport		3990
760
dhcpif		$INTIF
-
 
761
ethers		$DIR_DEST_ETC/alcasar-ethers
-
 
762
macallowlocal
798
macallowlocal
763
locationname	$HOSTNAME
799
locationname	$HOSTNAME
764
radiusserver1	127.0.0.1
800
radiusserver1	127.0.0.1
765
radiusserver2	127.0.0.1
801
radiusserver2	127.0.0.1
766
radiussecret	$secretradius
802
radiussecret	$secretradius
767
radiusauthport	1812
803
radiusauthport	1812
768
radiusacctport	1813
804
radiusacctport	1813
769
uamserver	https://$HOSTNAME/intercept.php
805
uamserver	https://$HOSTNAME/intercept.php
770
radiusnasid	$HOSTNAME
806
radiusnasid	$HOSTNAME
771
uamsecret	$secretuam
807
uamsecret	$secretuam
772
coaport		3799
808
coaport		3799
773
include		$DIR_DEST_ETC/alcasar-uamallowed
809
include		$DIR_DEST_ETC/alcasar-uamallowed
774
include		$DIR_DEST_ETC/alcasar-uamdomain
810
include		$DIR_DEST_ETC/alcasar-uamdomain
775
include		$DIR_DEST_ETC/alcasar-macallowed
811
include		$DIR_DEST_ETC/alcasar-macallowed
776
EOF
812
EOF
777
# Pour la fonctionnalité de DHCP statique, le fichier alcasar-ethers a été copié précédemment dans /usr/local/etc
813
# Pour la fonctionnalité de DHCP statique, le fichier alcasar-ethers a été copié précédemment dans /usr/local/etc
778
# création des fichiers de sites, d'urls et d'adresses MAC de confiance
814
# création des fichiers de sites, d'urls et d'adresses MAC de confiance
779
	echo -e "uamallowed=\"\"" > $DIR_DEST_ETC/alcasar-uamallowed
815
	echo -e "uamallowed=\"\"" > $DIR_DEST_ETC/alcasar-uamallowed
780
	echo -e "uamdomain=\"\"" > $DIR_DEST_ETC/alcasar-uamdomain
816
	echo -e "uamdomain=\"\"" > $DIR_DEST_ETC/alcasar-uamdomain
781
	touch $DIR_DEST_ETC/alcasar-macallowed
817
	touch $DIR_DEST_ETC/alcasar-macallowed
782
	chown root:apache $DIR_DEST_ETC/alcasar-*
818
	chown root:apache $DIR_DEST_ETC/alcasar-*
783
	chmod 660 $DIR_DEST_ETC/alcasar-*
819
	chmod 660 $DIR_DEST_ETC/alcasar-*
784
	echo "- URL de deconnexion du portail : http://alcasar:3990/logoff" >> $FIC_PARAM
820
	echo "- Disconnect URL : http://alcasar:3990/logoff" >> $FIC_PARAM
785
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli et nom d'organisme)
821
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli et nom d'organisme)
786
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
822
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
787
	$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php
823
	$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php
788
	$SED "s?^\$organisme = .*?\$organisme = \"$ORGANISME\";?g" $DIR_WEB/intercept.php $DIR_WEB/status.php
824
	$SED "s?^\$organisme = .*?\$organisme = \"$ORGANISME\";?g" $DIR_WEB/intercept.php $DIR_WEB/status.php
789
}  # End of param_chilli ()
825
}  # End of param_chilli ()
790
 
826
 
791
##########################################################
827
##########################################################
792
##			Fonction param_squid		##
828
##			Fonction param_squid		##
793
## - Paramètrage du proxy 'squid' en mode 'cache'	##
829
## - Paramètrage du proxy 'squid' en mode 'cache'	##
794
## - Initialisation de la base de données  		##
830
## - Initialisation de la base de données  		##
795
##########################################################
831
##########################################################
796
param_squid ()
832
param_squid ()
797
{
833
{
798
# paramètrage de Squid (connecté en série derrière Dansguardian)
834
# paramètrage de Squid (connecté en série derrière Dansguardian)
799
	[ -e /etc/squid/squid.conf.default  ] || cp /etc/squid/squid.conf /etc/squid/squid.conf.default
835
	[ -e /etc/squid/squid.conf.default  ] || cp /etc/squid/squid.conf /etc/squid/squid.conf.default
800
# suppression des références 'localnet', 'icp', 'htcp' et 'always_direct'
836
# suppression des références 'localnet', 'icp', 'htcp' et 'always_direct'
801
	$SED "/^acl localnet/d" /etc/squid/squid.conf
837
	$SED "/^acl localnet/d" /etc/squid/squid.conf
802
	$SED "/^icp_access allow localnet/d" /etc/squid/squid.conf
838
	$SED "/^icp_access allow localnet/d" /etc/squid/squid.conf
803
	$SED "/^icp_port 3130/d" /etc/squid/squid.conf
839
	$SED "/^icp_port 3130/d" /etc/squid/squid.conf
804
	$SED "/^http_access allow localnet/d" /etc/squid/squid.conf
840
	$SED "/^http_access allow localnet/d" /etc/squid/squid.conf
805
	$SED "/^htcp_access allow localnet/d" /etc/squid/squid.conf
841
	$SED "/^htcp_access allow localnet/d" /etc/squid/squid.conf
806
	$SED "/^always_direct allow localnet/d" /etc/squid/squid.conf
842
	$SED "/^always_direct allow localnet/d" /etc/squid/squid.conf
807
# mode 'proxy transparent local'
843
# mode 'proxy transparent local'
808
	$SED "s?^http_port.*?http_port 127.0.0.1:$SQUID_PORT transparent?g" /etc/squid/squid.conf
844
	$SED "s?^http_port.*?http_port 127.0.0.1:3128 transparent?g" /etc/squid/squid.conf
809
# emplacement et formatage standard des logs
845
# emplacement et formatage standard des logs
810
	echo '#logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh' >> /etc/squid/squid.conf
846
	echo '#logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh' >> /etc/squid/squid.conf
811
	echo '#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Ag' >> /etc/squid/squid.conf
847
	echo '#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Ag' >> /etc/squid/squid.conf
812
        echo "access_log /var/log/squid/access.log" >> /etc/squid/squid.conf
848
        echo "access_log /var/log/squid/access.log" >> /etc/squid/squid.conf
813
# compatibilité des logs avec awstats
849
# compatibilité des logs avec awstats
814
	echo "emulate_httpd_log on" >> /etc/squid/squid.conf
850
	echo "emulate_httpd_log on" >> /etc/squid/squid.conf
815
# pour éviter les message d'erreur lors des changement d'état des interfaces réseaux
851
# pour éviter les message d'erreur lors des changement d'état des interfaces réseaux
816
	$SED "s?^SQUID_AUTO_RELOAD.*?SQUID_AUTO_RELOAD=no?g" /etc/sysconfig/squid
852
	$SED "s?^SQUID_AUTO_RELOAD.*?SQUID_AUTO_RELOAD=no?g" /etc/sysconfig/squid
817
# Initialisation du cache de Squid
853
# Initialisation du cache de Squid
818
	/usr/sbin/squid -z
854
	/usr/sbin/squid -z
819
}  # End of param_squid ()
855
}  # End of param_squid ()
820
	
856
	
821
##################################################################
857
##################################################################
822
##		Fonction param_dansguardian			##
858
##		Fonction param_dansguardian			##
823
## - Paramètrage du gestionnaire de contenu Dansguardian	##
859
## - Paramètrage du gestionnaire de contenu Dansguardian	##
824
##################################################################
860
##################################################################
825
param_dansguardian ()
861
param_dansguardian ()
826
{
862
{
827
	DIR_DG="/etc/dansguardian"
863
	DIR_DG="/etc/dansguardian"
828
	mkdir /var/dansguardian
864
	mkdir /var/dansguardian
829
	chown dansguardian /var/dansguardian
865
	chown dansguardian /var/dansguardian
830
	[ -e $DIR_DG/dansguardian.conf.default ] || cp $DIR_DG/dansguardian.conf $DIR_DG/dansguardian.conf.default
866
	[ -e $DIR_DG/dansguardian.conf.default ] || cp $DIR_DG/dansguardian.conf $DIR_DG/dansguardian.conf.default
831
# Le filtrage est désactivé par défaut 
867
# Le filtrage est désactivé par défaut 
832
	$SED "s/^reportinglevel =.*/reportinglevel = -1/g" $DIR_DG/dansguardian.conf
868
	$SED "s/^reportinglevel =.*/reportinglevel = -1/g" $DIR_DG/dansguardian.conf
833
# la page d'interception est en français
869
# la page d'interception est en français
834
	$SED "s?^language =.*?language = french?g" $DIR_DG/dansguardian.conf
870
	$SED "s?^language =.*?language = french?g" $DIR_DG/dansguardian.conf
835
# on limite l'écoute de Dansguardian côté LAN
871
# on limite l'écoute de Dansguardian côté LAN
836
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" $DIR_DG/dansguardian.conf
872
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" $DIR_DG/dansguardian.conf
837
# on chaîne Dansguardian au proxy antivirus HAVP
873
# on chaîne Dansguardian au proxy antivirus HAVP
838
	$SED "s?^proxyport.*?proxyport = 8090?g" $DIR_DG/dansguardian.conf
874
	$SED "s?^proxyport.*?proxyport = 8090?g" $DIR_DG/dansguardian.conf
839
# on remplace la page d'interception (template)
875
# on remplace la page d'interception (template)
840
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
876
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
841
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
877
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
842
# on ne loggue que les deny (pour le reste, on a squid)
878
# on ne loggue que les deny (pour le reste, on a squid)
843
	$SED "s?^loglevel =.*?loglevel = 1?g" $DIR_DG/dansguardian.conf
879
	$SED "s?^loglevel =.*?loglevel = 1?g" $DIR_DG/dansguardian.conf
844
# on désactive par défaut le controle de contenu des pages html
880
# on désactive par défaut le controle de contenu des pages html
845
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/dansguardian.conf
881
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/dansguardian.conf
846
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
882
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
847
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (on commente ce qui ne l'est pas)
883
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (on commente ce qui ne l'est pas)
848
# on désactive par défaut le contrôle d'URL par expressions régulières
884
# on désactive par défaut le contrôle d'URL par expressions régulières
849
	cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
885
	cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
850
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
886
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
851
# on désactive par défaut le contrôle de téléchargement de fichiers
887
# on désactive par défaut le contrôle de téléchargement de fichiers
852
	[ -e $DIR_DG/dansguardianf1.conf.default ] || cp $DIR_DG/dansguardianf1.conf $DIR_DG/dansguardianf1.conf.default
888
	[ -e $DIR_DG/dansguardianf1.conf.default ] || cp $DIR_DG/dansguardianf1.conf $DIR_DG/dansguardianf1.conf.default
853
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" $DIR_DG/dansguardianf1.conf
889
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" $DIR_DG/dansguardianf1.conf
854
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
890
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
855
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
891
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
856
	touch $DIR_DG/lists/bannedextensionlist
892
	touch $DIR_DG/lists/bannedextensionlist
857
	touch $DIR_DG/lists/bannedmimetypelist
893
	touch $DIR_DG/lists/bannedmimetypelist
858
# 'Safesearch' regex actualisation
894
# 'Safesearch' regex actualisation
859
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
895
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
860
# empty LAN IP list that won't be WEB filtered
896
# empty LAN IP list that won't be WEB filtered
861
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
897
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
862
	touch $DIR_DG/lists/exceptioniplist
898
	touch $DIR_DG/lists/exceptioniplist
863
# Keep a copy of URL & domain filter configuration files
899
# Keep a copy of URL & domain filter configuration files
864
	[ -e $DIR_DG/lists/bannedsitelist.default ] || mv $DIR_DG/lists/bannedsitelist $DIR_DG/lists/bannedsitelist.default
900
	[ -e $DIR_DG/lists/bannedsitelist.default ] || mv $DIR_DG/lists/bannedsitelist $DIR_DG/lists/bannedsitelist.default
865
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
901
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
866
} # End of param_dansguardian ()
902
} # End of param_dansguardian ()
867
 
903
 
868
##################################################################
904
##################################################################
869
##			Fonction antivirus			##
905
##			Fonction antivirus			##
870
## - configuration havp + libclamav				##
906
## - configuration havp + libclamav				##
871
##################################################################
907
##################################################################
872
antivirus ()		
908
antivirus ()		
873
{
909
{
874
# création de l'usager 'havp'
910
# création de l'usager 'havp'
875
	havp_exist=`grep havp /etc/passwd|wc -l`
911
	havp_exist=`grep havp /etc/passwd|wc -l`
876
	if [ "$havp_exist" == "1" ]
912
	if [ "$havp_exist" == "1" ]
877
	then
913
	then
878
	      userdel -r havp 2>/dev/null
914
	      userdel -r havp 2>/dev/null
879
	fi
915
	fi
880
	groupadd -f havp
916
	groupadd -f havp
881
	useradd -M -g havp havp
917
	useradd -M -g havp havp
882
	mkdir -p /var/tmp/havp /var/log/havp
918
	mkdir -p /var/tmp/havp /var/log/havp
883
	chown -R havp /var/tmp/havp /var/log/havp /var/run/havp
919
	chown -R havp /var/tmp/havp /var/log/havp /var/run/havp
884
	$SED "/$HAVP_BIN -c $HAVP_CONFIG/i chown -R havp:havp \/var\/tmp\/havp" /etc/init.d/havp
920
	$SED "/$HAVP_BIN -c $HAVP_CONFIG/i chown -R havp:havp \/var\/tmp\/havp" /etc/init.d/havp
885
# configuration d'HAVP
921
# configuration d'HAVP
886
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
922
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
887
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
923
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
888
	$SED "s?^# PARENTPROXY.*?PARENTPROXY 127.0.0.1?g" /etc/havp/havp.config
924
	$SED "s?^# PARENTPROXY.*?PARENTPROXY 127.0.0.1?g" /etc/havp/havp.config
889
	$SED "s?^# PARENTPORT.*?PARENTPORT 3128?g" /etc/havp/havp.config
925
	$SED "s?^# PARENTPORT.*?PARENTPORT 3128?g" /etc/havp/havp.config
890
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config
926
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config
891
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config
927
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config
892
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config
928
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config
893
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config
929
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config
894
# remplacement du fichier d'initialisation
930
# remplacement du fichier d'initialisation
895
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
931
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
896
	cp -f $DIR_CONF/havp-init /etc/init.d/havp
932
	cp -f $DIR_CONF/havp-init /etc/init.d/havp
897
# on remplace la page d'interception (template)
933
# on remplace la page d'interception (template)
898
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
934
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
899
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
935
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
900
# automatisation de la mise à jour de la base antivirale (toutes les 2 heures)
936
# automatisation de la mise à jour de la base antivirale (toutes les 2 heures)
901
	$SED "s?^Checks.*?Checks 12?g" /etc/freshclam.conf
937
	$SED "s?^Checks.*?Checks 12?g" /etc/freshclam.conf
902
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
938
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
903
# on supprime les fichiers '*.cld' (cas d'une mise à jour)
939
# on supprime les fichiers '*.cld' (cas d'une mise à jour)
904
	rm -f /var/lib/clamav/*.cld
940
	rm -f /var/lib/clamav/*.cld
905
}
941
}
906
 
942
 
907
##################################################################################
943
##################################################################################
908
##				Fonction firewall				##
944
##				Fonction firewall				##
909
## - adaptation des scripts du parefeu						##
945
## - adaptation des scripts du parefeu						##
910
## - mise en place des règles et sauvegarde pour un lancement automatique	##
946
## - mise en place des règles et sauvegarde pour un lancement automatique	##
911
##################################################################################
947
##################################################################################
912
firewall ()
948
firewall ()
913
{
949
{
914
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
950
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
915
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
951
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
916
	$SED "s?^PRIVATE_NETWORK_MASK=.*?PRIVATE_NETWORK_MASK=\"$PRIVATE_NETWORK_MASK\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
952
	$SED "s?^PRIVATE_NETWORK_MASK=.*?PRIVATE_NETWORK_MASK=\"$PRIVATE_NETWORK_MASK\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
917
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-iptables.sh $DIR_DEST_BIN/alcasar-iptables-bypass.sh
953
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-iptables.sh $DIR_DEST_BIN/alcasar-iptables-bypass.sh
918
	$SED "s?^DNSSERVERS=.*?DNSSERVERS=\"$DNS1,$DNS2\"?g" $DIR_DEST_BIN/alcasar-iptables.sh
954
	$SED "s?^DNSSERVERS=.*?DNSSERVERS=\"$DNS1,$DNS2\"?g" $DIR_DEST_BIN/alcasar-iptables.sh
919
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
955
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
920
# création du fichier d'exception au filtrage
956
# création du fichier d'exception au filtrage
921
	touch $DIR_DEST_ETC/alcasar-filter-exceptions
957
	touch $DIR_DEST_ETC/alcasar-filter-exceptions
922
# le script $DIR_DEST_BIN/alcasar-iptables.sh est lancé à la fin (pour ne pas perturber une mise à jour via ssh)
958
# le script $DIR_DEST_BIN/alcasar-iptables.sh est lancé à la fin (pour ne pas perturber une mise à jour via ssh)
923
}  # End of firewall ()
959
}  # End of firewall ()
924
 
960
 
925
##################################################################################
961
##################################################################################
926
##			param_ulogd function					##
962
##			param_ulogd function					##
927
## - Ulog config for multi-log files 						##
963
## - Ulog config for multi-log files 						##
928
##################################################################################
964
##################################################################################
929
param_ulogd ()
965
param_ulogd ()
930
{
966
{
931
# Three instances of ulogd (three different logfiles)
967
# Three instances of ulogd (three different logfiles)
932
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
968
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
933
	nl=1
969
	nl=1
934
	for log_type in tracability ssh ext-access
970
	for log_type in tracability ssh ext-access
935
	do
971
	do
936
		[ -e /var/log/firewall/$log_type.log ] || touch /var/log/firewall/$log_type.log
972
		[ -e /var/log/firewall/$log_type.log ] || touch /var/log/firewall/$log_type.log
937
		cp -f /etc/ulogd.conf /etc/ulogd-$log_type.conf
973
		cp -f /etc/ulogd.conf /etc/ulogd-$log_type.conf
938
		$SED "s?^nlgroup=.*?nlgroup=$nl?g" /etc/ulogd-$log_type.conf 
974
		$SED "s?^nlgroup=.*?nlgroup=$nl?g" /etc/ulogd-$log_type.conf 
939
		$SED '/OPRINT/,$d' /etc/ulogd-$log_type.conf
975
		$SED '/OPRINT/,$d' /etc/ulogd-$log_type.conf
940
		cat << EOF >> /etc/ulogd-$log_type.conf
976
		cat << EOF >> /etc/ulogd-$log_type.conf
941
[LOGEMU]
977
[LOGEMU]
942
file="/var/log/firewall/$log_type.log"
978
file="/var/log/firewall/$log_type.log"
943
sync=1
979
sync=1
944
EOF
980
EOF
945
		nl=`expr $nl + 1`
981
		nl=`expr $nl + 1`
946
	done
982
	done
947
	chown -R root:apache /var/log/firewall
983
	chown -R root:apache /var/log/firewall
948
	chmod 750 /var/log/firewall
984
	chmod 750 /var/log/firewall
949
	chmod 640 /var/log/firewall/*
985
	chmod 640 /var/log/firewall/*
950
	[ -e /etc/init.d/ulogd.default ] || cp /etc/init.d/ulogd /etc/init.d/ulogd.default
986
	[ -e /etc/init.d/ulogd.default ] || cp /etc/init.d/ulogd /etc/init.d/ulogd.default
951
	cp -f $DIR_CONF/ulogd-init /etc/init.d/ulogd
987
	cp -f $DIR_CONF/ulogd-init /etc/init.d/ulogd
952
}  # End of param_ulogd ()
988
}  # End of param_ulogd ()
953
 
989
 
954
##################################################################################
990
##################################################################################
955
##				Fonction param_awstats				##
991
##				Fonction param_awstats				##
956
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
992
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
957
##################################################################################
993
##################################################################################
958
param_awstats()
994
param_awstats()
959
{
995
{
960
	cp -rf /usr/share/awstats/www/ $DIR_ACC/awstats/
996
	cp -rf /usr/share/awstats/www/ $DIR_ACC/awstats/
961
	chown -R apache:apache $DIR_ACC/awstats
997
	chown -R apache:apache $DIR_ACC/awstats
962
	cp /etc/awstats/awstats.conf /etc/awstats/awstats.conf.default
998
	cp /etc/awstats/awstats.conf /etc/awstats/awstats.conf.default
963
	$SED "s?^LogFile=.*?LogFile=\"/var/log/squid/access.log\"?g" /etc/awstats/awstats.conf
999
	$SED "s?^LogFile=.*?LogFile=\"/var/log/squid/access.log\"?g" /etc/awstats/awstats.conf
964
	$SED "s?^LogFormat=.*?LogFormat=4?g" /etc/awstats/awstats.conf
1000
	$SED "s?^LogFormat=.*?LogFormat=4?g" /etc/awstats/awstats.conf
965
	$SED "s?^SiteDomain=.*?SiteDomain=\"$HOSTNAME\"?g" /etc/awstats/awstats.conf
1001
	$SED "s?^SiteDomain=.*?SiteDomain=\"$HOSTNAME\"?g" /etc/awstats/awstats.conf
966
	$SED "s?^HostAliases=.*?HostAliases=\"$PRIVATE_IP\"?g" /etc/awstats/awstats.conf
1002
	$SED "s?^HostAliases=.*?HostAliases=\"$PRIVATE_IP\"?g" /etc/awstats/awstats.conf
967
	$SED "s?^DNSLookup=.*?DNSLookup=0?g" /etc/awstats/awstats.conf
1003
	$SED "s?^DNSLookup=.*?DNSLookup=0?g" /etc/awstats/awstats.conf
968
	$SED "s?^DirData=.*?DirData=\"/var/lib/awstats\"?g" /etc/awstats/awstats.conf
1004
	$SED "s?^DirData=.*?DirData=\"/var/lib/awstats\"?g" /etc/awstats/awstats.conf
969
	$SED "s?^DirIcons=.*?DirIcons=\"/acc/awstats/icon\"?g" /etc/awstats/awstats.conf
1005
	$SED "s?^DirIcons=.*?DirIcons=\"/acc/awstats/icon\"?g" /etc/awstats/awstats.conf
970
	$SED "s?^StyleSheet=.*?StyleSheet=\"/css/style.css\"?g" /etc/awstats/awstats.conf
1006
	$SED "s?^StyleSheet=.*?StyleSheet=\"/css/style.css\"?g" /etc/awstats/awstats.conf
971
	$SED "s?^BuildReportFormat=.*?BuildReportFormat=xhtml?g" /etc/awstats/awstats.conf
1007
	$SED "s?^BuildReportFormat=.*?BuildReportFormat=xhtml?g" /etc/awstats/awstats.conf
972
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1008
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
973
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1009
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
974
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1010
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
975
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1011
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
976
	$SED "s?^ShowMonthStats=.*?ShowMonthStats=VPHB?g" /etc/awstats/awstats.conf
1012
	$SED "s?^ShowMonthStats=.*?ShowMonthStats=VPHB?g" /etc/awstats/awstats.conf
977
	$SED "s?^ShowDaysOfMonthStats=.*?ShowDaysOfMonthStats=PHB?g" /etc/awstats/awstats.conf
1013
	$SED "s?^ShowDaysOfMonthStats=.*?ShowDaysOfMonthStats=PHB?g" /etc/awstats/awstats.conf
978
	$SED "s?^ShowDaysOfWeekStats=.*?ShowDaysOfWeekStats=PHB?g" /etc/awstats/awstats.conf
1014
	$SED "s?^ShowDaysOfWeekStats=.*?ShowDaysOfWeekStats=PHB?g" /etc/awstats/awstats.conf
979
	$SED "s?^ShowHoursStats=.*?ShowHoursStats=PHB?g" /etc/awstats/awstats.conf
1015
	$SED "s?^ShowHoursStats=.*?ShowHoursStats=PHB?g" /etc/awstats/awstats.conf
980
	$SED "s?^ShowDomainsStats=.*?ShowDomainsStats=0?g" /etc/awstats/awstats.conf
1016
	$SED "s?^ShowDomainsStats=.*?ShowDomainsStats=0?g" /etc/awstats/awstats.conf
981
	$SED "s?^ShowHostsStats=.*?ShowHostsStats=0?g" /etc/awstats/awstats.conf
1017
	$SED "s?^ShowHostsStats=.*?ShowHostsStats=0?g" /etc/awstats/awstats.conf
982
	$SED "s?^ShowAuthenticatedUsers=.*?ShowAuthenticatedUsers=0?g" /etc/awstats/awstats.conf
1018
	$SED "s?^ShowAuthenticatedUsers=.*?ShowAuthenticatedUsers=0?g" /etc/awstats/awstats.conf
983
	$SED "s?^ShowRobotsStats=.*?ShowRobotsStats=0?g" /etc/awstats/awstats.conf
1019
	$SED "s?^ShowRobotsStats=.*?ShowRobotsStats=0?g" /etc/awstats/awstats.conf
984
	$SED "s?^ShowFileTypesStats=.*?ShowFileTypesStats=0?g" /etc/awstats/awstats.conf
1020
	$SED "s?^ShowFileTypesStats=.*?ShowFileTypesStats=0?g" /etc/awstats/awstats.conf
985
	$SED "s?^ShowFileSizesStats=.*?ShowFileSizesStats=0?g" /etc/awstats/awstats.conf
1021
	$SED "s?^ShowFileSizesStats=.*?ShowFileSizesStats=0?g" /etc/awstats/awstats.conf
986
	$SED "s?^ShowOSStats=.*?ShowOSStats=0?g" /etc/awstats/awstats.conf
1022
	$SED "s?^ShowOSStats=.*?ShowOSStats=0?g" /etc/awstats/awstats.conf
987
	$SED "s?^ShowScreenSizeStats=.*?ShowScreenSizeStats=0?g" /etc/awstats/awstats.conf
1023
	$SED "s?^ShowScreenSizeStats=.*?ShowScreenSizeStats=0?g" /etc/awstats/awstats.conf
988
 
1024
 
989
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
1025
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
990
<Directory $DIR_ACC/awstats>
1026
<Directory $DIR_ACC/awstats>
991
	SSLRequireSSL
1027
	SSLRequireSSL
992
	Options ExecCGI
1028
	Options ExecCGI
993
	AddHandler cgi-script .pl
1029
	AddHandler cgi-script .pl
994
	DirectoryIndex awstats.pl
1030
	DirectoryIndex awstats.pl
995
	Order deny,allow
1031
	Order deny,allow
996
	Deny from all
1032
	Deny from all
997
	Allow from 127.0.0.1
1033
	Allow from 127.0.0.1
998
	Allow from $PRIVATE_NETWORK_MASK
1034
	Allow from $PRIVATE_NETWORK_MASK
999
	require valid-user
1035
	require valid-user
1000
	AuthType digest
1036
	AuthType digest
1001
	AuthName $HOSTNAME
1037
	AuthName $HOSTNAME
1002
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
1038
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
1003
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
1039
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
1004
	ErrorDocument 404 https://$HOSTNAME/
1040
	ErrorDocument 404 https://$HOSTNAME/
1005
</Directory>
1041
</Directory>
1006
SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
1042
SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
1007
EOF
1043
EOF
1008
} # End of param_awstats ()
1044
} # End of param_awstats ()
1009
 
1045
 
1010
##########################################################
1046
##########################################################
1011
##		Fonction param_dnsmasq			##
1047
##		Fonction param_dnsmasq			##
1012
##########################################################
1048
##########################################################
1013
param_dnsmasq ()
1049
param_dnsmasq ()
1014
{
1050
{
1015
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1051
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1016
	$SED "s?^DHCP_LEASE=.*?DHCP_LEASE=/var/log/dnsmasq/lease.log?g" /etc/sysconfig/dnsmasq # fichier contenant les baux
1052
	$SED "s?^DHCP_LEASE=.*?DHCP_LEASE=/var/log/dnsmasq/lease.log?g" /etc/sysconfig/dnsmasq # fichier contenant les baux
1017
	[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1053
	[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1018
# 1st dnsmasq listen on udp 53 ("dnsmasq - forward"). It's used as dhcp server only if bypass is on.
1054
# 1st dnsmasq listen on udp 53 ("dnsmasq - forward"). It's used as dhcp server only if bypass is on.
1019
	cat << EOF > /etc/dnsmasq.conf 
1055
	cat << EOF > /etc/dnsmasq.conf 
1020
# Configuration file for "dnsmasq in forward mode"
1056
# Configuration file for "dnsmasq in forward mode"
1021
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1057
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1022
listen-address=$PRIVATE_IP
1058
listen-address=$PRIVATE_IP
1023
listen-address=127.0.0.1
1059
listen-address=127.0.0.1
1024
no-dhcp-interface=$INTIF
1060
no-dhcp-interface=$INTIF
1025
bind-interfaces
1061
bind-interfaces
1026
cache-size=256
1062
cache-size=256
1027
domain=$DOMAIN
1063
domain=$DOMAIN
1028
domain-needed
1064
domain-needed
1029
expand-hosts
1065
expand-hosts
1030
bogus-priv
1066
bogus-priv
1031
filterwin2k
1067
filterwin2k
1032
server=$DNS1
1068
server=$DNS1
1033
server=$DNS2
1069
server=$DNS2
1034
# le servive DHCP est configuré mais n'est exploité que pour le "bypass"
1070
# le servive DHCP est configuré mais n'est exploité que pour le "bypass"
1035
dhcp-range=$PRIVATE_DYN_FIRST_IP,$PRIVATE_DYN_LAST_IP,$PRIVATE_MASK,12h
1071
dhcp-range=$PRIVATE_DYN_FIRST_IP,$PRIVATE_DYN_LAST_IP,$PRIVATE_MASK,12h
1036
#dhcp-option=3,1.2.3.4
1072
#dhcp-option=3,1.2.3.4
1037
#dhcp-option=option:router,1.2.3.4
1073
#dhcp-option=option:router,1.2.3.4
1038
#dhcp-option=42,0.0.0.0
1074
#dhcp-option=42,0.0.0.0
1039
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1075
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1040
 
1076
 
1041
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1077
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1042
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1078
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1043
EOF
1079
EOF
1044
# 2nd dnsmasq listen on udp 54 ("dnsmasq with blackhole")
1080
# 2nd dnsmasq listen on udp 54 ("dnsmasq with blackhole")
1045
	cat << EOF > /etc/dnsmasq-blackhole.conf 
1081
	cat << EOF > /etc/dnsmasq-blackhole.conf 
1046
	# Configuration file for "dnsmasq with blackhole"
1082
	# Configuration file for "dnsmasq with blackhole"
1047
# Inclusion de la blacklist <domains> de Toulouse dans la configuration
1083
# Inclusion de la blacklist <domains> de Toulouse dans la configuration
1048
conf-dir=$DIR_DEST_ETC/alcasar-dnsfilter-enabled
1084
conf-dir=$DIR_DEST_ETC/alcasar-dnsfilter-enabled
1049
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1085
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1050
listen-address=$PRIVATE_IP
1086
listen-address=$PRIVATE_IP
1051
port=54
1087
port=54
1052
no-dhcp-interface=$INTIF
1088
no-dhcp-interface=$INTIF
1053
bind-interfaces
1089
bind-interfaces
1054
cache-size=256
1090
cache-size=256
1055
domain=$DOMAIN
1091
domain=$DOMAIN
1056
domain-needed
1092
domain-needed
1057
expand-hosts
1093
expand-hosts
1058
bogus-priv
1094
bogus-priv
1059
filterwin2k
1095
filterwin2k
1060
server=$DNS1
1096
server=$DNS1
1061
server=$DNS2
1097
server=$DNS2
1062
EOF
1098
EOF
1063
# On crée le fichier de résolution locale
1099
# On crée le fichier de résolution locale
1064
cat << EOF > $DIR_DEST_ETC/alcasar-dns-name
1100
cat << EOF > $DIR_DEST_ETC/alcasar-dns-name
1065
# Here you can define your local domain name
1101
# Here you can define your local domain name
1066
# use the /etc/hosts file to define your hosts name
1102
# use the /etc/hosts file to define your hosts name
1067
local=/$DOMAIN/
1103
local=/$DOMAIN/
1068
EOF
1104
EOF
1069
# On modifie le fichier d'initialisattion (lancement et arret de la deuxième instance)
1105
# On modifie le fichier d'initialisattion (lancement et arret de la deuxième instance)
1070
[ -e /etc/init.d/dnsmasq.default ] || cp /etc/init.d/dnsmasq /etc/init.d/dnsmasq.default
1106
[ -e /etc/init.d/dnsmasq.default ] || cp /etc/init.d/dnsmasq /etc/init.d/dnsmasq.default
1071
$SED "/daemon/a \$dnsmasq -C /etc/dnsmasq-blackhole.conf \$OPTIONS" /etc/init.d/dnsmasq
1107
$SED "/daemon/a \$dnsmasq -C /etc/dnsmasq-blackhole.conf \$OPTIONS" /etc/init.d/dnsmasq
1072
$SED "/killproc \$DAEMON_NAME/a killproc \$DAEMON_NAME" /etc/init.d/dnsmasq
1108
$SED "/killproc \$DAEMON_NAME/a killproc \$DAEMON_NAME" /etc/init.d/dnsmasq
1073
} # End dnsmasq
1109
} # End dnsmasq
1074
 
1110
 
1075
##########################################################
1111
##########################################################
1076
##		Fonction BL (BlackList)			##
1112
##		Fonction BL (BlackList)			##
1077
##########################################################
1113
##########################################################
1078
BL ()
1114
BL ()
1079
{
1115
{
1080
# on copie par défaut la BL de toulouse embarqués dans l'archive d'ALCASAR
1116
# on copie par défaut la BL de toulouse embarqués dans l'archive d'ALCASAR
1081
	rm -rf /etc/dansguardian/lists/blacklists
1117
	rm -rf /etc/dansguardian/lists/blacklists
1082
	tar zxf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ 2>&1 >/dev/null
1118
	tar zxf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ 2>&1 >/dev/null
1083
	cp -f $DIR_CONF/VERSION-BL $DIR_ACC/
1119
	cp -f $DIR_CONF/VERSION-BL $DIR_ACC/
1084
	chown apache:apache $DIR_ACC/VERSION-BL
1120
	chown apache:apache $DIR_ACC/VERSION-BL
1085
# on crée le répertoire de la BL secondaire
1121
# on crée le répertoire de la BL secondaire
1086
	mkdir /etc/dansguardian/lists/blacklists/ossi
1122
	mkdir /etc/dansguardian/lists/blacklists/ossi
1087
	touch /etc/dansguardian/lists/blacklists/ossi/domains
1123
	touch /etc/dansguardian/lists/blacklists/ossi/domains
1088
	touch /etc/dansguardian/lists/blacklists/ossi/urls
1124
	touch /etc/dansguardian/lists/blacklists/ossi/urls
1089
# On crée les fichiers vides de sites ou d'URL réhabilités
1125
# On crée les fichiers vides de sites ou d'URL réhabilités
1090
	[ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
1126
	[ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
1091
	[ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
1127
	[ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
1092
	touch /etc/dansguardian/lists/exceptionsitelist
1128
	touch /etc/dansguardian/lists/exceptionsitelist
1093
	touch /etc/dansguardian/lists/exceptionurllist
1129
	touch /etc/dansguardian/lists/exceptionurllist
1094
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1130
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1095
	cat <<EOF > /etc/dansguardian/lists/bannedurllist
1131
	cat <<EOF > /etc/dansguardian/lists/bannedurllist
1096
# Dansguardian filter config for ALCASAR
1132
# Dansguardian filter config for ALCASAR
1097
EOF
1133
EOF
1098
	cat <<EOF > /etc/dansguardian/lists/bannedsitelist
1134
	cat <<EOF > /etc/dansguardian/lists/bannedsitelist
1099
# Dansguardian domain filter config for ALCASAR
1135
# Dansguardian domain filter config for ALCASAR
1100
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1136
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1101
#**
1137
#**
1102
# block all SSL and CONNECT tunnels
1138
# block all SSL and CONNECT tunnels
1103
**s
1139
**s
1104
# block all SSL and CONNECT tunnels specified only as an IP
1140
# block all SSL and CONNECT tunnels specified only as an IP
1105
*ips
1141
*ips
1106
# block all sites specified only by an IP
1142
# block all sites specified only by an IP
1107
*ip
1143
*ip
1108
EOF
1144
EOF
1109
	chown -R dansguardian:apache /etc/dansguardian/
1145
	chown -R dansguardian:apache /etc/dansguardian/
1110
	chmod -R g+rw /etc/dansguardian
1146
	chmod -R g+rw /etc/dansguardian
1111
# On crée la structure du DNS-blackhole :
1147
# On crée la structure du DNS-blackhole :
1112
  	mkdir $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1148
  	mkdir $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1113
	chown -R 770 $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1149
	chown -R 770 $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1114
	chown -R root:apache $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1150
	chown -R root:apache $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1115
# On fait pointer le black-hole sur une page interne
1151
# On fait pointer le black-hole sur une page interne
1116
	$SED "s?^IP_RETOUR=.*?IP_RETOUR=\"$PRIVATE_IP\"?g" $DIR_DEST_SBIN/alcasar-bl.sh
1152
	$SED "s?^IP_RETOUR=.*?IP_RETOUR=\"$PRIVATE_IP\"?g" $DIR_DEST_SBIN/alcasar-bl.sh
1117
# On récupère la dernière version de la BL Toulouse
1153
# On récupère la dernière version de la BL Toulouse
1118
	$DIR_DEST_SBIN/alcasar-bl.sh --download
1154
	$DIR_DEST_SBIN/alcasar-bl.sh --download
1119
}
1155
}
1120
 
1156
 
1121
##########################################################
1157
##########################################################
1122
##		Fonction cron				##
1158
##		Fonction cron				##
1123
## - Mise en place des différents fichiers de cron	##
1159
## - Mise en place des différents fichiers de cron	##
1124
##########################################################
1160
##########################################################
1125
cron ()
1161
cron ()
1126
{
1162
{
1127
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1163
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1128
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1164
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1129
	cat <<EOF > /etc/crontab
1165
	cat <<EOF > /etc/crontab
1130
SHELL=/bin/bash
1166
SHELL=/bin/bash
1131
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1167
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1132
MAILTO=root
1168
MAILTO=root
1133
HOME=/
1169
HOME=/
1134
 
1170
 
1135
# run-parts
1171
# run-parts
1136
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1172
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1137
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1173
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1138
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1174
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1139
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1175
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1140
EOF
1176
EOF
1141
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1177
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1142
	cat <<EOF >> /etc/anacrontab
1178
	cat <<EOF >> /etc/anacrontab
1143
7       10      cron.logExport          nice /etc/cron.d/export_log
1179
7       10      cron.logExport          nice /etc/cron.d/export_log
1144
7       15      cron.logClean           nice /etc/cron.d/clean_log
1180
7       15      cron.logClean           nice /etc/cron.d/clean_log
1145
7	20	cron.importClean	nice /etc/cron.d/clean_import
1181
7	20	cron.importClean	nice /etc/cron.d/clean_import
1146
EOF
1182
EOF
1147
# suppression des fichiers de logs de plus d'un an (tous les lundi à 4h30)
1183
# suppression des fichiers de logs de plus d'un an (tous les lundi à 4h30)
1148
	cat <<EOF > /etc/cron.d/clean_log
1184
	cat <<EOF > /etc/cron.d/clean_log
1149
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log-clean.sh
1185
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log-clean.sh
1150
EOF
1186
EOF
1151
# export de la base des usagers (tous les lundi à 4h45)
1187
# export de la base des usagers (tous les lundi à 4h45)
1152
	cat <<EOF > /etc/cron.d/mysql
1188
	cat <<EOF > /etc/cron.d/mysql
1153
45 4 * * 1 root $DIR_DEST_SBIN/alcasar-mysql.sh -dump
1189
45 4 * * 1 root $DIR_DEST_SBIN/alcasar-mysql.sh -dump
1154
EOF
1190
EOF
1155
# export des log squid, firewall et apache (tous les lundi à 5h00)
1191
# export des log squid, firewall et apache (tous les lundi à 5h00)
1156
	cat <<EOF > /etc/cron.d/export_log
1192
	cat <<EOF > /etc/cron.d/export_log
1157
#!/bin/sh
1193
#!/bin/sh
1158
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log-export.sh
1194
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log-export.sh
1159
EOF
1195
EOF
1160
# mise à jour des stats de consultation WEB toutes les 30'  ## existe en double pour le daily sans l'@IP
1196
# mise à jour des stats de consultation WEB toutes les 30'  ## existe en double pour le daily sans l'@IP
1161
# sans mèl ( > /dev/null 2>&1)
1197
# sans mèl ( > /dev/null 2>&1)
1162
	cat << EOF > /etc/cron.d/awstats
1198
	cat << EOF > /etc/cron.d/awstats
1163
*/30 * * * * root $DIR_ACC/awstats/awstats.pl -config=localhost -update >/dev/null 2>&1
1199
*/30 * * * * root $DIR_ACC/awstats/awstats.pl -config=localhost -update >/dev/null 2>&1
1164
EOF
1200
EOF
1165
# suppression des fichiers de mots de passe lors d'imports massifs par fichier de plus de 24h
1201
# suppression des fichiers de mots de passe lors d'imports massifs par fichier de plus de 24h
1166
	cat << EOF > /etc/cron.d/clean_import
1202
	cat << EOF > /etc/cron.d/clean_import
1167
30 * * * *  root $DIR_DEST_BIN/alcasar-import-clean.sh
1203
30 * * * *  root $DIR_DEST_BIN/alcasar-import-clean.sh
1168
EOF
1204
EOF
1169
# mise à jour des stats de connexion (accounting). Scripts provenant de "dialupadmin" (rpm freeradius-web) (cf. wiki.freeradius.org/Dialup_admin).
1205
# mise à jour des stats de connexion (accounting). Scripts provenant de "dialupadmin" (rpm freeradius-web) (cf. wiki.freeradius.org/Dialup_admin).
1170
# on écrase le crontab d'origine installé par le RPM "freeradius-web" (bug remonté à qa.mandriva.com : 46739).
1206
# on écrase le crontab d'origine installé par le RPM "freeradius-web" (bug remonté à qa.mandriva.com : 46739).
1171
# 'tot_stats' (tout les jours à 01h01) : aggrégat des connexions journalières par usager (renseigne la table 'totacct') 
1207
# 'tot_stats' (tout les jours à 01h01) : aggrégat des connexions journalières par usager (renseigne la table 'totacct') 
1172
# 'monthly_tot_stat' (tous les jours à 01h05) : aggrégat des connexions mensuelles par usager (renseigne la table 'mtotacct')
1208
# 'monthly_tot_stat' (tous les jours à 01h05) : aggrégat des connexions mensuelles par usager (renseigne la table 'mtotacct')
1173
# 'truncate_raddact' (tous les 1er du mois à 01h10) : supprime les entrées journalisées plus vieilles que '$back_days' jours (défini ci-après)
1209
# 'truncate_raddact' (tous les 1er du mois à 01h10) : supprime les entrées journalisées plus vieilles que '$back_days' jours (défini ci-après)
1174
# 'clean_radacct' (tous les 1er du mois à 01h15) : ferme les session ouvertes de plus de '$back_days' jours (défini ci-après)
1210
# 'clean_radacct' (tous les 1er du mois à 01h15) : ferme les session ouvertes de plus de '$back_days' jours (défini ci-après)
1175
	$SED "s?^\$back_days.*?\$back_days = 365;?g" /usr/bin/truncate_radacct
1211
	$SED "s?^\$back_days.*?\$back_days = 365;?g" /usr/bin/truncate_radacct
1176
	$SED "s?^\$back_days.*?\$back_days = 30;?g" /usr/bin/clean_radacct
1212
	$SED "s?^\$back_days.*?\$back_days = 30;?g" /usr/bin/clean_radacct
1177
	rm -f /etc/cron.daily/freeradius-web
1213
	rm -f /etc/cron.daily/freeradius-web
1178
	rm -f /etc/cron.monthly/freeradius-web
1214
	rm -f /etc/cron.monthly/freeradius-web
1179
	cat << EOF > /etc/cron.d/freeradius-web
1215
	cat << EOF > /etc/cron.d/freeradius-web
1180
1 1 * * * root /usr/bin/tot_stats > /dev/null 2>&1
1216
1 1 * * * root /usr/bin/tot_stats > /dev/null 2>&1
1181
5 1 * * * root /usr/bin/monthly_tot_stats > /dev/null 2>&1
1217
5 1 * * * root /usr/bin/monthly_tot_stats > /dev/null 2>&1
1182
10 1 1 * * root /usr/bin/truncate_radacct > /dev/null 2>&1
1218
10 1 1 * * root /usr/bin/truncate_radacct > /dev/null 2>&1
1183
15 1 1 * * root /usr/bin/clean_radacct > /dev/null 2>&1
1219
15 1 1 * * root /usr/bin/clean_radacct > /dev/null 2>&1
1184
EOF
1220
EOF
1185
# activation du "chien de garde" (watchdog) toutes les 3'
1221
# activation du "chien de garde" (watchdog) toutes les 3'
1186
	cat << EOF > /etc/cron.d/watchdog
1222
	cat << EOF > /etc/cron.d/watchdog
1187
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1223
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1188
EOF
1224
EOF
1189
# suppression des crons usagers
1225
# suppression des crons usagers
1190
	rm -f /var/spool/cron/*
1226
	rm -f /var/spool/cron/*
1191
} # End cron
1227
} # End cron
1192
 
1228
 
1193
##################################################################
1229
##################################################################
1194
##			Fonction post_install			##
1230
##			Fonction post_install			##
1195
## - Modification des bannières (locales et ssh) et des prompts ##
1231
## - Modification des bannières (locales et ssh) et des prompts ##
1196
## - Installation de la structure de chiffrement pour root	##
1232
## - Installation de la structure de chiffrement pour root	##
1197
## - Mise en place du sudoers et de la sécurité sur les fichiers##
1233
## - Mise en place du sudoers et de la sécurité sur les fichiers##
1198
## - Mise en place du la rotation des logs			##
1234
## - Mise en place du la rotation des logs			##
1199
## - Configuration dans le cas d'une mise à jour		##
1235
## - Configuration dans le cas d'une mise à jour		##
1200
##################################################################
1236
##################################################################
1201
post_install()
1237
post_install()
1202
{
1238
{
1203
# adaptation du script "chien de garde" (watchdog)
1239
# adaptation du script "chien de garde" (watchdog)
1204
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1240
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1205
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1241
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1206
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1242
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1207
# création de la bannière locale
1243
# création de la bannière locale
1208
	[ -e /etc/mandriva-release.default ]  || cp /etc/mandriva-release /etc/mandriva-release.default
1244
	[ -e /etc/mandriva-release.default ]  || cp /etc/mandriva-release /etc/mandriva-release.default
1209
	cp -f $DIR_CONF/banner /etc/mandriva-release
1245
	cp -f $DIR_CONF/banner /etc/mandriva-release
1210
	echo " V$VERSION" >> /etc/mandriva-release
1246
	echo " V$VERSION" >> /etc/mandriva-release
1211
# création de la bannière SSH
1247
# création de la bannière SSH
1212
	cp /etc/mandriva-release /etc/ssh/alcasar-banner-ssh
1248
	cp /etc/mandriva-release /etc/ssh/alcasar-banner-ssh
1213
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1249
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1214
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1250
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1215
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1251
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1216
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1252
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1217
# sshd écoute côté LAN
1253
# sshd écoute côté LAN
1218
	$SED "s?^#ListenAddress 0\.0\.0\.0?ListenAddress $PRIVATE_IP?g" /etc/ssh/sshd_config
1254
	$SED "s?^#ListenAddress 0\.0\.0\.0?ListenAddress $PRIVATE_IP?g" /etc/ssh/sshd_config
1219
# sshd n'est pas lancé automatiquement au démarrage
1255
# sshd n'est pas lancé automatiquement au démarrage
1220
	/sbin/chkconfig --del sshd
1256
	/sbin/chkconfig --del sshd
-
 
1257
	echo "SSH=off" >> $DIR_DEST_ETC/alcasar-network 
1221
# Coloration des prompts
1258
# Coloration des prompts
1222
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1259
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1223
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1260
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1224
# Droits d'exécution pour utilisateur apache et sysadmin
1261
# Droits d'exécution pour utilisateur apache et sysadmin
1225
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1262
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1226
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1263
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1227
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK_MASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1264
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK_MASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1228
# prise en compte de la rotation des logs sur 1 an (concerne mysql, httpd, dansguardian, squid, radiusd, ulogd)
1265
# prise en compte de la rotation des logs sur 1 an (concerne mysql, httpd, dansguardian, squid, radiusd, ulogd)
1229
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1266
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1230
	chmod 644 /etc/logrotate.d/*
1267
	chmod 644 /etc/logrotate.d/*
1231
# processus lancés par défaut au démarrage
1268
# processus lancés par défaut au démarrage
1232
	for i in ntpd iptables ulogd dnsmasq squid chilli httpd radiusd mysqld dansguardian havp freshclam
1269
	for i in ntpd iptables ulogd dnsmasq squid chilli httpd radiusd mysqld dansguardian havp freshclam
1233
	do
1270
	do
1234
		/sbin/chkconfig --add $i
1271
		/sbin/chkconfig --add $i
1235
	done
1272
	done
1236
# pour éviter les alertes de dépendance avec le service 'netfs'.
1273
# pour éviter les alertes de dépendance entre service.
1237
	$SED "s?^# Required-Start.*?# Required-Start: \$local_fs \$network?g" /etc/init.d/mysqld
1274
	$SED "s?^# Required-Start.*?# Required-Start: \$local_fs \$network?g" /etc/init.d/mysqld
1238
	$SED "s?^# Required-Stop.*?# Required-Stop: \$local_fs \$network?g" /etc/init.d/mysqld
1275
	$SED "s?^# Required-Stop.*?# Required-Stop: \$local_fs \$network?g" /etc/init.d/mysqld
-
 
1276
	$SED "s?^# Should-Start.*?# Should-Start: radiusd ldap?g" /etc/init.d/httpd
-
 
1277
	$SED "s?^# Should-Stop.*?# Should-Stop: radiusd ldap?g" /etc/init.d/httpd
1239
# On affecte le niveau de sécurité du système : type "fileserver"
1278
# On affecte le niveau de sécurité du système : type "fileserver"
1240
	$SED "s?BASE_LEVEL=.*?BASE_LEVEL=fileserver?g" /etc/security/msec/security.conf
1279
	$SED "s?BASE_LEVEL=.*?BASE_LEVEL=fileserver?g" /etc/security/msec/security.conf
1241
# On supprime la vérification du mode promiscious des interfaces réseaux ( nombreuses alertes sur eth1 dûes à Tun0 )
1280
# On supprime la vérification du mode promiscious des interfaces réseaux ( nombreuses alertes sur eth1 dûes à Tun0 )
1242
	$SED "s?CHECK_PROMISC=.*?CHECK_PROMISC=no?g" /etc/security/msec/level.fileserver
1281
	$SED "s?CHECK_PROMISC=.*?CHECK_PROMISC=no?g" /etc/security/msec/level.fileserver
1243
 
1282
 
1244
# On applique les préconisations ANSSI (sysctl + msec quand c'est possible)
1283
# On applique les préconisations ANSSI (sysctl + msec quand c'est possible)
1245
# Apply French Security Agency rules (sysctl + msec when possible)
1284
# Apply French Security Agency rules (sysctl + msec when possible)
1246
# ignorer les broadcast ICMP. (attaque smurf) 
1285
# ignorer les broadcast ICMP. (attaque smurf) 
1247
$SED "s?^ACCEPT_BROADCASTED_ICMP_ECHO=.*?ACCEPT_BROADCASTED_ICMP_ECHO=no?g" /etc/security/msec/level.fileserver
1286
$SED "s?^ACCEPT_BROADCASTED_ICMP_ECHO=.*?ACCEPT_BROADCASTED_ICMP_ECHO=no?g" /etc/security/msec/level.fileserver
1248
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
1287
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
1249
# ignorer les erreurs ICMP bogus
1288
# ignorer les erreurs ICMP bogus
1250
$SED "s?^ACCEPT_BOGUS_ERROR_RESPONSES=.*?ACCEPT_BOGUS_ERROR_RESPONSES=no?g" /etc/security/msec/level.fileserver
1289
$SED "s?^ACCEPT_BOGUS_ERROR_RESPONSES=.*?ACCEPT_BOGUS_ERROR_RESPONSES=no?g" /etc/security/msec/level.fileserver
1251
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
1290
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
1252
# désactiver l’envoi et la réponse aux ICMP redirects
1291
# désactiver l'envoi et la réponse aux ICMP redirects
1253
accept_redirect=`grep accept_redirect /etc/sysctl.conf|wc -l`
1292
accept_redirect=`grep accept_redirect /etc/sysctl.conf|wc -l`
1254
	if [ "$accept_redirect" == "0" ]
1293
	if [ "$accept_redirect" == "0" ]
1255
	then
1294
	then
1256
	      echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.conf
1295
	      echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.conf
1257
	fi
1296
	fi
1258
send_redirect=`grep send_redirect /etc/sysctl.conf|wc -l`
1297
send_redirect=`grep send_redirect /etc/sysctl.conf|wc -l`
1259
	if [ "$send_redirect" == "0" ]
1298
	if [ "$send_redirect" == "0" ]
1260
	then
1299
	then
1261
	      echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
1300
	      echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
1262
	fi
1301
	fi
1263
$SED "s?accept_redirects.*?accept_redirects = 0?g" /etc/sysctl.conf
1302
$SED "s?accept_redirects.*?accept_redirects = 0?g" /etc/sysctl.conf
1264
$SED "s?send_redirects.*?send_redirects = 0?g" /etc/sysctl.conf
1303
$SED "s?send_redirects.*?send_redirects = 0?g" /etc/sysctl.conf
1265
sysctl -w net.ipv4.conf.all.accept_redirects=0
1304
sysctl -w net.ipv4.conf.all.accept_redirects=0
1266
sysctl -w net.ipv4.conf.all.send_redirects=0
1305
sysctl -w net.ipv4.conf.all.send_redirects=0
1267
# activer les SYN Cookies (attaque syn flood)
1306
# activer les SYN Cookies (attaque syn flood)
1268
tcp_syncookies=`grep tcp_syncookies /etc/sysctl.conf|wc -l`
1307
tcp_syncookies=`grep tcp_syncookies /etc/sysctl.conf|wc -l`
1269
	if [ "$tcp_syncookies" == "0" ]
1308
	if [ "$tcp_syncookies" == "0" ]
1270
	then
1309
	then
1271
	      echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
1310
	      echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
1272
	fi
1311
	fi
1273
$SED "s?tcp_syncookies.*?tcp_syncookies = 1?g" /etc/sysctl.conf
1312
$SED "s?tcp_syncookies.*?tcp_syncookies = 1?g" /etc/sysctl.conf
1274
sysctl -w net.ipv4.tcp_syncookies=1
1313
sysctl -w net.ipv4.tcp_syncookies=1
1275
# activer l’antispoofing niveau Noyau
1314
# activer l'antispoofing niveau Noyau
1276
$SED "s?^ENABLE_IP_SPOOFING_PROTECTION.*?ENABLE_IP_SPOOFING_PROTECTION=yes?g" /etc/security/msec/level.fileserver
1315
$SED "s?^ENABLE_IP_SPOOFING_PROTECTION.*?ENABLE_IP_SPOOFING_PROTECTION=yes?g" /etc/security/msec/level.fileserver
1277
sysctl -w net.ipv4.conf.all.rp_filter=1
1316
sysctl -w net.ipv4.conf.all.rp_filter=1
1278
# ignorer le source routing
1317
# ignorer le source routing
1279
accept_source_route=`grep accept_source_route /etc/sysctl.conf|wc -l`
1318
accept_source_route=`grep accept_source_route /etc/sysctl.conf|wc -l`
1280
	if [ "$accept_source_route" == "0" ]
1319
	if [ "$accept_source_route" == "0" ]
1281
	then
1320
	then
1282
	      echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.conf
1321
	      echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.conf
1283
	fi
1322
	fi
1284
$SED "s?accept_source_route.*?accept_source_route = 0?g" /etc/sysctl.conf
1323
$SED "s?accept_source_route.*?accept_source_route = 0?g" /etc/sysctl.conf
1285
sysctl -w net.ipv4.conf.all.accept_source_route=0
1324
sysctl -w net.ipv4.conf.all.accept_source_route=0
1286
# On supprime les log_martians (ALCASAR est souvent entre deux réseaux dont les plans d'adressage sont de type 'privée') 
1325
# On supprime les log_martians (ALCASAR est souvent entre deux réseaux dont les plans d'adressage sont de type 'privée') 
1287
sysctl -w net.ipv4.conf.all.log_martians=0
1326
sysctl -w net.ipv4.conf.all.log_martians=0
1288
$SED "s?^ENABLE_LOG_STRANGE_PACKETS=.*?ENABLE_LOG_STRANGE_PACKETS=no?g" /etc/security/msec/level.fileserver
1327
$SED "s?^ENABLE_LOG_STRANGE_PACKETS=.*?ENABLE_LOG_STRANGE_PACKETS=no?g" /etc/security/msec/level.fileserver
1289
 
1328
 
1290
# On supprime la gestion du <CTRL>+<ALT>+<SUPPR> et des Magic SysReq Keys
1329
# On supprime la gestion du <CTRL>+<ALT>+<SUPPR> et des Magic SysReq Keys
1291
	$SED "s?^ALLOW_REBOOT=.*?ALLOW_REBOOT=no?g" /etc/security/msec/level.fileserver
1330
	$SED "s?^ALLOW_REBOOT=.*?ALLOW_REBOOT=no?g" /etc/security/msec/level.fileserver
1292
# On mets en place la sécurité sur les fichiers
1331
# On mets en place la sécurité sur les fichiers
1293
# des modif par rapport à radius update
1332
# des modif par rapport à radius update
1294
	cat <<EOF > /etc/security/msec/perm.local
1333
	cat <<EOF > /etc/security/msec/perm.local
1295
/var/log/firewall/			root.apache	750
1334
/var/log/firewall/			root.apache	750
1296
/var/log/firewall/*			root.apache	640
1335
/var/log/firewall/*			root.apache	640
1297
/etc/security/msec/perm.local		root.root	640
1336
/etc/security/msec/perm.local		root.root	640
1298
/etc/security/msec/level.local		root.root	640
1337
/etc/security/msec/level.local		root.root	640
1299
/etc/freeradius-web			root.apache	750
1338
/etc/freeradius-web			root.apache	750
1300
/etc/freeradius-web/admin.conf		root.apache	640
1339
/etc/freeradius-web/admin.conf		root.apache	640
1301
/etc/freeradius-web/config.php		root.apache	640
1340
/etc/freeradius-web/config.php		root.apache	640
1302
/etc/raddb/dictionnary			root.radius	640
1341
/etc/raddb/dictionnary			root.radius	640
1303
/etc/raddb/ldap.attrmap			root.radius	640
1342
/etc/raddb/ldap.attrmap			root.radius	640
1304
/etc/raddb/hints			root.radius	640
1343
/etc/raddb/hints			root.radius	640
1305
/etc/raddb/huntgroups			root.radius	640
1344
/etc/raddb/huntgroups			root.radius	640
1306
/etc/raddb/attrs.access_reject		root.radius	640
1345
/etc/raddb/attrs.access_reject		root.radius	640
1307
/etc/raddb/attrs.accounting_response	root.radius	640
1346
/etc/raddb/attrs.accounting_response	root.radius	640
1308
/etc/raddb/acct_users			root.radius	640
1347
/etc/raddb/acct_users			root.radius	640
1309
/etc/raddb/preproxy_users		root.radius	640
1348
/etc/raddb/preproxy_users		root.radius	640
1310
/etc/raddb/modules/ldap			radius.apache	660
1349
/etc/raddb/modules/ldap			radius.apache	660
1311
/etc/raddb/sites-available/alcasar	radius.apache	660
1350
/etc/raddb/sites-available/alcasar	radius.apache	660
1312
/etc/pki/*				root.apache	750
1351
/etc/pki/*				root.apache	750
1313
EOF
1352
EOF
1314
	/usr/sbin/msec
1353
	/usr/sbin/msec
1315
# modification /etc/inittab
1354
# modification /etc/inittab
1316
	[ -e /etc/inittab.default ] || cp /etc/inittab /etc/inittab.default
1355
	[ -e /etc/inittab.default ] || cp /etc/inittab /etc/inittab.default
1317
# On ne garde que 3 terminaux
1356
# On ne garde que 3 terminaux
1318
	$SED "s?^4.*?#&?g" /etc/inittab
1357
	$SED "s?^4.*?#&?g" /etc/inittab
1319
	$SED "s?^5.*?#&?g" /etc/inittab
1358
	$SED "s?^5.*?#&?g" /etc/inittab
1320
	$SED "s?^6.*?#&?g" /etc/inittab
1359
	$SED "s?^6.*?#&?g" /etc/inittab
1321
# On limite le temps d'attente de grub (3s) et on change la résolution d'écran
1360
# On limite le temps d'attente de grub (3s) et on change la résolution d'écran
1322
$SED "s?^timeout.*?timeout 3?g" /boot/grub/menu.lst
1361
$SED "s?^timeout.*?timeout 3?g" /boot/grub/menu.lst
1323
$SED "s?^kernel.*?& vga=791?g" /boot/grub/menu.lst
1362
$SED "s?^kernel.*?& vga=791?g" /boot/grub/menu.lst
1324
# On supprime les services et les utilisateurs inutiles
1363
# On supprime les services et les utilisateurs inutiles
1325
for svc in alsa sound dm atd netfs bootlogd stop-bootlogd
1364
for svc in alsa sound dm atd netfs bootlogd stop-bootlogd
1326
do
1365
do
1327
	/sbin/chkconfig --del $svc
1366
	/sbin/chkconfig --del $svc
1328
done
1367
done
1329
for rm_users in avahi-autoipd avahi icapd
1368
for rm_users in avahi-autoipd avahi icapd
1330
do
1369
do
1331
	user=`cat /etc/passwd|grep $rm_users|cut -d":" -f1`
1370
	user=`cat /etc/passwd|grep $rm_users|cut -d":" -f1`
1332
	if [ "$user" == "$rm_users" ]
1371
	if [ "$user" == "$rm_users" ]
1333
	then
1372
	then
1334
		/usr/sbin/userdel -f $rm_users
1373
		/usr/sbin/userdel -f $rm_users
1335
	fi
1374
	fi
1336
done
1375
done
1337
# dans le cas d'une mise à jour, on charge la conf d'une version précédente
1376
# dans le cas d'une mise à jour, on charge la conf d'une version précédente
1338
if [ "$mode" = "update" ]
1377
if [ "$mode" = "update" ]
1339
then
1378
then
1340
	$DIR_DEST_BIN/alcasar-conf.sh --load
1379
	$DIR_DEST_BIN/alcasar-conf.sh --load
1341
fi
1380
fi
-
 
1381
rm -f /tmp/alcasar-conf*
1342
chown -R root:apache $DIR_DEST_ETC/*
1382
chown -R root:apache $DIR_DEST_ETC/*
1343
chmod -R 660 $DIR_DEST_ETC/*
1383
chmod -R 660 $DIR_DEST_ETC/*
1344
chmod ug+x $DIR_DEST_ETC/digest $DIR_DEST_ETC/alcasar-dnsfilter*
1384
chmod ug+x $DIR_DEST_ETC/digest $DIR_DEST_ETC/alcasar-dnsfilter*
1345
	cd $DIR_INSTALL
1385
	cd $DIR_INSTALL
1346
	echo ""
1386
	echo ""
1347
	echo "#############################################################################"
1387
	echo "#############################################################################"
1348
	echo "#                        Fin d'installation d'ALCASAR                       #"
1388
	echo "#                        Fin d'installation d'ALCASAR                       #"
1349
	echo "#                                                                           #"
1389
	echo "#                                                                           #"
1350
	echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1390
	echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1351
	echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1391
	echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1352
	echo "#                                                                           #"
1392
	echo "#                                                                           #"
1353
	echo "#############################################################################"
1393
	echo "#############################################################################"
1354
	echo
1394
	echo
1355
	echo "- ALCASAR sera fonctionnel après redémarrage du système"
1395
	echo "- ALCASAR sera fonctionnel après redémarrage du système"
1356
	echo
1396
	echo
1357
	echo "- Lisez attentivement la documentation d'exploitation"
1397
	echo "- Lisez attentivement la documentation d'exploitation"
1358
	echo
1398
	echo
1359
	echo "- L'interface de gestion est consultable à partir de n'importe quel poste"
1399
	echo "- L'interface de gestion est consultable à partir de n'importe quel poste"
1360
	echo "	situé sur le réseau de consultation à l'URL http://alcasar"
1400
	echo "	situé sur le réseau de consultation à l'URL http://alcasar"
1361
	echo
1401
	echo
1362
	echo "                   Appuyez sur 'Entrée' pour continuer"
1402
	echo "                   Appuyez sur 'Entrée' pour continuer"
1363
	read a
1403
	read a
1364
# On applique les règles de filtrage (et on les sauvegarde)
1404
# On applique les règles de filtrage (et on les sauvegarde)
1365
 	sh $DIR_DEST_BIN/alcasar-iptables.sh
1405
 	sh $DIR_DEST_BIN/alcasar-iptables.sh
1366
	sleep 2
1406
	sleep 2
1367
	clear
1407
	clear
1368
	reboot
1408
	reboot
1369
} # End post_install ()
1409
} # End post_install ()
1370
 
1410
 
1371
#################################
1411
#################################
1372
#  Boucle principale du script  #
1412
#  Boucle principale du script  #
1373
#################################
1413
#################################
1374
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
1414
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
1375
nb_args=$#
1415
nb_args=$#
1376
args=$1
1416
args=$1
1377
if [ $nb_args -eq 0 ]
1417
if [ $nb_args -eq 0 ]
1378
then
1418
then
1379
	nb_args=1
1419
	nb_args=1
1380
	args="-h"
1420
	args="-h"
1381
fi
1421
fi
1382
case $args in
1422
case $args in
1383
	-\? | -h* | --h*)
1423
	-\? | -h* | --h*)
1384
		echo "$usage"
1424
		echo "$usage"
1385
		exit 0
1425
		exit 0
1386
		;;
1426
		;;
1387
	-i | --install)
1427
	-i | --install)
1388
		header_install
1428
		header_install
1389
		testing
1429
		testing
1390
# On teste la présence d'une version déjà installée
1430
# On teste la présence d'une version déjà installée
1391
		if [ -e $DIR_WEB/VERSION ]
1431
		if [ -e $DIR_WEB/VERSION ]
1392
		then
1432
		then
1393
			actual_version=`cat $DIR_WEB/VERSION`
1433
			actual_version=`cat $DIR_WEB/VERSION`
-
 
1434
			if [ $Lang == "fr" ]
1394
			echo -n "La version "; echo -n $actual_version ; echo " d'ALCASAR est déjà installée";
1435
				then echo -n "La version "; echo -n $actual_version ; echo " d'ALCASAR est déjà installée";
1395
			echo -n "ALCASAR Version "; echo -n $actual_version ; echo " is already installed";
1436
				else echo -n "ALCASAR Version "; echo -n $actual_version ; echo " is already installed";
-
 
1437
			fi
1396
			response=0
1438
			response=0
1397
			PTN='^[oOnNyY]$'
1439
			PTN='^[oOnNyY]$'
1398
			until [[ $(expr $response : $PTN) -gt 0 ]]
1440
			until [[ $(expr $response : $PTN) -gt 0 ]]
1399
			do
1441
			do
-
 
1442
				if [ $Lang == "fr" ]
1400
				echo "Voulez-vous effectuer une mise à jour (O/n)? ";
1443
					then echo -n "Voulez-vous effectuer une mise à jour (O/n)? ";
1401
				echo -n "Do you want to update (Y/n)?";
1444
					else echo -n "Do you want to update (Y/n)?";
-
 
1445
				 fi
1402
				read response
1446
				read response
1403
			done
1447
			done
1404
			if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "y" ] || [ "$response" = "Y" ]
1448
			if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "y" ] || [ "$response" = "Y" ]
1405
			then
1449
			then
1406
				RUNNING_VERSION=`cat $DIR_WEB/VERSION|cut -d" " -f1`
1450
				RUNNING_VERSION=`cat $DIR_WEB/VERSION|cut -d" " -f1`
1407
				MAJ_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f1`
1451
				MAJ_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f1`
1408
				MIN_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f2|cut -c1`
1452
				MIN_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f2|cut -c1`
1409
				UPD_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f3`
1453
				UPD_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f3`
1410
# On crée le fichier de conf de la version actuelle
1454
# On crée le fichier de conf de la version actuelle
1411
				chmod u+x $DIR_SCRIPTS/alcasar-conf.sh
1455
				chmod u+x $DIR_SCRIPTS/alcasar-conf.sh
1412
				$DIR_SCRIPTS/alcasar-conf.sh --create
1456
				$DIR_SCRIPTS/alcasar-conf.sh --create
1413
				mode="update"
1457
				mode="update"
1414
			fi
1458
			fi
1415
		fi
1459
		fi
1416
# System update - rpms install
1460
# RPMs install
1417
	$DIR_SCRIPTS/alcasar-urpmi.sh
1461
		$DIR_SCRIPTS/alcasar-urpmi.sh
1418
	if [ "$?" != "0" ]
1462
		if [ "$?" != "0" ]
1419
	then
1463
		then
1420
		exit 0
1464
			exit 0
1421
	fi
1465
		fi
1422
	if [ -e /tmp/alcasar-conf.tar.gz ]
1466
		if [ -e $DIR_WEB/VERSION ]
1423
		then
1467
		then
1424
			echo "#### Installation avec mise à jour ####"
-
 
1425
			echo "#### Installation with update     ####"
-
 
1426
# On désinstalle la version actuelle
1468
# On désinstalle la version actuelle
1427
			$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1469
			$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
-
 
1470
		fi
-
 
1471
		if [ -e /tmp/alcasar-conf.tar.gz ]
-
 
1472
		then
-
 
1473
			if [ $Lang == "fr" ]
-
 
1474
				then echo "#### Installation avec mise à jour ####"
-
 
1475
				else echo "#### Installation with update     ####"
-
 
1476
			fi
1428
# On récupère le nom d'organisme à partir de fichier de conf
1477
# On récupère le nom d'organisme à partir de fichier de conf
1429
			tar -xvf /tmp/alcasar-conf.tar.gz conf/organisme 
1478
			tar -xvf /tmp/alcasar-conf.tar.gz conf/organisme 
1430
			ORGANISME=`cat $DIR_CONF/organisme`
1479
			ORGANISME=`cat $DIR_CONF/organisme`
1431
			mode="update"
1480
			mode="update"
1432
		else
1481
		else
1433
			mode="install"
1482
			mode="install"
1434
		fi
1483
		fi
1435
		for func in init network gestion AC init_db param_radius param_web_radius param_chilli param_squid param_dansguardian antivirus firewall param_ulogd param_awstats param_dnsmasq BL cron post_install
1484
		for func in init network gestion AC init_db param_radius param_web_radius param_chilli param_squid param_dansguardian antivirus firewall param_ulogd param_awstats param_dnsmasq BL cron post_install
1436
 
1485
 
1437
		do
1486
		do
1438
			$func
1487
			$func
1439
 # echo "*** 'debug' : end of function $func ***"; read a
1488
 echo "*** 'debug' : end of function $func ***"; read a
1440
		done
1489
		done
1441
		;;
1490
		;;
1442
	-u | --uninstall)
1491
	-u | --uninstall)
1443
		if [ ! -e $DIR_DEST_SBIN/alcasar-uninstall.sh ]
1492
		if [ ! -e $DIR_DEST_SBIN/alcasar-uninstall.sh ]
1444
		then
1493
		then
1445
			echo "Aucune version d'ALCASAR n'a été trouvée.";
1494
			echo "Aucune version d'ALCASAR n'a été trouvée.";
1446
			exit 0
1495
			exit 0
1447
		fi
1496
		fi
1448
		response=0
1497
		response=0
1449
		PTN='^[oOnN]$'
1498
		PTN='^[oOnN]$'
1450
		until [[ $(expr $response : $PTN) -gt 0 ]]
1499
		until [[ $(expr $response : $PTN) -gt 0 ]]
1451
		do
1500
		do
1452
			echo -n "Voulez-vous créer le fichier de conf de la version actuelle (0/n)? "
1501
			echo -n "Voulez-vous créer le fichier de conf de la version actuelle (0/n)? "
1453
			read response
1502
			read response
1454
		done
1503
		done
1455
		if [ "$reponse" = "o" ] || [ "$reponse" = "O" ]
1504
		if [ "$reponse" = "o" ] || [ "$reponse" = "O" ]
1456
		then
1505
		then
1457
			$DIR_SCRIPT/alcasar-conf.sh --create
1506
			$DIR_SCRIPT/alcasar-conf.sh --create
1458
		else	
1507
		else	
1459
			rm -f /tmp/alcasar-conf*
1508
			rm -f /tmp/alcasar-conf*
1460
		fi
1509
		fi
1461
# On désinstalle la version actuelle
1510
# On désinstalle la version actuelle
1462
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1511
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1463
		;;
1512
		;;
1464
	*)
1513
	*)
1465
		echo "Argument inconnu :$1";
1514
		echo "Argument inconnu :$1";
1466
		echo "Unknown argument :$1";
1515
		echo "Unknown argument :$1";
1467
		echo "$usage"
1516
		echo "$usage"
1468
		exit 1
1517
		exit 1
1469
		;;
1518
		;;
1470
esac
1519
esac
1471
# end of script
1520
# end of script
1472
 
1521
 
1473
 
1522