Subversion Repositories ALCASAR

Rev

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

Rev 2269 Rev 2272
1
#!/bin/bash
1
#!/bin/bash
2
#  $Id: alcasar.sh 2269 2017-06-04 10:42:26Z richard $ 
2
#  $Id: alcasar.sh 2272 2017-06-04 19:03:43Z tom.houdayer $ 
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
# Coovachilli, freeradius, mariaDB, apache, netfilter, dansguardian, ntpd, openssl, dnsmasq, gammu, havp, libclamav, Ulog, fail2ban, tinyproxy, NFsen and NFdump
22
# Coovachilli, freeradius, mariaDB, apache, netfilter, dansguardian, ntpd, openssl, dnsmasq, gammu, havp, libclamav, Ulog, fail2ban, tinyproxy, NFsen and NFdump
23
 
23
 
24
# Options :
24
# Options :
25
#       -i or --install
25
#       -i or --install
26
#       -u or --uninstall
26
#       -u or --uninstall
27
 
27
 
28
# Functions :
28
# Functions :
29
#	testing			: connectivity tests, free space test and mageia version test
29
#	testing			: connectivity tests, free space test and mageia version test
30
#	init			: Installation of RPM and scripts
30
#	init			: Installation of RPM and scripts
31
#	network			: Network parameters
31
#	network			: Network parameters
32
#	ACC			: ALCASAR Control Center installation
32
#	ACC			: ALCASAR Control Center installation
33
#	CA			: Certification Authority initialization
33
#	CA			: Certification Authority initialization
34
#	time_server		: NTPd configuration
34
#	time_server		: NTPd configuration
35
#	init_db			: Initilization of radius database managed with MariaDB
35
#	init_db			: Initilization of radius database managed with MariaDB
36
#	radius			: FreeRadius initialisation
36
#	radius			: FreeRadius initialisation
37
#	chilli			: coovachilli initialisation (+authentication page)
37
#	chilli			: coovachilli initialisation (+authentication page)
38
#	dansguardian		: DansGuardian filtering HTTP proxy configuration
38
#	dansguardian		: DansGuardian filtering HTTP proxy configuration
39
#	antivirus		: HAVP + libclamav configuration
39
#	antivirus		: HAVP + libclamav configuration
40
#	tinyproxy		: little proxy for user filtered with "WL + antivirus" and "antivirus"
40
#	tinyproxy		: little proxy for user filtered with "WL + antivirus" and "antivirus"
41
#	ulogd			: log system in userland (match NFLOG target of iptables)
41
#	ulogd			: log system in userland (match NFLOG target of iptables)
42
#	nfsen		:	: Configuration of Nfsen Netflow grapher 
42
#	nfsen		:	: Configuration of Nfsen Netflow grapher 
43
#	dnsmasq			: Name server configuration
43
#	dnsmasq			: Name server configuration
44
#	vnstat			: little network stat daemon
44
#	vnstat			: little network stat daemon
45
#	BL			: Adaptation of Toulouse University BlackList : split into 3 BL (for Dnsmasq, for dansguardian and for Netfilter)
45
#	BL			: Adaptation of Toulouse University BlackList : split into 3 BL (for Dnsmasq, for dansguardian and for Netfilter)
46
#	cron			: Logs export + watchdog + connexion statistics
46
#	cron			: Logs export + watchdog + connexion statistics
47
#	fail2ban		: Fail2ban IDS installation and configuration
47
#	fail2ban		: Fail2ban IDS installation and configuration
48
#	gammu_smsd		: Autoregister addon via SMS (gammu-smsd)
48
#	gammu_smsd		: Autoregister addon via SMS (gammu-smsd)
49
#	msec			: Mandriva security package configuration
49
#	msec			: Mandriva security package configuration
50
#	post_install		: Security, log rotation, etc.
50
#	post_install		: Security, log rotation, etc.
51
 
51
 
52
DATE=`date '+%d %B %Y - %Hh%M'`
52
DATE=`date '+%d %B %Y - %Hh%M'`
53
DATE_SHORT=`date '+%d/%m/%Y'`
53
DATE_SHORT=`date '+%d/%m/%Y'`
54
Lang=`echo $LANG|cut -c 1-2`
54
Lang=`echo $LANG|cut -c 1-2`
55
mode="install"
55
mode="install"
56
# ******* Files parameters - paramètres fichiers *********
56
# ******* Files parameters - paramètres fichiers *********
57
DIR_INSTALL=`pwd`				# current directory 
57
DIR_INSTALL=`pwd`				# current directory 
58
DIR_CONF="$DIR_INSTALL/conf"			# install directory (with conf files)
58
DIR_CONF="$DIR_INSTALL/conf"			# install directory (with conf files)
59
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# install directory (with script files)
59
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# install directory (with script files)
60
DIR_BLACKLIST="$DIR_INSTALL/blacklist"		# install directory (with blacklist files)
60
DIR_BLACKLIST="$DIR_INSTALL/blacklist"		# install directory (with blacklist files)
61
DIR_SAVE="/var/Save"				# backup directory (traceability_log, user_db, security_log)
61
DIR_SAVE="/var/Save"				# backup directory (traceability_log, user_db, security_log)
62
DIR_WEB="/var/www/html"				# directory of APACHE
62
DIR_WEB="/var/www/html"				# directory of APACHE
63
DIR_DG="/etc/dansguardian"			# directory of DansGuardian
63
DIR_DG="/etc/dansguardian"			# directory of DansGuardian
64
DIR_ACC="$DIR_WEB/acc"				# directory of the 'ALCASAR Control Center'
64
DIR_ACC="$DIR_WEB/acc"				# directory of the 'ALCASAR Control Center'
65
DIR_DEST_BIN="/usr/local/bin"			# directory of ALCASAR scripts
65
DIR_DEST_BIN="/usr/local/bin"			# directory of ALCASAR scripts
66
DIR_DEST_ETC="/usr/local/etc"			# directory of ALCASAR conf files
66
DIR_DEST_ETC="/usr/local/etc"			# directory of ALCASAR conf files
67
DIR_DEST_SHARE="/usr/local/share"		# directory of share files used by ALCASAR (dnsmasq for instance)
67
DIR_DEST_SHARE="/usr/local/share"		# directory of share files used by ALCASAR (dnsmasq for instance)
68
CONF_FILE="$DIR_DEST_ETC/alcasar.conf"		# central ALCASAR conf file
68
CONF_FILE="$DIR_DEST_ETC/alcasar.conf"		# central ALCASAR conf file
69
PASSWD_FILE="/root/ALCASAR-passwords.txt"	# text file with the passwords and shared secrets
69
PASSWD_FILE="/root/ALCASAR-passwords.txt"	# text file with the passwords and shared secrets
70
# ******* DBMS parameters - paramètres SGBD ********
70
# ******* DBMS parameters - paramètres SGBD ********
71
DB_RADIUS="radius"				# database name used by FreeRadius server
71
DB_RADIUS="radius"				# database name used by FreeRadius server
72
DB_USER="radius"				# user name allows to request the users database
72
DB_USER="radius"				# user name allows to request the users database
73
DB_GAMMU="gammu"				# database name used by Gammu-smsd
73
DB_GAMMU="gammu"				# database name used by Gammu-smsd
74
# ******* Network parameters - paramètres réseau *******
74
# ******* Network parameters - paramètres réseau *******
75
HOSTNAME="alcasar"				# default hostname
75
HOSTNAME="alcasar"				# default hostname
76
DOMAIN="localdomain"				# default local domain
76
DOMAIN="localdomain"				# default local domain
77
EXTIF=`/usr/sbin/ip route|grep default|head -n1|cut -d" " -f5`							# EXTIF is connected to the ISP broadband modem/router (In France : Box-FAI)
77
EXTIF=`/usr/sbin/ip route|grep default|head -n1|cut -d" " -f5`							# EXTIF is connected to the ISP broadband modem/router (In France : Box-FAI)
78
INTIF=`/usr/sbin/ip link|grep '^[[:digit:]]:'|grep -v "lo\|$EXTIF\|tun0"|head -n1|cut -d" " -f2|tr -d ":"`	# INTIF is connected to the consultation network
78
INTIF=`/usr/sbin/ip link|grep '^[[:digit:]]:'|grep -v "lo\|$EXTIF\|tun0"|head -n1|cut -d" " -f2|tr -d ":"`	# INTIF is connected to the consultation network
79
MTU="1500"
79
MTU="1500"
80
DEFAULT_PRIVATE_IP_MASK="192.168.182.1/24"	# Default ALCASAR IP address
80
DEFAULT_PRIVATE_IP_MASK="192.168.182.1/24"	# Default ALCASAR IP address
81
# ****** Paths - chemin des commandes *******
81
# ****** Paths - chemin des commandes *******
82
SED="/bin/sed -i"
82
SED="/bin/sed -i"
83
# ****************** End of global parameters *********************
83
# ****************** End of global parameters *********************
84
 
84
 
85
license ()
85
license ()
86
{
86
{
87
	if [ $Lang == "fr" ]
87
	if [ $Lang == "fr" ]
88
	then
88
	then
89
		cat $DIR_INSTALL/gpl-warning.fr.txt | more
89
		cat $DIR_INSTALL/gpl-warning.fr.txt | more
90
	else
90
	else
91
		cat $DIR_INSTALL/gpl-warning.txt | more
91
		cat $DIR_INSTALL/gpl-warning.txt | more
92
	fi
92
	fi
93
	response=0
93
	response=0
94
	PTN='^[oOyYnN]$'
94
	PTN='^[oOyYnN]$'
95
	until [[ $(expr $response : $PTN) -gt 0 ]]
95
	until [[ $(expr $response : $PTN) -gt 0 ]]
96
	do
96
	do
97
		if [ $Lang == "fr" ]
97
		if [ $Lang == "fr" ]
98
			then echo -n "Acceptez-vous les termes de cette licence (O/n)? : "
98
			then echo -n "Acceptez-vous les termes de cette licence (O/n)? : "
99
			else echo -n "Do you accept the terms of this license (Y/n)? : "
99
			else echo -n "Do you accept the terms of this license (Y/n)? : "
100
		fi
100
		fi
101
		read response
101
		read response
102
	done
102
	done
103
	if [ "$response" = "n" ] || [ "$response" = "N" ]
103
	if [ "$response" = "n" ] || [ "$response" = "N" ]
104
	then
104
	then
105
		exit 1
105
		exit 1
106
	fi
106
	fi
107
}
107
}
108
 
108
 
109
header_install ()
109
header_install ()
110
{
110
{
111
	clear
111
	clear
112
	echo "-----------------------------------------------------------------------------"
112
	echo "-----------------------------------------------------------------------------"
113
	echo "                     ALCASAR V$VERSION Installation"
113
	echo "                     ALCASAR V$VERSION Installation"
114
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
114
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
115
	echo "-----------------------------------------------------------------------------"
115
	echo "-----------------------------------------------------------------------------"
116
}
116
}
117
 
117
 
118
##################################################################
118
##################################################################
119
##			Function "testing"			##
119
##			Function "testing"			##
120
## - Test of Mageia version					##
120
## - Test of Mageia version					##
121
## - Test of ALCASAR version (if already installed)		##
121
## - Test of ALCASAR version (if already installed)		##
122
## - Test of free space on /var  (>10G)				##
122
## - Test of free space on /var  (>10G)				##
123
## - Test of Internet access					##
123
## - Test of Internet access					##
124
##################################################################
124
##################################################################
125
testing ()
125
testing ()
126
{
126
{
127
# Test of Mageia version
127
# Test of Mageia version
128
# extract the current Mageia version and hardware architecture (i586 ou X64)
128
# extract the current Mageia version and hardware architecture (i586 ou X64)
129
	fic=`cat /etc/product.id`
129
	fic=`cat /etc/product.id`
130
	unknown_os=0
130
	unknown_os=0
131
	old="$IFS"
131
	old="$IFS"
132
	IFS=","
132
	IFS=","
133
	set $fic
133
	set $fic
134
	for i in $*
134
	for i in $*
135
	do
135
	do
136
		if [ "`echo $i|grep distribution|cut -d'=' -f1`" == "distribution" ]
136
		if [ "`echo $i|grep distribution|cut -d'=' -f1`" == "distribution" ]
137
			then 
137
			then 
138
			DISTRIBUTION=`echo $i|cut -d"=" -f2`
138
			DISTRIBUTION=`echo $i|cut -d"=" -f2`
139
			unknown_os=`expr $unknown_os + 1`
139
			unknown_os=`expr $unknown_os + 1`
140
		fi
140
		fi
141
		if [ "`echo $i|grep version|cut -d'=' -f1`" == "version" ]
141
		if [ "`echo $i|grep version|cut -d'=' -f1`" == "version" ]
142
			then 
142
			then 
143
			CURRENT_VERSION=`echo $i|cut -d"=" -f2`
143
			CURRENT_VERSION=`echo $i|cut -d"=" -f2`
144
			unknown_os=`expr $unknown_os + 1`
144
			unknown_os=`expr $unknown_os + 1`
145
		fi
145
		fi
146
		if [ "`echo $i|grep arch|cut -d'=' -f1`" == "arch" ]
146
		if [ "`echo $i|grep arch|cut -d'=' -f1`" == "arch" ]
147
			then 
147
			then 
148
			ARCH=`echo $i|cut -d"=" -f2`
148
			ARCH=`echo $i|cut -d"=" -f2`
149
			unknown_os=`expr $unknown_os + 1`
149
			unknown_os=`expr $unknown_os + 1`
150
		fi
150
		fi
151
	done
151
	done
152
	if [ "$ARCH" == "i586" ]
152
	if [ "$ARCH" == "i586" ]
153
		then
153
		then
154
		if [ $Lang == "fr" ]
154
		if [ $Lang == "fr" ]
155
			then echo -n "Votre architecture matérielle doit être en 64bits"
155
			then echo -n "Votre architecture matérielle doit être en 64bits"
156
			else echo -n "You hardware architecture must be 64bits"
156
			else echo -n "You hardware architecture must be 64bits"
157
			exit 0
157
			exit 0
158
		fi
158
		fi
159
	fi
159
	fi
160
	IFS="$old"
160
	IFS="$old"
161
# Test if ALCASAR is already installed
161
# Test if ALCASAR is already installed
162
	if [ -e $CONF_FILE ]
162
	if [ -e $CONF_FILE ]
163
	then
163
	then
164
		current_version=`cat $CONF_FILE | grep VERSION | cut -d"=" -f2`
164
		current_version=`cat $CONF_FILE | grep VERSION | cut -d"=" -f2`
165
		if [ $Lang == "fr" ]
165
		if [ $Lang == "fr" ]
166
			then echo -n "La version "; echo -n $current_version ; echo " d'ALCASAR est déjà installée";
166
			then echo -n "La version "; echo -n $current_version ; echo " d'ALCASAR est déjà installée";
167
			else echo -n "ALCASAR Version "; echo -n $current_version ; echo " is already installed";
167
			else echo -n "ALCASAR Version "; echo -n $current_version ; echo " is already installed";
168
		fi
168
		fi
169
		response=0
169
		response=0
170
		PTN='^[oOnNyY]$'
170
		PTN='^[oOnNyY]$'
171
		until [[ $(expr $response : $PTN) -gt 0 ]]
171
		until [[ $(expr $response : $PTN) -gt 0 ]]
172
		do
172
		do
173
			if [ $Lang == "fr" ]
173
			if [ $Lang == "fr" ]
174
				then echo -n "Voulez-vous effectuer une mise à jour (O/n)? ";
174
				then echo -n "Voulez-vous effectuer une mise à jour (O/n)? ";
175
				else echo -n "Do you want to update (Y/n)?";
175
				else echo -n "Do you want to update (Y/n)?";
176
			 fi
176
			 fi
177
			read response
177
			read response
178
		done
178
		done
179
		if [ "$response" = "n" ] || [ "$response" = "N" ] 
179
		if [ "$response" = "n" ] || [ "$response" = "N" ] 
180
		then
180
		then
181
			rm -f /tmp/alcasar-conf*
181
			rm -f /tmp/alcasar-conf*
182
		else
182
		else
183
# Retrieve former NICname
183
# Retrieve former NICname
184
			EXTIF=`grep ^EXTIF= $CONF_FILE|cut -d"=" -f2`				# EXTernal InterFace
184
			EXTIF=`grep ^EXTIF= $CONF_FILE|cut -d"=" -f2`				# EXTernal InterFace
185
			INTIF=`grep ^INTIF= $CONF_FILE|cut -d"=" -f2`				# INTernal InterFace
185
			INTIF=`grep ^INTIF= $CONF_FILE|cut -d"=" -f2`				# INTernal InterFace
186
# Create the current conf file
186
# Create the current conf file
187
			$DIR_SCRIPTS/alcasar-conf.sh --create
187
			$DIR_SCRIPTS/alcasar-conf.sh --create
188
			mode="update"
188
			mode="update"
189
		fi
189
		fi
190
	fi
190
	fi
191
	if [[ ( $unknown_os != 3 ) || ("$DISTRIBUTION" != "Mageia" ) || ( "$CURRENT_VERSION" != "5" ) ]]
191
	if [[ ( $unknown_os != 3 ) || ("$DISTRIBUTION" != "Mageia" ) || ( "$CURRENT_VERSION" != "5" ) ]]
192
		then
192
		then
193
		if [ -e /tmp/alcasar-conf.tar.gz ] # update
193
		if [ -e /tmp/alcasar-conf.tar.gz ] # update
194
			then
194
			then
195
			echo
195
			echo
196
			if [ $Lang == "fr" ]
196
			if [ $Lang == "fr" ]
197
				then	
197
				then	
198
				echo "La mise à jour automatique d'ALCASAR ne peut pas être réalisée."
198
				echo "La mise à jour automatique d'ALCASAR ne peut pas être réalisée."
199
				echo "1 - Effectuez une sauvegarde des fichiers de traçabilité et de la base des usagers via l'ACC"
199
				echo "1 - Effectuez une sauvegarde des fichiers de traçabilité et de la base des usagers via l'ACC"
200
				echo "2 - Installez Linux-Mageia 5.1-64bits et ALCASAR (cf. doc d'installation)"
200
				echo "2 - Installez Linux-Mageia 5.1-64bits et ALCASAR (cf. doc d'installation)"
201
				echo "3 - Importez votre base des usagers"
201
				echo "3 - Importez votre base des usagers"
202
			else
202
			else
203
				echo "The automatic update of ALCASAR can't be performed."
203
				echo "The automatic update of ALCASAR can't be performed."
204
				echo "1 - Save your traceability files and the user database"
204
				echo "1 - Save your traceability files and the user database"
205
				echo "2 - Install Linux-Mageia 5.1-64bits & ALCASAR (cf. installation doc)"
205
				echo "2 - Install Linux-Mageia 5.1-64bits & ALCASAR (cf. installation doc)"
206
				echo "3 - Import your users database"
206
				echo "3 - Import your users database"
207
			fi
207
			fi
208
		else
208
		else
209
			if [ $Lang == "fr" ]
209
			if [ $Lang == "fr" ]
210
				then	
210
				then	
211
				echo "L'installation d'ALCASAR ne peut pas être réalisée."
211
				echo "L'installation d'ALCASAR ne peut pas être réalisée."
212
			else
212
			else
213
				echo "The installation of ALCASAR can't be performed."
213
				echo "The installation of ALCASAR can't be performed."
214
			fi
214
			fi
215
		fi
215
		fi
216
		echo
216
		echo
217
		if [ $Lang == "fr" ]
217
		if [ $Lang == "fr" ]
218
			then	
218
			then	
219
			echo "Le système d'exploitation doit être remplacé (Mageia5.1-64bits)"
219
			echo "Le système d'exploitation doit être remplacé (Mageia5.1-64bits)"
220
		else
220
		else
221
			echo "The OS must be replaced (Mageia5.1-64bits)"
221
			echo "The OS must be replaced (Mageia5.1-64bits)"
222
		fi
222
		fi
223
		exit 0
223
		exit 0
224
	fi
224
	fi
225
	if [ ! -d /var/log/netflow/porttracker ]
225
	if [ ! -d /var/log/netflow/porttracker ]
226
		then
226
		then
227
# Test of free space on /var
227
# Test of free space on /var
228
		free_space=`df -BG --output=avail /var|tail -1|tr -d [:space:]G`
228
		free_space=`df -BG --output=avail /var|tail -1|tr -d [:space:]G`
229
		if [ $free_space -lt 10 ]
229
		if [ $free_space -lt 10 ]
230
			then
230
			then
231
			if [ $Lang == "fr" ]
231
			if [ $Lang == "fr" ]
232
				then echo "place disponible sur /var insufisante ($free_space Go au lieu de 10 Go au minimum)"
232
				then echo "place disponible sur /var insufisante ($free_space Go au lieu de 10 Go au minimum)"
233
				else echo "not enough free space on /var ($free_space GB instead of at least 10 GB)"
233
				else echo "not enough free space on /var ($free_space GB instead of at least 10 GB)"
234
			fi
234
			fi
235
		exit 0
235
		exit 0
236
		fi
236
		fi
237
	fi
237
	fi
238
	if [ $Lang == "fr" ]
238
	if [ $Lang == "fr" ]
239
		then echo -n "Tests des paramètres réseau : "
239
		then echo -n "Tests des paramètres réseau : "
240
		else echo -n "Network parameters tests : "
240
		else echo -n "Network parameters tests : "
241
	fi
241
	fi
242
# Test of Ethernet links state
242
# Test of Ethernet links state
243
	DOWN_IF=`/usr/sbin/ip link|grep "NO-CARRIER"|cut -d":" -f2|tr -d " "`
243
	DOWN_IF=`/usr/sbin/ip link|grep "NO-CARRIER"|cut -d":" -f2|tr -d " "`
244
	for i in $DOWN_IF
244
	for i in $DOWN_IF
245
	do
245
	do
246
		if [ $Lang == "fr" ]
246
		if [ $Lang == "fr" ]
247
		then 
247
		then 
248
			echo "Échec"
248
			echo "Échec"
249
			echo "Le lien réseau de la carte $i n'est pas actif."
249
			echo "Le lien réseau de la carte $i n'est pas actif."
250
			echo "Assurez-vous que cette carte est bien connectée à un équipement (commutateur, A.P., etc.)"
250
			echo "Assurez-vous que cette carte est bien connectée à un équipement (commutateur, A.P., etc.)"
251
		else
251
		else
252
			echo "Failed"
252
			echo "Failed"
253
			echo "The link state of $i interface is down."
253
			echo "The link state of $i interface is down."
254
			echo "Make sure that this network card is connected to a switch or an A.P."
254
			echo "Make sure that this network card is connected to a switch or an A.P."
255
		fi
255
		fi
256
		exit 0
256
		exit 0
257
	done
257
	done
258
	echo -n "."
258
	echo -n "."
259
 
259
 
260
# Test EXTIF config files
260
# Test EXTIF config files
261
	PUBLIC_IP_MASK=`ip addr show $EXTIF|grep "inet "|cut -d" " -f6`
261
	PUBLIC_IP_MASK=`ip addr show $EXTIF|grep "inet "|cut -d" " -f6`
262
	PUBLIC_IP=`echo $PUBLIC_IP_MASK | cut -d"/" -f1`
262
	PUBLIC_IP=`echo $PUBLIC_IP_MASK | cut -d"/" -f1`
263
	PUBLIC_GATEWAY=`ip route list|grep $EXTIF|grep ^default|cut -d" " -f3`
263
	PUBLIC_GATEWAY=`ip route list|grep $EXTIF|grep ^default|cut -d" " -f3`
264
	if [ `echo $PUBLIC_IP|wc -c` -lt 7 ] || [ `echo $PUBLIC_GATEWAY|wc -c` -lt 7 ]
264
	if [ `echo $PUBLIC_IP|wc -c` -lt 7 ] || [ `echo $PUBLIC_GATEWAY|wc -c` -lt 7 ]
265
	then
265
	then
266
		if [ $Lang == "fr" ]
266
		if [ $Lang == "fr" ]
267
		then 
267
		then 
268
			echo "Échec"
268
			echo "Échec"
269
			echo "La carte réseau connectée à Internet ($EXTIF) n'est pas correctement configurée."
269
			echo "La carte réseau connectée à Internet ($EXTIF) n'est pas correctement configurée."
270
			echo "Renseignez les champs suivants dans le fichier '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
270
			echo "Renseignez les champs suivants dans le fichier '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
271
			echo "Appliquez les changements : 'systemctl restart network'"
271
			echo "Appliquez les changements : 'systemctl restart network'"
272
		else
272
		else
273
			echo "Failed"
273
			echo "Failed"
274
			echo "The Internet connected network card ($EXTIF) isn't well configured."
274
			echo "The Internet connected network card ($EXTIF) isn't well configured."
275
			echo "The folowing parametres must be set in the file '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
275
			echo "The folowing parametres must be set in the file '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
276
			echo "Apply the new configuration 'systemctl restart network'"
276
			echo "Apply the new configuration 'systemctl restart network'"
277
		fi
277
		fi
278
		echo "DEVICE=$EXTIF"
278
		echo "DEVICE=$EXTIF"
279
		echo "IPADDR="
279
		echo "IPADDR="
280
		echo "NETMASK="
280
		echo "NETMASK="
281
		echo "GATEWAY="
281
		echo "GATEWAY="
282
		echo "DNS1="
282
		echo "DNS1="
283
		echo "DNS2="
283
		echo "DNS2="
284
		echo "ONBOOT=yes"
284
		echo "ONBOOT=yes"
285
		exit 0
285
		exit 0
286
	fi
286
	fi
287
	echo -n "."
287
	echo -n "."
288
 
288
 
289
# Test if router is alive (Box FAI)
289
# Test if router is alive (Box FAI)
290
	if [ `ip route list|grep $EXTIF|grep -c ^default` -ne "1" ] ; then
290
	if [ `ip route list|grep $EXTIF|grep -c ^default` -ne "1" ] ; then
291
		if [ $Lang == "fr" ]
291
		if [ $Lang == "fr" ]
292
		then 
292
		then 
293
			echo "Échec"
293
			echo "Échec"
294
			echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
294
			echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
295
			echo "Réglez ce problème puis relancez ce script."
295
			echo "Réglez ce problème puis relancez ce script."
296
		else
296
		else
297
			echo "Failed"
297
			echo "Failed"
298
			echo "You haven't configured Internet access or Internet link is on the wrong Ethernet card"
298
			echo "You haven't configured Internet access or Internet link is on the wrong Ethernet card"
299
			echo "Resolv this problem, then restart this script."
299
			echo "Resolv this problem, then restart this script."
300
		fi
300
		fi
301
		exit 0
301
		exit 0
302
	fi
302
	fi
303
	echo -n "."
303
	echo -n "."
304
# On teste le lien vers le routeur par defaut
304
# On teste le lien vers le routeur par defaut
305
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $PUBLIC_GATEWAY|grep response|cut -d" " -f2`
305
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $PUBLIC_GATEWAY|grep response|cut -d" " -f2`
306
	if [ $(expr $arp_reply) -eq 0 ]
306
	if [ $(expr $arp_reply) -eq 0 ]
307
	       	then
307
	       	then
308
		if [ $Lang == "fr" ]
308
		if [ $Lang == "fr" ]
309
		then 
309
		then 
310
			echo "Échec"
310
			echo "Échec"
311
			echo "Le routeur de site ou la Box Internet ($PUBLIC_GATEWAY) ne répond pas."
311
			echo "Le routeur de site ou la Box Internet ($PUBLIC_GATEWAY) ne répond pas."
312
			echo "Réglez ce problème puis relancez ce script."
312
			echo "Réglez ce problème puis relancez ce script."
313
		else
313
		else
314
			echo "Failed"
314
			echo "Failed"
315
			echo "The Internet gateway doesn't answered"
315
			echo "The Internet gateway doesn't answered"
316
			echo "Resolv this problem, then restart this script."
316
			echo "Resolv this problem, then restart this script."
317
		fi
317
		fi
318
		exit 0
318
		exit 0
319
	fi
319
	fi
320
	echo -n "."
320
	echo -n "."
321
# On teste la connectivité Internet
321
# On teste la connectivité Internet
322
	rm -rf /tmp/con_ok.html
322
	rm -rf /tmp/con_ok.html
323
	/usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
323
	/usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
324
	if [ ! -e /tmp/con_ok.html ]
324
	if [ ! -e /tmp/con_ok.html ]
325
	then
325
	then
326
		if [ $Lang == "fr" ]
326
		if [ $Lang == "fr" ]
327
		then 
327
		then 
328
			echo "La tentative de connexion vers Internet a échoué (google.fr)."
328
			echo "La tentative de connexion vers Internet a échoué (google.fr)."
329
			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
329
			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
330
			echo "Vérifiez la validité des adresses IP des DNS."
330
			echo "Vérifiez la validité des adresses IP des DNS."
331
		else
331
		else
332
			echo "The Internet connection try failed (google.fr)."
332
			echo "The Internet connection try failed (google.fr)."
333
			echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
333
			echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
334
			echo "Verify the DNS IP addresses"
334
			echo "Verify the DNS IP addresses"
335
		fi
335
		fi
336
		exit 0
336
		exit 0
337
	fi
337
	fi
338
	rm -rf /tmp/con_ok.html
338
	rm -rf /tmp/con_ok.html
339
	echo ". : ok"
339
	echo ". : ok"
340
} # end of testing ()
340
} # end of testing ()
341
 
341
 
342
##################################################################
342
##################################################################
343
##			Function "init"				##
343
##			Function "init"				##
344
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
344
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
345
## - Installation et modification des scripts du portail	##
345
## - Installation et modification des scripts du portail	##
346
##################################################################
346
##################################################################
347
init ()
347
init ()
348
{
348
{
349
	if [ "$mode" != "update" ]
349
	if [ "$mode" != "update" ]
350
	then
350
	then
351
# On affecte le nom d'organisme
351
# On affecte le nom d'organisme
352
		header_install
352
		header_install
353
		ORGANISME=!
353
		ORGANISME=!
354
		PTN='^[a-zA-Z0-9-]*$'
354
		PTN='^[a-zA-Z0-9-]*$'
355
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
355
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
356
                do
356
                do
357
			if [ $Lang == "fr" ]
357
			if [ $Lang == "fr" ]
358
			       	then echo -n "Entrez le nom de votre organisme : "
358
			       	then echo -n "Entrez le nom de votre organisme : "
359
				else echo -n "Enter the name of your organism : "
359
				else echo -n "Enter the name of your organism : "
360
			fi
360
			fi
361
			read ORGANISME
361
			read ORGANISME
362
			if [ "$ORGANISME" == "" ]
362
			if [ "$ORGANISME" == "" ]
363
				then
363
				then
364
				ORGANISME=!
364
				ORGANISME=!
365
			fi
365
			fi
366
		done
366
		done
367
	fi
367
	fi
368
# On crée aléatoirement les mots de passe et les secrets partagés
368
# On crée aléatoirement les mots de passe et les secrets partagés
369
	rm -f $PASSWD_FILE
369
	rm -f $PASSWD_FILE
370
	grubpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`
370
	grubpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`
371
	echo -n "Password to protect the GRUB boot menu (!!!qwerty keyboard) : " > $PASSWD_FILE
371
	echo -n "Password to protect the GRUB boot menu (!!!qwerty keyboard) : " > $PASSWD_FILE
372
	echo "$grubpwd" >> $PASSWD_FILE
372
	echo "$grubpwd" >> $PASSWD_FILE
373
	md5_grubpwd=`/usr/bin/openssl passwd -1 $grubpwd`
373
	md5_grubpwd=`/usr/bin/openssl passwd -1 $grubpwd`
374
	$SED "/^password.*/d" /boot/grub/menu.lst
374
	$SED "/^password.*/d" /boot/grub/menu.lst
375
	$SED "1ipassword --md5 $md5_grubpwd" /boot/grub/menu.lst
375
	$SED "1ipassword --md5 $md5_grubpwd" /boot/grub/menu.lst
376
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`
376
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`
377
	echo -n "Name and password of Mysql/mariadb administrator : " >> $PASSWD_FILE
377
	echo -n "Name and password of Mysql/mariadb administrator : " >> $PASSWD_FILE
378
	echo "root / $mysqlpwd" >> $PASSWD_FILE
378
	echo "root / $mysqlpwd" >> $PASSWD_FILE
379
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`
379
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`
380
	echo -n "Name and password of Mysql/mariadb user : " >> $PASSWD_FILE
380
	echo -n "Name and password of Mysql/mariadb user : " >> $PASSWD_FILE
381
	echo "$DB_USER / $radiuspwd" >> $PASSWD_FILE
381
	echo "$DB_USER / $radiuspwd" >> $PASSWD_FILE
382
	secretuam=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`
382
	secretuam=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`
383
	echo -n "Shared secret between the script 'intercept.php' and coova-chilli : " >> $PASSWD_FILE
383
	echo -n "Shared secret between the script 'intercept.php' and coova-chilli : " >> $PASSWD_FILE
384
	echo "$secretuam" >> $PASSWD_FILE
384
	echo "$secretuam" >> $PASSWD_FILE
385
	secretradius=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`
385
	secretradius=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`
386
	echo -n "Shared secret between coova-chilli and FreeRadius : " >> $PASSWD_FILE
386
	echo -n "Shared secret between coova-chilli and FreeRadius : " >> $PASSWD_FILE
387
	echo "$secretradius" >> $PASSWD_FILE
387
	echo "$secretradius" >> $PASSWD_FILE
388
	chmod 640 $PASSWD_FILE
388
	chmod 640 $PASSWD_FILE
389
#  copy scripts in in /usr/local/bin
389
#  copy scripts in in /usr/local/bin
390
	cp -f $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown root:root $DIR_DEST_BIN/alcasar* ; chmod 740 $DIR_DEST_BIN/alcasar*
390
	cp -f $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown root:root $DIR_DEST_BIN/alcasar* ; chmod 740 $DIR_DEST_BIN/alcasar*
391
#  copy conf files in /usr/local/etc
391
#  copy conf files in /usr/local/etc
392
	cp -f $DIR_CONF/etc/alcasar* $DIR_DEST_ETC/. ; chown -R root:apache $DIR_DEST_ETC ; chmod 770 $DIR_DEST_ETC ; chmod 660 $DIR_DEST_ETC/alcasar*
392
	cp -f $DIR_CONF/etc/alcasar* $DIR_DEST_ETC/. ; chown -R root:apache $DIR_DEST_ETC ; chmod 770 $DIR_DEST_ETC ; chmod 660 $DIR_DEST_ETC/alcasar*
393
	$SED "s?^radiussecret.*?radiussecret=\"$secretradius\"?g" $DIR_DEST_BIN/alcasar-logout.sh
393
	$SED "s?^radiussecret.*?radiussecret=\"$secretradius\"?g" $DIR_DEST_BIN/alcasar-logout.sh
394
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_BIN/alcasar-mysql.sh
394
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_BIN/alcasar-mysql.sh
395
	$SED "s?^DB_USER=.*?DB_USER=\"$DB_USER\"?g" $DIR_DEST_BIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
395
	$SED "s?^DB_USER=.*?DB_USER=\"$DB_USER\"?g" $DIR_DEST_BIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
396
	$SED "s?^radiuspwd=.*?radiuspwd=\"$radiuspwd\"?g" $DIR_DEST_BIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
396
	$SED "s?^radiuspwd=.*?radiuspwd=\"$radiuspwd\"?g" $DIR_DEST_BIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
397
# generate central conf file
397
# generate central conf file
398
	cat <<EOF > $CONF_FILE
398
	cat <<EOF > $CONF_FILE
399
##########################################
399
##########################################
400
##                                      ##
400
##                                      ##
401
##          ALCASAR Parameters          ##
401
##          ALCASAR Parameters          ##
402
##                                      ##
402
##                                      ##
403
##########################################
403
##########################################
404
 
404
 
405
INSTALL_DATE=$DATE
405
INSTALL_DATE=$DATE
406
VERSION=$VERSION
406
VERSION=$VERSION
407
ORGANISM=$ORGANISME
407
ORGANISM=$ORGANISME
408
HOSTNAME=$HOSTNAME
408
HOSTNAME=$HOSTNAME
409
DOMAIN=$DOMAIN
409
DOMAIN=$DOMAIN
410
EOF
410
EOF
411
	chmod o-rwx $CONF_FILE
411
	chmod o-rwx $CONF_FILE
412
} # End of init ()
412
} # End of init ()
413
 
413
 
414
##################################################################
414
##################################################################
415
##			Function "network"			##
415
##			Function "network"			##
416
## - Définition du plan d'adressage du réseau de consultation	##
416
## - Définition du plan d'adressage du réseau de consultation	##
417
## - Nommage DNS du système 					##
417
## - Nommage DNS du système 					##
418
## - Configuration de l'interface INTIF (réseau de consultation)##
418
## - Configuration de l'interface INTIF (réseau de consultation)##
419
## - Modification du fichier /etc/hosts				##
419
## - Modification du fichier /etc/hosts				##
420
## - Renseignement des fichiers hosts.allow et hosts.deny	##
420
## - Renseignement des fichiers hosts.allow et hosts.deny	##
421
##################################################################
421
##################################################################
422
network ()
422
network ()
423
{
423
{
424
	header_install
424
	header_install
425
	if [ "$mode" != "update" ]
425
	if [ "$mode" != "update" ]
426
		then
426
		then
427
		if [ $Lang == "fr" ]
427
		if [ $Lang == "fr" ]
428
			then echo "Par défaut, l'adresse IP d'ALCASAR sur le réseau de consultation est : $DEFAULT_PRIVATE_IP_MASK"
428
			then echo "Par défaut, l'adresse IP d'ALCASAR sur le réseau de consultation est : $DEFAULT_PRIVATE_IP_MASK"
429
			else echo "The default ALCASAR IP address on consultation network is : $DEFAULT_PRIVATE_IP_MASK"
429
			else echo "The default ALCASAR IP address on consultation network is : $DEFAULT_PRIVATE_IP_MASK"
430
		fi
430
		fi
431
		response=0
431
		response=0
432
		PTN='^[oOyYnN]$'
432
		PTN='^[oOyYnN]$'
433
		until [[ $(expr $response : $PTN) -gt 0 ]]
433
		until [[ $(expr $response : $PTN) -gt 0 ]]
434
		do
434
		do
435
			if [ $Lang == "fr" ]
435
			if [ $Lang == "fr" ]
436
				then echo -n "Voulez-vous utiliser cette adresse et ce plan d'adressage (recommandé) (O/n)? : "
436
				then echo -n "Voulez-vous utiliser cette adresse et ce plan d'adressage (recommandé) (O/n)? : "
437
				else echo -n "Do you want to use this IP address and this IP addressing plan (recommanded) (Y/n)? : "
437
				else echo -n "Do you want to use this IP address and this IP addressing plan (recommanded) (Y/n)? : "
438
			fi
438
			fi
439
			read response
439
			read response
440
		done
440
		done
441
		if [ "$response" = "n" ] || [ "$response" = "N" ]
441
		if [ "$response" = "n" ] || [ "$response" = "N" ]
442
		then
442
		then
443
			PRIVATE_IP_MASK="0"
443
			PRIVATE_IP_MASK="0"
444
			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:]]$'
444
			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:]]$'
445
			until [[ $(expr $PRIVATE_IP_MASK : $PTN) -gt 0 ]]
445
			until [[ $(expr $PRIVATE_IP_MASK : $PTN) -gt 0 ]]
446
			do
446
			do
447
				if [ $Lang == "fr" ]
447
				if [ $Lang == "fr" ]
448
					then echo -n "Entrez l'adresse IP d'ALCASAR au format CIDR (a.b.c.d/xx) : "
448
					then echo -n "Entrez l'adresse IP d'ALCASAR au format CIDR (a.b.c.d/xx) : "
449
					else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
449
					else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
450
				fi
450
				fi
451
				read PRIVATE_IP_MASK
451
				read PRIVATE_IP_MASK
452
			done
452
			done
453
		else
453
		else
454
       			PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
454
       			PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
455
		fi
455
		fi
456
	else
456
	else
457
		PRIVATE_IP_MASK=`grep PRIVATE_IP conf/etc/alcasar.conf|cut -d"=" -f2` 
457
		PRIVATE_IP_MASK=`grep PRIVATE_IP conf/etc/alcasar.conf|cut -d"=" -f2` 
458
		rm -rf conf/etc/alcasar.conf
458
		rm -rf conf/etc/alcasar.conf
459
	fi
459
	fi
460
# Define LAN side global parameters
460
# Define LAN side global parameters
461
	hostnamectl set-hostname $HOSTNAME.$DOMAIN
461
	hostnamectl set-hostname $HOSTNAME.$DOMAIN
462
	PRIVATE_NETWORK=`/bin/ipcalc -n $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network address (ie.: 192.168.182.0)
462
	PRIVATE_NETWORK=`/bin/ipcalc -n $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network address (ie.: 192.168.182.0)
463
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f4`					# last octet of LAN address
463
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f4`					# last octet of LAN address
464
	PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network mask (ie.: 255.255.255.0)
464
	PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network mask (ie.: 255.255.255.0)
465
	PRIVATE_PREFIX=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2`					# network prefix (ie. 24)
465
	PRIVATE_PREFIX=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2`					# network prefix (ie. 24)
466
	PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1`						# ALCASAR private ip address (consultation LAN side)
466
	PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1`						# ALCASAR private ip address (consultation LAN side)
467
	if [ $PRIVATE_IP == $PRIVATE_NETWORK ]								# when entering network address instead of ip address
467
	if [ $PRIVATE_IP == $PRIVATE_NETWORK ]								# when entering network address instead of ip address
468
		then
468
		then
469
		PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`	
469
		PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`	
470
		PRIVATE_IP_MASK=`echo $PRIVATE_IP/$PRIVATE_PREFIX`
470
		PRIVATE_IP_MASK=`echo $PRIVATE_IP/$PRIVATE_PREFIX`
471
	fi	
471
	fi	
472
	private_ip_ending=`echo $PRIVATE_IP | cut -d"." -f4`						# last octet of LAN address
472
	private_ip_ending=`echo $PRIVATE_IP | cut -d"." -f4`						# last octet of LAN address
473
	PRIVATE_SECOND_IP=`echo $PRIVATE_IP | cut -d"." -f1-3`"."`expr $private_ip_ending + 1`		# second network address (ex.: 192.168.182.2)
473
	PRIVATE_SECOND_IP=`echo $PRIVATE_IP | cut -d"." -f1-3`"."`expr $private_ip_ending + 1`		# second network address (ex.: 192.168.182.2)
474
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$PRIVATE_PREFIX						# ie.: 192.168.182.0/24
474
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$PRIVATE_PREFIX						# ie.: 192.168.182.0/24
475
	classe=$((PRIVATE_PREFIX/8))									# ie.: 2=classe B, 3=classe C
475
	classe=$((PRIVATE_PREFIX/8))									# ie.: 2=classe B, 3=classe C
476
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.				# compatibility with hosts.allow et hosts.deny (ie.: 192.168.182.)
476
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.				# compatibility with hosts.allow et hosts.deny (ie.: 192.168.182.)
477
	PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2`			# private network broadcast (ie.: 192.168.182.255)
477
	PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2`			# private network broadcast (ie.: 192.168.182.255)
478
	private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f4`				# last octet of LAN broadcast
478
	private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f4`				# last octet of LAN broadcast
479
	PRIVATE_FIRST_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`	# First network address (ex.: 192.168.182.1)
479
	PRIVATE_FIRST_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`	# First network address (ex.: 192.168.182.1)
480
	PRIVATE_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_ending - 1`	# last network address (ex.: 192.168.182.254)
480
	PRIVATE_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_ending - 1`	# last network address (ex.: 192.168.182.254)
481
	PRIVATE_MAC=`/usr/sbin/ip link show $INTIF | grep ether | cut -d" " -f6| sed 's/:/-/g'| awk '{print toupper($0)}'` 	# MAC address of INTIF
481
	PRIVATE_MAC=`/usr/sbin/ip link show $INTIF | grep ether | cut -d" " -f6| sed 's/:/-/g'| awk '{print toupper($0)}'` 	# MAC address of INTIF
482
# Define Internet parameters
482
# Define Internet parameters
483
	DNS1=`grep ^nameserver /etc/resolv.conf|awk -F" " '{print $2}'|head -n 1`				# 1st DNS server
483
	DNS1=`grep ^nameserver /etc/resolv.conf|awk -F" " '{print $2}'|head -n 1`				# 1st DNS server
484
	nb_dns=`grep ^nameserver /etc/resolv.conf|wc -l`
484
	nb_dns=`grep ^nameserver /etc/resolv.conf|wc -l`
485
	if [ $nb_dns == 2 ]
485
	if [ $nb_dns == 2 ]
486
		then
486
		then
487
		DNS2=`grep ^nameserver /etc/resolv.conf|cut -d" " -f2|tail -n 1`			# 2nd DNS server (if exist)
487
		DNS2=`grep ^nameserver /etc/resolv.conf|cut -d" " -f2|tail -n 1`			# 2nd DNS server (if exist)
488
	fi
488
	fi
489
	DNS1=${DNS1:=208.67.220.220}
489
	DNS1=${DNS1:=208.67.220.220}
490
	DNS2=${DNS2:=208.67.222.222}
490
	DNS2=${DNS2:=208.67.222.222}
491
	PUBLIC_NETMASK=`/bin/ipcalc -m $PUBLIC_IP_MASK | cut -d"=" -f2`
491
	PUBLIC_NETMASK=`/bin/ipcalc -m $PUBLIC_IP_MASK | cut -d"=" -f2`
492
	PUBLIC_PREFIX=`/bin/ipcalc -p $PUBLIC_IP $PUBLIC_NETMASK|cut -d"=" -f2`
492
	PUBLIC_PREFIX=`/bin/ipcalc -p $PUBLIC_IP $PUBLIC_NETMASK|cut -d"=" -f2`
493
	PUBLIC_NETWORK=`/bin/ipcalc -n $PUBLIC_IP/$PUBLIC_PREFIX|cut -d"=" -f2`
493
	PUBLIC_NETWORK=`/bin/ipcalc -n $PUBLIC_IP/$PUBLIC_PREFIX|cut -d"=" -f2`
494
# Wrtie the conf file
494
# Wrtie the conf file
495
	echo "EXTIF=$EXTIF" >> $CONF_FILE
495
	echo "EXTIF=$EXTIF" >> $CONF_FILE
496
	echo "INTIF=$INTIF" >> $CONF_FILE
496
	echo "INTIF=$INTIF" >> $CONF_FILE
497
	IP_SETTING=`grep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2`		# IP setting (static or dynamic)
497
	IP_SETTING=`grep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2`		# IP setting (static or dynamic)
498
	if [ $IP_SETTING == "dhcp" ]
498
	if [ $IP_SETTING == "dhcp" ]
499
		then
499
		then
500
		echo "PUBLIC_IP=dhcp" >> $CONF_FILE
500
		echo "PUBLIC_IP=dhcp" >> $CONF_FILE
501
		echo "GW=dhcp" >> $CONF_FILE
501
		echo "GW=dhcp" >> $CONF_FILE
502
	else
502
	else
503
		echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $CONF_FILE
503
		echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $CONF_FILE
504
		echo "GW=$PUBLIC_GATEWAY" >> $CONF_FILE
504
		echo "GW=$PUBLIC_GATEWAY" >> $CONF_FILE
505
	fi
505
	fi
506
	echo "DNS1=$DNS1" >> $CONF_FILE
506
	echo "DNS1=$DNS1" >> $CONF_FILE
507
	echo "DNS2=$DNS2" >> $CONF_FILE
507
	echo "DNS2=$DNS2" >> $CONF_FILE
508
	echo "PUBLIC_MTU=$MTU" >> $CONF_FILE
508
	echo "PUBLIC_MTU=$MTU" >> $CONF_FILE
509
	echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $CONF_FILE
509
	echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $CONF_FILE
510
	echo "DHCP=on" >> $CONF_FILE
510
	echo "DHCP=on" >> $CONF_FILE
511
	echo "EXT_DHCP_IP=none" >> $CONF_FILE
511
	echo "EXT_DHCP_IP=none" >> $CONF_FILE
512
	echo "RELAY_DHCP_IP=none" >> $CONF_FILE
512
	echo "RELAY_DHCP_IP=none" >> $CONF_FILE
513
	echo "RELAY_DHCP_PORT=none" >> $CONF_FILE
513
	echo "RELAY_DHCP_PORT=none" >> $CONF_FILE
514
	echo "INT_DNS_DOMAIN=none" >> $CONF_FILE
514
	echo "INT_DNS_DOMAIN=none" >> $CONF_FILE
515
	echo "INT_DNS_IP=none" >> $CONF_FILE
515
	echo "INT_DNS_IP=none" >> $CONF_FILE
516
	echo "INT_DNS_ACTIVE=off" >> $CONF_FILE
516
	echo "INT_DNS_ACTIVE=off" >> $CONF_FILE
517
# network default
517
# network default
518
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
518
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
519
	cat <<EOF > /etc/sysconfig/network
519
	cat <<EOF > /etc/sysconfig/network
520
NETWORKING=yes
520
NETWORKING=yes
521
FORWARD_IPV4=true
521
FORWARD_IPV4=true
522
EOF
522
EOF
523
# /etc/hosts config
523
# /etc/hosts config
524
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
524
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
525
	cat <<EOF > /etc/hosts
525
	cat <<EOF > /etc/hosts
526
127.0.0.1	localhost
526
127.0.0.1	localhost
527
$PRIVATE_IP	$HOSTNAME.$DOMAIN $HOSTNAME
527
$PRIVATE_IP	$HOSTNAME.$DOMAIN $HOSTNAME
528
EOF
528
EOF
529
# EXTIF (Internet) config
529
# EXTIF (Internet) config
530
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
530
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
531
	if [ $IP_SETTING == "dhcp" ]
531
	if [ $IP_SETTING == "dhcp" ]
532
		then
532
		then
533
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
533
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
534
DEVICE=$EXTIF
534
DEVICE=$EXTIF
535
BOOTPROTO=dhcp
535
BOOTPROTO=dhcp
536
DNS1=127.0.0.1
536
DNS1=127.0.0.1
537
PEERDNS=no
537
PEERDNS=no
538
RESOLV_MODS=yes
538
RESOLV_MODS=yes
539
ONBOOT=yes
539
ONBOOT=yes
540
NOZEROCONF=yes
540
NOZEROCONF=yes
541
METRIC=10
541
METRIC=10
542
MII_NOT_SUPPORTED=yes
542
MII_NOT_SUPPORTED=yes
543
IPV6INIT=no
543
IPV6INIT=no
544
IPV6TO4INIT=no
544
IPV6TO4INIT=no
545
ACCOUNTING=no
545
ACCOUNTING=no
546
USERCTL=no
546
USERCTL=no
547
MTU=$MTU
547
MTU=$MTU
548
EOF
548
EOF
549
		else	
549
		else	
550
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
550
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
551
DEVICE=$EXTIF
551
DEVICE=$EXTIF
552
BOOTPROTO=static
552
BOOTPROTO=static
553
IPADDR=$PUBLIC_IP
553
IPADDR=$PUBLIC_IP
554
NETMASK=$PUBLIC_NETMASK
554
NETMASK=$PUBLIC_NETMASK
555
GATEWAY=$PUBLIC_GATEWAY
555
GATEWAY=$PUBLIC_GATEWAY
556
DNS1=127.0.0.1
556
DNS1=127.0.0.1
557
RESOLV_MODS=yes
557
RESOLV_MODS=yes
558
ONBOOT=yes
558
ONBOOT=yes
559
METRIC=10
559
METRIC=10
560
NOZEROCONF=yes
560
NOZEROCONF=yes
561
MII_NOT_SUPPORTED=yes
561
MII_NOT_SUPPORTED=yes
562
IPV6INIT=no
562
IPV6INIT=no
563
IPV6TO4INIT=no
563
IPV6TO4INIT=no
564
ACCOUNTING=no
564
ACCOUNTING=no
565
USERCTL=no
565
USERCTL=no
566
MTU=$MTU
566
MTU=$MTU
567
EOF
567
EOF
568
	fi
568
	fi
569
# Config INTIF (consultation LAN) in normal mode
569
# Config INTIF (consultation LAN) in normal mode
570
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
570
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
571
DEVICE=$INTIF
571
DEVICE=$INTIF
572
BOOTPROTO=static
572
BOOTPROTO=static
573
ONBOOT=yes
573
ONBOOT=yes
574
NOZEROCONF=yes
574
NOZEROCONF=yes
575
MII_NOT_SUPPORTED=yes
575
MII_NOT_SUPPORTED=yes
576
IPV6INIT=no
576
IPV6INIT=no
577
IPV6TO4INIT=no
577
IPV6TO4INIT=no
578
ACCOUNTING=no
578
ACCOUNTING=no
579
USERCTL=no
579
USERCTL=no
580
EOF
580
EOF
581
	cp -f /etc/sysconfig/network-scripts/ifcfg-$INTIF /etc/sysconfig/network-scripts/default-ifcfg-$INTIF
581
	cp -f /etc/sysconfig/network-scripts/ifcfg-$INTIF /etc/sysconfig/network-scripts/default-ifcfg-$INTIF
582
# Config of INTIF in bypass mode (see "alcasar-bypass.sh")
582
# Config of INTIF in bypass mode (see "alcasar-bypass.sh")
583
	cat <<EOF > /etc/sysconfig/network-scripts/bypass-ifcfg-$INTIF
583
	cat <<EOF > /etc/sysconfig/network-scripts/bypass-ifcfg-$INTIF
584
DEVICE=$INTIF
584
DEVICE=$INTIF
585
BOOTPROTO=static
585
BOOTPROTO=static
586
IPADDR=$PRIVATE_IP
586
IPADDR=$PRIVATE_IP
587
NETMASK=$PRIVATE_NETMASK
587
NETMASK=$PRIVATE_NETMASK
588
ONBOOT=yes
588
ONBOOT=yes
589
METRIC=10
589
METRIC=10
590
NOZEROCONF=yes
590
NOZEROCONF=yes
591
MII_NOT_SUPPORTED=yes
591
MII_NOT_SUPPORTED=yes
592
IPV6INIT=no
592
IPV6INIT=no
593
IPV6TO4INIT=no
593
IPV6TO4INIT=no
594
ACCOUNTING=no
594
ACCOUNTING=no
595
USERCTL=no
595
USERCTL=no
596
EOF
596
EOF
597
# Renseignement des fichiers hosts.allow et hosts.deny
597
# Renseignement des fichiers hosts.allow et hosts.deny
598
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
598
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
599
	cat <<EOF > /etc/hosts.allow
599
	cat <<EOF > /etc/hosts.allow
600
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
600
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
601
sshd: ALL
601
sshd: ALL
602
ntpd: $PRIVATE_NETWORK_SHORT
602
ntpd: $PRIVATE_NETWORK_SHORT
603
EOF
603
EOF
604
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
604
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
605
	cat <<EOF > /etc/hosts.deny
605
	cat <<EOF > /etc/hosts.deny
606
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
606
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
607
EOF
607
EOF
608
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
608
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
609
# create the ip_blocked file with a first line (LAN between ALCASAR and the Internet GW)
609
# create the ip_blocked file with a first line (LAN between ALCASAR and the Internet GW)
610
	echo "#$PUBLIC_NETWORK/$PUBLIC_PREFIX LAN-ALCASAR-BOX" > $DIR_DEST_ETC/alcasar-ip-blocked
610
	echo "#$PUBLIC_NETWORK/$PUBLIC_PREFIX LAN-ALCASAR-BOX" > $DIR_DEST_ETC/alcasar-ip-blocked
611
# load conntrack ftp module
611
# load conntrack ftp module
612
	[ -e /etc/modprobe.preload.default ] || cp /etc/modprobe.preload /etc/modprobe.preload.default
612
	[ -e /etc/modprobe.preload.default ] || cp /etc/modprobe.preload /etc/modprobe.preload.default
613
	echo "nf_conntrack_ftp" >>  /etc/modprobe.preload
613
	echo "nf_conntrack_ftp" >>  /etc/modprobe.preload
614
# load ipt_NETFLOW module
614
# load ipt_NETFLOW module
615
	echo "ipt_NETFLOW" >>  /etc/modprobe.preload
615
	echo "ipt_NETFLOW" >>  /etc/modprobe.preload
616
# modify iptables service files (start with "alcasar-iptables.sh" and stop with flush)
616
# modify iptables service files (start with "alcasar-iptables.sh" and stop with flush)
617
[ -e /lib/systemd/system/iptables.service.default ] || cp /lib/systemd/system/iptables.service /lib/systemd/system/iptables.service.default
617
[ -e /lib/systemd/system/iptables.service.default ] || cp /lib/systemd/system/iptables.service /lib/systemd/system/iptables.service.default
618
$SED 's/ExecStart=\/usr\/libexec\/iptables.init start/ExecStart=\/usr\/local\/bin\/alcasar-iptables.sh/' /lib/systemd/system/iptables.service
618
$SED 's/ExecStart=\/usr\/libexec\/iptables.init start/ExecStart=\/usr\/local\/bin\/alcasar-iptables.sh/' /lib/systemd/system/iptables.service
619
[ -e /usr/libexec/iptables.init.default ] || cp /usr/libexec/iptables.init /usr/libexec/iptables.init.default
619
[ -e /usr/libexec/iptables.init.default ] || cp /usr/libexec/iptables.init /usr/libexec/iptables.init.default
620
$SED "s?\[ -f \$IPTABLES_CONFIG \] .*?#&?" /usr/libexec/iptables.init # comment the test (flush all rules & policies)
620
$SED "s?\[ -f \$IPTABLES_CONFIG \] .*?#&?" /usr/libexec/iptables.init # comment the test (flush all rules & policies)
621
# 
621
# 
622
# the script "$DIR_DEST_BIN/alcasar-iptables.sh" is launched at the end in order to allow update via ssh
622
# the script "$DIR_DEST_BIN/alcasar-iptables.sh" is launched at the end in order to allow update via ssh
623
} # End of network ()
623
} # End of network ()
624
 
624
 
625
##################################################################
625
##################################################################
626
##			Function "ACC"				##
626
##			Function "ACC"				##
627
## - installation of then ALCASAR Control Center (ACC)	)	##
627
## - installation of then ALCASAR Control Center (ACC)	)	##
628
## - configuration of the web server (Apache)			##
628
## - configuration of the web server (Apache)			##
629
## - creation of the first ACC admin account 			##
629
## - creation of the first ACC admin account 			##
630
## - secure the access						##
630
## - secure the access						##
631
##################################################################
631
##################################################################
632
ACC ()
632
ACC ()
633
{
633
{
634
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
634
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
635
	mkdir $DIR_WEB
635
	mkdir $DIR_WEB
636
# Copy & adapt ACC files
636
# Copy & adapt ACC files
637
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
637
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
638
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
638
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
639
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
639
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
640
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
640
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
641
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
641
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
642
	chmod 640 $DIR_ACC/phpsysinfo/includes/xml/portail.php
642
	chmod 640 $DIR_ACC/phpsysinfo/includes/xml/portail.php
643
	chown -R apache:apache $DIR_WEB/*
643
	chown -R apache:apache $DIR_WEB/*
644
# copy & adapt "freeradius-web" files
644
# copy & adapt "freeradius-web" files
645
	cp -rf $DIR_CONF/freeradius-web/ /etc/
645
	cp -rf $DIR_CONF/freeradius-web/ /etc/
646
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
646
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
647
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
647
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
648
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
648
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
649
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
649
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
650
	cat <<EOF > /etc/freeradius-web/naslist.conf
650
	cat <<EOF > /etc/freeradius-web/naslist.conf
651
nas1_name: alcasar-$ORGANISME
651
nas1_name: alcasar-$ORGANISME
652
nas1_model: Network Access Controler
652
nas1_model: Network Access Controler
653
nas1_ip: $PRIVATE_IP
653
nas1_ip: $PRIVATE_IP
654
nas1_port_num: 0
654
nas1_port_num: 0
655
nas1_community: public
655
nas1_community: public
656
EOF
656
EOF
657
	chown -R apache:apache /etc/freeradius-web/
657
	chown -R apache:apache /etc/freeradius-web/
658
# create the log & backup structure :
658
# create the log & backup structure :
659
# - base = users database
659
# - base = users database
660
# - archive = tarball of "base + http firewall + netflow"
660
# - archive = tarball of "base + http firewall + netflow"
661
# - security = watchdog log
661
# - security = watchdog log
662
	for i in base archive security activity_report;
662
	for i in base archive security activity_report;
663
	do
663
	do
664
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
664
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
665
	done
665
	done
666
	chown -R root:apache $DIR_SAVE
666
	chown -R root:apache $DIR_SAVE
667
# Configuring & securing php
667
# Configuring & securing php
668
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
668
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
669
	timezone=`cat /etc/sysconfig/clock|grep ZONE|cut -d"=" -f2`
669
	timezone=`cat /etc/sysconfig/clock|grep ZONE|cut -d"=" -f2`
670
	$SED "s?^;date.timezone =.*?date.timezone = $timezone?g" /etc/php.ini
670
	$SED "s?^;date.timezone =.*?date.timezone = $timezone?g" /etc/php.ini
671
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
671
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
672
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
672
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
673
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
673
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
674
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
674
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
675
# Configuring & sécuring Apache
675
# Configuring & sécuring Apache
676
	rm -rf /var/www/cgi-bin/* /var/www/perl/* /var/www/icons/README* /var/www/error/README*
676
	rm -rf /var/www/cgi-bin/* /var/www/perl/* /var/www/icons/README* /var/www/error/README*
677
	[ -e /etc/httpd/conf/httpd.conf.default ] || cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
677
	[ -e /etc/httpd/conf/httpd.conf.default ] || cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
678
	$SED "s?^#ServerName.*?ServerName $HOSTNAME.$DOMAIN?g" /etc/httpd/conf/httpd.conf
678
	$SED "s?^#ServerName.*?ServerName $HOSTNAME.$DOMAIN?g" /etc/httpd/conf/httpd.conf
679
	$SED "s?^Listen.*?Listen $PRIVATE_IP:80?g" /etc/httpd/conf/httpd.conf
679
	$SED "s?^Listen.*?Listen $PRIVATE_IP:80?g" /etc/httpd/conf/httpd.conf
680
	$SED "s?Options Indexes.*?Options -Indexes?g" /etc/httpd/conf/httpd.conf
680
	$SED "s?Options Indexes.*?Options -Indexes?g" /etc/httpd/conf/httpd.conf
681
	echo "ServerTokens Prod" >> /etc/httpd/conf/httpd.conf
681
	echo "ServerTokens Prod" >> /etc/httpd/conf/httpd.conf
682
	echo "ServerSignature Off" >> /etc/httpd/conf/httpd.conf
682
	echo "ServerSignature Off" >> /etc/httpd/conf/httpd.conf
683
	[ -e /etc/httpd/conf/modules.d/00_base.conf.default ] || cp /etc/httpd/conf/modules.d/00_base.conf /etc/httpd/conf/modules.d/00_base.conf.default
683
	[ -e /etc/httpd/conf/modules.d/00_base.conf.default ] || cp /etc/httpd/conf/modules.d/00_base.conf /etc/httpd/conf/modules.d/00_base.conf.default
684
	$SED "s?^LoadModule authn_anon_module.*?#LoadModule authn_anon_module modules/mod_authn_anon.so?g" /etc/httpd/conf/modules.d/00_base.conf
684
	$SED "s?^LoadModule authn_anon_module.*?#LoadModule authn_anon_module modules/mod_authn_anon.so?g" /etc/httpd/conf/modules.d/00_base.conf
685
	$SED "s?^LoadModule status_module.*?#LoadModule status_module modules/mod_status.so?g" /etc/httpd/conf/modules.d/00_base.conf
685
	$SED "s?^LoadModule status_module.*?#LoadModule status_module modules/mod_status.so?g" /etc/httpd/conf/modules.d/00_base.conf
686
	$SED "s?^LoadModule info_module.*?#LoadModule info_module modules/mod_info.so?g" /etc/httpd/conf/modules.d/00_base.conf
686
	$SED "s?^LoadModule info_module.*?#LoadModule info_module modules/mod_info.so?g" /etc/httpd/conf/modules.d/00_base.conf
687
	$SED "s?^LoadModule imagemap_module.*?#LoadModule imagemap_module modules/mod_imagemap.so?g" /etc/httpd/conf/modules.d/00_base.conf
687
	$SED "s?^LoadModule imagemap_module.*?#LoadModule imagemap_module modules/mod_imagemap.so?g" /etc/httpd/conf/modules.d/00_base.conf
688
	$SED "s?^LoadModule rewrite_module.*?#LoadModule rewrite_module modules/mod_rewrite.so?g" /etc/httpd/conf/modules.d/00_base.conf
688
	$SED "s?^LoadModule rewrite_module.*?#LoadModule rewrite_module modules/mod_rewrite.so?g" /etc/httpd/conf/modules.d/00_base.conf
689
	$SED "s?^LoadModule speling_module.*?#LoadModule speling_module modules/mod_speling.so?g" /etc/httpd/conf/modules.d/00_base.conf
689
	$SED "s?^LoadModule speling_module.*?#LoadModule speling_module modules/mod_speling.so?g" /etc/httpd/conf/modules.d/00_base.conf
690
	[ -e /etc/httpd/conf/conf.d/ssl.conf.default ] || cp /etc/httpd/conf/conf.d/ssl.conf /etc/httpd/conf/conf.d/ssl.conf.default
690
	[ -e /etc/httpd/conf/conf.d/ssl.conf.default ] || cp /etc/httpd/conf/conf.d/ssl.conf /etc/httpd/conf/conf.d/ssl.conf.default
691
	echo "Listen $PRIVATE_IP:443" > /etc/httpd/conf/conf.d/ssl.conf # Listen only on INTIF
691
	echo "Listen $PRIVATE_IP:443" > /etc/httpd/conf/conf.d/ssl.conf # Listen only on INTIF
692
	echo "SSLProtocol all -SSLv2 -SSLv3" >> /etc/httpd/conf/conf.d/ssl.conf  # exclude vulnerable protocols
692
	echo "SSLProtocol all -SSLv2 -SSLv3" >> /etc/httpd/conf/conf.d/ssl.conf  # exclude vulnerable protocols
693
	echo "SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS" >> /etc/httpd/conf/conf.d/ssl.conf # Define the cipher suite
693
	echo "SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS" >> /etc/httpd/conf/conf.d/ssl.conf # Define the cipher suite
694
	echo "SSLHonorCipherOrder on" >> /etc/httpd/conf/conf.d/ssl.conf # The Browser must respect the order of the cipher suite
694
	echo "SSLHonorCipherOrder on" >> /etc/httpd/conf/conf.d/ssl.conf # The Browser must respect the order of the cipher suite
695
	echo "SSLPassPhraseDialog  builtin" >> /etc/httpd/conf/conf.d/ssl.conf # in case of passphrase the dialog will be perform on stdin
695
	echo "SSLPassPhraseDialog  builtin" >> /etc/httpd/conf/conf.d/ssl.conf # in case of passphrase the dialog will be perform on stdin
696
	echo "SSLSessionCache \"shmcb:/run/httpd/ssl_scache(512000)\"" >> /etc/httpd/conf/conf.d/ssl.conf # default cache size
696
	echo "SSLSessionCache \"shmcb:/run/httpd/ssl_scache(512000)\"" >> /etc/httpd/conf/conf.d/ssl.conf # default cache size
697
	echo "SSLSessionCacheTimeout 300" >> /etc/httpd/conf/conf.d/ssl.conf # default cache time in seconds
697
	echo "SSLSessionCacheTimeout 300" >> /etc/httpd/conf/conf.d/ssl.conf # default cache time in seconds
698
# Error page management
698
# Error page management
699
[ -e /etc/httpd/conf/conf.d/multilang-errordoc.conf.default ] || cp /etc/httpd/conf/conf.d/multilang-errordoc.conf /etc/httpd/conf/conf.d/multilang-errordoc.conf.default
699
[ -e /etc/httpd/conf/conf.d/multilang-errordoc.conf.default ] || cp /etc/httpd/conf/conf.d/multilang-errordoc.conf /etc/httpd/conf/conf.d/multilang-errordoc.conf.default
700
cat <<EOF > /etc/httpd/conf/conf.d/multilang-errordoc.conf
700
cat <<EOF > /etc/httpd/conf/conf.d/multilang-errordoc.conf
701
Alias /error/ "/var/www/html/"
701
Alias /error/ "/var/www/html/"
702
<Directory "/usr/share/httpd/error">
702
<Directory "/usr/share/httpd/error">
703
    AllowOverride None
703
    AllowOverride None
704
    Options IncludesNoExec
704
    Options IncludesNoExec
705
    AddOutputFilter Includes html
705
    AddOutputFilter Includes html
706
    AddHandler type-map var
706
    AddHandler type-map var
707
    Require all granted
707
    Require all granted
708
    LanguagePriority en cs de es fr it ja ko nl pl pt-br ro sv tr
708
    LanguagePriority en cs de es fr it ja ko nl pl pt-br ro sv tr
709
    ForceLanguagePriority Prefer Fallback
709
    ForceLanguagePriority Prefer Fallback
710
</Directory>
710
</Directory>
711
ErrorDocument 400 /error/error.php?error=400
711
ErrorDocument 400 /error/error.php?error=400
712
ErrorDocument 401 /error/error.php?error=401
712
ErrorDocument 401 /error/error.php?error=401
713
ErrorDocument 403 /error/error.php?error=403
713
ErrorDocument 403 /error/error.php?error=403
714
ErrorDocument 404 /error/index.php
714
ErrorDocument 404 /error/index.php
715
ErrorDocument 405 /error/error.php?error=405
715
ErrorDocument 405 /error/error.php?error=405
716
ErrorDocument 408 /error/error.php?error=408
716
ErrorDocument 408 /error/error.php?error=408
717
ErrorDocument 410 /error/error.php?error=410
717
ErrorDocument 410 /error/error.php?error=410
718
ErrorDocument 411 /error/error.php?error=411
718
ErrorDocument 411 /error/error.php?error=411
719
ErrorDocument 412 /error/error.php?error=412
719
ErrorDocument 412 /error/error.php?error=412
720
ErrorDocument 413 /error/error.php?error=413
720
ErrorDocument 413 /error/error.php?error=413
721
ErrorDocument 414 /error/error.php?error=414
721
ErrorDocument 414 /error/error.php?error=414
722
ErrorDocument 415 /error/error.php?error=415
722
ErrorDocument 415 /error/error.php?error=415
723
ErrorDocument 500 /error/error.php?error=500
723
ErrorDocument 500 /error/error.php?error=500
724
ErrorDocument 501 /error/error.php?error=501
724
ErrorDocument 501 /error/error.php?error=501
725
ErrorDocument 502 /error/error.php?error=502
725
ErrorDocument 502 /error/error.php?error=502
726
ErrorDocument 503 /error/error.php?error=503
726
ErrorDocument 503 /error/error.php?error=503
727
ErrorDocument 506 /error/error.php?error=506
727
ErrorDocument 506 /error/error.php?error=506
728
EOF
728
EOF
729
	[ -e /usr/share/httpd/error/include/top.html.default ] || cp /usr/share/httpd/error/include/top.html /usr/share/httpd/error/include/top.html.default
729
	[ -e /usr/share/httpd/error/include/top.html.default ] || cp /usr/share/httpd/error/include/top.html /usr/share/httpd/error/include/top.html.default
730
	$SED "s?background-color.*?background-color: #EFEFEF; }?g" /usr/share/httpd/error/include/top.html
730
	$SED "s?background-color.*?background-color: #EFEFEF; }?g" /usr/share/httpd/error/include/top.html
731
	[ -e /usr/share/httpd/error/include/bottom.html.default ] || cp /usr/share/httpd/error/include/bottom.html /usr/share/httpd/error/include/bottom.html.default
731
	[ -e /usr/share/httpd/error/include/bottom.html.default ] || cp /usr/share/httpd/error/include/bottom.html /usr/share/httpd/error/include/bottom.html.default
732
	cat <<EOF > /usr/share/httpd/error/include/bottom.html
732
	cat <<EOF > /usr/share/httpd/error/include/bottom.html
733
</body>
733
</body>
734
</html>
734
</html>
735
EOF
735
EOF
736
# Définition du premier compte lié au profil 'admin'
736
# Définition du premier compte lié au profil 'admin'
737
if [ "$mode" = "install" ]
737
if [ "$mode" = "install" ]
738
	then
738
	then
739
		header_install
739
		header_install
740
		admin_portal=!
740
		admin_portal=!
741
		PTN='^[a-zA-Z0-9-]*$'
741
		PTN='^[a-zA-Z0-9-]*$'
742
		until [[ $(expr $admin_portal : $PTN) -gt 0 ]]
742
		until [[ $(expr $admin_portal : $PTN) -gt 0 ]]
743
                	do
743
                	do
744
			header_install
744
			header_install
745
			if [ $Lang == "fr" ]
745
			if [ $Lang == "fr" ]
746
			then 
746
			then 
747
				echo ""
747
				echo ""
748
				echo "Définissez un premier compte d'administration d'ALCASAR :"
748
				echo "Définissez un premier compte d'administration d'ALCASAR :"
749
				echo
749
				echo
750
				echo -n "Nom : "
750
				echo -n "Nom : "
751
			else
751
			else
752
				echo ""
752
				echo ""
753
				echo "Define the first account allow to administrate ALCASAR :"
753
				echo "Define the first account allow to administrate ALCASAR :"
754
				echo
754
				echo
755
				echo -n "Account : "
755
				echo -n "Account : "
756
			fi
756
			fi
757
			read admin_portal
757
			read admin_portal
758
			if [ "$admin_portal" == "" ]
758
			if [ "$admin_portal" == "" ]
759
				then
759
				then
760
				admin_portal=!
760
				admin_portal=!
761
			fi
761
			fi
762
			done
762
			done
763
# Creation of keys file for the admin account ("admin")
763
# Creation of keys file for the admin account ("admin")
764
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
764
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
765
		mkdir -p $DIR_DEST_ETC/digest
765
		mkdir -p $DIR_DEST_ETC/digest
766
		chmod 755 $DIR_DEST_ETC/digest
766
		chmod 755 $DIR_DEST_ETC/digest
767
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
767
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
768
			do
768
			do
769
				/usr/bin/htdigest -c $DIR_DEST_ETC/digest/key_admin "ALCASAR Control Center (ACC)" $admin_portal
769
				/usr/bin/htdigest -c $DIR_DEST_ETC/digest/key_admin "ALCASAR Control Center (ACC)" $admin_portal
770
			done
770
			done
771
		$DIR_DEST_BIN/alcasar-profil.sh --list
771
		$DIR_DEST_BIN/alcasar-profil.sh --list
772
fi
772
fi
773
# ACC partitioning
773
# ACC partitioning
774
	rm -f /etc/httpd/conf/webapps.d/alcasar*
774
	rm -f /etc/httpd/conf/webapps.d/alcasar*
775
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
775
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
776
<Directory $DIR_ACC>
776
<Directory $DIR_ACC>
777
	SSLRequireSSL
777
	SSLRequireSSL
778
	AllowOverride None
778
	AllowOverride None
779
	Order deny,allow
779
	Order deny,allow
780
	Deny from all
780
	Deny from all
781
	Allow from 127.0.0.1
781
	Allow from 127.0.0.1
782
	Allow from $PRIVATE_NETWORK_MASK
782
	Allow from $PRIVATE_NETWORK_MASK
783
	require valid-user
783
	require valid-user
784
	AuthType digest
784
	AuthType digest
785
	AuthName "ALCASAR Control Center (ACC)" 
785
	AuthName "ALCASAR Control Center (ACC)" 
786
	AuthDigestDomain $HOSTNAME.$DOMAIN
786
	AuthDigestDomain $HOSTNAME.$DOMAIN
787
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
787
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
788
	AuthUserFile $DIR_DEST_ETC/digest/key_all
788
	AuthUserFile $DIR_DEST_ETC/digest/key_all
789
	ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
789
	ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
790
</Directory>
790
</Directory>
791
<Directory $DIR_ACC/admin>
791
<Directory $DIR_ACC/admin>
792
	SSLRequireSSL
792
	SSLRequireSSL
793
	AllowOverride None
793
	AllowOverride None
794
	Order deny,allow
794
	Order deny,allow
795
	Deny from all
795
	Deny from all
796
	Allow from 127.0.0.1
796
	Allow from 127.0.0.1
797
	Allow from $PRIVATE_NETWORK_MASK
797
	Allow from $PRIVATE_NETWORK_MASK
798
	require valid-user
798
	require valid-user
799
	AuthType digest
799
	AuthType digest
800
	AuthName "ALCASAR Control Center (ACC)" 
800
	AuthName "ALCASAR Control Center (ACC)" 
801
	AuthDigestDomain $HOSTNAME.$DOMAIN
801
	AuthDigestDomain $HOSTNAME.$DOMAIN
802
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
802
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
803
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
803
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
804
	ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
804
	ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
805
</Directory>
805
</Directory>
806
<Directory $DIR_ACC/manager>
806
<Directory $DIR_ACC/manager>
807
	SSLRequireSSL
807
	SSLRequireSSL
808
	AllowOverride None
808
	AllowOverride None
809
	Order deny,allow
809
	Order deny,allow
810
	Deny from all
810
	Deny from all
811
	Allow from 127.0.0.1
811
	Allow from 127.0.0.1
812
	Allow from $PRIVATE_NETWORK_MASK
812
	Allow from $PRIVATE_NETWORK_MASK
813
	require valid-user
813
	require valid-user
814
	AuthType digest
814
	AuthType digest
815
	AuthName "ALCASAR Control Center (ACC)" 
815
	AuthName "ALCASAR Control Center (ACC)" 
816
	AuthDigestDomain $HOSTNAME.$DOMAIN
816
	AuthDigestDomain $HOSTNAME.$DOMAIN
817
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
817
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
818
	AuthUserFile $DIR_DEST_ETC/digest/key_manager
818
	AuthUserFile $DIR_DEST_ETC/digest/key_manager
819
	ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
819
	ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
820
</Directory>
820
</Directory>
821
<Directory $DIR_ACC/backup>
821
<Directory $DIR_ACC/backup>
822
	SSLRequireSSL
822
	SSLRequireSSL
823
	AllowOverride None
823
	AllowOverride None
824
	Order deny,allow
824
	Order deny,allow
825
	Deny from all
825
	Deny from all
826
	Allow from 127.0.0.1
826
	Allow from 127.0.0.1
827
	Allow from $PRIVATE_NETWORK_MASK
827
	Allow from $PRIVATE_NETWORK_MASK
828
	require valid-user
828
	require valid-user
829
	AuthType digest
829
	AuthType digest
830
	AuthName "ALCASAR Control Center (ACC)" 
830
	AuthName "ALCASAR Control Center (ACC)" 
831
	AuthDigestDomain $HOSTNAME.$DOMAIN
831
	AuthDigestDomain $HOSTNAME.$DOMAIN
832
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
832
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
833
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
833
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
834
	ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
834
	ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
835
</Directory>
835
</Directory>
836
Alias /save/ "$DIR_SAVE/"
836
Alias /save/ "$DIR_SAVE/"
837
<Directory $DIR_SAVE>
837
<Directory $DIR_SAVE>
838
	SSLRequireSSL
838
	SSLRequireSSL
839
	Options Indexes
839
	Options Indexes
840
	Order deny,allow
840
	Order deny,allow
841
	Deny from all
841
	Deny from all
842
	Allow from 127.0.0.1
842
	Allow from 127.0.0.1
843
	Allow from $PRIVATE_NETWORK_MASK
843
	Allow from $PRIVATE_NETWORK_MASK
844
	require valid-user
844
	require valid-user
845
	AuthType digest
845
	AuthType digest
846
	AuthName "ALCASAR Control Center (ACC)" 
846
	AuthName "ALCASAR Control Center (ACC)" 
847
	AuthDigestDomain $HOSTNAME.$DOMAIN
847
	AuthDigestDomain $HOSTNAME.$DOMAIN
848
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
848
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
849
	ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
849
	ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
850
</Directory>
850
</Directory>
851
<Directory $DIR_WEB/pass>
-
 
852
	SSLRequireSSL
-
 
853
	AllowOverride None
-
 
854
	Order deny,allow
-
 
855
	Deny from all
-
 
856
	Allow from 127.0.0.1
-
 
857
	Allow from $PRIVATE_NETWORK_MASK
-
 
858
	ErrorDocument 404 https://$HOSTNAME.$DOMAIN
-
 
859
</Directory>
-
 
860
EOF
851
EOF
861
# Replacement of the extension .cer by .der in MIME type
852
# Replacement of the extension .cer by .der in MIME type
862
$SED "s?^application/pkix-cert.*?application/pkix-cert		der?g" /etc/mime.types
853
$SED "s?^application/pkix-cert.*?application/pkix-cert		der?g" /etc/mime.types
863
# Launch after coova (in order to wait tun0 to be up)
854
# Launch after coova (in order to wait tun0 to be up)
864
$SED "s?^After=.*?After=network.target remote-fs.target nss-lookup.target chilli.service?g" /lib/systemd/system/httpd.service
855
$SED "s?^After=.*?After=network.target remote-fs.target nss-lookup.target chilli.service?g" /lib/systemd/system/httpd.service
865
# Log file for ACC access imputability
856
# Log file for ACC access imputability
866
[ -e /var/Save/security/acc_access.log ] || touch /var/Save/security/acc_access.log
857
[ -e /var/Save/security/acc_access.log ] || touch /var/Save/security/acc_access.log
867
chown root:apache /var/Save/security/acc_access.log
858
chown root:apache /var/Save/security/acc_access.log
868
chmod 664 /var/Save/security/acc_access.log
859
chmod 664 /var/Save/security/acc_access.log
869
} # End of ACC ()
860
} # End of ACC ()
870
 
861
 
871
##########################################################################
862
##########################################################################
872
##				Fonction "CA"				##
863
##				Fonction "CA"				##
873
## - Creating the CA and the server certificate (apache)	 	##
864
## - Creating the CA and the server certificate (apache)	 	##
874
##########################################################################
865
##########################################################################
875
CA ()
866
CA ()
876
{
867
{
877
	$DIR_DEST_BIN/alcasar-CA.sh
868
	$DIR_DEST_BIN/alcasar-CA.sh
878
	FIC_VIRTUAL_SSL=`find /etc/httpd/conf -type f -name *default_ssl_vhost.conf`
869
	FIC_VIRTUAL_SSL=`find /etc/httpd/conf -type f -name *default_ssl_vhost.conf`
879
	[ -e /etc/httpd/conf/vhosts-ssl.default ]  || cp $FIC_VIRTUAL_SSL /etc/httpd/conf/vhosts-ssl.default
870
	[ -e /etc/httpd/conf/vhosts-ssl.default ]  || cp $FIC_VIRTUAL_SSL /etc/httpd/conf/vhosts-ssl.default
880
	cat <<EOF > $FIC_VIRTUAL_SSL
871
	cat <<EOF > $FIC_VIRTUAL_SSL
881
# default SSL virtual host, used for all HTTPS requests that do not
872
# default SSL virtual host, used for all HTTPS requests that do not
882
# match a ServerName or ServerAlias in any <VirtualHost> block.
873
# match a ServerName or ServerAlias in any <VirtualHost> block.
883
 
874
 
884
<VirtualHost _default_:443>
875
<VirtualHost _default_:443>
885
# general configuration
876
# general configuration
886
    ServerAdmin root@localhost
877
    ServerAdmin root@localhost
887
    ServerName $HOSTNAME.$DOMAIN
878
    ServerName $HOSTNAME.$DOMAIN
888
 
879
 
889
# SSL configuration
880
# SSL configuration
890
    SSLEngine on
881
    SSLEngine on
891
    SSLCertificateFile /etc/pki/tls/certs/alcasar.crt
882
    SSLCertificateFile /etc/pki/tls/certs/alcasar.crt
892
    SSLCertificateKeyFile /etc/pki/tls/private/alcasar.key
883
    SSLCertificateKeyFile /etc/pki/tls/private/alcasar.key
893
    SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
884
    SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
894
    CustomLog logs/ssl_request_log \
885
    CustomLog logs/ssl_request_log \
895
	"%t %{SSL_PROTOCOL}x %{SSL_CIPHER}x [%h] \"%r\" %b"
886
	"%t %{SSL_PROTOCOL}x %{SSL_CIPHER}x [%h] \"%r\" %b"
896
    ErrorLog logs/ssl_error_log
887
    ErrorLog logs/ssl_error_log
897
    ErrorLogFormat "[%t] [%m:%l] [client %a] %M"
888
    ErrorLogFormat "[%t] [%m:%l] [client %a] %M"
898
</VirtualHost>
889
</VirtualHost>
899
EOF
890
EOF
900
	chown -R root:apache /etc/pki
891
	chown -R root:apache /etc/pki
901
	chmod -R 750 /etc/pki
892
	chmod -R 750 /etc/pki
902
} # End of CA ()
893
} # End of CA ()
903
 
894
 
904
##################################################################
895
##################################################################
905
##			Function "time_server"			##
896
##			Function "time_server"			##
906
## - Configuring NTP server					##
897
## - Configuring NTP server					##
907
##################################################################
898
##################################################################
908
time_server ()
899
time_server ()
909
{
900
{
910
# Set the Internet time server
901
# Set the Internet time server
911
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
902
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
912
	cat <<EOF > /etc/ntp/step-tickers
903
	cat <<EOF > /etc/ntp/step-tickers
913
0.fr.pool.ntp.org	# adapt to your country
904
0.fr.pool.ntp.org	# adapt to your country
914
1.fr.pool.ntp.org
905
1.fr.pool.ntp.org
915
2.fr.pool.ntp.org
906
2.fr.pool.ntp.org
916
EOF
907
EOF
917
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
908
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
918
	cat <<EOF > /etc/ntp.conf
909
	cat <<EOF > /etc/ntp.conf
919
server 0.fr.pool.ntp.org	# adapt to your country
910
server 0.fr.pool.ntp.org	# adapt to your country
920
server 1.fr.pool.ntp.org
911
server 1.fr.pool.ntp.org
921
server 2.fr.pool.ntp.org
912
server 2.fr.pool.ntp.org
922
server 127.127.1.0   		# local clock si NTP internet indisponible ...
913
server 127.127.1.0   		# local clock si NTP internet indisponible ...
923
fudge 127.127.1.0 stratum 10
914
fudge 127.127.1.0 stratum 10
924
restrict $PRIVATE_NETWORK mask $PRIVATE_NETMASK nomodify notrap
915
restrict $PRIVATE_NETWORK mask $PRIVATE_NETMASK nomodify notrap
925
restrict 127.0.0.1
916
restrict 127.0.0.1
926
driftfile /var/lib/ntp/drift
917
driftfile /var/lib/ntp/drift
927
logfile /var/log/ntp.log
918
logfile /var/log/ntp.log
928
disable monitor
919
disable monitor
929
EOF
920
EOF
930
	chown -R ntp:ntp /var/lib/ntp
921
	chown -R ntp:ntp /var/lib/ntp
931
# Synchronize now
922
# Synchronize now
932
	ntpd -q -g &
923
	ntpd -q -g &
933
} # End of time_server ()
924
} # End of time_server ()
934
 
925
 
935
##########################################################################################
926
##########################################################################################
936
##			Fonction "init_db"						##
927
##			Fonction "init_db"						##
937
## - Initialisation de la base Mysql							##
928
## - Initialisation de la base Mysql							##
938
## - Affectation du mot de passe de l'administrateur (root)				##
929
## - Affectation du mot de passe de l'administrateur (root)				##
939
## - Suppression des bases et des utilisateurs superflus				##
930
## - Suppression des bases et des utilisateurs superflus				##
940
## - Création de la base 'radius'							##
931
## - Création de la base 'radius'							##
941
## - Installation du schéma de cette base						##
932
## - Installation du schéma de cette base						##
942
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
933
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
943
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
934
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
944
##########################################################################################
935
##########################################################################################
945
init_db ()
936
init_db ()
946
{
937
{
947
	if [ `systemctl is-active mysqld` == "active" ]
938
	if [ `systemctl is-active mysqld` == "active" ]
948
	then
939
	then
949
		systemctl stop mysqld
940
		systemctl stop mysqld
950
	fi
941
	fi
951
	rm -rf /var/lib/mysql # to be sure that there is no former installation
942
	rm -rf /var/lib/mysql # to be sure that there is no former installation
952
	/usr/sbin/mysqld-prepare-db-dir > /dev/null 2>&1
943
	/usr/sbin/mysqld-prepare-db-dir > /dev/null 2>&1
953
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
944
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
954
	$SED "s?^tmpdir.*?tmpdir=/tmp?g" /etc/my.cnf
945
	$SED "s?^tmpdir.*?tmpdir=/tmp?g" /etc/my.cnf
955
	$SED "s?^port.*?#&?g" /etc/my.cnf # we use unix socket only
946
	$SED "s?^port.*?#&?g" /etc/my.cnf # we use unix socket only
956
	$SED "s?^;collation_server =.*?collation_server = utf8_unicode_ci?g" /etc/my.cnf
947
	$SED "s?^;collation_server =.*?collation_server = utf8_unicode_ci?g" /etc/my.cnf
957
	$SED "s?^;character_set_server =.*?character_set_server = utf8?g" /etc/my.cnf  # accentuated user names are allowed
948
	$SED "s?^;character_set_server =.*?character_set_server = utf8?g" /etc/my.cnf  # accentuated user names are allowed
958
	$SED "s?^plugin-load.*?#&?g" /etc/my.cnf.d/feedback.cnf # remove the feedback plugin (ALCASAR doesn't report anything !)
949
	$SED "s?^plugin-load.*?#&?g" /etc/my.cnf.d/feedback.cnf # remove the feedback plugin (ALCASAR doesn't report anything !)
959
	/usr/bin/systemctl start mysqld.service
950
	/usr/bin/systemctl start mysqld.service
960
	nb_round=1
951
	nb_round=1
961
	while [ ! -S /var/lib/mysql/mysql.sock ] && [ $nb_round -lt 10 ] # we wait until mariadb is on
952
	while [ ! -S /var/lib/mysql/mysql.sock ] && [ $nb_round -lt 10 ] # we wait until mariadb is on
962
	do
953
	do
963
		nb_round=`expr $nb_round + 1`
954
		nb_round=`expr $nb_round + 1`
964
		sleep 2
955
		sleep 2
965
	done
956
	done
966
	if [ ! -S /var/lib/mysql/mysql.sock ]
957
	if [ ! -S /var/lib/mysql/mysql.sock ]
967
	then
958
	then
968
		echo "Problème : la base données 'MariaDB' ne s'est pas lancée !"
959
		echo "Problème : la base données 'MariaDB' ne s'est pas lancée !"
969
		exit
960
		exit
970
	fi
961
	fi
971
	mysqladmin -u root password $mysqlpwd
962
	mysqladmin -u root password $mysqlpwd
972
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
963
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
973
# Secure the server
964
# Secure the server
974
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;"
965
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;"
975
	$MYSQL="CONNECT mysql;DELETE from user where User='';DELETE FROM user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');FLUSH PRIVILEGES;" 
966
	$MYSQL="CONNECT mysql;DELETE from user where User='';DELETE FROM user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');FLUSH PRIVILEGES;" 
976
# Create 'radius' database
967
# Create 'radius' database
977
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES;"
968
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES;"
978
# Add an empty radius database structure
969
# Add an empty radius database structure
979
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/empty-radiusd-db.sql
970
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/empty-radiusd-db.sql
980
# modify the start script in order to close accounting connexion when the system is comming down or up
971
# modify the start script in order to close accounting connexion when the system is comming down or up
981
	[ -e /lib/systemd/system/mysqld.service.default ] || cp /lib/systemd/system/mysqld.service /lib/systemd/system/mysqld.service.default
972
	[ -e /lib/systemd/system/mysqld.service.default ] || cp /lib/systemd/system/mysqld.service /lib/systemd/system/mysqld.service.default
982
	$SED "/ExecStartPost=/a ExecStop=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /usr/lib/systemd/system/mysqld.service
973
	$SED "/ExecStartPost=/a ExecStop=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /usr/lib/systemd/system/mysqld.service
983
	$SED "/ExecStartPost=/a ExecStartPost=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /lib/systemd/system/mysqld.service
974
	$SED "/ExecStartPost=/a ExecStartPost=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /lib/systemd/system/mysqld.service
984
	/usr/bin/systemctl daemon-reload
975
	/usr/bin/systemctl daemon-reload
985
} # End of init_db ()
976
} # End of init_db ()
986
 
977
 
987
##########################################################################
978
##########################################################################
988
##			Fonction "radius"				##
979
##			Fonction "radius"				##
989
## - Paramètrage des fichiers de configuration FreeRadius		##
980
## - Paramètrage des fichiers de configuration FreeRadius		##
990
## - Affectation du secret partagé entre coova-chilli et freeradius	##
981
## - Affectation du secret partagé entre coova-chilli et freeradius	##
991
## - Modification de fichier de conf pour l'accès à Mysql		##
982
## - Modification de fichier de conf pour l'accès à Mysql		##
992
##########################################################################
983
##########################################################################
993
radius ()
984
radius ()
994
{
985
{
995
	cp -f $DIR_CONF/empty-radiusd-db.sql /etc/raddb/
986
	cp -f $DIR_CONF/empty-radiusd-db.sql /etc/raddb/
996
	chown -R radius:radius /etc/raddb
987
	chown -R radius:radius /etc/raddb
997
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
988
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
998
# Set radius.conf parameters
989
# Set radius.conf parameters
999
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
990
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
1000
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
991
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
1001
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
992
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
1002
# remove the proxy function
993
# remove the proxy function
1003
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
994
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
1004
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
995
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
1005
# remove EAP module
996
# remove EAP module
1006
	$SED "s?^[\t ]*\$INCLUDE eap.conf.*?#\$INCLUDE eap.conf?g" /etc/raddb/radiusd.conf
997
	$SED "s?^[\t ]*\$INCLUDE eap.conf.*?#\$INCLUDE eap.conf?g" /etc/raddb/radiusd.conf
1007
# listen on loopback (should be modified later if EAP enabled)
998
# listen on loopback (should be modified later if EAP enabled)
1008
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
999
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
1009
# enable the  SQL module (and SQL counter)
1000
# enable the  SQL module (and SQL counter)
1010
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
1001
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
1011
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
1002
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
1012
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
1003
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
1013
# only include modules for ALCASAR needs
1004
# only include modules for ALCASAR needs
1014
	$SED "s?^[\t ]*\$INCLUDE \${confdir}/modules/.*?\t#\$INCLUDE \${confdir}/modules/\n\t# we only include modules for ALCASAR needs\n\t\$INCLUDE \${confdir}/modules/attr_filter\n\t\$INCLUDE \${confdir}/modules/expiration\n\t\$INCLUDE \${confdir}/modules/logintime\n\t\$INCLUDE \${confdir}/modules/ldap\n\t\$INCLUDE \${confdir}/modules/pap?g" /etc/raddb/radiusd.conf
1005
	$SED "s?^[\t ]*\$INCLUDE \${confdir}/modules/.*?\t#\$INCLUDE \${confdir}/modules/\n\t# we only include modules for ALCASAR needs\n\t\$INCLUDE \${confdir}/modules/attr_filter\n\t\$INCLUDE \${confdir}/modules/expiration\n\t\$INCLUDE \${confdir}/modules/logintime\n\t\$INCLUDE \${confdir}/modules/ldap\n\t\$INCLUDE \${confdir}/modules/pap?g" /etc/raddb/radiusd.conf
1015
	$SED "s/^[\t ]exec$/\#\texec/g" /etc/raddb/radiusd.conf
1006
	$SED "s/^[\t ]exec$/\#\texec/g" /etc/raddb/radiusd.conf
1016
	$SED "s?^[\t ]*expr.*?\#\texpr?g" /etc/raddb/radiusd.conf
1007
	$SED "s?^[\t ]*expr.*?\#\texpr?g" /etc/raddb/radiusd.conf
1017
	$SED "s?^[\t ]*\#	daily.*?\#\tdaily\n\tsql?g" /etc/raddb/radiusd.conf
1008
	$SED "s?^[\t ]*\#	daily.*?\#\tdaily\n\tsql?g" /etc/raddb/radiusd.conf
1018
	$SED "s?^[\t ]*logintime.*?\tlogintime\n\tnoresetcounter\n\tdailycounter\n\tmonthlycounter\n\tattr_filter.access_reject\n\tattr_filter.accounting_response\n\tpap?g" /etc/raddb/radiusd.conf
1009
	$SED "s?^[\t ]*logintime.*?\tlogintime\n\tnoresetcounter\n\tdailycounter\n\tmonthlycounter\n\tattr_filter.access_reject\n\tattr_filter.accounting_response\n\tpap?g" /etc/raddb/radiusd.conf
1019
	$SED "s?^[\t ]*\$INCLUDE sites-enabled/.*?\#\$INCLUDE sites-enabled/\n\#\tenable only alcasar virtual server\n\$INCLUDE sites-enabled/alcasar?g" /etc/raddb/radiusd.conf
1010
	$SED "s?^[\t ]*\$INCLUDE sites-enabled/.*?\#\$INCLUDE sites-enabled/\n\#\tenable only alcasar virtual server\n\$INCLUDE sites-enabled/alcasar?g" /etc/raddb/radiusd.conf
1020
# remvove virtual server and copy our conf file
1011
# remvove virtual server and copy our conf file
1021
	rm -f /etc/raddb/sites-enabled/*
1012
	rm -f /etc/raddb/sites-enabled/*
1022
       	cp $DIR_CONF/radius/alcasar-radius /etc/raddb/sites-available/alcasar
1013
       	cp $DIR_CONF/radius/alcasar-radius /etc/raddb/sites-available/alcasar
1023
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
1014
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
1024
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
1015
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
1025
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
1016
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
1026
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
1017
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
1027
# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
1018
# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
1028
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
1019
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
1029
# client.conf configuration (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
1020
# client.conf configuration (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
1030
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
1021
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
1031
	cat << EOF > /etc/raddb/clients.conf
1022
	cat << EOF > /etc/raddb/clients.conf
1032
client 127.0.0.1 {
1023
client 127.0.0.1 {
1033
	secret = $secretradius
1024
	secret = $secretradius
1034
	shortname = localhost
1025
	shortname = localhost
1035
}
1026
}
1036
EOF
1027
EOF
1037
# sql.conf modification
1028
# sql.conf modification
1038
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
1029
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
1039
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
1030
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
1040
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
1031
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
1041
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
1032
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
1042
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
1033
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
1043
# dialup.conf modification (case sensitive for username, check simultaneous use, patch on 'postauth' table, etc.) 
1034
# dialup.conf modification (case sensitive for username, check simultaneous use, patch on 'postauth' table, etc.) 
1044
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
1035
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
1045
	cp -f $DIR_CONF/radius/dialup.conf /etc/raddb/sql/mysql/dialup.conf
1036
	cp -f $DIR_CONF/radius/dialup.conf /etc/raddb/sql/mysql/dialup.conf
1046
# counter.conf modification (change the Max-All-Session-Time counter)
1037
# counter.conf modification (change the Max-All-Session-Time counter)
1047
	[ -e /etc/raddb/sql/mysql/counter.conf.default ] || cp /etc/raddb/sql/mysql/counter.conf /etc/raddb/sql/mysql/counter.conf.default
1038
	[ -e /etc/raddb/sql/mysql/counter.conf.default ] || cp /etc/raddb/sql/mysql/counter.conf /etc/raddb/sql/mysql/counter.conf.default
1048
	cp -f $DIR_CONF/radius/counter.conf /etc/raddb/sql/mysql/counter.conf
1039
	cp -f $DIR_CONF/radius/counter.conf /etc/raddb/sql/mysql/counter.conf
1049
	chown -R radius:radius /etc/raddb/sql/mysql/*
1040
	chown -R radius:radius /etc/raddb/sql/mysql/*
1050
# make certain that mysql is up before radius start
1041
# make certain that mysql is up before radius start
1051
	[ -e /lib/systemd/system/radiusd.service.default ] || cp /lib/systemd/system/radiusd.service /lib/systemd/system/radiusd.service.default
1042
	[ -e /lib/systemd/system/radiusd.service.default ] || cp /lib/systemd/system/radiusd.service /lib/systemd/system/radiusd.service.default
1052
	$SED "s?^After=.*?After=syslog.target network.target mysqld.service?g" /lib/systemd/system/radiusd.service
1043
	$SED "s?^After=.*?After=syslog.target network.target mysqld.service?g" /lib/systemd/system/radiusd.service
1053
	/usr/bin/systemctl daemon-reload
1044
	/usr/bin/systemctl daemon-reload
1054
} # End radius ()
1045
} # End radius ()
1055
 
1046
 
1056
##################################################################################
1047
##################################################################################
1057
##			Fonction "chilli"					##
1048
##			Fonction "chilli"					##
1058
## - Création du fichier d'initialisation et de configuration de coova-chilli	##
1049
## - Création du fichier d'initialisation et de configuration de coova-chilli	##
1059
## - Paramètrage de la page d'authentification (intercept.php)			##
1050
## - Paramètrage de la page d'authentification (intercept.php)			##
1060
##################################################################################
1051
##################################################################################
1061
chilli ()
1052
chilli ()
1062
{
1053
{
1063
# chilli unit for systemd
1054
# chilli unit for systemd
1064
cat << EOF > /lib/systemd/system/chilli.service
1055
cat << EOF > /lib/systemd/system/chilli.service
1065
#  This file is part of systemd.
1056
#  This file is part of systemd.
1066
#
1057
#
1067
#  systemd is free software; you can redistribute it and/or modify it
1058
#  systemd is free software; you can redistribute it and/or modify it
1068
#  under the terms of the GNU General Public License as published by
1059
#  under the terms of the GNU General Public License as published by
1069
#  the Free Software Foundation; either version 2 of the License, or
1060
#  the Free Software Foundation; either version 2 of the License, or
1070
#  (at your option) any later version.
1061
#  (at your option) any later version.
1071
[Unit]
1062
[Unit]
1072
Description=chilli is a captive portal daemon
1063
Description=chilli is a captive portal daemon
1073
After=network.target
1064
After=network.target
1074
 
1065
 
1075
[Service]
1066
[Service]
1076
Type=forking
1067
Type=forking
1077
ExecStart=/usr/libexec/chilli start
1068
ExecStart=/usr/libexec/chilli start
1078
ExecStop=/usr/libexec/chilli stop
1069
ExecStop=/usr/libexec/chilli stop
1079
ExecReload=/usr/libexec/chilli reload
1070
ExecReload=/usr/libexec/chilli reload
1080
PIDFile=/var/run/chilli.pid
1071
PIDFile=/var/run/chilli.pid
1081
 
1072
 
1082
[Install]
1073
[Install]
1083
WantedBy=multi-user.target
1074
WantedBy=multi-user.target
1084
EOF
1075
EOF
1085
# init file creation
1076
# init file creation
1086
	[ -e /etc/init.d/chilli.default ] || mv /etc/init.d/chilli /etc/init.d/chilli.default
1077
	[ -e /etc/init.d/chilli.default ] || mv /etc/init.d/chilli /etc/init.d/chilli.default
1087
	cat <<EOF > /etc/init.d/chilli
1078
	cat <<EOF > /etc/init.d/chilli
1088
#!/bin/sh
1079
#!/bin/sh
1089
#
1080
#
1090
# chilli CoovaChilli init
1081
# chilli CoovaChilli init
1091
#
1082
#
1092
# chkconfig: 2345 65 35
1083
# chkconfig: 2345 65 35
1093
# description: CoovaChilli
1084
# description: CoovaChilli
1094
### BEGIN INIT INFO
1085
### BEGIN INIT INFO
1095
# Provides:       chilli
1086
# Provides:       chilli
1096
# Required-Start: network 
1087
# Required-Start: network 
1097
# Should-Start: 
1088
# Should-Start: 
1098
# Required-Stop:  network
1089
# Required-Stop:  network
1099
# Should-Stop: 
1090
# Should-Stop: 
1100
# Default-Start:  2 3 5
1091
# Default-Start:  2 3 5
1101
# Default-Stop:
1092
# Default-Stop:
1102
# Description:    CoovaChilli access controller
1093
# Description:    CoovaChilli access controller
1103
### END INIT INFO
1094
### END INIT INFO
1104
 
1095
 
1105
[ -f /usr/sbin/chilli ] || exit 0
1096
[ -f /usr/sbin/chilli ] || exit 0
1106
. /etc/init.d/functions
1097
. /etc/init.d/functions
1107
CONFIG=/etc/chilli.conf
1098
CONFIG=/etc/chilli.conf
1108
pidfile=/var/run/chilli.pid
1099
pidfile=/var/run/chilli.pid
1109
[ -f \$CONFIG ] || {
1100
[ -f \$CONFIG ] || {
1110
    echo "\$CONFIG Not found"
1101
    echo "\$CONFIG Not found"
1111
    exit 0
1102
    exit 0
1112
}
1103
}
1113
RETVAL=0
1104
RETVAL=0
1114
prog="chilli"
1105
prog="chilli"
1115
case \$1 in
1106
case \$1 in
1116
    start)
1107
    start)
1117
	if [ -f \$pidfile ] ; then 
1108
	if [ -f \$pidfile ] ; then 
1118
		gprintf "chilli is already running"
1109
		gprintf "chilli is already running"
1119
	else
1110
	else
1120
        	gprintf "Starting \$prog: "
1111
        	gprintf "Starting \$prog: "
1121
		rm -f /var/run/chilli* # cleaning
1112
		rm -f /var/run/chilli* # cleaning
1122
        	/usr/sbin/modprobe tun >/dev/null 2>&1
1113
        	/usr/sbin/modprobe tun >/dev/null 2>&1
1123
        	echo 1 > /proc/sys/net/ipv4/ip_forward
1114
        	echo 1 > /proc/sys/net/ipv4/ip_forward
1124
		[ -e /dev/net/tun ] || {
1115
		[ -e /dev/net/tun ] || {
1125
	    	(cd /dev; 
1116
	    	(cd /dev; 
1126
			mkdir net; 
1117
			mkdir net; 
1127
			cd net; 
1118
			cd net; 
1128
			mknod tun c 10 200)
1119
			mknod tun c 10 200)
1129
		}
1120
		}
1130
		ifconfig $INTIF 0.0.0.0
1121
		ifconfig $INTIF 0.0.0.0
1131
		/usr/sbin/ethtool -K $INTIF gro off
1122
		/usr/sbin/ethtool -K $INTIF gro off
1132
		daemon /usr/sbin/chilli -c \$CONFIG --pidfile=\$pidfile &
1123
		daemon /usr/sbin/chilli -c \$CONFIG --pidfile=\$pidfile &
1133
        	RETVAL=$?
1124
        	RETVAL=$?
1134
	fi
1125
	fi
1135
	;;
1126
	;;
1136
 
1127
 
1137
    reload)
1128
    reload)
1138
	killall -HUP chilli
1129
	killall -HUP chilli
1139
	;;
1130
	;;
1140
 
1131
 
1141
    restart)
1132
    restart)
1142
	\$0 stop
1133
	\$0 stop
1143
        sleep 2
1134
        sleep 2
1144
	\$0 start
1135
	\$0 start
1145
	;;
1136
	;;
1146
    
1137
    
1147
    status)
1138
    status)
1148
        status chilli
1139
        status chilli
1149
        RETVAL=0
1140
        RETVAL=0
1150
        ;;
1141
        ;;
1151
 
1142
 
1152
    stop)
1143
    stop)
1153
	if [ -f \$pidfile ] ; then  
1144
	if [ -f \$pidfile ] ; then  
1154
        	gprintf "Shutting down \$prog: "
1145
        	gprintf "Shutting down \$prog: "
1155
		killproc /usr/sbin/chilli
1146
		killproc /usr/sbin/chilli
1156
		RETVAL=\$?
1147
		RETVAL=\$?
1157
		[ \$RETVAL = 0 ] && rm -f $pidfile
1148
		[ \$RETVAL = 0 ] && rm -f $pidfile
1158
	else	
1149
	else	
1159
        	gprintf "chilli is not running"
1150
        	gprintf "chilli is not running"
1160
	fi
1151
	fi
1161
	;;
1152
	;;
1162
    
1153
    
1163
    *)
1154
    *)
1164
        echo "Usage: \$0 {start|stop|restart|reload|status}"
1155
        echo "Usage: \$0 {start|stop|restart|reload|status}"
1165
        exit 1
1156
        exit 1
1166
esac
1157
esac
1167
echo
1158
echo
1168
EOF
1159
EOF
1169
chmod a+x /etc/init.d/chilli
1160
chmod a+x /etc/init.d/chilli
1170
ln -s /etc/init.d/chilli /usr/libexec/chilli
1161
ln -s /etc/init.d/chilli /usr/libexec/chilli
1171
# conf file creation
1162
# conf file creation
1172
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
1163
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
1173
	#NTP Option configuration for DHCP
1164
	#NTP Option configuration for DHCP
1174
	#DHCP Options : rfc2132
1165
	#DHCP Options : rfc2132
1175
		#dhcp option value will be convert in hexa.
1166
		#dhcp option value will be convert in hexa.
1176
		#NTP option (or 'option 42') is like :
1167
		#NTP option (or 'option 42') is like :
1177
		#			
1168
		#			
1178
		#    Code   Len         Address 1               Address 2
1169
		#    Code   Len         Address 1               Address 2
1179
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1170
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1180
		#   |  42 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
1171
		#   |  42 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
1181
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1172
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1182
		#
1173
		#
1183
		#Code : 42 => 2a
1174
		#Code : 42 => 2a
1184
		#Len : 4 => 04
1175
		#Len : 4 => 04
1185
	PRIVATE_IP_HEXA=$(printf "%02x\n" $(echo $PRIVATE_IP | cut -d'.' -f1))$(printf "%02x\n" $(echo $PRIVATE_IP | cut -d'.' -f2))$(printf "%02x\n" $(echo $PRIVATE_IP | cut -d'.' -f3))$(printf "%02x\n" $(echo $PRIVATE_IP | cut -d'.' -f4))
1176
	PRIVATE_IP_HEXA=$(printf "%02x\n" $(echo $PRIVATE_IP | cut -d'.' -f1))$(printf "%02x\n" $(echo $PRIVATE_IP | cut -d'.' -f2))$(printf "%02x\n" $(echo $PRIVATE_IP | cut -d'.' -f3))$(printf "%02x\n" $(echo $PRIVATE_IP | cut -d'.' -f4))
1186
	cat <<EOF > /etc/chilli.conf
1177
	cat <<EOF > /etc/chilli.conf
1187
# coova config for ALCASAR
1178
# coova config for ALCASAR
1188
cmdsocket	/var/run/chilli.sock
1179
cmdsocket	/var/run/chilli.sock
1189
unixipc		chilli.$INTIF.ipc
1180
unixipc		chilli.$INTIF.ipc
1190
pidfile		/var/run/chilli.pid
1181
pidfile		/var/run/chilli.pid
1191
net		$PRIVATE_NETWORK_MASK
1182
net		$PRIVATE_NETWORK_MASK
1192
dhcpif		$INTIF
1183
dhcpif		$INTIF
1193
ethers		$DIR_DEST_ETC/alcasar-ethers
1184
ethers		$DIR_DEST_ETC/alcasar-ethers
1194
#nodynip
1185
#nodynip
1195
#statip
1186
#statip
1196
dynip		$PRIVATE_NETWORK_MASK
1187
dynip		$PRIVATE_NETWORK_MASK
1197
domain		$DOMAIN
1188
domain		$DOMAIN
1198
dns1		$PRIVATE_IP
1189
dns1		$PRIVATE_IP
1199
dns2		$PRIVATE_IP
1190
dns2		$PRIVATE_IP
1200
uamlisten	$PRIVATE_IP
1191
uamlisten	$PRIVATE_IP
1201
uamport		3990
1192
uamport		3990
1202
macauth
1193
macauth
1203
macpasswd	password
1194
macpasswd	password
1204
strictmacauth
1195
strictmacauth
1205
locationname	$HOSTNAME.$DOMAIN
1196
locationname	$HOSTNAME.$DOMAIN
1206
radiusserver1	127.0.0.1
1197
radiusserver1	127.0.0.1
1207
radiusserver2	127.0.0.1
1198
radiusserver2	127.0.0.1
1208
radiussecret	$secretradius
1199
radiussecret	$secretradius
1209
radiusauthport	1812
1200
radiusauthport	1812
1210
radiusacctport	1813
1201
radiusacctport	1813
1211
uamserver	https://$HOSTNAME.$DOMAIN/intercept.php
1202
uamserver	https://$HOSTNAME.$DOMAIN/intercept.php
1212
radiusnasid	$HOSTNAME.$DOMAIN
1203
radiusnasid	$HOSTNAME.$DOMAIN
1213
uamsecret	$secretuam
1204
uamsecret	$secretuam
1214
uamallowed	$HOSTNAME,$HOSTNAME.$DOMAIN
1205
uamallowed	$HOSTNAME,$HOSTNAME.$DOMAIN
1215
coaport		3799
1206
coaport		3799
1216
conup		$DIR_DEST_BIN/alcasar-conup.sh
1207
conup		$DIR_DEST_BIN/alcasar-conup.sh
1217
condown		$DIR_DEST_BIN/alcasar-condown.sh
1208
condown		$DIR_DEST_BIN/alcasar-condown.sh
1218
include		$DIR_DEST_ETC/alcasar-uamallowed
1209
include		$DIR_DEST_ETC/alcasar-uamallowed
1219
include		$DIR_DEST_ETC/alcasar-uamdomain
1210
include		$DIR_DEST_ETC/alcasar-uamdomain
1220
dhcpopt		2a04$PRIVATE_IP_HEXA
1211
dhcpopt		2a04$PRIVATE_IP_HEXA
1221
macup		$DIR_DEST_BIN/alcasar-macup.sh
1212
macup		$DIR_DEST_BIN/alcasar-macup.sh
1222
macdown		$DIR_DEST_BIN/alcasar-macdown.sh
1213
macdown		$DIR_DEST_BIN/alcasar-macdown.sh
1223
#dhcpgateway		none
1214
#dhcpgateway		none
1224
#dhcprelayagent		none
1215
#dhcprelayagent		none
1225
#dhcpgatewayport	none
1216
#dhcpgatewayport	none
1226
sslkeyfile	/etc/pki/tls/private/alcasar.key
1217
sslkeyfile	/etc/pki/tls/private/alcasar.key
1227
sslcertfile	/etc/pki/tls/certs/alcasar.crt
1218
sslcertfile	/etc/pki/tls/certs/alcasar.crt
1228
redirssl
1219
redirssl
1229
EOF
1220
EOF
1230
# create file for DHCP static ip. Reserve the second IP address for INTIF (the first one is for tun0)
1221
# create file for DHCP static ip. Reserve the second IP address for INTIF (the first one is for tun0)
1231
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers
1222
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers
1232
# create files for trusted domains and urls
1223
# create files for trusted domains and urls
1233
	touch $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
1224
	touch $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
1234
	chown root:apache $DIR_DEST_ETC/alcasar-*
1225
	chown root:apache $DIR_DEST_ETC/alcasar-*
1235
	chmod 660 $DIR_DEST_ETC/alcasar-*
1226
	chmod 660 $DIR_DEST_ETC/alcasar-*
1236
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli)
1227
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli)
1237
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
1228
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
1238
# user 'chilli' creation (in order to run conup/off and up/down scripts
1229
# user 'chilli' creation (in order to run conup/off and up/down scripts
1239
	chilli_exist=`grep chilli /etc/passwd|wc -l`
1230
	chilli_exist=`grep chilli /etc/passwd|wc -l`
1240
	if [ "$chilli_exist" == "1" ]
1231
	if [ "$chilli_exist" == "1" ]
1241
	then
1232
	then
1242
	      userdel -r chilli 2>/dev/null
1233
	      userdel -r chilli 2>/dev/null
1243
	fi
1234
	fi
1244
	groupadd -f chilli
1235
	groupadd -f chilli
1245
	useradd -r -g chilli -s /bin/false -c "system user for coova-chilli" chilli
1236
	useradd -r -g chilli -s /bin/false -c "system user for coova-chilli" chilli
1246
}  # End of chilli ()
1237
}  # End of chilli ()
1247
 
1238
 
1248
##################################################################
1239
##################################################################
1249
##		Fonction "dansguardian"				##
1240
##		Fonction "dansguardian"				##
1250
## - Paramètrage du gestionnaire de contenu Dansguardian	##
1241
## - Paramètrage du gestionnaire de contenu Dansguardian	##
1251
##################################################################
1242
##################################################################
1252
dansguardian ()
1243
dansguardian ()
1253
{
1244
{
1254
	mkdir -p /var/dansguardian /var/log/dansguardian
1245
	mkdir -p /var/dansguardian /var/log/dansguardian
1255
	chown -R dansguardian /var/dansguardian /var/log/dansguardian
1246
	chown -R dansguardian /var/dansguardian /var/log/dansguardian
1256
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/dansguardian -c /etc/dansguardian/dansguardian.conf?g" /lib/systemd/system/dansguardian.service
1247
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/dansguardian -c /etc/dansguardian/dansguardian.conf?g" /lib/systemd/system/dansguardian.service
1257
	$SED "s?^After=.*?After=network.target chilli.service?g" /lib/systemd/system/dansguardian.service
1248
	$SED "s?^After=.*?After=network.target chilli.service?g" /lib/systemd/system/dansguardian.service
1258
	[ -e $DIR_DG/dansguardian.conf.default ] || cp $DIR_DG/dansguardian.conf $DIR_DG/dansguardian.conf.default
1249
	[ -e $DIR_DG/dansguardian.conf.default ] || cp $DIR_DG/dansguardian.conf $DIR_DG/dansguardian.conf.default
1259
# By default the filter is off 
1250
# By default the filter is off 
1260
	$SED "s/^reportinglevel =.*/reportinglevel = 3/g" $DIR_DG/dansguardian.conf
1251
	$SED "s/^reportinglevel =.*/reportinglevel = 3/g" $DIR_DG/dansguardian.conf
1261
# French deny HTML page
1252
# French deny HTML page
1262
	$SED "s?^language =.*?language = french?g" $DIR_DG/dansguardian.conf
1253
	$SED "s?^language =.*?language = french?g" $DIR_DG/dansguardian.conf
1263
# Listen only on LAN side
1254
# Listen only on LAN side
1264
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" $DIR_DG/dansguardian.conf
1255
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" $DIR_DG/dansguardian.conf
1265
# DG send its flow to HAVP
1256
# DG send its flow to HAVP
1266
	$SED "s?^proxyport.*?proxyport = 8090?g" $DIR_DG/dansguardian.conf
1257
	$SED "s?^proxyport.*?proxyport = 8090?g" $DIR_DG/dansguardian.conf
1267
# replace the default deny HTML page
1258
# replace the default deny HTML page
1268
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
1259
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
1269
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
1260
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
1270
# Don't log
1261
# Don't log
1271
	$SED "s?^loglevel =.*?loglevel = 0?g" $DIR_DG/dansguardian.conf
1262
	$SED "s?^loglevel =.*?loglevel = 0?g" $DIR_DG/dansguardian.conf
1272
# on désactive par défaut le controle de contenu des pages html
1263
# on désactive par défaut le controle de contenu des pages html
1273
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/dansguardian.conf
1264
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/dansguardian.conf
1274
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
1265
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
1275
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (on commente ce qui ne l'est pas)
1266
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (on commente ce qui ne l'est pas)
1276
# on désactive par défaut le contrôle d'URL par expressions régulières
1267
# on désactive par défaut le contrôle d'URL par expressions régulières
1277
	cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
1268
	cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
1278
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
1269
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
1279
 
1270
 
1280
# Configure Dansguardian for large site
1271
# Configure Dansguardian for large site
1281
# Minimum number of processus to handle connections
1272
# Minimum number of processus to handle connections
1282
	$SED "s?^minchildren =.*?minchildren = 15?g" $DIR_DG/dansguardian.conf
1273
	$SED "s?^minchildren =.*?minchildren = 15?g" $DIR_DG/dansguardian.conf
1283
# Maximum number of processus to handle connections
1274
# Maximum number of processus to handle connections
1284
	$SED "s?^maxchildren =.*?maxchildren = 200?g" $DIR_DG/dansguardian.conf
1275
	$SED "s?^maxchildren =.*?maxchildren = 200?g" $DIR_DG/dansguardian.conf
1285
# Run at least 8 daemons
1276
# Run at least 8 daemons
1286
	$SED "s?^minsparechildren =.*?minsparechildren = 8?g" $DIR_DG/dansguardian.conf
1277
	$SED "s?^minsparechildren =.*?minsparechildren = 8?g" $DIR_DG/dansguardian.conf
1287
# minimum number of processes to spawn
1278
# minimum number of processes to spawn
1288
	$SED "s?^preforkchildren =.*?preforkchildren = 10?g" $DIR_DG/dansguardian.conf
1279
	$SED "s?^preforkchildren =.*?preforkchildren = 10?g" $DIR_DG/dansguardian.conf
1289
# maximum age of a child process before it croaks it
1280
# maximum age of a child process before it croaks it
1290
	$SED "s?^maxagechildren =.*?maxagechildren = 1000?g" $DIR_DG/dansguardian.conf
1281
	$SED "s?^maxagechildren =.*?maxagechildren = 1000?g" $DIR_DG/dansguardian.conf
1291
	
1282
	
1292
# on désactive par défaut le contrôle de téléchargement de fichiers
1283
# on désactive par défaut le contrôle de téléchargement de fichiers
1293
	[ -e $DIR_DG/dansguardianf1.conf.default ] || cp $DIR_DG/dansguardianf1.conf $DIR_DG/dansguardianf1.conf.default
1284
	[ -e $DIR_DG/dansguardianf1.conf.default ] || cp $DIR_DG/dansguardianf1.conf $DIR_DG/dansguardianf1.conf.default
1294
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" $DIR_DG/dansguardianf1.conf
1285
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" $DIR_DG/dansguardianf1.conf
1295
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
1286
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
1296
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
1287
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
1297
	touch $DIR_DG/lists/bannedextensionlist
1288
	touch $DIR_DG/lists/bannedextensionlist
1298
	touch $DIR_DG/lists/bannedmimetypelist
1289
	touch $DIR_DG/lists/bannedmimetypelist
1299
# 'Safesearch' regex actualisation
1290
# 'Safesearch' regex actualisation
1300
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
1291
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
1301
# empty LAN IP list that won't be WEB filtered
1292
# empty LAN IP list that won't be WEB filtered
1302
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
1293
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
1303
	touch $DIR_DG/lists/exceptioniplist
1294
	touch $DIR_DG/lists/exceptioniplist
1304
# Keep a copy of URL & domain filter configuration files
1295
# Keep a copy of URL & domain filter configuration files
1305
	[ -e $DIR_DG/lists/bannedsitelist.default ] || mv $DIR_DG/lists/bannedsitelist $DIR_DG/lists/bannedsitelist.default
1296
	[ -e $DIR_DG/lists/bannedsitelist.default ] || mv $DIR_DG/lists/bannedsitelist $DIR_DG/lists/bannedsitelist.default
1306
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
1297
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
1307
} # End of dansguardian ()
1298
} # End of dansguardian ()
1308
 
1299
 
1309
##################################################################
1300
##################################################################
1310
##			Fonction "antivirus"			##
1301
##			Fonction "antivirus"			##
1311
## - configuration of havp, libclamav and freshclam		##
1302
## - configuration of havp, libclamav and freshclam		##
1312
##################################################################
1303
##################################################################
1313
antivirus ()		
1304
antivirus ()		
1314
{
1305
{
1315
# create 'havp' user
1306
# create 'havp' user
1316
	havp_exist=`grep havp /etc/passwd|wc -l`
1307
	havp_exist=`grep havp /etc/passwd|wc -l`
1317
	if [ "$havp_exist" == "1" ]
1308
	if [ "$havp_exist" == "1" ]
1318
	then
1309
	then
1319
	      userdel -r havp 2>/dev/null
1310
	      userdel -r havp 2>/dev/null
1320
	      groupdel havp 2>/dev/null
1311
	      groupdel havp 2>/dev/null
1321
	fi
1312
	fi
1322
	groupadd -f havp
1313
	groupadd -f havp
1323
	useradd -r -g havp -s /bin/false -c "system user for havp (antivirus proxy)" havp
1314
	useradd -r -g havp -s /bin/false -c "system user for havp (antivirus proxy)" havp
1324
	mkdir -p /var/tmp/havp /var/log/havp /var/run/havp /var/log/clamav /var/lib/clamav
1315
	mkdir -p /var/tmp/havp /var/log/havp /var/run/havp /var/log/clamav /var/lib/clamav
1325
	chown -R havp:havp /var/tmp/havp /var/log/havp /var/run/havp
1316
	chown -R havp:havp /var/tmp/havp /var/log/havp /var/run/havp
1326
	chown -R clamav:clamav /var/log/clamav /var/lib/clamav
1317
	chown -R clamav:clamav /var/log/clamav /var/lib/clamav
1327
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
1318
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
1328
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
1319
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
1329
	$SED "s?^# PIDFILE.*?PIDFILE /var/run/havp/havp.pid?g" /etc/havp/havp.config	# pidfile
1320
	$SED "s?^# PIDFILE.*?PIDFILE /var/run/havp/havp.pid?g" /etc/havp/havp.config	# pidfile
1330
	$SED "s?^# TRANSPARENT.*?TRANSPARENT false?g" /etc/havp/havp.config		# transparent mode
1321
	$SED "s?^# TRANSPARENT.*?TRANSPARENT false?g" /etc/havp/havp.config		# transparent mode
1331
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config	# we listen only on loopback
1322
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config	# we listen only on loopback
1332
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config				# datas come on port 8090 (on loopback)
1323
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config				# datas come on port 8090 (on loopback)
1333
	$SED "s?^# TIMEFORMAT.*?TIMEFORMAT %Y %b %d %H:%M:%S?g" /etc/havp/havp.config	# Log format
1324
	$SED "s?^# TIMEFORMAT.*?TIMEFORMAT %Y %b %d %H:%M:%S?g" /etc/havp/havp.config	# Log format
1334
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config		# active libclamav AV
1325
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config		# active libclamav AV
1335
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config			# log only when malware matches
1326
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config			# log only when malware matches
1336
	$SED "s?^# SERVERNUMBER.*?SERVERNUMBER 10?g" /etc/havp/havp.config		# 10 daemons are started simultaneously
1327
	$SED "s?^# SERVERNUMBER.*?SERVERNUMBER 10?g" /etc/havp/havp.config		# 10 daemons are started simultaneously
1337
	$SED "s?^# SCANIMAGES.*?SCANIMAGES false?g" /etc/havp/havp.config		# doesn't scan image files
1328
	$SED "s?^# SCANIMAGES.*?SCANIMAGES false?g" /etc/havp/havp.config		# doesn't scan image files
1338
	$SED "s?^# SKIPMIME.*?SKIPMIME image\/\* video\/\* audio\/\*?g" /etc/havp/havp.config # doesn't scan some multimedia files
1329
	$SED "s?^# SKIPMIME.*?SKIPMIME image\/\* video\/\* audio\/\*?g" /etc/havp/havp.config # doesn't scan some multimedia files
1339
# skip checking of youtube flow (too heavy load / risk too low)
1330
# skip checking of youtube flow (too heavy load / risk too low)
1340
	[ -e /etc/havp/whitelist.default ] || cp /etc/havp/whitelist /etc/havp/whitelist.default
1331
	[ -e /etc/havp/whitelist.default ] || cp /etc/havp/whitelist /etc/havp/whitelist.default
1341
	echo "# Whitelist youtube flow" >> /etc/havp/whitelist
1332
	echo "# Whitelist youtube flow" >> /etc/havp/whitelist
1342
	echo "*.youtube.com/*" >> /etc/havp/whitelist
1333
	echo "*.youtube.com/*" >> /etc/havp/whitelist
1343
# adapt init script and systemd unit
1334
# adapt init script and systemd unit
1344
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
1335
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
1345
	cp -f $DIR_CONF/havp-init /etc/init.d/havp
1336
	cp -f $DIR_CONF/havp-init /etc/init.d/havp
1346
	[ -e /lib/systemd/system/havp.service.default ] || cp /lib/systemd/system/havp.service /lib/systemd/system/havp.service.default
1337
	[ -e /lib/systemd/system/havp.service.default ] || cp /lib/systemd/system/havp.service /lib/systemd/system/havp.service.default
1347
	$SED "/^PIDFile/i ExecStartPre=/bin/mkdir -p /var/run/havp" /lib/systemd/system/havp.service
1338
	$SED "/^PIDFile/i ExecStartPre=/bin/mkdir -p /var/run/havp" /lib/systemd/system/havp.service
1348
	$SED "/^PIDFile/i ExecStartPre=/bin/chown -R havp:havp /var/run/havp /var/log/havp" /lib/systemd/system/havp.service
1339
	$SED "/^PIDFile/i ExecStartPre=/bin/chown -R havp:havp /var/run/havp /var/log/havp" /lib/systemd/system/havp.service
1349
# replace of the intercept page (template)
1340
# replace of the intercept page (template)
1350
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
1341
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
1351
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
1342
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
1352
# update virus database every 4 hours (24h/6)
1343
# update virus database every 4 hours (24h/6)
1353
	[ -e /etc/freshclam.conf.default ] || cp /etc/freshclam.conf /etc/freshclam.conf.default
1344
	[ -e /etc/freshclam.conf.default ] || cp /etc/freshclam.conf /etc/freshclam.conf.default
1354
	$SED "s?^Checks.*?Checks 6?g" /etc/freshclam.conf
1345
	$SED "s?^Checks.*?Checks 6?g" /etc/freshclam.conf
1355
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
1346
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
1356
	$SED "/^DatabaseMirror/i DatabaseMirror db.fr.clamav.net" /etc/freshclam.conf
1347
	$SED "/^DatabaseMirror/i DatabaseMirror db.fr.clamav.net" /etc/freshclam.conf
1357
	$SED "/^DatabaseMirror db.fr.clamav.net/i DatabaseMirror switch.clamav.net" /etc/freshclam.conf
1348
	$SED "/^DatabaseMirror db.fr.clamav.net/i DatabaseMirror switch.clamav.net" /etc/freshclam.conf
1358
	$SED "s?MaxAttempts.*?MaxAttempts 3?g" /etc/freshclam.conf
1349
	$SED "s?MaxAttempts.*?MaxAttempts 3?g" /etc/freshclam.conf
1359
# update now
1350
# update now
1360
	/usr/bin/freshclam --no-warnings
1351
	/usr/bin/freshclam --no-warnings
1361
} # End of antivirus ()
1352
} # End of antivirus ()
1362
 
1353
 
1363
##########################################################################
1354
##########################################################################
1364
##			Fonction "tinyproxy"				##
1355
##			Fonction "tinyproxy"				##
1365
## - configuration of tinyproxy (proxy between filterde users and havp)	##
1356
## - configuration of tinyproxy (proxy between filterde users and havp)	##
1366
##########################################################################
1357
##########################################################################
1367
tinyproxy ()		
1358
tinyproxy ()		
1368
{
1359
{
1369
	tinyproxy_exist=`grep tinyproxy /etc/passwd|wc -l`
1360
	tinyproxy_exist=`grep tinyproxy /etc/passwd|wc -l`
1370
	if [ "$tinyproxy_exist" == "1" ]
1361
	if [ "$tinyproxy_exist" == "1" ]
1371
	then
1362
	then
1372
	      userdel -r tinyproxy 2>/dev/null
1363
	      userdel -r tinyproxy 2>/dev/null
1373
	      groupdel tinyproxy 2>/dev/null
1364
	      groupdel tinyproxy 2>/dev/null
1374
	fi
1365
	fi
1375
	groupadd -f tinyproxy
1366
	groupadd -f tinyproxy
1376
	useradd -r -g tinyproxy -s /bin/false -c "system user for tinyproxy" tinyproxy
1367
	useradd -r -g tinyproxy -s /bin/false -c "system user for tinyproxy" tinyproxy
1377
	mkdir -p /var/run/tinyproxy /var/log/tinyproxy
1368
	mkdir -p /var/run/tinyproxy /var/log/tinyproxy
1378
	chown -R tinyproxy.tinyproxy /var/run/tinyproxy /var/log/tinyproxy
1369
	chown -R tinyproxy.tinyproxy /var/run/tinyproxy /var/log/tinyproxy
1379
	[ -e /etc/tinyproxy/tinyproxy.conf.default ] || cp /etc/tinyproxy/tinyproxy.conf /etc/tinyproxy/tinyproxy.conf.default
1370
	[ -e /etc/tinyproxy/tinyproxy.conf.default ] || cp /etc/tinyproxy/tinyproxy.conf /etc/tinyproxy/tinyproxy.conf.default
1380
	$SED "s?^User.*?User tinyproxy?g" /etc/tinyproxy/tinyproxy.conf
1371
	$SED "s?^User.*?User tinyproxy?g" /etc/tinyproxy/tinyproxy.conf
1381
	$SED "s?^Group.*?Group tinyproxy?g" /etc/tinyproxy/tinyproxy.conf
1372
	$SED "s?^Group.*?Group tinyproxy?g" /etc/tinyproxy/tinyproxy.conf
1382
	$SED "s?^Port.*?Port 8090?g" /etc/tinyproxy/tinyproxy.conf			# Listen Port
1373
	$SED "s?^Port.*?Port 8090?g" /etc/tinyproxy/tinyproxy.conf			# Listen Port
1383
	$SED "s?^#Listen.*?Listen $PRIVATE_IP?g" /etc/tinyproxy/tinyproxy.conf		# Listen NIC (only intif)
1374
	$SED "s?^#Listen.*?Listen $PRIVATE_IP?g" /etc/tinyproxy/tinyproxy.conf		# Listen NIC (only intif)
1384
	$SED "s?^#LogFile.*?LogFile \"/var/log/tinyproxy/tinyproxy.log\"?g" /etc/tinyproxy/tinyproxy.conf
1375
	$SED "s?^#LogFile.*?LogFile \"/var/log/tinyproxy/tinyproxy.log\"?g" /etc/tinyproxy/tinyproxy.conf
1385
	$SED "s?^#PidFile.*?PidFile \"/var/run/tinyproxy/tinyproxy.pid\"?g" /etc/tinyproxy/tinyproxy.conf
1376
	$SED "s?^#PidFile.*?PidFile \"/var/run/tinyproxy/tinyproxy.pid\"?g" /etc/tinyproxy/tinyproxy.conf
1386
	$SED "s?^LogLevel.*?LogLevel Error?g" /etc/tinyproxy/tinyproxy.conf		# Only errors are logged
1377
	$SED "s?^LogLevel.*?LogLevel Error?g" /etc/tinyproxy/tinyproxy.conf		# Only errors are logged
1387
	$SED "s?^#Upstream.*?Upstream 127.0.0.1:8090?g" /etc/tinyproxy/tinyproxy.conf	# forward to HAVP
1378
	$SED "s?^#Upstream.*?Upstream 127.0.0.1:8090?g" /etc/tinyproxy/tinyproxy.conf	# forward to HAVP
1388
	$SED "s?^#DisableViaHeader.*?DisableViaHeader Yes?g" /etc/tinyproxy/tinyproxy.conf	# Stealth mode
1379
	$SED "s?^#DisableViaHeader.*?DisableViaHeader Yes?g" /etc/tinyproxy/tinyproxy.conf	# Stealth mode
1389
	$SED "s?^Allow.*?Allow $PRIVATE_NETWORK_MASK?g" /etc/tinyproxy/tinyproxy.conf	# Allow from LAN
1380
	$SED "s?^Allow.*?Allow $PRIVATE_NETWORK_MASK?g" /etc/tinyproxy/tinyproxy.conf	# Allow from LAN
1390
# Create the systemd unit
1381
# Create the systemd unit
1391
cat << EOF > /lib/systemd/system/tinyproxy.service
1382
cat << EOF > /lib/systemd/system/tinyproxy.service
1392
#  This file is part of systemd.
1383
#  This file is part of systemd.
1393
#
1384
#
1394
#  systemd is free software; you can redistribute it and/or modify it
1385
#  systemd is free software; you can redistribute it and/or modify it
1395
#  under the terms of the GNU General Public License as published by
1386
#  under the terms of the GNU General Public License as published by
1396
#  the Free Software Foundation; either version 2 of the License, or
1387
#  the Free Software Foundation; either version 2 of the License, or
1397
#  (at your option) any later version.
1388
#  (at your option) any later version.
1398
 
1389
 
1399
# This unit launches tinyproxy (a very light proxy).
1390
# This unit launches tinyproxy (a very light proxy).
1400
# The "sleep 2" is needed because the pid file isn't ready for systemd
1391
# The "sleep 2" is needed because the pid file isn't ready for systemd
1401
[Unit]
1392
[Unit]
1402
Description=Tinyproxy Web Proxy Server
1393
Description=Tinyproxy Web Proxy Server
1403
After=network.target iptables.service
1394
After=network.target iptables.service
1404
 
1395
 
1405
[Service]
1396
[Service]
1406
Type=forking
1397
Type=forking
1407
ExecStartPre=/bin/chown -R tinyproxy.tinyproxy /var/run/tinyproxy /var/log/tinyproxy
1398
ExecStartPre=/bin/chown -R tinyproxy.tinyproxy /var/run/tinyproxy /var/log/tinyproxy
1408
ExecStartPre=/bin/sleep 2
1399
ExecStartPre=/bin/sleep 2
1409
PIDFile=/var/run/tinyproxy/tinyproxy.pid
1400
PIDFile=/var/run/tinyproxy/tinyproxy.pid
1410
ExecStart=/usr/sbin/tinyproxy -c /etc/tinyproxy/tinyproxy.conf
1401
ExecStart=/usr/sbin/tinyproxy -c /etc/tinyproxy/tinyproxy.conf
1411
 
1402
 
1412
[Install]
1403
[Install]
1413
WantedBy=multi-user.target
1404
WantedBy=multi-user.target
1414
EOF
1405
EOF
1415
 
1406
 
1416
} # end of tinyproxy
1407
} # end of tinyproxy
1417
##################################################################################
1408
##################################################################################
1418
##			function "ulogd"					##
1409
##			function "ulogd"					##
1419
## - Ulog config for multi-log files 						##
1410
## - Ulog config for multi-log files 						##
1420
##################################################################################
1411
##################################################################################
1421
ulogd ()
1412
ulogd ()
1422
{
1413
{
1423
# Three instances of ulogd (three different logfiles)
1414
# Three instances of ulogd (three different logfiles)
1424
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
1415
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
1425
	nl=1
1416
	nl=1
1426
	for log_type in traceability ssh ext-access
1417
	for log_type in traceability ssh ext-access
1427
	do
1418
	do
1428
		[ -e /lib/systemd/system/ulogd-$log_type.service ] || cp -f /lib/systemd/system/ulogd.service /lib/systemd/system/ulogd-$log_type.service
1419
		[ -e /lib/systemd/system/ulogd-$log_type.service ] || cp -f /lib/systemd/system/ulogd.service /lib/systemd/system/ulogd-$log_type.service
1429
		[ -e /var/log/firewall/$log_type.log ] || echo "" > /var/log/firewall/$log_type.log
1420
		[ -e /var/log/firewall/$log_type.log ] || echo "" > /var/log/firewall/$log_type.log
1430
		cp -f $DIR_CONF/ulogd-sample.conf /etc/ulogd-$log_type.conf
1421
		cp -f $DIR_CONF/ulogd-sample.conf /etc/ulogd-$log_type.conf
1431
		$SED "s?^group=.*?group=$nl?g" /etc/ulogd-$log_type.conf
1422
		$SED "s?^group=.*?group=$nl?g" /etc/ulogd-$log_type.conf
1432
		cat << EOF >> /etc/ulogd-$log_type.conf
1423
		cat << EOF >> /etc/ulogd-$log_type.conf
1433
[emu1]
1424
[emu1]
1434
file="/var/log/firewall/$log_type.log"
1425
file="/var/log/firewall/$log_type.log"
1435
sync=1
1426
sync=1
1436
EOF
1427
EOF
1437
		$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/ulogd -u ulogd -c /etc/ulogd-$log_type.conf $ULOGD_OPTIONS?g" /lib/systemd/system/ulogd-$log_type.service
1428
		$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/ulogd -u ulogd -c /etc/ulogd-$log_type.conf $ULOGD_OPTIONS?g" /lib/systemd/system/ulogd-$log_type.service
1438
		nl=`expr $nl + 1`
1429
		nl=`expr $nl + 1`
1439
	done
1430
	done
1440
	chown -R root:apache /var/log/firewall
1431
	chown -R root:apache /var/log/firewall
1441
	chmod 750 /var/log/firewall
1432
	chmod 750 /var/log/firewall
1442
	chmod 640 /var/log/firewall/*
1433
	chmod 640 /var/log/firewall/*
1443
}  # End of ulogd ()
1434
}  # End of ulogd ()
1444
 
1435
 
1445
 
1436
 
1446
##########################################################
1437
##########################################################
1447
##              Function "nfsen"			##
1438
##              Function "nfsen"			##
1448
## - install the nfsen grapher				##
1439
## - install the nfsen grapher				##
1449
## - install the two plugins porttracker & surfmap	##
1440
## - install the two plugins porttracker & surfmap	##
1450
##########################################################
1441
##########################################################
1451
nfsen()
1442
nfsen()
1452
{
1443
{
1453
	tar xzf ./conf/nfsen/nfsen-1.3.7.tar.gz -C /tmp/
1444
	tar xzf ./conf/nfsen/nfsen-1.3.7.tar.gz -C /tmp/
1454
# Add PortTracker plugin
1445
# Add PortTracker plugin
1455
	for i in /var/www/html/acc/manager/nfsen/plugins /var/log/netflow/porttracker /usr/share/nfsen/plugins
1446
	for i in /var/www/html/acc/manager/nfsen/plugins /var/log/netflow/porttracker /usr/share/nfsen/plugins
1456
	do
1447
	do
1457
	[ ! -d $i ] && mkdir -p $i && chown -R apache:apache $i
1448
	[ ! -d $i ] && mkdir -p $i && chown -R apache:apache $i
1458
	done
1449
	done
1459
	$SED "s?^my \$PORTSDBDIR =.*?my \$PORTSDBDIR = \"/var/log/netflow/porttracker\";?g" /tmp/nfsen-1.3.7/contrib/PortTracker/PortTracker.pm
1450
	$SED "s?^my \$PORTSDBDIR =.*?my \$PORTSDBDIR = \"/var/log/netflow/porttracker\";?g" /tmp/nfsen-1.3.7/contrib/PortTracker/PortTracker.pm
1460
# use of our conf file and init unit
1451
# use of our conf file and init unit
1461
	cp $DIR_CONF/nfsen/nfsen.conf /tmp/nfsen-1.3.7/etc/
1452
	cp $DIR_CONF/nfsen/nfsen.conf /tmp/nfsen-1.3.7/etc/
1462
# Installation of nfsen (we change a little 'install.pl in order not to ask the user for the perl version)
1453
# Installation of nfsen (we change a little 'install.pl in order not to ask the user for the perl version)
1463
	DirTmp=$(pwd)
1454
	DirTmp=$(pwd)
1464
	cd /tmp/nfsen-1.3.7/
1455
	cd /tmp/nfsen-1.3.7/
1465
	/usr/bin/perl install.pl etc/nfsen.conf
1456
	/usr/bin/perl install.pl etc/nfsen.conf
1466
	/usr/bin/perl install.pl etc/nfsen.conf # to avoid a Perl mistake "Semaphore introuvable"
1457
	/usr/bin/perl install.pl etc/nfsen.conf # to avoid a Perl mistake "Semaphore introuvable"
1467
# Create RRD DB for porttracker (only in it still doesn't exist)
1458
# Create RRD DB for porttracker (only in it still doesn't exist)
1468
	cp contrib/PortTracker/PortTracker.pm /usr/share/nfsen/plugins/
1459
	cp contrib/PortTracker/PortTracker.pm /usr/share/nfsen/plugins/
1469
	cp contrib/PortTracker/PortTracker.php /var/www/html/acc/manager/nfsen/plugins/
1460
	cp contrib/PortTracker/PortTracker.php /var/www/html/acc/manager/nfsen/plugins/
1470
	if [ "$(ls -A "/var/log/netflow/porttracker" 2>&1)" = "" ]; then sudo -u apache nftrack -I -d /var/log/netflow/porttracker; else echo "RRD DB already exists"; fi
1461
	if [ "$(ls -A "/var/log/netflow/porttracker" 2>&1)" = "" ]; then sudo -u apache nftrack -I -d /var/log/netflow/porttracker; else echo "RRD DB already exists"; fi
1471
	chmod -R 770 /var/log/netflow/porttracker
1462
	chmod -R 770 /var/log/netflow/porttracker
1472
# nfsen unit for systemd
1463
# nfsen unit for systemd
1473
cat << EOF > /lib/systemd/system/nfsen.service
1464
cat << EOF > /lib/systemd/system/nfsen.service
1474
#  This file is part of systemd.
1465
#  This file is part of systemd.
1475
#
1466
#
1476
#  systemd is free software; you can redistribute it and/or modify it
1467
#  systemd is free software; you can redistribute it and/or modify it
1477
#  under the terms of the GNU General Public License as published by
1468
#  under the terms of the GNU General Public License as published by
1478
#  the Free Software Foundation; either version 2 of the License, or
1469
#  the Free Software Foundation; either version 2 of the License, or
1479
#  (at your option) any later version.
1470
#  (at your option) any later version.
1480
 
1471
 
1481
# This unit launches nfsen (a Netflow grapher).
1472
# This unit launches nfsen (a Netflow grapher).
1482
[Unit]
1473
[Unit]
1483
Description= NfSen init script
1474
Description= NfSen init script
1484
After=network.target iptables.service
1475
After=network.target iptables.service
1485
 
1476
 
1486
[Service]
1477
[Service]
1487
Type=oneshot
1478
Type=oneshot
1488
RemainAfterExit=yes
1479
RemainAfterExit=yes
1489
PIDFile=/var/run/nfsen/nfsen.pid
1480
PIDFile=/var/run/nfsen/nfsen.pid
1490
ExecStartPre=/bin/mkdir -p /var/run/nfsen
1481
ExecStartPre=/bin/mkdir -p /var/run/nfsen
1491
ExecStartPre=/bin/chown apache:apache /var/run/nfsen
1482
ExecStartPre=/bin/chown apache:apache /var/run/nfsen
1492
ExecStart=/usr/bin/nfsen start 
1483
ExecStart=/usr/bin/nfsen start 
1493
ExecStop=/usr/bin/nfsen stop
1484
ExecStop=/usr/bin/nfsen stop
1494
ExecReload=/usr/bin/nfsen restart
1485
ExecReload=/usr/bin/nfsen restart
1495
TimeoutSec=0
1486
TimeoutSec=0
1496
 
1487
 
1497
[Install]
1488
[Install]
1498
WantedBy=multi-user.target
1489
WantedBy=multi-user.target
1499
EOF
1490
EOF
1500
# Add the listen port to collect netflow packet (nfcapd)
1491
# Add the listen port to collect netflow packet (nfcapd)
1501
$SED "s?'\$ziparg $extensions.*?\$ziparg $extensions -b 127.0.0.1;'?g" /usr/libexec/NfSenRC.pm 
1492
$SED "s?'\$ziparg $extensions.*?\$ziparg $extensions -b 127.0.0.1;'?g" /usr/libexec/NfSenRC.pm 
1502
# expire delay for the profile "live"
1493
# expire delay for the profile "live"
1503
	/usr/bin/systemctl start nfsen
1494
	/usr/bin/systemctl start nfsen
1504
	/bin/nfsen -m live -e 62d 2>/dev/null
1495
	/bin/nfsen -m live -e 62d 2>/dev/null
1505
# add SURFmap plugin
1496
# add SURFmap plugin
1506
	cp $DIR_CONF/nfsen/SURFmap_v3.3.1.tar.gz /tmp/
1497
	cp $DIR_CONF/nfsen/SURFmap_v3.3.1.tar.gz /tmp/
1507
	cp $DIR_CONF/nfsen/GeoLiteCity* /tmp/
1498
	cp $DIR_CONF/nfsen/GeoLiteCity* /tmp/
1508
	tar xzf /tmp/SURFmap_v3.3.1.tar.gz -C /tmp/
1499
	tar xzf /tmp/SURFmap_v3.3.1.tar.gz -C /tmp/
1509
	cd /tmp/
1500
	cd /tmp/
1510
	/usr/bin/sh SURFmap/install.sh
1501
	/usr/bin/sh SURFmap/install.sh
1511
chown -R apache:apache /var/www/html/acc/manager/nfsen /usr/share/nfsen
1502
chown -R apache:apache /var/www/html/acc/manager/nfsen /usr/share/nfsen
1512
# clear the installation
1503
# clear the installation
1513
	cd $DirTmp
1504
	cd $DirTmp
1514
	rm -rf /tmp/nfsen*
1505
	rm -rf /tmp/nfsen*
1515
	rm -rf /tmp/SURFmap*
1506
	rm -rf /tmp/SURFmap*
1516
} # End of nfsen ()
1507
} # End of nfsen ()
1517
 
1508
 
1518
##################################################
1509
##################################################
1519
##		Function "vnstat"		##
1510
##		Function "vnstat"		##
1520
## Initialization of Vnstat and vnstat phpFE    ##
1511
## Initialization of Vnstat and vnstat phpFE    ##
1521
##################################################
1512
##################################################
1522
vnstat ()
1513
vnstat ()
1523
{
1514
{
1524
	 [ -e /etc/vnstat.conf.default ] || cp /etc/vnstat.conf /etc/vnstat.conf.default
1515
	 [ -e /etc/vnstat.conf.default ] || cp /etc/vnstat.conf /etc/vnstat.conf.default
1525
	 $SED "s?Interface.*?Interface \"$EXTIF\"?g" /etc/vnstat.conf
1516
	 $SED "s?Interface.*?Interface \"$EXTIF\"?g" /etc/vnstat.conf
1526
	 [ -e $DIR_ACC/manager/stats/config.php.default ] || cp $DIR_ACC/manager/stats/config.php $DIR_ACC/manager/stats/config.php.default
1517
	 [ -e $DIR_ACC/manager/stats/config.php.default ] || cp $DIR_ACC/manager/stats/config.php $DIR_ACC/manager/stats/config.php.default
1527
	 $SED "s?\$iface_list =.*?\$iface_list = array('$EXTIF');?g" $DIR_ACC/manager/stats/config.php
1518
	 $SED "s?\$iface_list =.*?\$iface_list = array('$EXTIF');?g" $DIR_ACC/manager/stats/config.php
1528
	/usr/bin/vnstat -u -i $EXTIF
1519
	/usr/bin/vnstat -u -i $EXTIF
1529
} # End of vnstat	
1520
} # End of vnstat	
1530
##################################################
1521
##################################################
1531
##		Function "dnsmasq"		##
1522
##		Function "dnsmasq"		##
1532
##################################################
1523
##################################################
1533
dnsmasq ()
1524
dnsmasq ()
1534
{
1525
{
1535
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1526
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1536
	[ -e /etc/sysconfig/dnsmasq.default ] || cp /etc/sysconfig/dnsmasq /etc/sysconfig/dnsmasq.default
1527
	[ -e /etc/sysconfig/dnsmasq.default ] || cp /etc/sysconfig/dnsmasq /etc/sysconfig/dnsmasq.default
1537
#	$SED "s?^OPTION=.*?OPTION=-C /etc/dnsmasq.conf?g" /etc/sysconfig/dnsmasq # default conf file for the first dnsmasq instance
1528
#	$SED "s?^OPTION=.*?OPTION=-C /etc/dnsmasq.conf?g" /etc/sysconfig/dnsmasq # default conf file for the first dnsmasq instance
1538
	$SED "s?^.*OPTIONS=.*?#OPTIONS=\"--log-async=250 --log-queries --log-facility=/var/log/dnsmasq/queries.log\"?g" /etc/sysconfig/dnsmasq # General Options for dnslog or debugging
1529
	$SED "s?^.*OPTIONS=.*?#OPTIONS=\"--log-async=250 --log-queries --log-facility=/var/log/dnsmasq/queries.log\"?g" /etc/sysconfig/dnsmasq # General Options for dnslog or debugging
1539
	$SED "s?^local=.*?local=/$DOMAIN/?g" $DIR_DEST_ETC/alcasar-dns-name # default domain name for all dnsmasq daemons
1530
	$SED "s?^local=.*?local=/$DOMAIN/?g" $DIR_DEST_ETC/alcasar-dns-name # default domain name for all dnsmasq daemons
1540
	[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1531
	[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1541
# 1st dnsmasq listen on udp 53 ("dnsmasq - forward"). It's used as dhcp server only if "alcasar-bypass" is on.
1532
# 1st dnsmasq listen on udp 53 ("dnsmasq - forward"). It's used as dhcp server only if "alcasar-bypass" is on.
1542
	cat << EOF > /etc/dnsmasq.conf
1533
	cat << EOF > /etc/dnsmasq.conf
1543
# Configuration file for "dnsmasq in forward mode"
1534
# Configuration file for "dnsmasq in forward mode"
1544
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1535
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1545
listen-address=$PRIVATE_IP
1536
listen-address=$PRIVATE_IP
1546
pid-file=/var/run/dnsmasq.pid
1537
pid-file=/var/run/dnsmasq.pid
1547
listen-address=127.0.0.1
1538
listen-address=127.0.0.1
1548
no-dhcp-interface=$INTIF
1539
no-dhcp-interface=$INTIF
1549
no-dhcp-interface=tun0
1540
no-dhcp-interface=tun0
1550
no-dhcp-interface=lo
1541
no-dhcp-interface=lo
1551
bind-interfaces
1542
bind-interfaces
1552
cache-size=2048
1543
cache-size=2048
1553
domain-needed
1544
domain-needed
1554
expand-hosts
1545
expand-hosts
1555
bogus-priv
1546
bogus-priv
1556
filterwin2k
1547
filterwin2k
1557
server=$DNS1
1548
server=$DNS1
1558
server=$DNS2
1549
server=$DNS2
1559
# DHCP service is configured. It will be enabled in "bypass" mode
1550
# DHCP service is configured. It will be enabled in "bypass" mode
1560
#dhcp-range=$PRIVATE_FIRST_IP,$PRIVATE_LAST_IP,$PRIVATE_NETMASK,12h
1551
#dhcp-range=$PRIVATE_FIRST_IP,$PRIVATE_LAST_IP,$PRIVATE_NETMASK,12h
1561
#dhcp-option=option:router,$PRIVATE_IP
1552
#dhcp-option=option:router,$PRIVATE_IP
1562
#dhcp-option=option:ntp-server,$PRIVATE_IP
1553
#dhcp-option=option:ntp-server,$PRIVATE_IP
1563
#domain=$DOMAIN
1554
#domain=$DOMAIN
1564
 
1555
 
1565
# Exemple of static dhcp assignation : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1556
# Exemple of static dhcp assignation : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1566
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1557
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1567
EOF
1558
EOF
1568
# 2nd dnsmasq listen on udp 54 ("dnsmasq with blacklist")
1559
# 2nd dnsmasq listen on udp 54 ("dnsmasq with blacklist")
1569
	cat << EOF > /etc/dnsmasq-blacklist.conf
1560
	cat << EOF > /etc/dnsmasq-blacklist.conf
1570
# Configuration file for "dnsmasq with blacklist"
1561
# Configuration file for "dnsmasq with blacklist"
1571
# Add Toulouse University blacklist domains
1562
# Add Toulouse University blacklist domains
1572
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1563
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1573
conf-dir=$DIR_DEST_SHARE/dnsmasq-bl-enabled
1564
conf-dir=$DIR_DEST_SHARE/dnsmasq-bl-enabled
1574
pid-file=/var/run/dnsmasq-blacklist.pid
1565
pid-file=/var/run/dnsmasq-blacklist.pid
1575
listen-address=$PRIVATE_IP
1566
listen-address=$PRIVATE_IP
1576
port=54
1567
port=54
1577
no-dhcp-interface=$INTIF
1568
no-dhcp-interface=$INTIF
1578
no-dhcp-interface=tun0
1569
no-dhcp-interface=tun0
1579
no-dhcp-interface=lo
1570
no-dhcp-interface=lo
1580
bind-interfaces
1571
bind-interfaces
1581
cache-size=2048
1572
cache-size=2048
1582
domain-needed
1573
domain-needed
1583
expand-hosts
1574
expand-hosts
1584
bogus-priv
1575
bogus-priv
1585
filterwin2k
1576
filterwin2k
1586
log-queries
1577
log-queries
1587
log-facility=/var/log/dnsmasq/dnsmasq-blacklist.log
1578
log-facility=/var/log/dnsmasq/dnsmasq-blacklist.log
1588
server=$DNS1
1579
server=$DNS1
1589
server=$DNS2
1580
server=$DNS2
1590
EOF
1581
EOF
1591
# 3rd dnsmasq listen on udp 55 ("dnsmasq with whitelist")
1582
# 3rd dnsmasq listen on udp 55 ("dnsmasq with whitelist")
1592
	cat << EOF > /etc/dnsmasq-whitelist.conf
1583
	cat << EOF > /etc/dnsmasq-whitelist.conf
1593
# Configuration file for "dnsmasq with whitelist"
1584
# Configuration file for "dnsmasq with whitelist"
1594
# ADD Toulouse university whitelist domains
1585
# ADD Toulouse university whitelist domains
1595
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1586
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1596
conf-dir=$DIR_DEST_SHARE/dnsmasq-wl-enabled
1587
conf-dir=$DIR_DEST_SHARE/dnsmasq-wl-enabled
1597
pid-file=/var/run/dnsmasq-whitelist.pid
1588
pid-file=/var/run/dnsmasq-whitelist.pid
1598
listen-address=$PRIVATE_IP
1589
listen-address=$PRIVATE_IP
1599
port=55
1590
port=55
1600
no-dhcp-interface=$INTIF
1591
no-dhcp-interface=$INTIF
1601
no-dhcp-interface=tun0
1592
no-dhcp-interface=tun0
1602
no-dhcp-interface=lo
1593
no-dhcp-interface=lo
1603
bind-interfaces
1594
bind-interfaces
1604
cache-size=1024
1595
cache-size=1024
1605
domain-needed
1596
domain-needed
1606
expand-hosts
1597
expand-hosts
1607
bogus-priv
1598
bogus-priv
1608
filterwin2k
1599
filterwin2k
1609
ipset=/#/wl_ip_allowed			# dynamicly add the resolv IP address in the Firewall rules
1600
ipset=/#/wl_ip_allowed			# dynamicly add the resolv IP address in the Firewall rules
1610
address=/#/$PRIVATE_IP				# for Domain name without local resolution (WL)  
1601
address=/#/$PRIVATE_IP				# for Domain name without local resolution (WL)  
1611
EOF
1602
EOF
1612
# 4th dnsmasq listen on udp 56 ("blackhole")
1603
# 4th dnsmasq listen on udp 56 ("blackhole")
1613
	cat << EOF > /etc/dnsmasq-blackhole.conf
1604
	cat << EOF > /etc/dnsmasq-blackhole.conf
1614
# Configuration file for "dnsmasq as a blackhole"
1605
# Configuration file for "dnsmasq as a blackhole"
1615
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1606
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1616
address=/#/$PRIVATE_IP				# redirect all on ALCASAR IP address
1607
address=/#/$PRIVATE_IP				# redirect all on ALCASAR IP address
1617
pid-file=/var/run/dnsmasq-blackhole.pid
1608
pid-file=/var/run/dnsmasq-blackhole.pid
1618
listen-address=$PRIVATE_IP
1609
listen-address=$PRIVATE_IP
1619
port=56
1610
port=56
1620
no-dhcp-interface=$INTIF
1611
no-dhcp-interface=$INTIF
1621
no-dhcp-interface=tun0
1612
no-dhcp-interface=tun0
1622
no-dhcp-interface=lo
1613
no-dhcp-interface=lo
1623
bind-interfaces
1614
bind-interfaces
1624
cache-size=256
1615
cache-size=256
1625
domain-needed
1616
domain-needed
1626
expand-hosts
1617
expand-hosts
1627
bogus-priv
1618
bogus-priv
1628
filterwin2k
1619
filterwin2k
1629
EOF
1620
EOF
1630
 
1621
 
1631
# the main instance should start after network and chilli (which create tun0)
1622
# the main instance should start after network and chilli (which create tun0)
1632
	[ -e /lib/systemd/system/dnsmasq.service.default ] || cp -f /lib/systemd/system/dnsmasq.service /lib/systemd/system/dnsmasq.service.default
1623
	[ -e /lib/systemd/system/dnsmasq.service.default ] || cp -f /lib/systemd/system/dnsmasq.service /lib/systemd/system/dnsmasq.service.default
1633
	$SED "s?^After=.*?After=syslog.target network-online.target chilli.service?g" /lib/systemd/system/dnsmasq.service
1624
	$SED "s?^After=.*?After=syslog.target network-online.target chilli.service?g" /lib/systemd/system/dnsmasq.service
1634
# Create dnsmasq-blacklist, dnsmasq-whitelist and dnsmasq-blackhole unit
1625
# Create dnsmasq-blacklist, dnsmasq-whitelist and dnsmasq-blackhole unit
1635
	for list in blacklist whitelist blackhole
1626
	for list in blacklist whitelist blackhole
1636
	do
1627
	do
1637
		cp -f /lib/systemd/system/dnsmasq.service /lib/systemd/system/dnsmasq-$list.service
1628
		cp -f /lib/systemd/system/dnsmasq.service /lib/systemd/system/dnsmasq-$list.service
1638
		$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/dnsmasq -C /etc/dnsmasq-$list.conf?g" /lib/systemd/system/dnsmasq-$list.service
1629
		$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/dnsmasq -C /etc/dnsmasq-$list.conf?g" /lib/systemd/system/dnsmasq-$list.service
1639
		$SED "s?^PIDFile=.*?PIDFile=/var/run/dnsmasq-$list.pid?g" /lib/systemd/system/dnsmasq-$list.service
1630
		$SED "s?^PIDFile=.*?PIDFile=/var/run/dnsmasq-$list.pid?g" /lib/systemd/system/dnsmasq-$list.service
1640
	done
1631
	done
1641
} # End dnsmasq
1632
} # End dnsmasq
1642
 
1633
 
1643
##########################################################
1634
##########################################################
1644
##		Fonction "BL"				##
1635
##		Fonction "BL"				##
1645
##########################################################
1636
##########################################################
1646
BL ()
1637
BL ()
1647
{
1638
{
1648
	# copy the Toulouse university BL in order to be adapted to ALCASAR architecture (alcasar-bl.sh -adapt)
1639
	# copy the Toulouse university BL in order to be adapted to ALCASAR architecture (alcasar-bl.sh -adapt)
1649
	rm -rf $DIR_DG/lists/blacklists
1640
	rm -rf $DIR_DG/lists/blacklists
1650
	mkdir -p /tmp/blacklists
1641
	mkdir -p /tmp/blacklists
1651
	cp $DIR_BLACKLIST/blacklists.tar.gz /tmp/blacklists/
1642
	cp $DIR_BLACKLIST/blacklists.tar.gz /tmp/blacklists/
1652
# creation of file for the rehabilited domains and urls
1643
# creation of file for the rehabilited domains and urls
1653
	[ -e $DIR_DG/lists/exceptionsitelist.default ] || mv $DIR_DG/lists/exceptionsitelist $DIR_DG/lists/exceptionsitelist.default
1644
	[ -e $DIR_DG/lists/exceptionsitelist.default ] || mv $DIR_DG/lists/exceptionsitelist $DIR_DG/lists/exceptionsitelist.default
1654
	[ -e $DIR_DG/lists/exceptionurllist.default ] || mv $DIR_DG/lists/exceptionurllist $DIR_DG/lists/exceptionurllist.default
1645
	[ -e $DIR_DG/lists/exceptionurllist.default ] || mv $DIR_DG/lists/exceptionurllist $DIR_DG/lists/exceptionurllist.default
1655
	touch $DIR_DG/lists/exceptionsitelist
1646
	touch $DIR_DG/lists/exceptionsitelist
1656
	touch $DIR_DG/lists/exceptionurllist
1647
	touch $DIR_DG/lists/exceptionurllist
1657
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1648
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1658
	cat <<EOF > $DIR_DG/lists/bannedurllist
1649
	cat <<EOF > $DIR_DG/lists/bannedurllist
1659
# Dansguardian filter config for ALCASAR
1650
# Dansguardian filter config for ALCASAR
1660
EOF
1651
EOF
1661
	cat <<EOF > $DIR_DG/lists/bannedsitelist
1652
	cat <<EOF > $DIR_DG/lists/bannedsitelist
1662
# Dansguardian domain filter config for ALCASAR
1653
# Dansguardian domain filter config for ALCASAR
1663
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1654
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1664
#**
1655
#**
1665
# block all SSL and CONNECT tunnels
1656
# block all SSL and CONNECT tunnels
1666
**s
1657
**s
1667
# block all SSL and CONNECT tunnels specified only as an IP
1658
# block all SSL and CONNECT tunnels specified only as an IP
1668
*ips
1659
*ips
1669
# block all sites specified only by an IP
1660
# block all sites specified only by an IP
1670
*ip
1661
*ip
1671
EOF
1662
EOF
1672
# Add Bing to the safesearch url regext list (parental control)
1663
# Add Bing to the safesearch url regext list (parental control)
1673
	cat <<EOF >> $DIR_DG/lists/urlregexplist
1664
	cat <<EOF >> $DIR_DG/lists/urlregexplist
1674
# Bing - add 'adlt=strict'
1665
# Bing - add 'adlt=strict'
1675
#"(^http://[0-9a-z]+\.bing\.[a-z]+[-/%.0-9a-z]*\?)(.*)"->"\1\2&adlt=strict"
1666
#"(^http://[0-9a-z]+\.bing\.[a-z]+[-/%.0-9a-z]*\?)(.*)"->"\1\2&adlt=strict"
1676
EOF
1667
EOF
1677
# change the google safesearch ("safe=strict" instead of "safe=vss")
1668
# change the google safesearch ("safe=strict" instead of "safe=vss")
1678
	$SED "s?safe=vss?safe=strict?g" $DIR_DG/lists/urlregexplist
1669
	$SED "s?safe=vss?safe=strict?g" $DIR_DG/lists/urlregexplist
1679
# creation of the custom BL and WL categorie named "ossi" (for domain names & ip only)
1670
# creation of the custom BL and WL categorie named "ossi" (for domain names & ip only)
1680
	mkdir -p $DIR_DG/lists/blacklists/ossi-bl
1671
	mkdir -p $DIR_DG/lists/blacklists/ossi-bl
1681
	touch $DIR_DG/lists/blacklists/ossi-bl/domains
1672
	touch $DIR_DG/lists/blacklists/ossi-bl/domains
1682
	echo "ossi-bl" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1673
	echo "ossi-bl" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1683
	mkdir -p $DIR_DG/lists/blacklists/ossi-wl
1674
	mkdir -p $DIR_DG/lists/blacklists/ossi-wl
1684
	touch $DIR_DG/lists/blacklists/ossi-wl/domains
1675
	touch $DIR_DG/lists/blacklists/ossi-wl/domains
1685
	echo "ossi-wl" >> $DIR_DEST_ETC/alcasar-wl-categories-enabled
1676
	echo "ossi-wl" >> $DIR_DEST_ETC/alcasar-wl-categories-enabled
1686
# add custom ALCASAR BL files
1677
# add custom ALCASAR BL files
1687
	for x in $(ls $DIR_BLACKLIST | grep -v "^blacklist")
1678
	for x in $(ls $DIR_BLACKLIST | grep -v "^blacklist")
1688
	do
1679
	do
1689
		mkdir $DIR_DG/lists/blacklists/ossi-bl-$x
1680
		mkdir $DIR_DG/lists/blacklists/ossi-bl-$x
1690
		cp $DIR_BLACKLIST/$x  $DIR_DG/lists/blacklists/ossi-bl-$x/domains
1681
		cp $DIR_BLACKLIST/$x  $DIR_DG/lists/blacklists/ossi-bl-$x/domains
1691
		echo "ossi-bl-$x" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1682
		echo "ossi-bl-$x" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1692
	done
1683
	done
1693
	chown -R dansguardian:apache $DIR_DG
1684
	chown -R dansguardian:apache $DIR_DG
1694
	chown -R root:apache $DIR_DEST_SHARE
1685
	chown -R root:apache $DIR_DEST_SHARE
1695
	chmod -R g+rw $DIR_DG $DIR_DEST_SHARE
1686
	chmod -R g+rw $DIR_DG $DIR_DEST_SHARE
1696
# adapt the Toulouse BL to ALCASAR architecture
1687
# adapt the Toulouse BL to ALCASAR architecture
1697
	$DIR_DEST_BIN/alcasar-bl.sh --adapt
1688
	$DIR_DEST_BIN/alcasar-bl.sh --adapt
1698
# enable the default categories
1689
# enable the default categories
1699
	$DIR_DEST_BIN/alcasar-bl.sh --cat_choice
1690
	$DIR_DEST_BIN/alcasar-bl.sh --cat_choice
1700
}
1691
}
1701
 
1692
 
1702
##########################################################
1693
##########################################################
1703
##		Fonction "cron"				##
1694
##		Fonction "cron"				##
1704
## - Mise en place des différents fichiers de cron	##
1695
## - Mise en place des différents fichiers de cron	##
1705
##########################################################
1696
##########################################################
1706
cron ()
1697
cron ()
1707
{
1698
{
1708
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1699
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1709
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1700
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1710
	cat <<EOF > /etc/crontab
1701
	cat <<EOF > /etc/crontab
1711
SHELL=/usr/bin/bash
1702
SHELL=/usr/bin/bash
1712
PATH=/usr/sbin:/usr/bin
1703
PATH=/usr/sbin:/usr/bin
1713
MAILTO=root
1704
MAILTO=root
1714
HOME=/
1705
HOME=/
1715
 
1706
 
1716
# run-parts
1707
# run-parts
1717
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1708
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1718
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1709
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1719
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1710
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1720
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1711
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1721
EOF
1712
EOF
1722
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1713
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1723
	cat <<EOF >> /etc/anacrontab
1714
	cat <<EOF >> /etc/anacrontab
1724
7       8       cron.MysqlDump          nice /etc/cron.d/alcasar-mysql
1715
7       8       cron.MysqlDump          nice /etc/cron.d/alcasar-mysql
1725
7       10      cron.logExport          nice /etc/cron.d/alcasar-archive
1716
7       10      cron.logExport          nice /etc/cron.d/alcasar-archive
1726
7	20	cron.importClean	nice /etc/cron.d/alcasar-clean_import
1717
7	20	cron.importClean	nice /etc/cron.d/alcasar-clean_import
1727
EOF
1718
EOF
1728
 
1719
 
1729
	cat <<EOF > /etc/cron.d/alcasar-mysql
1720
	cat <<EOF > /etc/cron.d/alcasar-mysql
1730
# Contrôle, réparation et export de la base des usagers (tous les lundi à 4h45)
1721
# Contrôle, réparation et export de la base des usagers (tous les lundi à 4h45)
1731
45 4 * * 1 root $DIR_DEST_BIN/alcasar-mysql.sh --dump
1722
45 4 * * 1 root $DIR_DEST_BIN/alcasar-mysql.sh --dump
1732
# Nettoyage des utilisateurs dont la date d'expiration du compte est supérieure à 7 jours
1723
# Nettoyage des utilisateurs dont la date d'expiration du compte est supérieure à 7 jours
1733
40 4 * * * root $DIR_DEST_BIN/alcasar-mysql.sh --expire_user 2>&1 >/dev/null
1724
40 4 * * * root $DIR_DEST_BIN/alcasar-mysql.sh --expire_user 2>&1 >/dev/null
1734
EOF
1725
EOF
1735
	cat <<EOF > /etc/cron.d/alcasar-archive
1726
	cat <<EOF > /etc/cron.d/alcasar-archive
1736
# Archive des logs et de la base de données (tous les lundi à 5h35)
1727
# Archive des logs et de la base de données (tous les lundi à 5h35)
1737
35 5 * * 1 root $DIR_DEST_BIN/alcasar-archive.sh --now
1728
35 5 * * 1 root $DIR_DEST_BIN/alcasar-archive.sh --now
1738
EOF
1729
EOF
1739
	cat << EOF > /etc/cron.d/alcasar-ticket-clean
1730
	cat << EOF > /etc/cron.d/alcasar-ticket-clean
1740
# suppression des fichiers de mots de passe (imports massifs par fichier) et des ticket PDF d'utilisateur
1731
# suppression des fichiers de mots de passe (imports massifs par fichier) et des ticket PDF d'utilisateur
1741
30 * * * *  root $DIR_DEST_BIN/alcasar-ticket-clean.sh
1732
30 * * * *  root $DIR_DEST_BIN/alcasar-ticket-clean.sh
1742
EOF
1733
EOF
1743
	cat << EOF > /etc/cron.d/alcasar-distrib-updates
1734
	cat << EOF > /etc/cron.d/alcasar-distrib-updates
1744
# mise à jour automatique de la distribution tous les jours 3h30
1735
# mise à jour automatique de la distribution tous les jours 3h30
1745
30 3 * * *  root /usr/sbin/urpmi --auto-update --auto 2>&1
1736
30 3 * * *  root /usr/sbin/urpmi --auto-update --auto 2>&1
1746
EOF
1737
EOF
1747
 
1738
 
1748
	cat << EOF > /etc/cron.d/alcasar-connections-stats
1739
	cat << EOF > /etc/cron.d/alcasar-connections-stats
1749
# Connection stats update (accounting). These Perl scripts are from "dialup_admin" (cf. wiki.freeradius.org/Dialup_admin).
1740
# Connection stats update (accounting). These Perl scripts are from "dialup_admin" (cf. wiki.freeradius.org/Dialup_admin).
1750
# 'alcasar-tot_stats' (everyday at 01h01 pm) : aggregating the daily connections of users (write in the table 'totacct')
1741
# 'alcasar-tot_stats' (everyday at 01h01 pm) : aggregating the daily connections of users (write in the table 'totacct')
1751
# 'alcasar-monthly_tot_stat' (everyday at 01h05 pm) : aggregating the monthly connections of users (write in table 'mtotacct')
1742
# 'alcasar-monthly_tot_stat' (everyday at 01h05 pm) : aggregating the monthly connections of users (write in table 'mtotacct')
1752
# 'alcasar-truncate_raddact' (every month, the first at 01h10 pm) : removing the log sessions of users older than 365 days
1743
# 'alcasar-truncate_raddact' (every month, the first at 01h10 pm) : removing the log sessions of users older than 365 days
1753
# 'alcasar-clean_radacct' (every month, the first at 01h15 pm) : closing the sessions openned for more than 30 days
1744
# 'alcasar-clean_radacct' (every month, the first at 01h15 pm) : closing the sessions openned for more than 30 days
1754
# 'alcasar-activity_report.sh' (every sunday at 5h35 pm) : generate an activity report in PDF
1745
# 'alcasar-activity_report.sh' (every sunday at 5h35 pm) : generate an activity report in PDF
1755
1 1 * * * root $DIR_DEST_BIN/alcasar-tot_stats > /dev/null 2>&1
1746
1 1 * * * root $DIR_DEST_BIN/alcasar-tot_stats > /dev/null 2>&1
1756
5 1 * * * root $DIR_DEST_BIN/alcasar-monthly_tot_stats > /dev/null 2>&1
1747
5 1 * * * root $DIR_DEST_BIN/alcasar-monthly_tot_stats > /dev/null 2>&1
1757
10 1 1 * * root $DIR_DEST_BIN/alcasar-truncate_radacct > /dev/null 2>&1
1748
10 1 1 * * root $DIR_DEST_BIN/alcasar-truncate_radacct > /dev/null 2>&1
1758
15 1 1 * * root $DIR_DEST_BIN/alcasar-clean_radacct > /dev/null 2>&1
1749
15 1 1 * * root $DIR_DEST_BIN/alcasar-clean_radacct > /dev/null 2>&1
1759
35 5 * * 0 root $DIR_DEST_BIN/alcasar-activity_report.sh > /dev/null 2>&1
1750
35 5 * * 0 root $DIR_DEST_BIN/alcasar-activity_report.sh > /dev/null 2>&1
1760
EOF
1751
EOF
1761
	cat << EOF > /etc/cron.d/alcasar-watchdog
1752
	cat << EOF > /etc/cron.d/alcasar-watchdog
1762
# run the "watchdog" every 3'
1753
# run the "watchdog" every 3'
1763
# empty the IPSET of the whitelisted IP (loaded dynamically with dnsmasq-whitelist) when every whitelisted users are logged out (every sunday at 0h05
1754
# empty the IPSET of the whitelisted IP (loaded dynamically with dnsmasq-whitelist) when every whitelisted users are logged out (every sunday at 0h05
1764
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1755
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1765
0 5 * * 0 root $DIR_DEST_BIN/alcasar-flush_ipset_wl.sh > /dev/null 2>&1
1756
0 5 * * 0 root $DIR_DEST_BIN/alcasar-flush_ipset_wl.sh > /dev/null 2>&1
1766
#* * * * * root $DIR_DEST_BIN/alcasar-watchdog-hl.sh > /dev/null 2>&1
1757
#* * * * * root $DIR_DEST_BIN/alcasar-watchdog-hl.sh > /dev/null 2>&1
1767
EOF
1758
EOF
1768
# Enabling the watchdog every 18'
1759
# Enabling the watchdog every 18'
1769
	cat << EOF > /etc/cron.d/alcasar-daemon-watchdog
1760
	cat << EOF > /etc/cron.d/alcasar-daemon-watchdog
1770
# activate  the daemon-watchdog after boot process
1761
# activate  the daemon-watchdog after boot process
1771
@reboot root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1762
@reboot root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1772
# activate the daemon-watchdog every 18'
1763
# activate the daemon-watchdog every 18'
1773
*/18 * * * * root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1764
*/18 * * * * root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1774
EOF
1765
EOF
1775
 
1766
 
1776
# Enabling category update from rsync
1767
# Enabling category update from rsync
1777
	cat << EOF > /etc/cron.d/alcasar-rsync-bl
1768
	cat << EOF > /etc/cron.d/alcasar-rsync-bl
1778
# Automatic update of BL via rsync every 12 hours. The categories are listed in the file '/usr/local/etc/update_cat.conf' (no sync if empty). 
1769
# Automatic update of BL via rsync every 12 hours. The categories are listed in the file '/usr/local/etc/update_cat.conf' (no sync if empty). 
1779
0 */12 * * * root $DIR_DEST_BIN/alcasar-bl.sh --update_cat > /dev/null 2>&1
1770
0 */12 * * * root $DIR_DEST_BIN/alcasar-bl.sh --update_cat > /dev/null 2>&1
1780
EOF
1771
EOF
1781
 
1772
 
1782
# removing the users crons
1773
# removing the users crons
1783
	rm -f /var/spool/cron/*
1774
	rm -f /var/spool/cron/*
1784
} # End cron
1775
} # End cron
1785
 
1776
 
1786
##################################################################
1777
##################################################################
1787
## 			Fonction "Fail2Ban"			##
1778
## 			Fonction "Fail2Ban"			##
1788
##- Modification de la configuration de fail2ban		##
1779
##- Modification de la configuration de fail2ban		##
1789
##- Sécurisation DDOS, SSH-Brute-Force, Intercept.php ...	##
1780
##- Sécurisation DDOS, SSH-Brute-Force, Intercept.php ...	##
1790
##################################################################
1781
##################################################################
1791
fail2ban()
1782
fail2ban()
1792
{
1783
{
1793
	/usr/bin/sh $DIR_CONF/fail2ban.sh
1784
	/usr/bin/sh $DIR_CONF/fail2ban.sh
1794
# Autorise la lecture seule 2 des 3 fichiers de log concernés, havp est traité dans le script d'init de havp
1785
# Autorise la lecture seule 2 des 3 fichiers de log concernés, havp est traité dans le script d'init de havp
1795
	[ -e /var/log/fail2ban.log ] || touch /var/log/fail2ban.log
1786
	[ -e /var/log/fail2ban.log ] || touch /var/log/fail2ban.log
1796
	[ -e /var/Save/security/watchdog.log ] || touch /var/Save/security/watchdog.log
1787
	[ -e /var/Save/security/watchdog.log ] || touch /var/Save/security/watchdog.log
1797
	chmod 644 /var/log/fail2ban.log
1788
	chmod 644 /var/log/fail2ban.log
1798
	chmod 644 /var/Save/security/watchdog.log
1789
	chmod 644 /var/Save/security/watchdog.log
1799
	/usr/bin/touch /var/log/auth.log
1790
	/usr/bin/touch /var/log/auth.log
1800
# fail2ban unit
1791
# fail2ban unit
1801
[ -e /lib/systemd/system/fail2ban.service.default ] || cp /lib/systemd/system/fail2ban.service /lib/systemd/system/fail2ban.service.default
1792
[ -e /lib/systemd/system/fail2ban.service.default ] || cp /lib/systemd/system/fail2ban.service /lib/systemd/system/fail2ban.service.default
1802
$SED '/ExecStart=/a\ExecStop=/usr/bin/fail2ban-client stop' /usr/lib/systemd/system/fail2ban.service
1793
$SED '/ExecStart=/a\ExecStop=/usr/bin/fail2ban-client stop' /usr/lib/systemd/system/fail2ban.service
1803
$SED '/Type=/a\PIDFile=/var/run/fail2ban/fail2ban.pid' /usr/lib/systemd/system/fail2ban.service
1794
$SED '/Type=/a\PIDFile=/var/run/fail2ban/fail2ban.pid' /usr/lib/systemd/system/fail2ban.service
1804
$SED '/After=*/c After=syslog.target network.target httpd.service' /usr/lib/systemd/system/fail2ban.service
1795
$SED '/After=*/c After=syslog.target network.target httpd.service' /usr/lib/systemd/system/fail2ban.service
1805
} #Fin de fail2ban_install()
1796
} #Fin de fail2ban_install()
1806
 
1797
 
1807
##################################################################
1798
##################################################################
1808
## 			Fonction "gammu_smsd"			##
1799
## 			Fonction "gammu_smsd"			##
1809
## - Creation de la base de donnée Gammu			##
1800
## - Creation de la base de donnée Gammu			##
1810
## - Creation du fichier de config: gammu_smsd_conf		##
1801
## - Creation du fichier de config: gammu_smsd_conf		##
1811
##################################################################
1802
##################################################################
1812
gammu_smsd()
1803
gammu_smsd()
1813
{
1804
{
1814
# Create 'gammu' databse
1805
# Create 'gammu' databse
1815
MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
1806
MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
1816
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_GAMMU;GRANT ALL ON $DB_GAMMU.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
1807
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_GAMMU;GRANT ALL ON $DB_GAMMU.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
1817
# Add a gammu database structure
1808
# Add a gammu database structure
1818
	mysql -u$DB_USER -p$radiuspwd $DB_GAMMU < $DIR_CONF/empty-gammu-smsd-db.sql
1809
	mysql -u$DB_USER -p$radiuspwd $DB_GAMMU < $DIR_CONF/empty-gammu-smsd-db.sql
1819
 
1810
 
1820
# config file for the daemon
1811
# config file for the daemon
1821
cat << EOF > /etc/gammu_smsd_conf
1812
cat << EOF > /etc/gammu_smsd_conf
1822
[gammu]
1813
[gammu]
1823
port = /dev/ttyUSB0
1814
port = /dev/ttyUSB0
1824
connection = at115200
1815
connection = at115200
1825
 
1816
 
1826
;########################################################
1817
;########################################################
1827
 
1818
 
1828
[smsd]
1819
[smsd]
1829
 
1820
 
1830
PIN = 1234
1821
PIN = 1234
1831
 
1822
 
1832
logfile = /var/log/gammu-smsd/gammu-smsd.log
1823
logfile = /var/log/gammu-smsd/gammu-smsd.log
1833
logformat = textall
1824
logformat = textall
1834
debuglevel = 0
1825
debuglevel = 0
1835
 
1826
 
1836
service = sql
1827
service = sql
1837
driver = native_mysql
1828
driver = native_mysql
1838
user = $DB_USER
1829
user = $DB_USER
1839
password = $radiuspwd
1830
password = $radiuspwd
1840
pc = localhost
1831
pc = localhost
1841
database = $DB_GAMMU
1832
database = $DB_GAMMU
1842
 
1833
 
1843
RunOnReceive = $DIR_DEST_BIN/alcasar-sms.sh --new_sms
1834
RunOnReceive = $DIR_DEST_BIN/alcasar-sms.sh --new_sms
1844
 
1835
 
1845
StatusFrequency = 30
1836
StatusFrequency = 30
1846
;LoopSleep = 2
1837
;LoopSleep = 2
1847
 
1838
 
1848
;ResetFrequency = 300
1839
;ResetFrequency = 300
1849
;HardResetFrequency = 120
1840
;HardResetFrequency = 120
1850
 
1841
 
1851
CheckSecurity = 1 
1842
CheckSecurity = 1 
1852
CheckSignal = 1
1843
CheckSignal = 1
1853
CheckBattery = 0
1844
CheckBattery = 0
1854
EOF
1845
EOF
1855
 
1846
 
1856
chmod 755 /etc/gammu_smsd_conf
1847
chmod 755 /etc/gammu_smsd_conf
1857
 
1848
 
1858
#Creation dossier de log Gammu-smsd
1849
#Creation dossier de log Gammu-smsd
1859
[ -e /var/log/gammu-smsd ] || mkdir /var/log/gammu-smsd
1850
[ -e /var/log/gammu-smsd ] || mkdir /var/log/gammu-smsd
1860
chmod 755 /var/log/gammu-smsd
1851
chmod 755 /var/log/gammu-smsd
1861
 
1852
 
1862
#Edition du script sql gammu <-> radius
1853
#Edition du script sql gammu <-> radius
1863
$SED "s/^u_db=\".*/u_db=\"$DB_USER\"/g" $DIR_DEST_BIN/alcasar-sms.sh
1854
$SED "s/^u_db=\".*/u_db=\"$DB_USER\"/g" $DIR_DEST_BIN/alcasar-sms.sh
1864
$SED "s/^p_db=\".*/p_db=\"$radiuspwd\"/g" $DIR_DEST_BIN/alcasar-sms.sh
1855
$SED "s/^p_db=\".*/p_db=\"$radiuspwd\"/g" $DIR_DEST_BIN/alcasar-sms.sh
1865
 
1856
 
1866
#Création de la règle udev pour les Huawei // idVendor: 12d1
1857
#Création de la règle udev pour les Huawei // idVendor: 12d1
1867
cat << EOF > /etc/udev/rules.d/66-huawei.rules
1858
cat << EOF > /etc/udev/rules.d/66-huawei.rules
1868
KERNEL=="ttyUSB0",ATTRS{idVendor}=="12d1",RUN+="$DIR_DEST_BIN/alcasar-sms.sh --mode"
1859
KERNEL=="ttyUSB0",ATTRS{idVendor}=="12d1",RUN+="$DIR_DEST_BIN/alcasar-sms.sh --mode"
1869
EOF
1860
EOF
1870
 
1861
 
1871
} # END gammu_smsd()
1862
} # END gammu_smsd()
1872
 
1863
 
1873
 
1864
 
1874
##################################################################
1865
##################################################################
1875
##			Fonction "msec"				##
1866
##			Fonction "msec"				##
1876
## - Apply the "fileserver" security level			##
1867
## - Apply the "fileserver" security level			##
1877
## - remove the "system request" for rebboting			##
1868
## - remove the "system request" for rebboting			##
1878
## - Fix several file permissions				##
1869
## - Fix several file permissions				##
1879
##################################################################
1870
##################################################################
1880
msec()
1871
msec()
1881
{
1872
{
1882
 
1873
 
1883
# Apply fileserver security level
1874
# Apply fileserver security level
1884
[ -e /etc/security/msec/security.conf.default ] || cp /etc/security/msec/security.conf /etc/security/msec/security.conf.default
1875
[ -e /etc/security/msec/security.conf.default ] || cp /etc/security/msec/security.conf /etc/security/msec/security.conf.default
1885
echo "BASE_LEVEL=fileserver" > /etc/security/msec/security.conf
1876
echo "BASE_LEVEL=fileserver" > /etc/security/msec/security.conf
1886
 
1877
 
1887
# Set permissions monitoring and enforcement
1878
# Set permissions monitoring and enforcement
1888
cat <<EOF > /etc/security/msec/perm.local
1879
cat <<EOF > /etc/security/msec/perm.local
1889
/var/log/firefwall/                     root.apache     750
1880
/var/log/firefwall/                     root.apache     750
1890
/var/log/firewall/*                     root.apache     640
1881
/var/log/firewall/*                     root.apache     640
1891
/etc/security/msec/perm.local           root.root       640
1882
/etc/security/msec/perm.local           root.root       640
1892
/etc/security/msec/level.local          root.root       640
1883
/etc/security/msec/level.local          root.root       640
1893
/etc/freeradius-web                     root.apache     750
1884
/etc/freeradius-web                     root.apache     750
1894
/etc/freeradius-web/admin.conf          root.apache     640
1885
/etc/freeradius-web/admin.conf          root.apache     640
1895
/etc/raddb/dictionnary                  root.apache     640
1886
/etc/raddb/dictionnary                  root.apache     640
1896
/etc/raddb/ldap.attrmap                 root.radius     640
1887
/etc/raddb/ldap.attrmap                 root.radius     640
1897
/etc/raddb/hints                        root.radius     640
1888
/etc/raddb/hints                        root.radius     640
1898
/etc/raddb/huntgroups                   root.radius     640
1889
/etc/raddb/huntgroups                   root.radius     640
1899
/etc/raddb/attrs.access_reject          root.radius     640
1890
/etc/raddb/attrs.access_reject          root.radius     640
1900
/etc/raddb/attrs.accounting_response    root.radius     640
1891
/etc/raddb/attrs.accounting_response    root.radius     640
1901
/etc/raddb/acct_users                   root.radius     640
1892
/etc/raddb/acct_users                   root.radius     640
1902
/etc/raddb/preproxy_users               root.radius     640
1893
/etc/raddb/preproxy_users               root.radius     640
1903
/etc/raddb/modules/ldap                 radius.apache   660
1894
/etc/raddb/modules/ldap                 radius.apache   660
1904
/etc/raddb/sites-available/alcasar      radius.apache   660
1895
/etc/raddb/sites-available/alcasar      radius.apache   660
1905
/etc/pki/*                              root.apache     750
1896
/etc/pki/*                              root.apache     750
1906
/var/log/netflow/porttracker            root.apache     770
1897
/var/log/netflow/porttracker            root.apache     770
1907
/var/log/netflow/porttracker/*          root.apache     660
1898
/var/log/netflow/porttracker/*          root.apache     660
1908
EOF
1899
EOF
1909
# apply now hourly & daily checks 
1900
# apply now hourly & daily checks 
1910
/usr/sbin/msec
1901
/usr/sbin/msec
1911
/etc/cron.weekly/msec
1902
/etc/cron.weekly/msec
1912
 
1903
 
1913
} # END msec()
1904
} # END msec()
1914
 
1905
 
1915
##################################################################
1906
##################################################################
1916
##		Fonction "post_install"			##
1907
##		Fonction "post_install"			##
1917
## - Modifying banners (locals et ssh) & prompts	##
1908
## - Modifying banners (locals et ssh) & prompts	##
1918
## - SSH config						##
1909
## - SSH config						##
1919
## - sudoers config & files security			##
1910
## - sudoers config & files security			##
1920
## - log rotate & ANSSI security parameters		##
1911
## - log rotate & ANSSI security parameters		##
1921
## - Apply former conf in case of an update		##
1912
## - Apply former conf in case of an update		##
1922
##########################################################
1913
##########################################################
1923
post_install()
1914
post_install()
1924
{
1915
{
1925
# change the SSH banner
1916
# change the SSH banner
1926
	cp -f $DIR_CONF/banner /etc/ssh/alcasar-banner-ssh
1917
	cp -f $DIR_CONF/banner /etc/ssh/alcasar-banner-ssh
1927
	echo " V$VERSION" >> /etc/ssh/alcasar-banner-ssh
1918
	echo " V$VERSION" >> /etc/ssh/alcasar-banner-ssh
1928
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1919
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1929
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1920
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1930
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1921
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1931
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1922
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1932
# postfix banner anonymisation
1923
# postfix banner anonymisation
1933
	$SED "s?^smtpd_banner =.*?smtpd_banner = $myhostname ESMTP?g" /etc/postfix/main.cf
1924
	$SED "s?^smtpd_banner =.*?smtpd_banner = $myhostname ESMTP?g" /etc/postfix/main.cf
1934
	chown -R postfix:postfix /var/lib/postfix
1925
	chown -R postfix:postfix /var/lib/postfix
1935
# sshd liste on EXTIF & INTIF
1926
# sshd liste on EXTIF & INTIF
1936
	$SED "s?^#ListenAddress 0\.0\.0\.0.*?ListenAddress 0\.0\.0\.0?g" /etc/ssh/sshd_config
1927
	$SED "s?^#ListenAddress 0\.0\.0\.0.*?ListenAddress 0\.0\.0\.0?g" /etc/ssh/sshd_config
1937
# sshd authorized certificate for root login
1928
# sshd authorized certificate for root login
1938
	$SED "s?^PermitRootLogin.*?PermitRootLogin without-password?g" /etc/ssh/sshd_config
1929
	$SED "s?^PermitRootLogin.*?PermitRootLogin without-password?g" /etc/ssh/sshd_config
1939
# ALCASAR conf file
1930
# ALCASAR conf file
1940
	echo "SSH=on" >> $CONF_FILE
1931
	echo "SSH=on" >> $CONF_FILE
1941
	echo "SSH_ADMIN_FROM=0.0.0.0/0.0.0.0" >> $CONF_FILE
1932
	echo "SSH_ADMIN_FROM=0.0.0.0/0.0.0.0" >> $CONF_FILE
1942
	echo "LDAP=off" >> $CONF_FILE
1933
	echo "LDAP=off" >> $CONF_FILE
1943
	echo "LDAP_IP=0.0.0.0/0.0.0.0" >> $CONF_FILE
1934
	echo "LDAP_IP=0.0.0.0/0.0.0.0" >> $CONF_FILE
1944
	echo "MULTIWAN=off" >> $CONF_FILE
1935
	echo "MULTIWAN=off" >> $CONF_FILE
1945
	echo "FAILOVER=30" >> $CONF_FILE
1936
	echo "FAILOVER=30" >> $CONF_FILE
1946
	echo "## WANx=active,@IPx/mask,GWx,Weight,MTUx" >> $CONF_FILE
1937
	echo "## WANx=active,@IPx/mask,GWx,Weight,MTUx" >> $CONF_FILE
1947
	echo "#WAN1=\"1,$EXTIF:1,192.168.2.20/24,192.168.2.6,1,1500\"" >> $CONF_FILE
1938
	echo "#WAN1=\"1,$EXTIF:1,192.168.2.20/24,192.168.2.6,1,1500\"" >> $CONF_FILE
1948
	echo "#WAN2=\"1,$EXTIF:2,192.168.3.20/24,192.168.3.1,2,1500\"" >> $CONF_FILE
1939
	echo "#WAN2=\"1,$EXTIF:2,192.168.3.20/24,192.168.3.1,2,1500\"" >> $CONF_FILE
1949
# Prompt customisation (colors)
1940
# Prompt customisation (colors)
1950
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1941
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1951
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1942
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1952
	$SED "s?^ORGANISME.*?ORGANISME=$ORGANISME?g" /etc/bashrc
1943
	$SED "s?^ORGANISME.*?ORGANISME=$ORGANISME?g" /etc/bashrc
1953
# sudoers configuration for "apache" & "sysadmin"
1944
# sudoers configuration for "apache" & "sysadmin"
1954
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1945
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1955
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1946
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1956
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK/$PRIVATE_NETMASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1947
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK/$PRIVATE_NETMASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1957
# Modify some logrotate files (gammu, ulogd)
1948
# Modify some logrotate files (gammu, ulogd)
1958
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1949
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1959
	chmod 644 /etc/logrotate.d/*
1950
	chmod 644 /etc/logrotate.d/*
1960
# Log compression
1951
# Log compression
1961
	$SED "s?^delaycompress.*?#&?g" /etc/logrotate.conf
1952
	$SED "s?^delaycompress.*?#&?g" /etc/logrotate.conf
1962
# actualisation des fichiers logs compressés
1953
# actualisation des fichiers logs compressés
1963
	for dir in firewall dansguardian httpd
1954
	for dir in firewall dansguardian httpd
1964
	do
1955
	do
1965
	      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 {} \;
1956
	      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 {} \;
1966
	done
1957
	done
1967
# create the alcasar-load_balancing unit
1958
# create the alcasar-load_balancing unit
1968
	cat << EOF > /lib/systemd/system/alcasar-load_balancing.service
1959
	cat << EOF > /lib/systemd/system/alcasar-load_balancing.service
1969
#  This file is part of systemd.
1960
#  This file is part of systemd.
1970
#
1961
#
1971
#  systemd is free software; you can redistribute it and/or modify it
1962
#  systemd is free software; you can redistribute it and/or modify it
1972
#  under the terms of the GNU General Public License as published by
1963
#  under the terms of the GNU General Public License as published by
1973
#  the Free Software Foundation; either version 2 of the License, or
1964
#  the Free Software Foundation; either version 2 of the License, or
1974
#  (at your option) any later version.
1965
#  (at your option) any later version.
1975
 
1966
 
1976
# This unit lauches alcasar-load-balancing.sh script.
1967
# This unit lauches alcasar-load-balancing.sh script.
1977
[Unit]
1968
[Unit]
1978
Description=alcasar-load_balancing.sh execution
1969
Description=alcasar-load_balancing.sh execution
1979
After=network.target iptables.service
1970
After=network.target iptables.service
1980
 
1971
 
1981
[Service]
1972
[Service]
1982
Type=oneshot
1973
Type=oneshot
1983
RemainAfterExit=yes
1974
RemainAfterExit=yes
1984
ExecStart=$DIR_DEST_BIN/alcasar-load_balancing.sh start
1975
ExecStart=$DIR_DEST_BIN/alcasar-load_balancing.sh start
1985
ExecStop=$DIR_DEST_BIN/alcasar-load_balancing.sh stop
1976
ExecStop=$DIR_DEST_BIN/alcasar-load_balancing.sh stop
1986
TimeoutSec=0
1977
TimeoutSec=0
1987
SysVStartPriority=99
1978
SysVStartPriority=99
1988
 
1979
 
1989
[Install]
1980
[Install]
1990
WantedBy=multi-user.target
1981
WantedBy=multi-user.target
1991
EOF
1982
EOF
1992
# processes launched at boot time (Systemctl)
1983
# processes launched at boot time (Systemctl)
1993
	for i in alcasar-load_balancing mysqld httpd ntpd iptables dnsmasq dnsmasq-blacklist dnsmasq-whitelist dnsmasq-blackhole radiusd nfsen dansguardian freshclam ulogd-ssh ulogd-traceability ulogd-ext-access chilli fail2ban havp tinyproxy vnstat sshd
1984
	for i in alcasar-load_balancing mysqld httpd ntpd iptables dnsmasq dnsmasq-blacklist dnsmasq-whitelist dnsmasq-blackhole radiusd nfsen dansguardian freshclam ulogd-ssh ulogd-traceability ulogd-ext-access chilli fail2ban havp tinyproxy vnstat sshd
1994
	do
1985
	do
1995
		/usr/bin/systemctl -q enable $i.service
1986
		/usr/bin/systemctl -q enable $i.service
1996
	done
1987
	done
1997
	
1988
	
1998
# disable processes at boot time (Systemctl)
1989
# disable processes at boot time (Systemctl)
1999
	for i in ulogd
1990
	for i in ulogd
2000
	do
1991
	do
2001
		/usr/bin/systemctl -q disable $i.service
1992
		/usr/bin/systemctl -q disable $i.service
2002
	done
1993
	done
2003
	
1994
	
2004
# Apply French Security Agency (ANSSI) rules
1995
# Apply French Security Agency (ANSSI) rules
2005
# ignore ICMP broadcast (smurf attack)
1996
# ignore ICMP broadcast (smurf attack)
2006
	echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" > /etc/sysctl.d/alcasar.conf
1997
	echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" > /etc/sysctl.d/alcasar.conf
2007
# ignore ICMP errors bogus
1998
# ignore ICMP errors bogus
2008
	echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" >> /etc/sysctl.d/alcasar.conf
1999
	echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" >> /etc/sysctl.d/alcasar.conf
2009
# remove ICMP redirects responces
2000
# remove ICMP redirects responces
2010
	echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2001
	echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2011
	echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2002
	echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2012
# enable SYN Cookies (Syn flood attacks)
2003
# enable SYN Cookies (Syn flood attacks)
2013
	echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.d/alcasar.conf
2004
	echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.d/alcasar.conf
2014
# enable kernel antispoofing
2005
# enable kernel antispoofing
2015
	echo "net.ipv4.conf.all.rp_filter = 1" >> /etc/sysctl.d/alcasar.conf
2006
	echo "net.ipv4.conf.all.rp_filter = 1" >> /etc/sysctl.d/alcasar.conf
2016
# ignore source routing
2007
# ignore source routing
2017
	echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.d/alcasar.conf
2008
	echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.d/alcasar.conf
2018
# set conntrack timer to 1h (3600s) instead of 5 weeks
2009
# set conntrack timer to 1h (3600s) instead of 5 weeks
2019
	echo "net.netfilter.nf_conntrack_tcp_timeout_established = 3600" >> /etc/sysctl.d/alcasar.conf
2010
	echo "net.netfilter.nf_conntrack_tcp_timeout_established = 3600" >> /etc/sysctl.d/alcasar.conf
2020
# disable log_martians (ALCASAR is often installed between two private network addresses) 
2011
# disable log_martians (ALCASAR is often installed between two private network addresses) 
2021
	echo "net.ipv4.conf.all.log_martians = 0" >> /etc/sysctl.d/alcasar.conf
2012
	echo "net.ipv4.conf.all.log_martians = 0" >> /etc/sysctl.d/alcasar.conf
2022
# disable iptables_helpers
2013
# disable iptables_helpers
2023
	echo "net.netfilter.nf_conntrack_helper = 0" >> /etc/sysctl.d/alcasar.conf
2014
	echo "net.netfilter.nf_conntrack_helper = 0" >> /etc/sysctl.d/alcasar.conf
2024
# Switch to the router mode
2015
# Switch to the router mode
2025
	echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/alcasar.conf
2016
	echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/alcasar.conf
2026
# Remove unused service ipv6
2017
# Remove unused service ipv6
2027
	echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2018
	echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2028
	echo "net.ipv6.conf.all.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2019
	echo "net.ipv6.conf.all.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2029
	echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2020
	echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2030
	echo "net.ipv6.conf.default.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2021
	echo "net.ipv6.conf.default.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2031
# switch to multi-users runlevel (instead of x11)
2022
# switch to multi-users runlevel (instead of x11)
2032
	ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
2023
	ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
2033
#	GRUB modifications (only one time)
2024
#	GRUB modifications (only one time)
2034
# Limit wait time to 3s - Create an alcasar entry instead of linux-nonfb - Change the default banner
2025
# Limit wait time to 3s - Create an alcasar entry instead of linux-nonfb - Change the default banner
2035
	vm_vga=`lsmod | egrep "virtio|vmwgfx" | wc -l` # test if in VM
2026
	vm_vga=`lsmod | egrep "virtio|vmwgfx" | wc -l` # test if in VM
2036
	grub_already_modified=`grep ALCASAR /boot/grub/menu.lst|wc -l`
2027
	grub_already_modified=`grep ALCASAR /boot/grub/menu.lst|wc -l`
2037
	[ -e /etc/mageia-release.default ]  || cp /etc/mageia-release /etc/mageia-release.default
2028
	[ -e /etc/mageia-release.default ]  || cp /etc/mageia-release /etc/mageia-release.default
2038
	if [ $grub_already_modified == 0 ] 
2029
	if [ $grub_already_modified == 0 ] 
2039
		then
2030
		then
2040
		$SED "s?^timeout.*?timeout 3?g" /boot/grub/menu.lst
2031
		$SED "s?^timeout.*?timeout 3?g" /boot/grub/menu.lst
2041
		$SED "s?^title linux?title ALCASAR?g" /boot/grub/menu.lst
2032
		$SED "s?^title linux?title ALCASAR?g" /boot/grub/menu.lst
2042
		$SED "/^kernel/s/splash quiet //" /boot/grub/menu.lst
2033
		$SED "/^kernel/s/splash quiet //" /boot/grub/menu.lst
2043
		$SED "/^kernel/s/BOOT_IMAGE=linux /BOOT_IMAGE=linux-nonfb /" /boot/grub/menu.lst
2034
		$SED "/^kernel/s/BOOT_IMAGE=linux /BOOT_IMAGE=linux-nonfb /" /boot/grub/menu.lst
2044
		$SED "/^gfxmenu/d" /boot/grub/menu.lst
2035
		$SED "/^gfxmenu/d" /boot/grub/menu.lst
2045
		if [ $vm_vga == 0 ] # is not a VM 
2036
		if [ $vm_vga == 0 ] # is not a VM 
2046
		then
2037
		then
2047
			$SED "/BOOT_IMAGE=linux-nonfb/s/$/ vga=791/" /boot/grub/menu.lst  # change display to 1024*768 (vga791) only if not on VM and only on ALCASAR entry
2038
			$SED "/BOOT_IMAGE=linux-nonfb/s/$/ vga=791/" /boot/grub/menu.lst  # change display to 1024*768 (vga791) only if not on VM and only on ALCASAR entry
2048
		fi
2039
		fi
2049
	fi
2040
	fi
2050
	if [ $vm_vga == 0 ] # is not a VM 
2041
	if [ $vm_vga == 0 ] # is not a VM 
2051
	then
2042
	then
2052
		cp -f $DIR_CONF/banner /etc/mageia-release
2043
		cp -f $DIR_CONF/banner /etc/mageia-release
2053
		echo " V$VERSION" >> /etc/mageia-release
2044
		echo " V$VERSION" >> /etc/mageia-release
2054
	else
2045
	else
2055
		echo "ALCASAR V$VERSION" > /etc/mageia-release
2046
		echo "ALCASAR V$VERSION" > /etc/mageia-release
2056
	fi
2047
	fi
2057
# Load and apply the previous conf file
2048
# Load and apply the previous conf file
2058
	if [ "$mode" = "update" ]
2049
	if [ "$mode" = "update" ]
2059
	then
2050
	then
2060
		$DIR_DEST_BIN/alcasar-archive.sh --now # exports current logs in /var/Save/archive
2051
		$DIR_DEST_BIN/alcasar-archive.sh --now # exports current logs in /var/Save/archive
2061
		$DIR_DEST_BIN/alcasar-conf.sh --load
2052
		$DIR_DEST_BIN/alcasar-conf.sh --load
2062
		PARENT_SCRIPT=`basename $0`
2053
		PARENT_SCRIPT=`basename $0`
2063
		export PARENT_SCRIPT # to avoid stop&start process during the installation process
2054
		export PARENT_SCRIPT # to avoid stop&start process during the installation process
2064
		$DIR_DEST_BIN/alcasar-conf.sh --apply
2055
		$DIR_DEST_BIN/alcasar-conf.sh --apply
2065
		$DIR_DEST_BIN/alcasar-file-clean.sh # Clean & sort conf files. Add uamallowed domains to the dns-blackhole conf 
2056
		$DIR_DEST_BIN/alcasar-file-clean.sh # Clean & sort conf files. Add uamallowed domains to the dns-blackhole conf 
2066
		$SED "s?^INSTALL_DATE=.*?INSTALL_DATE=$DATE?g" $CONF_FILE
2057
		$SED "s?^INSTALL_DATE=.*?INSTALL_DATE=$DATE?g" $CONF_FILE
2067
		$SED "s?^VERSION=.*?VERSION=$VERSION?g" $CONF_FILE
2058
		$SED "s?^VERSION=.*?VERSION=$VERSION?g" $CONF_FILE
2068
	fi
2059
	fi
2069
	rm -f /tmp/alcasar-conf*
2060
	rm -f /tmp/alcasar-conf*
2070
	chown -R root:apache $DIR_DEST_ETC/*
2061
	chown -R root:apache $DIR_DEST_ETC/*
2071
	chmod -R 660 $DIR_DEST_ETC/*
2062
	chmod -R 660 $DIR_DEST_ETC/*
2072
	chmod ug+x $DIR_DEST_ETC/digest
2063
	chmod ug+x $DIR_DEST_ETC/digest
2073
	cd $DIR_INSTALL
2064
	cd $DIR_INSTALL
2074
	echo ""
2065
	echo ""
2075
	echo "#############################################################################"
2066
	echo "#############################################################################"
2076
	if [ $Lang == "fr" ]
2067
	if [ $Lang == "fr" ]
2077
		then
2068
		then
2078
		echo "#                        Fin d'installation d'ALCASAR                       #"
2069
		echo "#                        Fin d'installation d'ALCASAR                       #"
2079
		echo "#                                                                           #"
2070
		echo "#                                                                           #"
2080
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2071
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2081
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2072
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2082
		echo "#                                                                           #"
2073
		echo "#                                                                           #"
2083
		echo "#############################################################################"
2074
		echo "#############################################################################"
2084
		echo
2075
		echo
2085
		echo "- ALCASAR sera fonctionnel après redémarrage du système"
2076
		echo "- ALCASAR sera fonctionnel après redémarrage du système"
2086
		echo
2077
		echo
2087
		echo "- Lisez attentivement la documentation d'exploitation"
2078
		echo "- Lisez attentivement la documentation d'exploitation"
2088
		echo
2079
		echo
2089
		echo "- Le centre de controle d'ALCASAR (ACC) est à l'adresse http://alcasar.localdomain"
2080
		echo "- Le centre de controle d'ALCASAR (ACC) est à l'adresse http://alcasar.localdomain"
2090
		echo
2081
		echo
2091
		echo "                   Appuyez sur 'Entrée' pour continuer"
2082
		echo "                   Appuyez sur 'Entrée' pour continuer"
2092
	else	
2083
	else	
2093
		echo "#                        Enf of ALCASAR install process                     #"
2084
		echo "#                        Enf of ALCASAR install process                     #"
2094
		echo "#                                                                           #"
2085
		echo "#                                                                           #"
2095
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2086
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2096
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2087
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2097
		echo "#                                                                           #"
2088
		echo "#                                                                           #"
2098
		echo "#############################################################################"
2089
		echo "#############################################################################"
2099
		echo
2090
		echo
2100
		echo "- The system will be rebooted in order to operate ALCASAR"
2091
		echo "- The system will be rebooted in order to operate ALCASAR"
2101
		echo
2092
		echo
2102
		echo "- Read the exploitation documentation"
2093
		echo "- Read the exploitation documentation"
2103
		echo
2094
		echo
2104
		echo "- The ALCASAR Control Center (ACC) is at http://alcasar.localdomain"
2095
		echo "- The ALCASAR Control Center (ACC) is at http://alcasar.localdomain"
2105
		echo
2096
		echo
2106
		echo "                   Hit 'Enter' to continue"
2097
		echo "                   Hit 'Enter' to continue"
2107
	fi
2098
	fi
2108
	sleep 2
2099
	sleep 2
2109
	if [ "$mode" != "update" ]
2100
	if [ "$mode" != "update" ]
2110
	then
2101
	then
2111
		read a
2102
		read a
2112
	fi
2103
	fi
2113
	clear
2104
	clear
2114
	reboot
2105
	reboot
2115
} # End post_install ()
2106
} # End post_install ()
2116
 
2107
 
2117
#################################
2108
#################################
2118
#  	Main Install loop  	#
2109
#  	Main Install loop  	#
2119
#################################
2110
#################################
2120
dir_exec=`dirname "$0"`
2111
dir_exec=`dirname "$0"`
2121
if [ $dir_exec != "." ]
2112
if [ $dir_exec != "." ]
2122
then
2113
then
2123
	echo "Lancez ce programme depuis le répertoire de l'archive d'ALCASAR"
2114
	echo "Lancez ce programme depuis le répertoire de l'archive d'ALCASAR"
2124
	echo "Launch this program from the ALCASAR archive directory"
2115
	echo "Launch this program from the ALCASAR archive directory"
2125
	exit 0
2116
	exit 0
2126
fi
2117
fi
2127
if [[ $EUID > 0 ]]
2118
if [[ $EUID > 0 ]]
2128
then
2119
then
2129
	echo "Vous devez être "root" pour installer ALCASAR (commande 'su')"
2120
	echo "Vous devez être "root" pour installer ALCASAR (commande 'su')"
2130
	echo "You must be "root" to install ALCASAR ('su' command)"
2121
	echo "You must be "root" to install ALCASAR ('su' command)"
2131
	exit 0
2122
	exit 0
2132
fi
2123
fi
2133
VERSION=`cat $DIR_INSTALL/VERSION`
2124
VERSION=`cat $DIR_INSTALL/VERSION`
2134
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
2125
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
2135
nb_args=$#
2126
nb_args=$#
2136
args=$1
2127
args=$1
2137
if [ $nb_args -eq 0 ]
2128
if [ $nb_args -eq 0 ]
2138
then
2129
then
2139
	nb_args=1
2130
	nb_args=1
2140
	args="-h"
2131
	args="-h"
2141
fi
2132
fi
2142
chmod -R u+x $DIR_SCRIPTS/*
2133
chmod -R u+x $DIR_SCRIPTS/*
2143
case $args in
2134
case $args in
2144
	-\? | -h* | --h*)
2135
	-\? | -h* | --h*)
2145
		echo "$usage"
2136
		echo "$usage"
2146
		exit 0
2137
		exit 0
2147
		;;
2138
		;;
2148
	-i | --install)
2139
	-i | --install)
2149
		header_install
2140
		header_install
2150
		license
2141
		license
2151
		header_install
2142
		header_install
2152
		testing
2143
		testing
2153
# RPMs install
2144
# RPMs install
2154
		$DIR_SCRIPTS/alcasar-urpmi.sh
2145
		$DIR_SCRIPTS/alcasar-urpmi.sh
2155
		if [ "$?" != "0" ]
2146
		if [ "$?" != "0" ]
2156
		then
2147
		then
2157
			exit 0
2148
			exit 0
2158
		fi
2149
		fi
2159
		if [ -e $CONF_FILE ]
2150
		if [ -e $CONF_FILE ]
2160
		then
2151
		then
2161
# Uninstall the running version
2152
# Uninstall the running version
2162
			$DIR_SCRIPTS/alcasar-uninstall.sh -update
2153
			$DIR_SCRIPTS/alcasar-uninstall.sh -update
2163
		fi
2154
		fi
2164
# Test if manual update	
2155
# Test if manual update	
2165
		if [ -e /tmp/alcasar-conf*.tar.gz ] && [ "$mode" == "install" ]
2156
		if [ -e /tmp/alcasar-conf*.tar.gz ] && [ "$mode" == "install" ]
2166
		then
2157
		then
2167
			header_install
2158
			header_install
2168
			if [ $Lang == "fr" ]
2159
			if [ $Lang == "fr" ]
2169
				then echo "Le fichier de configuration d'une ancienne version a été trouvé";
2160
				then echo "Le fichier de configuration d'une ancienne version a été trouvé";
2170
				else echo "The configuration file of an old version has been found";
2161
				else echo "The configuration file of an old version has been found";
2171
			fi
2162
			fi
2172
			response=0
2163
			response=0
2173
			PTN='^[oOnNyY]$'
2164
			PTN='^[oOnNyY]$'
2174
			until [[ $(expr $response : $PTN) -gt 0 ]]
2165
			until [[ $(expr $response : $PTN) -gt 0 ]]
2175
			do
2166
			do
2176
				if [ $Lang == "fr" ]
2167
				if [ $Lang == "fr" ]
2177
					then echo -n "Voulez-vous l'utiliser (O/n)? ";
2168
					then echo -n "Voulez-vous l'utiliser (O/n)? ";
2178
					else echo -n "Do you want to use it (Y/n)?";
2169
					else echo -n "Do you want to use it (Y/n)?";
2179
				 fi
2170
				 fi
2180
				read response
2171
				read response
2181
				if [ "$response" = "n" ] || [ "$response" = "N" ] 
2172
				if [ "$response" = "n" ] || [ "$response" = "N" ] 
2182
				then rm -f /tmp/alcasar-conf*
2173
				then rm -f /tmp/alcasar-conf*
2183
				fi
2174
				fi
2184
			done
2175
			done
2185
		fi
2176
		fi
2186
# Test if update
2177
# Test if update
2187
		if [ -e /tmp/alcasar-conf* ] 
2178
		if [ -e /tmp/alcasar-conf* ] 
2188
		then
2179
		then
2189
			if [ $Lang == "fr" ]
2180
			if [ $Lang == "fr" ]
2190
				then echo "#### Installation avec mise à jour ####";
2181
				then echo "#### Installation avec mise à jour ####";
2191
				else echo "#### Installation with update     ####";
2182
				else echo "#### Installation with update     ####";
2192
			fi
2183
			fi
2193
# Extract the central configuration file
2184
# Extract the central configuration file
2194
			tar -xf /tmp/alcasar-conf* conf/etc/alcasar.conf 
2185
			tar -xf /tmp/alcasar-conf* conf/etc/alcasar.conf 
2195
			ORGANISME=`grep ORGANISM conf/etc/alcasar.conf|cut -d"=" -f2`
2186
			ORGANISME=`grep ORGANISM conf/etc/alcasar.conf|cut -d"=" -f2`
2196
			PREVIOUS_VERSION=`grep VERSION conf/etc/alcasar.conf|cut -d"=" -f2`
2187
			PREVIOUS_VERSION=`grep VERSION conf/etc/alcasar.conf|cut -d"=" -f2`
2197
			MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
2188
			MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
2198
			MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2|cut -c1`
2189
			MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2|cut -c1`
2199
			UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3`
2190
			UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3`
2200
			mode="update"
2191
			mode="update"
2201
		fi
2192
		fi
2202
		for func in init network ACC CA time_server init_db radius chilli dansguardian antivirus tinyproxy ulogd nfsen vnstat dnsmasq BL cron fail2ban gammu_smsd msec post_install
2193
		for func in init network ACC CA time_server init_db radius chilli dansguardian antivirus tinyproxy ulogd nfsen vnstat dnsmasq BL cron fail2ban gammu_smsd msec post_install
2203
		do
2194
		do
2204
			$func
2195
			$func
2205
# echo "*** 'debug' : end of function $func ***"; read a
2196
# echo "*** 'debug' : end of function $func ***"; read a
2206
		done
2197
		done
2207
		;;
2198
		;;
2208
	-u | --uninstall)
2199
	-u | --uninstall)
2209
		if [ ! -e $DIR_DEST_BIN/alcasar-uninstall.sh ]
2200
		if [ ! -e $DIR_DEST_BIN/alcasar-uninstall.sh ]
2210
		then
2201
		then
2211
			if [ $Lang == "fr" ]
2202
			if [ $Lang == "fr" ]
2212
				then echo "ALCASAR n'est pas installé!";
2203
				then echo "ALCASAR n'est pas installé!";
2213
				else echo "ALCASAR isn't installed!";
2204
				else echo "ALCASAR isn't installed!";
2214
			fi
2205
			fi
2215
			exit 0
2206
			exit 0
2216
		fi
2207
		fi
2217
		response=0
2208
		response=0
2218
		PTN='^[oOnN]$'
2209
		PTN='^[oOnN]$'
2219
		until [[ $(expr $response : $PTN) -gt 0 ]]
2210
		until [[ $(expr $response : $PTN) -gt 0 ]]
2220
		do
2211
		do
2221
			if [ $Lang == "fr" ]
2212
			if [ $Lang == "fr" ]
2222
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (0/n)? ";
2213
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (0/n)? ";
2223
				else echo -n "Do you want to create the running version configuration file (Y/n)? ";
2214
				else echo -n "Do you want to create the running version configuration file (Y/n)? ";
2224
			fi
2215
			fi
2225
			read response
2216
			read response
2226
		done
2217
		done
2227
		if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
2218
		if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
2228
		then
2219
		then
2229
			$DIR_SCRIPTS/alcasar-conf.sh --create
2220
			$DIR_SCRIPTS/alcasar-conf.sh --create
2230
		else	
2221
		else	
2231
			rm -f /tmp/alcasar-conf*
2222
			rm -f /tmp/alcasar-conf*
2232
		fi
2223
		fi
2233
# Uninstall the running version
2224
# Uninstall the running version
2234
		$DIR_SCRIPTS/alcasar-uninstall.sh -full
2225
		$DIR_SCRIPTS/alcasar-uninstall.sh -full
2235
		;;
2226
		;;
2236
	*)
2227
	*)
2237
		echo "Argument inconnu :$1";
2228
		echo "Argument inconnu :$1";
2238
		echo "Unknown argument :$1";
2229
		echo "Unknown argument :$1";
2239
		echo "$usage"
2230
		echo "$usage"
2240
		exit 1
2231
		exit 1
2241
		;;
2232
		;;
2242
esac
2233
esac
2243
# end of script
2234
# end of script
2244
 
2235
 
2245
 
2236