Subversion Repositories ALCASAR

Rev

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

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