Subversion Repositories ALCASAR

Rev

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

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