Subversion Repositories ALCASAR

Rev

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

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