Subversion Repositories ALCASAR

Rev

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

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

Generated by GNU Enscript 1.6.6.
2457

Generated by GNU Enscript 1.6.6.
2480
 
2458
 
2481
 
2459
 
2482
 
2460