Subversion Repositories ALCASAR

Rev

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

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