Subversion Repositories ALCASAR

Rev

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

Rev 2272 Rev 2274
1
#!/bin/bash
1
#!/bin/bash
2
#  $Id: alcasar.sh 2272 2017-06-04 19:03:43Z tom.houdayer $ 
2
#  $Id: alcasar.sh 2274 2017-06-06 06:12:50Z richard $ 
3
 
3
 
4
# alcasar.sh
4
# alcasar.sh
5
 
5
 
6
# ALCASAR Install script -  CopyLeft ALCASAR Team [Rexy + 3abtux + Steweb + Crox + ...] 
6
# ALCASAR Install script -  CopyLeft ALCASAR Team [Rexy + 3abtux + Steweb + Crox + ...] 
7
# Ce programme est un logiciel libre ; This software is free and open source
7
# Ce programme est un logiciel libre ; This software is free and open source
8
# elle que publiée par la Free Software Foundation ; soit la version 3 de la Licence. 
8
# elle que publiée par la Free Software Foundation ; soit la version 3 de la Licence. 
9
# Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; 
9
# Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; 
10
# sans même une garantie implicite de COMMERCIABILITE ou DE CONFORMITE A UNE UTILISATION PARTICULIERE. 
10
# sans même une garantie implicite de COMMERCIABILITE ou DE CONFORMITE A UNE UTILISATION PARTICULIERE. 
11
# Voir la Licence Publique Générale GNU pour plus de détails. 
11
# Voir la Licence Publique Générale GNU pour plus de détails. 
12
 
12
 
13
#  team@alcasar.net
13
#  team@alcasar.net
14
 
14
 
15
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
15
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
16
# This script is distributed under the Gnu General Public License (GPL)
16
# This script is distributed under the Gnu General Public License (GPL)
17
 
17
 
18
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
18
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
19
# ALCASAR est architecturé autour d'une distribution Linux Mageia minimaliste et les logiciels libres suivants :
19
# ALCASAR est architecturé autour d'une distribution Linux Mageia minimaliste et les logiciels libres suivants :
20
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
20
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
21
# ALCASAR is based on a stripped Mageia (LSB) with the following open source softwares : 
21
# ALCASAR is based on a stripped Mageia (LSB) with the following open source softwares : 
22
# 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
EOF
851
EOF
852
# Replacement of the extension .cer by .der in MIME type
852
# Replacement of the extension .cer by .der in MIME type
853
$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
854
# Launch after coova (in order to wait tun0 to be up)
854
# Launch after coova (in order to wait tun0 to be up)
855
$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
856
# Log file for ACC access imputability
856
# Log file for ACC access imputability
857
[ -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
858
chown root:apache /var/Save/security/acc_access.log
858
chown root:apache /var/Save/security/acc_access.log
859
chmod 664 /var/Save/security/acc_access.log
859
chmod 664 /var/Save/security/acc_access.log
860
} # End of ACC ()
860
} # End of ACC ()
861
 
861
 
862
##########################################################################
862
##########################################################################
863
##				Fonction "CA"				##
863
##				Fonction "CA"				##
864
## - Creating the CA and the server certificate (apache)	 	##
864
## - Creating the CA and the server certificate (apache)	 	##
865
##########################################################################
865
##########################################################################
866
CA ()
866
CA ()
867
{
867
{
868
	$DIR_DEST_BIN/alcasar-CA.sh
868
	$DIR_DEST_BIN/alcasar-CA.sh
869
	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`
870
	[ -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
871
	cat <<EOF > $FIC_VIRTUAL_SSL
871
	cat <<EOF > $FIC_VIRTUAL_SSL
872
# 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
873
# match a ServerName or ServerAlias in any <VirtualHost> block.
873
# match a ServerName or ServerAlias in any <VirtualHost> block.
874
 
874
 
875
<VirtualHost _default_:443>
875
<VirtualHost _default_:443>
876
# general configuration
876
# general configuration
877
    ServerAdmin root@localhost
877
    ServerAdmin root@localhost
878
    ServerName $HOSTNAME.$DOMAIN
878
    ServerName $HOSTNAME.$DOMAIN
879
 
879
 
880
# SSL configuration
880
# SSL configuration
881
    SSLEngine on
881
    SSLEngine on
882
    SSLCertificateFile /etc/pki/tls/certs/alcasar.crt
882
    SSLCertificateFile /etc/pki/tls/certs/alcasar.crt
883
    SSLCertificateKeyFile /etc/pki/tls/private/alcasar.key
883
    SSLCertificateKeyFile /etc/pki/tls/private/alcasar.key
884
    SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
884
    SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
885
    CustomLog logs/ssl_request_log \
885
    CustomLog logs/ssl_request_log \
886
	"%t %{SSL_PROTOCOL}x %{SSL_CIPHER}x [%h] \"%r\" %b"
886
	"%t %{SSL_PROTOCOL}x %{SSL_CIPHER}x [%h] \"%r\" %b"
887
    ErrorLog logs/ssl_error_log
887
    ErrorLog logs/ssl_error_log
888
    ErrorLogFormat "[%t] [%m:%l] [client %a] %M"
888
    ErrorLogFormat "[%t] [%m:%l] [client %a] %M"
889
</VirtualHost>
889
</VirtualHost>
890
EOF
890
EOF
891
	chown -R root:apache /etc/pki
891
	chown -R root:apache /etc/pki
892
	chmod -R 750 /etc/pki
892
	chmod -R 750 /etc/pki
893
} # End of CA ()
893
} # End of CA ()
894
 
894
 
895
##################################################################
895
##################################################################
896
##			Function "time_server"			##
896
##			Function "time_server"			##
897
## - Configuring NTP server					##
897
## - Configuring NTP server					##
898
##################################################################
898
##################################################################
899
time_server ()
899
time_server ()
900
{
900
{
901
# Set the Internet time server
901
# Set the Internet time server
902
	[ -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
903
	cat <<EOF > /etc/ntp/step-tickers
903
	cat <<EOF > /etc/ntp/step-tickers
904
0.fr.pool.ntp.org	# adapt to your country
904
0.fr.pool.ntp.org	# adapt to your country
905
1.fr.pool.ntp.org
905
1.fr.pool.ntp.org
906
2.fr.pool.ntp.org
906
2.fr.pool.ntp.org
907
EOF
907
EOF
908
	[ -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
909
	cat <<EOF > /etc/ntp.conf
909
	cat <<EOF > /etc/ntp.conf
910
server 0.fr.pool.ntp.org	# adapt to your country
910
server 0.fr.pool.ntp.org	# adapt to your country
911
server 1.fr.pool.ntp.org
911
server 1.fr.pool.ntp.org
912
server 2.fr.pool.ntp.org
912
server 2.fr.pool.ntp.org
913
server 127.127.1.0   		# local clock si NTP internet indisponible ...
913
server 127.127.1.0   		# local clock si NTP internet indisponible ...
914
fudge 127.127.1.0 stratum 10
914
fudge 127.127.1.0 stratum 10
915
restrict $PRIVATE_NETWORK mask $PRIVATE_NETMASK nomodify notrap
915
restrict $PRIVATE_NETWORK mask $PRIVATE_NETMASK nomodify notrap
916
restrict 127.0.0.1
916
restrict 127.0.0.1
917
driftfile /var/lib/ntp/drift
917
driftfile /var/lib/ntp/drift
918
logfile /var/log/ntp.log
918
logfile /var/log/ntp.log
919
disable monitor
919
disable monitor
920
EOF
920
EOF
921
	chown -R ntp:ntp /var/lib/ntp
921
	chown -R ntp:ntp /var/lib/ntp
922
# Synchronize now
922
# Synchronize now
923
	ntpd -q -g &
923
	ntpd -q -g &
924
} # End of time_server ()
924
} # End of time_server ()
925
 
925
 
926
##########################################################################################
926
##########################################################################################
927
##			Fonction "init_db"						##
927
##			Fonction "init_db"						##
928
## - Initialisation de la base Mysql							##
928
## - Initialisation de la base Mysql							##
929
## - Affectation du mot de passe de l'administrateur (root)				##
929
## - Affectation du mot de passe de l'administrateur (root)				##
930
## - Suppression des bases et des utilisateurs superflus				##
930
## - Suppression des bases et des utilisateurs superflus				##
931
## - Création de la base 'radius'							##
931
## - Création de la base 'radius'							##
932
## - Installation du schéma de cette base						##
932
## - Installation du schéma de cette base						##
933
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
933
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
934
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
934
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
935
##########################################################################################
935
##########################################################################################
936
init_db ()
936
init_db ()
937
{
937
{
938
	if [ `systemctl is-active mysqld` == "active" ]
938
	if [ `systemctl is-active mysqld` == "active" ]
939
	then
939
	then
940
		systemctl stop mysqld
940
		systemctl stop mysqld
941
	fi
941
	fi
942
	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
943
	/usr/sbin/mysqld-prepare-db-dir > /dev/null 2>&1
943
	/usr/sbin/mysqld-prepare-db-dir > /dev/null 2>&1
944
	[ -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
945
	$SED "s?^tmpdir.*?tmpdir=/tmp?g" /etc/my.cnf
945
	$SED "s?^tmpdir.*?tmpdir=/tmp?g" /etc/my.cnf
946
	$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
947
	$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
948
	$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
949
	$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 !)
950
	/usr/bin/systemctl start mysqld.service
950
	/usr/bin/systemctl start mysqld.service
951
	nb_round=1
951
	nb_round=1
952
	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
953
	do
953
	do
954
		nb_round=`expr $nb_round + 1`
954
		nb_round=`expr $nb_round + 1`
955
		sleep 2
955
		sleep 2
956
	done
956
	done
957
	if [ ! -S /var/lib/mysql/mysql.sock ]
957
	if [ ! -S /var/lib/mysql/mysql.sock ]
958
	then
958
	then
959
		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 !"
960
		exit
960
		exit
961
	fi
961
	fi
962
	mysqladmin -u root password $mysqlpwd
962
	mysqladmin -u root password $mysqlpwd
963
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
963
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
964
# Secure the server
964
# Secure the server
965
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;"
965
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;"
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;" 
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;" 
967
# Create 'radius' database
967
# Create 'radius' database
968
	$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;"
969
# Add an empty radius database structure
969
# Add an empty radius database structure
970
	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
971
# 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
972
	[ -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
973
	$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
974
	$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
975
	/usr/bin/systemctl daemon-reload
975
	/usr/bin/systemctl daemon-reload
976
} # End of init_db ()
976
} # End of init_db ()
977
 
977
 
978
##########################################################################
978
##########################################################################
979
##			Fonction "radius"				##
979
##			Fonction "radius"				##
980
## - Paramètrage des fichiers de configuration FreeRadius		##
980
## - Paramètrage des fichiers de configuration FreeRadius		##
981
## - Affectation du secret partagé entre coova-chilli et freeradius	##
981
## - Affectation du secret partagé entre coova-chilli et freeradius	##
982
## - Modification de fichier de conf pour l'accès à Mysql		##
982
## - Modification de fichier de conf pour l'accès à Mysql		##
983
##########################################################################
983
##########################################################################
984
radius ()
984
radius ()
985
{
985
{
986
	cp -f $DIR_CONF/empty-radiusd-db.sql /etc/raddb/
986
	cp -f $DIR_CONF/empty-radiusd-db.sql /etc/raddb/
987
	chown -R radius:radius /etc/raddb
987
	chown -R radius:radius /etc/raddb
988
	[ -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
989
# Set radius.conf parameters
989
# Set radius.conf parameters
990
	$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
991
	$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
992
	$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
993
# remove the proxy function
993
# remove the proxy function
994
	$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
995
	$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
996
# remove EAP module
996
# remove EAP module
997
	$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
998
# listen on loopback (should be modified later if EAP enabled)
998
# listen on loopback (should be modified later if EAP enabled)
999
	$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
1000
# enable the  SQL module (and SQL counter)
1000
# enable the  SQL module (and SQL counter)
1001
	$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
1002
	$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
1003
	$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
1004
# only include modules for ALCASAR needs
1004
# only include modules for ALCASAR needs
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
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
1006
	$SED "s/^[\t ]exec$/\#\texec/g" /etc/raddb/radiusd.conf
1006
	$SED "s/^[\t ]exec$/\#\texec/g" /etc/raddb/radiusd.conf
1007
	$SED "s?^[\t ]*expr.*?\#\texpr?g" /etc/raddb/radiusd.conf
1007
	$SED "s?^[\t ]*expr.*?\#\texpr?g" /etc/raddb/radiusd.conf
1008
	$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
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
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
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
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
1011
# remvove virtual server and copy our conf file
1011
# remvove virtual server and copy our conf file
1012
	rm -f /etc/raddb/sites-enabled/*
1012
	rm -f /etc/raddb/sites-enabled/*
1013
       	cp $DIR_CONF/radius/alcasar-radius /etc/raddb/sites-available/alcasar
1013
       	cp $DIR_CONF/radius/alcasar-radius /etc/raddb/sites-available/alcasar
1014
	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)
1015
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
1015
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
1016
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
1016
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
1017
	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
1018
# 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'
1019
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
1019
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
1020
# 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)
1021
	[ -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
1022
	cat << EOF > /etc/raddb/clients.conf
1022
	cat << EOF > /etc/raddb/clients.conf
1023
client 127.0.0.1 {
1023
client 127.0.0.1 {
1024
	secret = $secretradius
1024
	secret = $secretradius
1025
	shortname = localhost
1025
	shortname = localhost
1026
}
1026
}
1027
EOF
1027
EOF
1028
# sql.conf modification
1028
# sql.conf modification
1029
	[ -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
1030
	$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
1031
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
1031
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
1032
	$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
1033
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
1033
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
1034
# 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.) 
1035
	[ -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
1036
	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
1037
# counter.conf modification (change the Max-All-Session-Time counter)
1037
# counter.conf modification (change the Max-All-Session-Time counter)
1038
	[ -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
1039
	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
1040
	chown -R radius:radius /etc/raddb/sql/mysql/*
1040
	chown -R radius:radius /etc/raddb/sql/mysql/*
1041
# make certain that mysql is up before radius start
1041
# make certain that mysql is up before radius start
1042
	[ -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
1043
	$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
1044
	/usr/bin/systemctl daemon-reload
1044
	/usr/bin/systemctl daemon-reload
1045
} # End radius ()
1045
} # End radius ()
1046
 
1046
 
1047
##################################################################################
1047
##################################################################################
1048
##			Fonction "chilli"					##
1048
##			Fonction "chilli"					##
1049
## - 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	##
1050
## - Paramètrage de la page d'authentification (intercept.php)			##
1050
## - Paramètrage de la page d'authentification (intercept.php)			##
1051
##################################################################################
1051
##################################################################################
1052
chilli ()
1052
chilli ()
1053
{
1053
{
1054
# chilli unit for systemd
1054
# chilli unit for systemd
1055
cat << EOF > /lib/systemd/system/chilli.service
1055
cat << EOF > /lib/systemd/system/chilli.service
1056
#  This file is part of systemd.
1056
#  This file is part of systemd.
1057
#
1057
#
1058
#  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
1059
#  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
1060
#  the Free Software Foundation; either version 2 of the License, or
1060
#  the Free Software Foundation; either version 2 of the License, or
1061
#  (at your option) any later version.
1061
#  (at your option) any later version.
1062
[Unit]
1062
[Unit]
1063
Description=chilli is a captive portal daemon
1063
Description=chilli is a captive portal daemon
1064
After=network.target
1064
After=network.target
1065
 
1065
 
1066
[Service]
1066
[Service]
1067
Type=forking
1067
Type=forking
1068
ExecStart=/usr/libexec/chilli start
1068
ExecStart=/usr/libexec/chilli start
1069
ExecStop=/usr/libexec/chilli stop
1069
ExecStop=/usr/libexec/chilli stop
1070
ExecReload=/usr/libexec/chilli reload
1070
ExecReload=/usr/libexec/chilli reload
1071
PIDFile=/var/run/chilli.pid
1071
PIDFile=/var/run/chilli.pid
1072
 
1072
 
1073
[Install]
1073
[Install]
1074
WantedBy=multi-user.target
1074
WantedBy=multi-user.target
1075
EOF
1075
EOF
1076
# init file creation
1076
# init file creation
1077
	[ -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
1078
	cat <<EOF > /etc/init.d/chilli
1078
	cat <<EOF > /etc/init.d/chilli
1079
#!/bin/sh
1079
#!/bin/sh
1080
#
1080
#
1081
# chilli CoovaChilli init
1081
# chilli CoovaChilli init
1082
#
1082
#
1083
# chkconfig: 2345 65 35
1083
# chkconfig: 2345 65 35
1084
# description: CoovaChilli
1084
# description: CoovaChilli
1085
### BEGIN INIT INFO
1085
### BEGIN INIT INFO
1086
# Provides:       chilli
1086
# Provides:       chilli
1087
# Required-Start: network 
1087
# Required-Start: network 
1088
# Should-Start: 
1088
# Should-Start: 
1089
# Required-Stop:  network
1089
# Required-Stop:  network
1090
# Should-Stop: 
1090
# Should-Stop: 
1091
# Default-Start:  2 3 5
1091
# Default-Start:  2 3 5
1092
# Default-Stop:
1092
# Default-Stop:
1093
# Description:    CoovaChilli access controller
1093
# Description:    CoovaChilli access controller
1094
### END INIT INFO
1094
### END INIT INFO
1095
 
1095
 
1096
[ -f /usr/sbin/chilli ] || exit 0
1096
[ -f /usr/sbin/chilli ] || exit 0
1097
. /etc/init.d/functions
1097
. /etc/init.d/functions
1098
CONFIG=/etc/chilli.conf
1098
CONFIG=/etc/chilli.conf
1099
pidfile=/var/run/chilli.pid
1099
pidfile=/var/run/chilli.pid
1100
[ -f \$CONFIG ] || {
1100
[ -f \$CONFIG ] || {
1101
    echo "\$CONFIG Not found"
1101
    echo "\$CONFIG Not found"
1102
    exit 0
1102
    exit 0
1103
}
1103
}
1104
RETVAL=0
1104
RETVAL=0
1105
prog="chilli"
1105
prog="chilli"
1106
case \$1 in
1106
case \$1 in
1107
    start)
1107
    start)
1108
	if [ -f \$pidfile ] ; then 
1108
	if [ -f \$pidfile ] ; then 
1109
		gprintf "chilli is already running"
1109
		gprintf "chilli is already running"
1110
	else
1110
	else
1111
        	gprintf "Starting \$prog: "
1111
        	gprintf "Starting \$prog: "
1112
		rm -f /var/run/chilli* # cleaning
1112
		rm -f /var/run/chilli* # cleaning
1113
        	/usr/sbin/modprobe tun >/dev/null 2>&1
1113
        	/usr/sbin/modprobe tun >/dev/null 2>&1
1114
        	echo 1 > /proc/sys/net/ipv4/ip_forward
1114
        	echo 1 > /proc/sys/net/ipv4/ip_forward
1115
		[ -e /dev/net/tun ] || {
1115
		[ -e /dev/net/tun ] || {
1116
	    	(cd /dev; 
1116
	    	(cd /dev; 
1117
			mkdir net; 
1117
			mkdir net; 
1118
			cd net; 
1118
			cd net; 
1119
			mknod tun c 10 200)
1119
			mknod tun c 10 200)
1120
		}
1120
		}
1121
		ifconfig $INTIF 0.0.0.0
1121
		ifconfig $INTIF 0.0.0.0
1122
		/usr/sbin/ethtool -K $INTIF gro off
1122
		/usr/sbin/ethtool -K $INTIF gro off
1123
		daemon /usr/sbin/chilli -c \$CONFIG --pidfile=\$pidfile &
1123
		daemon /usr/sbin/chilli -c \$CONFIG --pidfile=\$pidfile &
1124
        	RETVAL=$?
1124
        	RETVAL=$?
1125
	fi
1125
	fi
1126
	;;
1126
	;;
1127
 
1127
 
1128
    reload)
1128
    reload)
1129
	killall -HUP chilli
1129
	killall -HUP chilli
1130
	;;
1130
	;;
1131
 
1131
 
1132
    restart)
1132
    restart)
1133
	\$0 stop
1133
	\$0 stop
1134
        sleep 2
1134
        sleep 2
1135
	\$0 start
1135
	\$0 start
1136
	;;
1136
	;;
1137
    
1137
    
1138
    status)
1138
    status)
1139
        status chilli
1139
        status chilli
1140
        RETVAL=0
1140
        RETVAL=0
1141
        ;;
1141
        ;;
1142
 
1142
 
1143
    stop)
1143
    stop)
1144
	if [ -f \$pidfile ] ; then  
1144
	if [ -f \$pidfile ] ; then  
1145
        	gprintf "Shutting down \$prog: "
1145
        	gprintf "Shutting down \$prog: "
1146
		killproc /usr/sbin/chilli
1146
		killproc /usr/sbin/chilli
1147
		RETVAL=\$?
1147
		RETVAL=\$?
1148
		[ \$RETVAL = 0 ] && rm -f $pidfile
1148
		[ \$RETVAL = 0 ] && rm -f $pidfile
1149
	else	
1149
	else	
1150
        	gprintf "chilli is not running"
1150
        	gprintf "chilli is not running"
1151
	fi
1151
	fi
1152
	;;
1152
	;;
1153
    
1153
    
1154
    *)
1154
    *)
1155
        echo "Usage: \$0 {start|stop|restart|reload|status}"
1155
        echo "Usage: \$0 {start|stop|restart|reload|status}"
1156
        exit 1
1156
        exit 1
1157
esac
1157
esac
1158
echo
1158
echo
1159
EOF
1159
EOF
1160
chmod a+x /etc/init.d/chilli
1160
chmod a+x /etc/init.d/chilli
1161
ln -s /etc/init.d/chilli /usr/libexec/chilli
1161
ln -s /etc/init.d/chilli /usr/libexec/chilli
1162
# conf file creation
1162
# conf file creation
1163
	[ -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
1164
	#NTP Option configuration for DHCP
1164
	#NTP Option configuration for DHCP
1165
	#DHCP Options : rfc2132
1165
	#DHCP Options : rfc2132
1166
		#dhcp option value will be convert in hexa.
1166
		#dhcp option value will be convert in hexa.
1167
		#NTP option (or 'option 42') is like :
1167
		#NTP option (or 'option 42') is like :
1168
		#			
1168
		#			
1169
		#    Code   Len         Address 1               Address 2
1169
		#    Code   Len         Address 1               Address 2
1170
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1170
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1171
		#   |  42 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
1171
		#   |  42 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
1172
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1172
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1173
		#
1173
		#
1174
		#Code : 42 => 2a
1174
		#Code : 42 => 2a
1175
		#Len : 4 => 04
1175
		#Len : 4 => 04
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))
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))
1177
	cat <<EOF > /etc/chilli.conf
1177
	cat <<EOF > /etc/chilli.conf
1178
# coova config for ALCASAR
1178
# coova config for ALCASAR
1179
cmdsocket	/var/run/chilli.sock
1179
cmdsocket	/var/run/chilli.sock
1180
unixipc		chilli.$INTIF.ipc
1180
unixipc		chilli.$INTIF.ipc
1181
pidfile		/var/run/chilli.pid
1181
pidfile		/var/run/chilli.pid
1182
net		$PRIVATE_NETWORK_MASK
1182
net		$PRIVATE_NETWORK_MASK
1183
dhcpif		$INTIF
1183
dhcpif		$INTIF
1184
ethers		$DIR_DEST_ETC/alcasar-ethers
1184
ethers		$DIR_DEST_ETC/alcasar-ethers
1185
#nodynip
1185
#nodynip
1186
#statip
1186
#statip
1187
dynip		$PRIVATE_NETWORK_MASK
1187
dynip		$PRIVATE_NETWORK_MASK
1188
domain		$DOMAIN
1188
domain		$DOMAIN
1189
dns1		$PRIVATE_IP
1189
dns1		$PRIVATE_IP
1190
dns2		$PRIVATE_IP
1190
dns2		$PRIVATE_IP
1191
uamlisten	$PRIVATE_IP
1191
uamlisten	$PRIVATE_IP
1192
uamport		3990
1192
uamport		3990
1193
macauth
1193
macauth
1194
macpasswd	password
1194
macpasswd	password
1195
strictmacauth
1195
strictmacauth
1196
locationname	$HOSTNAME.$DOMAIN
1196
locationname	$HOSTNAME.$DOMAIN
1197
radiusserver1	127.0.0.1
1197
radiusserver1	127.0.0.1
1198
radiusserver2	127.0.0.1
1198
radiusserver2	127.0.0.1
1199
radiussecret	$secretradius
1199
radiussecret	$secretradius
1200
radiusauthport	1812
1200
radiusauthport	1812
1201
radiusacctport	1813
1201
radiusacctport	1813
1202
uamserver	https://$HOSTNAME.$DOMAIN/intercept.php
1202
uamserver	https://$HOSTNAME.$DOMAIN/intercept.php
1203
radiusnasid	$HOSTNAME.$DOMAIN
1203
radiusnasid	$HOSTNAME.$DOMAIN
1204
uamsecret	$secretuam
1204
uamsecret	$secretuam
1205
uamallowed	$HOSTNAME,$HOSTNAME.$DOMAIN
1205
uamallowed	$HOSTNAME,$HOSTNAME.$DOMAIN
1206
coaport		3799
1206
coaport		3799
1207
conup		$DIR_DEST_BIN/alcasar-conup.sh
1207
conup		$DIR_DEST_BIN/alcasar-conup.sh
1208
condown		$DIR_DEST_BIN/alcasar-condown.sh
1208
condown		$DIR_DEST_BIN/alcasar-condown.sh
1209
include		$DIR_DEST_ETC/alcasar-uamallowed
1209
include		$DIR_DEST_ETC/alcasar-uamallowed
1210
include		$DIR_DEST_ETC/alcasar-uamdomain
1210
include		$DIR_DEST_ETC/alcasar-uamdomain
1211
dhcpopt		2a04$PRIVATE_IP_HEXA
1211
dhcpopt		2a04$PRIVATE_IP_HEXA
1212
macup		$DIR_DEST_BIN/alcasar-macup.sh
1212
macup		$DIR_DEST_BIN/alcasar-macup.sh
1213
macdown		$DIR_DEST_BIN/alcasar-macdown.sh
1213
macdown		$DIR_DEST_BIN/alcasar-macdown.sh
1214
#dhcpgateway		none
1214
#dhcpgateway		none
1215
#dhcprelayagent		none
1215
#dhcprelayagent		none
1216
#dhcpgatewayport	none
1216
#dhcpgatewayport	none
1217
sslkeyfile	/etc/pki/tls/private/alcasar.key
1217
sslkeyfile	/etc/pki/tls/private/alcasar.key
1218
sslcertfile	/etc/pki/tls/certs/alcasar.crt
1218
sslcertfile	/etc/pki/tls/certs/alcasar.crt
1219
redirssl
1219
redirssl
1220
EOF
1220
EOF
1221
# create file for DHCP static ip. Reserve the second IP address for INTIF (the first one is for tun0)
1221
# create files for "DHCP static ip" and "DHCP static ip info". Reserve the second IP address for INTIF (the first one is for tun0)
1222
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers
1222
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers
-
 
1223
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers-info
1223
# create files for trusted domains and urls
1224
# create files for trusted domains and urls
1224
	touch $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
1225
	touch $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
1225
	chown root:apache $DIR_DEST_ETC/alcasar-*
1226
	chown root:apache $DIR_DEST_ETC/alcasar-*
1226
	chmod 660 $DIR_DEST_ETC/alcasar-*
1227
	chmod 660 $DIR_DEST_ETC/alcasar-*
1227
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli)
1228
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli)
1228
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
1229
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
1229
# user 'chilli' creation (in order to run conup/off and up/down scripts
1230
# user 'chilli' creation (in order to run conup/off and up/down scripts
1230
	chilli_exist=`grep chilli /etc/passwd|wc -l`
1231
	chilli_exist=`grep chilli /etc/passwd|wc -l`
1231
	if [ "$chilli_exist" == "1" ]
1232
	if [ "$chilli_exist" == "1" ]
1232
	then
1233
	then
1233
	      userdel -r chilli 2>/dev/null
1234
	      userdel -r chilli 2>/dev/null
1234
	fi
1235
	fi
1235
	groupadd -f chilli
1236
	groupadd -f chilli
1236
	useradd -r -g chilli -s /bin/false -c "system user for coova-chilli" chilli
1237
	useradd -r -g chilli -s /bin/false -c "system user for coova-chilli" chilli
1237
}  # End of chilli ()
1238
}  # End of chilli ()
1238
 
1239
 
1239
##################################################################
1240
##################################################################
1240
##		Fonction "dansguardian"				##
1241
##		Fonction "dansguardian"				##
1241
## - Paramètrage du gestionnaire de contenu Dansguardian	##
1242
## - Paramètrage du gestionnaire de contenu Dansguardian	##
1242
##################################################################
1243
##################################################################
1243
dansguardian ()
1244
dansguardian ()
1244
{
1245
{
1245
	mkdir -p /var/dansguardian /var/log/dansguardian
1246
	mkdir -p /var/dansguardian /var/log/dansguardian
1246
	chown -R dansguardian /var/dansguardian /var/log/dansguardian
1247
	chown -R dansguardian /var/dansguardian /var/log/dansguardian
1247
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/dansguardian -c /etc/dansguardian/dansguardian.conf?g" /lib/systemd/system/dansguardian.service
1248
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/dansguardian -c /etc/dansguardian/dansguardian.conf?g" /lib/systemd/system/dansguardian.service
1248
	$SED "s?^After=.*?After=network.target chilli.service?g" /lib/systemd/system/dansguardian.service
1249
	$SED "s?^After=.*?After=network.target chilli.service?g" /lib/systemd/system/dansguardian.service
1249
	[ -e $DIR_DG/dansguardian.conf.default ] || cp $DIR_DG/dansguardian.conf $DIR_DG/dansguardian.conf.default
1250
	[ -e $DIR_DG/dansguardian.conf.default ] || cp $DIR_DG/dansguardian.conf $DIR_DG/dansguardian.conf.default
1250
# By default the filter is off 
1251
# By default the filter is off 
1251
	$SED "s/^reportinglevel =.*/reportinglevel = 3/g" $DIR_DG/dansguardian.conf
1252
	$SED "s/^reportinglevel =.*/reportinglevel = 3/g" $DIR_DG/dansguardian.conf
1252
# French deny HTML page
1253
# French deny HTML page
1253
	$SED "s?^language =.*?language = french?g" $DIR_DG/dansguardian.conf
1254
	$SED "s?^language =.*?language = french?g" $DIR_DG/dansguardian.conf
1254
# Listen only on LAN side
1255
# Listen only on LAN side
1255
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" $DIR_DG/dansguardian.conf
1256
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" $DIR_DG/dansguardian.conf
1256
# DG send its flow to HAVP
1257
# DG send its flow to HAVP
1257
	$SED "s?^proxyport.*?proxyport = 8090?g" $DIR_DG/dansguardian.conf
1258
	$SED "s?^proxyport.*?proxyport = 8090?g" $DIR_DG/dansguardian.conf
1258
# replace the default deny HTML page
1259
# replace the default deny HTML page
1259
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
1260
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
1260
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
1261
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
1261
# Don't log
1262
# Don't log
1262
	$SED "s?^loglevel =.*?loglevel = 0?g" $DIR_DG/dansguardian.conf
1263
	$SED "s?^loglevel =.*?loglevel = 0?g" $DIR_DG/dansguardian.conf
1263
# on désactive par défaut le controle de contenu des pages html
1264
# on désactive par défaut le controle de contenu des pages html
1264
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/dansguardian.conf
1265
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/dansguardian.conf
1265
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
1266
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
1266
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (on commente ce qui ne l'est pas)
1267
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (on commente ce qui ne l'est pas)
1267
# on désactive par défaut le contrôle d'URL par expressions régulières
1268
# on désactive par défaut le contrôle d'URL par expressions régulières
1268
	cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
1269
	cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
1269
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
1270
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
1270
 
1271
 
1271
# Configure Dansguardian for large site
1272
# Configure Dansguardian for large site
1272
# Minimum number of processus to handle connections
1273
# Minimum number of processus to handle connections
1273
	$SED "s?^minchildren =.*?minchildren = 15?g" $DIR_DG/dansguardian.conf
1274
	$SED "s?^minchildren =.*?minchildren = 15?g" $DIR_DG/dansguardian.conf
1274
# Maximum number of processus to handle connections
1275
# Maximum number of processus to handle connections
1275
	$SED "s?^maxchildren =.*?maxchildren = 200?g" $DIR_DG/dansguardian.conf
1276
	$SED "s?^maxchildren =.*?maxchildren = 200?g" $DIR_DG/dansguardian.conf
1276
# Run at least 8 daemons
1277
# Run at least 8 daemons
1277
	$SED "s?^minsparechildren =.*?minsparechildren = 8?g" $DIR_DG/dansguardian.conf
1278
	$SED "s?^minsparechildren =.*?minsparechildren = 8?g" $DIR_DG/dansguardian.conf
1278
# minimum number of processes to spawn
1279
# minimum number of processes to spawn
1279
	$SED "s?^preforkchildren =.*?preforkchildren = 10?g" $DIR_DG/dansguardian.conf
1280
	$SED "s?^preforkchildren =.*?preforkchildren = 10?g" $DIR_DG/dansguardian.conf
1280
# maximum age of a child process before it croaks it
1281
# maximum age of a child process before it croaks it
1281
	$SED "s?^maxagechildren =.*?maxagechildren = 1000?g" $DIR_DG/dansguardian.conf
1282
	$SED "s?^maxagechildren =.*?maxagechildren = 1000?g" $DIR_DG/dansguardian.conf
1282
	
1283
	
1283
# on désactive par défaut le contrôle de téléchargement de fichiers
1284
# on désactive par défaut le contrôle de téléchargement de fichiers
1284
	[ -e $DIR_DG/dansguardianf1.conf.default ] || cp $DIR_DG/dansguardianf1.conf $DIR_DG/dansguardianf1.conf.default
1285
	[ -e $DIR_DG/dansguardianf1.conf.default ] || cp $DIR_DG/dansguardianf1.conf $DIR_DG/dansguardianf1.conf.default
1285
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" $DIR_DG/dansguardianf1.conf
1286
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" $DIR_DG/dansguardianf1.conf
1286
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
1287
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
1287
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
1288
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
1288
	touch $DIR_DG/lists/bannedextensionlist
1289
	touch $DIR_DG/lists/bannedextensionlist
1289
	touch $DIR_DG/lists/bannedmimetypelist
1290
	touch $DIR_DG/lists/bannedmimetypelist
1290
# 'Safesearch' regex actualisation
1291
# 'Safesearch' regex actualisation
1291
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
1292
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
1292
# empty LAN IP list that won't be WEB filtered
1293
# empty LAN IP list that won't be WEB filtered
1293
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
1294
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
1294
	touch $DIR_DG/lists/exceptioniplist
1295
	touch $DIR_DG/lists/exceptioniplist
1295
# Keep a copy of URL & domain filter configuration files
1296
# Keep a copy of URL & domain filter configuration files
1296
	[ -e $DIR_DG/lists/bannedsitelist.default ] || mv $DIR_DG/lists/bannedsitelist $DIR_DG/lists/bannedsitelist.default
1297
	[ -e $DIR_DG/lists/bannedsitelist.default ] || mv $DIR_DG/lists/bannedsitelist $DIR_DG/lists/bannedsitelist.default
1297
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
1298
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
1298
} # End of dansguardian ()
1299
} # End of dansguardian ()
1299
 
1300
 
1300
##################################################################
1301
##################################################################
1301
##			Fonction "antivirus"			##
1302
##			Fonction "antivirus"			##
1302
## - configuration of havp, libclamav and freshclam		##
1303
## - configuration of havp, libclamav and freshclam		##
1303
##################################################################
1304
##################################################################
1304
antivirus ()		
1305
antivirus ()		
1305
{
1306
{
1306
# create 'havp' user
1307
# create 'havp' user
1307
	havp_exist=`grep havp /etc/passwd|wc -l`
1308
	havp_exist=`grep havp /etc/passwd|wc -l`
1308
	if [ "$havp_exist" == "1" ]
1309
	if [ "$havp_exist" == "1" ]
1309
	then
1310
	then
1310
	      userdel -r havp 2>/dev/null
1311
	      userdel -r havp 2>/dev/null
1311
	      groupdel havp 2>/dev/null
1312
	      groupdel havp 2>/dev/null
1312
	fi
1313
	fi
1313
	groupadd -f havp
1314
	groupadd -f havp
1314
	useradd -r -g havp -s /bin/false -c "system user for havp (antivirus proxy)" havp
1315
	useradd -r -g havp -s /bin/false -c "system user for havp (antivirus proxy)" havp
1315
	mkdir -p /var/tmp/havp /var/log/havp /var/run/havp /var/log/clamav /var/lib/clamav
1316
	mkdir -p /var/tmp/havp /var/log/havp /var/run/havp /var/log/clamav /var/lib/clamav
1316
	chown -R havp:havp /var/tmp/havp /var/log/havp /var/run/havp
1317
	chown -R havp:havp /var/tmp/havp /var/log/havp /var/run/havp
1317
	chown -R clamav:clamav /var/log/clamav /var/lib/clamav
1318
	chown -R clamav:clamav /var/log/clamav /var/lib/clamav
1318
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
1319
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
1319
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
1320
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
1320
	$SED "s?^# PIDFILE.*?PIDFILE /var/run/havp/havp.pid?g" /etc/havp/havp.config	# pidfile
1321
	$SED "s?^# PIDFILE.*?PIDFILE /var/run/havp/havp.pid?g" /etc/havp/havp.config	# pidfile
1321
	$SED "s?^# TRANSPARENT.*?TRANSPARENT false?g" /etc/havp/havp.config		# transparent mode
1322
	$SED "s?^# TRANSPARENT.*?TRANSPARENT false?g" /etc/havp/havp.config		# transparent mode
1322
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config	# we listen only on loopback
1323
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config	# we listen only on loopback
1323
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config				# datas come on port 8090 (on loopback)
1324
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config				# datas come on port 8090 (on loopback)
1324
	$SED "s?^# TIMEFORMAT.*?TIMEFORMAT %Y %b %d %H:%M:%S?g" /etc/havp/havp.config	# Log format
1325
	$SED "s?^# TIMEFORMAT.*?TIMEFORMAT %Y %b %d %H:%M:%S?g" /etc/havp/havp.config	# Log format
1325
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config		# active libclamav AV
1326
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config		# active libclamav AV
1326
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config			# log only when malware matches
1327
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config			# log only when malware matches
1327
	$SED "s?^# SERVERNUMBER.*?SERVERNUMBER 10?g" /etc/havp/havp.config		# 10 daemons are started simultaneously
1328
	$SED "s?^# SERVERNUMBER.*?SERVERNUMBER 10?g" /etc/havp/havp.config		# 10 daemons are started simultaneously
1328
	$SED "s?^# SCANIMAGES.*?SCANIMAGES false?g" /etc/havp/havp.config		# doesn't scan image files
1329
	$SED "s?^# SCANIMAGES.*?SCANIMAGES false?g" /etc/havp/havp.config		# doesn't scan image files
1329
	$SED "s?^# SKIPMIME.*?SKIPMIME image\/\* video\/\* audio\/\*?g" /etc/havp/havp.config # doesn't scan some multimedia files
1330
	$SED "s?^# SKIPMIME.*?SKIPMIME image\/\* video\/\* audio\/\*?g" /etc/havp/havp.config # doesn't scan some multimedia files
1330
# skip checking of youtube flow (too heavy load / risk too low)
1331
# skip checking of youtube flow (too heavy load / risk too low)
1331
	[ -e /etc/havp/whitelist.default ] || cp /etc/havp/whitelist /etc/havp/whitelist.default
1332
	[ -e /etc/havp/whitelist.default ] || cp /etc/havp/whitelist /etc/havp/whitelist.default
1332
	echo "# Whitelist youtube flow" >> /etc/havp/whitelist
1333
	echo "# Whitelist youtube flow" >> /etc/havp/whitelist
1333
	echo "*.youtube.com/*" >> /etc/havp/whitelist
1334
	echo "*.youtube.com/*" >> /etc/havp/whitelist
1334
# adapt init script and systemd unit
1335
# adapt init script and systemd unit
1335
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
1336
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
1336
	cp -f $DIR_CONF/havp-init /etc/init.d/havp
1337
	cp -f $DIR_CONF/havp-init /etc/init.d/havp
1337
	[ -e /lib/systemd/system/havp.service.default ] || cp /lib/systemd/system/havp.service /lib/systemd/system/havp.service.default
1338
	[ -e /lib/systemd/system/havp.service.default ] || cp /lib/systemd/system/havp.service /lib/systemd/system/havp.service.default
1338
	$SED "/^PIDFile/i ExecStartPre=/bin/mkdir -p /var/run/havp" /lib/systemd/system/havp.service
1339
	$SED "/^PIDFile/i ExecStartPre=/bin/mkdir -p /var/run/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
1340
	$SED "/^PIDFile/i ExecStartPre=/bin/chown -R havp:havp /var/run/havp /var/log/havp" /lib/systemd/system/havp.service
1340
# replace of the intercept page (template)
1341
# replace of the intercept page (template)
1341
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
1342
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
1342
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
1343
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
1343
# update virus database every 4 hours (24h/6)
1344
# update virus database every 4 hours (24h/6)
1344
	[ -e /etc/freshclam.conf.default ] || cp /etc/freshclam.conf /etc/freshclam.conf.default
1345
	[ -e /etc/freshclam.conf.default ] || cp /etc/freshclam.conf /etc/freshclam.conf.default
1345
	$SED "s?^Checks.*?Checks 6?g" /etc/freshclam.conf
1346
	$SED "s?^Checks.*?Checks 6?g" /etc/freshclam.conf
1346
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
1347
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
1347
	$SED "/^DatabaseMirror/i DatabaseMirror db.fr.clamav.net" /etc/freshclam.conf
1348
	$SED "/^DatabaseMirror/i DatabaseMirror db.fr.clamav.net" /etc/freshclam.conf
1348
	$SED "/^DatabaseMirror db.fr.clamav.net/i DatabaseMirror switch.clamav.net" /etc/freshclam.conf
1349
	$SED "/^DatabaseMirror db.fr.clamav.net/i DatabaseMirror switch.clamav.net" /etc/freshclam.conf
1349
	$SED "s?MaxAttempts.*?MaxAttempts 3?g" /etc/freshclam.conf
1350
	$SED "s?MaxAttempts.*?MaxAttempts 3?g" /etc/freshclam.conf
1350
# update now
1351
# update now
1351
	/usr/bin/freshclam --no-warnings
1352
	/usr/bin/freshclam --no-warnings
1352
} # End of antivirus ()
1353
} # End of antivirus ()
1353
 
1354
 
1354
##########################################################################
1355
##########################################################################
1355
##			Fonction "tinyproxy"				##
1356
##			Fonction "tinyproxy"				##
1356
## - configuration of tinyproxy (proxy between filterde users and havp)	##
1357
## - configuration of tinyproxy (proxy between filterde users and havp)	##
1357
##########################################################################
1358
##########################################################################
1358
tinyproxy ()		
1359
tinyproxy ()		
1359
{
1360
{
1360
	tinyproxy_exist=`grep tinyproxy /etc/passwd|wc -l`
1361
	tinyproxy_exist=`grep tinyproxy /etc/passwd|wc -l`
1361
	if [ "$tinyproxy_exist" == "1" ]
1362
	if [ "$tinyproxy_exist" == "1" ]
1362
	then
1363
	then
1363
	      userdel -r tinyproxy 2>/dev/null
1364
	      userdel -r tinyproxy 2>/dev/null
1364
	      groupdel tinyproxy 2>/dev/null
1365
	      groupdel tinyproxy 2>/dev/null
1365
	fi
1366
	fi
1366
	groupadd -f tinyproxy
1367
	groupadd -f tinyproxy
1367
	useradd -r -g tinyproxy -s /bin/false -c "system user for tinyproxy" tinyproxy
1368
	useradd -r -g tinyproxy -s /bin/false -c "system user for tinyproxy" tinyproxy
1368
	mkdir -p /var/run/tinyproxy /var/log/tinyproxy
1369
	mkdir -p /var/run/tinyproxy /var/log/tinyproxy
1369
	chown -R tinyproxy.tinyproxy /var/run/tinyproxy /var/log/tinyproxy
1370
	chown -R tinyproxy.tinyproxy /var/run/tinyproxy /var/log/tinyproxy
1370
	[ -e /etc/tinyproxy/tinyproxy.conf.default ] || cp /etc/tinyproxy/tinyproxy.conf /etc/tinyproxy/tinyproxy.conf.default
1371
	[ -e /etc/tinyproxy/tinyproxy.conf.default ] || cp /etc/tinyproxy/tinyproxy.conf /etc/tinyproxy/tinyproxy.conf.default
1371
	$SED "s?^User.*?User tinyproxy?g" /etc/tinyproxy/tinyproxy.conf
1372
	$SED "s?^User.*?User tinyproxy?g" /etc/tinyproxy/tinyproxy.conf
1372
	$SED "s?^Group.*?Group tinyproxy?g" /etc/tinyproxy/tinyproxy.conf
1373
	$SED "s?^Group.*?Group tinyproxy?g" /etc/tinyproxy/tinyproxy.conf
1373
	$SED "s?^Port.*?Port 8090?g" /etc/tinyproxy/tinyproxy.conf			# Listen Port
1374
	$SED "s?^Port.*?Port 8090?g" /etc/tinyproxy/tinyproxy.conf			# Listen Port
1374
	$SED "s?^#Listen.*?Listen $PRIVATE_IP?g" /etc/tinyproxy/tinyproxy.conf		# Listen NIC (only intif)
1375
	$SED "s?^#Listen.*?Listen $PRIVATE_IP?g" /etc/tinyproxy/tinyproxy.conf		# Listen NIC (only intif)
1375
	$SED "s?^#LogFile.*?LogFile \"/var/log/tinyproxy/tinyproxy.log\"?g" /etc/tinyproxy/tinyproxy.conf
1376
	$SED "s?^#LogFile.*?LogFile \"/var/log/tinyproxy/tinyproxy.log\"?g" /etc/tinyproxy/tinyproxy.conf
1376
	$SED "s?^#PidFile.*?PidFile \"/var/run/tinyproxy/tinyproxy.pid\"?g" /etc/tinyproxy/tinyproxy.conf
1377
	$SED "s?^#PidFile.*?PidFile \"/var/run/tinyproxy/tinyproxy.pid\"?g" /etc/tinyproxy/tinyproxy.conf
1377
	$SED "s?^LogLevel.*?LogLevel Error?g" /etc/tinyproxy/tinyproxy.conf		# Only errors are logged
1378
	$SED "s?^LogLevel.*?LogLevel Error?g" /etc/tinyproxy/tinyproxy.conf		# Only errors are logged
1378
	$SED "s?^#Upstream.*?Upstream 127.0.0.1:8090?g" /etc/tinyproxy/tinyproxy.conf	# forward to HAVP
1379
	$SED "s?^#Upstream.*?Upstream 127.0.0.1:8090?g" /etc/tinyproxy/tinyproxy.conf	# forward to HAVP
1379
	$SED "s?^#DisableViaHeader.*?DisableViaHeader Yes?g" /etc/tinyproxy/tinyproxy.conf	# Stealth mode
1380
	$SED "s?^#DisableViaHeader.*?DisableViaHeader Yes?g" /etc/tinyproxy/tinyproxy.conf	# Stealth mode
1380
	$SED "s?^Allow.*?Allow $PRIVATE_NETWORK_MASK?g" /etc/tinyproxy/tinyproxy.conf	# Allow from LAN
1381
	$SED "s?^Allow.*?Allow $PRIVATE_NETWORK_MASK?g" /etc/tinyproxy/tinyproxy.conf	# Allow from LAN
1381
# Create the systemd unit
1382
# Create the systemd unit
1382
cat << EOF > /lib/systemd/system/tinyproxy.service
1383
cat << EOF > /lib/systemd/system/tinyproxy.service
1383
#  This file is part of systemd.
1384
#  This file is part of systemd.
1384
#
1385
#
1385
#  systemd is free software; you can redistribute it and/or modify it
1386
#  systemd is free software; you can redistribute it and/or modify it
1386
#  under the terms of the GNU General Public License as published by
1387
#  under the terms of the GNU General Public License as published by
1387
#  the Free Software Foundation; either version 2 of the License, or
1388
#  the Free Software Foundation; either version 2 of the License, or
1388
#  (at your option) any later version.
1389
#  (at your option) any later version.
1389
 
1390
 
1390
# This unit launches tinyproxy (a very light proxy).
1391
# This unit launches tinyproxy (a very light proxy).
1391
# The "sleep 2" is needed because the pid file isn't ready for systemd
1392
# The "sleep 2" is needed because the pid file isn't ready for systemd
1392
[Unit]
1393
[Unit]
1393
Description=Tinyproxy Web Proxy Server
1394
Description=Tinyproxy Web Proxy Server
1394
After=network.target iptables.service
1395
After=network.target iptables.service
1395
 
1396
 
1396
[Service]
1397
[Service]
1397
Type=forking
1398
Type=forking
1398
ExecStartPre=/bin/chown -R tinyproxy.tinyproxy /var/run/tinyproxy /var/log/tinyproxy
1399
ExecStartPre=/bin/chown -R tinyproxy.tinyproxy /var/run/tinyproxy /var/log/tinyproxy
1399
ExecStartPre=/bin/sleep 2
1400
ExecStartPre=/bin/sleep 2
1400
PIDFile=/var/run/tinyproxy/tinyproxy.pid
1401
PIDFile=/var/run/tinyproxy/tinyproxy.pid
1401
ExecStart=/usr/sbin/tinyproxy -c /etc/tinyproxy/tinyproxy.conf
1402
ExecStart=/usr/sbin/tinyproxy -c /etc/tinyproxy/tinyproxy.conf
1402
 
1403
 
1403
[Install]
1404
[Install]
1404
WantedBy=multi-user.target
1405
WantedBy=multi-user.target
1405
EOF
1406
EOF
1406
 
1407
 
1407
} # end of tinyproxy
1408
} # end of tinyproxy
1408
##################################################################################
1409
##################################################################################
1409
##			function "ulogd"					##
1410
##			function "ulogd"					##
1410
## - Ulog config for multi-log files 						##
1411
## - Ulog config for multi-log files 						##
1411
##################################################################################
1412
##################################################################################
1412
ulogd ()
1413
ulogd ()
1413
{
1414
{
1414
# Three instances of ulogd (three different logfiles)
1415
# Three instances of ulogd (three different logfiles)
1415
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
1416
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
1416
	nl=1
1417
	nl=1
1417
	for log_type in traceability ssh ext-access
1418
	for log_type in traceability ssh ext-access
1418
	do
1419
	do
1419
		[ -e /lib/systemd/system/ulogd-$log_type.service ] || cp -f /lib/systemd/system/ulogd.service /lib/systemd/system/ulogd-$log_type.service
1420
		[ -e /lib/systemd/system/ulogd-$log_type.service ] || cp -f /lib/systemd/system/ulogd.service /lib/systemd/system/ulogd-$log_type.service
1420
		[ -e /var/log/firewall/$log_type.log ] || echo "" > /var/log/firewall/$log_type.log
1421
		[ -e /var/log/firewall/$log_type.log ] || echo "" > /var/log/firewall/$log_type.log
1421
		cp -f $DIR_CONF/ulogd-sample.conf /etc/ulogd-$log_type.conf
1422
		cp -f $DIR_CONF/ulogd-sample.conf /etc/ulogd-$log_type.conf
1422
		$SED "s?^group=.*?group=$nl?g" /etc/ulogd-$log_type.conf
1423
		$SED "s?^group=.*?group=$nl?g" /etc/ulogd-$log_type.conf
1423
		cat << EOF >> /etc/ulogd-$log_type.conf
1424
		cat << EOF >> /etc/ulogd-$log_type.conf
1424
[emu1]
1425
[emu1]
1425
file="/var/log/firewall/$log_type.log"
1426
file="/var/log/firewall/$log_type.log"
1426
sync=1
1427
sync=1
1427
EOF
1428
EOF
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
1429
		$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
1429
		nl=`expr $nl + 1`
1430
		nl=`expr $nl + 1`
1430
	done
1431
	done
1431
	chown -R root:apache /var/log/firewall
1432
	chown -R root:apache /var/log/firewall
1432
	chmod 750 /var/log/firewall
1433
	chmod 750 /var/log/firewall
1433
	chmod 640 /var/log/firewall/*
1434
	chmod 640 /var/log/firewall/*
1434
}  # End of ulogd ()
1435
}  # End of ulogd ()
1435
 
1436
 
1436
 
1437
 
1437
##########################################################
1438
##########################################################
1438
##              Function "nfsen"			##
1439
##              Function "nfsen"			##
1439
## - install the nfsen grapher				##
1440
## - install the nfsen grapher				##
1440
## - install the two plugins porttracker & surfmap	##
1441
## - install the two plugins porttracker & surfmap	##
1441
##########################################################
1442
##########################################################
1442
nfsen()
1443
nfsen()
1443
{
1444
{
1444
	tar xzf ./conf/nfsen/nfsen-1.3.7.tar.gz -C /tmp/
1445
	tar xzf ./conf/nfsen/nfsen-1.3.7.tar.gz -C /tmp/
1445
# Add PortTracker plugin
1446
# Add PortTracker plugin
1446
	for i in /var/www/html/acc/manager/nfsen/plugins /var/log/netflow/porttracker /usr/share/nfsen/plugins
1447
	for i in /var/www/html/acc/manager/nfsen/plugins /var/log/netflow/porttracker /usr/share/nfsen/plugins
1447
	do
1448
	do
1448
	[ ! -d $i ] && mkdir -p $i && chown -R apache:apache $i
1449
	[ ! -d $i ] && mkdir -p $i && chown -R apache:apache $i
1449
	done
1450
	done
1450
	$SED "s?^my \$PORTSDBDIR =.*?my \$PORTSDBDIR = \"/var/log/netflow/porttracker\";?g" /tmp/nfsen-1.3.7/contrib/PortTracker/PortTracker.pm
1451
	$SED "s?^my \$PORTSDBDIR =.*?my \$PORTSDBDIR = \"/var/log/netflow/porttracker\";?g" /tmp/nfsen-1.3.7/contrib/PortTracker/PortTracker.pm
1451
# use of our conf file and init unit
1452
# use of our conf file and init unit
1452
	cp $DIR_CONF/nfsen/nfsen.conf /tmp/nfsen-1.3.7/etc/
1453
	cp $DIR_CONF/nfsen/nfsen.conf /tmp/nfsen-1.3.7/etc/
1453
# Installation of nfsen (we change a little 'install.pl in order not to ask the user for the perl version)
1454
# Installation of nfsen (we change a little 'install.pl in order not to ask the user for the perl version)
1454
	DirTmp=$(pwd)
1455
	DirTmp=$(pwd)
1455
	cd /tmp/nfsen-1.3.7/
1456
	cd /tmp/nfsen-1.3.7/
1456
	/usr/bin/perl install.pl etc/nfsen.conf
1457
	/usr/bin/perl install.pl etc/nfsen.conf
1457
	/usr/bin/perl install.pl etc/nfsen.conf # to avoid a Perl mistake "Semaphore introuvable"
1458
	/usr/bin/perl install.pl etc/nfsen.conf # to avoid a Perl mistake "Semaphore introuvable"
1458
# Create RRD DB for porttracker (only in it still doesn't exist)
1459
# Create RRD DB for porttracker (only in it still doesn't exist)
1459
	cp contrib/PortTracker/PortTracker.pm /usr/share/nfsen/plugins/
1460
	cp contrib/PortTracker/PortTracker.pm /usr/share/nfsen/plugins/
1460
	cp contrib/PortTracker/PortTracker.php /var/www/html/acc/manager/nfsen/plugins/
1461
	cp contrib/PortTracker/PortTracker.php /var/www/html/acc/manager/nfsen/plugins/
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
1462
	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
1462
	chmod -R 770 /var/log/netflow/porttracker
1463
	chmod -R 770 /var/log/netflow/porttracker
1463
# nfsen unit for systemd
1464
# nfsen unit for systemd
1464
cat << EOF > /lib/systemd/system/nfsen.service
1465
cat << EOF > /lib/systemd/system/nfsen.service
1465
#  This file is part of systemd.
1466
#  This file is part of systemd.
1466
#
1467
#
1467
#  systemd is free software; you can redistribute it and/or modify it
1468
#  systemd is free software; you can redistribute it and/or modify it
1468
#  under the terms of the GNU General Public License as published by
1469
#  under the terms of the GNU General Public License as published by
1469
#  the Free Software Foundation; either version 2 of the License, or
1470
#  the Free Software Foundation; either version 2 of the License, or
1470
#  (at your option) any later version.
1471
#  (at your option) any later version.
1471
 
1472
 
1472
# This unit launches nfsen (a Netflow grapher).
1473
# This unit launches nfsen (a Netflow grapher).
1473
[Unit]
1474
[Unit]
1474
Description= NfSen init script
1475
Description= NfSen init script
1475
After=network.target iptables.service
1476
After=network.target iptables.service
1476
 
1477
 
1477
[Service]
1478
[Service]
1478
Type=oneshot
1479
Type=oneshot
1479
RemainAfterExit=yes
1480
RemainAfterExit=yes
1480
PIDFile=/var/run/nfsen/nfsen.pid
1481
PIDFile=/var/run/nfsen/nfsen.pid
1481
ExecStartPre=/bin/mkdir -p /var/run/nfsen
1482
ExecStartPre=/bin/mkdir -p /var/run/nfsen
1482
ExecStartPre=/bin/chown apache:apache /var/run/nfsen
1483
ExecStartPre=/bin/chown apache:apache /var/run/nfsen
1483
ExecStart=/usr/bin/nfsen start 
1484
ExecStart=/usr/bin/nfsen start 
1484
ExecStop=/usr/bin/nfsen stop
1485
ExecStop=/usr/bin/nfsen stop
1485
ExecReload=/usr/bin/nfsen restart
1486
ExecReload=/usr/bin/nfsen restart
1486
TimeoutSec=0
1487
TimeoutSec=0
1487
 
1488
 
1488
[Install]
1489
[Install]
1489
WantedBy=multi-user.target
1490
WantedBy=multi-user.target
1490
EOF
1491
EOF
1491
# Add the listen port to collect netflow packet (nfcapd)
1492
# Add the listen port to collect netflow packet (nfcapd)
1492
$SED "s?'\$ziparg $extensions.*?\$ziparg $extensions -b 127.0.0.1;'?g" /usr/libexec/NfSenRC.pm 
1493
$SED "s?'\$ziparg $extensions.*?\$ziparg $extensions -b 127.0.0.1;'?g" /usr/libexec/NfSenRC.pm 
1493
# expire delay for the profile "live"
1494
# expire delay for the profile "live"
1494
	/usr/bin/systemctl start nfsen
1495
	/usr/bin/systemctl start nfsen
1495
	/bin/nfsen -m live -e 62d 2>/dev/null
1496
	/bin/nfsen -m live -e 62d 2>/dev/null
1496
# add SURFmap plugin
1497
# add SURFmap plugin
1497
	cp $DIR_CONF/nfsen/SURFmap_v3.3.1.tar.gz /tmp/
1498
	cp $DIR_CONF/nfsen/SURFmap_v3.3.1.tar.gz /tmp/
1498
	cp $DIR_CONF/nfsen/GeoLiteCity* /tmp/
1499
	cp $DIR_CONF/nfsen/GeoLiteCity* /tmp/
1499
	tar xzf /tmp/SURFmap_v3.3.1.tar.gz -C /tmp/
1500
	tar xzf /tmp/SURFmap_v3.3.1.tar.gz -C /tmp/
1500
	cd /tmp/
1501
	cd /tmp/
1501
	/usr/bin/sh SURFmap/install.sh
1502
	/usr/bin/sh SURFmap/install.sh
1502
chown -R apache:apache /var/www/html/acc/manager/nfsen /usr/share/nfsen
1503
chown -R apache:apache /var/www/html/acc/manager/nfsen /usr/share/nfsen
1503
# clear the installation
1504
# clear the installation
1504
	cd $DirTmp
1505
	cd $DirTmp
1505
	rm -rf /tmp/nfsen*
1506
	rm -rf /tmp/nfsen*
1506
	rm -rf /tmp/SURFmap*
1507
	rm -rf /tmp/SURFmap*
1507
} # End of nfsen ()
1508
} # End of nfsen ()
1508
 
1509
 
1509
##################################################
1510
##################################################
1510
##		Function "vnstat"		##
1511
##		Function "vnstat"		##
1511
## Initialization of Vnstat and vnstat phpFE    ##
1512
## Initialization of Vnstat and vnstat phpFE    ##
1512
##################################################
1513
##################################################
1513
vnstat ()
1514
vnstat ()
1514
{
1515
{
1515
	 [ -e /etc/vnstat.conf.default ] || cp /etc/vnstat.conf /etc/vnstat.conf.default
1516
	 [ -e /etc/vnstat.conf.default ] || cp /etc/vnstat.conf /etc/vnstat.conf.default
1516
	 $SED "s?Interface.*?Interface \"$EXTIF\"?g" /etc/vnstat.conf
1517
	 $SED "s?Interface.*?Interface \"$EXTIF\"?g" /etc/vnstat.conf
1517
	 [ -e $DIR_ACC/manager/stats/config.php.default ] || cp $DIR_ACC/manager/stats/config.php $DIR_ACC/manager/stats/config.php.default
1518
	 [ -e $DIR_ACC/manager/stats/config.php.default ] || cp $DIR_ACC/manager/stats/config.php $DIR_ACC/manager/stats/config.php.default
1518
	 $SED "s?\$iface_list =.*?\$iface_list = array('$EXTIF');?g" $DIR_ACC/manager/stats/config.php
1519
	 $SED "s?\$iface_list =.*?\$iface_list = array('$EXTIF');?g" $DIR_ACC/manager/stats/config.php
1519
	/usr/bin/vnstat -u -i $EXTIF
1520
	/usr/bin/vnstat -u -i $EXTIF
1520
} # End of vnstat	
1521
} # End of vnstat	
1521
##################################################
1522
##################################################
1522
##		Function "dnsmasq"		##
1523
##		Function "dnsmasq"		##
1523
##################################################
1524
##################################################
1524
dnsmasq ()
1525
dnsmasq ()
1525
{
1526
{
1526
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1527
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1527
	[ -e /etc/sysconfig/dnsmasq.default ] || cp /etc/sysconfig/dnsmasq /etc/sysconfig/dnsmasq.default
1528
	[ -e /etc/sysconfig/dnsmasq.default ] || cp /etc/sysconfig/dnsmasq /etc/sysconfig/dnsmasq.default
1528
#	$SED "s?^OPTION=.*?OPTION=-C /etc/dnsmasq.conf?g" /etc/sysconfig/dnsmasq # default conf file for the first dnsmasq instance
1529
#	$SED "s?^OPTION=.*?OPTION=-C /etc/dnsmasq.conf?g" /etc/sysconfig/dnsmasq # default conf file for the first dnsmasq instance
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
1530
	$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
1530
	$SED "s?^local=.*?local=/$DOMAIN/?g" $DIR_DEST_ETC/alcasar-dns-name # default domain name for all dnsmasq daemons
1531
	$SED "s?^local=.*?local=/$DOMAIN/?g" $DIR_DEST_ETC/alcasar-dns-name # default domain name for all dnsmasq daemons
1531
	[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1532
	[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1532
# 1st dnsmasq listen on udp 53 ("dnsmasq - forward"). It's used as dhcp server only if "alcasar-bypass" is on.
1533
# 1st dnsmasq listen on udp 53 ("dnsmasq - forward"). It's used as dhcp server only if "alcasar-bypass" is on.
1533
	cat << EOF > /etc/dnsmasq.conf
1534
	cat << EOF > /etc/dnsmasq.conf
1534
# Configuration file for "dnsmasq in forward mode"
1535
# Configuration file for "dnsmasq in forward mode"
1535
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1536
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1536
listen-address=$PRIVATE_IP
1537
listen-address=$PRIVATE_IP
1537
pid-file=/var/run/dnsmasq.pid
1538
pid-file=/var/run/dnsmasq.pid
1538
listen-address=127.0.0.1
1539
listen-address=127.0.0.1
1539
no-dhcp-interface=$INTIF
1540
no-dhcp-interface=$INTIF
1540
no-dhcp-interface=tun0
1541
no-dhcp-interface=tun0
1541
no-dhcp-interface=lo
1542
no-dhcp-interface=lo
1542
bind-interfaces
1543
bind-interfaces
1543
cache-size=2048
1544
cache-size=2048
1544
domain-needed
1545
domain-needed
1545
expand-hosts
1546
expand-hosts
1546
bogus-priv
1547
bogus-priv
1547
filterwin2k
1548
filterwin2k
1548
server=$DNS1
1549
server=$DNS1
1549
server=$DNS2
1550
server=$DNS2
1550
# DHCP service is configured. It will be enabled in "bypass" mode
1551
# DHCP service is configured. It will be enabled in "bypass" mode
1551
#dhcp-range=$PRIVATE_FIRST_IP,$PRIVATE_LAST_IP,$PRIVATE_NETMASK,12h
1552
#dhcp-range=$PRIVATE_FIRST_IP,$PRIVATE_LAST_IP,$PRIVATE_NETMASK,12h
1552
#dhcp-option=option:router,$PRIVATE_IP
1553
#dhcp-option=option:router,$PRIVATE_IP
1553
#dhcp-option=option:ntp-server,$PRIVATE_IP
1554
#dhcp-option=option:ntp-server,$PRIVATE_IP
1554
#domain=$DOMAIN
1555
#domain=$DOMAIN
1555
 
1556
 
1556
# Exemple of static dhcp assignation : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1557
# Exemple of static dhcp assignation : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1557
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1558
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1558
EOF
1559
EOF
1559
# 2nd dnsmasq listen on udp 54 ("dnsmasq with blacklist")
1560
# 2nd dnsmasq listen on udp 54 ("dnsmasq with blacklist")
1560
	cat << EOF > /etc/dnsmasq-blacklist.conf
1561
	cat << EOF > /etc/dnsmasq-blacklist.conf
1561
# Configuration file for "dnsmasq with blacklist"
1562
# Configuration file for "dnsmasq with blacklist"
1562
# Add Toulouse University blacklist domains
1563
# Add Toulouse University blacklist domains
1563
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1564
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1564
conf-dir=$DIR_DEST_SHARE/dnsmasq-bl-enabled
1565
conf-dir=$DIR_DEST_SHARE/dnsmasq-bl-enabled
1565
pid-file=/var/run/dnsmasq-blacklist.pid
1566
pid-file=/var/run/dnsmasq-blacklist.pid
1566
listen-address=$PRIVATE_IP
1567
listen-address=$PRIVATE_IP
1567
port=54
1568
port=54
1568
no-dhcp-interface=$INTIF
1569
no-dhcp-interface=$INTIF
1569
no-dhcp-interface=tun0
1570
no-dhcp-interface=tun0
1570
no-dhcp-interface=lo
1571
no-dhcp-interface=lo
1571
bind-interfaces
1572
bind-interfaces
1572
cache-size=2048
1573
cache-size=2048
1573
domain-needed
1574
domain-needed
1574
expand-hosts
1575
expand-hosts
1575
bogus-priv
1576
bogus-priv
1576
filterwin2k
1577
filterwin2k
1577
log-queries
1578
log-queries
1578
log-facility=/var/log/dnsmasq/dnsmasq-blacklist.log
1579
log-facility=/var/log/dnsmasq/dnsmasq-blacklist.log
1579
server=$DNS1
1580
server=$DNS1
1580
server=$DNS2
1581
server=$DNS2
1581
EOF
1582
EOF
1582
# 3rd dnsmasq listen on udp 55 ("dnsmasq with whitelist")
1583
# 3rd dnsmasq listen on udp 55 ("dnsmasq with whitelist")
1583
	cat << EOF > /etc/dnsmasq-whitelist.conf
1584
	cat << EOF > /etc/dnsmasq-whitelist.conf
1584
# Configuration file for "dnsmasq with whitelist"
1585
# Configuration file for "dnsmasq with whitelist"
1585
# ADD Toulouse university whitelist domains
1586
# ADD Toulouse university whitelist domains
1586
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1587
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1587
conf-dir=$DIR_DEST_SHARE/dnsmasq-wl-enabled
1588
conf-dir=$DIR_DEST_SHARE/dnsmasq-wl-enabled
1588
pid-file=/var/run/dnsmasq-whitelist.pid
1589
pid-file=/var/run/dnsmasq-whitelist.pid
1589
listen-address=$PRIVATE_IP
1590
listen-address=$PRIVATE_IP
1590
port=55
1591
port=55
1591
no-dhcp-interface=$INTIF
1592
no-dhcp-interface=$INTIF
1592
no-dhcp-interface=tun0
1593
no-dhcp-interface=tun0
1593
no-dhcp-interface=lo
1594
no-dhcp-interface=lo
1594
bind-interfaces
1595
bind-interfaces
1595
cache-size=1024
1596
cache-size=1024
1596
domain-needed
1597
domain-needed
1597
expand-hosts
1598
expand-hosts
1598
bogus-priv
1599
bogus-priv
1599
filterwin2k
1600
filterwin2k
1600
ipset=/#/wl_ip_allowed			# dynamicly add the resolv IP address in the Firewall rules
1601
ipset=/#/wl_ip_allowed			# dynamicly add the resolv IP address in the Firewall rules
1601
address=/#/$PRIVATE_IP				# for Domain name without local resolution (WL)  
1602
address=/#/$PRIVATE_IP				# for Domain name without local resolution (WL)  
1602
EOF
1603
EOF
1603
# 4th dnsmasq listen on udp 56 ("blackhole")
1604
# 4th dnsmasq listen on udp 56 ("blackhole")
1604
	cat << EOF > /etc/dnsmasq-blackhole.conf
1605
	cat << EOF > /etc/dnsmasq-blackhole.conf
1605
# Configuration file for "dnsmasq as a blackhole"
1606
# Configuration file for "dnsmasq as a blackhole"
1606
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1607
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# local DNS resolutions
1607
address=/#/$PRIVATE_IP				# redirect all on ALCASAR IP address
1608
address=/#/$PRIVATE_IP				# redirect all on ALCASAR IP address
1608
pid-file=/var/run/dnsmasq-blackhole.pid
1609
pid-file=/var/run/dnsmasq-blackhole.pid
1609
listen-address=$PRIVATE_IP
1610
listen-address=$PRIVATE_IP
1610
port=56
1611
port=56
1611
no-dhcp-interface=$INTIF
1612
no-dhcp-interface=$INTIF
1612
no-dhcp-interface=tun0
1613
no-dhcp-interface=tun0
1613
no-dhcp-interface=lo
1614
no-dhcp-interface=lo
1614
bind-interfaces
1615
bind-interfaces
1615
cache-size=256
1616
cache-size=256
1616
domain-needed
1617
domain-needed
1617
expand-hosts
1618
expand-hosts
1618
bogus-priv
1619
bogus-priv
1619
filterwin2k
1620
filterwin2k
1620
EOF
1621
EOF
1621
 
1622
 
1622
# the main instance should start after network and chilli (which create tun0)
1623
# the main instance should start after network and chilli (which create tun0)
1623
	[ -e /lib/systemd/system/dnsmasq.service.default ] || cp -f /lib/systemd/system/dnsmasq.service /lib/systemd/system/dnsmasq.service.default
1624
	[ -e /lib/systemd/system/dnsmasq.service.default ] || cp -f /lib/systemd/system/dnsmasq.service /lib/systemd/system/dnsmasq.service.default
1624
	$SED "s?^After=.*?After=syslog.target network-online.target chilli.service?g" /lib/systemd/system/dnsmasq.service
1625
	$SED "s?^After=.*?After=syslog.target network-online.target chilli.service?g" /lib/systemd/system/dnsmasq.service
1625
# Create dnsmasq-blacklist, dnsmasq-whitelist and dnsmasq-blackhole unit
1626
# Create dnsmasq-blacklist, dnsmasq-whitelist and dnsmasq-blackhole unit
1626
	for list in blacklist whitelist blackhole
1627
	for list in blacklist whitelist blackhole
1627
	do
1628
	do
1628
		cp -f /lib/systemd/system/dnsmasq.service /lib/systemd/system/dnsmasq-$list.service
1629
		cp -f /lib/systemd/system/dnsmasq.service /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
1630
		$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/dnsmasq -C /etc/dnsmasq-$list.conf?g" /lib/systemd/system/dnsmasq-$list.service
1630
		$SED "s?^PIDFile=.*?PIDFile=/var/run/dnsmasq-$list.pid?g" /lib/systemd/system/dnsmasq-$list.service
1631
		$SED "s?^PIDFile=.*?PIDFile=/var/run/dnsmasq-$list.pid?g" /lib/systemd/system/dnsmasq-$list.service
1631
	done
1632
	done
1632
} # End dnsmasq
1633
} # End dnsmasq
1633
 
1634
 
1634
##########################################################
1635
##########################################################
1635
##		Fonction "BL"				##
1636
##		Fonction "BL"				##
1636
##########################################################
1637
##########################################################
1637
BL ()
1638
BL ()
1638
{
1639
{
1639
	# copy the Toulouse university BL in order to be adapted to ALCASAR architecture (alcasar-bl.sh -adapt)
1640
	# copy the Toulouse university BL in order to be adapted to ALCASAR architecture (alcasar-bl.sh -adapt)
1640
	rm -rf $DIR_DG/lists/blacklists
1641
	rm -rf $DIR_DG/lists/blacklists
1641
	mkdir -p /tmp/blacklists
1642
	mkdir -p /tmp/blacklists
1642
	cp $DIR_BLACKLIST/blacklists.tar.gz /tmp/blacklists/
1643
	cp $DIR_BLACKLIST/blacklists.tar.gz /tmp/blacklists/
1643
# creation of file for the rehabilited domains and urls
1644
# creation of file for the rehabilited domains and urls
1644
	[ -e $DIR_DG/lists/exceptionsitelist.default ] || mv $DIR_DG/lists/exceptionsitelist $DIR_DG/lists/exceptionsitelist.default
1645
	[ -e $DIR_DG/lists/exceptionsitelist.default ] || mv $DIR_DG/lists/exceptionsitelist $DIR_DG/lists/exceptionsitelist.default
1645
	[ -e $DIR_DG/lists/exceptionurllist.default ] || mv $DIR_DG/lists/exceptionurllist $DIR_DG/lists/exceptionurllist.default
1646
	[ -e $DIR_DG/lists/exceptionurllist.default ] || mv $DIR_DG/lists/exceptionurllist $DIR_DG/lists/exceptionurllist.default
1646
	touch $DIR_DG/lists/exceptionsitelist
1647
	touch $DIR_DG/lists/exceptionsitelist
1647
	touch $DIR_DG/lists/exceptionurllist
1648
	touch $DIR_DG/lists/exceptionurllist
1648
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1649
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1649
	cat <<EOF > $DIR_DG/lists/bannedurllist
1650
	cat <<EOF > $DIR_DG/lists/bannedurllist
1650
# Dansguardian filter config for ALCASAR
1651
# Dansguardian filter config for ALCASAR
1651
EOF
1652
EOF
1652
	cat <<EOF > $DIR_DG/lists/bannedsitelist
1653
	cat <<EOF > $DIR_DG/lists/bannedsitelist
1653
# Dansguardian domain filter config for ALCASAR
1654
# Dansguardian domain filter config for ALCASAR
1654
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1655
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1655
#**
1656
#**
1656
# block all SSL and CONNECT tunnels
1657
# block all SSL and CONNECT tunnels
1657
**s
1658
**s
1658
# block all SSL and CONNECT tunnels specified only as an IP
1659
# block all SSL and CONNECT tunnels specified only as an IP
1659
*ips
1660
*ips
1660
# block all sites specified only by an IP
1661
# block all sites specified only by an IP
1661
*ip
1662
*ip
1662
EOF
1663
EOF
1663
# Add Bing to the safesearch url regext list (parental control)
1664
# Add Bing to the safesearch url regext list (parental control)
1664
	cat <<EOF >> $DIR_DG/lists/urlregexplist
1665
	cat <<EOF >> $DIR_DG/lists/urlregexplist
1665
# Bing - add 'adlt=strict'
1666
# Bing - add 'adlt=strict'
1666
#"(^http://[0-9a-z]+\.bing\.[a-z]+[-/%.0-9a-z]*\?)(.*)"->"\1\2&adlt=strict"
1667
#"(^http://[0-9a-z]+\.bing\.[a-z]+[-/%.0-9a-z]*\?)(.*)"->"\1\2&adlt=strict"
1667
EOF
1668
EOF
1668
# change the google safesearch ("safe=strict" instead of "safe=vss")
1669
# change the google safesearch ("safe=strict" instead of "safe=vss")
1669
	$SED "s?safe=vss?safe=strict?g" $DIR_DG/lists/urlregexplist
1670
	$SED "s?safe=vss?safe=strict?g" $DIR_DG/lists/urlregexplist
1670
# creation of the custom BL and WL categorie named "ossi" (for domain names & ip only)
1671
# creation of the custom BL and WL categorie named "ossi" (for domain names & ip only)
1671
	mkdir -p $DIR_DG/lists/blacklists/ossi-bl
1672
	mkdir -p $DIR_DG/lists/blacklists/ossi-bl
1672
	touch $DIR_DG/lists/blacklists/ossi-bl/domains
1673
	touch $DIR_DG/lists/blacklists/ossi-bl/domains
1673
	echo "ossi-bl" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1674
	echo "ossi-bl" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1674
	mkdir -p $DIR_DG/lists/blacklists/ossi-wl
1675
	mkdir -p $DIR_DG/lists/blacklists/ossi-wl
1675
	touch $DIR_DG/lists/blacklists/ossi-wl/domains
1676
	touch $DIR_DG/lists/blacklists/ossi-wl/domains
1676
	echo "ossi-wl" >> $DIR_DEST_ETC/alcasar-wl-categories-enabled
1677
	echo "ossi-wl" >> $DIR_DEST_ETC/alcasar-wl-categories-enabled
1677
# add custom ALCASAR BL files
1678
# add custom ALCASAR BL files
1678
	for x in $(ls $DIR_BLACKLIST | grep -v "^blacklist")
1679
	for x in $(ls $DIR_BLACKLIST | grep -v "^blacklist")
1679
	do
1680
	do
1680
		mkdir $DIR_DG/lists/blacklists/ossi-bl-$x
1681
		mkdir $DIR_DG/lists/blacklists/ossi-bl-$x
1681
		cp $DIR_BLACKLIST/$x  $DIR_DG/lists/blacklists/ossi-bl-$x/domains
1682
		cp $DIR_BLACKLIST/$x  $DIR_DG/lists/blacklists/ossi-bl-$x/domains
1682
		echo "ossi-bl-$x" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1683
		echo "ossi-bl-$x" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1683
	done
1684
	done
1684
	chown -R dansguardian:apache $DIR_DG
1685
	chown -R dansguardian:apache $DIR_DG
1685
	chown -R root:apache $DIR_DEST_SHARE
1686
	chown -R root:apache $DIR_DEST_SHARE
1686
	chmod -R g+rw $DIR_DG $DIR_DEST_SHARE
1687
	chmod -R g+rw $DIR_DG $DIR_DEST_SHARE
1687
# adapt the Toulouse BL to ALCASAR architecture
1688
# adapt the Toulouse BL to ALCASAR architecture
1688
	$DIR_DEST_BIN/alcasar-bl.sh --adapt
1689
	$DIR_DEST_BIN/alcasar-bl.sh --adapt
1689
# enable the default categories
1690
# enable the default categories
1690
	$DIR_DEST_BIN/alcasar-bl.sh --cat_choice
1691
	$DIR_DEST_BIN/alcasar-bl.sh --cat_choice
1691
}
1692
}
1692
 
1693
 
1693
##########################################################
1694
##########################################################
1694
##		Fonction "cron"				##
1695
##		Fonction "cron"				##
1695
## - Mise en place des différents fichiers de cron	##
1696
## - Mise en place des différents fichiers de cron	##
1696
##########################################################
1697
##########################################################
1697
cron ()
1698
cron ()
1698
{
1699
{
1699
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1700
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1700
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1701
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1701
	cat <<EOF > /etc/crontab
1702
	cat <<EOF > /etc/crontab
1702
SHELL=/usr/bin/bash
1703
SHELL=/usr/bin/bash
1703
PATH=/usr/sbin:/usr/bin
1704
PATH=/usr/sbin:/usr/bin
1704
MAILTO=root
1705
MAILTO=root
1705
HOME=/
1706
HOME=/
1706
 
1707
 
1707
# run-parts
1708
# run-parts
1708
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1709
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1709
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1710
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1710
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1711
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1711
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1712
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1712
EOF
1713
EOF
1713
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1714
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1714
	cat <<EOF >> /etc/anacrontab
1715
	cat <<EOF >> /etc/anacrontab
1715
7       8       cron.MysqlDump          nice /etc/cron.d/alcasar-mysql
1716
7       8       cron.MysqlDump          nice /etc/cron.d/alcasar-mysql
1716
7       10      cron.logExport          nice /etc/cron.d/alcasar-archive
1717
7       10      cron.logExport          nice /etc/cron.d/alcasar-archive
1717
7	20	cron.importClean	nice /etc/cron.d/alcasar-clean_import
1718
7	20	cron.importClean	nice /etc/cron.d/alcasar-clean_import
1718
EOF
1719
EOF
1719
 
1720
 
1720
	cat <<EOF > /etc/cron.d/alcasar-mysql
1721
	cat <<EOF > /etc/cron.d/alcasar-mysql
1721
# Contrôle, réparation et export de la base des usagers (tous les lundi à 4h45)
1722
# Contrôle, réparation et export de la base des usagers (tous les lundi à 4h45)
1722
45 4 * * 1 root $DIR_DEST_BIN/alcasar-mysql.sh --dump
1723
45 4 * * 1 root $DIR_DEST_BIN/alcasar-mysql.sh --dump
1723
# Nettoyage des utilisateurs dont la date d'expiration du compte est supérieure à 7 jours
1724
# Nettoyage des utilisateurs dont la date d'expiration du compte est supérieure à 7 jours
1724
40 4 * * * root $DIR_DEST_BIN/alcasar-mysql.sh --expire_user 2>&1 >/dev/null
1725
40 4 * * * root $DIR_DEST_BIN/alcasar-mysql.sh --expire_user 2>&1 >/dev/null
1725
EOF
1726
EOF
1726
	cat <<EOF > /etc/cron.d/alcasar-archive
1727
	cat <<EOF > /etc/cron.d/alcasar-archive
1727
# Archive des logs et de la base de données (tous les lundi à 5h35)
1728
# Archive des logs et de la base de données (tous les lundi à 5h35)
1728
35 5 * * 1 root $DIR_DEST_BIN/alcasar-archive.sh --now
1729
35 5 * * 1 root $DIR_DEST_BIN/alcasar-archive.sh --now
1729
EOF
1730
EOF
1730
	cat << EOF > /etc/cron.d/alcasar-ticket-clean
1731
	cat << EOF > /etc/cron.d/alcasar-ticket-clean
1731
# suppression des fichiers de mots de passe (imports massifs par fichier) et des ticket PDF d'utilisateur
1732
# suppression des fichiers de mots de passe (imports massifs par fichier) et des ticket PDF d'utilisateur
1732
30 * * * *  root $DIR_DEST_BIN/alcasar-ticket-clean.sh
1733
30 * * * *  root $DIR_DEST_BIN/alcasar-ticket-clean.sh
1733
EOF
1734
EOF
1734
	cat << EOF > /etc/cron.d/alcasar-distrib-updates
1735
	cat << EOF > /etc/cron.d/alcasar-distrib-updates
1735
# mise à jour automatique de la distribution tous les jours 3h30
1736
# mise à jour automatique de la distribution tous les jours 3h30
1736
30 3 * * *  root /usr/sbin/urpmi --auto-update --auto 2>&1
1737
30 3 * * *  root /usr/sbin/urpmi --auto-update --auto 2>&1
1737
EOF
1738
EOF
1738
 
1739
 
1739
	cat << EOF > /etc/cron.d/alcasar-connections-stats
1740
	cat << EOF > /etc/cron.d/alcasar-connections-stats
1740
# Connection stats update (accounting). These Perl scripts are from "dialup_admin" (cf. wiki.freeradius.org/Dialup_admin).
1741
# Connection stats update (accounting). These Perl scripts are from "dialup_admin" (cf. wiki.freeradius.org/Dialup_admin).
1741
# 'alcasar-tot_stats' (everyday at 01h01 pm) : aggregating the daily connections of users (write in the table 'totacct')
1742
# 'alcasar-tot_stats' (everyday at 01h01 pm) : aggregating the daily connections of users (write in the table 'totacct')
1742
# 'alcasar-monthly_tot_stat' (everyday at 01h05 pm) : aggregating the monthly connections of users (write in table 'mtotacct')
1743
# 'alcasar-monthly_tot_stat' (everyday at 01h05 pm) : aggregating the monthly connections of users (write in table 'mtotacct')
1743
# 'alcasar-truncate_raddact' (every month, the first at 01h10 pm) : removing the log sessions of users older than 365 days
1744
# 'alcasar-truncate_raddact' (every month, the first at 01h10 pm) : removing the log sessions of users older than 365 days
1744
# 'alcasar-clean_radacct' (every month, the first at 01h15 pm) : closing the sessions openned for more than 30 days
1745
# 'alcasar-clean_radacct' (every month, the first at 01h15 pm) : closing the sessions openned for more than 30 days
1745
# 'alcasar-activity_report.sh' (every sunday at 5h35 pm) : generate an activity report in PDF
1746
# 'alcasar-activity_report.sh' (every sunday at 5h35 pm) : generate an activity report in PDF
1746
1 1 * * * root $DIR_DEST_BIN/alcasar-tot_stats > /dev/null 2>&1
1747
1 1 * * * root $DIR_DEST_BIN/alcasar-tot_stats > /dev/null 2>&1
1747
5 1 * * * root $DIR_DEST_BIN/alcasar-monthly_tot_stats > /dev/null 2>&1
1748
5 1 * * * root $DIR_DEST_BIN/alcasar-monthly_tot_stats > /dev/null 2>&1
1748
10 1 1 * * root $DIR_DEST_BIN/alcasar-truncate_radacct > /dev/null 2>&1
1749
10 1 1 * * root $DIR_DEST_BIN/alcasar-truncate_radacct > /dev/null 2>&1
1749
15 1 1 * * root $DIR_DEST_BIN/alcasar-clean_radacct > /dev/null 2>&1
1750
15 1 1 * * root $DIR_DEST_BIN/alcasar-clean_radacct > /dev/null 2>&1
1750
35 5 * * 0 root $DIR_DEST_BIN/alcasar-activity_report.sh > /dev/null 2>&1
1751
35 5 * * 0 root $DIR_DEST_BIN/alcasar-activity_report.sh > /dev/null 2>&1
1751
EOF
1752
EOF
1752
	cat << EOF > /etc/cron.d/alcasar-watchdog
1753
	cat << EOF > /etc/cron.d/alcasar-watchdog
1753
# run the "watchdog" every 3'
1754
# run the "watchdog" every 3'
1754
# empty the IPSET of the whitelisted IP (loaded dynamically with dnsmasq-whitelist) when every whitelisted users are logged out (every sunday at 0h05
1755
# empty the IPSET of the whitelisted IP (loaded dynamically with dnsmasq-whitelist) when every whitelisted users are logged out (every sunday at 0h05
1755
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1756
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1756
0 5 * * 0 root $DIR_DEST_BIN/alcasar-flush_ipset_wl.sh > /dev/null 2>&1
1757
0 5 * * 0 root $DIR_DEST_BIN/alcasar-flush_ipset_wl.sh > /dev/null 2>&1
1757
#* * * * * root $DIR_DEST_BIN/alcasar-watchdog-hl.sh > /dev/null 2>&1
1758
#* * * * * root $DIR_DEST_BIN/alcasar-watchdog-hl.sh > /dev/null 2>&1
1758
EOF
1759
EOF
1759
# Enabling the watchdog every 18'
1760
# Enabling the watchdog every 18'
1760
	cat << EOF > /etc/cron.d/alcasar-daemon-watchdog
1761
	cat << EOF > /etc/cron.d/alcasar-daemon-watchdog
1761
# activate  the daemon-watchdog after boot process
1762
# activate  the daemon-watchdog after boot process
1762
@reboot root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1763
@reboot root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1763
# activate the daemon-watchdog every 18'
1764
# activate the daemon-watchdog every 18'
1764
*/18 * * * * root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1765
*/18 * * * * root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1765
EOF
1766
EOF
1766
 
1767
 
1767
# Enabling category update from rsync
1768
# Enabling category update from rsync
1768
	cat << EOF > /etc/cron.d/alcasar-rsync-bl
1769
	cat << EOF > /etc/cron.d/alcasar-rsync-bl
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). 
1770
# 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). 
1770
0 */12 * * * root $DIR_DEST_BIN/alcasar-bl.sh --update_cat > /dev/null 2>&1
1771
0 */12 * * * root $DIR_DEST_BIN/alcasar-bl.sh --update_cat > /dev/null 2>&1
1771
EOF
1772
EOF
1772
 
1773
 
1773
# removing the users crons
1774
# removing the users crons
1774
	rm -f /var/spool/cron/*
1775
	rm -f /var/spool/cron/*
1775
} # End cron
1776
} # End cron
1776
 
1777
 
1777
##################################################################
1778
##################################################################
1778
## 			Fonction "Fail2Ban"			##
1779
## 			Fonction "Fail2Ban"			##
1779
##- Modification de la configuration de fail2ban		##
1780
##- Modification de la configuration de fail2ban		##
1780
##- Sécurisation DDOS, SSH-Brute-Force, Intercept.php ...	##
1781
##- Sécurisation DDOS, SSH-Brute-Force, Intercept.php ...	##
1781
##################################################################
1782
##################################################################
1782
fail2ban()
1783
fail2ban()
1783
{
1784
{
1784
	/usr/bin/sh $DIR_CONF/fail2ban.sh
1785
	/usr/bin/sh $DIR_CONF/fail2ban.sh
1785
# Autorise la lecture seule 2 des 3 fichiers de log concernés, havp est traité dans le script d'init de havp
1786
# Autorise la lecture seule 2 des 3 fichiers de log concernés, havp est traité dans le script d'init de havp
1786
	[ -e /var/log/fail2ban.log ] || touch /var/log/fail2ban.log
1787
	[ -e /var/log/fail2ban.log ] || touch /var/log/fail2ban.log
1787
	[ -e /var/Save/security/watchdog.log ] || touch /var/Save/security/watchdog.log
1788
	[ -e /var/Save/security/watchdog.log ] || touch /var/Save/security/watchdog.log
1788
	chmod 644 /var/log/fail2ban.log
1789
	chmod 644 /var/log/fail2ban.log
1789
	chmod 644 /var/Save/security/watchdog.log
1790
	chmod 644 /var/Save/security/watchdog.log
1790
	/usr/bin/touch /var/log/auth.log
1791
	/usr/bin/touch /var/log/auth.log
1791
# fail2ban unit
1792
# fail2ban unit
1792
[ -e /lib/systemd/system/fail2ban.service.default ] || cp /lib/systemd/system/fail2ban.service /lib/systemd/system/fail2ban.service.default
1793
[ -e /lib/systemd/system/fail2ban.service.default ] || cp /lib/systemd/system/fail2ban.service /lib/systemd/system/fail2ban.service.default
1793
$SED '/ExecStart=/a\ExecStop=/usr/bin/fail2ban-client stop' /usr/lib/systemd/system/fail2ban.service
1794
$SED '/ExecStart=/a\ExecStop=/usr/bin/fail2ban-client stop' /usr/lib/systemd/system/fail2ban.service
1794
$SED '/Type=/a\PIDFile=/var/run/fail2ban/fail2ban.pid' /usr/lib/systemd/system/fail2ban.service
1795
$SED '/Type=/a\PIDFile=/var/run/fail2ban/fail2ban.pid' /usr/lib/systemd/system/fail2ban.service
1795
$SED '/After=*/c After=syslog.target network.target httpd.service' /usr/lib/systemd/system/fail2ban.service
1796
$SED '/After=*/c After=syslog.target network.target httpd.service' /usr/lib/systemd/system/fail2ban.service
1796
} #Fin de fail2ban_install()
1797
} #Fin de fail2ban_install()
1797
 
1798
 
1798
##################################################################
1799
##################################################################
1799
## 			Fonction "gammu_smsd"			##
1800
## 			Fonction "gammu_smsd"			##
1800
## - Creation de la base de donnée Gammu			##
1801
## - Creation de la base de donnée Gammu			##
1801
## - Creation du fichier de config: gammu_smsd_conf		##
1802
## - Creation du fichier de config: gammu_smsd_conf		##
1802
##################################################################
1803
##################################################################
1803
gammu_smsd()
1804
gammu_smsd()
1804
{
1805
{
1805
# Create 'gammu' databse
1806
# Create 'gammu' databse
1806
MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
1807
MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
1807
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_GAMMU;GRANT ALL ON $DB_GAMMU.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
1808
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_GAMMU;GRANT ALL ON $DB_GAMMU.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
1808
# Add a gammu database structure
1809
# Add a gammu database structure
1809
	mysql -u$DB_USER -p$radiuspwd $DB_GAMMU < $DIR_CONF/empty-gammu-smsd-db.sql
1810
	mysql -u$DB_USER -p$radiuspwd $DB_GAMMU < $DIR_CONF/empty-gammu-smsd-db.sql
1810
 
1811
 
1811
# config file for the daemon
1812
# config file for the daemon
1812
cat << EOF > /etc/gammu_smsd_conf
1813
cat << EOF > /etc/gammu_smsd_conf
1813
[gammu]
1814
[gammu]
1814
port = /dev/ttyUSB0
1815
port = /dev/ttyUSB0
1815
connection = at115200
1816
connection = at115200
1816
 
1817
 
1817
;########################################################
1818
;########################################################
1818
 
1819
 
1819
[smsd]
1820
[smsd]
1820
 
1821
 
1821
PIN = 1234
1822
PIN = 1234
1822
 
1823
 
1823
logfile = /var/log/gammu-smsd/gammu-smsd.log
1824
logfile = /var/log/gammu-smsd/gammu-smsd.log
1824
logformat = textall
1825
logformat = textall
1825
debuglevel = 0
1826
debuglevel = 0
1826
 
1827
 
1827
service = sql
1828
service = sql
1828
driver = native_mysql
1829
driver = native_mysql
1829
user = $DB_USER
1830
user = $DB_USER
1830
password = $radiuspwd
1831
password = $radiuspwd
1831
pc = localhost
1832
pc = localhost
1832
database = $DB_GAMMU
1833
database = $DB_GAMMU
1833
 
1834
 
1834
RunOnReceive = $DIR_DEST_BIN/alcasar-sms.sh --new_sms
1835
RunOnReceive = $DIR_DEST_BIN/alcasar-sms.sh --new_sms
1835
 
1836
 
1836
StatusFrequency = 30
1837
StatusFrequency = 30
1837
;LoopSleep = 2
1838
;LoopSleep = 2
1838
 
1839
 
1839
;ResetFrequency = 300
1840
;ResetFrequency = 300
1840
;HardResetFrequency = 120
1841
;HardResetFrequency = 120
1841
 
1842
 
1842
CheckSecurity = 1 
1843
CheckSecurity = 1 
1843
CheckSignal = 1
1844
CheckSignal = 1
1844
CheckBattery = 0
1845
CheckBattery = 0
1845
EOF
1846
EOF
1846
 
1847
 
1847
chmod 755 /etc/gammu_smsd_conf
1848
chmod 755 /etc/gammu_smsd_conf
1848
 
1849
 
1849
#Creation dossier de log Gammu-smsd
1850
#Creation dossier de log Gammu-smsd
1850
[ -e /var/log/gammu-smsd ] || mkdir /var/log/gammu-smsd
1851
[ -e /var/log/gammu-smsd ] || mkdir /var/log/gammu-smsd
1851
chmod 755 /var/log/gammu-smsd
1852
chmod 755 /var/log/gammu-smsd
1852
 
1853
 
1853
#Edition du script sql gammu <-> radius
1854
#Edition du script sql gammu <-> radius
1854
$SED "s/^u_db=\".*/u_db=\"$DB_USER\"/g" $DIR_DEST_BIN/alcasar-sms.sh
1855
$SED "s/^u_db=\".*/u_db=\"$DB_USER\"/g" $DIR_DEST_BIN/alcasar-sms.sh
1855
$SED "s/^p_db=\".*/p_db=\"$radiuspwd\"/g" $DIR_DEST_BIN/alcasar-sms.sh
1856
$SED "s/^p_db=\".*/p_db=\"$radiuspwd\"/g" $DIR_DEST_BIN/alcasar-sms.sh
1856
 
1857
 
1857
#Création de la règle udev pour les Huawei // idVendor: 12d1
1858
#Création de la règle udev pour les Huawei // idVendor: 12d1
1858
cat << EOF > /etc/udev/rules.d/66-huawei.rules
1859
cat << EOF > /etc/udev/rules.d/66-huawei.rules
1859
KERNEL=="ttyUSB0",ATTRS{idVendor}=="12d1",RUN+="$DIR_DEST_BIN/alcasar-sms.sh --mode"
1860
KERNEL=="ttyUSB0",ATTRS{idVendor}=="12d1",RUN+="$DIR_DEST_BIN/alcasar-sms.sh --mode"
1860
EOF
1861
EOF
1861
 
1862
 
1862
} # END gammu_smsd()
1863
} # END gammu_smsd()
1863
 
1864
 
1864
 
1865
 
1865
##################################################################
1866
##################################################################
1866
##			Fonction "msec"				##
1867
##			Fonction "msec"				##
1867
## - Apply the "fileserver" security level			##
1868
## - Apply the "fileserver" security level			##
1868
## - remove the "system request" for rebboting			##
1869
## - remove the "system request" for rebboting			##
1869
## - Fix several file permissions				##
1870
## - Fix several file permissions				##
1870
##################################################################
1871
##################################################################
1871
msec()
1872
msec()
1872
{
1873
{
1873
 
1874
 
1874
# Apply fileserver security level
1875
# Apply fileserver security level
1875
[ -e /etc/security/msec/security.conf.default ] || cp /etc/security/msec/security.conf /etc/security/msec/security.conf.default
1876
[ -e /etc/security/msec/security.conf.default ] || cp /etc/security/msec/security.conf /etc/security/msec/security.conf.default
1876
echo "BASE_LEVEL=fileserver" > /etc/security/msec/security.conf
1877
echo "BASE_LEVEL=fileserver" > /etc/security/msec/security.conf
1877
 
1878
 
1878
# Set permissions monitoring and enforcement
1879
# Set permissions monitoring and enforcement
1879
cat <<EOF > /etc/security/msec/perm.local
1880
cat <<EOF > /etc/security/msec/perm.local
1880
/var/log/firefwall/                     root.apache     750
1881
/var/log/firefwall/                     root.apache     750
1881
/var/log/firewall/*                     root.apache     640
1882
/var/log/firewall/*                     root.apache     640
1882
/etc/security/msec/perm.local           root.root       640
1883
/etc/security/msec/perm.local           root.root       640
1883
/etc/security/msec/level.local          root.root       640
1884
/etc/security/msec/level.local          root.root       640
1884
/etc/freeradius-web                     root.apache     750
1885
/etc/freeradius-web                     root.apache     750
1885
/etc/freeradius-web/admin.conf          root.apache     640
1886
/etc/freeradius-web/admin.conf          root.apache     640
1886
/etc/raddb/dictionnary                  root.apache     640
1887
/etc/raddb/dictionnary                  root.apache     640
1887
/etc/raddb/ldap.attrmap                 root.radius     640
1888
/etc/raddb/ldap.attrmap                 root.radius     640
1888
/etc/raddb/hints                        root.radius     640
1889
/etc/raddb/hints                        root.radius     640
1889
/etc/raddb/huntgroups                   root.radius     640
1890
/etc/raddb/huntgroups                   root.radius     640
1890
/etc/raddb/attrs.access_reject          root.radius     640
1891
/etc/raddb/attrs.access_reject          root.radius     640
1891
/etc/raddb/attrs.accounting_response    root.radius     640
1892
/etc/raddb/attrs.accounting_response    root.radius     640
1892
/etc/raddb/acct_users                   root.radius     640
1893
/etc/raddb/acct_users                   root.radius     640
1893
/etc/raddb/preproxy_users               root.radius     640
1894
/etc/raddb/preproxy_users               root.radius     640
1894
/etc/raddb/modules/ldap                 radius.apache   660
1895
/etc/raddb/modules/ldap                 radius.apache   660
1895
/etc/raddb/sites-available/alcasar      radius.apache   660
1896
/etc/raddb/sites-available/alcasar      radius.apache   660
1896
/etc/pki/*                              root.apache     750
1897
/etc/pki/*                              root.apache     750
1897
/var/log/netflow/porttracker            root.apache     770
1898
/var/log/netflow/porttracker            root.apache     770
1898
/var/log/netflow/porttracker/*          root.apache     660
1899
/var/log/netflow/porttracker/*          root.apache     660
1899
EOF
1900
EOF
1900
# apply now hourly & daily checks 
1901
# apply now hourly & daily checks 
1901
/usr/sbin/msec
1902
/usr/sbin/msec
1902
/etc/cron.weekly/msec
1903
/etc/cron.weekly/msec
1903
 
1904
 
1904
} # END msec()
1905
} # END msec()
1905
 
1906
 
1906
##################################################################
1907
##################################################################
1907
##		Fonction "post_install"			##
1908
##		Fonction "post_install"			##
1908
## - Modifying banners (locals et ssh) & prompts	##
1909
## - Modifying banners (locals et ssh) & prompts	##
1909
## - SSH config						##
1910
## - SSH config						##
1910
## - sudoers config & files security			##
1911
## - sudoers config & files security			##
1911
## - log rotate & ANSSI security parameters		##
1912
## - log rotate & ANSSI security parameters		##
1912
## - Apply former conf in case of an update		##
1913
## - Apply former conf in case of an update		##
1913
##########################################################
1914
##########################################################
1914
post_install()
1915
post_install()
1915
{
1916
{
1916
# change the SSH banner
1917
# change the SSH banner
1917
	cp -f $DIR_CONF/banner /etc/ssh/alcasar-banner-ssh
1918
	cp -f $DIR_CONF/banner /etc/ssh/alcasar-banner-ssh
1918
	echo " V$VERSION" >> /etc/ssh/alcasar-banner-ssh
1919
	echo " V$VERSION" >> /etc/ssh/alcasar-banner-ssh
1919
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1920
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1920
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1921
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1921
	$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
1922
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1923
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1923
# postfix banner anonymisation
1924
# postfix banner anonymisation
1924
	$SED "s?^smtpd_banner =.*?smtpd_banner = $myhostname ESMTP?g" /etc/postfix/main.cf
1925
	$SED "s?^smtpd_banner =.*?smtpd_banner = $myhostname ESMTP?g" /etc/postfix/main.cf
1925
	chown -R postfix:postfix /var/lib/postfix
1926
	chown -R postfix:postfix /var/lib/postfix
1926
# sshd liste on EXTIF & INTIF
1927
# sshd liste on EXTIF & INTIF
1927
	$SED "s?^#ListenAddress 0\.0\.0\.0.*?ListenAddress 0\.0\.0\.0?g" /etc/ssh/sshd_config
1928
	$SED "s?^#ListenAddress 0\.0\.0\.0.*?ListenAddress 0\.0\.0\.0?g" /etc/ssh/sshd_config
1928
# sshd authorized certificate for root login
1929
# sshd authorized certificate for root login
1929
	$SED "s?^PermitRootLogin.*?PermitRootLogin without-password?g" /etc/ssh/sshd_config
1930
	$SED "s?^PermitRootLogin.*?PermitRootLogin without-password?g" /etc/ssh/sshd_config
1930
# ALCASAR conf file
1931
# ALCASAR conf file
1931
	echo "SSH=on" >> $CONF_FILE
1932
	echo "SSH=on" >> $CONF_FILE
1932
	echo "SSH_ADMIN_FROM=0.0.0.0/0.0.0.0" >> $CONF_FILE
1933
	echo "SSH_ADMIN_FROM=0.0.0.0/0.0.0.0" >> $CONF_FILE
1933
	echo "LDAP=off" >> $CONF_FILE
1934
	echo "LDAP=off" >> $CONF_FILE
1934
	echo "LDAP_IP=0.0.0.0/0.0.0.0" >> $CONF_FILE
1935
	echo "LDAP_IP=0.0.0.0/0.0.0.0" >> $CONF_FILE
1935
	echo "MULTIWAN=off" >> $CONF_FILE
1936
	echo "MULTIWAN=off" >> $CONF_FILE
1936
	echo "FAILOVER=30" >> $CONF_FILE
1937
	echo "FAILOVER=30" >> $CONF_FILE
1937
	echo "## WANx=active,@IPx/mask,GWx,Weight,MTUx" >> $CONF_FILE
1938
	echo "## WANx=active,@IPx/mask,GWx,Weight,MTUx" >> $CONF_FILE
1938
	echo "#WAN1=\"1,$EXTIF:1,192.168.2.20/24,192.168.2.6,1,1500\"" >> $CONF_FILE
1939
	echo "#WAN1=\"1,$EXTIF:1,192.168.2.20/24,192.168.2.6,1,1500\"" >> $CONF_FILE
1939
	echo "#WAN2=\"1,$EXTIF:2,192.168.3.20/24,192.168.3.1,2,1500\"" >> $CONF_FILE
1940
	echo "#WAN2=\"1,$EXTIF:2,192.168.3.20/24,192.168.3.1,2,1500\"" >> $CONF_FILE
1940
# Prompt customisation (colors)
1941
# Prompt customisation (colors)
1941
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1942
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1942
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1943
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1943
	$SED "s?^ORGANISME.*?ORGANISME=$ORGANISME?g" /etc/bashrc
1944
	$SED "s?^ORGANISME.*?ORGANISME=$ORGANISME?g" /etc/bashrc
1944
# sudoers configuration for "apache" & "sysadmin"
1945
# sudoers configuration for "apache" & "sysadmin"
1945
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1946
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1946
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1947
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1947
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK/$PRIVATE_NETMASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1948
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK/$PRIVATE_NETMASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1948
# Modify some logrotate files (gammu, ulogd)
1949
# Modify some logrotate files (gammu, ulogd)
1949
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1950
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1950
	chmod 644 /etc/logrotate.d/*
1951
	chmod 644 /etc/logrotate.d/*
1951
# Log compression
1952
# Log compression
1952
	$SED "s?^delaycompress.*?#&?g" /etc/logrotate.conf
1953
	$SED "s?^delaycompress.*?#&?g" /etc/logrotate.conf
1953
# actualisation des fichiers logs compressés
1954
# actualisation des fichiers logs compressés
1954
	for dir in firewall dansguardian httpd
1955
	for dir in firewall dansguardian httpd
1955
	do
1956
	do
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 {} \;
1957
	      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 {} \;
1957
	done
1958
	done
1958
# create the alcasar-load_balancing unit
1959
# create the alcasar-load_balancing unit
1959
	cat << EOF > /lib/systemd/system/alcasar-load_balancing.service
1960
	cat << EOF > /lib/systemd/system/alcasar-load_balancing.service
1960
#  This file is part of systemd.
1961
#  This file is part of systemd.
1961
#
1962
#
1962
#  systemd is free software; you can redistribute it and/or modify it
1963
#  systemd is free software; you can redistribute it and/or modify it
1963
#  under the terms of the GNU General Public License as published by
1964
#  under the terms of the GNU General Public License as published by
1964
#  the Free Software Foundation; either version 2 of the License, or
1965
#  the Free Software Foundation; either version 2 of the License, or
1965
#  (at your option) any later version.
1966
#  (at your option) any later version.
1966
 
1967
 
1967
# This unit lauches alcasar-load-balancing.sh script.
1968
# This unit lauches alcasar-load-balancing.sh script.
1968
[Unit]
1969
[Unit]
1969
Description=alcasar-load_balancing.sh execution
1970
Description=alcasar-load_balancing.sh execution
1970
After=network.target iptables.service
1971
After=network.target iptables.service
1971
 
1972
 
1972
[Service]
1973
[Service]
1973
Type=oneshot
1974
Type=oneshot
1974
RemainAfterExit=yes
1975
RemainAfterExit=yes
1975
ExecStart=$DIR_DEST_BIN/alcasar-load_balancing.sh start
1976
ExecStart=$DIR_DEST_BIN/alcasar-load_balancing.sh start
1976
ExecStop=$DIR_DEST_BIN/alcasar-load_balancing.sh stop
1977
ExecStop=$DIR_DEST_BIN/alcasar-load_balancing.sh stop
1977
TimeoutSec=0
1978
TimeoutSec=0
1978
SysVStartPriority=99
1979
SysVStartPriority=99
1979
 
1980
 
1980
[Install]
1981
[Install]
1981
WantedBy=multi-user.target
1982
WantedBy=multi-user.target
1982
EOF
1983
EOF
1983
# processes launched at boot time (Systemctl)
1984
# processes launched at boot time (Systemctl)
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
1985
	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
1985
	do
1986
	do
1986
		/usr/bin/systemctl -q enable $i.service
1987
		/usr/bin/systemctl -q enable $i.service
1987
	done
1988
	done
1988
	
1989
	
1989
# disable processes at boot time (Systemctl)
1990
# disable processes at boot time (Systemctl)
1990
	for i in ulogd
1991
	for i in ulogd
1991
	do
1992
	do
1992
		/usr/bin/systemctl -q disable $i.service
1993
		/usr/bin/systemctl -q disable $i.service
1993
	done
1994
	done
1994
	
1995
	
1995
# Apply French Security Agency (ANSSI) rules
1996
# Apply French Security Agency (ANSSI) rules
1996
# ignore ICMP broadcast (smurf attack)
1997
# ignore ICMP broadcast (smurf attack)
1997
	echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" > /etc/sysctl.d/alcasar.conf
1998
	echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" > /etc/sysctl.d/alcasar.conf
1998
# ignore ICMP errors bogus
1999
# ignore ICMP errors bogus
1999
	echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" >> /etc/sysctl.d/alcasar.conf
2000
	echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" >> /etc/sysctl.d/alcasar.conf
2000
# remove ICMP redirects responces
2001
# remove ICMP redirects responces
2001
	echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2002
	echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2002
	echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2003
	echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2003
# enable SYN Cookies (Syn flood attacks)
2004
# enable SYN Cookies (Syn flood attacks)
2004
	echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.d/alcasar.conf
2005
	echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.d/alcasar.conf
2005
# enable kernel antispoofing
2006
# enable kernel antispoofing
2006
	echo "net.ipv4.conf.all.rp_filter = 1" >> /etc/sysctl.d/alcasar.conf
2007
	echo "net.ipv4.conf.all.rp_filter = 1" >> /etc/sysctl.d/alcasar.conf
2007
# ignore source routing
2008
# ignore source routing
2008
	echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.d/alcasar.conf
2009
	echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.d/alcasar.conf
2009
# set conntrack timer to 1h (3600s) instead of 5 weeks
2010
# set conntrack timer to 1h (3600s) instead of 5 weeks
2010
	echo "net.netfilter.nf_conntrack_tcp_timeout_established = 3600" >> /etc/sysctl.d/alcasar.conf
2011
	echo "net.netfilter.nf_conntrack_tcp_timeout_established = 3600" >> /etc/sysctl.d/alcasar.conf
2011
# disable log_martians (ALCASAR is often installed between two private network addresses) 
2012
# disable log_martians (ALCASAR is often installed between two private network addresses) 
2012
	echo "net.ipv4.conf.all.log_martians = 0" >> /etc/sysctl.d/alcasar.conf
2013
	echo "net.ipv4.conf.all.log_martians = 0" >> /etc/sysctl.d/alcasar.conf
2013
# disable iptables_helpers
2014
# disable iptables_helpers
2014
	echo "net.netfilter.nf_conntrack_helper = 0" >> /etc/sysctl.d/alcasar.conf
2015
	echo "net.netfilter.nf_conntrack_helper = 0" >> /etc/sysctl.d/alcasar.conf
2015
# Switch to the router mode
2016
# Switch to the router mode
2016
	echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/alcasar.conf
2017
	echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/alcasar.conf
2017
# Remove unused service ipv6
2018
# Remove unused service ipv6
2018
	echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2019
	echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2019
	echo "net.ipv6.conf.all.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2020
	echo "net.ipv6.conf.all.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2020
	echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2021
	echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2021
	echo "net.ipv6.conf.default.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2022
	echo "net.ipv6.conf.default.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2022
# switch to multi-users runlevel (instead of x11)
2023
# switch to multi-users runlevel (instead of x11)
2023
	ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
2024
	ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
2024
#	GRUB modifications (only one time)
2025
#	GRUB modifications (only one time)
2025
# Limit wait time to 3s - Create an alcasar entry instead of linux-nonfb - Change the default banner
2026
# Limit wait time to 3s - Create an alcasar entry instead of linux-nonfb - Change the default banner
2026
	vm_vga=`lsmod | egrep "virtio|vmwgfx" | wc -l` # test if in VM
2027
	vm_vga=`lsmod | egrep "virtio|vmwgfx" | wc -l` # test if in VM
2027
	grub_already_modified=`grep ALCASAR /boot/grub/menu.lst|wc -l`
2028
	grub_already_modified=`grep ALCASAR /boot/grub/menu.lst|wc -l`
2028
	[ -e /etc/mageia-release.default ]  || cp /etc/mageia-release /etc/mageia-release.default
2029
	[ -e /etc/mageia-release.default ]  || cp /etc/mageia-release /etc/mageia-release.default
2029
	if [ $grub_already_modified == 0 ] 
2030
	if [ $grub_already_modified == 0 ] 
2030
		then
2031
		then
2031
		$SED "s?^timeout.*?timeout 3?g" /boot/grub/menu.lst
2032
		$SED "s?^timeout.*?timeout 3?g" /boot/grub/menu.lst
2032
		$SED "s?^title linux?title ALCASAR?g" /boot/grub/menu.lst
2033
		$SED "s?^title linux?title ALCASAR?g" /boot/grub/menu.lst
2033
		$SED "/^kernel/s/splash quiet //" /boot/grub/menu.lst
2034
		$SED "/^kernel/s/splash quiet //" /boot/grub/menu.lst
2034
		$SED "/^kernel/s/BOOT_IMAGE=linux /BOOT_IMAGE=linux-nonfb /" /boot/grub/menu.lst
2035
		$SED "/^kernel/s/BOOT_IMAGE=linux /BOOT_IMAGE=linux-nonfb /" /boot/grub/menu.lst
2035
		$SED "/^gfxmenu/d" /boot/grub/menu.lst
2036
		$SED "/^gfxmenu/d" /boot/grub/menu.lst
2036
		if [ $vm_vga == 0 ] # is not a VM 
2037
		if [ $vm_vga == 0 ] # is not a VM 
2037
		then
2038
		then
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
2039
			$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
2039
		fi
2040
		fi
2040
	fi
2041
	fi
2041
	if [ $vm_vga == 0 ] # is not a VM 
2042
	if [ $vm_vga == 0 ] # is not a VM 
2042
	then
2043
	then
2043
		cp -f $DIR_CONF/banner /etc/mageia-release
2044
		cp -f $DIR_CONF/banner /etc/mageia-release
2044
		echo " V$VERSION" >> /etc/mageia-release
2045
		echo " V$VERSION" >> /etc/mageia-release
2045
	else
2046
	else
2046
		echo "ALCASAR V$VERSION" > /etc/mageia-release
2047
		echo "ALCASAR V$VERSION" > /etc/mageia-release
2047
	fi
2048
	fi
2048
# Load and apply the previous conf file
2049
# Load and apply the previous conf file
2049
	if [ "$mode" = "update" ]
2050
	if [ "$mode" = "update" ]
2050
	then
2051
	then
2051
		$DIR_DEST_BIN/alcasar-archive.sh --now # exports current logs in /var/Save/archive
2052
		$DIR_DEST_BIN/alcasar-archive.sh --now # exports current logs in /var/Save/archive
2052
		$DIR_DEST_BIN/alcasar-conf.sh --load
2053
		$DIR_DEST_BIN/alcasar-conf.sh --load
2053
		PARENT_SCRIPT=`basename $0`
2054
		PARENT_SCRIPT=`basename $0`
2054
		export PARENT_SCRIPT # to avoid stop&start process during the installation process
2055
		export PARENT_SCRIPT # to avoid stop&start process during the installation process
2055
		$DIR_DEST_BIN/alcasar-conf.sh --apply
2056
		$DIR_DEST_BIN/alcasar-conf.sh --apply
2056
		$DIR_DEST_BIN/alcasar-file-clean.sh # Clean & sort conf files. Add uamallowed domains to the dns-blackhole conf 
2057
		$DIR_DEST_BIN/alcasar-file-clean.sh # Clean & sort conf files. Add uamallowed domains to the dns-blackhole conf 
2057
		$SED "s?^INSTALL_DATE=.*?INSTALL_DATE=$DATE?g" $CONF_FILE
2058
		$SED "s?^INSTALL_DATE=.*?INSTALL_DATE=$DATE?g" $CONF_FILE
2058
		$SED "s?^VERSION=.*?VERSION=$VERSION?g" $CONF_FILE
2059
		$SED "s?^VERSION=.*?VERSION=$VERSION?g" $CONF_FILE
2059
	fi
2060
	fi
2060
	rm -f /tmp/alcasar-conf*
2061
	rm -f /tmp/alcasar-conf*
2061
	chown -R root:apache $DIR_DEST_ETC/*
2062
	chown -R root:apache $DIR_DEST_ETC/*
2062
	chmod -R 660 $DIR_DEST_ETC/*
2063
	chmod -R 660 $DIR_DEST_ETC/*
2063
	chmod ug+x $DIR_DEST_ETC/digest
2064
	chmod ug+x $DIR_DEST_ETC/digest
2064
	cd $DIR_INSTALL
2065
	cd $DIR_INSTALL
2065
	echo ""
2066
	echo ""
2066
	echo "#############################################################################"
2067
	echo "#############################################################################"
2067
	if [ $Lang == "fr" ]
2068
	if [ $Lang == "fr" ]
2068
		then
2069
		then
2069
		echo "#                        Fin d'installation d'ALCASAR                       #"
2070
		echo "#                        Fin d'installation d'ALCASAR                       #"
2070
		echo "#                                                                           #"
2071
		echo "#                                                                           #"
2071
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2072
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2072
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2073
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2073
		echo "#                                                                           #"
2074
		echo "#                                                                           #"
2074
		echo "#############################################################################"
2075
		echo "#############################################################################"
2075
		echo
2076
		echo
2076
		echo "- ALCASAR sera fonctionnel après redémarrage du système"
2077
		echo "- ALCASAR sera fonctionnel après redémarrage du système"
2077
		echo
2078
		echo
2078
		echo "- Lisez attentivement la documentation d'exploitation"
2079
		echo "- Lisez attentivement la documentation d'exploitation"
2079
		echo
2080
		echo
2080
		echo "- Le centre de controle d'ALCASAR (ACC) est à l'adresse http://alcasar.localdomain"
2081
		echo "- Le centre de controle d'ALCASAR (ACC) est à l'adresse http://alcasar.localdomain"
2081
		echo
2082
		echo
2082
		echo "                   Appuyez sur 'Entrée' pour continuer"
2083
		echo "                   Appuyez sur 'Entrée' pour continuer"
2083
	else	
2084
	else	
2084
		echo "#                        Enf of ALCASAR install process                     #"
2085
		echo "#                        Enf of ALCASAR install process                     #"
2085
		echo "#                                                                           #"
2086
		echo "#                                                                           #"
2086
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2087
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2087
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2088
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2088
		echo "#                                                                           #"
2089
		echo "#                                                                           #"
2089
		echo "#############################################################################"
2090
		echo "#############################################################################"
2090
		echo
2091
		echo
2091
		echo "- The system will be rebooted in order to operate ALCASAR"
2092
		echo "- The system will be rebooted in order to operate ALCASAR"
2092
		echo
2093
		echo
2093
		echo "- Read the exploitation documentation"
2094
		echo "- Read the exploitation documentation"
2094
		echo
2095
		echo
2095
		echo "- The ALCASAR Control Center (ACC) is at http://alcasar.localdomain"
2096
		echo "- The ALCASAR Control Center (ACC) is at http://alcasar.localdomain"
2096
		echo
2097
		echo
2097
		echo "                   Hit 'Enter' to continue"
2098
		echo "                   Hit 'Enter' to continue"
2098
	fi
2099
	fi
2099
	sleep 2
2100
	sleep 2
2100
	if [ "$mode" != "update" ]
2101
	if [ "$mode" != "update" ]
2101
	then
2102
	then
2102
		read a
2103
		read a
2103
	fi
2104
	fi
2104
	clear
2105
	clear
2105
	reboot
2106
	reboot
2106
} # End post_install ()
2107
} # End post_install ()
2107
 
2108
 
2108
#################################
2109
#################################
2109
#  	Main Install loop  	#
2110
#  	Main Install loop  	#
2110
#################################
2111
#################################
2111
dir_exec=`dirname "$0"`
2112
dir_exec=`dirname "$0"`
2112
if [ $dir_exec != "." ]
2113
if [ $dir_exec != "." ]
2113
then
2114
then
2114
	echo "Lancez ce programme depuis le répertoire de l'archive d'ALCASAR"
2115
	echo "Lancez ce programme depuis le répertoire de l'archive d'ALCASAR"
2115
	echo "Launch this program from the ALCASAR archive directory"
2116
	echo "Launch this program from the ALCASAR archive directory"
2116
	exit 0
2117
	exit 0
2117
fi
2118
fi
2118
if [[ $EUID > 0 ]]
2119
if [[ $EUID > 0 ]]
2119
then
2120
then
2120
	echo "Vous devez être "root" pour installer ALCASAR (commande 'su')"
2121
	echo "Vous devez être "root" pour installer ALCASAR (commande 'su')"
2121
	echo "You must be "root" to install ALCASAR ('su' command)"
2122
	echo "You must be "root" to install ALCASAR ('su' command)"
2122
	exit 0
2123
	exit 0
2123
fi
2124
fi
2124
VERSION=`cat $DIR_INSTALL/VERSION`
2125
VERSION=`cat $DIR_INSTALL/VERSION`
2125
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
2126
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
2126
nb_args=$#
2127
nb_args=$#
2127
args=$1
2128
args=$1
2128
if [ $nb_args -eq 0 ]
2129
if [ $nb_args -eq 0 ]
2129
then
2130
then
2130
	nb_args=1
2131
	nb_args=1
2131
	args="-h"
2132
	args="-h"
2132
fi
2133
fi
2133
chmod -R u+x $DIR_SCRIPTS/*
2134
chmod -R u+x $DIR_SCRIPTS/*
2134
case $args in
2135
case $args in
2135
	-\? | -h* | --h*)
2136
	-\? | -h* | --h*)
2136
		echo "$usage"
2137
		echo "$usage"
2137
		exit 0
2138
		exit 0
2138
		;;
2139
		;;
2139
	-i | --install)
2140
	-i | --install)
2140
		header_install
2141
		header_install
2141
		license
2142
		license
2142
		header_install
2143
		header_install
2143
		testing
2144
		testing
2144
# RPMs install
2145
# RPMs install
2145
		$DIR_SCRIPTS/alcasar-urpmi.sh
2146
		$DIR_SCRIPTS/alcasar-urpmi.sh
2146
		if [ "$?" != "0" ]
2147
		if [ "$?" != "0" ]
2147
		then
2148
		then
2148
			exit 0
2149
			exit 0
2149
		fi
2150
		fi
2150
		if [ -e $CONF_FILE ]
2151
		if [ -e $CONF_FILE ]
2151
		then
2152
		then
2152
# Uninstall the running version
2153
# Uninstall the running version
2153
			$DIR_SCRIPTS/alcasar-uninstall.sh -update
2154
			$DIR_SCRIPTS/alcasar-uninstall.sh -update
2154
		fi
2155
		fi
2155
# Test if manual update	
2156
# Test if manual update	
2156
		if [ -e /tmp/alcasar-conf*.tar.gz ] && [ "$mode" == "install" ]
2157
		if [ -e /tmp/alcasar-conf*.tar.gz ] && [ "$mode" == "install" ]
2157
		then
2158
		then
2158
			header_install
2159
			header_install
2159
			if [ $Lang == "fr" ]
2160
			if [ $Lang == "fr" ]
2160
				then echo "Le fichier de configuration d'une ancienne version a été trouvé";
2161
				then echo "Le fichier de configuration d'une ancienne version a été trouvé";
2161
				else echo "The configuration file of an old version has been found";
2162
				else echo "The configuration file of an old version has been found";
2162
			fi
2163
			fi
2163
			response=0
2164
			response=0
2164
			PTN='^[oOnNyY]$'
2165
			PTN='^[oOnNyY]$'
2165
			until [[ $(expr $response : $PTN) -gt 0 ]]
2166
			until [[ $(expr $response : $PTN) -gt 0 ]]
2166
			do
2167
			do
2167
				if [ $Lang == "fr" ]
2168
				if [ $Lang == "fr" ]
2168
					then echo -n "Voulez-vous l'utiliser (O/n)? ";
2169
					then echo -n "Voulez-vous l'utiliser (O/n)? ";
2169
					else echo -n "Do you want to use it (Y/n)?";
2170
					else echo -n "Do you want to use it (Y/n)?";
2170
				 fi
2171
				 fi
2171
				read response
2172
				read response
2172
				if [ "$response" = "n" ] || [ "$response" = "N" ] 
2173
				if [ "$response" = "n" ] || [ "$response" = "N" ] 
2173
				then rm -f /tmp/alcasar-conf*
2174
				then rm -f /tmp/alcasar-conf*
2174
				fi
2175
				fi
2175
			done
2176
			done
2176
		fi
2177
		fi
2177
# Test if update
2178
# Test if update
2178
		if [ -e /tmp/alcasar-conf* ] 
2179
		if [ -e /tmp/alcasar-conf* ] 
2179
		then
2180
		then
2180
			if [ $Lang == "fr" ]
2181
			if [ $Lang == "fr" ]
2181
				then echo "#### Installation avec mise à jour ####";
2182
				then echo "#### Installation avec mise à jour ####";
2182
				else echo "#### Installation with update     ####";
2183
				else echo "#### Installation with update     ####";
2183
			fi
2184
			fi
2184
# Extract the central configuration file
2185
# Extract the central configuration file
2185
			tar -xf /tmp/alcasar-conf* conf/etc/alcasar.conf 
2186
			tar -xf /tmp/alcasar-conf* conf/etc/alcasar.conf 
2186
			ORGANISME=`grep ORGANISM conf/etc/alcasar.conf|cut -d"=" -f2`
2187
			ORGANISME=`grep ORGANISM conf/etc/alcasar.conf|cut -d"=" -f2`
2187
			PREVIOUS_VERSION=`grep VERSION conf/etc/alcasar.conf|cut -d"=" -f2`
2188
			PREVIOUS_VERSION=`grep VERSION conf/etc/alcasar.conf|cut -d"=" -f2`
2188
			MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
2189
			MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
2189
			MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2|cut -c1`
2190
			MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2|cut -c1`
2190
			UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3`
2191
			UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3`
2191
			mode="update"
2192
			mode="update"
2192
		fi
2193
		fi
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
2194
		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
2194
		do
2195
		do
2195
			$func
2196
			$func
2196
# echo "*** 'debug' : end of function $func ***"; read a
2197
# echo "*** 'debug' : end of function $func ***"; read a
2197
		done
2198
		done
2198
		;;
2199
		;;
2199
	-u | --uninstall)
2200
	-u | --uninstall)
2200
		if [ ! -e $DIR_DEST_BIN/alcasar-uninstall.sh ]
2201
		if [ ! -e $DIR_DEST_BIN/alcasar-uninstall.sh ]
2201
		then
2202
		then
2202
			if [ $Lang == "fr" ]
2203
			if [ $Lang == "fr" ]
2203
				then echo "ALCASAR n'est pas installé!";
2204
				then echo "ALCASAR n'est pas installé!";
2204
				else echo "ALCASAR isn't installed!";
2205
				else echo "ALCASAR isn't installed!";
2205
			fi
2206
			fi
2206
			exit 0
2207
			exit 0
2207
		fi
2208
		fi
2208
		response=0
2209
		response=0
2209
		PTN='^[oOnN]$'
2210
		PTN='^[oOnN]$'
2210
		until [[ $(expr $response : $PTN) -gt 0 ]]
2211
		until [[ $(expr $response : $PTN) -gt 0 ]]
2211
		do
2212
		do
2212
			if [ $Lang == "fr" ]
2213
			if [ $Lang == "fr" ]
2213
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (0/n)? ";
2214
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (0/n)? ";
2214
				else echo -n "Do you want to create the running version configuration file (Y/n)? ";
2215
				else echo -n "Do you want to create the running version configuration file (Y/n)? ";
2215
			fi
2216
			fi
2216
			read response
2217
			read response
2217
		done
2218
		done
2218
		if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
2219
		if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
2219
		then
2220
		then
2220
			$DIR_SCRIPTS/alcasar-conf.sh --create
2221
			$DIR_SCRIPTS/alcasar-conf.sh --create
2221
		else	
2222
		else	
2222
			rm -f /tmp/alcasar-conf*
2223
			rm -f /tmp/alcasar-conf*
2223
		fi
2224
		fi
2224
# Uninstall the running version
2225
# Uninstall the running version
2225
		$DIR_SCRIPTS/alcasar-uninstall.sh -full
2226
		$DIR_SCRIPTS/alcasar-uninstall.sh -full
2226
		;;
2227
		;;
2227
	*)
2228
	*)
2228
		echo "Argument inconnu :$1";
2229
		echo "Argument inconnu :$1";
2229
		echo "Unknown argument :$1";
2230
		echo "Unknown argument :$1";
2230
		echo "$usage"
2231
		echo "$usage"
2231
		exit 1
2232
		exit 1
2232
		;;
2233
		;;
2233
esac
2234
esac
2234
# end of script
2235
# end of script
2235
 
2236
 
2236
 
2237