Subversion Repositories ALCASAR

Rev

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

Rev 3180 Rev 3190
1
#!/bin/bash
1
#!/bin/bash
2
#  $Id: alcasar.sh 3180 2024-03-04 17:33:37Z rexy $
2
#  $Id: alcasar.sh 3190 2024-04-07 22:35:03Z rexy $
3
 
3
 
4
# ALCASAR is a Free and open source NAC (Network Access Controler) created by Franck BOUIJOUX (3abtux), Pascal LEVANT and Richard REY (Rexy)
4
# ALCASAR is a Free and open source NAC (Network Access Controler) created by Franck BOUIJOUX (3abtux), Pascal LEVANT and Richard REY (Rexy)
5
# ALCASAR is based on a stripped Mageia (LSB) with the following open source softwares Coovachilli, freeradius, mariaDB, lighttpd, php, netfilter, e2guardian, ntpd, openssl, unbound, gammu, Ulog, fail2ban, vnstat, wkhtml2pdf, ipt_NETFLOW, NFsen and NFdump
5
# ALCASAR is based on a stripped Mageia (LSB) with the following open source softwares Coovachilli, freeradius, mariaDB, lighttpd, php, netfilter, e2guardian, ntpd, openssl, unbound, gammu, Ulog, fail2ban, vnstat, wkhtml2pdf, ipt_NETFLOW, NFsen and NFdump
6
# contact : info@alcasar.net
6
# contact : info@alcasar.net
7
 
7
 
8
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
8
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
9
# This script is distributed under the Gnu General Public License (GPLV3)
9
# This script is distributed under the Gnu General Public License (GPLV3)
10
 
10
 
11
# Options :
11
# Options :
12
#       -i or --install
12
#       -i or --install
13
#       -u or --uninstall
13
#       -u or --uninstall
14
# Functions :
14
# Functions :
15
#	system_testing	: Free space test and mageia version test
15
#	system_testing	: Free space test and mageia version test
16
#	network_testing	: Internet connectivity tests
16
#	network_testing	: Internet connectivity tests
17
#	init			: Installation of RPM and scripts
17
#	init			: Installation of RPM and scripts
18
#	network			: Network parameters
18
#	network			: Network parameters
19
#	ACC				: ALCASAR Control Center installation
19
#	ACC				: ALCASAR Control Center installation
20
#	CA				: Certification Authority initialization
20
#	CA				: Certification Authority initialization
21
#	time_server		: NTPd configuration
21
#	time_server		: NTPd configuration
22
#	init_db			: Initilization of radius database managed with MariaDB
22
#	init_db			: Initilization of radius database managed with MariaDB
23
#	freeradius		: FreeRadius initialisation
23
#	freeradius		: FreeRadius initialisation
24
#	chilli			: Coovachilli initialisation (+authentication page)
24
#	chilli			: Coovachilli initialisation (+authentication page)
25
#	e2guardian		: E2Guardian filtering HTTP proxy configuration
25
#	e2guardian		: E2Guardian filtering HTTP proxy configuration
26
#	ulogd			: Log system in userland (match NFLOG target of iptables)
26
#	ulogd			: Log system in userland (match NFLOG target of iptables)
27
#	nfsen			: Configuration of Netflow grapher (nfsen) & netflow collector (nfcapd)
27
#	nfsen			: Configuration of Netflow grapher (nfsen) & netflow collector (nfcapd)
28
#	unbound			: Name server configuration
28
#	unbound			: Name server configuration
29
#	vnstat			: Little network stat daemon
29
#	vnstat			: Little network stat daemon
30
#	BL				: Adaptation of Toulouse University BlackList : split into 3 BL (for unbound, for e2guardian and for Netfilter)
30
#	BL				: Adaptation of Toulouse University BlackList : split into 3 BL (for unbound, for e2guardian and for Netfilter)
31
#	cron			: Logs export + watchdog + connexion statistics
31
#	cron			: Logs export + watchdog + connexion statistics
32
#	fail2ban		: Fail2ban IDS installation and configuration
32
#	fail2ban		: Fail2ban IDS installation and configuration
33
#	gammu_smsd		: Autoregister addon via SMS (gammu-smsd)
33
#	gammu_smsd		: Autoregister addon via SMS (gammu-smsd)
34
#	msec			: Mageia security package configuration
34
#	msec			: Mageia security package configuration
35
#	letsencrypt		: Let's Encrypt client
35
#	letsencrypt		: Let's Encrypt client
36
#	mail_service	: Mail service for email authentification method
36
#	mail_service	: Mail service for email authentification method
37
#	post_install	: Security, log rotation, etc.
37
#	post_install	: Security, log rotation, etc.
38
 
38
 
39
DEBUG_ALCASAR='off'; export DEBUG_ALCASAR	# Debug mode = wait (hit key) after each function
39
DEBUG_ALCASAR='off'; export DEBUG_ALCASAR	# Debug mode = wait (hit key) after each function
40
DATE=`date '+%d %B %Y - %Hh%M'`
40
DATE=`date '+%d %B %Y - %Hh%M'`
41
DATE_SHORT=`date '+%d/%m/%Y'`
41
DATE_SHORT=`date '+%d/%m/%Y'`
42
Lang=`echo $LANG|cut -c 1-2`
42
Lang=`echo $LANG|cut -c 1-2`
43
mode="install"
43
mode="install"
44
# ******* Files parameters - paramètres fichiers *********
44
# ******* Files parameters - paramètres fichiers *********
45
DIR_INSTALL=`pwd`						# current directory
45
DIR_INSTALL=`pwd`						# current directory
46
DIR_CONF="$DIR_INSTALL/conf"			# install directory (with conf files)
46
DIR_CONF="$DIR_INSTALL/conf"			# install directory (with conf files)
47
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# install directory (with script files)
47
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# install directory (with script files)
48
DIR_BLACKLIST="$DIR_INSTALL/blacklist"	# install directory (with blacklist files)
48
DIR_BLACKLIST="$DIR_INSTALL/blacklist"	# install directory (with blacklist files)
49
DIR_SAVE="/var/Save"					# backup directory (traceability_log, user_db, security_log)
49
DIR_SAVE="/var/Save"					# backup directory (traceability_log, user_db, security_log)
50
DIR_WEB="/var/www/html"					# directory of Lighttpd
50
DIR_WEB="/var/www/html"					# directory of Lighttpd
51
DIR_DG="/etc/e2guardian"				# directory of E2Guardian
51
DIR_DG="/etc/e2guardian"				# directory of E2Guardian
52
DIR_ACC="$DIR_WEB/acc"					# directory of the 'ALCASAR Control Center'
52
DIR_ACC="$DIR_WEB/acc"					# directory of the 'ALCASAR Control Center'
53
DIR_DEST_BIN="/usr/local/bin"			# directory of ALCASAR scripts
53
DIR_DEST_BIN="/usr/local/bin"			# directory of ALCASAR scripts
54
DIR_DEST_ETC="/usr/local/etc"			# directory of ALCASAR conf files
54
DIR_DEST_ETC="/usr/local/etc"			# directory of ALCASAR conf files
55
DIR_DEST_SHARE="/usr/local/share"		# directory of share files used by ALCASAR (unbound for instance)
55
DIR_DEST_SHARE="/usr/local/share"		# directory of share files used by ALCASAR (unbound for instance)
56
CONF_FILE="$DIR_DEST_ETC/alcasar.conf"	# central ALCASAR conf file
56
CONF_FILE="$DIR_DEST_ETC/alcasar.conf"	# central ALCASAR conf file
57
PASSWD_FILE="/root/ALCASAR-passwords.txt"	# text file with the passwords and shared secrets
57
PASSWD_FILE="/root/ALCASAR-passwords.txt"	# text file with the passwords and shared secrets
58
# ******* DBMS parameters - paramètres SGBD ********
58
# ******* DBMS parameters - paramètres SGBD ********
59
DB_RADIUS="radius"						# database name used by FreeRadius server
59
DB_RADIUS="radius"						# database name used by FreeRadius server
60
DB_USER="radius"						# user name allows to request the users database
60
DB_USER="radius"						# user name allows to request the users database
61
DB_GAMMU="gammu"						# database name used by Gammu-smsd
61
DB_GAMMU="gammu"						# database name used by Gammu-smsd
62
# ******* Network parameters - paramètres réseau *******
62
# ******* Network parameters - paramètres réseau *******
63
HOSTNAME="alcasar"						# default hostname
63
HOSTNAME="alcasar"						# default hostname
64
DOMAIN="localdomain"					# default local domain
64
DOMAIN="localdomain"					# default local domain
65
EXTIF=''								# EXTIF is connected to the ISP broadband modem/router (In France : Box-FAI)
65
EXTIF=''								# EXTIF is connected to the ISP broadband modem/router (In France : Box-FAI)
66
INTIF=''								# INTIF is connected to the consultation network
66
INTIF=''								# INTIF is connected to the consultation network
67
MTU="1500"
67
MTU="1500"
68
DEFAULT_PRIVATE_IP_MASK="192.168.182.1/24"	# Default ALCASAR IP address
68
DEFAULT_PRIVATE_IP_MASK="192.168.182.1/24"	# Default ALCASAR IP address
69
# ****** Paths - chemin des commandes *******
69
# ****** Paths - chemin des commandes *******
70
SED="/bin/sed -i"
70
SED="/bin/sed -i"
71
# ****************** End of global parameters *********************
71
# ****************** End of global parameters *********************
72
 
72
 
73
license()
73
license()
74
{
74
{
75
	if [ $Lang == "fr" ]
75
	if [ $Lang == "fr" ]
76
	then
76
	then
-
 
77
		echo "                   *******************************"
-
 
78
		echo "                   **** Licence d'utilisation ****"
-
 
79
		echo "                   *******************************"
-
 
80
		echo
77
		cat $DIR_INSTALL/gpl-warning.fr.txt | more
81
		echo "ALCASAR est un logiciel libre"
-
 
82
		echo
-
 
83
		echo "Avant de l'installer, vous devez accepter les termes de sa licence 'GPL-V3'"
-
 
84
		echo "Le descriptif de cette licence est disponible dans le fichier 'GPL-3.0.txt'"
-
 
85
		echo "Une traduction française est disponible dans le fichier 'GPL-3.0.fr.txt'."
-
 
86
		echo
-
 
87
		echo "Les objectifs de cette licence sont de garantir à l'utilisateur :"
-
 
88
		echo "- La liberté d'exécuter le logiciel, pour n'importe quel usage ;"
-
 
89
		echo "- La liberté d'étudier et d'adapter le logiciel à ses besoins ;"
-
 
90
		echo "- La liberté de redistribuer des copies ;"
-
 
91
		echo "- L'obligation de faire bénéficier à la communauté les versions modifiées."
-
 
92
		echo
78
	else
93
	else
-
 
94
		echo "                   *******************************"
-
 
95
		echo "                   ****      User License     ****"
-
 
96
		echo "                   *******************************"
-
 
97
		echo
-
 
98
		echo "ALCASAR is an open source software"
-
 
99
		echo
-
 
100
		echo "Before install it, you must understand and accept the license 'GPL-V3'"
-
 
101
		echo "you can read this license in the file 'GPL-3.0.txt'"
-
 
102
		echo
-
 
103
		echo "The goals of this license are :"
79
		cat $DIR_INSTALL/gpl-warning.txt | more
104
		echo "- the freedom of using the software ;"
-
 
105
		echo "- the freedom of studying et adapting it for its own uses ;"
-
 
106
		echo "- the freedom of redistributing copies of it ;"
-
 
107
		echo "- the compulsory of giving the modify versions to the community"
-
 
108
		echo
80
	fi
109
	fi
81
	response=0
110
	response=0
82
	PTN='^[oOyYnN]?$'
111
	PTN='^[oOyYnN]?$'
83
	until [[ "$response" =~ $PTN ]]
112
	until [[ "$response" =~ $PTN ]]
84
	do
113
	do
85
		if [ $Lang == "fr" ]
114
		if [ $Lang == "fr" ]
86
			then echo -n "Acceptez-vous les termes de cette licence (O/n)? : "
115
			then echo -n "Acceptez-vous les termes de cette licence (O/n)? : "
87
			else echo -n "Do you accept the terms of this license (Y/n)? : "
116
			else echo -n "Do you accept the terms of this license (Y/n)? : "
88
		fi
117
		fi
89
		read response
118
		read response
90
	done
119
	done
91
	if [ "$response" = "n" ] || [ "$response" = "N" ]
120
	if [ "$response" = "n" ] || [ "$response" = "N" ]
92
	then
121
	then
93
		exit 1
122
		exit 1
94
	fi
123
	fi
95
} # End of license()
124
} # End of license()
96
 
125
 
97
header_install()
126
header_install()
98
{
127
{
99
	clear
128
	clear
100
	echo "-----------------------------------------------------------------------------"
129
	echo "-----------------------------------------------------------------------------"
101
	echo "                     ALCASAR V$VERSION Installation"
130
	echo "                     ALCASAR V$VERSION Installation"
102
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
131
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
103
	echo "-----------------------------------------------------------------------------"
132
	echo "-----------------------------------------------------------------------------"
104
} # End of header_install()
133
} # End of header_install()
105
 
134
 
106
########################################################
135
########################################################
107
##                  "system_testing"                  ##
136
##                  "system_testing"                  ##
108
## - Test Mageia version                              ##
137
## - Test distribution version                        ##
109
## - Test ALCASAR version (if already installed)      ##
138
## - Test ALCASAR version (if already installed)      ##
110
## - Test free space on /var  (>10G)                  ##
139
## - Test free space on /var  (>10G)                  ##
111
## - Test Internet access                             ##
140
## - Test Internet access                             ##
112
########################################################
141
########################################################
113
system_testing()
142
system_testing()
114
{
143
{
115
# Test of Mageia version
144
# Test of Mageia version
116
# extract the current Mageia version and hardware architecture (X86_64)
145
# extract the current Mageia version and hardware architecture (X86_64)
117
	fic=`cat /etc/product.id`
146
	fic="/etc/product.id"
118
	unknown_os=0
-
 
119
	old="$IFS"
-
 
120
	IFS=","
-
 
121
	set $fic
-
 
122
	for i in "$@"
-
 
123
	do
-
 
124
		if [ "`echo $i|grep distribution|cut -d'=' -f1`" == "distribution" ]
-
 
125
			then
-
 
126
			DISTRIBUTION=`echo $i|cut -d"=" -f2`
147
	DISTRIBUTION_NAME=`cat $fic|cut -d"," -f2|cut -d"=" -f2`
127
			unknown_os=`expr $unknown_os + 1`
-
 
128
		fi
-
 
129
		if [ "`echo $i|grep version|cut -d'=' -f1`" == "version" ]
-
 
130
			then
-
 
131
			CURRENT_VERSION=`echo $i|cut -d"=" -f2`
148
	DISTRIBUTION_VERSION=`cat $fic|cut -d"," -f4|cut -d"=" -f2`
132
			unknown_os=`expr $unknown_os + 1`
-
 
133
		fi
-
 
134
		if [ "`echo $i|grep arch|cut -d'=' -f1`" == "arch" ]
-
 
135
			then
-
 
136
			ARCH=`echo $i|cut -d"=" -f2`
149
	DISTRIBUTION_ARCH=`cat $fic|cut -d"," -f7|cut -d"=" -f2`
137
			unknown_os=`expr $unknown_os + 1`
-
 
138
		fi
-
 
139
	done
-
 
140
	if [ "$ARCH" != "x86_64" ]
150
	if [ "$DISTRIBUTION_ARCH" != "x86_64" ]
141
		then
151
		then
142
		if [ $Lang == "fr" ]
152
		if [ $Lang == "fr" ]
143
			then echo "Votre architecture matérielle doit être en 64bits"
153
			then echo "Votre architecture matérielle doit être en 64bits"
144
			else echo "You hardware architecture must be 64bits"
154
			else echo "You hardware architecture must be 64bits"
145
		fi
155
		fi
146
		exit 1
156
		exit 1
147
	fi
157
	fi
148
	IFS="$old"
-
 
149
	if [[ ( $unknown_os != 3 ) || ("$DISTRIBUTION" != "Mageia" ) || (( "$CURRENT_VERSION" != "7" ) && ( "$CURRENT_VERSION" != "8" ))]]
158
	if [[("$DISTRIBUTION_NAME" != "Mageia" ) || (( "$DISTRIBUTION_VERSION" != "8" ) && ( "$DISTRIBUTION_VERSION" != "9" ))]]
150
	then
159
	then
151
		if [ -e /var/tmp/alcasar-conf.tar.gz ] # update
160
		if [ -e /var/tmp/alcasar-conf.tar.gz ] # update
152
			then
161
			then
153
			echo
162
			echo
154
			if [ $Lang == "fr" ]
163
			if [ $Lang == "fr" ]
155
				then
164
				then
156
				echo "La mise à jour automatique d'ALCASAR ne peut pas être réalisée."
165
				echo "La mise à jour automatique d'ALCASAR ne peut pas être réalisée."
157
				echo "1 - Effectuez une sauvegarde des fichiers de traçabilité et de la base des usagers via l'ACC"
166
				echo "1 - Effectuez une sauvegarde des fichiers de traçabilité et de la base des usagers via l'ACC"
158
				echo "2 - Installez Linux-Mageia 8 et ALCASAR (cf. doc d'installation)"
167
				echo "2 - Installez Linux-Mageia 8 et ALCASAR (cf. doc d'installation)"
159
				echo "3 - Importez votre base des usagers"
168
				echo "3 - Importez votre base des usagers"
160
			else
169
			else
161
				echo "The automatic update of ALCASAR can't be performed."
170
				echo "The automatic update of ALCASAR can't be performed."
162
				echo "1 - Save your traceability files and the user database"
171
				echo "1 - Save your traceability files and the user database"
163
				echo "2 - Install Linux-Mageia 8 & ALCASAR (cf. installation doc)"
172
				echo "2 - Install Linux-Mageia 8 & ALCASAR (cf. installation doc)"
164
				echo "3 - Import your users database"
173
				echo "3 - Import your users database"
165
			fi
174
			fi
166
		else
175
		else
167
			if [ $Lang == "fr" ]
176
			if [ $Lang == "fr" ]
168
				then echo "L'installation d'ALCASAR ne peut pas être réalisée."
177
				then echo "L'installation d'ALCASAR ne peut pas être réalisée."
169
				else echo "The installation of ALCASAR can't be performed."
178
				else echo "The installation of ALCASAR can't be performed."
170
			fi
179
			fi
171
		fi
180
		fi
172
		echo
181
		echo
173
		if [ $Lang == "fr" ]
182
		if [ $Lang == "fr" ]
174
			then echo "Le système d'exploitation doit être remplacé (Mageia8)"
183
			then echo "Le système d'exploitation doit être remplacé (Mageia8)"
175
			else echo "The OS must be replaced (Mageia8)"
184
			else echo "The OS must be replaced (Mageia8)"
176
		fi
185
		fi
177
		exit 1
186
		exit 1
178
	fi
187
	fi
179
 
188
 
180
# Test if ALCASAR is already installed
189
# Test if ALCASAR is already installed
181
	if [ -e $CONF_FILE ]
190
	if [ -e $CONF_FILE ]
182
	then
191
	then
183
		current_version=`grep ^VERSION= $CONF_FILE | cut -d"=" -f2`
192
		current_version=`grep ^VERSION= $CONF_FILE | cut -d"=" -f2`
184
		if [ $Lang == "fr" ]
193
		if [ $Lang == "fr" ]
185
			then echo "La version $current_version d'ALCASAR est déjà installée"
194
			then echo "La version $current_version d'ALCASAR est déjà installée"
186
			else echo "ALCASAR version $current_version is already installed"
195
			else echo "ALCASAR version $current_version is already installed"
187
		fi
196
		fi
188
		response=0
197
		response=0
189
		PTN='^[12]$'
198
		PTN='^[12]$'
190
		until [[ "$response" =~ $PTN ]]
199
		until [[ "$response" =~ $PTN ]]
191
		do
200
		do
192
			if [ $Lang == "fr" ]
201
			if [ $Lang == "fr" ]
193
				then echo -n "Tapez '1' pour une mise à jour; Tapez '2' pour une réinstallation : "
202
				then echo -n "Tapez '1' pour une mise à jour; Tapez '2' pour une réinstallation : "
194
				else echo -n "Hit '1' for an update; Hit '2' for a reinstallation : "
203
				else echo -n "Hit '1' for an update; Hit '2' for a reinstallation : "
195
			fi
204
			fi
196
			read response
205
			read response
197
		done
206
		done
198
		if [ "$response" = "2" ]
207
		if [ "$response" = "2" ]
199
		then
208
		then
200
			rm -f /var/tmp/alcasar-conf*
209
			rm -f /var/tmp/alcasar-conf*
201
		else
210
		else
202
# Create the archive of conf files
211
# Create the archive of conf files
203
			$DIR_SCRIPTS/alcasar-conf.sh --create
212
			$DIR_SCRIPTS/alcasar-conf.sh --create
204
# avoid lack of local DNS resolution when unbound is updated (alcasar <= V5.3)
213
# avoid lack of local DNS resolution when unbound is updated (alcasar <= V5.3)
205
			local_unbound_unit=`ls /etc/systemd/system/unbound* 2>/dev/null | wc -w`
214
			local_unbound_unit=`ls /etc/systemd/system/unbound* 2>/dev/null | wc -w`
206
			if [ $local_unbound_unit -ne 4 ]; then
215
			if [ $local_unbound_unit -ne 4 ]; then
207
				cp -f /lib/systemd/system/unbound*.service /etc/systemd/system/
216
				cp -f /lib/systemd/system/unbound*.service /etc/systemd/system/
208
			fi
217
			fi
209
			mode="update"
218
			mode="update"
210
		fi
219
		fi
211
	else
220
	else
212
		license
221
		license
213
	fi
222
	fi
214
# Free /var (when updating) and test free space
223
# Free /var (when updating) and test free space
215
	[ -d /var/log/netflow ] && rm -rf /var/log/netflow  # remove old porttracker RRD database
224
	[ -d /var/log/netflow ] && rm -rf /var/log/netflow  # remove old porttracker RRD database
216
	journalctl -q --vacuum-files 1  # remove previous journal logs
225
	journalctl -q --vacuum-files 1  # remove previous journal logs
217
	free_space=`df -BG --output=avail /var|tail -1|tr -d '[:space:]G'`
226
	free_space=`df -BG --output=avail /var|tail -1|tr -d '[:space:]G'`
218
	if [ $free_space -lt 10 ]
227
	if [ $free_space -lt 10 ]
219
		then
228
		then
220
		if [ $Lang == "fr" ]
229
		if [ $Lang == "fr" ]
221
			then echo "Espace disponible insuffisant sur /var ($free_space Go au lieu de 10 Go au minimum)"
230
			then echo "Espace disponible insuffisant sur /var ($free_space Go au lieu de 10 Go au minimum)"
222
			else echo "not enough free space on /var ($free_space GB instead of at least 10 GB)"
231
			else echo "not enough free space on /var ($free_space GB instead of at least 10 GB)"
223
		fi
232
		fi
224
	exit 0
233
	exit 0
225
	fi
234
	fi
226
} # End of system_testing
235
} # End of system_testing
227
 
236
 
228
########################################################
237
########################################################
229
##                   "network_testing"                ##
238
##                   "network_testing"                ##
230
## - Internet access test                             ##
239
## - Internet access test                             ##
231
########################################################
240
########################################################
232
network_testing()
241
network_testing()
233
{
242
{
234
# Detect external/internal interfaces
243
# Detect external/internal interfaces
235
	if [ -z "$EXTIF" ]; then
244
	if [ -z "$EXTIF" ]; then
236
		GwListSorted=$(/usr/sbin/ip r list | grep default | cut -d" " -f5 | uniq )
245
		GwListSorted=$(/usr/sbin/ip r list | grep default | cut -d" " -f5 | uniq )
237
		nb_gw=$(echo $GwListSorted | wc -w)
246
		nb_gw=$(echo $GwListSorted | wc -w)
238
		if [ $nb_gw -eq 0 ]; then
247
		if [ $nb_gw -eq 0 ]; then
239
			if [ "$Lang" == 'fr' ]
248
			if [ "$Lang" == 'fr' ]
240
				then echo "Aucune passerelle par défaut configurée"
249
				then echo "Aucune passerelle par défaut configurée"
241
				else echo "No default gateway configured"
250
				else echo "No default gateway configured"
242
			fi
251
			fi
243
			exit 1
252
			exit 1
244
		elif [ $nb_gw -eq 1 ]; then
253
		elif [ $nb_gw -eq 1 ]; then
245
			EXTIF="$GwListSorted"
254
			EXTIF="$GwListSorted"
246
		else
255
		else
247
			if [ "$Lang" == 'fr' ]
256
			if [ "$Lang" == 'fr' ]
248
				then echo -n "Erreur : Plusieurs interfaces ont une passerelle par défaut ( "
257
				then echo -n "Erreur : Plusieurs interfaces ont une passerelle par défaut ( "
249
				else echo -n "Error : Several interfaces have a default gateway ( "
258
				else echo -n "Error : Several interfaces have a default gateway ( "
250
			fi
259
			fi
251
				echo "$GwListSorted" | tr "\n" " "
260
				echo "$GwListSorted" | tr "\n" " "
252
				echo ")"
261
				echo ")"
253
			exit 1
262
			exit 1
254
		fi
263
		fi
255
	fi
264
	fi
256
	if [ "$Lang" == 'fr' ]
265
	if [ "$Lang" == 'fr' ]
257
		then echo "Interface externe (Internet) utilisée : $EXTIF"
266
		then echo "Interface externe (Internet) utilisée : $EXTIF"
258
		else echo "External interface (Internet) used: $EXTIF"
267
		else echo "External interface (Internet) used: $EXTIF"
259
	fi
268
	fi
260
 
269
 
261
	if [ -z "$INTIF" ]; then
270
	if [ -z "$INTIF" ]; then
262
		IntifListSorted=$(/usr/sbin/ip -br link show | cut -d' ' -f1 | grep -v "^\(lo\|tun0\|$EXTIF\)\$" | uniq | sort)
271
		IntifListSorted=$(/usr/sbin/ip -br link show | cut -d' ' -f1 | grep -v "^\(lo\|tun0\|$EXTIF\)\$" | uniq | sort)
263
		IntifCount=$(echo "$IntifListSorted" | wc -w)
272
		IntifCount=$(echo "$IntifListSorted" | wc -w)
264
		if [ $IntifCount -eq 0 ]; then
273
		if [ $IntifCount -eq 0 ]; then
265
			if [ "$Lang" == 'fr' ]
274
			if [ "$Lang" == 'fr' ]
266
				then echo "Aucune interface de disponible pour le réseau interne"
275
				then echo "Aucune interface de disponible pour le réseau interne"
267
				else echo "No interface available for the internal network"
276
				else echo "No interface available for the internal network"
268
			fi
277
			fi
269
			exit 1
278
			exit 1
270
		elif [ $IntifCount -eq 1 ]; then
279
		elif [ $IntifCount -eq 1 ]; then
271
			INTIF="$IntifListSorted"
280
			INTIF="$IntifListSorted"
272
		else
281
		else
273
			IntifPreferred=$(echo "$IntifListSorted" | head -1 | cut -d' ' -f1)
282
			IntifPreferred=$(echo "$IntifListSorted" | head -1 | cut -d' ' -f1)
274
			if [ "$Lang" == 'fr' ]
283
			if [ "$Lang" == 'fr' ]
275
				then echo 'Liste des interfaces disponibles pour le réseau interne :'
284
				then echo 'Liste des interfaces disponibles pour le réseau interne :'
276
				else echo 'List of available interfaces for internal network:'
285
				else echo 'List of available interfaces for internal network:'
277
			fi
286
			fi
278
			echo "$IntifListSorted"
287
			echo "$IntifListSorted"
279
			response=''
288
			response=''
280
			while true; do
289
			while true; do
281
				if [ "$Lang" == 'fr' ]
290
				if [ "$Lang" == 'fr' ]
282
					then echo -n "Choix de l'interface interne ? [$IntifPreferred] "
291
					then echo -n "Choix de l'interface interne ? [$IntifPreferred] "
283
					else echo -n "Choice of internal interface ? [$IntifPreferred] "
292
					else echo -n "Choice of internal interface ? [$IntifPreferred] "
284
				fi
293
				fi
285
				read response
294
				read response
286
				[ -z "$response" ] && response="$IntifPreferred"
295
				[ -z "$response" ] && response="$IntifPreferred"
287
 
296
 
288
				# Check if interface exist
297
				# Check if interface exist
289
				if [ "$(echo "$IntifListSorted" | grep -c "^$response\$")" -eq 1 ]; then
298
				if [ "$(echo "$IntifListSorted" | grep -c "^$response\$")" -eq 1 ]; then
290
					INTIF="$response"
299
					INTIF="$response"
291
					break
300
					break
292
				else
301
				else
293
					if [ "$Lang" == 'fr' ]
302
					if [ "$Lang" == 'fr' ]
294
						then echo "Interface \"$response\" introuvable"
303
						then echo "Interface \"$response\" introuvable"
295
						else echo "Interface \"$response\" not found"
304
						else echo "Interface \"$response\" not found"
296
					fi
305
					fi
297
				fi
306
				fi
298
			done
307
			done
299
		fi
308
		fi
300
	fi
309
	fi
301
	if [ "$Lang" == 'fr' ]
310
	if [ "$Lang" == 'fr' ]
302
		then echo "Interface interne utilisée : $INTIF"
311
		then echo "Interface interne utilisée : $INTIF"
303
		else echo "Internal interface used: $INTIF"
312
		else echo "Internal interface used: $INTIF"
304
	fi
313
	fi
305
 
314
 
306
	if [ $Lang == "fr" ]
315
	if [ $Lang == "fr" ]
307
		then echo -n "Tests des paramètres réseau : "
316
		then echo -n "Tests des paramètres réseau : "
308
		else echo -n "Network parameters tests: "
317
		else echo -n "Network parameters tests: "
309
	fi
318
	fi
310
# Remove conf file if NIC is not plugged (ie : GSM/WIFI/Bt dongles)
319
# Remove conf file if NIC is not plugged (ie : GSM/WIFI/Bt dongles)
311
	cd /etc/sysconfig/network-scripts/ || { echo "Unable to find /etc/sysconfig/network-scripts directory"; exit 1; }
320
	cd /etc/sysconfig/network-scripts/ || { echo "Unable to find /etc/sysconfig/network-scripts directory"; exit 1; }
312
	IF_INTERFACES=`ls ifcfg-*|cut -d"-" -f2|grep -v "^lo"|cut -d"*" -f1`
321
	IF_INTERFACES=`ls ifcfg-*|cut -d"-" -f2|grep -v "^lo"|cut -d"*" -f1`
313
	for i in $IF_INTERFACES
322
	for i in $IF_INTERFACES
314
	do
323
	do
315
		if [ "$(/usr/sbin/ip link | grep -c " $i:")" -eq 0 ]; then
324
		if [ "$(/usr/sbin/ip link | grep -c " $i:")" -eq 0 ]; then
316
			rm -f ifcfg-$i
325
			rm -f ifcfg-$i
317
 
326
 
318
			if [ $Lang == "fr" ]
327
			if [ $Lang == "fr" ]
319
				then echo "Suppression : ifcfg-$i"
328
				then echo "Suppression : ifcfg-$i"
320
				else echo "Deleting: ifcfg-$i"
329
				else echo "Deleting: ifcfg-$i"
321
			fi
330
			fi
322
		fi
331
		fi
323
	done
332
	done
324
	cd $DIR_INSTALL || { echo "Unable to find $DIR_INSTALL directory"; exit 1; }
333
	cd $DIR_INSTALL || { echo "Unable to find $DIR_INSTALL directory"; exit 1; }
325
	echo -n "."
334
	echo -n "."
326
# Test Ethernet NIC links state
335
# Test Ethernet NIC links state
327
	interfacesDown=$(/usr/sbin/ip -br link | grep "^\($EXTIF\|$INTIF\) " | grep 'NO-CARRIER' | cut -d' ' -f1)
336
	interfacesDown=$(/usr/sbin/ip -br link | grep "^\($EXTIF\|$INTIF\) " | grep 'NO-CARRIER' | cut -d' ' -f1)
328
	if [ ! -z "$interfacesDown" ]; then
337
	if [ ! -z "$interfacesDown" ]; then
329
		for i in $interfacesDown; do
338
		for i in $interfacesDown; do
330
			if [ $Lang == "fr" ]
339
			if [ $Lang == "fr" ]
331
			then
340
			then
332
				echo -e "\nÉchec"
341
				echo -e "\nÉchec"
333
				echo "Le lien réseau de la carte $i n'est pas actif."
342
				echo "Le lien réseau de la carte $i n'est pas actif."
334
				echo "Assurez-vous que cette carte est bien connectée à un équipement (commutateur, A.P., etc.)"
343
				echo "Assurez-vous que cette carte est bien connectée à un équipement (commutateur, A.P., etc.)"
335
			else
344
			else
336
				echo -e "\nFailed"
345
				echo -e "\nFailed"
337
				echo "The link state of $i interface is down."
346
				echo "The link state of $i interface is down."
338
				echo "Make sure that this network card is connected to a switch or an A.P."
347
				echo "Make sure that this network card is connected to a switch or an A.P."
339
			fi
348
			fi
340
		done
349
		done
341
		exit 1
350
		exit 1
342
	fi
351
	fi
343
	echo -n "."
352
	echo -n "."
344
# Test EXTIF config files
353
# Test EXTIF config files
345
	PUBLIC_IP_MASK=`/usr/sbin/ip addr show $EXTIF | grep '^\s*inet\s' | awk '{ print $2 }'`
354
	PUBLIC_IP_MASK=`/usr/sbin/ip addr show $EXTIF | grep '^\s*inet\s' | awk '{ print $2 }'`
346
	PUBLIC_IP=`echo $PUBLIC_IP_MASK | cut -d'/' -f1`
355
	PUBLIC_IP=`echo $PUBLIC_IP_MASK | cut -d'/' -f1`
347
	PUBLIC_GATEWAY=`/usr/sbin/ip route list | awk -v EXTIF="$EXTIF" '(/ via / && $5 == EXTIF) {print $3}' | head -n 1`
356
	PUBLIC_GATEWAY=`/usr/sbin/ip route list | awk -v EXTIF="$EXTIF" '(/ via / && $5 == EXTIF) {print $3}' | head -n 1`
348
	if [ "$(echo $PUBLIC_IP|wc -c)" -lt 7 ] || [ "$(echo $PUBLIC_GATEWAY|wc -c)" -lt 7 ]
357
	if [ "$(echo $PUBLIC_IP|wc -c)" -lt 7 ] || [ "$(echo $PUBLIC_GATEWAY|wc -c)" -lt 7 ]
349
	then
358
	then
350
		if [ $Lang == "fr" ]
359
		if [ $Lang == "fr" ]
351
		then
360
		then
352
			echo -e "\nÉchec"
361
			echo -e "\nÉchec"
353
			echo "La carte réseau connectée à Internet ($EXTIF) n'est pas correctement configurée."
362
			echo "La carte réseau connectée à Internet ($EXTIF) n'est pas correctement configurée."
354
			echo "Renseignez les champs suivants dans le fichier '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
363
			echo "Renseignez les champs suivants dans le fichier '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
355
			echo "Appliquez les changements : 'systemctl restart network'"
364
			echo "Appliquez les changements : 'systemctl restart network'"
356
		else
365
		else
357
			echo -e "\nFailed"
366
			echo -e "\nFailed"
358
			echo "The Internet connected network card ($EXTIF) isn't well configured."
367
			echo "The Internet connected network card ($EXTIF) isn't well configured."
359
			echo "The folowing parametres must be set in the file '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
368
			echo "The folowing parametres must be set in the file '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
360
			echo "Apply the new configuration: 'systemctl restart network'"
369
			echo "Apply the new configuration: 'systemctl restart network'"
361
		fi
370
		fi
362
		echo "DEVICE=$EXTIF"
371
		echo "DEVICE=$EXTIF"
363
		echo "IPADDR="
372
		echo "IPADDR="
364
		echo "NETMASK="
373
		echo "NETMASK="
365
		echo "GATEWAY="
374
		echo "GATEWAY="
366
		echo "DNS1="
375
		echo "DNS1="
367
		echo "DNS2="
376
		echo "DNS2="
368
		echo "ONBOOT=yes"
377
		echo "ONBOOT=yes"
369
		exit 1
378
		exit 1
370
	fi
379
	fi
371
	echo -n "."
380
	echo -n "."
372
# Test if default GW is alive
381
# Test if default GW is alive
373
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $PUBLIC_GATEWAY|grep response|cut -d" " -f2`
382
	arp_reply=`LANG=en_US.UTF8 /usr/sbin/arping -b -I$EXTIF -c1 -w2 $PUBLIC_GATEWAY|grep response|cut -d" " -f2`
374
	if [ "$(expr $arp_reply)" -eq 0 ]
383
	if [ "$(expr $arp_reply)" -eq 0 ]
375
		then
384
		then
376
		if [ $Lang == "fr" ]
385
		if [ $Lang == "fr" ]
377
		then
386
		then
378
			echo -e "\nÉchec"
387
			echo -e "\nÉchec"
379
			echo "Le routeur de sortie ou la Box Internet ($PUBLIC_GATEWAY) ne répond pas."
388
			echo "Le routeur de sortie ou la Box Internet ($PUBLIC_GATEWAY) ne répond pas."
380
			echo "Réglez ce problème puis relancez ce script."
389
			echo "Réglez ce problème puis relancez ce script."
381
		else
390
		else
382
			echo -e "\nFailed"
391
			echo -e "\nFailed"
383
			echo "The Internet gateway or the ISP equipment ($PUBLIC_GATEWAY) doesn't answered."
392
			echo "The Internet gateway or the ISP equipment ($PUBLIC_GATEWAY) doesn't answered."
384
			echo "Resolv this problem, then restart this script."
393
			echo "Resolv this problem, then restart this script."
385
		fi
394
		fi
386
		exit 1
395
		exit 1
387
	fi
396
	fi
388
	echo -n "."
397
	echo -n "."
389
# Test Internet connectivity
398
# Test Internet connectivity
390
	domainTested='www.google.com'
399
	domainTested='www.google.com'
391
	/usr/bin/curl -s --head "$domainTested" &>/dev/null
400
	/usr/bin/curl -s --head "$domainTested" &>/dev/null
392
	if [ $? -ne 0 ]; then
401
	if [ $? -ne 0 ]; then
393
		if [ $Lang == "fr" ]
402
		if [ $Lang == "fr" ]
394
		then
403
		then
395
			echo -e "\nLa tentative de connexion vers Internet a échoué ($domainTested)."
404
			echo -e "\nLa tentative de connexion vers Internet a échoué ($domainTested)."
396
			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
405
			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
397
			echo "Vérifiez la validité des adresses IP des DNS."
406
			echo "Vérifiez la validité des adresses IP des DNS."
398
		else
407
		else
399
			echo -e "\nThe Internet connection try failed ($domainTested)."
408
			echo -e "\nThe Internet connection try failed ($domainTested)."
400
			echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
409
			echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
401
			echo "Verify the DNS IP addresses"
410
			echo "Verify the DNS IP addresses"
402
		fi
411
		fi
403
		exit 1
412
		exit 1
404
	fi
413
	fi
405
	echo ". : ok"
414
	echo ". : ok"
406
} # End of network_testing()
415
} # End of network_testing()
407
 
416
 
408
#######################################################################
417
#######################################################################
409
##                             "init"                                ##
418
##                             "init"                                ##
410
## - Creation of ALCASAR conf file "/usr/local/etc/alcasar.conf      ##
419
## - Creation of ALCASAR conf file "/usr/local/etc/alcasar.conf      ##
411
## - Creation of random password for GRUB, mariadb (admin and user)  ##
420
## - Creation of random password for GRUB, mariadb (admin and user)  ##
412
#######################################################################
421
#######################################################################
413
init()
422
init()
414
{
423
{
415
	if [ "$mode" != "update" ]
424
	if [ "$mode" != "update" ]
416
	then
425
	then
417
# On affecte le nom d'organisme
426
# On affecte le nom d'organisme
418
		header_install
427
		header_install
419
		ORGANISME=!
428
		ORGANISME=!
420
		PTN='^[a-zA-Z0-9-]*$'
429
		PTN='^[a-zA-Z0-9-]*$'
421
		until [[ "$ORGANISME" =~ $PTN ]]
430
		until [[ "$ORGANISME" =~ $PTN ]]
422
		do
431
		do
423
			if [ $Lang == "fr" ]
432
			if [ $Lang == "fr" ]
424
				then echo -n "Entrez le nom de votre organisme : "
433
				then echo -n "Entrez le nom de votre organisme : "
425
				else echo -n "Enter the name of your organism : "
434
				else echo -n "Enter the name of your organism : "
426
			fi
435
			fi
427
			read ORGANISME
436
			read ORGANISME
428
			if [ "$ORGANISME" == "" ]
437
			if [ "$ORGANISME" == "" ]
429
			then
438
			then
430
				ORGANISME=!
439
				ORGANISME=!
431
			fi
440
			fi
432
		done
441
		done
433
	fi
442
	fi
434
# On crée aléatoirement les mots de passe et les secrets partagés
443
# On crée aléatoirement les mots de passe et les secrets partagés
435
# We create random passwords and shared secrets
444
# We create random passwords and shared secrets
436
	rm -f $PASSWD_FILE
445
	rm -f $PASSWD_FILE
437
	echo "#####  ALCASAR ($ORGANISME) security passwords  #####" > $PASSWD_FILE
446
	echo "#####  ALCASAR ($ORGANISME) security passwords  #####" > $PASSWD_FILE
438
	grub2pwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c8`
447
	grub2pwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c8`
439
	pbkdf2=`( echo $grub2pwd ; echo $grub2pwd ) | \
448
	pbkdf2=`( echo $grub2pwd ; echo $grub2pwd ) | \
440
		LC_ALL=C /usr/bin/grub2-mkpasswd-pbkdf2 | \
449
		LC_ALL=C /usr/bin/grub2-mkpasswd-pbkdf2 | \
441
		grep -v '[eE]nter password:' | \
450
		grep -v '[eE]nter password:' | \
442
		sed -e "s/PBKDF2 hash of your password is //"`
451
		sed -e "s/PBKDF2 hash of your password is //"`
443
	echo "GRUB2_PASSWORD=$pbkdf2" > /boot/grub2/user.cfg
452
	echo "GRUB2_PASSWORD=$pbkdf2" > /boot/grub2/user.cfg
444
	[ -e /root/grub.default ] || cp /etc/grub.d/10_linux /root/grub.default
453
	[ -e /root/grub.default ] || cp /etc/grub.d/10_linux /root/grub.default
445
	cp -f $DIR_CONF/grub-10_linux /etc/grub.d/10_linux  # Request password only on menu editing attempts (not when selecting an entry)
454
	cp -f $DIR_CONF/grub-10_linux /etc/grub.d/10_linux  # Request password only on menu editing attempts (not when selecting an entry)
446
	chmod 0600 /boot/grub2/user.cfg
455
	chmod 0600 /boot/grub2/user.cfg
447
	echo "# Login name and password to protect GRUB2 boot menu (!!!qwerty keyboard) : " > $PASSWD_FILE
456
	echo "# Login name and password to protect GRUB2 boot menu (!!!qwerty keyboard) : " > $PASSWD_FILE
448
	echo "GRUB2_user=root" >> $PASSWD_FILE
457
	echo "GRUB2_user=root" >> $PASSWD_FILE
449
	echo "GRUB2_password=$grub2pwd" >> $PASSWD_FILE
458
	echo "GRUB2_password=$grub2pwd" >> $PASSWD_FILE
450
	mysqlpwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
459
	mysqlpwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
451
	echo "# Login name and Password of MariaDB administrator:" >> $PASSWD_FILE
460
	echo "# Login name and Password of MariaDB administrator:" >> $PASSWD_FILE
452
	echo "db_root=$mysqlpwd" >> $PASSWD_FILE
461
	echo "db_root=$mysqlpwd" >> $PASSWD_FILE
453
	radiuspwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
462
	radiuspwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
454
	echo "# Login name and password of MariaDB user:" >> $PASSWD_FILE
463
	echo "# Login name and password of MariaDB user:" >> $PASSWD_FILE
455
	echo "db_user=$DB_USER" >> $PASSWD_FILE
464
	echo "db_user=$DB_USER" >> $PASSWD_FILE
456
	echo "db_password=$radiuspwd" >> $PASSWD_FILE
465
	echo "db_password=$radiuspwd" >> $PASSWD_FILE
457
	secretuam=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
466
	secretuam=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
458
	echo "# Shared secret between the script 'intercept.php' and coova-chilli:" >> $PASSWD_FILE
467
	echo "# Shared secret between the script 'intercept.php' and coova-chilli:" >> $PASSWD_FILE
459
	echo "secret_uam=$secretuam" >> $PASSWD_FILE
468
	echo "secret_uam=$secretuam" >> $PASSWD_FILE
460
	secretradius=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
469
	secretradius=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
461
	echo "# Shared secret between coova-chilli and FreeRadius:" >> $PASSWD_FILE
470
	echo "# Shared secret between coova-chilli and FreeRadius:" >> $PASSWD_FILE
462
	echo "secret_radius=$secretradius" >> $PASSWD_FILE
471
	echo "secret_radius=$secretradius" >> $PASSWD_FILE
463
	csrfkey=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
472
	csrfkey=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
464
	echo "# Key used to create CSRF-tokens in several ACC forms" >> $PASSWD_FILE
473
	echo "# Key used to create CSRF-tokens in several ACC forms" >> $PASSWD_FILE
465
	echo "csrf_key=$csrfkey" >> $PASSWD_FILE
474
	echo "csrf_key=$csrfkey" >> $PASSWD_FILE
466
	chmod 640 $PASSWD_FILE
475
	chmod 640 $PASSWD_FILE
467
#  copy scripts in in /usr/local/bin
476
#  copy scripts in in /usr/local/bin
468
	cp -fr $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown -R root:root $DIR_DEST_BIN/alcasar* ; chmod -R 740 $DIR_DEST_BIN/alcasar*
477
	cp -fr $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown -R root:root $DIR_DEST_BIN/alcasar* ; chmod -R 740 $DIR_DEST_BIN/alcasar*
469
#  copy conf files in /usr/local/etc
478
#  copy conf files in /usr/local/etc
470
	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*
479
	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*
471
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_BIN/alcasar-mysql.sh
480
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_BIN/alcasar-mysql.sh
472
# generate central conf file
481
# generate central conf file
473
	cat <<EOF > $CONF_FILE
482
	cat <<EOF > $CONF_FILE
474
##########################################
483
##########################################
475
##                                      ##
484
##                                      ##
476
##          ALCASAR Parameters          ##
485
##          ALCASAR Parameters          ##
477
##                                      ##
486
##                                      ##
478
##########################################
487
##########################################
479
 
488
 
480
INSTALL_DATE=$DATE
489
INSTALL_DATE=$DATE
481
VERSION=$VERSION
490
VERSION=$VERSION
482
ORGANISM=$ORGANISME
491
ORGANISM=$ORGANISME
483
EOF
492
EOF
484
	chmod o-rwx $CONF_FILE
493
	chmod o-rwx $CONF_FILE
485
} # End of init()
494
} # End of init()
486
 
495
 
487
#########################################################
496
#########################################################
488
##                     "network"                       ##
497
##                     "network"                       ##
489
## - Define the several network address                ##
498
## - Define the several network address                ##
490
## - Define the DNS naming                             ##
499
## - Define the DNS naming                             ##
491
## - INTIF parameters (consultation network)           ##
500
## - INTIF parameters (consultation network)           ##
492
## - Write "/etc/hosts" file                           ##
501
## - Write "/etc/hosts" file                           ##
493
## - write "hosts.allow" & "hosts.deny" files          ##
502
## - write "hosts.allow" & "hosts.deny" files          ##
494
#########################################################
503
#########################################################
495
network()
504
network()
496
{
505
{
497
	header_install
506
	header_install
498
	if [ "$mode" != "update" ]
507
	if [ "$mode" != "update" ]
499
		then
508
		then
500
		if [ $Lang == "fr" ]
509
		if [ $Lang == "fr" ]
501
			then echo "Par défaut, l'adresse IP d'ALCASAR sur le réseau de consultation est : $DEFAULT_PRIVATE_IP_MASK"
510
			then echo "Par défaut, l'adresse IP d'ALCASAR sur le réseau de consultation est : $DEFAULT_PRIVATE_IP_MASK"
502
			else echo "The default ALCASAR IP address on consultation network is : $DEFAULT_PRIVATE_IP_MASK"
511
			else echo "The default ALCASAR IP address on consultation network is : $DEFAULT_PRIVATE_IP_MASK"
503
		fi
512
		fi
504
		response=0
513
		response=0
505
		PTN='^[oOyYnN]?$'
514
		PTN='^[oOyYnN]?$'
506
		until [[ "$response" =~ $PTN ]]
515
		until [[ "$response" =~ $PTN ]]
507
		do
516
		do
508
			if [ $Lang == "fr" ]
517
			if [ $Lang == "fr" ]
509
				then echo -n "Voulez-vous utiliser cette adresse et ce plan d'adressage (recommandé) (O/n)? : "
518
				then echo -n "Voulez-vous utiliser cette adresse et ce plan d'adressage (recommandé) (O/n)? : "
510
				else echo -n "Do you want to use this IP address and this IP addressing plan (recommanded) (Y/n)? : "
519
				else echo -n "Do you want to use this IP address and this IP addressing plan (recommanded) (Y/n)? : "
511
			fi
520
			fi
512
			read response
521
			read response
513
		done
522
		done
514
		if [ "$response" = "n" ] || [ "$response" = "N" ]
523
		if [ "$response" = "n" ] || [ "$response" = "N" ]
515
		then
524
		then
516
			PRIVATE_IP_MASK="0"
525
			PRIVATE_IP_MASK="0"
517
			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:]]$'
526
			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:]]$'
518
			until [[ $(expr "$PRIVATE_IP_MASK" : $PTN) -gt 0 ]]
527
			until [[ $(expr "$PRIVATE_IP_MASK" : $PTN) -gt 0 ]]
519
			do
528
			do
520
				if [ $Lang == "fr" ]
529
				if [ $Lang == "fr" ]
521
					then echo -n "Entrez l'adresse IP d'ALCASAR au format CIDR (a.b.c.d/xx) : "
530
					then echo -n "Entrez l'adresse IP d'ALCASAR au format CIDR (a.b.c.d/xx) : "
522
					else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
531
					else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
523
				fi
532
				fi
524
				read PRIVATE_IP_MASK
533
				read PRIVATE_IP_MASK
525
			done
534
			done
526
		else
535
		else
527
			PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
536
			PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
528
		fi
537
		fi
529
	else
538
	else
530
		PRIVATE_IP_MASK=`grep ^PRIVATE_IP= /var/tmp/conf/etc/alcasar.conf|cut -d"=" -f2`
539
		PRIVATE_IP_MASK=`grep ^PRIVATE_IP= /var/tmp/conf/etc/alcasar.conf|cut -d"=" -f2`
531
		rm -rf /var/tmp/conf
540
		rm -rf /var/tmp/conf
532
	fi
541
	fi
533
# Define LAN side global parameters
542
# Define LAN side global parameters
534
	hostnamectl set-hostname $HOSTNAME.$DOMAIN
543
	hostnamectl set-hostname $HOSTNAME.$DOMAIN
535
	PRIVATE_NETWORK=`/bin/ipcalc -n $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network address (ie.: 192.168.182.0)
544
	PRIVATE_NETWORK=`/bin/ipcalc -n $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network address (ie.: 192.168.182.0)
536
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f4`					# last octet of LAN address
545
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f4`					# last octet of LAN address
537
	PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network mask (ie.: 255.255.255.0)
546
	PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network mask (ie.: 255.255.255.0)
538
	PRIVATE_PREFIX=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2`					# network prefix (ie. 24)
547
	PRIVATE_PREFIX=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2`					# network prefix (ie. 24)
539
	PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1`						# ALCASAR private ip address (consultation LAN side)
548
	PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1`						# ALCASAR private ip address (consultation LAN side)
540
	if [ $PRIVATE_IP == $PRIVATE_NETWORK ]								# when entering network address instead of ip address
549
	if [ $PRIVATE_IP == $PRIVATE_NETWORK ]								# when entering network address instead of ip address
541
	then
550
	then
542
		PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`
551
		PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`
543
		PRIVATE_IP_MASK=`echo $PRIVATE_IP/$PRIVATE_PREFIX`
552
		PRIVATE_IP_MASK=`echo $PRIVATE_IP/$PRIVATE_PREFIX`
544
	fi
553
	fi
545
	private_ip_ending=`echo $PRIVATE_IP | cut -d"." -f4`						# last octet of LAN address
554
	private_ip_ending=`echo $PRIVATE_IP | cut -d"." -f4`						# last octet of LAN address
546
	PRIVATE_SECOND_IP=`echo $PRIVATE_IP | cut -d"." -f1-3`"."`expr $private_ip_ending + 1`		# second network address (ex.: 192.168.182.2)
555
	PRIVATE_SECOND_IP=`echo $PRIVATE_IP | cut -d"." -f1-3`"."`expr $private_ip_ending + 1`		# second network address (ex.: 192.168.182.2)
547
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$PRIVATE_PREFIX						# ie.: 192.168.182.0/24
556
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$PRIVATE_PREFIX						# ie.: 192.168.182.0/24
548
	classe=$((PRIVATE_PREFIX/8))									# ie.: 2=classe B, 3=classe C
557
	classe=$((PRIVATE_PREFIX/8))									# ie.: 2=classe B, 3=classe C
549
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.				# compatibility with hosts.allow et hosts.deny (ie.: 192.168.182.)
558
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.				# compatibility with hosts.allow et hosts.deny (ie.: 192.168.182.)
550
	PRIVATE_MAC=`/usr/sbin/ip link show $INTIF | grep ether | cut -d" " -f6| sed 's/:/-/g'| awk '{print toupper($0)}'` 	# MAC address of INTIF
559
	PRIVATE_MAC=`/usr/sbin/ip link show $INTIF | grep ether | cut -d" " -f6| sed 's/:/-/g'| awk '{print toupper($0)}'` 	# MAC address of INTIF
551
# Define Internet parameters
560
# Define Internet parameters
552
	DNS1=`cat /etc/sysconfig/network-scripts/ifcfg-$EXTIF | grep '^DNS1='| cut -d"=" -f2`	# 1st DNS server
561
	DNS1=`cat /etc/sysconfig/network-scripts/ifcfg-$EXTIF | grep '^DNS1='| cut -d"=" -f2`	# 1st DNS server
553
	DNS2=`cat /etc/sysconfig/network-scripts/ifcfg-$EXTIF | grep '^DNS2=' | cut -d"=" -f2`	# 2nd DNS server
562
	DNS2=`cat /etc/sysconfig/network-scripts/ifcfg-$EXTIF | grep '^DNS2=' | cut -d"=" -f2`	# 2nd DNS server
554
	DNS1=${DNS1:=208.67.220.220}
563
	DNS1=${DNS1:=208.67.220.220}
555
	DNS2=${DNS2:=208.67.222.222}
564
	DNS2=${DNS2:=208.67.222.222}
556
	PUBLIC_NETMASK=`/bin/ipcalc -m $PUBLIC_IP_MASK | cut -d"=" -f2`
565
	PUBLIC_NETMASK=`/bin/ipcalc -m $PUBLIC_IP_MASK | cut -d"=" -f2`
557
	PUBLIC_PREFIX=`/bin/ipcalc -p $PUBLIC_IP $PUBLIC_NETMASK|cut -d"=" -f2`
566
	PUBLIC_PREFIX=`/bin/ipcalc -p $PUBLIC_IP $PUBLIC_NETMASK|cut -d"=" -f2`
558
	PUBLIC_NETWORK=`/bin/ipcalc -n $PUBLIC_IP/$PUBLIC_PREFIX|cut -d"=" -f2`
567
	PUBLIC_NETWORK=`/bin/ipcalc -n $PUBLIC_IP/$PUBLIC_PREFIX|cut -d"=" -f2`
559
# Write network parameters in the conf file
568
# Write network parameters in the conf file
560
	echo "HOSTNAME=$HOSTNAME" >> $CONF_FILE
569
	echo "HOSTNAME=$HOSTNAME" >> $CONF_FILE
561
	echo "DOMAIN=$DOMAIN" >> $CONF_FILE
570
	echo "DOMAIN=$DOMAIN" >> $CONF_FILE
562
	echo "EXTIF=$EXTIF" >> $CONF_FILE
571
	echo "EXTIF=$EXTIF" >> $CONF_FILE
563
	echo "INTIF=$INTIF" >> $CONF_FILE
572
	echo "INTIF=$INTIF" >> $CONF_FILE
564
# Retrieve NIC name of other consultation LAN
573
# Retrieve NIC name of other consultation LAN
565
	INTERFACES=`/usr/sbin/ip link|grep '^[[:digit:]]:'|grep -v "^lo\|$EXTIF\|tun0"|cut -d " " -f2|tr -d ":"`
574
	INTERFACES=`/usr/sbin/ip link|grep '^[[:digit:]]:'|grep -v "^lo\|$EXTIF\|tun0"|cut -d " " -f2|tr -d ":"`
566
	for i in $INTERFACES
575
	for i in $INTERFACES
567
	do
576
	do
568
		SUB=`echo ${i:0:2}`
577
		SUB=`echo ${i:0:2}`
569
		if [ $SUB = "wl" ]
578
		if [ $SUB = "wl" ]
570
			then WIFIF=$i
579
			then WIFIF=$i
571
		elif [ "$i" != "$INTIF" ] && [ $SUB != "ww" ]
580
		elif [ "$i" != "$INTIF" ] && [ $SUB != "ww" ]
572
			then LANIF=$i
581
			then LANIF=$i
573
		fi
582
		fi
574
	done
583
	done
575
	if [ -n "$WIFIF" ]
584
	if [ -n "$WIFIF" ]
576
		then echo "WIFIF=$WIFIF" >> $CONF_FILE
585
		then echo "WIFIF=$WIFIF" >> $CONF_FILE
577
	elif [ -n "$LANIF" ]
586
	elif [ -n "$LANIF" ]
578
		then echo "LANIF=$LANIF" >> $CONF_FILE
587
		then echo "LANIF=$LANIF" >> $CONF_FILE
579
	fi
588
	fi
580
	IP_SETTING=`grep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2` # test static or dynamic
589
	IP_SETTING=`grep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2` # test static or dynamic
581
	if [ $IP_SETTING == "dhcp" ]
590
	if [ $IP_SETTING == "dhcp" ]
582
	then
591
	then
583
		DHCP_DNS_servers=`cat /var/lib/dhclient/dhclient--$EXTIF.lease |grep domain-name-servers|sed -n "1 p"| rev|cut -d" " -f1|rev|tr -d ';'`
592
		DHCP_DNS_servers=`cat /var/lib/dhclient/dhclient--$EXTIF.lease |grep domain-name-servers|sed -n "1 p"| rev|cut -d" " -f1|rev|tr -d ';'`
584
		DNS1=`echo $DHCP_DNS_servers | cut -d"," -f1`
593
		DNS1=`echo $DHCP_DNS_servers | cut -d"," -f1`
585
		DNS2=`echo $DHCP_DNS_servers | cut -d"," -f2`
594
		DNS2=`echo $DHCP_DNS_servers | cut -d"," -f2`
586
		echo "PUBLIC_IP=dhcp" >> $CONF_FILE
595
		echo "PUBLIC_IP=dhcp" >> $CONF_FILE
587
		echo "GW=dhcp" >> $CONF_FILE
596
		echo "GW=dhcp" >> $CONF_FILE
588
	else
597
	else
589
		echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $CONF_FILE
598
		echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $CONF_FILE
590
		echo "GW=$PUBLIC_GATEWAY" >> $CONF_FILE
599
		echo "GW=$PUBLIC_GATEWAY" >> $CONF_FILE
591
	fi
600
	fi
592
	echo "DNS1=$DNS1" >> $CONF_FILE
601
	echo "DNS1=$DNS1" >> $CONF_FILE
593
	echo "DNS2=$DNS2" >> $CONF_FILE
602
	echo "DNS2=$DNS2" >> $CONF_FILE
594
	echo "PROXY=off" >> $CONF_FILE
603
	echo "PROXY=off" >> $CONF_FILE
595
	echo "PROXY_IP=\"192.168.0.100:80\"" >> $CONF_FILE
604
	echo "PROXY_IP=\"192.168.0.100:80\"" >> $CONF_FILE
596
	echo "PUBLIC_WEIGHT=1" >> $CONF_FILE
605
	echo "PUBLIC_WEIGHT=1" >> $CONF_FILE
597
	echo "PUBLIC_MTU=$MTU" >> $CONF_FILE
606
	echo "PUBLIC_MTU=$MTU" >> $CONF_FILE
598
	echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $CONF_FILE
607
	echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $CONF_FILE
599
	echo "DHCP=on" >> $CONF_FILE
608
	echo "DHCP=on" >> $CONF_FILE
600
	echo "EXT_DHCP_IP=" >> $CONF_FILE
609
	echo "EXT_DHCP_IP=" >> $CONF_FILE
601
	echo "RELAY_DHCP_IP=" >> $CONF_FILE
610
	echo "RELAY_DHCP_IP=" >> $CONF_FILE
602
	echo "RELAY_DHCP_PORT=" >> $CONF_FILE
611
	echo "RELAY_DHCP_PORT=" >> $CONF_FILE
603
	echo "INT_DNS_DOMAIN=" >> $CONF_FILE
612
	echo "INT_DNS_DOMAIN=" >> $CONF_FILE
604
	echo "INT_DNS_IP=" >> $CONF_FILE
613
	echo "INT_DNS_IP=" >> $CONF_FILE
605
	echo "INT_DNS_ACTIVE=off" >> $CONF_FILE
614
	echo "INT_DNS_ACTIVE=off" >> $CONF_FILE
606
# network default
615
# network default
607
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
616
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
608
	cat <<EOF > /etc/sysconfig/network
617
	cat <<EOF > /etc/sysconfig/network
609
NETWORKING=yes
618
NETWORKING=yes
610
FORWARD_IPV4=true
619
FORWARD_IPV4=true
611
EOF
620
EOF
612
# write "/etc/hosts"
621
# write "/etc/hosts"
613
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
622
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
614
	cat <<EOF > /etc/hosts
623
	cat <<EOF > /etc/hosts
615
127.0.0.1	localhost
624
127.0.0.1	localhost
616
$PRIVATE_IP	$HOSTNAME
625
$PRIVATE_IP	$HOSTNAME
617
EOF
626
EOF
618
# write EXTIF (Internet) config
627
# write EXTIF (Internet) config
619
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
628
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
620
	if [ $IP_SETTING == "dhcp" ]
629
	if [ $IP_SETTING == "dhcp" ]
621
	then
630
	then
622
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
631
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
623
DEVICE=$EXTIF
632
DEVICE=$EXTIF
624
BOOTPROTO=dhcp
633
BOOTPROTO=dhcp
625
DNS1=127.0.0.1
634
DNS1=127.0.0.1
626
PEERDNS=no
635
PEERDNS=no
627
RESOLV_MODS=yes
636
RESOLV_MODS=yes
628
ONBOOT=yes
637
ONBOOT=yes
629
NOZEROCONF=yes
638
NOZEROCONF=yes
630
METRIC=10
639
METRIC=10
631
MII_NOT_SUPPORTED=yes
640
MII_NOT_SUPPORTED=yes
632
IPV6INIT=no
641
IPV6INIT=no
633
IPV6TO4INIT=no
642
IPV6TO4INIT=no
634
ACCOUNTING=no
643
ACCOUNTING=no
635
USERCTL=no
644
USERCTL=no
636
MTU=$MTU
645
MTU=$MTU
637
EOF
646
EOF
638
	else
647
	else
639
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
648
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
640
DEVICE=$EXTIF
649
DEVICE=$EXTIF
641
BOOTPROTO=static
650
BOOTPROTO=static
642
IPADDR=$PUBLIC_IP
651
IPADDR=$PUBLIC_IP
643
NETMASK=$PUBLIC_NETMASK
652
NETMASK=$PUBLIC_NETMASK
644
GATEWAY=$PUBLIC_GATEWAY
653
GATEWAY=$PUBLIC_GATEWAY
645
DNS1=$DNS1
654
DNS1=$DNS1
646
DNS2=$DNS2
655
DNS2=$DNS2
647
RESOLV_MODS=yes
656
RESOLV_MODS=yes
648
ONBOOT=yes
657
ONBOOT=yes
649
METRIC=10
658
METRIC=10
650
NOZEROCONF=yes
659
NOZEROCONF=yes
651
MII_NOT_SUPPORTED=yes
660
MII_NOT_SUPPORTED=yes
652
IPV6INIT=no
661
IPV6INIT=no
653
IPV6TO4INIT=no
662
IPV6TO4INIT=no
654
ACCOUNTING=no
663
ACCOUNTING=no
655
USERCTL=no
664
USERCTL=no
656
MTU=$MTU
665
MTU=$MTU
657
EOF
666
EOF
658
	fi
667
	fi
659
# write INTIF (consultation LAN) in normal mode
668
# write INTIF (consultation LAN) in normal mode
660
cp -f /etc/sysconfig/network-scripts/ifcfg-$INTIF /etc/sysconfig/network-scripts/default-ifcfg-$INTIF
669
cp -f /etc/sysconfig/network-scripts/ifcfg-$INTIF /etc/sysconfig/network-scripts/default-ifcfg-$INTIF
661
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
670
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
662
DEVICE=$INTIF
671
DEVICE=$INTIF
663
BOOTPROTO=static
672
BOOTPROTO=static
664
ONBOOT=yes
673
ONBOOT=yes
665
NOZEROCONF=yes
674
NOZEROCONF=yes
666
MII_NOT_SUPPORTED=yes
675
MII_NOT_SUPPORTED=yes
667
IPV6INIT=no
676
IPV6INIT=no
668
IPV6TO4INIT=no
677
IPV6TO4INIT=no
669
ACCOUNTING=no
678
ACCOUNTING=no
670
USERCTL=no
679
USERCTL=no
671
EOF
680
EOF
672
# write INTIF in bypass mode (see "alcasar-bypass.sh")
681
# write INTIF in bypass mode (see "alcasar-bypass.sh")
673
	cat <<EOF > /etc/sysconfig/network-scripts/bypass-ifcfg-$INTIF
682
	cat <<EOF > /etc/sysconfig/network-scripts/bypass-ifcfg-$INTIF
674
DEVICE=$INTIF
683
DEVICE=$INTIF
675
BOOTPROTO=static
684
BOOTPROTO=static
676
IPADDR=$PRIVATE_IP
685
IPADDR=$PRIVATE_IP
677
NETMASK=$PRIVATE_NETMASK
686
NETMASK=$PRIVATE_NETMASK
678
ONBOOT=yes
687
ONBOOT=yes
679
METRIC=10
688
METRIC=10
680
NOZEROCONF=yes
689
NOZEROCONF=yes
681
MII_NOT_SUPPORTED=yes
690
MII_NOT_SUPPORTED=yes
682
IPV6INIT=no
691
IPV6INIT=no
683
IPV6TO4INIT=no
692
IPV6TO4INIT=no
684
ACCOUNTING=no
693
ACCOUNTING=no
685
USERCTL=no
694
USERCTL=no
686
EOF
695
EOF
687
######### Config WIFIF (consultation WIFI) ou LANIF (consultation LAN) in normal mode #################
696
######### Config WIFIF (consultation WIFI) ou LANIF (consultation LAN) in normal mode #################
688
	if [ -n "$WIFIF" ] && [ "$WIFIF" != "$INTIF" ]
697
	if [ -n "$WIFIF" ] && [ "$WIFIF" != "$INTIF" ]
689
	then
698
	then
690
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$WIFIF
699
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$WIFIF
691
DEVICE=$WIFIF
700
DEVICE=$WIFIF
692
BOOTPROTO=static
701
BOOTPROTO=static
693
ONBOOT=yes
702
ONBOOT=yes
694
NOZEROCONF=yes
703
NOZEROCONF=yes
695
MII_NOT_SUPPORTED=yes
704
MII_NOT_SUPPORTED=yes
696
IPV6INIT=no
705
IPV6INIT=no
697
IPV6TO4INIT=no
706
IPV6TO4INIT=no
698
ACCOUNTING=no
707
ACCOUNTING=no
699
USERCTL=no
708
USERCTL=no
700
EOF
709
EOF
701
	elif [ -n "$LANIF" ]
710
	elif [ -n "$LANIF" ]
702
	then
711
	then
703
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$LANIF
712
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$LANIF
704
DEVICE=$LANIF
713
DEVICE=$LANIF
705
BOOTPROTO=static
714
BOOTPROTO=static
706
ONBOOT=yes
715
ONBOOT=yes
707
NOZEROCONF=yes
716
NOZEROCONF=yes
708
MII_NOT_SUPPORTED=yes
717
MII_NOT_SUPPORTED=yes
709
IPV6INIT=no
718
IPV6INIT=no
710
IPV6TO4INIT=no
719
IPV6TO4INIT=no
711
ACCOUNTING=no
720
ACCOUNTING=no
712
USERCTL=no
721
USERCTL=no
713
EOF
722
EOF
714
	fi
723
	fi
715
# write hosts.allow & hosts.deny
724
# write hosts.allow & hosts.deny
716
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
725
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
717
	cat <<EOF > /etc/hosts.allow
726
	cat <<EOF > /etc/hosts.allow
718
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
727
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
719
sshd: ALL
728
sshd: ALL
720
ntpd: $PRIVATE_NETWORK_SHORT
729
ntpd: $PRIVATE_NETWORK_SHORT
721
EOF
730
EOF
722
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
731
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
723
	cat <<EOF > /etc/hosts.deny
732
	cat <<EOF > /etc/hosts.deny
724
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
733
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
725
EOF
734
EOF
726
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
735
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
727
# create the ip_blocked file with a first line (LAN between ALCASAR and the Internet GW)
736
# create the ip_blocked file with a first line (LAN between ALCASAR and the Internet GW)
728
	echo "#$PUBLIC_NETWORK/$PUBLIC_PREFIX LAN-ALCASAR-BOX" > $DIR_DEST_ETC/alcasar-ip-blocked
737
	echo "#$PUBLIC_NETWORK/$PUBLIC_PREFIX LAN-ALCASAR-BOX" > $DIR_DEST_ETC/alcasar-ip-blocked
729
# load conntrack ftp module
738
# load conntrack ftp module
730
	[ -e /etc/modprobe.preload.default ] || cp /etc/modprobe.preload /etc/modprobe.preload.default
739
	[ -e /etc/modprobe.preload.default ] || cp /etc/modprobe.preload /etc/modprobe.preload.default
731
	echo "nf_conntrack_ftp" >>  /etc/modprobe.preload
740
	echo "nf_conntrack_ftp" >>  /etc/modprobe.preload
732
# load ipt_NETFLOW module
741
# load ipt_NETFLOW module
733
	echo "ipt_NETFLOW" >>  /etc/modprobe.preload
742
	echo "ipt_NETFLOW" >>  /etc/modprobe.preload
734
# modify iptables service files (start with "alcasar-iptables.sh" and stop with flush)
743
# modify iptables service files (start with "alcasar-iptables.sh" and stop with flush)
735
	cp /lib/systemd/system/iptables.service /etc/systemd/system/iptables.service
744
	cp /lib/systemd/system/iptables.service /etc/systemd/system/iptables.service
736
	$SED 's/ExecStart=\/usr\/libexec\/iptables.init start/ExecStart=\/usr\/local\/bin\/alcasar-iptables.sh/' /etc/systemd/system/iptables.service
745
	$SED 's/ExecStart=\/usr\/libexec\/iptables.init start/ExecStart=\/usr\/local\/bin\/alcasar-iptables.sh/' /etc/systemd/system/iptables.service
737
	[ -e /usr/libexec/iptables.init.default ] || cp /usr/libexec/iptables.init /usr/libexec/iptables.init.default
746
	[ -e /usr/libexec/iptables.init.default ] || cp /usr/libexec/iptables.init /usr/libexec/iptables.init.default
738
	$SED "s?\[ -f \$IPTABLES_CONFIG \] .*?#&?" /usr/libexec/iptables.init # comment the test (flush all rules & policies)
747
	$SED "s?\[ -f \$IPTABLES_CONFIG \] .*?#&?" /usr/libexec/iptables.init # comment the test (flush all rules & policies)
739
# create the alcasar-network unit
748
# create the alcasar-network unit
740
	cat << EOF > /etc/systemd/system/alcasar-network.service
749
	cat << EOF > /etc/systemd/system/alcasar-network.service
741
#  This file is part of systemd.
750
#  This file is part of systemd.
742
#
751
#
743
#  systemd is free software; you can redistribute it and/or modify it
752
#  systemd is free software; you can redistribute it and/or modify it
744
#  under the terms of the GNU General Public License as published by
753
#  under the terms of the GNU General Public License as published by
745
#  the Free Software Foundation; either version 2 of the License, or
754
#  the Free Software Foundation; either version 2 of the License, or
746
#  (at your option) any later version.
755
#  (at your option) any later version.
747
 
756
 
748
# This unit starts alcasar-network.sh script.
757
# This unit starts alcasar-network.sh script.
749
[Unit]
758
[Unit]
750
Description=alcasar-network.sh execution
759
Description=alcasar-network.sh execution
751
After=network.target iptables.service
760
After=network.target iptables.service
752
 
761
 
753
[Service]
762
[Service]
754
Type=oneshot
763
Type=oneshot
755
RemainAfterExit=yes
764
RemainAfterExit=yes
756
ExecStart=$DIR_DEST_BIN/alcasar-network.sh
765
ExecStart=$DIR_DEST_BIN/alcasar-network.sh
757
ExecStop=$DIR_DEST_BIN/alcasar-network.sh
766
ExecStop=$DIR_DEST_BIN/alcasar-network.sh
758
TimeoutSec=0
767
TimeoutSec=0
759
 
768
 
760
[Install]
769
[Install]
761
WantedBy=multi-user.target
770
WantedBy=multi-user.target
762
EOF
771
EOF
763
	/usr/bin/systemctl daemon-reload
772
	/usr/bin/systemctl daemon-reload
764
 
773
 
765
# the script "$DIR_DEST_BIN/alcasar-iptables.sh" is started at the end of this script in order not to cut network flow in case of using ssh
774
# the script "$DIR_DEST_BIN/alcasar-iptables.sh" is started at the end of this script in order not to cut network flow in case of using ssh
766
} # End of network()
775
} # End of network()
767
 
776
 
768
##################################################################
777
##################################################################
769
##                           "CA"                               ##
778
##                           "CA"                               ##
770
## - Creating the CA and the server certificate (lighttpd)      ##
779
## - Creating the CA and the server certificate (lighttpd)      ##
771
##################################################################
780
##################################################################
772
CA()
781
CA()
773
{
782
{
774
	$DIR_DEST_BIN/alcasar-CA.sh
783
	$DIR_DEST_BIN/alcasar-CA.sh
775
	chmod 755 /etc/pki/
784
	chmod 755 /etc/pki/
776
	chown root:apache /etc/pki/CA; chmod 750 /etc/pki/CA
785
	chown root:apache /etc/pki/CA; chmod 750 /etc/pki/CA
777
	chown root:apache /etc/pki/CA/alcasar-ca.crt; chmod 640 /etc/pki/CA/alcasar-ca.crt
786
	chown root:apache /etc/pki/CA/alcasar-ca.crt; chmod 640 /etc/pki/CA/alcasar-ca.crt
778
	chown root:root /etc/pki/CA/private; chmod 700 /etc/pki/CA/private
787
	chown root:root /etc/pki/CA/private; chmod 700 /etc/pki/CA/private
779
	chmod 600 /etc/pki/CA/private/*
788
	chmod 600 /etc/pki/CA/private/*
780
	chown -R root:apache /etc/pki/tls/private; chmod 750 /etc/pki/tls/private
789
	chown -R root:apache /etc/pki/tls/private; chmod 750 /etc/pki/tls/private
781
	chmod 640 /etc/pki/tls/private/*
790
	chmod 640 /etc/pki/tls/private/*
782
	chmod 644 /etc/pki/tls/certs/*
791
	chmod 644 /etc/pki/tls/certs/*
783
} # End of CA()
792
} # End of CA()
784
 
793
 
785
######################################################
794
######################################################
786
##                       "ACC"                      ##
795
##                       "ACC"                      ##
787
## - copy ALCASAR Control Center (ACC) files        ##
796
## - copy ALCASAR Control Center (ACC) files        ##
788
## - configuration of the web server (Lighttpd)     ##
797
## - configuration of the web server (Lighttpd)     ##
789
## - creation of the first ACC admin account        ##
798
## - creation of the first ACC admin account        ##
790
## - secure the ACC access                          ##
799
## - secure the ACC access                          ##
791
######################################################
800
######################################################
792
ACC()
801
ACC()
793
{
802
{
794
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
803
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
795
	mkdir $DIR_WEB
804
	mkdir $DIR_WEB
796
# Copy & adapt ACC files
805
# Copy & adapt ACC files
797
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
806
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
798
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
807
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
799
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/welcome.php
808
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/welcome.php
800
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/welcome.php
809
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/welcome.php
801
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/welcome.php
810
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/welcome.php
802
	$SED "s?^\$csrf_key = .*?\$csrf_key = \"$csrfkey\"\;?g" $DIR_ACC/manager/htdocs/activity.php
811
	$SED "s?^\$csrf_key = .*?\$csrf_key = \"$csrfkey\"\;?g" $DIR_ACC/manager/htdocs/activity.php
803
	chown -R apache:apache $DIR_WEB/*
812
	chown -R apache:apache $DIR_WEB/*
804
# copy & adapt "freeradius-web" files
813
# copy & adapt "freeradius-web" files
805
	cp -rf $DIR_CONF/freeradius-web/ /etc/
814
	cp -rf $DIR_CONF/freeradius-web/ /etc/
806
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
815
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
807
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
816
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
808
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
817
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
809
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
818
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
810
	cat <<EOF > /etc/freeradius-web/naslist.conf
819
	cat <<EOF > /etc/freeradius-web/naslist.conf
811
nas1_name: alcasar-$ORGANISME
820
nas1_name: alcasar-$ORGANISME
812
nas1_model: Network Access Controler
821
nas1_model: Network Access Controler
813
nas1_ip: $PRIVATE_IP
822
nas1_ip: $PRIVATE_IP
814
nas1_port_num: 0
823
nas1_port_num: 0
815
nas1_community: public
824
nas1_community: public
816
EOF
825
EOF
817
	chown -R apache:apache /etc/freeradius-web/
826
	chown -R apache:apache /etc/freeradius-web/
818
# create the log & backup structure :
827
# create the log & backup structure :
819
# - base = users database
828
# - base = users database
820
# - archive = tarball of "base + http firewall + netflow"
829
# - archive = tarball of "base + http firewall + netflow"
821
# - security = watchdog log
830
# - security = watchdog log
822
# - conf_file = archive conf file (usefull in updating process)
831
# - conf_file = archive conf file (usefull in updating process)
823
	for i in base archive security activity_report iot_captures;
832
	for i in base archive security activity_report iot_captures;
824
	do
833
	do
825
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
834
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
826
	done
835
	done
827
	chown -R root:apache $DIR_SAVE
836
	chown -R root:apache $DIR_SAVE
828
# Configuring & securing php
837
# Configuring & securing php
829
	[ -e /etc/php.d/05_date.ini.default ] || cp /etc/php.d/05_date.ini /etc/php.d/05_date.ini.default
838
	[ -e /etc/php.d/05_date.ini.default ] || cp /etc/php.d/05_date.ini /etc/php.d/05_date.ini.default
830
	timezone=`timedatectl show --property=Timezone|cut -d"=" -f2`
839
	timezone=`timedatectl show --property=Timezone|cut -d"=" -f2`
831
	$SED "s?^;date.timezone =.*?date.timezone = $timezone?g" /etc/php.d/05_date.ini
840
	$SED "s?^;date.timezone =.*?date.timezone = $timezone?g" /etc/php.d/05_date.ini
832
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
841
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
833
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
842
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
834
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
843
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
835
	$SED "s?^display_errors.*?display_errors = Off?" /etc/php.ini
844
	$SED "s?^display_errors.*?display_errors = Off?" /etc/php.ini
836
	$SED "s?^display_startup_errors.*?display_startup_errors = Off?" /etc/php.ini
845
	$SED "s?^display_startup_errors.*?display_startup_errors = Off?" /etc/php.ini
837
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
846
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
838
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
847
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
839
	$SED "s?^allow_url_fopen.*?allow_url_fopen = Off?" /etc/php.ini
848
	$SED "s?^allow_url_fopen.*?allow_url_fopen = Off?" /etc/php.ini
840
# Configuring & securing Lighttpd
849
# Configuring & securing Lighttpd
841
	rm -rf /var/www/cgi-bin/* /var/www/perl/* /var/www/icons/README* /var/www/error/README*
850
	rm -rf /var/www/cgi-bin/* /var/www/perl/* /var/www/icons/README* /var/www/error/README*
842
	[ -e /etc/lighttpd/lighttpd.conf.default ] || cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.default
851
	[ -e /etc/lighttpd/lighttpd.conf.default ] || cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.default
843
	$SED "s?^server\.use-ipv6.*?server\.use-ipv6 = \"disable\"?g" /etc/lighttpd/lighttpd.conf
852
	$SED "s?^server\.use-ipv6.*?server\.use-ipv6 = \"disable\"?g" /etc/lighttpd/lighttpd.conf
844
	$SED "s?^#server\.bind.*?server\.bind = \"$PRIVATE_IP\"?g" /etc/lighttpd/lighttpd.conf
853
	$SED "s?^#server\.bind.*?server\.bind = \"$PRIVATE_IP\"?g" /etc/lighttpd/lighttpd.conf
845
	$SED "s?^server\.bind.*?server\.bind = \"$PRIVATE_IP\"?g" /etc/lighttpd/lighttpd.conf
854
	$SED "s?^server\.bind.*?server\.bind = \"$PRIVATE_IP\"?g" /etc/lighttpd/lighttpd.conf
846
	$SED "s?^#server\.tag.*?server\.tag = \"\"?g" /etc/lighttpd/lighttpd.conf
855
	$SED "s?^#server\.tag.*?server\.tag = \"\"?g" /etc/lighttpd/lighttpd.conf
847
	echo "include \"vhosts.d/alcasar.conf\"" >> /etc/lighttpd/lighttpd.conf
856
	echo "include \"vhosts.d/alcasar.conf\"" >> /etc/lighttpd/lighttpd.conf
848
 
857
 
849
	[ -e /etc/lighttpd/modules.conf.default ] || cp /etc/lighttpd/modules.conf /etc/lighttpd/modules.conf.default
858
	[ -e /etc/lighttpd/modules.conf.default ] || cp /etc/lighttpd/modules.conf /etc/lighttpd/modules.conf.default
850
	$SED "s?^#[ ]*\"mod_auth\",.*?\"mod_auth\",?g" /etc/lighttpd/modules.conf
859
	$SED "s?^#[ ]*\"mod_auth\",.*?\"mod_auth\",?g" /etc/lighttpd/modules.conf
851
	$SED "s?^#[ ]*\"mod_authn_file\",.*?\"mod_authn_file\",?g" /etc/lighttpd/modules.conf
860
	$SED "s?^#[ ]*\"mod_authn_file\",.*?\"mod_authn_file\",?g" /etc/lighttpd/modules.conf
852
	$SED "s?^#[ ]*\"mod_alias\",.*?\"mod_alias\",?g" /etc/lighttpd/modules.conf
861
	$SED "s?^#[ ]*\"mod_alias\",.*?\"mod_alias\",?g" /etc/lighttpd/modules.conf
853
	$SED "s?^#[ ]*\"mod_redirect\",.*?\"mod_redirect\",?g" /etc/lighttpd/modules.conf
862
	$SED "s?^#[ ]*\"mod_redirect\",.*?\"mod_redirect\",?g" /etc/lighttpd/modules.conf
854
	$SED "/^[ ]*\"mod_redirect\",/a\"mod_openssl\"," /etc/lighttpd/modules.conf
863
	$SED "/^[ ]*\"mod_redirect\",/a\"mod_openssl\"," /etc/lighttpd/modules.conf
855
	$SED "s?^#include \"conf.d/fastcgi.conf\".*?include \"conf.d/fastcgi.conf\"?g" /etc/lighttpd/modules.conf
864
	$SED "s?^#include \"conf.d/fastcgi.conf\".*?include \"conf.d/fastcgi.conf\"?g" /etc/lighttpd/modules.conf
856
 
865
 
857
	[ -e /etc/lighttpd/conf.d/fastcgi.conf.default ] || cp /etc/lighttpd/conf.d/fastcgi.conf /etc/lighttpd/conf.d/fastcgi.conf.default
866
	[ -e /etc/lighttpd/conf.d/fastcgi.conf.default ] || cp /etc/lighttpd/conf.d/fastcgi.conf /etc/lighttpd/conf.d/fastcgi.conf.default
858
	cp $DIR_CONF/lighttpd/conf.d/fastcgi.conf /etc/lighttpd/conf.d/fastcgi.conf
867
	cp $DIR_CONF/lighttpd/conf.d/fastcgi.conf /etc/lighttpd/conf.d/fastcgi.conf
859
 
868
 
860
	[ -e /etc/php-fpm.conf.default ] || cp /etc/php-fpm.conf /etc/php-fpm.conf.default
869
	[ -e /etc/php-fpm.conf.default ] || cp /etc/php-fpm.conf /etc/php-fpm.conf.default
861
	$SED "s?^;listen\.owner.*?listen\.owner = apache?g" /etc/php-fpm.conf
870
	$SED "s?^;listen\.owner.*?listen\.owner = apache?g" /etc/php-fpm.conf
862
	$SED "s?^;listen\.group.*?listen\.group = apache?g" /etc/php-fpm.conf
871
	$SED "s?^;listen\.group.*?listen\.group = apache?g" /etc/php-fpm.conf
863
	$SED "s?^;listen\.mode.*?listen\.mode = 0660?g" /etc/php-fpm.conf
872
	$SED "s?^;listen\.mode.*?listen\.mode = 0660?g" /etc/php-fpm.conf
864
 
873
 
865
	[ -d /etc/lighttpd/vhosts.d ] || mkdir /etc/lighttpd/vhosts.d
874
	[ -d /etc/lighttpd/vhosts.d ] || mkdir /etc/lighttpd/vhosts.d
866
	cp $DIR_CONF/lighttpd/vhosts.d/* /etc/lighttpd/vhosts.d/
875
	cp $DIR_CONF/lighttpd/vhosts.d/* /etc/lighttpd/vhosts.d/
867
	$SED 's/^$SERVER\["socket"\] == ".*:443.*/$SERVER\["socket"\] == "'"$PRIVATE_IP"':443" {/g' /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf
876
	$SED 's/^$SERVER\["socket"\] == ".*:443.*/$SERVER\["socket"\] == "'"$PRIVATE_IP"':443" {/g' /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf
868
	$SED "s/^\([\t ]*\)var.server_name.*/\1var.server_name = \"$PRIVATE_IP\"/g" /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf
877
	$SED "s/^\([\t ]*\)var.server_name.*/\1var.server_name = \"$PRIVATE_IP\"/g" /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf
869
	ln -s /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf /etc/lighttpd/vhosts.d/alcasar.conf
878
	ln -s /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf /etc/lighttpd/vhosts.d/alcasar.conf
870
 
879
 
871
	[ -d /var/log/lighttpd ] || mkdir /var/log/lighttpd
880
	[ -d /var/log/lighttpd ] || mkdir /var/log/lighttpd
872
	[ -e /var/log/lighttpd/access.log ] || touch /var/log/lighttpd/access.log
881
	[ -e /var/log/lighttpd/access.log ] || touch /var/log/lighttpd/access.log
873
	[ -e /var/log/lighttpd/error.log ] || touch /var/log/lighttpd/error.log
882
	[ -e /var/log/lighttpd/error.log ] || touch /var/log/lighttpd/error.log
874
 
883
 
875
	chown -R apache:apache /var/log/lighttpd
884
	chown -R apache:apache /var/log/lighttpd
876
 
885
 
877
# Creation of the first account (in 'admin' profile)
886
# Creation of the first account (in 'admin' profile)
878
	if [ "$mode" = "install" ]
887
	if [ "$mode" = "install" ]
879
	then
888
	then
880
		header_install
889
		header_install
881
# Creation of keys file for the admin account ("admin")
890
# Creation of keys file for the admin account ("admin")
882
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
891
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
883
		mkdir -p $DIR_DEST_ETC/digest
892
		mkdir -p $DIR_DEST_ETC/digest
884
		chmod 755 $DIR_DEST_ETC/digest
893
		chmod 755 $DIR_DEST_ETC/digest
885
		if [ $Lang == "fr" ]
894
		if [ $Lang == "fr" ]
886
			then echo "Création du premier compte administrateur : "
895
			then echo "Création du premier compte administrateur : "
887
			else echo "Creation of the first admin account : "
896
			else echo "Creation of the first admin account : "
888
		fi
897
		fi
889
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
898
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
890
		do
899
		do
891
			$DIR_DEST_BIN/alcasar-profil.sh --add admin
900
			$DIR_DEST_BIN/alcasar-profil.sh --add admin
892
		done
901
		done
893
	fi
902
	fi
894
# Creation of ACC certs links
903
# Creation of ACC certs links
895
	[ -d /var/www/html/certs ] || mkdir /var/www/html/certs
904
	[ -d /var/www/html/certs ] || mkdir /var/www/html/certs
896
	ln -s /etc/pki/CA/alcasar-ca.crt /var/www/html/certs/certificat_alcasar_ca.crt
905
	ln -s /etc/pki/CA/alcasar-ca.crt /var/www/html/certs/certificat_alcasar_ca.crt
897
# Run lighttpd after coova (in order waiting tun0 to be up)
906
# Run lighttpd after coova (in order waiting tun0 to be up)
898
	cp /lib/systemd/system/lighttpd.service /etc/systemd/system/lighttpd.service
907
	cp /lib/systemd/system/lighttpd.service /etc/systemd/system/lighttpd.service
899
	$SED "s?^After=.*?After=network.target remote-fs.target nss-lookup.target chilli.service?g" /etc/systemd/system/lighttpd.service
908
	$SED "s?^After=.*?After=network.target remote-fs.target nss-lookup.target chilli.service?g" /etc/systemd/system/lighttpd.service
900
	# Log file for ACC access imputability
909
	# Log file for ACC access imputability
901
	[ -e $DIR_SAVE/security/acc_access.log ] || touch $DIR_SAVE/security/acc_access.log
910
	[ -e $DIR_SAVE/security/acc_access.log ] || touch $DIR_SAVE/security/acc_access.log
902
	chown root:apache $DIR_SAVE/security/acc_access.log
911
	chown root:apache $DIR_SAVE/security/acc_access.log
903
	chmod 664 $DIR_SAVE/security/acc_access.log
912
	chmod 664 $DIR_SAVE/security/acc_access.log
904
# Copy IEEE-MAC-manuf list (origin from sanitized nmac file : see linuxnet.ca)
913
# Copy IEEE-MAC-manuf list (origin from sanitized nmac file : see linuxnet.ca)
905
    cp $DIR_CONF/nmap-mac-prefixes /usr/local/share/
914
    cp $DIR_CONF/nmap-mac-prefixes /usr/local/share/
906
} # End of ACC()
915
} # End of ACC()
907
 
916
 
908
#############################################################
917
#############################################################
909
##                     "time_server"                       ##
918
##                     "time_server"                       ##
910
## - Configuring NTP server                                ##
919
## - Configuring NTP server                                ##
911
#############################################################
920
#############################################################
912
time_server()
921
time_server()
913
{
922
{
914
# Set the Internet time server
923
# Set the Internet time server
915
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
924
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
916
	cat <<EOF > /etc/ntp/step-tickers
925
	cat <<EOF > /etc/ntp/step-tickers
917
0.fr.pool.ntp.org	# adapt to your country
926
0.fr.pool.ntp.org	# adapt to your country
918
1.fr.pool.ntp.org
927
1.fr.pool.ntp.org
919
2.fr.pool.ntp.org
928
2.fr.pool.ntp.org
920
EOF
929
EOF
921
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
930
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
922
	cat <<EOF > /etc/ntp.conf
931
	cat <<EOF > /etc/ntp.conf
923
server 0.fr.pool.ntp.org	# adapt to your country
932
server 0.fr.pool.ntp.org	# adapt to your country
924
server 1.fr.pool.ntp.org
933
server 1.fr.pool.ntp.org
925
server 2.fr.pool.ntp.org
934
server 2.fr.pool.ntp.org
926
server 127.127.1.0   		# local clock si NTP internet indisponible ...
935
server 127.127.1.0   		# local clock si NTP internet indisponible ...
927
fudge 127.127.1.0 stratum 10
936
fudge 127.127.1.0 stratum 10
928
restrict $PRIVATE_NETWORK mask $PRIVATE_NETMASK nomodify notrap
937
restrict $PRIVATE_NETWORK mask $PRIVATE_NETMASK nomodify notrap
929
restrict 127.0.0.1
938
restrict 127.0.0.1
930
driftfile /var/lib/ntp/drift
939
driftfile /var/lib/ntp/drift
931
logfile /var/log/ntp.log
940
logfile /var/log/ntp.log
932
disable monitor
941
disable monitor
933
EOF
942
EOF
934
	chown -R ntp:ntp /var/lib/ntp
943
	chown -R ntp:ntp /var/lib/ntp
935
# Synchronize now
944
# Synchronize now
936
	ntpd -4 -q -g &
945
	ntpd -4 -q -g &
937
} # End of time_server()
946
} # End of time_server()
938
 
947
 
939
#####################################################################
948
#####################################################################
940
##                           "init_db"                             ##
949
##                           "init_db"                             ##
941
## - Mysql initialization                                          ##
950
## - Mysql initialization                                          ##
942
## - Set admin (root) password                                     ##
951
## - Set admin (root) password                                     ##
943
## - Remove unused users & databases                               ##
952
## - Remove unused users & databases                               ##
944
## - Radius database creation                                      ##
953
## - Radius database creation                                      ##
945
## - Copy of accounting tables (mtotacct, totacct) & userinfo      ##
954
## - Copy of accounting tables (mtotacct, totacct) & userinfo      ##
946
#####################################################################
955
#####################################################################
947
init_db()
956
init_db()
948
{
957
{
949
	if [ "`systemctl is-active mysqld`" == "active" ]
958
	if [ "`systemctl is-active mysqld`" == "active" ]
950
	then
959
	then
951
		systemctl stop mysqld
960
		systemctl stop mysqld
952
	fi
961
	fi
953
	rm -rf /var/lib/mysql # to be sure that there is no former installation
962
	rm -rf /var/lib/mysql # to be sure that there is no former installation
954
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
963
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
955
	$SED "s?^tmpdir.*?tmpdir=/tmp?g" /etc/my.cnf
964
	$SED "s?^tmpdir.*?tmpdir=/tmp?g" /etc/my.cnf
956
	$SED "s?^port.*?#&?g" /etc/my.cnf # we use unix socket only
965
	$SED "s?^port.*?#&?g" /etc/my.cnf # we use unix socket only
957
	$SED "s?^;collation_server =.*?collation_server = utf8_unicode_ci?g" /etc/my.cnf
966
	$SED "s?^;collation_server =.*?collation_server = utf8_unicode_ci?g" /etc/my.cnf
958
	$SED "s?^;character_set_server =.*?character_set_server = utf8?g" /etc/my.cnf  # accentuated user names are allowed
967
	$SED "s?^;character_set_server =.*?character_set_server = utf8?g" /etc/my.cnf  # accentuated user names are allowed
959
	[ -e /etc/my.cnf.d/feedback.cnf ] && $SED "s?^plugin-load.*?#&?g" /etc/my.cnf.d/feedback.cnf # remove the feedback plugin (ALCASAR doesn't report anything !)
968
	[ -e /etc/my.cnf.d/feedback.cnf ] && $SED "s?^plugin-load.*?#&?g" /etc/my.cnf.d/feedback.cnf # remove the feedback plugin (ALCASAR doesn't report anything !)
960
	[ -e /etc/my.cnf.d/auth_gssapi.cnf ] && $SED "s?^plugin-load.*?#&?g" /etc/my.cnf.d/auth_gssapi.cnf # remove GSS plugin (ALCASAR doesn't use Kerberos)
969
	[ -e /etc/my.cnf.d/auth_gssapi.cnf ] && $SED "s?^plugin-load.*?#&?g" /etc/my.cnf.d/auth_gssapi.cnf # remove GSS plugin (ALCASAR doesn't use Kerberos)
961
	/usr/sbin/mysqld-prepare-db-dir > /dev/null 2>&1
970
	/usr/sbin/mysqld-prepare-db-dir > /dev/null 2>&1
962
	/usr/bin/systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
971
	/usr/bin/systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
963
	/usr/bin/systemctl start mysqld
972
	/usr/bin/systemctl start mysqld
964
	nb_round=1
973
	nb_round=1
965
	while [ ! -S /var/lib/mysql/mysql.sock ] && [ $nb_round -lt 10 ] # we wait until mariadb is on
974
	while [ ! -S /var/lib/mysql/mysql.sock ] && [ $nb_round -lt 10 ] # we wait until mariadb is on
966
	do
975
	do
967
		nb_round=`expr $nb_round + 1`
976
		nb_round=`expr $nb_round + 1`
968
		sleep 2
977
		sleep 2
969
	done
978
	done
970
	if [ ! -S /var/lib/mysql/mysql.sock ]
979
	if [ ! -S /var/lib/mysql/mysql.sock ]
971
	then
980
	then
972
		echo "Problème : la base données 'MariaDB' ne s'est pas lancée !"
981
		echo "Problème : la base données 'MariaDB' ne s'est pas lancée !"
973
		exit
982
		exit
974
	fi
983
	fi
975
# Secure the server
984
# Secure the server
976
	/usr/bin/mysql --execute "GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY '$mysqlpwd';"
985
	/usr/bin/mysql --execute "GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY '$mysqlpwd';"
977
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
986
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
978
	$MYSQL "DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;"
987
	$MYSQL "DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;"
979
	$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;"
988
	$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;"
980
# Create 'radius' database
989
# Create 'radius' database
981
	$MYSQL "CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES;"
990
	$MYSQL "CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES;"
982
# Add an empty radius database structure
991
# Add an empty radius database structure
983
	/usr/bin/mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/empty-radiusd-db.sql
992
	/usr/bin/mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/empty-radiusd-db.sql
984
# modify the start script in order to close accounting connexion when the system is comming down or up
993
# modify the start script in order to close accounting connexion when the system is comming down or up
985
	cp /lib/systemd/system/mysqld.service /etc/systemd/system/mysqld.service
994
	cp /lib/systemd/system/mysqld.service /etc/systemd/system/mysqld.service
986
	$SED "/^ExecStart=/a ExecStop=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /etc/systemd/system/mysqld.service
995
	$SED "/^ExecStart=/a ExecStop=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /etc/systemd/system/mysqld.service
987
	$SED "/^ExecStop=/a ExecStartPost=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /etc/systemd/system/mysqld.service
996
	$SED "/^ExecStop=/a ExecStartPost=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /etc/systemd/system/mysqld.service
988
	/usr/bin/systemctl unset-environment MYSQLD_OPTS
997
	/usr/bin/systemctl unset-environment MYSQLD_OPTS
989
	/usr/bin/systemctl daemon-reload
998
	/usr/bin/systemctl daemon-reload
990
} # End of init_db()
999
} # End of init_db()
991
 
1000
 
992
###################################################################
1001
###################################################################
993
##                           "freeradius"                        ##
1002
##                           "freeradius"                        ##
994
## - Set the configuration files                                 ##
1003
## - Set the configuration files                                 ##
995
## - Set the shared secret between coova-chilli and freeradius   ##
1004
## - Set the shared secret between coova-chilli and freeradius   ##
996
## - Adapt the Mysql conf file and counters                      ##
1005
## - Adapt the Mysql conf file and counters                      ##
997
###################################################################
1006
###################################################################
998
freeradius()
1007
freeradius()
999
{
1008
{
1000
	cp -f $DIR_CONF/empty-radiusd-db.sql /etc/raddb/
1009
	cp -f $DIR_CONF/empty-radiusd-db.sql /etc/raddb/
1001
	chown -R radius:radius /etc/raddb
1010
	chown -R radius:radius /etc/raddb
1002
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
1011
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
1003
# Set radius global parameters (radius.conf)
1012
# Set radius global parameters (radius.conf)
1004
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
1013
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
1005
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
1014
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
1006
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
1015
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
1007
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf # remove the proxy function
1016
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf # remove the proxy function
1008
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf # remove the proxy function
1017
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf # remove the proxy function
1009
# Add ALCASAR & Coovachilli dictionaries
1018
# Add ALCASAR & Coovachilli dictionaries
1010
	[ -e /etc/raddb/dictionary.default ] || cp /etc/raddb/dictionary /etc/raddb/dictionary.default
1019
	[ -e /etc/raddb/dictionary.default ] || cp /etc/raddb/dictionary /etc/raddb/dictionary.default
1011
	cp $DIR_CONF/radius/dictionary.alcasar /etc/raddb/
1020
	cp $DIR_CONF/radius/dictionary.alcasar /etc/raddb/
1012
	echo '$INCLUDE dictionary.alcasar' > /etc/raddb/dictionary
1021
	echo '$INCLUDE dictionary.alcasar' > /etc/raddb/dictionary
1013
	cp /usr/share/doc/coova-chilli/dictionary.coovachilli /etc/raddb/
1022
	cp /usr/share/doc/coova-chilli/dictionary.coovachilli /etc/raddb/
1014
	echo '$INCLUDE dictionary.coovachilli' >> /etc/raddb/dictionary
1023
	echo '$INCLUDE dictionary.coovachilli' >> /etc/raddb/dictionary
1015
# Set "client.conf" to describe radius clients (coova on 127.0.0.1)
1024
# Set "client.conf" to describe radius clients (coova on 127.0.0.1)
1016
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
1025
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
1017
	cat << EOF > /etc/raddb/clients.conf
1026
	cat << EOF > /etc/raddb/clients.conf
1018
client localhost {
1027
client localhost {
1019
	ipaddr = 127.0.0.1
1028
	ipaddr = 127.0.0.1
1020
	secret = $secretradius
1029
	secret = $secretradius
1021
	shortname = chilli
1030
	shortname = chilli
1022
	nas_type = other
1031
	nas_type = other
1023
}
1032
}
1024
EOF
1033
EOF
1025
# Set Virtual server
1034
# Set Virtual server
1026
    # Remvoveing all except "alcasar virtual site")
1035
    # Remvoveing all except "alcasar virtual site")
1027
	# INFO : To enable 802.1X, add the "innser-tunnel" virtual server (link in sites-enabled)  Change the firewall rules to allow "radius" extern connections.
1036
	# INFO : To enable 802.1X, add the "innser-tunnel" virtual server (link in sites-enabled)  Change the firewall rules to allow "radius" extern connections.
1028
	cp $DIR_CONF/radius/alcasar /etc/raddb/sites-available/alcasar
1037
	cp $DIR_CONF/radius/alcasar /etc/raddb/sites-available/alcasar
1029
	cp $DIR_CONF/radius/alcasar-with-ldap /etc/raddb/sites-available/alcasar-with-ldap
1038
	cp $DIR_CONF/radius/alcasar-with-ldap /etc/raddb/sites-available/alcasar-with-ldap
1030
	chown radius:apache /etc/raddb/sites-available/alcasar*
1039
	chown radius:apache /etc/raddb/sites-available/alcasar*
1031
	chmod 660 /etc/raddb/sites-available/alcasar*
1040
	chmod 660 /etc/raddb/sites-available/alcasar*
1032
	rm -f /etc/raddb/sites-enabled/*
1041
	rm -f /etc/raddb/sites-enabled/*
1033
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
1042
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
1034
# Set modules
1043
# Set modules
1035
	# Add custom LDAP "available module"
1044
	# Add custom LDAP "available module"
1036
	# INFO : To enable 802.1X, add the "eap" module and verify access to the keys (/etc/pki/tls/private/radius.pem). Change the firewall rules to allow "radius" extern connections.
1045
	# INFO : To enable 802.1X, add the "eap" module and verify access to the keys (/etc/pki/tls/private/radius.pem). Change the firewall rules to allow "radius" extern connections.
1037
	cp -f $DIR_CONF/radius/ldap-alcasar /etc/raddb/mods-available/
1046
	cp -f $DIR_CONF/radius/ldap-alcasar /etc/raddb/mods-available/
1038
	chown -R radius:radius /etc/raddb/mods-available/ldap-alcasar
1047
	chown -R radius:radius /etc/raddb/mods-available/ldap-alcasar
1039
	# Set only usefull modules for ALCASAR (! the module 'ldap-alcasar' is enabled only via ACC)
1048
	# Set only usefull modules for ALCASAR (! the module 'ldap-alcasar' is enabled only via ACC)
1040
	rm -rf  /etc/raddb/mods-enabled/*
1049
	rm -rf  /etc/raddb/mods-enabled/*
1041
	for mods in sql sqlcounter attr_filter expiration logintime pap expr always
1050
	for mods in sql sqlcounter attr_filter expiration logintime pap expr always
1042
	do
1051
	do
1043
		ln -s /etc/raddb/mods-available/$mods /etc/raddb/mods-enabled/$mods
1052
		ln -s /etc/raddb/mods-available/$mods /etc/raddb/mods-enabled/$mods
1044
	done
1053
	done
1045
# Configure SQL module
1054
# Configure SQL module
1046
	[ -e /etc/raddb/mods-available/sql.default ] || cp /etc/raddb/mods-available/sql /etc/raddb/mods-available/sql.default
1055
	[ -e /etc/raddb/mods-available/sql.default ] || cp /etc/raddb/mods-available/sql /etc/raddb/mods-available/sql.default
1047
	$SED "s?^[\t ]*driver =.*?driver = \"rlm_sql_mysql\"?g" /etc/raddb/mods-available/sql
1056
	$SED "s?^[\t ]*driver =.*?driver = \"rlm_sql_mysql\"?g" /etc/raddb/mods-available/sql
1048
	$SED "s?^[\t ]*dialect =.*?dialect = \"mysql\"?g" /etc/raddb/mods-available/sql
1057
	$SED "s?^[\t ]*dialect =.*?dialect = \"mysql\"?g" /etc/raddb/mods-available/sql
1049
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/mods-available/sql
1058
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/mods-available/sql
1050
	$SED "s?^#[\t ]*server =.*?server = \"localhost\"?g" /etc/raddb/mods-available/sql
1059
	$SED "s?^#[\t ]*server =.*?server = \"localhost\"?g" /etc/raddb/mods-available/sql
1051
	$SED "s?^#[\t ]*port =.*?port = \"3306\"?g" /etc/raddb/mods-available/sql
1060
	$SED "s?^#[\t ]*port =.*?port = \"3306\"?g" /etc/raddb/mods-available/sql
1052
	$SED "s?^#[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/mods-available/sql
1061
	$SED "s?^#[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/mods-available/sql
1053
	$SED "s?^#[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/mods-available/sql
1062
	$SED "s?^#[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/mods-available/sql
1054
	# no TLS encryption on 127.0.0.1
1063
	# no TLS encryption on 127.0.0.1
1055
	$SED "s?^[\t ]*ca_file =.*?#&?g" /etc/raddb/mods-available/sql
1064
	$SED "s?^[\t ]*ca_file =.*?#&?g" /etc/raddb/mods-available/sql
1056
	$SED "s?^[\t ]*ca_path =.*?#&?g" /etc/raddb/mods-available/sql
1065
	$SED "s?^[\t ]*ca_path =.*?#&?g" /etc/raddb/mods-available/sql
1057
	$SED "s?^[\t ]*certificate_file =.*?#&?g" /etc/raddb/mods-available/sql
1066
	$SED "s?^[\t ]*certificate_file =.*?#&?g" /etc/raddb/mods-available/sql
1058
	$SED "s?^[\t ]*private_key_file =.*?#&?g" /etc/raddb/mods-available/sql
1067
	$SED "s?^[\t ]*private_key_file =.*?#&?g" /etc/raddb/mods-available/sql
1059
	$SED "s?^[\t ]*cipher =.*?#&?g" /etc/raddb/mods-available/sql
1068
	$SED "s?^[\t ]*cipher =.*?#&?g" /etc/raddb/mods-available/sql
1060
	$SED "s?^[\t ]*tls_required =.*?tls_required = no?g" /etc/raddb/mods-available/sql
1069
	$SED "s?^[\t ]*tls_required =.*?tls_required = no?g" /etc/raddb/mods-available/sql
1061
# queries.conf modifications : case sensitive for username, check simultaneous use, patch on 'postauth' table, etc.
1070
# queries.conf modifications : case sensitive for username, check simultaneous use, patch on 'postauth' table, etc.
1062
	[ -e /etc/raddb/mods-config/sql/main/mysql/queries.conf.default ] || cp /etc/raddb/mods-config/sql/main/mysql/queries.conf /etc/raddb/mods-config/sql/main/mysql/queries.conf.default
1071
	[ -e /etc/raddb/mods-config/sql/main/mysql/queries.conf.default ] || cp /etc/raddb/mods-config/sql/main/mysql/queries.conf /etc/raddb/mods-config/sql/main/mysql/queries.conf.default
1063
	cp -f $DIR_CONF/radius/queries.conf /etc/raddb/mods-config/sql/main/mysql/queries.conf
1072
	cp -f $DIR_CONF/radius/queries.conf /etc/raddb/mods-config/sql/main/mysql/queries.conf
1064
	chown -R radius:radius /etc/raddb/mods-config/sql/main/mysql/queries.conf
1073
	chown -R radius:radius /etc/raddb/mods-config/sql/main/mysql/queries.conf
1065
# sqlcounter modifications
1074
# sqlcounter modifications
1066
	[ -e /etc/raddb/mods-available/sqlcounter.default ] || cp /etc/raddb/mods-available/sqlcounter /etc/raddb/mods-available/sqlcounter.default
1075
	[ -e /etc/raddb/mods-available/sqlcounter.default ] || cp /etc/raddb/mods-available/sqlcounter /etc/raddb/mods-available/sqlcounter.default
1067
	cp -f $DIR_CONF/radius/sqlcounter /etc/raddb/mods-available/sqlcounter
1076
	cp -f $DIR_CONF/radius/sqlcounter /etc/raddb/mods-available/sqlcounter
1068
	chown -R radius:radius /etc/raddb/mods-available/sqlcounter
1077
	chown -R radius:radius /etc/raddb/mods-available/sqlcounter
1069
# make certain that mysql is up before freeradius start
1078
# make certain that mysql is up before freeradius start
1070
	cp /lib/systemd/system/radiusd.service /etc/systemd/system/radiusd.service
1079
	cp /lib/systemd/system/radiusd.service /etc/systemd/system/radiusd.service
1071
	$SED "s?^After=.*?After=syslog.target network.target mysqld.service?g" /etc/systemd/system/radiusd.service
1080
	$SED "s?^After=.*?After=syslog.target network.target mysqld.service?g" /etc/systemd/system/radiusd.service
1072
	/usr/bin/systemctl daemon-reload
1081
	/usr/bin/systemctl daemon-reload
1073
# Allow apache to change some conf files (ie : ldap on/off)
1082
# Allow apache to change some conf files (ie : ldap on/off)
1074
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/mods-available
1083
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/mods-available
1075
	chmod 750 /etc/raddb /etc/raddb/sites-available /etc/raddb/mods-available
1084
	chmod 750 /etc/raddb /etc/raddb/sites-available /etc/raddb/mods-available
1076
} # End of freeradius()
1085
} # End of freeradius()
1077
 
1086
 
1078
#############################################################################
1087
#############################################################################
1079
##                                "chilli"                                 ##
1088
##                                "chilli"                                 ##
1080
## - Creation of the conf file and init file (systemd) for coova-chilli    ##
1089
## - Creation of the conf file and init file (systemd) for coova-chilli    ##
1081
## - Adapt the authentication web page (intercept.php)                     ##
1090
## - Adapt the authentication web page (intercept.php)                     ##
1082
#############################################################################
1091
#############################################################################
1083
chilli()
1092
chilli()
1084
{
1093
{
1085
# chilli unit for systemd
1094
# chilli unit for systemd
1086
	cat << EOF > /etc/systemd/system/chilli.service
1095
	cat << EOF > /etc/systemd/system/chilli.service
1087
#  This file is part of systemd.
1096
#  This file is part of systemd.
1088
#
1097
#
1089
#  systemd is free software; you can redistribute it and/or modify it
1098
#  systemd is free software; you can redistribute it and/or modify it
1090
#  under the terms of the GNU General Public License as published by
1099
#  under the terms of the GNU General Public License as published by
1091
#  the Free Software Foundation; either version 2 of the License, or
1100
#  the Free Software Foundation; either version 2 of the License, or
1092
#  (at your option) any later version.
1101
#  (at your option) any later version.
1093
 
1102
 
1094
# This unit launches coova-chilli a captive portal
1103
# This unit launches coova-chilli a captive portal
1095
[Unit]
1104
[Unit]
1096
Description=chilli is a captive portal daemon
1105
Description=chilli is a captive portal daemon
1097
After=network.target
1106
After=network.target
1098
 
1107
 
1099
[Service]
1108
[Service]
1100
Type=forking
1109
Type=forking
1101
ExecStart=/usr/libexec/chilli start
1110
ExecStart=/usr/libexec/chilli start
1102
ExecStop=/usr/libexec/chilli stop
1111
ExecStop=/usr/libexec/chilli stop
1103
ExecReload=/usr/libexec/chilli reload
1112
ExecReload=/usr/libexec/chilli reload
1104
PIDFile=/run/chilli.pid
1113
PIDFile=/run/chilli.pid
1105
 
1114
 
1106
[Install]
1115
[Install]
1107
WantedBy=multi-user.target
1116
WantedBy=multi-user.target
1108
EOF
1117
EOF
1109
# init file creation
1118
# init file creation
1110
	[ -e /etc/init.d/chilli.default ] || mv /etc/init.d/chilli /etc/init.d/chilli.default
1119
	[ -e /etc/init.d/chilli.default ] || mv /etc/init.d/chilli /etc/init.d/chilli.default
1111
	cat <<EOF > /etc/init.d/chilli
1120
	cat <<EOF > /etc/init.d/chilli
1112
#!/bin/sh
1121
#!/bin/sh
1113
#
1122
#
1114
# chilli CoovaChilli init
1123
# chilli CoovaChilli init
1115
#
1124
#
1116
# chkconfig: 2345 65 35
1125
# chkconfig: 2345 65 35
1117
# description: CoovaChilli
1126
# description: CoovaChilli
1118
### BEGIN INIT INFO
1127
### BEGIN INIT INFO
1119
# Provides:       chilli
1128
# Provides:       chilli
1120
# Required-Start: network
1129
# Required-Start: network
1121
# Should-Start:
1130
# Should-Start:
1122
# Required-Stop:  network
1131
# Required-Stop:  network
1123
# Should-Stop:
1132
# Should-Stop:
1124
# Default-Start:  2 3 5
1133
# Default-Start:  2 3 5
1125
# Default-Stop:
1134
# Default-Stop:
1126
# Description:    CoovaChilli access controller
1135
# Description:    CoovaChilli access controller
1127
### END INIT INFO
1136
### END INIT INFO
1128
 
1137
 
1129
[ -f /usr/sbin/chilli ] || exit 0
1138
[ -f /usr/sbin/chilli ] || exit 0
1130
. /etc/init.d/functions
1139
. /etc/init.d/functions
1131
CONFIG=/etc/chilli.conf
1140
CONFIG=/etc/chilli.conf
1132
pidfile=/run/chilli.pid
1141
pidfile=/run/chilli.pid
1133
[ -f \$CONFIG ] || {
1142
[ -f \$CONFIG ] || {
1134
	echo "\$CONFIG Not found"
1143
	echo "\$CONFIG Not found"
1135
	exit 0
1144
	exit 0
1136
}
1145
}
1137
current_users_file="/tmp/current_users.txt"	# file containing active users
1146
current_users_file="/tmp/current_users.txt"	# file containing active users
1138
RETVAL=0
1147
RETVAL=0
1139
prog="chilli"
1148
prog="chilli"
1140
case \$1 in
1149
case \$1 in
1141
	start)
1150
	start)
1142
		if [ -f \$pidfile ] ; then
1151
		if [ -f \$pidfile ] ; then
1143
			gprintf "chilli is already running"
1152
			gprintf "chilli is already running"
1144
		else
1153
		else
1145
			gprintf "Starting \$prog: "
1154
			gprintf "Starting \$prog: "
1146
			echo '' > \$current_users_file && chown root:apache \$current_users_file && chmod 660 \$current_users_file
1155
			echo '' > \$current_users_file && chown root:apache \$current_users_file && chmod 660 \$current_users_file
1147
			rm -f /run/chilli* # cleaning
1156
			rm -f /run/chilli* # cleaning
1148
			/usr/sbin/modprobe tun >/dev/null 2>&1
1157
			/usr/sbin/modprobe tun >/dev/null 2>&1
1149
			echo 1 > /proc/sys/net/ipv4/ip_forward
1158
			echo 1 > /proc/sys/net/ipv4/ip_forward
1150
			[ -e /dev/net/tun ] || {
1159
			[ -e /dev/net/tun ] || {
1151
				(cd /dev;
1160
				(cd /dev;
1152
				mkdir net;
1161
				mkdir net;
1153
				cd net;
1162
				cd net;
1154
				mknod tun c 10 200)
1163
				mknod tun c 10 200)
1155
			}
1164
			}
1156
			ifconfig $INTIF 0.0.0.0
1165
			ifconfig $INTIF 0.0.0.0
1157
			/usr/sbin/ethtool -K $INTIF gro off
1166
			/usr/sbin/ethtool -K $INTIF gro off
1158
			daemon /usr/sbin/chilli -c \$CONFIG --pidfile=\$pidfile &
1167
			daemon /usr/sbin/chilli -c \$CONFIG --pidfile=\$pidfile &
1159
			RETVAL=\$?
1168
			RETVAL=\$?
1160
		fi
1169
		fi
1161
		;;
1170
		;;
1162
 
1171
 
1163
	reload)
1172
	reload)
1164
		killall -HUP chilli
1173
		killall -HUP chilli
1165
		;;
1174
		;;
1166
 
1175
 
1167
	restart)
1176
	restart)
1168
		\$0 stop
1177
		\$0 stop
1169
		sleep 2
1178
		sleep 2
1170
		\$0 start
1179
		\$0 start
1171
		;;
1180
		;;
1172
 
1181
 
1173
	status)
1182
	status)
1174
		status chilli
1183
		status chilli
1175
		RETVAL=0
1184
		RETVAL=0
1176
		;;
1185
		;;
1177
 
1186
 
1178
	stop)
1187
	stop)
1179
		if [ -f \$pidfile ] ; then
1188
		if [ -f \$pidfile ] ; then
1180
			gprintf "Shutting down \$prog: "
1189
			gprintf "Shutting down \$prog: "
1181
			killproc /usr/sbin/chilli
1190
			killproc /usr/sbin/chilli
1182
			RETVAL=\$?
1191
			RETVAL=\$?
1183
			[ \$RETVAL = 0 ] && rm -f \$pidfile
1192
			[ \$RETVAL = 0 ] && rm -f \$pidfile
1184
			[ -e \$current_users_file ] && rm -f \$current_users_file
1193
			[ -e \$current_users_file ] && rm -f \$current_users_file
1185
		else
1194
		else
1186
			gprintf "chilli is not running"
1195
			gprintf "chilli is not running"
1187
		fi
1196
		fi
1188
		;;
1197
		;;
1189
 
1198
 
1190
	*)
1199
	*)
1191
		echo "Usage: \$0 {start|stop|restart|reload|status}"
1200
		echo "Usage: \$0 {start|stop|restart|reload|status}"
1192
		exit 1
1201
		exit 1
1193
esac
1202
esac
1194
echo
1203
echo
1195
EOF
1204
EOF
1196
	chmod a+x /etc/init.d/chilli
1205
	chmod a+x /etc/init.d/chilli
1197
	ln -s /etc/init.d/chilli /usr/libexec/chilli
1206
	ln -s /etc/init.d/chilli /usr/libexec/chilli
1198
# conf file creation
1207
# conf file creation
1199
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
1208
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
1200
	#NTP Option configuration for DHCP
1209
	#NTP Option configuration for DHCP
1201
	#DHCP Options : rfc2132
1210
	#DHCP Options : rfc2132
1202
		#dhcp option value will be convert in hexa.
1211
		#dhcp option value will be convert in hexa.
1203
		#NTP option (or 'option 42') is like :
1212
		#NTP option (or 'option 42') is like :
1204
		#
1213
		#
1205
		#    Code   Len         Address 1               Address 2
1214
		#    Code   Len         Address 1               Address 2
1206
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1215
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1207
		#   |  42 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
1216
		#   |  42 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
1208
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1217
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1209
		#
1218
		#
1210
		#Code : 42 => 2a
1219
		#Code : 42 => 2a
1211
		#Len : 4 => 04
1220
		#Len : 4 => 04
1212
	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)")
1221
	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)")
1213
	cat <<EOF > /etc/chilli.conf
1222
	cat <<EOF > /etc/chilli.conf
1214
# coova config for ALCASAR
1223
# coova config for ALCASAR
1215
cmdsocket	/run/chilli.sock
1224
cmdsocket	/run/chilli.sock
1216
unixipc		chilli.$INTIF.ipc
1225
unixipc		chilli.$INTIF.ipc
1217
pidfile		/run/chilli.pid
1226
pidfile		/run/chilli.pid
1218
net		$PRIVATE_NETWORK_MASK
1227
net		$PRIVATE_NETWORK_MASK
1219
dhcpif		$INTIF
1228
dhcpif		$INTIF
1220
ethers		$DIR_DEST_ETC/alcasar-ethers
1229
ethers		$DIR_DEST_ETC/alcasar-ethers
1221
#nodynip
1230
#nodynip
1222
#statip
1231
#statip
1223
dynip		$PRIVATE_NETWORK_MASK
1232
dynip		$PRIVATE_NETWORK_MASK
1224
domain		$DOMAIN
1233
domain		$DOMAIN
1225
dns1		$PRIVATE_IP
1234
dns1		$PRIVATE_IP
1226
dns2		$PRIVATE_IP
1235
dns2		$PRIVATE_IP
1227
uamlisten	$PRIVATE_IP
1236
uamlisten	$PRIVATE_IP
1228
uamport		3990
1237
uamport		3990
1229
uamuiport	3991
1238
uamuiport	3991
1230
macauth
1239
macauth
1231
macpasswd	password
1240
macpasswd	password
1232
strictmacauth
1241
strictmacauth
1233
locationname	$HOSTNAME.$DOMAIN
1242
locationname	$HOSTNAME.$DOMAIN
1234
radiusserver1	127.0.0.1
1243
radiusserver1	127.0.0.1
1235
radiusserver2	127.0.0.1
1244
radiusserver2	127.0.0.1
1236
radiussecret	$secretradius
1245
radiussecret	$secretradius
1237
radiusauthport	1812
1246
radiusauthport	1812
1238
radiusacctport	1813
1247
radiusacctport	1813
1239
uamserver	http://$HOSTNAME.$DOMAIN/intercept.php
1248
uamserver	http://$HOSTNAME.$DOMAIN/intercept.php
1240
redirurl
1249
redirurl
1241
radiusnasid	$HOSTNAME.$DOMAIN
1250
radiusnasid	$HOSTNAME.$DOMAIN
1242
uamsecret	$secretuam
1251
uamsecret	$secretuam
1243
uamallowed	$HOSTNAME,$HOSTNAME.$DOMAIN
1252
uamallowed	$HOSTNAME,$HOSTNAME.$DOMAIN
1244
coaport		3799
1253
coaport		3799
1245
conup		$DIR_DEST_BIN/alcasar-conup.sh
1254
conup		$DIR_DEST_BIN/alcasar-conup.sh
1246
condown		$DIR_DEST_BIN/alcasar-condown.sh
1255
condown		$DIR_DEST_BIN/alcasar-condown.sh
1247
macup		$DIR_DEST_BIN/alcasar-macup.sh
1256
macup		$DIR_DEST_BIN/alcasar-macup.sh
1248
include		$DIR_DEST_ETC/alcasar-uamallowed
1257
include		$DIR_DEST_ETC/alcasar-uamallowed
1249
include		$DIR_DEST_ETC/alcasar-uamdomain
1258
include		$DIR_DEST_ETC/alcasar-uamdomain
1250
dhcpopt		2a04$PRIVATE_IP_HEXA
1259
dhcpopt		2a04$PRIVATE_IP_HEXA
1251
#dhcpgateway		none
1260
#dhcpgateway		none
1252
#dhcprelayagent		none
1261
#dhcprelayagent		none
1253
#dhcpgatewayport	none
1262
#dhcpgatewayport	none
1254
sslkeyfile	/etc/pki/tls/private/alcasar.key
1263
sslkeyfile	/etc/pki/tls/private/alcasar.key
1255
sslcertfile	/etc/pki/tls/certs/alcasar.crt
1264
sslcertfile	/etc/pki/tls/certs/alcasar.crt
1256
sslcafile	/etc/pki/tls/certs/server-chain.pem
1265
sslcafile	/etc/pki/tls/certs/server-chain.pem
1257
#redirssl
1266
#redirssl
1258
#uamuissl
1267
#uamuissl
1259
EOF
1268
EOF
1260
# create files for "DHCP static ip" and "DHCP static ip info". Reserve the second IP address for INTIF (the first one is for tun0)
1269
# create files for "DHCP static ip" and "DHCP static ip info". Reserve the second IP address for INTIF (the first one is for tun0)
1261
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers
1270
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers
1262
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers-info
1271
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers-info
1263
# create files for trusted domains and urls
1272
# create files for trusted domains and urls
1264
	touch $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
1273
	touch $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
1265
	chown root:apache $DIR_DEST_ETC/alcasar-*
1274
	chown root:apache $DIR_DEST_ETC/alcasar-*
1266
	chmod 660 $DIR_DEST_ETC/alcasar-*
1275
	chmod 660 $DIR_DEST_ETC/alcasar-*
1267
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli)
1276
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli)
1268
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
1277
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
1269
# user 'chilli' creation (in order to run conup/off and up/down scripts
1278
# user 'chilli' creation (in order to run conup/off and up/down scripts
1270
	chilli_exist=`grep -c ^chilli: /etc/passwd`
1279
	chilli_exist=`grep -c ^chilli: /etc/passwd`
1271
	if [ "$chilli_exist" == "1" ]
1280
	if [ "$chilli_exist" == "1" ]
1272
	then
1281
	then
1273
		userdel -r chilli 2>/dev/null
1282
		userdel -r chilli 2>/dev/null
1274
	fi
1283
	fi
1275
	groupadd -f chilli
1284
	groupadd -f chilli
1276
	useradd -r -g chilli -s /bin/false -c "system user for coova-chilli" chilli
1285
	useradd -r -g chilli -s /bin/false -c "system user for coova-chilli" chilli
1277
}  # End of chilli()
1286
}  # End of chilli()
1278
 
1287
 
1279
################################################################
1288
################################################################
1280
##                        "e2guardian"                        ##
1289
##                        "e2guardian"                        ##
1281
## - Set the parameters of this HTML proxy (as controler)     ##
1290
## - Set the parameters of this HTML proxy (as controler)     ##
1282
################################################################
1291
################################################################
1283
e2guardian()
1292
e2guardian()
1284
{
1293
{
1285
# Adapt systemd unit
1294
# Adapt systemd unit
1286
	cp /lib/systemd/system/e2guardian.service /etc/systemd/system/e2guardian.service
1295
	cp /lib/systemd/system/e2guardian.service /etc/systemd/system/e2guardian.service
1287
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/e2guardian -c /etc/e2guardian/e2guardian.conf?g" /etc/systemd/system/e2guardian.service
1296
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/e2guardian -c /etc/e2guardian/e2guardian.conf?g" /etc/systemd/system/e2guardian.service
1288
	$SED "s?^After=.*?After=network-online.target chilli.service?g" /etc/systemd/system/e2guardian.service
1297
	$SED "s?^After=.*?After=network-online.target chilli.service?g" /etc/systemd/system/e2guardian.service
1289
	$SED "/^PIDFile=/d" /etc/systemd/system/e2guardian.service
1298
	$SED "/^PIDFile=/d" /etc/systemd/system/e2guardian.service
1290
 
1299
 
1291
# Adapt the main conf file
1300
# Adapt the main conf file
1292
	[ -e $DIR_DG/e2guardian.conf.default ] || cp $DIR_DG/e2guardian.conf $DIR_DG/e2guardian.conf.default
1301
	[ -e $DIR_DG/e2guardian.conf.default ] || cp $DIR_DG/e2guardian.conf $DIR_DG/e2guardian.conf.default
1293
# French deny HTML page
1302
# French deny HTML page
1294
	$SED "s?^language =.*?language = 'french'?g" $DIR_DG/e2guardian.conf
1303
	$SED "s?^language =.*?language = 'french'?g" $DIR_DG/e2guardian.conf
1295
# 2 filtergroups (8080 & 8090)
1304
# 2 filtergroups (8080 & 8090)
1296
	$SED "s?^filtergroups =.*?filtergroups = 2?g" $DIR_DG/e2guardian.conf
1305
	$SED "s?^filtergroups =.*?filtergroups = 2?g" $DIR_DG/e2guardian.conf
1297
# Listen on 8080 (HTTP for BL users) only on LAN side
1306
# Listen on 8080 (HTTP for BL users) only on LAN side
1298
	$SED "s?^filterip =.*?filterip = $PRIVATE_IP?g" $DIR_DG/e2guardian.conf
1307
	$SED "s?^filterip =.*?filterip = $PRIVATE_IP?g" $DIR_DG/e2guardian.conf
1299
	$SED "s?^filterports =.*?filterports = 8080?g" $DIR_DG/e2guardian.conf
1308
	$SED "s?^filterports =.*?filterports = 8080?g" $DIR_DG/e2guardian.conf
1300
# Listen on 8090 (HTTP for WL/AV users) only on LAN side
1309
# Listen on 8090 (HTTP for WL/AV users) only on LAN side
1301
	$SED "/^filterip = $PRIVATE_IP/a filterip = $PRIVATE_IP" $DIR_DG/e2guardian.conf
1310
	$SED "/^filterip = $PRIVATE_IP/a filterip = $PRIVATE_IP" $DIR_DG/e2guardian.conf
1302
	$SED "/^filterports = 8080/a filterports = 8090" $DIR_DG/e2guardian.conf
1311
	$SED "/^filterports = 8080/a filterports = 8090" $DIR_DG/e2guardian.conf
1303
# E2guardian doesn't listen transparently on 8443 (HTTPS) (only in future version)
1312
# E2guardian doesn't listen transparently on 8443 (HTTPS) (only in future version)
1304
	$SED "s?^transparenthttpsport =.*?#transparenthttpsport = 8443?g" $DIR_DG/e2guardian.conf
1313
	$SED "s?^transparenthttpsport =.*?#transparenthttpsport = 8443?g" $DIR_DG/e2guardian.conf
1305
# Don't log
1314
# Don't log
1306
	$SED "s?^loglevel =.*?loglevel = 0?g" $DIR_DG/e2guardian.conf
1315
	$SED "s?^loglevel =.*?loglevel = 0?g" $DIR_DG/e2guardian.conf
1307
# Disable HTML content control (weighted & banned)
1316
# Disable HTML content control (weighted & banned)
1308
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/e2guardian.conf
1317
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/e2guardian.conf
1309
# Enable authport plugin
1318
# Enable authport plugin
1310
	$SED "s?^#authplugin = '/etc/e2guardian/authplugins/port.conf'?authplugin = '/etc/e2guardian/authplugins/port.conf'?g" $DIR_DG/e2guardian.conf
1319
	$SED "s?^#authplugin = '/etc/e2guardian/authplugins/port.conf'?authplugin = '/etc/e2guardian/authplugins/port.conf'?g" $DIR_DG/e2guardian.conf
1311
	$SED "s?^#mapauthtoports =.*?mapauthtoports = off?g" $DIR_DG/e2guardian.conf
1320
	$SED "s?^#mapauthtoports =.*?mapauthtoports = off?g" $DIR_DG/e2guardian.conf
1312
# Set Max RAM cache to 10Mb
1321
# Set Max RAM cache to 10Mb
1313
	$SED "s?^maxcontentramcachescansize =.*?maxcontentramcachescansize = 10240?g" $DIR_DG/e2guardian.conf
1322
	$SED "s?^maxcontentramcachescansize =.*?maxcontentramcachescansize = 10240?g" $DIR_DG/e2guardian.conf
1314
# Set Max file size cache to 20Mb
1323
# Set Max file size cache to 20Mb
1315
	$SED "s?^maxcontentfilecachescansize =.*?maxcontentfilecachescansize = 20480?g" $DIR_DG/e2guardian.conf
1324
	$SED "s?^maxcontentfilecachescansize =.*?maxcontentfilecachescansize = 20480?g" $DIR_DG/e2guardian.conf
1316
# Adapt the first group conf file
1325
# Adapt the first group conf file
1317
	[ -e $DIR_DG/e2guardianf1.conf.default ] || cp $DIR_DG/e2guardianf1.conf $DIR_DG/e2guardianf1.conf.default
1326
	[ -e $DIR_DG/e2guardianf1.conf.default ] || cp $DIR_DG/e2guardianf1.conf $DIR_DG/e2guardianf1.conf.default
1318
	$SED "s/^reportinglevel =.*/reportinglevel = 3/g" $DIR_DG/e2guardianf1.conf
1327
	$SED "s/^reportinglevel =.*/reportinglevel = 3/g" $DIR_DG/e2guardianf1.conf
1319
	$SED "s/^groupname =.*/groupname = 'blacklisted users'/g" $DIR_DG/e2guardianf1.conf
1328
	$SED "s/^groupname =.*/groupname = 'blacklisted users'/g" $DIR_DG/e2guardianf1.conf
1320
	$SED "s/^#htmltemplate =.*/htmltemplate = 'alcasar-e2g.html'/g" $DIR_DG/e2guardianf1.conf
1329
	$SED "s/^#htmltemplate =.*/htmltemplate = 'alcasar-e2g.html'/g" $DIR_DG/e2guardianf1.conf
1321
 
1330
 
1322
# copy & adapt HTML templates
1331
# copy & adapt HTML templates
1323
	cp $DIR_CONF/alcasar-e2g-fr.html /usr/share/e2guardian/languages/french/alcasar-e2g.html
1332
	cp $DIR_CONF/alcasar-e2g-fr.html /usr/share/e2guardian/languages/french/alcasar-e2g.html
1324
	cp $DIR_CONF/alcasar-e2g-en.html /usr/share/e2guardian/languages/ukenglish/alcasar-e2g.html
1333
	cp $DIR_CONF/alcasar-e2g-en.html /usr/share/e2guardian/languages/ukenglish/alcasar-e2g.html
1325
	$SED "s?\/\/[a-z.]*\/?\/\/$HOSTNAME.$DOMAIN\/?g" /usr/share/e2guardian/languages/french/alcasar-e2g.html
1334
	$SED "s?\/\/[a-z.]*\/?\/\/$HOSTNAME.$DOMAIN\/?g" /usr/share/e2guardian/languages/french/alcasar-e2g.html
1326
	$SED "s?\/\/[a-z.]*\/?\/\/$HOSTNAME.$DOMAIN\/?g" /usr/share/e2guardian/languages/ukenglish/alcasar-e2g.html
1335
	$SED "s?\/\/[a-z.]*\/?\/\/$HOSTNAME.$DOMAIN\/?g" /usr/share/e2guardian/languages/ukenglish/alcasar-e2g.html
1327
 
1336
 
1328
###### ALCASAR special filtering ####
1337
###### ALCASAR special filtering ####
1329
# RAZ bannedphraselist
1338
# RAZ bannedphraselist
1330
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
1339
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
1331
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (comment what is not)
1340
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (comment what is not)
1332
# Disable URL control with regex
1341
# Disable URL control with regex
1333
    cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
1342
    cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
1334
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (comment what is not)
1343
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (comment what is not)
1335
# Replace the default deny HTML page (only fr & uk) --> !!! search why our pages make the server crash... 
1344
# Replace the default deny HTML page (only fr & uk) --> !!! search why our pages make the server crash... 
1336
#	[ -e /usr/share/e2guardian/languages/french/template.html.default ] || mv /usr/share/e2guardian/languages/french/template.html /usr/share/e2guardian/languages/french/template.html.default
1345
#	[ -e /usr/share/e2guardian/languages/french/template.html.default ] || mv /usr/share/e2guardian/languages/french/template.html /usr/share/e2guardian/languages/french/template.html.default
1337
#	cp -f $DIR_CONF/template-fr.html /usr/share/e2guardian/languages/french/template.html
1346
#	cp -f $DIR_CONF/template-fr.html /usr/share/e2guardian/languages/french/template.html
1338
#	[ -e /usr/share/e2guardian/languages/ukenglish/template.html.default ] || mv /usr/share/e2guardian/languages/ukenglish/template.html /usr/share/e2guardian/languages/ukenglish/template.html.default
1347
#	[ -e /usr/share/e2guardian/languages/ukenglish/template.html.default ] || mv /usr/share/e2guardian/languages/ukenglish/template.html /usr/share/e2guardian/languages/ukenglish/template.html.default
1339
#	cp -f $DIR_CONF/template.html /usr/share/e2guardian/languages/ukenglish/template.html
1348
#	cp -f $DIR_CONF/template.html /usr/share/e2guardian/languages/ukenglish/template.html
1340
# Dont filtering files by extension or mime-type (empty list)
1349
# Dont filtering files by extension or mime-type (empty list)
1341
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
1350
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
1342
	touch $DIR_DG/lists/bannedextensionlist
1351
	touch $DIR_DG/lists/bannedextensionlist
1343
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
1352
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
1344
	touch $DIR_DG/lists/bannedmimetypelist
1353
	touch $DIR_DG/lists/bannedmimetypelist
1345
# Empty LAN IP list that won't be WEB filtered
1354
# Empty LAN IP list that won't be WEB filtered
1346
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
1355
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
1347
	touch $DIR_DG/lists/exceptioniplist
1356
	touch $DIR_DG/lists/exceptioniplist
1348
# Creation of ALCASAR banned site list
1357
# Creation of ALCASAR banned site list
1349
	[ -e $DIR_DG/lists/greysitelist.default ] || mv $DIR_DG/lists/greysitelist $DIR_DG/lists/greysitelist.default
1358
	[ -e $DIR_DG/lists/greysitelist.default ] || mv $DIR_DG/lists/greysitelist $DIR_DG/lists/greysitelist.default
1350
	cat <<EOF > $DIR_DG/lists/greysitelist
1359
	cat <<EOF > $DIR_DG/lists/greysitelist
1351
# E2guardian filter config for ALCASAR
1360
# E2guardian filter config for ALCASAR
1352
# In ALCASAR E2guardian filters only URLs (domains are filtered with unbound)
1361
# In ALCASAR E2guardian filters only URLs (domains are filtered with unbound)
1353
# block all SSL and CONNECT tunnels
1362
# block all SSL and CONNECT tunnels
1354
**s
1363
**s
1355
# block all SSL and CONNECT tunnels specified only as an IP
1364
# block all SSL and CONNECT tunnels specified only as an IP
1356
*ips
1365
*ips
1357
# block all sites specified only by an IP
1366
# block all sites specified only by an IP
1358
*ip
1367
*ip
1359
EOF
1368
EOF
1360
# Creation of ALCASAR empty banned URLs list (filled later with Toulouse BL --> see BL function)
1369
# Creation of ALCASAR empty banned URLs list (filled later with Toulouse BL --> see BL function)
1361
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
1370
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
1362
	cat <<EOF > $DIR_DG/lists/bannedurllist
1371
	cat <<EOF > $DIR_DG/lists/bannedurllist
1363
# E2guardian filter config for ALCASAR
1372
# E2guardian filter config for ALCASAR
1364
EOF
1373
EOF
1365
# Creation of files for rehabilited domains and urls
1374
# Creation of files for rehabilited domains and urls
1366
	[ -e $DIR_DG/lists/exceptionsitelist.default ] || mv $DIR_DG/lists/exceptionsitelist $DIR_DG/lists/exceptionsitelist.default
1375
	[ -e $DIR_DG/lists/exceptionsitelist.default ] || mv $DIR_DG/lists/exceptionsitelist $DIR_DG/lists/exceptionsitelist.default
1367
	[ -e $DIR_DG/lists/exceptionurllist.default ] || mv $DIR_DG/lists/exceptionurllist $DIR_DG/lists/exceptionurllist.default
1376
	[ -e $DIR_DG/lists/exceptionurllist.default ] || mv $DIR_DG/lists/exceptionurllist $DIR_DG/lists/exceptionurllist.default
1368
	touch $DIR_DG/lists/exceptionsitelist
1377
	touch $DIR_DG/lists/exceptionsitelist
1369
	touch $DIR_DG/lists/exceptionurllist
1378
	touch $DIR_DG/lists/exceptionurllist
1370
# Add Bing to the safesearch url regext list (parental control)
1379
# Add Bing to the safesearch url regext list (parental control)
1371
	[ -e $DIR_DG/lists/urlregexplist.default ] || cp $DIR_DG/lists/urlregexplist $DIR_DG/lists/urlregexplist.default
1380
	[ -e $DIR_DG/lists/urlregexplist.default ] || cp $DIR_DG/lists/urlregexplist $DIR_DG/lists/urlregexplist.default
1372
	cat <<EOF >> $DIR_DG/lists/urlregexplist
1381
	cat <<EOF >> $DIR_DG/lists/urlregexplist
1373
 
1382
 
1374
# Bing - add 'adlt=strict'
1383
# Bing - add 'adlt=strict'
1375
#"(^http://[0-9a-z]+\.bing\.[a-z]+[-/%.0-9a-z]*\?)(.*)"->"\1\2&adlt=strict"
1384
#"(^http://[0-9a-z]+\.bing\.[a-z]+[-/%.0-9a-z]*\?)(.*)"->"\1\2&adlt=strict"
1376
EOF
1385
EOF
1377
# 'Safesearch' regex actualisation
1386
# 'Safesearch' regex actualisation
1378
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
1387
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
1379
# change the google safesearch ("safe=strict" instead of "safe=vss")
1388
# change the google safesearch ("safe=strict" instead of "safe=vss")
1380
	$SED "s?safe=vss?safe=strict?g" $DIR_DG/lists/urlregexplist
1389
	$SED "s?safe=vss?safe=strict?g" $DIR_DG/lists/urlregexplist
1381
 
1390
 
1382
# Create & adapt the second group conf file (av + av_wl)
1391
# Create & adapt the second group conf file (av + av_wl)
1383
	cp $DIR_DG/e2guardianf1.conf.default $DIR_DG/e2guardianf2.conf
1392
	cp $DIR_DG/e2guardianf1.conf.default $DIR_DG/e2guardianf2.conf
1384
	$SED "s?^reportinglevel =.*?reportinglevel = 3?g" $DIR_DG/e2guardianf2.conf
1393
	$SED "s?^reportinglevel =.*?reportinglevel = 3?g" $DIR_DG/e2guardianf2.conf
1385
	$SED "s?^groupname =.*?groupname = 'antimalware + whitelested users'?g" $DIR_DG/e2guardianf2.conf
1394
	$SED "s?^groupname =.*?groupname = 'antimalware + whitelested users'?g" $DIR_DG/e2guardianf2.conf
1386
	$SED "s?^urllist = 'name=banned,messageno=501,path=/etc/e2guardian/lists/bannedurllist'?urllist = 'name=banned,messageno=501,path=/etc/e2guardian/lists/bannedurllist.default'?g" $DIR_DG/e2guardianf2.conf # no banned urls
1395
	$SED "s?^urllist = 'name=banned,messageno=501,path=/etc/e2guardian/lists/bannedurllist'?urllist = 'name=banned,messageno=501,path=/etc/e2guardian/lists/bannedurllist.default'?g" $DIR_DG/e2guardianf2.conf # no banned urls
1387
 
1396
 
1388
# create log folder
1397
# create log folder
1389
    mkdir -p /var/log/e2guardian
1398
    mkdir -p /var/log/e2guardian
1390
	chown -R e2guardian /etc/e2guardian /var/log/e2guardian
1399
	chown -R e2guardian /etc/e2guardian /var/log/e2guardian
1391
} # End of e2guardian()
1400
} # End of e2guardian()
1392
 
1401
 
1393
##############################################################
1402
##############################################################
1394
##                        "ulogd"                           ##
1403
##                        "ulogd"                           ##
1395
## - Ulog config for multi-log files                        ##
1404
## - Ulog config for multi-log files                        ##
1396
##############################################################
1405
##############################################################
1397
ulogd()
1406
ulogd()
1398
{
1407
{
1399
# Three instances of ulogd (three different logfiles)
1408
# Three instances of ulogd (three different logfiles)
1400
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
1409
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
1401
	nl=1
1410
	nl=1
1402
	for log_type in traceability ssh ext-access
1411
	for log_type in traceability ssh ext-access
1403
	do
1412
	do
1404
		cp -f /lib/systemd/system/ulogd.service /etc/systemd/system/ulogd-$log_type.service
1413
		cp -f /lib/systemd/system/ulogd.service /etc/systemd/system/ulogd-$log_type.service
1405
		[ -e /var/log/firewall/$log_type.log ] || echo "" > /var/log/firewall/$log_type.log
1414
		[ -e /var/log/firewall/$log_type.log ] || echo "" > /var/log/firewall/$log_type.log
1406
		cp -f $DIR_CONF/ulogd-sample.conf /etc/ulogd-$log_type.conf
1415
		cp -f $DIR_CONF/ulogd-sample.conf /etc/ulogd-$log_type.conf
1407
		$SED "s?^group=.*?group=$nl?g" /etc/ulogd-$log_type.conf
1416
		$SED "s?^group=.*?group=$nl?g" /etc/ulogd-$log_type.conf
1408
		cat << EOF >> /etc/ulogd-$log_type.conf
1417
		cat << EOF >> /etc/ulogd-$log_type.conf
1409
[emu1]
1418
[emu1]
1410
file="/var/log/firewall/$log_type.log"
1419
file="/var/log/firewall/$log_type.log"
1411
sync=1
1420
sync=1
1412
EOF
1421
EOF
1413
		$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/ulogd -c /etc/ulogd-$log_type.conf $ULOGD_OPTIONS?g" /etc/systemd/system/ulogd-$log_type.service
1422
		$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/ulogd -c /etc/ulogd-$log_type.conf $ULOGD_OPTIONS?g" /etc/systemd/system/ulogd-$log_type.service
1414
		nl=`expr $nl + 1`
1423
		nl=`expr $nl + 1`
1415
	done
1424
	done
1416
	chown -R root:apache /var/log/firewall
1425
	chown -R root:apache /var/log/firewall
1417
	chmod 750 /var/log/firewall
1426
	chmod 750 /var/log/firewall
1418
	chmod 640 /var/log/firewall/*
1427
	chmod 640 /var/log/firewall/*
1419
}  # End of ulogd()
1428
}  # End of ulogd()
1420
 
1429
 
1421
##########################################################
1430
##########################################################
1422
##                     "nfsen"                          ##
1431
##                     "nfsen"                          ##
1423
## - configure NetFlow collector (nfcapd)               ##
1432
## - configure NetFlow collector (nfcapd)               ##
1424
## - configure NetFlow grapher (nfsen-ng)               ##
1433
## - configure NetFlow grapher (nfsen-ng)               ##
1425
##########################################################
1434
##########################################################
1426
nfsen()
1435
nfsen()
1427
{
1436
{
1428
	groupadd -f nfcapd
1437
	groupadd -f nfcapd
1429
	id -u nfcapd >/dev/null 2>&1 || useradd -r -g nfcapd -s /bin/false -c "system user for nfcapd" nfcapd
1438
	id -u nfcapd >/dev/null 2>&1 || useradd -r -g nfcapd -s /bin/false -c "system user for nfcapd" nfcapd
1430
# nfcapd unit for systemd
1439
# nfcapd unit for systemd
1431
	cat << EOF > /etc/systemd/system/nfcapd.service
1440
	cat << EOF > /etc/systemd/system/nfcapd.service
1432
#  This file is part of systemd.
1441
#  This file is part of systemd.
1433
#
1442
#
1434
#  systemd is free software; you can redistribute it and/or modify it
1443
#  systemd is free software; you can redistribute it and/or modify it
1435
#  under the terms of the GNU General Public License as published by
1444
#  under the terms of the GNU General Public License as published by
1436
#  the Free Software Foundation; either version 2 of the License, or
1445
#  the Free Software Foundation; either version 2 of the License, or
1437
#  (at your option) any later version.
1446
#  (at your option) any later version.
1438
 
1447
 
1439
# This unit launches nfcapd (a Netflow collector).
1448
# This unit launches nfcapd (a Netflow collector).
1440
[Unit]
1449
[Unit]
1441
Description=Netflow Capture Daemon
1450
Description=Netflow Capture Daemon
1442
After=network-online.target iptables.service
1451
After=network-online.target iptables.service
1443
 
1452
 
1444
[Service]
1453
[Service]
1445
Type=simple
1454
Type=simple
1446
ExecStartPre=/bin/mkdir -p /run/nfcapd
1455
ExecStartPre=/bin/mkdir -p /run/nfcapd
1447
ExecStartPre=/bin/chown nfcapd:nfcapd /run/nfcapd
1456
ExecStartPre=/bin/chown nfcapd:nfcapd /run/nfcapd
1448
PIDFile=/run/nfcapd/nfcapd.pid
1457
PIDFile=/run/nfcapd/nfcapd.pid
1449
ExecStart=/usr/bin/nfcapd -D -b 127.0.0.1 -p 2055 -u nfcapd -g nfcapd -B 200000 -t 300 -S 7 -z -P /run/nfcapd/nfcapd.pid -I alcasar_netflow -w /var/log/nfsen/profiles-data/live/alcasar_netflow
1458
ExecStart=/usr/bin/nfcapd -D -b 127.0.0.1 -p 2055 -u nfcapd -g nfcapd -B 200000 -t 300 -S 7 -z -P /run/nfcapd/nfcapd.pid -I alcasar_netflow -w /var/log/nfsen/profiles-data/live/alcasar_netflow
1450
ExecReload=/bin/kill -HUP $MAINPID
1459
ExecReload=/bin/kill -HUP $MAINPID
1451
 
1460
 
1452
[Install]
1461
[Install]
1453
WantedBy=multi-user.target
1462
WantedBy=multi-user.target
1454
EOF
1463
EOF
1455
    [ -d /var/log/nfsen/profiles-data/live/alcasar_netflow ] || mkdir -p /var/log/nfsen/profiles-data/live/alcasar_netflow
1464
    [ -d /var/log/nfsen/profiles-data/live/alcasar_netflow ] || mkdir -p /var/log/nfsen/profiles-data/live/alcasar_netflow
1456
    [ -d /run/nfcapd ] || mkdir -p /run/nfcapd
1465
    [ -d /run/nfcapd ] || mkdir -p /run/nfcapd
1457
    chown -R nfcapd:nfcapd /var/log/nfsen /run/nfcapd
1466
    chown -R nfcapd:nfcapd /var/log/nfsen /run/nfcapd
1458
} # End of nfsen()
1467
} # End of nfsen()
1459
 
1468
 
1460
###########################################################
1469
###########################################################
1461
##                       "vnstat"                        ##
1470
##                       "vnstat"                        ##
1462
## - Initialization of vnstat and vnstat-dashboard       ##
1471
## - Initialization of vnstat and vnstat-dashboard       ##
1463
###########################################################
1472
###########################################################
1464
vnstat()
1473
vnstat()
1465
{
1474
{
1466
# vnstat
1475
# vnstat
1467
	[ -e /etc/vnstat.conf.default ] || cp /etc/vnstat.conf /etc/vnstat.conf.default
1476
	[ -e /etc/vnstat.conf.default ] || cp /etc/vnstat.conf /etc/vnstat.conf.default
1468
	$SED "s?^Interface.*?Interface \"$EXTIF\"?g" /etc/vnstat.conf
1477
	$SED "s?^Interface.*?Interface \"$EXTIF\"?g" /etc/vnstat.conf
1469
	$SED "s?^DatabaseDir.*?DatabaseDir /var/log/vnstat?g" /etc/vnstat.conf
1478
	$SED "s?^DatabaseDir.*?DatabaseDir /var/log/vnstat?g" /etc/vnstat.conf
1470
	$SED "s?^MaxBandwidth.*?MaxBandwidth 10000?g" /etc/vnstat.conf
1479
	$SED "s?^MaxBandwidth.*?MaxBandwidth 10000?g" /etc/vnstat.conf
1471
# vnstat-dashboard
1480
# vnstat-dashboard
1472
	$SED "s?^\$thisInterface.*?\$thisInterface = \"$EXTIF\";?" $DIR_ACC/manager/vnstat/index.php
1481
	$SED "s?^\$thisInterface.*?\$thisInterface = \"$EXTIF\";?" $DIR_ACC/manager/vnstat/index.php
1473
	cp /lib/systemd/system/vnstat.service /etc/systemd/system/vnstat.service
1482
	cp /lib/systemd/system/vnstat.service /etc/systemd/system/vnstat.service
1474
	$SED "s?^ReadWritePaths=.*?ReadWritePaths=/var/log?g" /etc/systemd/system/vnstat.service
1483
	$SED "s?^ReadWritePaths=.*?ReadWritePaths=/var/log?g" /etc/systemd/system/vnstat.service
1475
} # End of vnstat()
1484
} # End of vnstat()
1476
 
1485
 
1477
#########################################################
1486
#########################################################
1478
##                     "unbound"                       ##
1487
##                     "unbound"                       ##
1479
## - create the conf files for 4 unbound services      ##
1488
## - create the conf files for 4 unbound services      ##
1480
## - create the systemd files for 4 unbound services   ##
1489
## - create the systemd files for 4 unbound services   ##
1481
#########################################################
1490
#########################################################
1482
unbound ()
1491
unbound ()
1483
{
1492
{
1484
	[ -d /etc/unbound/conf.d ] || mkdir -p /etc/unbound/conf.d
1493
	[ -d /etc/unbound/conf.d ] || mkdir -p /etc/unbound/conf.d
1485
	[ -d /etc/unbound/conf.d/common ] || mkdir /etc/unbound/conf.d/common
1494
	[ -d /etc/unbound/conf.d/common ] || mkdir /etc/unbound/conf.d/common
1486
	[ -d /etc/unbound/conf.d/common/local-forward ] || mkdir /etc/unbound/conf.d/common/local-forward
1495
	[ -d /etc/unbound/conf.d/common/local-forward ] || mkdir /etc/unbound/conf.d/common/local-forward
1487
	[ -d /etc/unbound/conf.d/common/local-dns ] || mkdir /etc/unbound/conf.d/common/local-dns
1496
	[ -d /etc/unbound/conf.d/common/local-dns ] || mkdir /etc/unbound/conf.d/common/local-dns
1488
	[ -d /etc/unbound/conf.d/forward ] || mkdir /etc/unbound/conf.d/forward
1497
	[ -d /etc/unbound/conf.d/forward ] || mkdir /etc/unbound/conf.d/forward
1489
	[ -d /etc/unbound/conf.d/blacklist ] || mkdir /etc/unbound/conf.d/blacklist
1498
	[ -d /etc/unbound/conf.d/blacklist ] || mkdir /etc/unbound/conf.d/blacklist
1490
	[ -d /etc/unbound/conf.d/whitelist ] || mkdir /etc/unbound/conf.d/whitelist
1499
	[ -d /etc/unbound/conf.d/whitelist ] || mkdir /etc/unbound/conf.d/whitelist
1491
	[ -d /etc/unbound/conf.d/blackhole ] || mkdir /etc/unbound/conf.d/blackhole
1500
	[ -d /etc/unbound/conf.d/blackhole ] || mkdir /etc/unbound/conf.d/blackhole
1492
	[ -d /var/log/unbound ] || mkdir /var/log/unbound
1501
	[ -d /var/log/unbound ] || mkdir /var/log/unbound
1493
	chown unbound:unbound /var/log/unbound
1502
	chown unbound:unbound /var/log/unbound
1494
	[ -e /etc/unbound/unbound.conf.default ] || cp /etc/unbound/unbound.conf /etc/unbound/unbound.conf.default
1503
	[ -e /etc/unbound/unbound.conf.default ] || cp /etc/unbound/unbound.conf /etc/unbound/unbound.conf.default
1495
 
1504
 
1496
# Forward zone configuration file for all unbound dns servers
1505
# Forward zone configuration file for all unbound dns servers
1497
	cat << EOF > /etc/unbound/conf.d/common/forward-zone.conf
1506
	cat << EOF > /etc/unbound/conf.d/common/forward-zone.conf
1498
forward-zone:
1507
forward-zone:
1499
	name: "."
1508
	name: "."
1500
	forward-addr: $DNS1
1509
	forward-addr: $DNS1
1501
	forward-addr: $DNS2
1510
	forward-addr: $DNS2
1502
EOF
1511
EOF
1503
 
1512
 
1504
# Custom configuration file for manual DNS configuration
1513
# Custom configuration file for manual DNS configuration
1505
	cat << EOF > /etc/unbound/conf.d/common/local-forward/custom.conf
1514
	cat << EOF > /etc/unbound/conf.d/common/local-forward/custom.conf
1506
## Ajouter un bloc pour chaque nom de domaine géré par un autre seveur DNS
1515
## Ajouter un bloc pour chaque nom de domaine géré par un autre seveur DNS
1507
## Add one block for each domain name managed by an other DNS server
1516
## Add one block for each domain name managed by an other DNS server
1508
##
1517
##
1509
## Example:
1518
## Example:
1510
##
1519
##
1511
## server:
1520
## server:
1512
##     local-zone: "<your_domain>." transparent
1521
##     local-zone: "<your_domain>." transparent
1513
## forward-zone:
1522
## forward-zone:
1514
##     name: "<your_domain>."
1523
##     name: "<your_domain>."
1515
##     forward-addr: <@IP_domain_server>
1524
##     forward-addr: <@IP_domain_server>
1516
##
1525
##
1517
EOF
1526
EOF
1518
 
1527
 
1519
# Configuration file of ALCASAR main domains for $INTIF
1528
# Configuration file of ALCASAR main domains for $INTIF
1520
	cat << EOF > /etc/unbound/conf.d/common/local-dns/${INTIF}.conf
1529
	cat << EOF > /etc/unbound/conf.d/common/local-dns/${INTIF}.conf
1521
server:
1530
server:
1522
	local-data: "$HOSTNAME.$DOMAIN A $PRIVATE_IP"
1531
	local-data: "$HOSTNAME.$DOMAIN A $PRIVATE_IP"
1523
	local-data-ptr: "$PRIVATE_IP $HOSTNAME.$DOMAIN"
1532
	local-data-ptr: "$PRIVATE_IP $HOSTNAME.$DOMAIN"
1524
EOF
1533
EOF
1525
 
1534
 
1526
# Configuration file for lo of forward unbound
1535
# Configuration file for lo of forward unbound
1527
	cat << EOF > /etc/unbound/conf.d/forward/iface.lo.conf
1536
	cat << EOF > /etc/unbound/conf.d/forward/iface.lo.conf
1528
server:
1537
server:
1529
	interface: 127.0.0.1@53
1538
	interface: 127.0.0.1@53
1530
	access-control-view: 127.0.0.1/8 lo
1539
	access-control-view: 127.0.0.1/8 lo
1531
view:
1540
view:
1532
	name: "lo"
1541
	name: "lo"
1533
	local-data: "$HOSTNAME A 127.0.0.1"
1542
	local-data: "$HOSTNAME A 127.0.0.1"
1534
	local-data: "$HOSTNAME.$DOMAIN A 127.0.0.1"
1543
	local-data: "$HOSTNAME.$DOMAIN A 127.0.0.1"
1535
	local-data-ptr: "127.0.0.1 $HOSTNAME.$DOMAIN"
1544
	local-data-ptr: "127.0.0.1 $HOSTNAME.$DOMAIN"
1536
	view-first: yes
1545
	view-first: yes
1537
EOF
1546
EOF
1538
 
1547
 
1539
# Configuration file for $INTIF of forward unbound
1548
# Configuration file for $INTIF of forward unbound
1540
	cat << EOF > /etc/unbound/conf.d/forward/iface.${INTIF}.conf
1549
	cat << EOF > /etc/unbound/conf.d/forward/iface.${INTIF}.conf
1541
server:
1550
server:
1542
	interface: ${PRIVATE_IP}@53
1551
	interface: ${PRIVATE_IP}@53
1543
	access-control-view: $PRIVATE_NETWORK_MASK $INTIF
1552
	access-control-view: $PRIVATE_NETWORK_MASK $INTIF
1544
view:
1553
view:
1545
	name: "$INTIF"
1554
	name: "$INTIF"
1546
	view-first: yes
1555
	view-first: yes
1547
EOF
1556
EOF
1548
 
1557
 
1549
# Configuration file for main unbound
1558
# Configuration file for main unbound
1550
	cat << EOF > /etc/unbound/unbound.conf
1559
	cat << EOF > /etc/unbound/unbound.conf
1551
server:
1560
server:
1552
	verbosity: 1
1561
	verbosity: 1
1553
	hide-version: yes
1562
	hide-version: yes
1554
	hide-identity: yes
1563
	hide-identity: yes
1555
	do-ip6: no
1564
	do-ip6: no
1556
	include: /etc/unbound/conf.d/common/forward-zone.conf
1565
	include: /etc/unbound/conf.d/common/forward-zone.conf
1557
	include: /etc/unbound/conf.d/common/local-forward/*
1566
	include: /etc/unbound/conf.d/common/local-forward/*
1558
	include: /etc/unbound/conf.d/common/local-dns/*
1567
	include: /etc/unbound/conf.d/common/local-dns/*
1559
	include: /etc/unbound/conf.d/forward/*
1568
	include: /etc/unbound/conf.d/forward/*
1560
EOF
1569
EOF
1561
 
1570
 
1562
# Configuration file for $INTIF of blacklist unbound
1571
# Configuration file for $INTIF of blacklist unbound
1563
	cat << EOF > /etc/unbound/conf.d/blacklist/iface.${INTIF}.conf
1572
	cat << EOF > /etc/unbound/conf.d/blacklist/iface.${INTIF}.conf
1564
server:
1573
server:
1565
	interface: ${PRIVATE_IP}@54
1574
	interface: ${PRIVATE_IP}@54
1566
	access-control: $PRIVATE_IP_MASK allow
1575
	access-control: $PRIVATE_IP_MASK allow
1567
	access-control-tag: $PRIVATE_IP_MASK "blacklist"
1576
	access-control-tag: $PRIVATE_IP_MASK "blacklist"
1568
	access-control-tag-action: $PRIVATE_IP_MASK "blacklist" redirect
1577
	access-control-tag-action: $PRIVATE_IP_MASK "blacklist" redirect
1569
	access-control-tag-data: $PRIVATE_IP_MASK "blacklist" "A $PRIVATE_IP"
1578
	access-control-tag-data: $PRIVATE_IP_MASK "blacklist" "A $PRIVATE_IP"
1570
EOF
1579
EOF
1571
 
1580
 
1572
# Configuration file for blacklist unbound
1581
# Configuration file for blacklist unbound
1573
	cat << EOF > /etc/unbound/unbound-blacklist.conf
1582
	cat << EOF > /etc/unbound/unbound-blacklist.conf
1574
server:
1583
server:
1575
	verbosity: 1
1584
	verbosity: 1
1576
	hide-version: yes
1585
	hide-version: yes
1577
	hide-identity: yes
1586
	hide-identity: yes
1578
	do-ip6: no
1587
	do-ip6: no
1579
	logfile: "/var/log/unbound/unbound-blacklist.log"
1588
	logfile: "/var/log/unbound/unbound-blacklist.log"
1580
	chroot: ""
1589
	chroot: ""
1581
	define-tag: "blacklist"
1590
	define-tag: "blacklist"
1582
	log-local-actions: yes
1591
	log-local-actions: yes
1583
	include: /etc/unbound/conf.d/common/forward-zone.conf
1592
	include: /etc/unbound/conf.d/common/forward-zone.conf
1584
	include: /etc/unbound/conf.d/common/local-forward/*
1593
	include: /etc/unbound/conf.d/common/local-forward/*
1585
	include: /etc/unbound/conf.d/common/local-dns/*
1594
	include: /etc/unbound/conf.d/common/local-dns/*
1586
	include: /etc/unbound/conf.d/blacklist/*
1595
	include: /etc/unbound/conf.d/blacklist/*
1587
	include: /usr/local/share/unbound-bl-enabled/*
1596
	include: /usr/local/share/unbound-bl-enabled/*
1588
EOF
1597
EOF
1589
 
1598
 
1590
# Configuration file for $INTIF of whitelist unbound
1599
# Configuration file for $INTIF of whitelist unbound
1591
	cat << EOF > /etc/unbound/conf.d/whitelist/iface.${INTIF}.conf
1600
	cat << EOF > /etc/unbound/conf.d/whitelist/iface.${INTIF}.conf
1592
server:
1601
server:
1593
	interface: ${PRIVATE_IP}@55
1602
	interface: ${PRIVATE_IP}@55
1594
	access-control: $PRIVATE_IP_MASK allow
1603
	access-control: $PRIVATE_IP_MASK allow
1595
	access-control-tag: $PRIVATE_IP_MASK "whitelist"
1604
	access-control-tag: $PRIVATE_IP_MASK "whitelist"
1596
	access-control-tag-action: $PRIVATE_IP_MASK "whitelist" redirect
1605
	access-control-tag-action: $PRIVATE_IP_MASK "whitelist" redirect
1597
	access-control-tag-data: $PRIVATE_IP_MASK "whitelist" "A $PRIVATE_IP"
1606
	access-control-tag-data: $PRIVATE_IP_MASK "whitelist" "A $PRIVATE_IP"
1598
EOF
1607
EOF
1599
 
1608
 
1600
# Configuration file for whitelist unbound
1609
# Configuration file for whitelist unbound
1601
	cat << EOF > /etc/unbound/unbound-whitelist.conf
1610
	cat << EOF > /etc/unbound/unbound-whitelist.conf
1602
server:
1611
server:
1603
	module-config: "ipset validator iterator"
1612
	module-config: "ipset validator iterator"
1604
	verbosity: 1
1613
	verbosity: 1
1605
	hide-version: yes
1614
	hide-version: yes
1606
	hide-identity: yes
1615
	hide-identity: yes
1607
	do-ip6: no
1616
	do-ip6: no
1608
	do-not-query-localhost: no
1617
	do-not-query-localhost: no
1609
	define-tag: "whitelist"
1618
	define-tag: "whitelist"
1610
	local-zone: "." transparent
1619
	local-zone: "." transparent
1611
	local-zone-tag: "." "whitelist"
1620
	local-zone-tag: "." "whitelist"
1612
	include: /etc/unbound/conf.d/common/forward-zone.conf
1621
	include: /etc/unbound/conf.d/common/forward-zone.conf
1613
	include: /etc/unbound/conf.d/common/local-forward/*
1622
	include: /etc/unbound/conf.d/common/local-forward/*
1614
	include: /etc/unbound/conf.d/common/local-dns/*
1623
	include: /etc/unbound/conf.d/common/local-dns/*
1615
	include: /etc/unbound/conf.d/whitelist/*
1624
	include: /etc/unbound/conf.d/whitelist/*
1616
	include: /usr/local/share/unbound-wl-enabled/*
1625
	include: /usr/local/share/unbound-wl-enabled/*
1617
	username: ""
1626
	username: ""
1618
ipset:
1627
ipset:
1619
	name-v4: "wl_ip_allowed"
1628
	name-v4: "wl_ip_allowed"
1620
EOF
1629
EOF
1621
 
1630
 
1622
# Configuration file for $INTIF of blackhole unbound
1631
# Configuration file for $INTIF of blackhole unbound
1623
	cat << EOF > /etc/unbound/conf.d/blackhole/iface.${INTIF}.conf
1632
	cat << EOF > /etc/unbound/conf.d/blackhole/iface.${INTIF}.conf
1624
server:
1633
server:
1625
	interface: ${PRIVATE_IP}@56
1634
	interface: ${PRIVATE_IP}@56
1626
	access-control-view: $PRIVATE_NETWORK_MASK $INTIF
1635
	access-control-view: $PRIVATE_NETWORK_MASK $INTIF
1627
view:
1636
view:
1628
	name: "$INTIF"
1637
	name: "$INTIF"
1629
	local-zone: "." redirect
1638
	local-zone: "." redirect
1630
	local-data: ". A $PRIVATE_IP"
1639
	local-data: ". A $PRIVATE_IP"
1631
EOF
1640
EOF
1632
 
1641
 
1633
# Configuration file for blackhole unbound
1642
# Configuration file for blackhole unbound
1634
	cat << EOF > /etc/unbound/unbound-blackhole.conf
1643
	cat << EOF > /etc/unbound/unbound-blackhole.conf
1635
server:
1644
server:
1636
	verbosity: 1
1645
	verbosity: 1
1637
	hide-version: yes
1646
	hide-version: yes
1638
	hide-identity: yes
1647
	hide-identity: yes
1639
	do-ip6: no
1648
	do-ip6: no
1640
	include: /etc/unbound/conf.d/common/local-forward/*
1649
	include: /etc/unbound/conf.d/common/local-forward/*
1641
	include: /etc/unbound/conf.d/common/local-dns/*
1650
	include: /etc/unbound/conf.d/common/local-dns/*
1642
	include: /etc/unbound/conf.d/blackhole/*
1651
	include: /etc/unbound/conf.d/blackhole/*
1643
EOF
1652
EOF
1644
	cp /lib/systemd/system/unbound.service /etc/systemd/system/unbound.service
1653
	cp /lib/systemd/system/unbound.service /etc/systemd/system/unbound.service
1645
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/unbound -d -c /etc/unbound/unbound.conf?g" /etc/systemd/system/unbound.service
1654
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/unbound -d -c /etc/unbound/unbound.conf?g" /etc/systemd/system/unbound.service
1646
	$SED "s?^After=.*?After=syslog.target network-online.target chilli.service?g" /etc/systemd/system/unbound.service
1655
	$SED "s?^After=.*?After=syslog.target network-online.target chilli.service?g" /etc/systemd/system/unbound.service
1647
	$SED "/^PIDFile=/d" /etc/systemd/system/unbound.service
1656
	$SED "/^PIDFile=/d" /etc/systemd/system/unbound.service
1648
	for list in blacklist blackhole whitelist
1657
	for list in blacklist blackhole whitelist
1649
	do
1658
	do
1650
		cp -f /etc/systemd/system/unbound.service /etc/systemd/system/unbound-$list.service
1659
		cp -f /etc/systemd/system/unbound.service /etc/systemd/system/unbound-$list.service
1651
		$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/unbound -d -c /etc/unbound/unbound-$list.conf?g" /etc/systemd/system/unbound-$list.service
1660
		$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/unbound -d -c /etc/unbound/unbound-$list.conf?g" /etc/systemd/system/unbound-$list.service
1652
	done
1661
	done
1653
} # End of unbound()
1662
} # End of unbound()
1654
 
1663
 
1655
##################################################
1664
##################################################
1656
##                   "dhcpd"                    ##
1665
##                   "dhcpd"                    ##
1657
##################################################
1666
##################################################
1658
dhcpd()
1667
dhcpd()
1659
{
1668
{
1660
	[ -e /etc/dhcpd.conf.default ] || cp /etc/dhcpd.conf /etc/dhcpd.conf.default
1669
	[ -e /etc/dhcpd.conf.default ] || cp /etc/dhcpd.conf /etc/dhcpd.conf.default
1661
	cat <<EOF > /etc/dhcpd.conf
1670
	cat <<EOF > /etc/dhcpd.conf
1662
ddns-update-style none;
1671
ddns-update-style none;
1663
subnet $PRIVATE_NETWORK netmask $PRIVATE_NETMASK {
1672
subnet $PRIVATE_NETWORK netmask $PRIVATE_NETMASK {
1664
	option routers $PRIVATE_IP;
1673
	option routers $PRIVATE_IP;
1665
	option subnet-mask $PRIVATE_NETMASK;
1674
	option subnet-mask $PRIVATE_NETMASK;
1666
	option domain-name-servers $PRIVATE_IP;
1675
	option domain-name-servers $PRIVATE_IP;
1667
	range dynamic-bootp $PRIVATE_SECOND_IP $PRIVATE_LAST_IP;
1676
	range dynamic-bootp $PRIVATE_SECOND_IP $PRIVATE_LAST_IP;
1668
	default-lease-time 21600;
1677
	default-lease-time 21600;
1669
	max-lease-time 43200;
1678
	max-lease-time 43200;
1670
}
1679
}
1671
EOF
1680
EOF
1672
} # End of dhcpd()
1681
} # End of dhcpd()
1673
 
1682
 
1674
##########################################################
1683
##########################################################
1675
##                         "BL"                         ##
1684
##                         "BL"                         ##
1676
## - copy & adapt Toulouse BL to ALCASAR architecture   ##
1685
## - copy & adapt Toulouse BL to ALCASAR architecture   ##
1677
##     - domain names for unbound-bl & unbound-wl       ##
1686
##     - domain names for unbound-bl & unbound-wl       ##
1678
##     - URLs for E²guardian                            ##
1687
##     - URLs for E²guardian                            ##
1679
##     - IPs for NetFilter                              ##
1688
##     - IPs for NetFilter                              ##
1680
## - copy additional BLs (TOR + Ultrasurf + C&C)        ##
1689
## - copy additional BLs (TOR + Ultrasurf + C&C)        ##
1681
##########################################################
1690
##########################################################
1682
BL()
1691
BL()
1683
{
1692
{
1684
# copy the Toulouse university BL in order to be adapted to ALCASAR architecture (alcasar-bl.sh -adapt)
1693
# copy the Toulouse university BL in order to be adapted to ALCASAR architecture (alcasar-bl.sh -adapt)
1685
	rm -rf $DIR_DG/lists/blacklists
1694
	rm -rf $DIR_DG/lists/blacklists
1686
	mkdir -p /tmp/blacklists
1695
	mkdir -p /tmp/blacklists
1687
	cp $DIR_BLACKLIST/blacklists.tar.gz /tmp/blacklists/
1696
	cp $DIR_BLACKLIST/blacklists.tar.gz /tmp/blacklists/
1688
# creation of the additional BL and WL categorie named "ossi" (for domain names & ip only)
1697
# creation of the additional BL and WL categorie named "ossi" (for domain names & ip only)
1689
	mkdir -p $DIR_DG/lists/blacklists/ossi-bl
1698
	mkdir -p $DIR_DG/lists/blacklists/ossi-bl
1690
	touch $DIR_DG/lists/blacklists/ossi-bl/domains
1699
	touch $DIR_DG/lists/blacklists/ossi-bl/domains
1691
	echo "ossi-bl" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1700
	echo "ossi-bl" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1692
	mkdir -p $DIR_DG/lists/blacklists/ossi-wl
1701
	mkdir -p $DIR_DG/lists/blacklists/ossi-wl
1693
	touch $DIR_DG/lists/blacklists/ossi-wl/domains
1702
	touch $DIR_DG/lists/blacklists/ossi-wl/domains
1694
	echo "ossi-wl" >> $DIR_DEST_ETC/alcasar-wl-categories-enabled
1703
	echo "ossi-wl" >> $DIR_DEST_ETC/alcasar-wl-categories-enabled
1695
# add additional BL files
1704
# add additional BL files
1696
	for x in $(ls $DIR_BLACKLIST | grep -v "^blacklists")
1705
	for x in $(ls $DIR_BLACKLIST | grep -v "^blacklists")
1697
	do
1706
	do
1698
		mkdir $DIR_DG/lists/blacklists/ossi-bl-$x
1707
		mkdir $DIR_DG/lists/blacklists/ossi-bl-$x
1699
		cp $DIR_BLACKLIST/$x  $DIR_DG/lists/blacklists/ossi-bl-$x/domains
1708
		cp $DIR_BLACKLIST/$x  $DIR_DG/lists/blacklists/ossi-bl-$x/domains
1700
		echo "ossi-bl-$x" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1709
		echo "ossi-bl-$x" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1701
	done
1710
	done
1702
	chown -R e2guardian:apache $DIR_DG
1711
	chown -R e2guardian:apache $DIR_DG
1703
	chown -R root:apache $DIR_DEST_SHARE
1712
	chown -R root:apache $DIR_DEST_SHARE
1704
	chmod -R g+rw $DIR_DG $DIR_DEST_SHARE
1713
	chmod -R g+rw $DIR_DG $DIR_DEST_SHARE
1705
# adapt the Toulouse BL to ALCASAR architecture
1714
# adapt the Toulouse BL to ALCASAR architecture
1706
	$DIR_DEST_BIN/alcasar-bl.sh --adapt
1715
	$DIR_DEST_BIN/alcasar-bl.sh --adapt
1707
# enable the default categories
1716
# enable the default categories
1708
	$DIR_DEST_BIN/alcasar-bl.sh --cat_choice
1717
	$DIR_DEST_BIN/alcasar-bl.sh --cat_choice
1709
	rm -rf /tmp/blacklists
1718
	rm -rf /tmp/blacklists
1710
} # End of BL()
1719
} # End of BL()
1711
 
1720
 
1712
#######################################################
1721
#######################################################
1713
##                    "cron"                         ##
1722
##                    "cron"                         ##
1714
## - write all cron & anacron files                  ##
1723
## - write all cron & anacron files                  ##
1715
#######################################################
1724
#######################################################
1716
cron()
1725
cron()
1717
{
1726
{
1718
# 'crontab' with standard cron at midnight instead of 4:0 am (default)
1727
# 'crontab' with standard cron at midnight instead of 4:0 am (default)
1719
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1728
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1720
	cat <<EOF > /etc/crontab
1729
	cat <<EOF > /etc/crontab
1721
SHELL=/usr/bin/bash
1730
SHELL=/usr/bin/bash
1722
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1731
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1723
MAILTO=root
1732
MAILTO=root
1724
HOME=/
1733
HOME=/
1725
 
1734
 
1726
# run-parts
1735
# run-parts
1727
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1736
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1728
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1737
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1729
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1738
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1730
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1739
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1731
EOF
1740
EOF
1732
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1741
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1733
	cat <<EOF >> /etc/anacrontab
1742
	cat <<EOF >> /etc/anacrontab
1734
7	8	cron.MysqlDump		nice /etc/cron.d/alcasar-mysql
1743
7	8	cron.MysqlDump		nice /etc/cron.d/alcasar-mysql
1735
7	10	cron.logExport		nice /etc/cron.d/alcasar-archive
1744
7	10	cron.logExport		nice /etc/cron.d/alcasar-archive
1736
EOF
1745
EOF
1737
	cat <<EOF > /etc/cron.d/alcasar-mysql
1746
	cat <<EOF > /etc/cron.d/alcasar-mysql
1738
# Verify, repair and export users database (every monday at 4:45 am)
1747
# Verify, repair and export users database (every monday at 4:45 am)
1739
45 4 * * 1 root $DIR_DEST_BIN/alcasar-mysql.sh --dump
1748
45 4 * * 1 root $DIR_DEST_BIN/alcasar-mysql.sh --dump
1740
# Remove users whose expiration date is exceeded for more more than 7 days (every Monday at 4:40 am)
1749
# Remove users whose expiration date is exceeded for more more than 7 days (every Monday at 4:40 am)
1741
40 4 * * * root $DIR_DEST_BIN/alcasar-mysql.sh --expire_user 2>&1 >/dev/null
1750
40 4 * * * root $DIR_DEST_BIN/alcasar-mysql.sh --expire_user 2>&1 >/dev/null
1742
EOF
1751
EOF
1743
	cat <<EOF > /etc/cron.d/alcasar-archive
1752
	cat <<EOF > /etc/cron.d/alcasar-archive
1744
# Archiving logs (traceability & users database) (every Monday at 5:35 am)
1753
# Archiving logs (traceability & users database) (every Monday at 5:35 am)
1745
35 5 * * 1 root $DIR_DEST_BIN/alcasar-archive.sh --now
1754
35 5 * * 1 root $DIR_DEST_BIN/alcasar-archive.sh --now
1746
EOF
1755
EOF
1747
	cat <<EOF > /etc/cron.d/alcasar-ticket-clean
1756
	cat <<EOF > /etc/cron.d/alcasar-ticket-clean
1748
# Remove password files (created when importing users by CSV files) and user's PDF voucher (every hours at 30')
1757
# Remove password files (created when importing users by CSV files) and user's PDF voucher (every hours at 30')
1749
30 * * * *  root $DIR_DEST_BIN/alcasar-ticket-clean.sh
1758
30 * * * *  root $DIR_DEST_BIN/alcasar-ticket-clean.sh
1750
EOF
1759
EOF
1751
	cat <<EOF > /etc/cron.d/alcasar-distrib-updates
1760
	cat <<EOF > /etc/cron.d/alcasar-distrib-updates
1752
# Update the system and reboot if needed (everyday at 3:30 am)
1761
# Update the system and reboot if needed (everyday at 3:30 am)
1753
30 3 * * *  root /usr/sbin/urpmi --auto-update --auto 2>&1 ; /usr/local/bin/alcasar-daemon.sh -after-update
1762
30 3 * * *  root /usr/sbin/urpmi --auto-update --auto 2>&1 ; /usr/local/bin/alcasar-daemon.sh -after-update
1754
EOF
1763
EOF
1755
	cat <<EOF > /etc/cron.d/alcasar-connections-stats
1764
	cat <<EOF > /etc/cron.d/alcasar-connections-stats
1756
# Connection stats update (accounting). These Perl scripts are from "dialup_admin" (cf. wiki.freeradius.org/Dialup_admin).
1765
# Connection stats update (accounting). These Perl scripts are from "dialup_admin" (cf. wiki.freeradius.org/Dialup_admin).
1757
# 'alcasar-tot_stats' : aggregate the daily connections of users and write it in the table 'totacct' (everyday at 1:01 pm)
1766
# 'alcasar-tot_stats' : aggregate the daily connections of users and write it in the table 'totacct' (everyday at 1:01 pm)
1758
# 'alcasar-monthly_tot_stat' : aggregate the monthly connections of users and write it in table 'mtotacct' (everyday at 1h05 pm)
1767
# 'alcasar-monthly_tot_stat' : aggregate the monthly connections of users and write it in table 'mtotacct' (everyday at 1h05 pm)
1759
# 'alcasar-truncate_raddact' : remove the user' session log older than 365 days (applying French law : "LCEN") (every month, the first at 01:10 pm)
1768
# 'alcasar-truncate_raddact' : remove the user' session log older than 365 days (applying French law : "LCEN") (every month, the first at 01:10 pm)
1760
# 'alcasar-clean_radacct' : close the sessions openned for more than 30 days (every month, the first at 01:15 pm)
1769
# 'alcasar-clean_radacct' : close the sessions openned for more than 30 days (every month, the first at 01:15 pm)
1761
# 'alcasar-activity_report.sh' : generate an activity report in PDF (every sunday at 5:35 pm)
1770
# 'alcasar-activity_report.sh' : generate an activity report in PDF (every sunday at 5:35 pm)
1762
1 1 * * * root $DIR_DEST_BIN/alcasar-tot_stats > /dev/null 2>&1
1771
1 1 * * * root $DIR_DEST_BIN/alcasar-tot_stats > /dev/null 2>&1
1763
5 1 * * * root $DIR_DEST_BIN/alcasar-monthly_tot_stats > /dev/null 2>&1
1772
5 1 * * * root $DIR_DEST_BIN/alcasar-monthly_tot_stats > /dev/null 2>&1
1764
10 1 1 * * root $DIR_DEST_BIN/alcasar-truncate_radacct > /dev/null 2>&1
1773
10 1 1 * * root $DIR_DEST_BIN/alcasar-truncate_radacct > /dev/null 2>&1
1765
15 1 1 * * root $DIR_DEST_BIN/alcasar-clean_radacct > /dev/null 2>&1
1774
15 1 1 * * root $DIR_DEST_BIN/alcasar-clean_radacct > /dev/null 2>&1
1766
35 5 * * 0 root $DIR_DEST_BIN/alcasar-activity_report.sh > /dev/null 2>&1
1775
35 5 * * 0 root $DIR_DEST_BIN/alcasar-activity_report.sh > /dev/null 2>&1
1767
EOF
1776
EOF
1768
	cat <<EOF > /etc/cron.d/alcasar-watchdog
1777
	cat <<EOF > /etc/cron.d/alcasar-watchdog
1769
# 'alcasar-watchdog.sh' : run the "watchdog" (every 10')
1778
# 'alcasar-watchdog.sh' : run the "watchdog" (every 10')
1770
# 'alcasar-flush_ipset_wl.sh' : empty the IPSET of the whitelisted IP loaded dynamically with unbound-whitelist hook (every sunday at 0:05 am)
1779
# 'alcasar-flush_ipset_wl.sh' : empty the IPSET of the whitelisted IP loaded dynamically with unbound-whitelist hook (every sunday at 0:05 am)
1771
# 'alcasar-watchdog.sh --disconnect-permanent-users' : disconnect users with attribute "Alcasar-Status-Page-Must-Stay-Open" (daily --> see "cron.daily")
1780
# 'alcasar-watchdog.sh --disconnect-permanent-users' : disconnect users with attribute "Alcasar-Status-Page-Must-Stay-Open" (daily --> see "cron.daily")
1772
# 'alcasar-watchdog-hl.sh' : (optionnaly) remove the IP 0.0.0.0 from chilli cache memory
1781
# 'alcasar-watchdog-hl.sh' : (optionnaly) remove the IP 0.0.0.0 from chilli cache memory
1773
*/10 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1782
*/10 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1774
0 5 * * 0 root $DIR_DEST_BIN/alcasar-flush_ipset_wl.sh > /dev/null 2>&1
1783
0 5 * * 0 root $DIR_DEST_BIN/alcasar-flush_ipset_wl.sh > /dev/null 2>&1
1775
@daily root $DIR_DEST_BIN/alcasar-watchdog.sh --disconnect-permanent-users > /dev/null 2>&1
1784
@daily root $DIR_DEST_BIN/alcasar-watchdog.sh --disconnect-permanent-users > /dev/null 2>&1
1776
#* * * * * root $DIR_DEST_BIN/alcasar-watchdog-hl.sh > /dev/null 2>&1
1785
#* * * * * root $DIR_DEST_BIN/alcasar-watchdog-hl.sh > /dev/null 2>&1
1777
EOF
1786
EOF
1778
	cat <<EOF > /etc/cron.d/alcasar-daemon-watchdog
1787
	cat <<EOF > /etc/cron.d/alcasar-daemon-watchdog
1779
# start dead daemons (after boot process and every 20')
1788
# start dead daemons (after boot process and every 20')
1780
@reboot root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1789
@reboot root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1781
*/20 * * * * root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1790
*/20 * * * * root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1782
EOF
1791
EOF
1783
	cat <<EOF > /etc/cron.d/alcasar-rsync-bl
1792
	cat <<EOF > /etc/cron.d/alcasar-rsync-bl
1784
# Automatic update the BL (every 12 hours). The enabled categories are listed in '/usr/local/etc/update_cat.conf' (no sync if empty).
1793
# Automatic update the BL (every 12 hours). The enabled categories are listed in '/usr/local/etc/update_cat.conf' (no sync if empty).
1785
0 */12 * * * root $DIR_DEST_BIN/alcasar-bl-autoupdate.sh --update_cat > /dev/null 2>&1
1794
0 */12 * * * root $DIR_DEST_BIN/alcasar-bl-autoupdate.sh --update_cat > /dev/null 2>&1
1786
EOF
1795
EOF
1787
	cat <<EOF > /etc/cron.d/alcasar-rsync-ossi_bl
1796
	cat <<EOF > /etc/cron.d/alcasar-rsync-ossi_bl
1788
# Automatic update the OSSI BLs (every 12 hours) by running the custom update scripts specified in '/usr/local/etc/update_ossi_cat.conf'.
1797
# Automatic update the OSSI BLs (every 12 hours) by running the custom update scripts specified in '/usr/local/etc/update_ossi_cat.conf'.
1789
0 */12 * * * root /bin/bash /usr/local/etc/update_ossi_cat.conf > /dev/null 2>&1
1798
0 */12 * * * root /bin/bash /usr/local/etc/update_ossi_cat.conf > /dev/null 2>&1
1790
EOF
1799
EOF
1791
	cat <<EOF > /etc/cron.d/alcasar-letsencrypt
1800
	cat <<EOF > /etc/cron.d/alcasar-letsencrypt
1792
# Automatic renew the Let's Encrypt certificate (daily --> see "cron.daily")
1801
# Automatic renew the Let's Encrypt certificate (daily --> see "cron.daily")
1793
@daily root $DIR_DEST_BIN/alcasar-letsencrypt.sh --cron > /dev/null 2>&1
1802
@daily root $DIR_DEST_BIN/alcasar-letsencrypt.sh --cron > /dev/null 2>&1
1794
EOF
1803
EOF
1795
	cat <<EOF > /etc/cron.d/alcasar-nfcapd-expire
1804
	cat <<EOF > /etc/cron.d/alcasar-nfcapd-expire
1796
# Remove netflow files older than one year (daily --> see "cron.daily")
1805
# Remove netflow files older than one year (daily --> see "cron.daily")
1797
@daily root /usr/bin/nfexpire -e /var/log/nfsen/profiles-data/live/alcasar_netflow -t 365d
1806
@daily root /usr/bin/nfexpire -e /var/log/nfsen/profiles-data/live/alcasar_netflow -t 365d
1798
EOF
1807
EOF
1799
# removing the users crons
1808
# removing the users crons
1800
	rm -f /var/spool/cron/*
1809
	rm -f /var/spool/cron/*
1801
} # End of cron()
1810
} # End of cron()
1802
 
1811
 
1803
########################################################################
1812
########################################################################
1804
##                              "Fail2Ban"                            ##
1813
##                              "Fail2Ban"                            ##
1805
##- Adapt conf file to ALCASAR                                        ##
1814
##- Adapt conf file to ALCASAR                                        ##
1806
##- Secure items : DDOS, SSH-Brute-Force, Intercept & ACC brute-Force ##
1815
##- Secure items : DDOS, SSH-Brute-Force, Intercept & ACC brute-Force ##
1807
########################################################################
1816
########################################################################
1808
fail2ban()
1817
fail2ban()
1809
{
1818
{
1810
# adapt fail2ban to Mageia (fedora like) & ALCASAR behaviour
1819
# adapt fail2ban to Mageia (fedora like) & ALCASAR behaviour
1811
	[ -e /etc/fail2ban/jail.conf.default ] || cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.default
1820
	[ -e /etc/fail2ban/jail.conf.default ] || cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.default
1812
	$SED "s?^before =.*?before = paths-fedora.conf?g" /etc/fail2ban/jail.conf
1821
	$SED "s?^before =.*?before = paths-fedora.conf?g" /etc/fail2ban/jail.conf
1813
 
1822
 
1814
# add 5 jails and their filters
1823
# add 5 jails and their filters
1815
## sshd : Ban after 3 failed attempts (ie. brute-force). This "jail" uses the default "sshd" f2b filter.
1824
## sshd : Ban after 3 failed attempts (ie. brute-force). This "jail" uses the default "sshd" f2b filter.
1816
	cat << EOF > /etc/fail2ban/jail.d/01-alcasar_sshd.conf
1825
	cat << EOF > /etc/fail2ban/jail.d/01-alcasar_sshd.conf
1817
[sshd]
1826
[sshd]
1818
enabled = true
1827
enabled = true
1819
#enabled  = false
1828
#enabled  = false
1820
maxretry = 3
1829
maxretry = 3
1821
bantime = 3m
1830
bantime = 3m
1822
findtime = 5m
1831
findtime = 5m
1823
EOF
1832
EOF
1824
 
1833
 
1825
## lighttpd-auth : Ban after 3 failed attempts on ACC. This "jail" uses the default "lighttpd-auth" f2b filter.
1834
## lighttpd-auth : Ban after 3 failed attempts on ACC. This "jail" uses the default "lighttpd-auth" f2b filter.
1826
	cat << EOF > /etc/fail2ban/jail.d/02-alcasar_lighttpd-auth.conf
1835
	cat << EOF > /etc/fail2ban/jail.d/02-alcasar_lighttpd-auth.conf
1827
[lighttpd-auth]
1836
[lighttpd-auth]
1828
enabled = true
1837
enabled = true
1829
#enabled  = false
1838
#enabled  = false
1830
maxretry = 3
1839
maxretry = 3
1831
bantime = 3m
1840
bantime = 3m
1832
findtime = 3m
1841
findtime = 3m
1833
EOF
1842
EOF
1834
 
1843
 
1835
## mod-evasive : Ban after 3 failed retrieve page attempts (ie : unknown page)
1844
## mod-evasive : Ban after 3 failed retrieve page attempts (ie : unknown page)
1836
	cat << EOF > /etc/fail2ban/jail.d/03-alcasar_mod-evasive.conf
1845
	cat << EOF > /etc/fail2ban/jail.d/03-alcasar_mod-evasive.conf
1837
[alcasar_mod-evasive]
1846
[alcasar_mod-evasive]
1838
#enabled = true
1847
#enabled = true
1839
enabled = false
1848
enabled = false
1840
backend = auto
1849
backend = auto
1841
filter = alcasar_mod-evasive
1850
filter = alcasar_mod-evasive
1842
action = iptables-allports[name=alcasar_mod-evasive]
1851
action = iptables-allports[name=alcasar_mod-evasive]
1843
logpath = /var/log/lighttpd/access.log
1852
logpath = /var/log/lighttpd/access.log
1844
maxretry = 3
1853
maxretry = 3
1845
bantime = 3m
1854
bantime = 3m
1846
findtime = 3m
1855
findtime = 3m
1847
EOF
1856
EOF
1848
	cat << EOF > /etc/fail2ban/filter.d/alcasar_mod-evasive.conf
1857
	cat << EOF > /etc/fail2ban/filter.d/alcasar_mod-evasive.conf
1849
[Definition]
1858
[Definition]
1850
failregex =  <HOST> .+\] "[^"]+" 403
1859
failregex =  <HOST> .+\] "[^"]+" 403
1851
ignoreregex =
1860
ignoreregex =
1852
EOF
1861
EOF
1853
 
1862
 
1854
### alcasar_intercept : ban after 5 failed user login attemps on intercept.php
1863
### alcasar_intercept : ban after 5 failed user login attemps on intercept.php
1855
	cat << EOF > /etc/fail2ban/jail.d/04-alcasar_intercept.conf
1864
	cat << EOF > /etc/fail2ban/jail.d/04-alcasar_intercept.conf
1856
[alcasar_intercept]
1865
[alcasar_intercept]
1857
enabled = true
1866
enabled = true
1858
#enabled = false
1867
#enabled = false
1859
backend = auto
1868
backend = auto
1860
filter = alcasar_intercept
1869
filter = alcasar_intercept
1861
action = iptables-allports[name=alcasar_intercept]
1870
action = iptables-allports[name=alcasar_intercept]
1862
logpath = /var/log/lighttpd/access.log
1871
logpath = /var/log/lighttpd/access.log
1863
maxretry = 5
1872
maxretry = 5
1864
bantime = 3m
1873
bantime = 3m
1865
findtime = 3m
1874
findtime = 3m
1866
EOF
1875
EOF
1867
	cat << EOF > /etc/fail2ban/filter.d/alcasar_intercept.conf
1876
	cat << EOF > /etc/fail2ban/filter.d/alcasar_intercept.conf
1868
[Definition]
1877
[Definition]
1869
failregex = <HOST> .* \"GET \/intercept\.php\?res=failed\&reason=reject
1878
failregex = <HOST> .* \"GET \/intercept\.php\?res=failed\&reason=reject
1870
ignoreregex =
1879
ignoreregex =
1871
EOF
1880
EOF
1872
 
1881
 
1873
## alcasar_change-pwd : ban after 5 failed user change password attempts
1882
## alcasar_change-pwd : ban after 5 failed user change password attempts
1874
	cat << EOF > /etc/fail2ban/jail.d/05-alcasar_change-pwd.conf
1883
	cat << EOF > /etc/fail2ban/jail.d/05-alcasar_change-pwd.conf
1875
[alcasar_change-pwd]
1884
[alcasar_change-pwd]
1876
enabled = true
1885
enabled = true
1877
#enabled = false
1886
#enabled = false
1878
backend = auto
1887
backend = auto
1879
filter = alcasar_change-pwd
1888
filter = alcasar_change-pwd
1880
action = iptables-allports[name=alcasar_change-pwd]
1889
action = iptables-allports[name=alcasar_change-pwd]
1881
logpath = /var/log/lighttpd/access.log
1890
logpath = /var/log/lighttpd/access.log
1882
maxretry = 5
1891
maxretry = 5
1883
bantime = 3m
1892
bantime = 3m
1884
findtime = 3m
1893
findtime = 3m
1885
EOF
1894
EOF
1886
	cat << EOF > /etc/fail2ban/filter.d/alcasar_change-pwd.conf
1895
	cat << EOF > /etc/fail2ban/filter.d/alcasar_change-pwd.conf
1887
[Definition]
1896
[Definition]
1888
failregex = <HOST> .* \"POST \/password\.php
1897
failregex = <HOST> .* \"POST \/password\.php
1889
ignoreregex =
1898
ignoreregex =
1890
EOF
1899
EOF
1891
 
1900
 
1892
# allow reading of 2 log files (fail2ban & watchdog).
1901
# allow reading of 2 log files (fail2ban & watchdog).
1893
	[ -e /var/log/fail2ban.log ] || /usr/bin/touch /var/log/fail2ban.log
1902
	[ -e /var/log/fail2ban.log ] || /usr/bin/touch /var/log/fail2ban.log
1894
	[ -e $DIR_SAVE/security/watchdog.log ] || /usr/bin/touch $DIR_SAVE/security/watchdog.log
1903
	[ -e $DIR_SAVE/security/watchdog.log ] || /usr/bin/touch $DIR_SAVE/security/watchdog.log
1895
	chmod 644 /var/log/fail2ban.log
1904
	chmod 644 /var/log/fail2ban.log
1896
	chmod 644 $DIR_SAVE/security/watchdog.log
1905
	chmod 644 $DIR_SAVE/security/watchdog.log
1897
	/usr/bin/touch /var/log/auth.log
1906
	/usr/bin/touch /var/log/auth.log
1898
# fail2ban unit
1907
# fail2ban unit
1899
	cp /lib/systemd/system/fail2ban.service /etc/systemd/system/fail2ban.service
1908
	cp /lib/systemd/system/fail2ban.service /etc/systemd/system/fail2ban.service
1900
	$SED '/ExecStart=/a\ExecStop=/usr/bin/fail2ban-client stop' /etc/systemd/system/fail2ban.service
1909
	$SED '/ExecStart=/a\ExecStop=/usr/bin/fail2ban-client stop' /etc/systemd/system/fail2ban.service
1901
	$SED '/Type=/a\PIDFile=/run/fail2ban/fail2ban.pid' /etc/systemd/system/fail2ban.service
1910
	$SED '/Type=/a\PIDFile=/run/fail2ban/fail2ban.pid' /etc/systemd/system/fail2ban.service
1902
	$SED '/After=*/c After=syslog.target network.target lighttpd.service' /etc/systemd/system/fail2ban.service
1911
	$SED '/After=*/c After=syslog.target network.target lighttpd.service' /etc/systemd/system/fail2ban.service
1903
} # End of fail2ban()
1912
} # End of fail2ban()
1904
 
1913
 
1905
########################################################
1914
########################################################
1906
##                  "gammu_smsd"                      ##
1915
##                  "gammu_smsd"                      ##
1907
## - Creating of SMS management database              ##
1916
## - Creating of SMS management database              ##
1908
## - Write the gammu a gammu_smsd conf files          ##
1917
## - Write the gammu a gammu_smsd conf files          ##
1909
########################################################
1918
########################################################
1910
gammu_smsd()
1919
gammu_smsd()
1911
{
1920
{
1912
# Create 'gammu' system user
1921
# Create 'gammu' system user
1913
	groupadd -f gammu_smsd
1922
	groupadd -f gammu_smsd
1914
	useradd -r -g gammu_smsd -s /bin/false -c "system user for gammu_smsd" gammu_smsd
1923
	useradd -r -g gammu_smsd -s /bin/false -c "system user for gammu_smsd" gammu_smsd
1915
	usermod -a -G dialout gammu_smsd
1924
	usermod -a -G dialout gammu_smsd
1916
 
1925
 
1917
# Create 'gammu' database
1926
# Create 'gammu' database
1918
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
1927
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
1919
	$MYSQL "CREATE DATABASE IF NOT EXISTS $DB_GAMMU; GRANT ALL ON $DB_GAMMU.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd'; FLUSH PRIVILEGES;"
1928
	$MYSQL "CREATE DATABASE IF NOT EXISTS $DB_GAMMU; GRANT ALL ON $DB_GAMMU.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd'; FLUSH PRIVILEGES;"
1920
# Add a gammu database structure
1929
# Add a gammu database structure
1921
	/usr/bin/mysql -u$DB_USER -p$radiuspwd $DB_GAMMU < $DIR_CONF/empty-gammu-smsd-db.sql
1930
	/usr/bin/mysql -u$DB_USER -p$radiuspwd $DB_GAMMU < $DIR_CONF/empty-gammu-smsd-db.sql
1922
 
1931
 
1923
# Config file for the gammu_smsd daemon & gammu (ttyUSB0 as default com port)
1932
# Config file for the gammu_smsd daemon & gammu (ttyUSB0 as default com port)
1924
	cat << EOF > /etc/gammurc
1933
	cat << EOF > /etc/gammurc
1925
[gammu]
1934
[gammu]
1926
device = /dev/ttyUSB0
1935
device = /dev/ttyUSB0
1927
connection = at115200
1936
connection = at115200
1928
EOF
1937
EOF
1929
 
1938
 
1930
	cat << EOF > /etc/gammu_smsd_conf
1939
	cat << EOF > /etc/gammu_smsd_conf
1931
[gammu]
1940
[gammu]
1932
port = /dev/ttyUSB0
1941
port = /dev/ttyUSB0
1933
connection = at115200
1942
connection = at115200
1934
 
1943
 
1935
[smsd]
1944
[smsd]
1936
PIN = 1234
1945
PIN = 1234
1937
logfile = /var/log/gammu-smsd/gammu-smsd.log
1946
logfile = /var/log/gammu-smsd/gammu-smsd.log
1938
logformat = textall
1947
logformat = textall
1939
debuglevel = 0
1948
debuglevel = 0
1940
 
1949
 
1941
service = sql
1950
service = sql
1942
driver = native_mysql
1951
driver = native_mysql
1943
user = $DB_USER
1952
user = $DB_USER
1944
password = $radiuspwd
1953
password = $radiuspwd
1945
pc = localhost
1954
pc = localhost
1946
database = $DB_GAMMU
1955
database = $DB_GAMMU
1947
 
1956
 
1948
RunOnReceive = sudo $DIR_DEST_BIN/alcasar-sms.sh --new_sms
1957
RunOnReceive = sudo $DIR_DEST_BIN/alcasar-sms.sh --new_sms
1949
 
1958
 
1950
StatusFrequency = 30
1959
StatusFrequency = 30
1951
;LoopSleep = 2
1960
;LoopSleep = 2
1952
 
1961
 
1953
;ResetFrequency = 300
1962
;ResetFrequency = 300
1954
;HardResetFrequency = 120
1963
;HardResetFrequency = 120
1955
 
1964
 
1956
CheckSecurity = 1
1965
CheckSecurity = 1
1957
CheckSignal = 1
1966
CheckSignal = 1
1958
CheckBattery = 0
1967
CheckBattery = 0
1959
EOF
1968
EOF
1960
	chmod 755 /etc/gammu_smsd_conf /etc/gammurc
1969
	chmod 755 /etc/gammu_smsd_conf /etc/gammurc
1961
 
1970
 
1962
# Create the systemd unit
1971
# Create the systemd unit
1963
	cat << EOF > /etc/systemd/system/gammu-smsd.service
1972
	cat << EOF > /etc/systemd/system/gammu-smsd.service
1964
[Unit]
1973
[Unit]
1965
Description=SMS daemon for Gammu
1974
Description=SMS daemon for Gammu
1966
Documentation=man:gammu-smsd(1)
1975
Documentation=man:gammu-smsd(1)
1967
After=network.target mysqld.service
1976
After=network.target mysqld.service
1968
 
1977
 
1969
[Service]
1978
[Service]
1970
Type=forking
1979
Type=forking
1971
ExecStart=/usr/bin/gammu-smsd --config /etc/gammu_smsd_conf --user=gammu_smsd --group=gammu_smsd --pid=/run/gammu-smsd.pid --daemon
1980
ExecStart=/usr/bin/gammu-smsd --config /etc/gammu_smsd_conf --user=gammu_smsd --group=gammu_smsd --pid=/run/gammu-smsd.pid --daemon
1972
ExecReload=/bin/kill -HUP $MAINPID
1981
ExecReload=/bin/kill -HUP $MAINPID
1973
ExecStopPost=/bin/rm -f /run/gammu-smsd.pid
1982
ExecStopPost=/bin/rm -f /run/gammu-smsd.pid
1974
PIDFile=/run/gammu-smsd.pid
1983
PIDFile=/run/gammu-smsd.pid
1975
 
1984
 
1976
[Install]
1985
[Install]
1977
WantedBy=multi-user.target
1986
WantedBy=multi-user.target
1978
EOF
1987
EOF
1979
 
1988
 
1980
# Log folder for gammu-smsd
1989
# Log folder for gammu-smsd
1981
	[ -d /var/log/gammu-smsd ] || mkdir /var/log/gammu-smsd
1990
	[ -d /var/log/gammu-smsd ] || mkdir /var/log/gammu-smsd
1982
	chmod 755 /var/log/gammu-smsd
1991
	chmod 755 /var/log/gammu-smsd
1983
 
1992
 
1984
# Udev rule for Modeswitch (switch from "mass_storage" mode to "ttyUSB" modem) needed with some Huawei MODEM (idVendor: 12d1)
1993
# Udev rule for Modeswitch (switch from "mass_storage" mode to "ttyUSB" modem) needed with some Huawei MODEM (idVendor: 12d1)
1985
# normally not needed now since modeswitch is managed by udev (see Mageia RPM)
1994
# normally not needed now since modeswitch is managed by udev (see Mageia RPM)
1986
#cat << EOF > /lib/udev/rules.d/66-huawei.rules
1995
#cat << EOF > /lib/udev/rules.d/66-huawei.rules
1987
#KERNEL=="ttyUSB0",ATTRS{idVendor}=="12d1",RUN+="$DIR_DEST_BIN/alcasar-sms.sh --mode"
1996
#KERNEL=="ttyUSB0",ATTRS{idVendor}=="12d1",RUN+="$DIR_DEST_BIN/alcasar-sms.sh --mode"
1988
#EOF
1997
#EOF
1989
# Udev rule for fixing the enumeration of ttyUSB port on some MODEM (when they switch randomly the order of their ports at boot time)
1998
# Udev rule for fixing the enumeration of ttyUSB port on some MODEM (when they switch randomly the order of their ports at boot time)
1990
# example : http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/
1999
# example : http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/
1991
 
2000
 
1992
} # End of gammu_smsd()
2001
} # End of gammu_smsd()
1993
 
2002
 
1994
########################################################
2003
########################################################
1995
##                      "msec"                        ##
2004
##                      "msec"                        ##
1996
## - Apply the "fileserver" security level            ##
2005
## - Apply the "fileserver" security level            ##
1997
## - remove the "system request" for rebooting        ##
2006
## - remove the "system request" for rebooting        ##
1998
## - Fix several file permissions                     ##
2007
## - Fix several file permissions                     ##
1999
########################################################
2008
########################################################
2000
msec()
2009
msec()
2001
{
2010
{
2002
 
2011
 
2003
# Apply fileserver security level
2012
# Apply fileserver security level
2004
	[ -e /etc/security/msec/security.conf.default ] || cp /etc/security/msec/security.conf /etc/security/msec/security.conf.default
2013
	[ -e /etc/security/msec/security.conf.default ] || cp /etc/security/msec/security.conf /etc/security/msec/security.conf.default
2005
	echo "BASE_LEVEL=fileserver" > /etc/security/msec/security.conf
2014
	echo "BASE_LEVEL=fileserver" > /etc/security/msec/security.conf
2006
 
2015
 
2007
# Set permissions monitoring and enforcement
2016
# Set permissions monitoring and enforcement
2008
cat <<EOF > /etc/security/msec/perm.local
2017
cat <<EOF > /etc/security/msec/perm.local
2009
/var/log/firewall/                      root.apache     750
2018
/var/log/firewall/                      root.apache     750
2010
/var/log/firewall/*                     root.apache     640
2019
/var/log/firewall/*                     root.apache     640
2011
/etc/security/msec/perm.local           root.root       640
2020
/etc/security/msec/perm.local           root.root       640
2012
/etc/security/msec/level.local          root.root       640
2021
/etc/security/msec/level.local          root.root       640
2013
/etc/freeradius-web                     root.apache     750
2022
/etc/freeradius-web                     root.apache     750
2014
/etc/freeradius-web/admin.conf          root.apache     640
2023
/etc/freeradius-web/admin.conf          root.apache     640
2015
/etc/raddb/client.conf                  radius.radius   640
2024
/etc/raddb/client.conf                  radius.radius   640
2016
/etc/raddb/radius.conf                  radius.radius   640
2025
/etc/raddb/radius.conf                  radius.radius   640
2017
/etc/raddb/mods-available/ldap          radius.apache   660
2026
/etc/raddb/mods-available/ldap          radius.apache   660
2018
/etc/raddb/sites-available/alcasar      radius.apache   660
2027
/etc/raddb/sites-available/alcasar      radius.apache   660
2019
/etc/pki/CA/                            root.apache     750 force
2028
/etc/pki/CA/                            root.apache     750 force
2020
/etc/pki/CA/*                           root.apache     640 force 
2029
/etc/pki/CA/*                           root.apache     640 force 
2021
/etc/pki/CA/private/                    root.root       700 force
2030
/etc/pki/CA/private/                    root.root       700 force
2022
/etc/pki/CA/private/*                   root.root       600 force
2031
/etc/pki/CA/private/*                   root.root       600 force
2023
/etc/pki/tls/private/                   root.apache     750 force
2032
/etc/pki/tls/private/                   root.apache     750 force
2024
/etc/pki/tls/private/*                  root.apache     640 force
2033
/etc/pki/tls/private/*                  root.apache     640 force
2025
EOF
2034
EOF
2026
# apply now hourly & daily checks
2035
# apply now hourly & daily checks
2027
	/usr/sbin/msec
2036
	/usr/sbin/msec
2028
	/etc/cron.weekly/msec
2037
	/etc/cron.weekly/msec
2029
 
2038
 
2030
} # End of msec()
2039
} # End of msec()
2031
 
2040
 
2032
##################################################################
2041
##################################################################
2033
##                   Fonction "letsencrypt"                     ##
2042
##                   Fonction "letsencrypt"                     ##
2034
## - Install Let's Encrypt client                               ##
2043
## - Install Let's Encrypt client                               ##
2035
## - Prepare Let's Encrypt ALCASAR configuration file           ##
2044
## - Prepare Let's Encrypt ALCASAR configuration file           ##
2036
##################################################################
2045
##################################################################
2037
letsencrypt()
2046
letsencrypt()
2038
{
2047
{
2039
	acmesh_installDir="/opt/acme.sh"
2048
	acmesh_installDir="/opt/acme.sh"
2040
	acmesh_confDir="/usr/local/etc/letsencrypt"
2049
	acmesh_confDir="/usr/local/etc/letsencrypt"
2041
	acmesh_userAgent="ALCASAR"
2050
	acmesh_userAgent="ALCASAR"
2042
# Remove potential old installers
2051
# Remove potential old installers
2043
	rm -rf /tmp/acme.sh-*
2052
	rm -rf /tmp/acme.sh-*
2044
	[ -d $acmesh_confDir ] && rm -rf $acmesh_confDir
2053
	[ -d $acmesh_confDir ] && rm -rf $acmesh_confDir
2045
# Extract acme.sh
2054
# Extract acme.sh
2046
	tar xzf ./conf/letsencrypt-client/acme.sh-*.tar.gz -C /tmp/
2055
	tar xzf ./conf/letsencrypt-client/acme.sh-*.tar.gz -C /tmp/
2047
	pwdInstall=$(pwd)
2056
	pwdInstall=$(pwd)
2048
	cd /tmp/acme.sh-* || { echo "Unable to find tmp ACME directory"; exit 1; }
2057
	cd /tmp/acme.sh-* || { echo "Unable to find tmp ACME directory"; exit 1; }
2049
	mkdir $acmesh_confDir ; chown root:apache $acmesh_confDir ; chmod 440 $acmesh_confDir
2058
	mkdir $acmesh_confDir ; chown root:apache $acmesh_confDir ; chmod 440 $acmesh_confDir
2050
	mkdir $acmesh_confDir/{data,certs,ca} ; chown root:apache $acmesh_confDir/{data,certs,ca} ; chmod 440 $acmesh_confDir/{data,certs,ca}
2059
	mkdir $acmesh_confDir/{data,certs,ca} ; chown root:apache $acmesh_confDir/{data,certs,ca} ; chmod 440 $acmesh_confDir/{data,certs,ca}
2051
# Install acme.sh
2060
# Install acme.sh
2052
	./acme.sh --install \
2061
	./acme.sh --install \
2053
		--home $acmesh_installDir \
2062
		--home $acmesh_installDir \
2054
		--config-home $acmesh_confDir/data \
2063
		--config-home $acmesh_confDir/data \
2055
		--certhome $acmesh_confDir/certs \
2064
		--certhome $acmesh_confDir/certs \
2056
		--accountkey $acmesh_confDir/ca/account.key \
2065
		--accountkey $acmesh_confDir/ca/account.key \
2057
		--accountconf $acmesh_confDir/data/account.conf \
2066
		--accountconf $acmesh_confDir/data/account.conf \
2058
		--useragent $acmesh_userAgent \
2067
		--useragent $acmesh_userAgent \
2059
		--nocron \
2068
		--nocron \
2060
		> /dev/null
2069
		> /dev/null
2061
	if [ $? -ne 0 ]; then
2070
	if [ $? -ne 0 ]; then
2062
		echo "Error during installation of Let's Encrypt client (acme.sh)."
2071
		echo "Error during installation of Let's Encrypt client (acme.sh)."
2063
	fi
2072
	fi
2064
# Create configuration file
2073
# Create configuration file
2065
	cat <<EOF > /usr/local/etc/alcasar-letsencrypt
2074
	cat <<EOF > /usr/local/etc/alcasar-letsencrypt
2066
email=
2075
email=
2067
dateIssueRequest=
2076
dateIssueRequest=
2068
domainRequest=
2077
domainRequest=
2069
challenge=
2078
challenge=
2070
dateIssued=
2079
dateIssued=
2071
dnsapi=
2080
dnsapi=
2072
dateNextRenewal=
2081
dateNextRenewal=
2073
EOF
2082
EOF
2074
	cd $pwdInstall || { echo "Unable to find $pwdInstall directory"; exit 1; }
2083
	cd $pwdInstall || { echo "Unable to find $pwdInstall directory"; exit 1; }
2075
	rm -rf /tmp/acme.sh-*
2084
	rm -rf /tmp/acme.sh-*
2076
} # End of letsencrypt()
2085
} # End of letsencrypt()
2077
 
2086
 
2078
##################################################################
2087
##################################################################
2079
##                       "mail_service"                         ##
2088
##                       "mail_service"                         ##
2080
## - Install Postfix conf for email registration method         ##
2089
## - Install Postfix conf for email registration method         ##
2081
##################################################################
2090
##################################################################
2082
mail_service()
2091
mail_service()
2083
{
2092
{
2084
	[ -e /etc/php.d/05_mail.ini.default ] || cp /etc/php.d/05_mail.ini /etc/php.d/05_mail.ini.default
2093
	[ -e /etc/php.d/05_mail.ini.default ] || cp /etc/php.d/05_mail.ini /etc/php.d/05_mail.ini.default
2085
	$SED "s?^mail.add_x_header =.*?mail.add_x_header = Off?g" /etc/php.d/05_mail.ini
2094
	$SED "s?^mail.add_x_header =.*?mail.add_x_header = Off?g" /etc/php.d/05_mail.ini
2086
	[ -e /etc/postfix/main.cf.orig ] || cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
2095
	[ -e /etc/postfix/main.cf.orig ] || cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
2087
	$SED "s?^inet_protocols =.*?inet_protocols = ipv4?g" /etc/postfix/main.cf
2096
	$SED "s?^inet_protocols =.*?inet_protocols = ipv4?g" /etc/postfix/main.cf
2088
	$SED "s?^smtp_tls_security_level =.*?smtp_tls_security_level = encrypt?g" /etc/postfix/main.cf
2097
	$SED "s?^smtp_tls_security_level =.*?smtp_tls_security_level = encrypt?g" /etc/postfix/main.cf
2089
	$SED "s?^smtpd_banner =.*?smtpd_banner = $myhostname ESMTP?g" /etc/postfix/main.cf
2098
	$SED "s?^smtpd_banner =.*?smtpd_banner = $myhostname ESMTP?g" /etc/postfix/main.cf
2090
	cat << EOT >> /etc/postfix/main.cf
2099
	cat << EOT >> /etc/postfix/main.cf
2091
smtputf8_enable = no
2100
smtputf8_enable = no
2092
smtp_use_tls = yes
2101
smtp_use_tls = yes
2093
smtp_tls_wrappermode = yes
2102
smtp_tls_wrappermode = yes
2094
smtp_sasl_auth_enable = yes
2103
smtp_sasl_auth_enable = yes
2095
smtp_sasl_security_options = noanonymous
2104
smtp_sasl_security_options = noanonymous
2096
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
2105
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
2097
relayhost =
2106
relayhost =
2098
myhostname = $HOSTNAME.$DOMAIN
2107
myhostname = $HOSTNAME.$DOMAIN
2099
EOT
2108
EOT
2100
	chown -R postfix:postfix /var/lib/postfix
2109
	chown -R postfix:postfix /var/lib/postfix
2101
} # end of mail_service
2110
} # end of mail_service
2102
 
2111
 
2103
##################################################################
2112
##################################################################
2104
##                    Fonction "post_install"                   ##
2113
##                    Fonction "post_install"                   ##
2105
## - Modifying banners (locals et ssh) & prompts                ##
2114
## - Modifying banners (locals et ssh) & prompts                ##
2106
## - SSH config                                                 ##
2115
## - SSH config                                                 ##
2107
## - sudoers config & files security                            ##
2116
## - sudoers config & files security                            ##
2108
## - log rotate & ANSSI security parameters                     ##
2117
## - log rotate & ANSSI security parameters                     ##
2109
## - Apply former conf in case of an update                     ##
2118
## - Apply former conf in case of an update                     ##
2110
##################################################################
2119
##################################################################
2111
post_install()
2120
post_install()
2112
{
2121
{
2113
	MAGEIA_VERSION=`cat /etc/lsb-release|grep "DISTRIB_DESCRIPTION"|cut -d"=" -f2|tr -d '"'`
2122
	MAGEIA_VERSION=`cat /etc/lsb-release|grep "DISTRIB_DESCRIPTION"|cut -d"=" -f2|tr -d '"'`
2114
# change the SSHD options
2123
# change the SSHD options
2115
	cp -f $DIR_CONF/banner /etc/ssh/alcasar-banner-ssh
2124
	cp -f $DIR_CONF/banner /etc/ssh/alcasar-banner-ssh
2116
	echo " Version $VERSION ($MAGEIA_VERSION)" >> /etc/ssh/alcasar-banner-ssh
2125
	echo " Version $VERSION ($MAGEIA_VERSION)" >> /etc/ssh/alcasar-banner-ssh
2117
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
2126
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
2118
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
2127
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
2119
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
2128
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
2120
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
2129
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
2121
# sshd listens on EXTIF & INTIF
2130
# sshd listens on EXTIF & INTIF
2122
	$SED "s?^#ListenAddress 0\.0\.0\.0.*?ListenAddress 0\.0\.0\.0?g" /etc/ssh/sshd_config
2131
	$SED "s?^#ListenAddress 0\.0\.0\.0.*?ListenAddress 0\.0\.0\.0?g" /etc/ssh/sshd_config
2123
# sshd authorized certificate for root login
2132
# sshd authorized certificate for root login
2124
	$SED "s?^PermitRootLogin.*?PermitRootLogin without-password?g" /etc/ssh/sshd_config
2133
	$SED "s?^PermitRootLogin.*?PermitRootLogin without-password?g" /etc/ssh/sshd_config
2125
	$SED "s?^X11Forwarding.*?#X11Forwarding yes?g" /etc/ssh/sshd_config
2134
	$SED "s?^X11Forwarding.*?#X11Forwarding yes?g" /etc/ssh/sshd_config
2126
# ALCASAR conf file
2135
# ALCASAR conf file
2127
	echo "HTTPS_LOGIN=off" >> $CONF_FILE
2136
	echo "HTTPS_LOGIN=off" >> $CONF_FILE
2128
	echo "HTTPS_CHILLI=off" >> $CONF_FILE
2137
	echo "HTTPS_CHILLI=off" >> $CONF_FILE
2129
	echo "SSH_LAN=22" >> $CONF_FILE
2138
	echo "SSH_LAN=22" >> $CONF_FILE
2130
	echo "SSH_WAN=0" >> $CONF_FILE
2139
	echo "SSH_WAN=0" >> $CONF_FILE
2131
	echo "SSH_ADMIN_FROM=0.0.0.0/0.0.0.0" >> $CONF_FILE
2140
	echo "SSH_ADMIN_FROM=0.0.0.0/0.0.0.0" >> $CONF_FILE
2132
	echo "INTERLAN=off" >> $CONF_FILE
2141
	echo "INTERLAN=off" >> $CONF_FILE
2133
	echo "LDAP=off" >> $CONF_FILE
2142
	echo "LDAP=off" >> $CONF_FILE
2134
	echo "LDAP_SERVER=127.0.0.1" >> $CONF_FILE
2143
	echo "LDAP_SERVER=127.0.0.1" >> $CONF_FILE
2135
	echo "LDAP_BASE=cn=Users;dc=serverad;dc=localdomain" >> $CONF_FILE
2144
	echo "LDAP_BASE=cn=Users;dc=serverad;dc=localdomain" >> $CONF_FILE
2136
	echo "LDAP_UID=sAMAccountName" >> $CONF_FILE
2145
	echo "LDAP_UID=sAMAccountName" >> $CONF_FILE
2137
	echo "LDAP_FILTER=" >> $CONF_FILE
2146
	echo "LDAP_FILTER=" >> $CONF_FILE
2138
	echo "LDAP_USER=alcasar" >> $CONF_FILE
2147
	echo "LDAP_USER=alcasar" >> $CONF_FILE
2139
	echo "LDAP_PASSWORD=" >> $CONF_FILE
2148
	echo "LDAP_PASSWORD=" >> $CONF_FILE
2140
	echo "LDAP_SSL=on" >> $CONF_FILE
2149
	echo "LDAP_SSL=on" >> $CONF_FILE
2141
	echo "LDAP_CERT_REQUIRED=" >> $CONF_FILE
2150
	echo "LDAP_CERT_REQUIRED=" >> $CONF_FILE
2142
	echo "SMS=off" >> $CONF_FILE
2151
	echo "SMS=off" >> $CONF_FILE
2143
	echo "SMS_NUM=" >> $CONF_FILE
2152
	echo "SMS_NUM=" >> $CONF_FILE
2144
	echo "MAIL=off" >> $CONF_FILE
2153
	echo "MAIL=off" >> $CONF_FILE
2145
	echo "MAIL_TYPE=" >> $CONF_FILE
2154
	echo "MAIL_TYPE=" >> $CONF_FILE
2146
	echo "MAIL_SMTP_IP=" >> $CONF_FILE
2155
	echo "MAIL_SMTP_IP=" >> $CONF_FILE
2147
	echo "MAIL_SMTP_PORT=" >> $CONF_FILE
2156
	echo "MAIL_SMTP_PORT=" >> $CONF_FILE
2148
	echo "MAIL_ADDR=" >> $CONF_FILE
2157
	echo "MAIL_ADDR=" >> $CONF_FILE
2149
	echo "MAIL_WHITEDOMAIN=" >> $CONF_FILE
2158
	echo "MAIL_WHITEDOMAIN=" >> $CONF_FILE
2150
	echo "MAIL_ADMIN=" >> $CONF_FILE
2159
	echo "MAIL_ADMIN=" >> $CONF_FILE
2151
	echo "BL_PUREIP=on" >> $CONF_FILE
2160
	echo "BL_PUREIP=on" >> $CONF_FILE
2152
	echo "BL_SAFESEARCH=off" >> $CONF_FILE
2161
	echo "BL_SAFESEARCH=off" >> $CONF_FILE
2153
	echo "WL_SAFESEARCH=off" >> $CONF_FILE
2162
	echo "WL_SAFESEARCH=off" >> $CONF_FILE
2154
	echo "IOT_CAPTURE=off" >> $CONF_FILE
2163
	echo "IOT_CAPTURE=off" >> $CONF_FILE
2155
	echo "WIFI4EU=off" >> $CONF_FILE
2164
	echo "WIFI4EU=off" >> $CONF_FILE
2156
	echo "WIFI4EU_CODE=123e4567-e89b-12d3-a456-426655440000" >> $CONF_FILE
2165
	echo "WIFI4EU_CODE=123e4567-e89b-12d3-a456-426655440000" >> $CONF_FILE
2157
	echo "MULTIWAN=off" >> $CONF_FILE
2166
	echo "MULTIWAN=off" >> $CONF_FILE
2158
# Prompt customisation (colors)
2167
# Prompt customisation (colors)
2159
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
2168
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
2160
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
2169
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
2161
	$SED "s?^ORGANISME.*?ORGANISME=$ORGANISME?g" /etc/bashrc
2170
	$SED "s?^ORGANISME.*?ORGANISME=$ORGANISME?g" /etc/bashrc
2162
	$SED "s?^alias ll=.*?alias ll=\"ls -al --color\"?g" /etc/profile.d/60alias.sh
2171
	$SED "s?^alias ll=.*?alias ll=\"ls -al --color\"?g" /etc/profile.d/60alias.sh
2163
# sudoers configuration for "apache" & "sysadmin"
2172
# sudoers configuration for "apache" & "sysadmin"
2164
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
2173
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
2165
	cp -f $DIR_CONF/sudoers /etc/ ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
2174
	cp -f $DIR_CONF/sudoers /etc/ ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
2166
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK/$PRIVATE_NETMASK,localhost		#réseau de l'organisme?g" /etc/sudoers
2175
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK/$PRIVATE_NETMASK,localhost		#réseau de l'organisme?g" /etc/sudoers
2167
# Modify some logrotate files (gammu, ulogd)
2176
# Modify some logrotate files (gammu, ulogd)
2168
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
2177
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
2169
	chmod 644 /etc/logrotate.d/*
2178
	chmod 644 /etc/logrotate.d/*
2170
# Log compression
2179
# Log compression
2171
	$SED "s?^delaycompress.*?#&?g" /etc/logrotate.conf
2180
	$SED "s?^delaycompress.*?#&?g" /etc/logrotate.conf
2172
# actualisation des fichiers logs compressés
2181
# actualisation des fichiers logs compressés
2173
	for dir in firewall e2guardian lighttpd
2182
	for dir in firewall e2guardian lighttpd
2174
	do
2183
	do
2175
		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 {} \;
2184
		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 {} \;
2176
	done
2185
	done
2177
	/usr/bin/systemctl daemon-reload
2186
	/usr/bin/systemctl daemon-reload
2178
# processes started at boot time (Systemctl)
2187
# processes started at boot time (Systemctl)
2179
	for i in alcasar-network mysqld lighttpd php-fpm ntpd iptables unbound unbound-blacklist unbound-whitelist unbound-blackhole radiusd nfcapd e2guardian ulogd-ssh ulogd-traceability ulogd-ext-access chilli fail2ban vnstat sshd
2188
	for i in alcasar-network mysqld lighttpd php-fpm ntpd iptables unbound unbound-blacklist unbound-whitelist unbound-blackhole radiusd nfcapd e2guardian ulogd-ssh ulogd-traceability ulogd-ext-access chilli fail2ban vnstat sshd
2180
	do
2189
	do
2181
		/usr/bin/systemctl -q enable $i.service
2190
		/usr/bin/systemctl -q enable $i.service
2182
	done
2191
	done
2183
 
2192
 
2184
# disable processes at boot time (Systemctl)
2193
# disable processes at boot time (Systemctl)
2185
	for i in ulogd gpm dhcpd
2194
	for i in ulogd gpm dhcpd
2186
	do
2195
	do
2187
		/usr/bin/systemctl -q disable $i.service
2196
		/usr/bin/systemctl -q disable $i.service
2188
	done
2197
	done
2189
 
2198
 
2190
# Apply some security rules (some are from French cybersecurity Agency - ANSSI)
2199
# Apply some security rules (some are from French cybersecurity Agency - ANSSI)
2191
# ignore ICMP broadcast (smurf attack)
2200
# ignore ICMP broadcast (smurf attack)
2192
	echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" > /etc/sysctl.d/alcasar.conf
2201
	echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" > /etc/sysctl.d/alcasar.conf
2193
# ignore ICMP errors bogus
2202
# ignore ICMP errors bogus
2194
	echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" >> /etc/sysctl.d/alcasar.conf
2203
	echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" >> /etc/sysctl.d/alcasar.conf
2195
# remove ICMP redirects responces
2204
# remove ICMP redirects responces
2196
	echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2205
	echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2197
	echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2206
	echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2198
# enable SYN Cookies (Syn flood attacks)
2207
# enable SYN Cookies (Syn flood attacks)
2199
	echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.d/alcasar.conf
2208
	echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.d/alcasar.conf
2200
# enable kernel antispoofing
2209
# enable kernel antispoofing
2201
	echo "net.ipv4.conf.all.rp_filter = 1" >> /etc/sysctl.d/alcasar.conf
2210
	echo "net.ipv4.conf.all.rp_filter = 1" >> /etc/sysctl.d/alcasar.conf
2202
# ignore source routing
2211
# ignore source routing
2203
	echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.d/alcasar.conf
2212
	echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.d/alcasar.conf
2204
# set conntrack timer to 1h (3600s) instead of 5 weeks
2213
# set conntrack timer to 1h (3600s) instead of 5 weeks
2205
	echo "net.netfilter.nf_conntrack_tcp_timeout_established = 3600" >> /etc/sysctl.d/alcasar.conf
2214
	echo "net.netfilter.nf_conntrack_tcp_timeout_established = 3600" >> /etc/sysctl.d/alcasar.conf
2206
# disable log_martians (ALCASAR is often installed between two private network addresses)
2215
# disable log_martians (ALCASAR is often installed between two private network addresses)
2207
	echo "net.ipv4.conf.all.log_martians = 0" >> /etc/sysctl.d/alcasar.conf
2216
	echo "net.ipv4.conf.all.log_martians = 0" >> /etc/sysctl.d/alcasar.conf
2208
# disable iptables_helpers
2217
# disable iptables_helpers
2209
	echo "net.netfilter.nf_conntrack_helper = 0" >> /etc/sysctl.d/alcasar.conf
2218
	echo "net.netfilter.nf_conntrack_helper = 0" >> /etc/sysctl.d/alcasar.conf
2210
# Switch to the router mode
2219
# Switch to the router mode
2211
	echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/alcasar.conf
2220
	echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/alcasar.conf
2212
# Remove unused service ipv6
2221
# Remove unused service ipv6
2213
	echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2222
	echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2214
	echo "net.ipv6.conf.all.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2223
	echo "net.ipv6.conf.all.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2215
	echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2224
	echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2216
	echo "net.ipv6.conf.default.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2225
	echo "net.ipv6.conf.default.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2217
# switch to multi-users runlevel (instead of x11)
2226
# switch to multi-users runlevel (instead of x11)
2218
	ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
2227
	ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
2219
# disable Core dump file
2228
# disable Core dump file
2220
	[ -e /etc/security/limits.conf.default ]  || cp /etc/security/limits.conf /etc/security/limits.conf.default
2229
	[ -e /etc/security/limits.conf.default ]  || cp /etc/security/limits.conf /etc/security/limits.conf.default
2221
	$SED "/^# End of file.*/i*\tsoft\tcore\t0\n*\thard\tcore\t0" /etc/security/limits.conf
2230
	$SED "/^# End of file.*/i*\tsoft\tcore\t0\n*\thard\tcore\t0" /etc/security/limits.conf
2222
# GRUB2 modifications (Wait time : 3s - ALCASAR entry - VGA=791 - Change the default banner
2231
# GRUB2 modifications (Wait time : 3s - ALCASAR entry - VGA=791 - Change the default banner
2223
	[ -e /etc/default/grub.default ]  || cp /etc/default/grub /etc/default/grub.default
2232
	[ -e /etc/default/grub.default ]  || cp /etc/default/grub /etc/default/grub.default
2224
	$SED "s?^GRUB_TIMEOUT=.*?GRUB_TIMEOUT=3?g" /etc/default/grub
2233
	$SED "s?^GRUB_TIMEOUT=.*?GRUB_TIMEOUT=3?g" /etc/default/grub
2225
	$SED "s?^GRUB_DISTRIBUTOR=.*?GRUB_DISTRIBUTOR=ALCASAR?g" /etc/default/grub
2234
	$SED "s?^GRUB_DISTRIBUTOR=.*?GRUB_DISTRIBUTOR=ALCASAR?g" /etc/default/grub
2226
	[ -e /etc/mageia-release.default ]  || cp /etc/mageia-release /etc/mageia-release.default
2235
	[ -e /etc/mageia-release.default ]  || cp /etc/mageia-release /etc/mageia-release.default
2227
	vm_vga=`lsmod | egrep -c "virtio|vmwgfx"` # test if in VM
2236
	vm_vga=`lsmod | grep -c -E "virtio|vmwgfx"` # test if in VM
2228
	if [ $vm_vga == 0 ] # is not a VM
2237
	if [ $vm_vga == 0 ] # is not a VM
2229
	then
2238
	then
2230
		cp -f $DIR_CONF/banner /etc/mageia-release # ALCASAR ASCII-Art
2239
		cp -f $DIR_CONF/banner /etc/mageia-release # ALCASAR ASCII-Art
2231
		echo >> /etc/mageia-release
2240
		echo >> /etc/mageia-release
2232
		$SED "s?^GRUB_CMDLINE_LINUX_DEFAULT=\"?&vga=791 ?" /etc/default/grub
2241
		$SED "s?^GRUB_CMDLINE_LINUX_DEFAULT=\"?&vga=791 ?" /etc/default/grub
2233
	else
2242
	else
2234
		echo > /etc/mageia-release
2243
		echo > /etc/mageia-release
2235
	fi
2244
	fi
2236
	if [ $Lang == "fr" ]
2245
	if [ $Lang == "fr" ]
2237
	then
2246
	then
2238
		echo "Bienvenue sur ALCASAR Version $VERSION ($MAGEIA_VERSION)" >> /etc/mageia-release
2247
		echo "Bienvenue sur ALCASAR Version $VERSION ($MAGEIA_VERSION)" >> /etc/mageia-release
2239
		echo "Connectez-vous à l'URL 'https://$HOSTNAME.$DOMAIN/acc'" >> /etc/mageia-release
2248
		echo "Connectez-vous à l'URL 'https://$HOSTNAME.$DOMAIN/acc'" >> /etc/mageia-release
2240
	else
2249
	else
2241
		echo "Welcome on ALCASAR Version $VERSION ($MAGEIA_VERSION)" >> /etc/mageia-release
2250
		echo "Welcome on ALCASAR Version $VERSION ($MAGEIA_VERSION)" >> /etc/mageia-release
2242
		echo "Connect to 'https://$HOSTNAME.$DOMAIN/acc'" >> /etc/mageia-release
2251
		echo "Connect to 'https://$HOSTNAME.$DOMAIN/acc'" >> /etc/mageia-release
2243
	fi
2252
	fi
2244
	/usr/bin/update-grub2
2253
	/usr/bin/update-grub2
2245
# Load and apply the previous conf file
2254
# Load and apply the previous conf file
2246
	if [ "$mode" = "update" ]
2255
	if [ "$mode" = "update" ]
2247
	then
2256
	then
2248
		$DIR_DEST_BIN/alcasar-archive.sh --now # exports current logs in $DIR_SAVE/archive
2257
		$DIR_DEST_BIN/alcasar-archive.sh --now # exports current logs in $DIR_SAVE/archive
2249
		$DIR_DEST_BIN/alcasar-conf.sh --load
2258
		$DIR_DEST_BIN/alcasar-conf.sh --load
2250
		PARENT_SCRIPT=`basename $0`
2259
		PARENT_SCRIPT=`basename $0`
2251
		export PARENT_SCRIPT # to avoid stop&start process during the installation process
2260
		export PARENT_SCRIPT # to avoid stop&start process during the installation process
2252
		$DIR_DEST_BIN/alcasar-conf.sh --apply
2261
		$DIR_DEST_BIN/alcasar-conf.sh --apply
2253
		$DIR_DEST_BIN/alcasar-file-clean.sh # Clean & sort conf files. Add uamallowed domains to the dns-blackhole conf
2262
		$DIR_DEST_BIN/alcasar-file-clean.sh # Clean & sort conf files. Add uamallowed domains to the dns-blackhole conf
2254
		$SED "s?^INSTALL_DATE=.*?INSTALL_DATE=$DATE?g" $CONF_FILE
2263
		$SED "s?^INSTALL_DATE=.*?INSTALL_DATE=$DATE?g" $CONF_FILE
2255
		$SED "s?^VERSION=.*?VERSION=$VERSION?g" $CONF_FILE
2264
		$SED "s?^VERSION=.*?VERSION=$VERSION?g" $CONF_FILE
2256
	fi
2265
	fi
2257
	rm -f /var/tmp/alcasar-conf*
2266
	rm -f /var/tmp/alcasar-conf*
2258
	chown -R root:apache $DIR_DEST_ETC/*
2267
	chown -R root:apache $DIR_DEST_ETC/*
2259
	chmod -R 660 $DIR_DEST_ETC/*
2268
	chmod -R 660 $DIR_DEST_ETC/*
2260
	chmod ug+x $DIR_DEST_ETC/digest
2269
	chmod ug+x $DIR_DEST_ETC/digest
2261
	cd $DIR_INSTALL || { echo "Unable to find $DIR_INSTALL directory"; exit 1; }
2270
	cd $DIR_INSTALL || { echo "Unable to find $DIR_INSTALL directory"; exit 1; }
2262
	echo ""
2271
	echo ""
2263
	echo "#############################################################################"
2272
	echo "#############################################################################"
2264
	if [ $Lang == "fr" ]
2273
	if [ $Lang == "fr" ]
2265
		then
2274
		then
2266
		echo "#                        Fin d'installation d'ALCASAR                       #"
2275
		echo "#                        Fin d'installation d'ALCASAR                       #"
2267
		echo "#                                                                           #"
2276
		echo "#                                                                           #"
2268
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2277
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2269
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2278
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2270
		echo "#                                                                           #"
2279
		echo "#                                                                           #"
2271
		echo "#############################################################################"
2280
		echo "#############################################################################"
2272
		echo
2281
		echo
2273
		echo "- ALCASAR sera fonctionnel après redémarrage du système"
2282
		echo "- ALCASAR sera fonctionnel après redémarrage du système"
2274
		echo
2283
		echo
2275
		echo "- Lisez attentivement la documentation d'exploitation"
2284
		echo "- Lisez attentivement la documentation d'exploitation"
2276
		echo
2285
		echo
2277
		echo "- Le centre de controle d'ALCASAR (ACC) est à l'adresse http://$HOSTNAME.$DOMAIN"
2286
		echo "- Le centre de controle d'ALCASAR (ACC) est à l'adresse http://$HOSTNAME.$DOMAIN"
2278
		echo
2287
		echo
2279
		echo "                   Appuyez sur 'Entrée' pour continuer"
2288
		echo "                   Appuyez sur 'Entrée' pour continuer"
2280
	else
2289
	else
2281
		echo "#                        End of ALCASAR install process                     #"
2290
		echo "#                        End of ALCASAR install process                     #"
2282
		echo "#                                                                           #"
2291
		echo "#                                                                           #"
2283
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2292
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2284
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2293
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2285
		echo "#                                                                           #"
2294
		echo "#                                                                           #"
2286
		echo "#############################################################################"
2295
		echo "#############################################################################"
2287
		echo
2296
		echo
2288
		echo "- The system will be rebooted in order to operate ALCASAR"
2297
		echo "- The system will be rebooted in order to operate ALCASAR"
2289
		echo
2298
		echo
2290
		echo "- Read the exploitation documentation"
2299
		echo "- Read the exploitation documentation"
2291
		echo
2300
		echo
2292
		echo "- The ALCASAR Control Center (ACC) is at http://$HOSTNAME.$DOMAIN"
2301
		echo "- The ALCASAR Control Center (ACC) is at http://$HOSTNAME.$DOMAIN"
2293
		echo
2302
		echo
2294
		echo "                   Hit 'Enter' to continue"
2303
		echo "                   Hit 'Enter' to continue"
2295
	fi
2304
	fi
2296
	sleep 2
2305
	sleep 2
2297
	if [ "$mode" == "install" ] || [ "$DEBUG_ALCASAR" == "on" ]
2306
	if [ "$mode" == "install" ] || [ "$DEBUG_ALCASAR" == "on" ]
2298
	then
2307
	then
2299
		read
2308
		read
2300
	fi
2309
	fi
2301
	clear
2310
	clear
2302
	reboot
2311
	reboot
2303
} # End of post_install()
2312
} # End of post_install()
2304
 
2313
 
2305
#####################################################################################
2314
#####################################################################################
2306
#                                   Main Install loop                               #
2315
#                                   Main Install loop                               #
2307
#####################################################################################
2316
#####################################################################################
2308
dir_exec=`dirname "$0"`
2317
dir_exec=`dirname "$0"`
2309
if [ $dir_exec != "." ]
2318
if [ $dir_exec != "." ]
2310
then
2319
then
2311
	echo "Lancez ce programme depuis le répertoire de l'archive d'ALCASAR"
2320
	echo "Lancez ce programme depuis le répertoire de l'archive d'ALCASAR"
2312
	echo "Launch this program from the ALCASAR archive directory"
2321
	echo "Launch this program from the ALCASAR archive directory"
2313
	exit 0
2322
	exit 0
2314
fi
2323
fi
2315
if [ $EUID -gt 0 ]
2324
if [ $EUID -gt 0 ]
2316
then
2325
then
2317
	echo "Vous devez être \"root\" pour installer ALCASAR (commande 'su')"
2326
	echo "Vous devez être \"root\" pour installer ALCASAR (commande 'su')"
2318
	echo "You must be \"root\" to install ALCASAR ('su' command)"
2327
	echo "You must be \"root\" to install ALCASAR ('su' command)"
2319
	exit 0
2328
	exit 0
2320
fi
2329
fi
2321
VERSION=`cat $DIR_INSTALL/VERSION`
2330
VERSION=`cat $DIR_INSTALL/VERSION`
2322
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
2331
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
2323
nb_args=$#
2332
nb_args=$#
2324
args=$1
2333
args=$1
2325
if [ $nb_args -eq 0 ]
2334
if [ $nb_args -eq 0 ]
2326
then
2335
then
2327
	nb_args=1
2336
	nb_args=1
2328
	args="-h"
2337
	args="-h"
2329
fi
2338
fi
2330
chmod -R u+x $DIR_SCRIPTS/*
2339
chmod -R u+x $DIR_SCRIPTS/*
2331
case $args in
2340
case $args in
2332
	-\? | -h* | --h*)
2341
	-\? | -h* | --h*)
2333
		echo "$usage"
2342
		echo "$usage"
2334
		exit 0
2343
		exit 0
2335
		;;
2344
		;;
2336
	-i | --install)
2345
	-i | --install)
2337
		for func in system_testing network_testing
2346
		for func in system_testing network_testing
2338
		do
2347
		do
2339
			header_install
2348
			header_install
2340
			$func
2349
			$func
2341
			if [ $DEBUG_ALCASAR == "on" ]
2350
			if [ $DEBUG_ALCASAR == "on" ]
2342
			then
2351
			then
2343
				echo "*** 'debug' : end installing function '$func' ***"
2352
				echo "*** 'debug' : end installing function '$func' ***"
2344
				read
2353
				read
2345
			fi
2354
			fi
2346
		done
2355
		done
2347
# RPMs install
2356
# RPMs install
2348
		$DIR_SCRIPTS/alcasar-rpm.sh
2357
		$DIR_SCRIPTS/alcasar-rpm.sh
2349
		if [ "$?" != "0" ]
2358
		if [ "$?" != "0" ]
2350
		then
2359
		then
2351
			exit 0
2360
			exit 0
2352
		fi
2361
		fi
2353
		if [ -e $CONF_FILE ]
2362
		if [ -e $CONF_FILE ]
2354
		then
2363
		then
2355
# Uninstall or update the running version
2364
# Uninstall or update the running version
2356
			if [ "$mode" == "update" ]
2365
			if [ "$mode" == "update" ]
2357
			then
2366
			then
2358
				$DIR_DEST_BIN/alcasar-uninstall.sh -update
2367
				$DIR_DEST_BIN/alcasar-uninstall.sh -update
2359
			else
2368
			else
2360
				$DIR_DEST_BIN/alcasar-uninstall.sh -full
2369
				$DIR_DEST_BIN/alcasar-uninstall.sh -full
2361
			fi
2370
			fi
2362
		fi
2371
		fi
2363
		if [ $DEBUG_ALCASAR == "on" ]
2372
		if [ $DEBUG_ALCASAR == "on" ]
2364
		then
2373
		then
2365
			echo "*** 'debug' : end of cleaning ***"
2374
			echo "*** 'debug' : end of cleaning ***"
2366
			read
2375
			read
2367
		fi
2376
		fi
2368
# Avoid some RPM automatic updates
2377
# Avoid some RPM automatic updates
2369
		echo "/^kernel/" > /etc/urpmi/skip.list
2378
		echo "/^kernel/" > /etc/urpmi/skip.list
2370
		echo "/^wkhtmltopdf/" >> /etc/urpmi/skip.list
2379
		echo "/^wkhtmltopdf/" >> /etc/urpmi/skip.list
2371
		echo "/^freeradius/" >> /etc/urpmi/skip.list
2380
		echo "/^freeradius/" >> /etc/urpmi/skip.list
2372
		if [ `egrep '^exclude=' /etc/dnf/dnf.conf |wc -l` -eq "1" ]; then
2381
		if [ `grep -E '^exclude=' /etc/dnf/dnf.conf |wc -l` -eq "1" ]; then
2373
			$SED "s?^exclude=.*?exclude=kernel\* wkhtmltopdf freeradius?g" /etc/dnf/dnf.conf
2382
			$SED "s?^exclude=.*?exclude=kernel\* wkhtmltopdf freeradius?g" /etc/dnf/dnf.conf
2374
		else
2383
		else
2375
			echo "exclude=kernel* wkhtmltopdf freeradius" >> /etc/dnf/dnf.conf
2384
			echo "exclude=kernel* wkhtmltopdf freeradius" >> /etc/dnf/dnf.conf
2376
		fi
2385
		fi
2377
# Test if conf file
2386
# Test if conf file
2378
		if [ -e /var/tmp/alcasar-conf.tar.gz ]
2387
		if [ -e /var/tmp/alcasar-conf.tar.gz ]
2379
		then
2388
		then
2380
# Extract some info from the previous configuration file
2389
# Extract some info from the previous configuration file
2381
			cd /var/tmp
2390
			cd /var/tmp
2382
			tar -xf /var/tmp/alcasar-conf.tar.gz conf/etc/alcasar.conf
2391
			tar -xf /var/tmp/alcasar-conf.tar.gz conf/etc/alcasar.conf
2383
			if [ "$mode" == "install" ] # don't display this if updating a running version
2392
			if [ "$mode" == "install" ] # don't display this if updating a running version
2384
			then
2393
			then
2385
				header_install
2394
				header_install
2386
				ORGANISME=`grep ^ORGANISM= conf/etc/alcasar.conf|cut -d"=" -f2`
2395
				ORGANISME=`grep ^ORGANISM= conf/etc/alcasar.conf|cut -d"=" -f2`
2387
				PREVIOUS_VERSION=`grep ^VERSION= conf/etc/alcasar.conf|cut -d"=" -f2`
2396
				PREVIOUS_VERSION=`grep ^VERSION= conf/etc/alcasar.conf|cut -d"=" -f2`
2388
				MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
2397
				MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
2389
				MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2`
2398
				MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2`
2390
				UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3|cut -c1`
2399
				UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3|cut -c1`
2391
				if [ $Lang == "fr" ]
2400
				if [ $Lang == "fr" ]
2392
					then echo "Le fichier de configuration d'une version $MAJ_PREVIOUS_VERSION.$MIN_PREVIOUS_VERSION.$UPD_PREVIOUS_VERSION a été trouvé";
2401
					then echo "Le fichier de configuration d'une version $MAJ_PREVIOUS_VERSION.$MIN_PREVIOUS_VERSION.$UPD_PREVIOUS_VERSION a été trouvé";
2393
					else echo "The configuration file of a version $MAJ_PREVIOUS_VERSION.$MIN_PREVIOUS_VERSION.$UPD_PREVIOUS_VERSION has been found";
2402
					else echo "The configuration file of a version $MAJ_PREVIOUS_VERSION.$MIN_PREVIOUS_VERSION.$UPD_PREVIOUS_VERSION has been found";
2394
				fi
2403
				fi
2395
				response=0
2404
				response=0
2396
				PTN='^[oOnNyY]?$'
2405
				PTN='^[oOnNyY]?$'
2397
				until [[ "$response" =~ $PTN ]]
2406
				until [[ "$response" =~ $PTN ]]
2398
				do
2407
				do
2399
					if [ $Lang == "fr" ]
2408
					if [ $Lang == "fr" ]
2400
						then echo -n "Voulez-vous l'utiliser (O/n)? ";
2409
						then echo -n "Voulez-vous l'utiliser (O/n)? ";
2401
						else echo -n "Do you want to use it (Y/n)?";
2410
						else echo -n "Do you want to use it (Y/n)?";
2402
					fi
2411
					fi
2403
					read response
2412
					read response
2404
					if [ "$response" = "n" ] || [ "$response" = "N" ]
2413
					if [ "$response" = "n" ] || [ "$response" = "N" ]
2405
					then
2414
					then
2406
						rm -f /var/tmp/alcasar-conf*
2415
						rm -f /var/tmp/alcasar-conf*
2407
						rm -rf /var/tmp/conf
2416
						rm -rf /var/tmp/conf
2408
					fi
2417
					fi
2409
				done
2418
				done
2410
			fi
2419
			fi
2411
			cd $DIR_INSTALL
2420
			cd $DIR_INSTALL
2412
		fi
2421
		fi
2413
# Test if update
2422
# Test if update
2414
		if [ -e /var/tmp/alcasar-conf.tar.gz ]
2423
		if [ -e /var/tmp/alcasar-conf.tar.gz ]
2415
		then
2424
		then
2416
			if [ $Lang == "fr" ]
2425
			if [ $Lang == "fr" ]
2417
				then echo "#### Installation avec mise à jour ####";
2426
				then echo "#### Installation avec mise à jour ####";
2418
				else echo "#### Installation with update     ####";
2427
				else echo "#### Installation with update     ####";
2419
			fi
2428
			fi
2420
			mode="update"
2429
			mode="update"
2421
		fi
2430
		fi
2422
		for func in init network CA ACC time_server init_db freeradius chilli e2guardian ulogd nfsen vnstat unbound dhcpd BL cron fail2ban gammu_smsd msec letsencrypt mail_service post_install
2431
		for func in init network CA ACC time_server init_db freeradius chilli e2guardian ulogd nfsen vnstat unbound dhcpd BL cron fail2ban gammu_smsd msec letsencrypt mail_service post_install
2423
		do
2432
		do
2424
			$func
2433
			$func
2425
			if [ $DEBUG_ALCASAR == "on" ]
2434
			if [ $DEBUG_ALCASAR == "on" ]
2426
			then
2435
			then
2427
				echo "*** 'debug' : end installing function '$func' ***"
2436
				echo "*** 'debug' : end installing function '$func' ***"
2428
				read
2437
				read
2429
			fi
2438
			fi
2430
		done
2439
		done
2431
		;;
2440
		;;
2432
	-u | --uninstall)
2441
	-u | --uninstall)
2433
		if [ ! -e $DIR_DEST_BIN/alcasar-uninstall.sh ]
2442
		if [ ! -e $DIR_DEST_BIN/alcasar-uninstall.sh ]
2434
		then
2443
		then
2435
			if [ $Lang == "fr" ]
2444
			if [ $Lang == "fr" ]
2436
				then echo "ALCASAR n'est pas installé!";
2445
				then echo "ALCASAR n'est pas installé!";
2437
				else echo "ALCASAR isn't installed!";
2446
				else echo "ALCASAR isn't installed!";
2438
			fi
2447
			fi
2439
			exit 0
2448
			exit 0
2440
		fi
2449
		fi
2441
		response=0
2450
		response=0
2442
		PTN='^[oOyYnN]?$'
2451
		PTN='^[oOyYnN]?$'
2443
		until [[ "$response" =~ $PTN ]]
2452
		until [[ "$response" =~ $PTN ]]
2444
		do
2453
		do
2445
			if [ $Lang == "fr" ]
2454
			if [ $Lang == "fr" ]
2446
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (O/n)? ";
2455
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (O/n)? ";
2447
				else echo -n "Do you want to create the running version configuration file (Y/n)? ";
2456
				else echo -n "Do you want to create the running version configuration file (Y/n)? ";
2448
			fi
2457
			fi
2449
			read response
2458
			read response
2450
		done
2459
		done
2451
		if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
2460
		if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
2452
		then
2461
		then
2453
			$DIR_SCRIPTS/alcasar-conf.sh --create
2462
			$DIR_SCRIPTS/alcasar-conf.sh --create
2454
		else
2463
		else
2455
			rm -f /var/tmp/alcasar-conf*
2464
			rm -f /var/tmp/alcasar-conf*
2456
		fi
2465
		fi
2457
# Uninstall the running version
2466
# Uninstall the running version
2458
		$DIR_DEST_BIN/alcasar-uninstall.sh -full
2467
		$DIR_DEST_BIN/alcasar-uninstall.sh -full
2459
		;;
2468
		;;
2460
	*)
2469
	*)
2461
		echo "Argument inconnu :$1";
2470
		echo "Argument inconnu :$1";
2462
		echo "Unknown argument :$1";
2471
		echo "Unknown argument :$1";
2463
		echo "$usage"
2472
		echo "$usage"
2464
		exit 1
2473
		exit 1
2465
		;;
2474
		;;
2466
esac
2475
esac
2467
# end of script
2476
# end of script
2468
 
2477
 
2469
 
2478
 
2470

Generated by GNU Enscript 1.6.6.
2479

Generated by GNU Enscript 1.6.6.
2471
 
2480
 
2472
 
2481
 
2473
 
2482