Subversion Repositories ALCASAR

Rev

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

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