| Line 1... |
Line 1... |
| 1 |
#!/bin/bash
|
1 |
#!/bin/bash
|
| 2 |
# $Id: alcasar.sh 2681 2019-01-02 14:58:43Z tom.houdayer $
|
2 |
# $Id: alcasar.sh 2688 2019-01-18 23:15:49Z lucas.echard $
|
| 3 |
|
3 |
|
| 4 |
# alcasar.sh
|
4 |
# alcasar.sh
|
| 5 |
# ALCASAR is a Free and open source NAC created by Franck BOUIJOUX (3abtux), Pascal LEVANT and Richard REY (Rexy)
|
5 |
# ALCASAR is a Free and open source NAC created by Franck BOUIJOUX (3abtux), Pascal LEVANT and Richard REY (Rexy)
|
| 6 |
# This script is distributed under the Gnu General Public License (GPL)
|
6 |
# This script is distributed under the Gnu General Public License (GPL)
|
| 7 |
# team@alcasar.net
|
7 |
# team@alcasar.net
|
| Line 16... |
Line 16... |
| 16 |
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
|
16 |
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
|
| 17 |
# ALCASAR est architecturé autour d'une distribution Linux Mageia minimaliste et les logiciels libres suivants :
|
17 |
# ALCASAR est architecturé autour d'une distribution Linux Mageia minimaliste et les logiciels libres suivants :
|
| 18 |
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
|
18 |
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
|
| 19 |
# ALCASAR is based on a stripped Mageia (LSB) with the following open source softwares :
|
19 |
# ALCASAR is based on a stripped Mageia (LSB) with the following open source softwares :
|
| 20 |
|
20 |
|
| 21 |
# Coovachilli, freeradius, mariaDB, lighttpd, netfilter, e2guardian, ntpd, openssl, dnsmasq, gammu, havp, libclamav, Ulog, fail2ban, tinyproxy, NFsen and NFdump
|
21 |
# Coovachilli, freeradius, mariaDB, lighttpd, netfilter, e2guardian, ntpd, openssl, dnsmasq, unbound, gammu, havp, libclamav, Ulog, fail2ban, tinyproxy, NFsen and NFdump
|
| 22 |
|
22 |
|
| 23 |
# Options :
|
23 |
# Options :
|
| 24 |
# -i or --install
|
24 |
# -i or --install
|
| 25 |
# -u or --uninstall
|
25 |
# -u or --uninstall
|
| 26 |
|
26 |
|
| Line 37... |
Line 37... |
| 37 |
# e2guardian : E2Guardian filtering HTTP proxy configuration
|
37 |
# e2guardian : E2Guardian filtering HTTP proxy configuration
|
| 38 |
# antivirus : HAVP + libclamav configuration
|
38 |
# antivirus : HAVP + libclamav configuration
|
| 39 |
# tinyproxy : little proxy for user filtered with "WL + antivirus" and "antivirus"
|
39 |
# tinyproxy : little proxy for user filtered with "WL + antivirus" and "antivirus"
|
| 40 |
# ulogd : log system in userland (match NFLOG target of iptables)
|
40 |
# ulogd : log system in userland (match NFLOG target of iptables)
|
| 41 |
# nfsen : Configuration of Nfsen Netflow grapher
|
41 |
# nfsen : Configuration of Nfsen Netflow grapher
|
| 42 |
# dnsmasq : Name server configuration
|
42 |
# unbound : Name server configuration
|
| - |
|
43 |
# dnsmasq : Name server configuration (for whitelist ipset support)
|
| 43 |
# vnstat : little network stat daemon
|
44 |
# vnstat : little network stat daemon
|
| 44 |
# BL : Adaptation of Toulouse University BlackList : split into 3 BL (for Dnsmasq, for e2guardian and for Netfilter)
|
45 |
# BL : Adaptation of Toulouse University BlackList : split into 3 BL (for unbound, for e2guardian 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 |
# msec : Mandriva security package configuration
|
49 |
# msec : Mandriva security package configuration
|
| 49 |
# letsencrypt : Let's Encrypt client
|
50 |
# letsencrypt : Let's Encrypt client
|
| Line 63... |
Line 64... |
| 63 |
DIR_WEB="/var/www/html" # directory of Lighttpd
|
64 |
DIR_WEB="/var/www/html" # directory of Lighttpd
|
| 64 |
DIR_DG="/etc/e2guardian" # directory of E2Guardian
|
65 |
DIR_DG="/etc/e2guardian" # directory of E2Guardian
|
| 65 |
DIR_ACC="$DIR_WEB/acc" # directory of the 'ALCASAR Control Center'
|
66 |
DIR_ACC="$DIR_WEB/acc" # directory of the 'ALCASAR Control Center'
|
| 66 |
DIR_DEST_BIN="/usr/local/bin" # directory of ALCASAR scripts
|
67 |
DIR_DEST_BIN="/usr/local/bin" # directory of ALCASAR scripts
|
| 67 |
DIR_DEST_ETC="/usr/local/etc" # directory of ALCASAR conf files
|
68 |
DIR_DEST_ETC="/usr/local/etc" # directory of ALCASAR conf files
|
| 68 |
DIR_DEST_SHARE="/usr/local/share" # directory of share files used by ALCASAR (dnsmasq for instance)
|
69 |
DIR_DEST_SHARE="/usr/local/share" # directory of share files used by ALCASAR (unbound for instance)
|
| 69 |
CONF_FILE="$DIR_DEST_ETC/alcasar.conf" # central ALCASAR conf file
|
70 |
CONF_FILE="$DIR_DEST_ETC/alcasar.conf" # central ALCASAR conf file
|
| 70 |
PASSWD_FILE="/root/ALCASAR-passwords.txt" # text file with the passwords and shared secrets
|
71 |
PASSWD_FILE="/root/ALCASAR-passwords.txt" # text file with the passwords and shared secrets
|
| 71 |
# ******* DBMS parameters - paramètres SGBD ********
|
72 |
# ******* DBMS parameters - paramètres SGBD ********
|
| 72 |
DB_RADIUS="radius" # database name used by FreeRadius server
|
73 |
DB_RADIUS="radius" # database name used by FreeRadius server
|
| 73 |
DB_USER="radius" # user name allows to request the users database
|
74 |
DB_USER="radius" # user name allows to request the users database
|
| Line 130... |
Line 131... |
| 130 |
fic=`cat /etc/product.id`
|
131 |
fic=`cat /etc/product.id`
|
| 131 |
unknown_os=0
|
132 |
unknown_os=0
|
| 132 |
old="$IFS"
|
133 |
old="$IFS"
|
| 133 |
IFS=","
|
134 |
IFS=","
|
| 134 |
set $fic
|
135 |
set $fic
|
| 135 |
for i in $*
|
136 |
for i in "$@"
|
| 136 |
do
|
137 |
do
|
| 137 |
if [ "`echo $i|grep distribution|cut -d'=' -f1`" == "distribution" ]
|
138 |
if [ "`echo $i|grep distribution|cut -d'=' -f1`" == "distribution" ]
|
| 138 |
then
|
139 |
then
|
| 139 |
DISTRIBUTION=`echo $i|cut -d"=" -f2`
|
140 |
DISTRIBUTION=`echo $i|cut -d"=" -f2`
|
| 140 |
unknown_os=`expr $unknown_os + 1`
|
141 |
unknown_os=`expr $unknown_os + 1`
|
| Line 158... |
Line 159... |
| 158 |
fi
|
159 |
fi
|
| 159 |
exit 1
|
160 |
exit 1
|
| 160 |
fi
|
161 |
fi
|
| 161 |
IFS="$old"
|
162 |
IFS="$old"
|
| 162 |
if [[ ( $unknown_os != 3 ) || ("$DISTRIBUTION" != "Mageia" ) || ( "$CURRENT_VERSION" != "6" ) ]]
|
163 |
if [[ ( $unknown_os != 3 ) || ("$DISTRIBUTION" != "Mageia" ) || ( "$CURRENT_VERSION" != "6" ) ]]
|
| 163 |
then
|
164 |
then
|
| 164 |
if [ -e /var/tmp/alcasar-conf.tar.gz ] # update
|
165 |
if [ -e /var/tmp/alcasar-conf.tar.gz ] # update
|
| 165 |
then
|
166 |
then
|
| 166 |
echo
|
167 |
echo
|
| 167 |
if [ $Lang == "fr" ]
|
168 |
if [ $Lang == "fr" ]
|
| 168 |
then
|
169 |
then
|
| Line 185... |
Line 186... |
| 185 |
echo
|
186 |
echo
|
| 186 |
if [ $Lang == "fr" ]
|
187 |
if [ $Lang == "fr" ]
|
| 187 |
then echo "Le système d'exploitation doit être remplacé (Mageia6-64bits)"
|
188 |
then echo "Le système d'exploitation doit être remplacé (Mageia6-64bits)"
|
| 188 |
else echo "The OS must be replaced (Mageia6-64bits)"
|
189 |
else echo "The OS must be replaced (Mageia6-64bits)"
|
| 189 |
fi
|
190 |
fi
|
| 190 |
exit 0
|
191 |
exit 1
|
| 191 |
fi
|
192 |
fi
|
| 192 |
|
193 |
|
| 193 |
# Test if ALCASAR is already installed
|
194 |
# Test if ALCASAR is already installed
|
| 194 |
if [ -e $CONF_FILE ]
|
195 |
if [ -e $CONF_FILE ]
|
| 195 |
then
|
196 |
then
|
| Line 213... |
Line 214... |
| 213 |
rm -f /var/tmp/alcasar-conf*
|
214 |
rm -f /var/tmp/alcasar-conf*
|
| 214 |
else
|
215 |
else
|
| 215 |
# Retrieve former NICname
|
216 |
# Retrieve former NICname
|
| 216 |
EXTIF_saved=`grep ^EXTIF= $CONF_FILE | cut -d'=' -f2-` # EXTernal InterFace
|
217 |
EXTIF_saved=`grep ^EXTIF= $CONF_FILE | cut -d'=' -f2-` # EXTernal InterFace
|
| 217 |
INTIF_saved=`grep ^INTIF= $CONF_FILE | cut -d'=' -f2-` # INTernal InterFace
|
218 |
INTIF_saved=`grep ^INTIF= $CONF_FILE | cut -d'=' -f2-` # INTernal InterFace
|
| 218 |
[ $(/usr/sbin/ip link | grep -c " $EXTIF_saved:") -ne 0 ] && EXTIF=$EXTIF_saved || echo "Warning: Network card \"$EXTIF_saved\" is not connected, so \"$EXTIF\" will be used for external network."
|
219 |
[ "$(/usr/sbin/ip link | grep -c " $EXTIF_saved:")" -ne 0 ] && EXTIF=$EXTIF_saved || echo "Warning: Network card \"$EXTIF_saved\" is not connected, so \"$EXTIF\" will be used for external network."
|
| 219 |
[ $(/usr/sbin/ip link | grep -c " $INTIF_saved:") -ne 0 ] && INTIF=$INTIF_saved || echo "Warning: Network card \"$INTIF_saved\" is not connected, so \"$INTIF\" will be used for internal network."
|
220 |
[ "$(/usr/sbin/ip link | grep -c " $INTIF_saved:")" -ne 0 ] && INTIF=$INTIF_saved || echo "Warning: Network card \"$INTIF_saved\" is not connected, so \"$INTIF\" will be used for internal network."
|
| 220 |
# Create the current conf file
|
221 |
# Create the current conf file
|
| 221 |
$DIR_SCRIPTS/alcasar-conf.sh --create
|
222 |
$DIR_SCRIPTS/alcasar-conf.sh --create
|
| 222 |
mode="update"
|
223 |
mode="update"
|
| 223 |
fi
|
224 |
fi
|
| 224 |
fi
|
225 |
fi
|
| 225 |
# Test free space on /var
|
226 |
# Test free space on /var
|
| 226 |
if [ ! -d /var/log/netflow/porttracker ]
|
227 |
if [ ! -d /var/log/netflow/porttracker ]
|
| 227 |
then
|
228 |
then
|
| 228 |
free_space=`df -BG --output=avail /var|tail -1|tr -d [:space:]G`
|
229 |
free_space=`df -BG --output=avail /var|tail -1|tr -d '[:space:]G'`
|
| 229 |
if [ $free_space -lt 10 ]
|
230 |
if [ $free_space -lt 10 ]
|
| 230 |
then
|
231 |
then
|
| 231 |
if [ $Lang == "fr" ]
|
232 |
if [ $Lang == "fr" ]
|
| 232 |
then echo "place disponible sur /var insufisante ($free_space Go au lieu de 10 Go au minimum)"
|
233 |
then echo "place disponible sur /var insufisante ($free_space Go au lieu de 10 Go au minimum)"
|
| 233 |
else echo "not enough free space on /var ($free_space GB instead of at least 10 GB)"
|
234 |
else echo "not enough free space on /var ($free_space GB instead of at least 10 GB)"
|
| Line 281... |
Line 282... |
| 281 |
read response
|
282 |
read response
|
| 282 |
|
283 |
|
| 283 |
[ -z "$response" ] && response="$interfacePreferred"
|
284 |
[ -z "$response" ] && response="$interfacePreferred"
|
| 284 |
|
285 |
|
| 285 |
# Check if interface exist
|
286 |
# Check if interface exist
|
| 286 |
if [ $(echo "$interfacesList" | grep -c "^$response\$") -eq 1 ]; then
|
287 |
if [ "$(echo "$interfacesList" | grep -c "^$response\$")" -eq 1 ]; then
|
| 287 |
INTIF="$response"
|
288 |
INTIF="$response"
|
| 288 |
break
|
289 |
break
|
| 289 |
else
|
290 |
else
|
| 290 |
if [ "$Lang" == 'fr' ]
|
291 |
if [ "$Lang" == 'fr' ]
|
| 291 |
then echo "Interface \"$response\" introuvable"
|
292 |
then echo "Interface \"$response\" introuvable"
|
| Line 303... |
Line 304... |
| 303 |
if [ $Lang == "fr" ]
|
304 |
if [ $Lang == "fr" ]
|
| 304 |
then echo -n "Tests des paramètres réseau : "
|
305 |
then echo -n "Tests des paramètres réseau : "
|
| 305 |
else echo -n "Network parameters tests: "
|
306 |
else echo -n "Network parameters tests: "
|
| 306 |
fi
|
307 |
fi
|
| 307 |
# Remove conf file if NIC is not plugged (ie : GSM/WIFI/Bt dongles)
|
308 |
# Remove conf file if NIC is not plugged (ie : GSM/WIFI/Bt dongles)
|
| 308 |
cd /etc/sysconfig/network-scripts/
|
309 |
cd /etc/sysconfig/network-scripts/ || { echo "Unable to find /etc/sysconfig/network-scripts directory"; exit 1; }
|
| 309 |
IF_INTERFACES=`ls ifcfg-*|cut -d"-" -f2|grep -v "^lo"|cut -d"*" -f1`
|
310 |
IF_INTERFACES=`ls ifcfg-*|cut -d"-" -f2|grep -v "^lo"|cut -d"*" -f1`
|
| 310 |
for i in $IF_INTERFACES
|
311 |
for i in $IF_INTERFACES
|
| 311 |
do
|
312 |
do
|
| 312 |
if [ $(/usr/sbin/ip link | grep -c " $i:") -eq 0 ]; then
|
313 |
if [ "$(/usr/sbin/ip link | grep -c " $i:")" -eq 0 ]; then
|
| 313 |
rm -f ifcfg-$i
|
314 |
rm -f ifcfg-$i
|
| 314 |
|
315 |
|
| 315 |
if [ $Lang == "fr" ]
|
316 |
if [ $Lang == "fr" ]
|
| 316 |
then echo "Suppression : ifcfg-$i"
|
317 |
then echo "Suppression : ifcfg-$i"
|
| 317 |
else echo "Deleting: ifcfg-$i"
|
318 |
else echo "Deleting: ifcfg-$i"
|
| 318 |
fi
|
319 |
fi
|
| 319 |
fi
|
320 |
fi
|
| 320 |
done
|
321 |
done
|
| 321 |
cd $DIR_INSTALL
|
322 |
cd $DIR_INSTALL || { echo "Unable to find $DIR_INSTALL directory"; exit 1; }
|
| 322 |
echo -n "."
|
323 |
echo -n "."
|
| 323 |
# Test Ethernet NIC links state
|
324 |
# Test Ethernet NIC links state
|
| 324 |
interfacesDown=$(/usr/sbin/ip -br link | grep "^\($EXTIF\|$INTIF\) " | grep 'NO-CARRIER' | cut -d' ' -f1)
|
325 |
interfacesDown=$(/usr/sbin/ip -br link | grep "^\($EXTIF\|$INTIF\) " | grep 'NO-CARRIER' | cut -d' ' -f1)
|
| 325 |
if [ ! -z "$interfacesDown" ]; then
|
326 |
if [ ! -z "$interfacesDown" ]; then
|
| 326 |
for i in $interfacesDown; do
|
327 |
for i in $interfacesDown; do
|
| Line 340... |
Line 341... |
| 340 |
echo -n "."
|
341 |
echo -n "."
|
| 341 |
# Test EXTIF config files
|
342 |
# Test EXTIF config files
|
| 342 |
PUBLIC_IP_MASK=`/usr/sbin/ip addr show $EXTIF | grep '^\s*inet\s' | awk '{ print $2 }'`
|
343 |
PUBLIC_IP_MASK=`/usr/sbin/ip addr show $EXTIF | grep '^\s*inet\s' | awk '{ print $2 }'`
|
| 343 |
PUBLIC_IP=`echo $PUBLIC_IP_MASK | cut -d'/' -f1`
|
344 |
PUBLIC_IP=`echo $PUBLIC_IP_MASK | cut -d'/' -f1`
|
| 344 |
PUBLIC_GATEWAY=`/usr/sbin/ip route list | awk -v EXTIF="$EXTIF" '(/^default / && $5 == EXTIF) {print $3}'`
|
345 |
PUBLIC_GATEWAY=`/usr/sbin/ip route list | awk -v EXTIF="$EXTIF" '(/^default / && $5 == EXTIF) {print $3}'`
|
| 345 |
if [ `echo $PUBLIC_IP|wc -c` -lt 7 ] || [ `echo $PUBLIC_GATEWAY|wc -c` -lt 7 ]
|
346 |
if [ "$(echo $PUBLIC_IP|wc -c)" -lt 7 ] || [ "$(echo $PUBLIC_GATEWAY|wc -c)" -lt 7 ]
|
| 346 |
then
|
347 |
then
|
| 347 |
if [ $Lang == "fr" ]
|
348 |
if [ $Lang == "fr" ]
|
| 348 |
then
|
349 |
then
|
| 349 |
echo -e "\nÉchec"
|
350 |
echo -e "\nÉchec"
|
| 350 |
echo "La carte réseau connectée à Internet ($EXTIF) n'est pas correctement configurée."
|
351 |
echo "La carte réseau connectée à Internet ($EXTIF) n'est pas correctement configurée."
|
| Line 365... |
Line 366... |
| 365 |
echo "ONBOOT=yes"
|
366 |
echo "ONBOOT=yes"
|
| 366 |
exit 1
|
367 |
exit 1
|
| 367 |
fi
|
368 |
fi
|
| 368 |
echo -n "."
|
369 |
echo -n "."
|
| 369 |
# Test if default GW is set on EXTIF (router or ISP provider equipment)
|
370 |
# Test if default GW is set on EXTIF (router or ISP provider equipment)
|
| 370 |
if [ `/usr/sbin/ip route list|grep " $EXTIF "|grep -c '^default '` -ne 1 ] ; then
|
371 |
if [ "$(/usr/sbin/ip route list|grep " $EXTIF "|grep -c '^default ')" -ne 1 ] ; then
|
| 371 |
if [ $Lang == "fr" ]
|
372 |
if [ $Lang == "fr" ]
|
| 372 |
then
|
373 |
then
|
| 373 |
echo -e "\nÉchec"
|
374 |
echo -e "\nÉchec"
|
| 374 |
echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
|
375 |
echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
|
| 375 |
echo "Réglez ce problème puis relancez ce script."
|
376 |
echo "Réglez ce problème puis relancez ce script."
|
| Line 381... |
Line 382... |
| 381 |
exit 1
|
382 |
exit 1
|
| 382 |
fi
|
383 |
fi
|
| 383 |
echo -n "."
|
384 |
echo -n "."
|
| 384 |
# Test if default GW is alive
|
385 |
# Test if default GW is alive
|
| 385 |
arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $PUBLIC_GATEWAY|grep response|cut -d" " -f2`
|
386 |
arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $PUBLIC_GATEWAY|grep response|cut -d" " -f2`
|
| 386 |
if [ $(expr $arp_reply) -eq 0 ]
|
387 |
if [ "$(expr $arp_reply)" -eq 0 ]
|
| 387 |
then
|
388 |
then
|
| 388 |
if [ $Lang == "fr" ]
|
389 |
if [ $Lang == "fr" ]
|
| 389 |
then
|
390 |
then
|
| 390 |
echo -e "\nÉchec"
|
391 |
echo -e "\nÉchec"
|
| 391 |
echo "Le routeur de sortie ou la Box Internet ($PUBLIC_GATEWAY) ne répond pas."
|
392 |
echo "Le routeur de sortie ou la Box Internet ($PUBLIC_GATEWAY) ne répond pas."
|
| Line 436... |
Line 437... |
| 436 |
then echo -n "Entrez le nom de votre organisme : "
|
437 |
then echo -n "Entrez le nom de votre organisme : "
|
| 437 |
else echo -n "Enter the name of your organism : "
|
438 |
else echo -n "Enter the name of your organism : "
|
| 438 |
fi
|
439 |
fi
|
| 439 |
read ORGANISME
|
440 |
read ORGANISME
|
| 440 |
if [ "$ORGANISME" == "" ]
|
441 |
if [ "$ORGANISME" == "" ]
|
| 441 |
then
|
442 |
then
|
| 442 |
ORGANISME=!
|
443 |
ORGANISME=!
|
| 443 |
fi
|
444 |
fi
|
| 444 |
done
|
445 |
done
|
| 445 |
fi
|
446 |
fi
|
| 446 |
# On crée aléatoirement les mots de passe et les secrets partagés
|
447 |
# On crée aléatoirement les mots de passe et les secrets partagés
|
| 447 |
# We create random passwords and shared secrets
|
448 |
# We create random passwords and shared secrets
|
| 448 |
rm -f $PASSWD_FILE
|
449 |
rm -f $PASSWD_FILE
|
| 449 |
echo "##### ALCASAR ($ORGANISME) security passwords #####" > $PASSWD_FILE
|
450 |
echo "##### ALCASAR ($ORGANISME) security passwords #####" > $PASSWD_FILE
|
| 450 |
grub2pwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`
|
451 |
grub2pwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c8`
|
| 451 |
pbkdf2=`( echo $grub2pwd ; echo $grub2pwd ) | \
|
452 |
pbkdf2=`( echo $grub2pwd ; echo $grub2pwd ) | \
|
| 452 |
LC_ALL=C /usr/bin/grub2-mkpasswd-pbkdf2 | \
|
453 |
LC_ALL=C /usr/bin/grub2-mkpasswd-pbkdf2 | \
|
| 453 |
grep -v '[eE]nter password:' | \
|
454 |
grep -v '[eE]nter password:' | \
|
| 454 |
sed -e "s/PBKDF2 hash of your password is //"`
|
455 |
sed -e "s/PBKDF2 hash of your password is //"`
|
| 455 |
echo "GRUB2_PASSWORD=$pbkdf2" > /boot/grub2/user.cfg
|
456 |
echo "GRUB2_PASSWORD=$pbkdf2" > /boot/grub2/user.cfg
|
| Line 457... |
Line 458... |
| 457 |
cp -f $DIR_CONF/grub-10_linux /etc/grub.d/10_linux # Request password only on menu editing attempts (not when selecting an entry)
|
458 |
cp -f $DIR_CONF/grub-10_linux /etc/grub.d/10_linux # Request password only on menu editing attempts (not when selecting an entry)
|
| 458 |
chmod 0600 /boot/grub2/user.cfg
|
459 |
chmod 0600 /boot/grub2/user.cfg
|
| 459 |
echo "# Login name and password to protect GRUB2 boot menu (!!!qwerty keyboard) : " > $PASSWD_FILE
|
460 |
echo "# Login name and password to protect GRUB2 boot menu (!!!qwerty keyboard) : " > $PASSWD_FILE
|
| 460 |
echo "GRUB2_user=root" >> $PASSWD_FILE
|
461 |
echo "GRUB2_user=root" >> $PASSWD_FILE
|
| 461 |
echo "GRUB2_password=$grub2pwd" >> $PASSWD_FILE
|
462 |
echo "GRUB2_password=$grub2pwd" >> $PASSWD_FILE
|
| 462 |
mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c16`
|
463 |
mysqlpwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
|
| 463 |
echo "# Login name and Password of MariaDB administrator:" >> $PASSWD_FILE
|
464 |
echo "# Login name and Password of MariaDB administrator:" >> $PASSWD_FILE
|
| 464 |
echo "db_root=$mysqlpwd" >> $PASSWD_FILE
|
465 |
echo "db_root=$mysqlpwd" >> $PASSWD_FILE
|
| 465 |
radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c16`
|
466 |
radiuspwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
|
| 466 |
echo "# Login name and password of MariaDB user:" >> $PASSWD_FILE
|
467 |
echo "# Login name and password of MariaDB user:" >> $PASSWD_FILE
|
| 467 |
echo "db_user=$DB_USER" >> $PASSWD_FILE
|
468 |
echo "db_user=$DB_USER" >> $PASSWD_FILE
|
| 468 |
echo "db_password=$radiuspwd" >> $PASSWD_FILE
|
469 |
echo "db_password=$radiuspwd" >> $PASSWD_FILE
|
| 469 |
secretuam=`cat /dev/urandom | tr -dc [:alnum:] | head -c16`
|
470 |
secretuam=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
|
| 470 |
echo "# Shared secret between the script 'intercept.php' and coova-chilli:" >> $PASSWD_FILE
|
471 |
echo "# Shared secret between the script 'intercept.php' and coova-chilli:" >> $PASSWD_FILE
|
| 471 |
echo "secret_uam=$secretuam" >> $PASSWD_FILE
|
472 |
echo "secret_uam=$secretuam" >> $PASSWD_FILE
|
| 472 |
secretradius=`cat /dev/urandom | tr -dc [:alnum:] | head -c16`
|
473 |
secretradius=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
|
| 473 |
echo "# Shared secret between coova-chilli and FreeRadius:" >> $PASSWD_FILE
|
474 |
echo "# Shared secret between coova-chilli and FreeRadius:" >> $PASSWD_FILE
|
| 474 |
echo "secret_radius=$secretradius" >> $PASSWD_FILE
|
475 |
echo "secret_radius=$secretradius" >> $PASSWD_FILE
|
| 475 |
chmod 640 $PASSWD_FILE
|
476 |
chmod 640 $PASSWD_FILE
|
| 476 |
# copy scripts in in /usr/local/bin
|
477 |
# copy scripts in in /usr/local/bin
|
| 477 |
cp -fr $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown -R root:root $DIR_DEST_BIN/alcasar* ; chmod -R 740 $DIR_DEST_BIN/alcasar*
|
478 |
cp -fr $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown -R root:root $DIR_DEST_BIN/alcasar* ; chmod -R 740 $DIR_DEST_BIN/alcasar*
|
| Line 533... |
Line 534... |
| 533 |
else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
|
534 |
else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
|
| 534 |
fi
|
535 |
fi
|
| 535 |
read PRIVATE_IP_MASK
|
536 |
read PRIVATE_IP_MASK
|
| 536 |
done
|
537 |
done
|
| 537 |
else
|
538 |
else
|
| 538 |
PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
|
539 |
PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
|
| 539 |
fi
|
540 |
fi
|
| 540 |
else
|
541 |
else
|
| 541 |
PRIVATE_IP_MASK=`grep ^PRIVATE_IP= conf/etc/alcasar.conf|cut -d"=" -f2`
|
542 |
PRIVATE_IP_MASK=`grep ^PRIVATE_IP= conf/etc/alcasar.conf|cut -d"=" -f2`
|
| 542 |
rm -rf conf/etc/alcasar.conf
|
543 |
rm -rf conf/etc/alcasar.conf
|
| 543 |
fi
|
544 |
fi
|
| Line 547... |
Line 548... |
| 547 |
private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f4` # last octet of LAN address
|
548 |
private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f4` # last octet of LAN address
|
| 548 |
PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2` # private network mask (ie.: 255.255.255.0)
|
549 |
PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2` # private network mask (ie.: 255.255.255.0)
|
| 549 |
PRIVATE_PREFIX=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2` # network prefix (ie. 24)
|
550 |
PRIVATE_PREFIX=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2` # network prefix (ie. 24)
|
| 550 |
PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1` # ALCASAR private ip address (consultation LAN side)
|
551 |
PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1` # ALCASAR private ip address (consultation LAN side)
|
| 551 |
if [ $PRIVATE_IP == $PRIVATE_NETWORK ] # when entering network address instead of ip address
|
552 |
if [ $PRIVATE_IP == $PRIVATE_NETWORK ] # when entering network address instead of ip address
|
| 552 |
then
|
553 |
then
|
| 553 |
PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`
|
554 |
PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`
|
| 554 |
PRIVATE_IP_MASK=`echo $PRIVATE_IP/$PRIVATE_PREFIX`
|
555 |
PRIVATE_IP_MASK=`echo $PRIVATE_IP/$PRIVATE_PREFIX`
|
| 555 |
fi
|
556 |
fi
|
| 556 |
private_ip_ending=`echo $PRIVATE_IP | cut -d"." -f4` # last octet of LAN address
|
557 |
private_ip_ending=`echo $PRIVATE_IP | cut -d"." -f4` # last octet of LAN address
|
| 557 |
PRIVATE_SECOND_IP=`echo $PRIVATE_IP | cut -d"." -f1-3`"."`expr $private_ip_ending + 1` # second network address (ex.: 192.168.182.2)
|
558 |
PRIVATE_SECOND_IP=`echo $PRIVATE_IP | cut -d"." -f1-3`"."`expr $private_ip_ending + 1` # second network address (ex.: 192.168.182.2)
|
| 558 |
PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$PRIVATE_PREFIX # ie.: 192.168.182.0/24
|
559 |
PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$PRIVATE_PREFIX # ie.: 192.168.182.0/24
|
| 559 |
classe=$((PRIVATE_PREFIX/8)) # ie.: 2=classe B, 3=classe C
|
560 |
classe=$((PRIVATE_PREFIX/8)) # ie.: 2=classe B, 3=classe C
|
| 560 |
PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`. # compatibility with hosts.allow et hosts.deny (ie.: 192.168.182.)
|
561 |
PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`. # compatibility with hosts.allow et hosts.deny (ie.: 192.168.182.)
|
| 561 |
PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2` # private network broadcast (ie.: 192.168.182.255)
|
- |
|
| 562 |
private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f4` # last octet of LAN broadcast
|
- |
|
| 563 |
PRIVATE_FIRST_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1` # First network address (ex.: 192.168.182.1)
|
- |
|
| 564 |
PRIVATE_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_ending - 1` # last network address (ex.: 192.168.182.254)
|
- |
|
| 565 |
PRIVATE_MAC=`/usr/sbin/ip link show $INTIF | grep ether | cut -d" " -f6| sed 's/:/-/g'| awk '{print toupper($0)}'` # MAC address of INTIF
|
562 |
PRIVATE_MAC=`/usr/sbin/ip link show $INTIF | grep ether | cut -d" " -f6| sed 's/:/-/g'| awk '{print toupper($0)}'` # MAC address of INTIF
|
| 566 |
# Define Internet parameters
|
563 |
# Define Internet parameters
|
| 567 |
if [ "$mode" != "update" ]
|
564 |
if [ "$mode" != "update" ]
|
| 568 |
then
|
565 |
then
|
| 569 |
DNS1=`cat /etc/sysconfig/network-scripts/ifcfg-$EXTIF | grep '^DNS1='| cut -d"=" -f2` # 1st DNS server
|
566 |
DNS1=`cat /etc/sysconfig/network-scripts/ifcfg-$EXTIF | grep '^DNS1='| cut -d"=" -f2` # 1st DNS server
|
| Line 609... |
Line 606... |
| 609 |
then echo "LANIF=$LANIF" >> $CONF_FILE
|
606 |
then echo "LANIF=$LANIF" >> $CONF_FILE
|
| 610 |
fi
|
607 |
fi
|
| 611 |
#########################################################################################################
|
608 |
#########################################################################################################
|
| 612 |
IP_SETTING=`grep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2` # test static or dynamic
|
609 |
IP_SETTING=`grep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2` # test static or dynamic
|
| 613 |
if [ $IP_SETTING == "dhcp" ]
|
610 |
if [ $IP_SETTING == "dhcp" ]
|
| 614 |
then
|
611 |
then
|
| 615 |
echo "PUBLIC_IP=dhcp" >> $CONF_FILE
|
612 |
echo "PUBLIC_IP=dhcp" >> $CONF_FILE
|
| 616 |
echo "GW=dhcp" >> $CONF_FILE
|
613 |
echo "GW=dhcp" >> $CONF_FILE
|
| 617 |
else
|
614 |
else
|
| 618 |
echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $CONF_FILE
|
615 |
echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $CONF_FILE
|
| 619 |
echo "GW=$PUBLIC_GATEWAY" >> $CONF_FILE
|
616 |
echo "GW=$PUBLIC_GATEWAY" >> $CONF_FILE
|
| Line 642... |
Line 639... |
| 642 |
$PRIVATE_IP $HOSTNAME
|
639 |
$PRIVATE_IP $HOSTNAME
|
| 643 |
EOF
|
640 |
EOF
|
| 644 |
# write EXTIF (Internet) config
|
641 |
# write EXTIF (Internet) config
|
| 645 |
[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
|
642 |
[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
|
| 646 |
if [ $IP_SETTING == "dhcp" ]
|
643 |
if [ $IP_SETTING == "dhcp" ]
|
| 647 |
then
|
644 |
then
|
| 648 |
cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
|
645 |
cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
|
| 649 |
DEVICE=$EXTIF
|
646 |
DEVICE=$EXTIF
|
| 650 |
BOOTPROTO=dhcp
|
647 |
BOOTPROTO=dhcp
|
| 651 |
DNS1=127.0.0.1
|
648 |
DNS1=127.0.0.1
|
| 652 |
PEERDNS=no
|
649 |
PEERDNS=no
|
| Line 659... |
Line 656... |
| 659 |
IPV6TO4INIT=no
|
656 |
IPV6TO4INIT=no
|
| 660 |
ACCOUNTING=no
|
657 |
ACCOUNTING=no
|
| 661 |
USERCTL=no
|
658 |
USERCTL=no
|
| 662 |
MTU=$MTU
|
659 |
MTU=$MTU
|
| 663 |
EOF
|
660 |
EOF
|
| 664 |
else
|
661 |
else
|
| 665 |
cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
|
662 |
cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
|
| 666 |
DEVICE=$EXTIF
|
663 |
DEVICE=$EXTIF
|
| 667 |
BOOTPROTO=static
|
664 |
BOOTPROTO=static
|
| 668 |
IPADDR=$PUBLIC_IP
|
665 |
IPADDR=$PUBLIC_IP
|
| 669 |
NETMASK=$PUBLIC_NETMASK
|
666 |
NETMASK=$PUBLIC_NETMASK
|
| Line 756... |
Line 753... |
| 756 |
[ -e /etc/modprobe.preload.default ] || cp /etc/modprobe.preload /etc/modprobe.preload.default
|
753 |
[ -e /etc/modprobe.preload.default ] || cp /etc/modprobe.preload /etc/modprobe.preload.default
|
| 757 |
echo "nf_conntrack_ftp" >> /etc/modprobe.preload
|
754 |
echo "nf_conntrack_ftp" >> /etc/modprobe.preload
|
| 758 |
# load ipt_NETFLOW module
|
755 |
# load ipt_NETFLOW module
|
| 759 |
echo "ipt_NETFLOW" >> /etc/modprobe.preload
|
756 |
echo "ipt_NETFLOW" >> /etc/modprobe.preload
|
| 760 |
# modify iptables service files (start with "alcasar-iptables.sh" and stop with flush)
|
757 |
# modify iptables service files (start with "alcasar-iptables.sh" and stop with flush)
|
| 761 |
[ -e /lib/systemd/system/iptables.service.default ] || cp /lib/systemd/system/iptables.service /lib/systemd/system/iptables.service.default
|
758 |
[ -e /lib/systemd/system/iptables.service.default ] || cp /lib/systemd/system/iptables.service /lib/systemd/system/iptables.service.default
|
| 762 |
$SED 's/ExecStart=\/usr\/libexec\/iptables.init start/ExecStart=\/usr\/local\/bin\/alcasar-iptables.sh/' /lib/systemd/system/iptables.service
|
759 |
$SED 's/ExecStart=\/usr\/libexec\/iptables.init start/ExecStart=\/usr\/local\/bin\/alcasar-iptables.sh/' /lib/systemd/system/iptables.service
|
| 763 |
[ -e /usr/libexec/iptables.init.default ] || cp /usr/libexec/iptables.init /usr/libexec/iptables.init.default
|
760 |
[ -e /usr/libexec/iptables.init.default ] || cp /usr/libexec/iptables.init /usr/libexec/iptables.init.default
|
| 764 |
$SED "s?\[ -f \$IPTABLES_CONFIG \] .*?#&?" /usr/libexec/iptables.init # comment the test (flush all rules & policies)
|
761 |
$SED "s?\[ -f \$IPTABLES_CONFIG \] .*?#&?" /usr/libexec/iptables.init # comment the test (flush all rules & policies)
|
| 765 |
#
|
762 |
#
|
| 766 |
# the script "$DIR_DEST_BIN/alcasar-iptables.sh" is launched at the end in order to allow update via ssh
|
763 |
# the script "$DIR_DEST_BIN/alcasar-iptables.sh" is launched at the end in order to allow update via ssh
|
| 767 |
} # End of network ()
|
764 |
} # End of network ()
|
| 768 |
|
765 |
|
| 769 |
###################################################
|
766 |
###################################################
|
| Line 821... |
Line 818... |
| 821 |
$SED "s?^allow_url_fopen.*?allow_url_fopen = Off?" /etc/php.ini
|
818 |
$SED "s?^allow_url_fopen.*?allow_url_fopen = Off?" /etc/php.ini
|
| 822 |
# Configuring & securing Lighttpd
|
819 |
# Configuring & securing Lighttpd
|
| 823 |
rm -rf /var/www/cgi-bin/* /var/www/perl/* /var/www/icons/README* /var/www/error/README*
|
820 |
rm -rf /var/www/cgi-bin/* /var/www/perl/* /var/www/icons/README* /var/www/error/README*
|
| 824 |
[ -e /etc/lighttpd/lighttpd.conf.default ] || cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.default
|
821 |
[ -e /etc/lighttpd/lighttpd.conf.default ] || cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.default
|
| 825 |
$SED "s?^server\.use-ipv6.*?server\.use-ipv6 = \"disable\"?g" /etc/lighttpd/lighttpd.conf
|
822 |
$SED "s?^server\.use-ipv6.*?server\.use-ipv6 = \"disable\"?g" /etc/lighttpd/lighttpd.conf
|
| 826 |
$SED "s?^#server\.bind.*?server\.bind = \"$HOSTNAME.$DOMAIN\"?g" /etc/lighttpd/lighttpd.conf
|
823 |
$SED "s?^#server\.bind.*?server\.bind = \"$PRIVATE_IP\"?g" /etc/lighttpd/lighttpd.conf
|
| 827 |
$SED "s?^server\.bind.*?server\.bind = \"$HOSTNAME.$DOMAIN\"?g" /etc/lighttpd/lighttpd.conf
|
824 |
$SED "s?^server\.bind.*?server\.bind = \"$PRIVATE_IP\"?g" /etc/lighttpd/lighttpd.conf
|
| 828 |
$SED "s?^#server\.tag.*?server\.tag = \"\"?g" /etc/lighttpd/lighttpd.conf
|
825 |
$SED "s?^#server\.tag.*?server\.tag = \"\"?g" /etc/lighttpd/lighttpd.conf
|
| 829 |
echo "include \"vhosts.d/alcasar.conf\"" >> /etc/lighttpd/lighttpd.conf
|
826 |
echo "include \"vhosts.d/alcasar.conf\"" >> /etc/lighttpd/lighttpd.conf
|
| 830 |
|
827 |
|
| 831 |
[ -e /etc/lighttpd/modules.conf.default ] || cp /etc/lighttpd/modules.conf /etc/lighttpd/modules.conf.default
|
828 |
[ -e /etc/lighttpd/modules.conf.default ] || cp /etc/lighttpd/modules.conf /etc/lighttpd/modules.conf.default
|
| 832 |
$SED "s?^#[ ]*\"mod_auth\",.*? \"mod_auth\",?g" /etc/lighttpd/modules.conf
|
829 |
$SED "s?^#[ ]*\"mod_auth\",.*? \"mod_auth\",?g" /etc/lighttpd/modules.conf
|
| Line 843... |
Line 840... |
| 843 |
|
840 |
|
| 844 |
cp $DIR_CONF/lighttpd/conf.d/fastcgi.conf /etc/lighttpd/conf.d/fastcgi.conf
|
841 |
cp $DIR_CONF/lighttpd/conf.d/fastcgi.conf /etc/lighttpd/conf.d/fastcgi.conf
|
| 845 |
|
842 |
|
| 846 |
[ -d /etc/lighttpd/vhosts.d ] || mkdir /etc/lighttpd/vhosts.d
|
843 |
[ -d /etc/lighttpd/vhosts.d ] || mkdir /etc/lighttpd/vhosts.d
|
| 847 |
cp $DIR_CONF/lighttpd/vhosts.d/* /etc/lighttpd/vhosts.d/
|
844 |
cp $DIR_CONF/lighttpd/vhosts.d/* /etc/lighttpd/vhosts.d/
|
| 848 |
$SED 's/^$SERVER\["socket"\] == ".*:443.*/$SERVER\["socket"\] == "'"$HOSTNAME.$DOMAIN"':443" {/g' /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf
|
845 |
$SED 's/^$SERVER\["socket"\] == ".*:443.*/$SERVER\["socket"\] == "'"$PRIVATE_IP"':443" {/g' /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf
|
| 849 |
$SED 's/^$SERVER\["socket"\] == ".*:443.*/$SERVER\["socket"\] == "'"$HOSTNAME.$DOMAIN"':443" {/g' /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf
|
846 |
$SED 's/^$SERVER\["socket"\] == ".*:443.*/$SERVER\["socket"\] == "'"$PRIVATE_IP"':443" {/g' /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf
|
| 850 |
$SED "s/^\([\t ]*\)var.server_name.*/\1var.server_name = \"$HOSTNAME.$DOMAIN\"/g" /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf
|
847 |
$SED "s/^\([\t ]*\)var.server_name.*/\1var.server_name = \"$PRIVATE_IP\"/g" /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf
|
| 851 |
$SED "s/^\([\t ]*\)var.server_name.*/\1var.server_name = \"$HOSTNAME.$DOMAIN\"/g" /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf
|
848 |
$SED "s/^\([\t ]*\)var.server_name.*/\1var.server_name = \"$PRIVATE_IP\"/g" /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf
|
| 852 |
ln -s /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf /etc/lighttpd/vhosts.d/alcasar.conf
|
849 |
ln -s /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf /etc/lighttpd/vhosts.d/alcasar.conf
|
| 853 |
|
850 |
|
| 854 |
[ -d /var/log/lighttpd ] || mkdir /var/log/lighttpd
|
851 |
[ -d /var/log/lighttpd ] || mkdir /var/log/lighttpd
|
| 855 |
[ -e /var/log/lighttpd/access.log ] || touch /var/log/lighttpd/access.log
|
852 |
[ -e /var/log/lighttpd/access.log ] || touch /var/log/lighttpd/access.log
|
| 856 |
[ -e /var/log/lighttpd/error.log ] || touch /var/log/lighttpd/error.log
|
853 |
[ -e /var/log/lighttpd/error.log ] || touch /var/log/lighttpd/error.log
|
| - |
|
854 |
|
| 857 |
chown -R apache:apache /var/log/lighttpd
|
855 |
chown -R apache:apache /var/log/lighttpd
|
| 858 |
/usr/bin/systemctl start lighttpd
|
856 |
/usr/bin/systemctl start lighttpd
|
| 859 |
/usr/bin/systemctl start php-fpm
|
857 |
/usr/bin/systemctl start php-fpm
|
| 860 |
|
858 |
|
| 861 |
# Creation of the first account (in 'admin' profile)
|
859 |
# Creation of the first account (in 'admin' profile)
|
| 862 |
if [ "$mode" = "install" ]
|
860 |
if [ "$mode" = "install" ]
|
| 863 |
then
|
861 |
then
|
| 864 |
header_install
|
862 |
header_install
|
| 865 |
# Creation of keys file for the admin account ("admin")
|
863 |
# Creation of keys file for the admin account ("admin")
|
| 866 |
[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
|
864 |
[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
|
| 867 |
mkdir -p $DIR_DEST_ETC/digest
|
865 |
mkdir -p $DIR_DEST_ETC/digest
|
| 868 |
chmod 755 $DIR_DEST_ETC/digest
|
866 |
chmod 755 $DIR_DEST_ETC/digest
|
| 869 |
until [ -s $DIR_DEST_ETC/digest/key_admin ]
|
867 |
until [ -s $DIR_DEST_ETC/digest/key_admin ]
|
| 870 |
do
|
868 |
do
|
| 871 |
$DIR_DEST_BIN/alcasar-profil.sh --add admin
|
869 |
$DIR_DEST_BIN/alcasar-profil.sh --add admin
|
| 872 |
done
|
870 |
done
|
| 873 |
fi
|
871 |
fi
|
| 874 |
|
872 |
|
| 875 |
# Run after coova (in order to wait tun0 to be up)
|
873 |
# Run after coova (in order to wait tun0 to be up)
|
| 876 |
$SED "s?^After=.*?After=network.target remote-fs.target nss-lookup.target chilli.service?g" /lib/systemd/system/lighttpd.service
|
874 |
$SED "s?^After=.*?After=network.target remote-fs.target nss-lookup.target chilli.service?g" /lib/systemd/system/lighttpd.service
|
| 877 |
# Log file for ACC access imputability
|
875 |
# Log file for ACC access imputability
|
| Line 917... |
Line 915... |
| 917 |
logfile /var/log/ntp.log
|
915 |
logfile /var/log/ntp.log
|
| 918 |
disable monitor
|
916 |
disable monitor
|
| 919 |
EOF
|
917 |
EOF
|
| 920 |
chown -R ntp:ntp /var/lib/ntp
|
918 |
chown -R ntp:ntp /var/lib/ntp
|
| 921 |
# Synchronize now
|
919 |
# Synchronize now
|
| 922 |
ntpd -q -g &
|
920 |
ntpd -4 -q -g &
|
| 923 |
} # End of time_server ()
|
921 |
} # End of time_server ()
|
| 924 |
|
922 |
|
| 925 |
#####################################################################
|
923 |
#####################################################################
|
| 926 |
## Function "init_db" ##
|
924 |
## Function "init_db" ##
|
| 927 |
## - Mysql initialization ##
|
925 |
## - Mysql initialization ##
|
| Line 930... |
Line 928... |
| 930 |
## - Radius database creation ##
|
928 |
## - Radius database creation ##
|
| 931 |
## - Copy of accounting tables (mtotacct, totacct) & userinfo ##
|
929 |
## - Copy of accounting tables (mtotacct, totacct) & userinfo ##
|
| 932 |
#####################################################################
|
930 |
#####################################################################
|
| 933 |
init_db ()
|
931 |
init_db ()
|
| 934 |
{
|
932 |
{
|
| 935 |
if [ `systemctl is-active mysqld` == "active" ]
|
933 |
if [ "`systemctl is-active mysqld`" == "active" ]
|
| 936 |
then
|
934 |
then
|
| 937 |
systemctl stop mysqld
|
935 |
systemctl stop mysqld
|
| 938 |
fi
|
936 |
fi
|
| 939 |
rm -rf /var/lib/mysql # to be sure that there is no former installation
|
937 |
rm -rf /var/lib/mysql # to be sure that there is no former installation
|
| 940 |
[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
|
938 |
[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
|
| Line 955... |
Line 953... |
| 955 |
if [ ! -S /var/lib/mysql/mysql.sock ]
|
953 |
if [ ! -S /var/lib/mysql/mysql.sock ]
|
| 956 |
then
|
954 |
then
|
| 957 |
echo "Problème : la base données 'MariaDB' ne s'est pas lancée !"
|
955 |
echo "Problème : la base données 'MariaDB' ne s'est pas lancée !"
|
| 958 |
exit
|
956 |
exit
|
| 959 |
fi
|
957 |
fi
|
| 960 |
MYSQL="/usr/bin/mysql --execute"
|
- |
|
| 961 |
# Secure the server
|
958 |
# Secure the server
|
| 962 |
$MYSQL="GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY '$mysqlpwd';"
|
959 |
/usr/bin/mysql --execute "GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY '$mysqlpwd';"
|
| - |
|
960 |
|
| 963 |
MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
|
961 |
MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
|
| 964 |
$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;"
|
962 |
$MYSQL "DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;"
|
| 965 |
$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;"
|
963 |
$MYSQL "CONNECT mysql;DELETE from user where User='';DELETE FROM user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');FLUSH PRIVILEGES;"
|
| 966 |
# Create 'radius' database
|
964 |
# Create 'radius' database
|
| 967 |
$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES;"
|
965 |
$MYSQL "CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES;"
|
| 968 |
# Add an empty radius database structure
|
966 |
# Add an empty radius database structure
|
| 969 |
mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/empty-radiusd-db.sql
|
967 |
/usr/bin/mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/empty-radiusd-db.sql
|
| 970 |
# modify the start script in order to close accounting connexion when the system is comming down or up
|
968 |
# modify the start script in order to close accounting connexion when the system is comming down or up
|
| 971 |
[ -e /lib/systemd/system/mysqld.service.default ] || cp /lib/systemd/system/mysqld.service /lib/systemd/system/mysqld.service.default
|
969 |
[ -e /lib/systemd/system/mysqld.service.default ] || cp /lib/systemd/system/mysqld.service /lib/systemd/system/mysqld.service.default
|
| 972 |
$SED "/^ExecStart=/a ExecStop=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /usr/lib/systemd/system/mysqld.service
|
970 |
$SED "/^ExecStart=/a ExecStop=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /usr/lib/systemd/system/mysqld.service
|
| 973 |
$SED "/^ExecStop=/a ExecStartPost=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /lib/systemd/system/mysqld.service
|
971 |
$SED "/^ExecStop=/a ExecStartPost=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /lib/systemd/system/mysqld.service
|
| 974 |
/usr/bin/systemctl unset-environment MYSQLD_OPTS
|
972 |
/usr/bin/systemctl unset-environment MYSQLD_OPTS
|
| Line 1049... |
Line 1047... |
| 1049 |
[ -e /lib/systemd/system/radiusd.service.default ] || cp /lib/systemd/system/radiusd.service /lib/systemd/system/radiusd.service.default
|
1047 |
[ -e /lib/systemd/system/radiusd.service.default ] || cp /lib/systemd/system/radiusd.service /lib/systemd/system/radiusd.service.default
|
| 1050 |
$SED "s?^After=.*?After=syslog.target network.target mysqld.service?g" /lib/systemd/system/radiusd.service
|
1048 |
$SED "s?^After=.*?After=syslog.target network.target mysqld.service?g" /lib/systemd/system/radiusd.service
|
| 1051 |
/usr/bin/systemctl daemon-reload
|
1049 |
/usr/bin/systemctl daemon-reload
|
| 1052 |
# Allow apache to change some conf files (ie : ldap on/off)
|
1050 |
# Allow apache to change some conf files (ie : ldap on/off)
|
| 1053 |
chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/mods-available
|
1051 |
chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/mods-available
|
| 1054 |
|
- |
|
| 1055 |
} # End freeradius ()
|
1052 |
} # End freeradius ()
|
| 1056 |
|
1053 |
|
| 1057 |
#############################################################################
|
1054 |
#############################################################################
|
| 1058 |
## Function "chilli" ##
|
1055 |
## Function "chilli" ##
|
| 1059 |
## - Creation of the conf file and init file (systemd) for coova-chilli ##
|
1056 |
## - Creation of the conf file and init file (systemd) for coova-chilli ##
|
| Line 1184... |
Line 1181... |
| 1184 |
# | 42 | n | a1 | a2 | a3 | a4 | a1 | a2 | ...
|
1181 |
# | 42 | n | a1 | a2 | a3 | a4 | a1 | a2 | ...
|
| 1185 |
# +-----+-----+-----+-----+-----+-----+-----+-----+--
|
1182 |
# +-----+-----+-----+-----+-----+-----+-----+-----+--
|
| 1186 |
#
|
1183 |
#
|
| 1187 |
#Code : 42 => 2a
|
1184 |
#Code : 42 => 2a
|
| 1188 |
#Len : 4 => 04
|
1185 |
#Len : 4 => 04
|
| 1189 |
PRIVATE_IP_HEXA=$(printf "%02x\n" $(echo $PRIVATE_IP | cut -d'.' -f1))$(printf "%02x\n" $(echo $PRIVATE_IP | cut -d'.' -f2))$(printf "%02x\n" $(echo $PRIVATE_IP | cut -d'.' -f3))$(printf "%02x\n" $(echo $PRIVATE_IP | cut -d'.' -f4))
|
1186 |
PRIVATE_IP_HEXA=$(printf "%02x\n" "$(echo $PRIVATE_IP | cut -d'.' -f1)")$(printf "%02x\n" "$(echo $PRIVATE_IP | cut -d'.' -f2)")$(printf "%02x\n" "$(echo $PRIVATE_IP | cut -d'.' -f3)")$(printf "%02x\n" "$(echo $PRIVATE_IP | cut -d'.' -f4)")
|
| 1190 |
cat <<EOF > /etc/chilli.conf
|
1187 |
cat <<EOF > /etc/chilli.conf
|
| 1191 |
# coova config for ALCASAR
|
1188 |
# coova config for ALCASAR
|
| 1192 |
cmdsocket /var/run/chilli.sock
|
1189 |
cmdsocket /var/run/chilli.sock
|
| 1193 |
unixipc chilli.$INTIF.ipc
|
1190 |
unixipc chilli.$INTIF.ipc
|
| 1194 |
pidfile /var/run/chilli.pid
|
1191 |
pidfile /var/run/chilli.pid
|
| Line 1466... |
Line 1463... |
| 1466 |
$SED "s?^my \$PORTSDBDIR =.*?my \$PORTSDBDIR = \"/var/log/netflow/porttracker\";?g" /tmp/nfsen-*/contrib/PortTracker/PortTracker.pm
|
1463 |
$SED "s?^my \$PORTSDBDIR =.*?my \$PORTSDBDIR = \"/var/log/netflow/porttracker\";?g" /tmp/nfsen-*/contrib/PortTracker/PortTracker.pm
|
| 1467 |
# use of our conf file and init unit
|
1464 |
# use of our conf file and init unit
|
| 1468 |
cp $DIR_CONF/nfsen/nfsen.conf /tmp/nfsen-*/etc/
|
1465 |
cp $DIR_CONF/nfsen/nfsen.conf /tmp/nfsen-*/etc/
|
| 1469 |
# Installation of nfsen (we change a little 'install.pl in order not to ask the user for the perl version)
|
1466 |
# Installation of nfsen (we change a little 'install.pl in order not to ask the user for the perl version)
|
| 1470 |
DirTmp=$(pwd)
|
1467 |
DirTmp=$(pwd)
|
| 1471 |
cd /tmp/nfsen-*/
|
1468 |
cd /tmp/nfsen-*/ || { echo "Unable to find nfsen directory"; exit 1; }
|
| 1472 |
/usr/bin/perl install.pl etc/nfsen.conf
|
1469 |
/usr/bin/perl install.pl etc/nfsen.conf
|
| 1473 |
/usr/bin/perl install.pl etc/nfsen.conf # to avoid a Perl mistake "Semaphore introuvable"
|
1470 |
/usr/bin/perl install.pl etc/nfsen.conf # to avoid a Perl mistake "Semaphore introuvable"
|
| 1474 |
# Create RRD DB for porttracker (only in it still doesn't exist)
|
1471 |
# Create RRD DB for porttracker (only in it still doesn't exist)
|
| 1475 |
cp contrib/PortTracker/PortTracker.pm /usr/share/nfsen/plugins/
|
1472 |
cp contrib/PortTracker/PortTracker.pm /usr/share/nfsen/plugins/
|
| 1476 |
cp contrib/PortTracker/PortTracker.php /var/www/html/acc/manager/nfsen/plugins/
|
1473 |
cp contrib/PortTracker/PortTracker.php /var/www/html/acc/manager/nfsen/plugins/
|
| Line 1503... |
Line 1500... |
| 1503 |
|
1500 |
|
| 1504 |
[Install]
|
1501 |
[Install]
|
| 1505 |
WantedBy=multi-user.target
|
1502 |
WantedBy=multi-user.target
|
| 1506 |
EOF
|
1503 |
EOF
|
| 1507 |
# Add the listen port to collect netflow packet (nfcapd)
|
1504 |
# Add the listen port to collect netflow packet (nfcapd)
|
| 1508 |
$SED "s?'\$ziparg $extensions.*?\$ziparg $extensions -b 127.0.0.1;'?g" /usr/libexec/NfSenRC.pm
|
1505 |
$SED 's?$ziparg $extensions.*?$ziparg $extensions -b 127.0.0.1";?g' /usr/libexec/NfSenRC.pm
|
| 1509 |
# expire delay for the profile "live"
|
1506 |
# expire delay for the profile "live"
|
| 1510 |
/usr/bin/systemctl start nfsen
|
1507 |
/usr/bin/systemctl start nfsen
|
| 1511 |
/bin/nfsen -m live -e 62d 2>/dev/null
|
1508 |
/bin/nfsen -m live -e 62d 2>/dev/null
|
| 1512 |
# add SURFmap plugin (waiting for new technical solution)
|
1509 |
# add SURFmap plugin (waiting for new technical solution)
|
| 1513 |
# see https://adullact.net/forum/forum.php?thread_id=319545&forum_id=1601&group_id=450
|
1510 |
# see https://adullact.net/forum/forum.php?thread_id=319545&forum_id=1601&group_id=450
|
| 1514 |
# cp $DIR_CONF/nfsen/SURFmap_*.tar.gz /tmp/
|
1511 |
# cp $DIR_CONF/nfsen/SURFmap_*.tar.gz /tmp/
|
| 1515 |
# cp $DIR_CONF/nfsen/GeoLiteCity* /tmp/
|
1512 |
# cp $DIR_CONF/nfsen/GeoLiteCity* /tmp/
|
| 1516 |
# tar xzf /tmp/SURFmap_*.tar.gz -C /tmp/
|
1513 |
# tar xzf /tmp/SURFmap_*.tar.gz -C /tmp/
|
| 1517 |
# cd /tmp/
|
1514 |
# cd /tmp/
|
| 1518 |
# /usr/bin/sh SURFmap/install.sh
|
1515 |
# /usr/bin/sh SURFmap/install.sh
|
| 1519 |
# clear the installation
|
1516 |
# clear the installation
|
| 1520 |
# rm -rf /tmp/SURFmap*
|
1517 |
# rm -rf /tmp/SURFmap*
|
| 1521 |
rm -rf /tmp/nfsen-*
|
1518 |
rm -rf /tmp/nfsen-*
|
| 1522 |
cd $DirTmp
|
1519 |
cd $DirTmp || { echo "Unable to find $DirTmp directory"; exit 1; }
|
| 1523 |
chown -R apache:apache /var/www/html/acc/manager/nfsen /usr/share/nfsen /var/log/nfsen
|
1520 |
chown -R apache:apache /var/www/html/acc/manager/nfsen /usr/share/nfsen /var/log/nfsen
|
| 1524 |
} # End of nfsen ()
|
1521 |
} # End of nfsen ()
|
| 1525 |
|
1522 |
|
| 1526 |
###########################################################
|
1523 |
###########################################################
|
| 1527 |
## Function "vnstat" ##
|
1524 |
## Function "vnstat" ##
|
| Line 1529... |
Line 1526... |
| 1529 |
###########################################################
|
1526 |
###########################################################
|
| 1530 |
vnstat ()
|
1527 |
vnstat ()
|
| 1531 |
{
|
1528 |
{
|
| 1532 |
[ -e /etc/vnstat.conf.default ] || cp /etc/vnstat.conf /etc/vnstat.conf.default
|
1529 |
[ -e /etc/vnstat.conf.default ] || cp /etc/vnstat.conf /etc/vnstat.conf.default
|
| 1533 |
$SED "s?^Interface.*?Interface \"$EXTIF\"?g" /etc/vnstat.conf
|
1530 |
$SED "s?^Interface.*?Interface \"$EXTIF\"?g" /etc/vnstat.conf
|
| 1534 |
$SED "s?^DatabaseDir.*?DatabaseDir /var/log/vnstat?g" /etc/vnstat.conf
|
1531 |
$SED "s?^DatabaseDir.*?DatabaseDir /var/log/vnstat?g" /etc/vnstat.conf
|
| 1535 |
[ -e $DIR_ACC/manager/stats/config.php.default ] || cp $DIR_ACC/manager/stats/config.php $DIR_ACC/manager/stats/config.php.default
|
1532 |
[ -e $DIR_ACC/manager/stats/config.php.default ] || cp $DIR_ACC/manager/stats/config.php $DIR_ACC/manager/stats/config.php.default
|
| 1536 |
$SED "s?\$iface_list =.*?\$iface_list = array('$EXTIF');?" $DIR_ACC/manager/stats/config.php
|
1533 |
$SED "s?\$iface_list =.*?\$iface_list = array('$EXTIF');?" $DIR_ACC/manager/stats/config.php
|
| 1537 |
$SED "s?\$iface_title\['.*?\$iface_title\['$EXTIF'\] = \$title;?" $DIR_ACC/manager/stats/config.php
|
1534 |
$SED "s?\$iface_title\['.*?\$iface_title\['$EXTIF'\] = \$title;?" $DIR_ACC/manager/stats/config.php
|
| 1538 |
/usr/bin/vnstat -i $EXTIF -u --force
|
1535 |
/usr/bin/vnstat -i $EXTIF -u --force
|
| 1539 |
} # End of vnstat
|
1536 |
} # End of vnstat
|
| Line 1544... |
Line 1541... |
| 1544 |
## - creation of the file managing domain name (local & remote) ##
|
1541 |
## - creation of the file managing domain name (local & remote) ##
|
| 1545 |
##################################################################
|
1542 |
##################################################################
|
| 1546 |
dnsmasq ()
|
1543 |
dnsmasq ()
|
| 1547 |
{
|
1544 |
{
|
| 1548 |
[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
|
1545 |
[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
|
| 1549 |
# 1st dnsmasq listen on udp 53 ("dnsmasq - forward"). It's used as dhcp server only if "alcasar-bypass" is on.
|
- |
|
| 1550 |
[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
|
1546 |
[ -e /etc/dnsmasq.conf.default ] || mv /etc/dnsmasq.conf /etc/dnsmasq.conf.default
|
| 1551 |
cat << EOF > /etc/dnsmasq.conf
|
- |
|
| 1552 |
# Configuration file for "dnsmasq in forward mode"
|
- |
|
| 1553 |
conf-file=$DIR_DEST_ETC/alcasar-dns-name # local & remote DNS domain name resolutions
|
- |
|
| 1554 |
listen-address=$PRIVATE_IP
|
- |
|
| 1555 |
pid-file=/var/run/dnsmasq.pid
|
- |
|
| 1556 |
listen-address=127.0.0.1
|
- |
|
| 1557 |
no-dhcp-interface=$INTIF
|
- |
|
| 1558 |
no-dhcp-interface=tun0
|
- |
|
| 1559 |
no-dhcp-interface=lo
|
- |
|
| 1560 |
bind-interfaces
|
- |
|
| 1561 |
cache-size=2048
|
- |
|
| 1562 |
domain-needed
|
- |
|
| 1563 |
expand-hosts
|
- |
|
| 1564 |
bogus-priv
|
- |
|
| 1565 |
filterwin2k
|
- |
|
| 1566 |
server=$DNS1
|
- |
|
| 1567 |
server=$DNS2
|
- |
|
| 1568 |
# DHCP service is configured. It will be enabled in "bypass" mode
|
- |
|
| 1569 |
#dhcp-range=$PRIVATE_FIRST_IP,$PRIVATE_LAST_IP,$PRIVATE_NETMASK,12h
|
- |
|
| 1570 |
#dhcp-option=option:router,$PRIVATE_IP
|
- |
|
| 1571 |
#dhcp-option=option:ntp-server,$PRIVATE_IP
|
- |
|
| 1572 |
|
- |
|
| 1573 |
# Exemple of static dhcp assignation : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
|
- |
|
| 1574 |
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
|
- |
|
| 1575 |
EOF
|
- |
|
| 1576 |
# 2nd dnsmasq listen on udp 54 ("dnsmasq with blacklist")
|
- |
|
| 1577 |
cat << EOF > /etc/dnsmasq-blacklist.conf
|
- |
|
| 1578 |
# Configuration file for "dnsmasq with blacklist"
|
- |
|
| 1579 |
# Add Toulouse University blacklist domains
|
- |
|
| 1580 |
conf-file=$DIR_DEST_ETC/alcasar-dns-name # local & remote DNS domain name resolutions
|
- |
|
| 1581 |
conf-dir=$DIR_DEST_SHARE/dnsmasq-bl-enabled
|
- |
|
| 1582 |
pid-file=/var/run/dnsmasq-blacklist.pid
|
- |
|
| 1583 |
listen-address=$PRIVATE_IP
|
- |
|
| 1584 |
port=54
|
- |
|
| 1585 |
no-dhcp-interface=$INTIF
|
- |
|
| 1586 |
no-dhcp-interface=tun0
|
- |
|
| 1587 |
no-dhcp-interface=lo
|
- |
|
| 1588 |
bind-interfaces
|
- |
|
| 1589 |
cache-size=2048
|
- |
|
| 1590 |
domain-needed
|
- |
|
| 1591 |
expand-hosts
|
- |
|
| 1592 |
bogus-priv
|
- |
|
| 1593 |
filterwin2k
|
- |
|
| 1594 |
log-queries
|
- |
|
| 1595 |
log-facility=/var/log/dnsmasq/dnsmasq-blacklist.log
|
- |
|
| 1596 |
server=$DNS1
|
- |
|
| 1597 |
server=$DNS2
|
- |
|
| 1598 |
EOF
|
- |
|
| 1599 |
# 3rd dnsmasq listen on udp 55 ("dnsmasq with whitelist")
|
1547 |
# 3rd dnsmasq listen on udp 55 ("dnsmasq with whitelist")
|
| 1600 |
cat << EOF > /etc/dnsmasq-whitelist.conf
|
1548 |
cat << EOF > /etc/dnsmasq-whitelist.conf
|
| 1601 |
# Configuration file for "dnsmasq with whitelist"
|
1549 |
# Configuration file for "dnsmasq with whitelist"
|
| 1602 |
# ADD Toulouse university whitelist domains
|
1550 |
# ADD Toulouse university whitelist domains
|
| 1603 |
conf-file=$DIR_DEST_ETC/alcasar-dns-name # local & remote DNS domain name resolutions
|
- |
|
| 1604 |
conf-dir=$DIR_DEST_SHARE/dnsmasq-wl-enabled
|
- |
|
| 1605 |
pid-file=/var/run/dnsmasq-whitelist.pid
|
1551 |
pid-file=/var/run/dnsmasq-whitelist.pid
|
| 1606 |
listen-address=$PRIVATE_IP
|
1552 |
listen-address=127.0.0.1
|
| 1607 |
port=55
|
1553 |
port=55
|
| 1608 |
no-dhcp-interface=$INTIF
|
- |
|
| 1609 |
no-dhcp-interface=tun0
|
- |
|
| 1610 |
no-dhcp-interface=lo
|
1554 |
no-dhcp-interface=lo
|
| 1611 |
bind-interfaces
|
1555 |
bind-interfaces
|
| 1612 |
cache-size=1024
|
1556 |
cache-size=1024
|
| 1613 |
domain-needed
|
1557 |
domain-needed
|
| 1614 |
expand-hosts
|
1558 |
expand-hosts
|
| 1615 |
bogus-priv
|
1559 |
bogus-priv
|
| 1616 |
filterwin2k
|
1560 |
filterwin2k
|
| 1617 |
ipset=/#/wl_ip_allowed # dynamicly add the resolv IP address in the Firewall rules
|
1561 |
ipset=/#/wl_ip_allowed # dynamically add the resolv IP address in the Firewall rules
|
| 1618 |
address=/#/$PRIVATE_IP # for Domain name without local resolution (WL)
|
- |
|
| 1619 |
EOF
|
- |
|
| 1620 |
# 4th dnsmasq listen on udp 56 ("blackhole")
|
- |
|
| 1621 |
cat << EOF > /etc/dnsmasq-blackhole.conf
|
- |
|
| 1622 |
# Configuration file for "dnsmasq as a blackhole"
|
- |
|
| 1623 |
conf-file=$DIR_DEST_ETC/alcasar-dns-name # local & remote DNS domain name resolutions
|
- |
|
| 1624 |
address=/#/$PRIVATE_IP # redirect all on ALCASAR IP address
|
- |
|
| 1625 |
pid-file=/var/run/dnsmasq-blackhole.pid
|
- |
|
| 1626 |
listen-address=$PRIVATE_IP
|
- |
|
| 1627 |
port=56
|
- |
|
| 1628 |
no-dhcp-interface=$INTIF
|
- |
|
| 1629 |
no-dhcp-interface=tun0
|
- |
|
| 1630 |
no-dhcp-interface=lo
|
- |
|
| 1631 |
bind-interfaces
|
- |
|
| 1632 |
cache-size=256
|
- |
|
| 1633 |
domain-needed
|
- |
|
| 1634 |
expand-hosts
|
1562 |
server=$DNS1
|
| 1635 |
bogus-priv
|
- |
|
| 1636 |
filterwin2k
|
1563 |
server=$DNS2
|
| 1637 |
EOF
|
1564 |
EOF
|
| 1638 |
# file managing domain name resolution (local & remote)
|
- |
|
| 1639 |
cat << EOF > $DIR_DEST_ETC/alcasar-dns-name
|
- |
|
| 1640 |
# Vous pouvez définir ici votre nom de domain local ('localdomain' par défaut)
|
- |
|
| 1641 |
# Here you can define your local domain name ('localdomain' by default)
|
- |
|
| 1642 |
local=/localdomain/
|
- |
|
| 1643 |
domain=localdomain
|
- |
|
| 1644 |
|
- |
|
| 1645 |
## Ajouter une ligne pour chaque nom de domaine géré par un autre seveur DNS
|
- |
|
| 1646 |
## Add one line for each domain name managed by an other DNS server
|
- |
|
| 1647 |
## server=/<your_domain>/<@IP_domain_server>
|
- |
|
| 1648 |
## Exemple for an A.D. domain : server=/Your.Domain.AD/110.120.100.100
|
- |
|
| 1649 |
## Exemple for an other domain : server=/an_other_domain/10.20.30.40
|
- |
|
| 1650 |
|
1565 |
|
| - |
|
1566 |
# Create dnsmasq-whitelist unit
|
| - |
|
1567 |
mv /lib/systemd/system/dnsmasq.service /lib/systemd/system/dnsmasq.service.default
|
| - |
|
1568 |
cp /lib/systemd/system/dnsmasq.service.default /lib/systemd/system/dnsmasq-whitelist.service
|
| - |
|
1569 |
$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/dnsmasq -C /etc/dnsmasq-whitelist.conf?g" /lib/systemd/system/dnsmasq-whitelist.service
|
| - |
|
1570 |
$SED "s?^PIDFile=.*?PIDFile=/var/run/dnsmasq-whitelist.pid?g" /lib/systemd/system/dnsmasq-whitelist.service
|
| - |
|
1571 |
} # End dnsmasq
|
| - |
|
1572 |
|
| - |
|
1573 |
##################################################
|
| - |
|
1574 |
## Function "unbound" ##
|
| - |
|
1575 |
##################################################
|
| - |
|
1576 |
unbound ()
|
| - |
|
1577 |
{
|
| - |
|
1578 |
[ -d /etc/unbound/conf.d ] || mkdir -p /etc/unbound/conf.d
|
| - |
|
1579 |
[ -d /etc/unbound/conf.d/common ] || mkdir /etc/unbound/conf.d/common
|
| - |
|
1580 |
[ -d /etc/unbound/conf.d/common/local-forward ] || mkdir /etc/unbound/conf.d/common/local-forward
|
| - |
|
1581 |
[ -d /etc/unbound/conf.d/common/local-dns ] || mkdir /etc/unbound/conf.d/common/local-dns
|
| - |
|
1582 |
[ -d /etc/unbound/conf.d/forward ] || mkdir /etc/unbound/conf.d/forward
|
| - |
|
1583 |
[ -d /etc/unbound/conf.d/blacklist ] || mkdir /etc/unbound/conf.d/blacklist
|
| - |
|
1584 |
[ -d /etc/unbound/conf.d/whitelist ] || mkdir /etc/unbound/conf.d/whitelist
|
| - |
|
1585 |
[ -d /etc/unbound/conf.d/blackhole ] || mkdir /etc/unbound/conf.d/blackhole
|
| - |
|
1586 |
[ -d /var/log/unbound ] || { mkdir /var/log/unbound; chown unbound:unbound /var/log/unbound; }
|
| - |
|
1587 |
[ -e /etc/unbound/unbound.conf.default ] || cp /etc/unbound/unbound.conf /etc/unbound/unbound.conf.default
|
| - |
|
1588 |
|
| - |
|
1589 |
# Local static DNS configuration
|
| - |
|
1590 |
[ -e /etc/unbound/conf.d/common/local-dns/global.conf ] || touch /etc/unbound/conf.d/common/local-dns/global.conf
|
| - |
|
1591 |
|
| - |
|
1592 |
# Forward zone configuration file for all unbound dns servers
|
| - |
|
1593 |
cat << EOF > /etc/unbound/conf.d/common/forward-zone.conf
|
| - |
|
1594 |
forward-zone:
|
| - |
|
1595 |
name: "."
|
| - |
|
1596 |
forward-addr: $DNS1
|
| - |
|
1597 |
forward-addr: $DNS2
|
| - |
|
1598 |
EOF
|
| - |
|
1599 |
|
| - |
|
1600 |
# Custom configuration file for manual DNS configuration
|
| - |
|
1601 |
cat << EOF > /etc/unbound/conf.d/common/local-forward/custom.conf
|
| - |
|
1602 |
## Ajouter un bloc pour chaque nom de domaine géré par un autre seveur DNS
|
| - |
|
1603 |
## Add one block for each domain name managed by an other DNS server
|
| - |
|
1604 |
##
|
| - |
|
1605 |
## Example:
|
| - |
|
1606 |
##
|
| - |
|
1607 |
## server:
|
| - |
|
1608 |
## local-zone: "<your_domain>." transparent
|
| - |
|
1609 |
## forward-zone:
|
| - |
|
1610 |
## name: "<your_domain>."
|
| - |
|
1611 |
## forward-addr: <@IP_domain_server>
|
| - |
|
1612 |
##
|
| 1651 |
## INFO : local hostnames are resolved in /etc/hosts file
|
1613 |
## INFO : local hostnames are resolved in /etc/hosts file
|
| 1652 |
EOF
|
1614 |
EOF
|
| 1653 |
|
1615 |
|
| - |
|
1616 |
# Configuration file of ALCASAR main domains for $INTIF
|
| - |
|
1617 |
cat << EOF > /etc/unbound/conf.d/common/local-dns/${INTIF}.conf
|
| - |
|
1618 |
server:
|
| - |
|
1619 |
local-zone: "$HOSTNAME.$DOMAIN" static
|
| - |
|
1620 |
local-data: "$HOSTNAME.$DOMAIN A $PRIVATE_IP"
|
| - |
|
1621 |
local-zone: "$HOSTNAME" static
|
| - |
|
1622 |
local-data: "$HOSTNAME A $PRIVATE_IP"
|
| - |
|
1623 |
local-zone: "$DOMAIN." static
|
| - |
|
1624 |
local-data: "$DOMAIN. A"
|
| - |
|
1625 |
EOF
|
| - |
|
1626 |
|
| - |
|
1627 |
# Configuration file for lo of forward unbound
|
| - |
|
1628 |
cat << EOF > /etc/unbound/conf.d/forward/iface.lo.conf
|
| - |
|
1629 |
server:
|
| - |
|
1630 |
interface: 127.0.0.1@53
|
| - |
|
1631 |
access-control-view: 127.0.0.1/8 lo
|
| - |
|
1632 |
|
| - |
|
1633 |
view:
|
| - |
|
1634 |
name: "lo"
|
| - |
|
1635 |
local-zone: "$HOSTNAME.$DOMAIN" static
|
| - |
|
1636 |
local-data: "$HOSTNAME.$DOMAIN A 127.0.0.1"
|
| - |
|
1637 |
local-zone: "$HOSTNAME" static
|
| - |
|
1638 |
local-data: "$HOSTNAME A 127.0.0.1"
|
| - |
|
1639 |
local-zone: "$DOMAIN." static
|
| - |
|
1640 |
local-data: "$DOMAIN. A"
|
| - |
|
1641 |
view-first: yes
|
| - |
|
1642 |
EOF
|
| - |
|
1643 |
|
| - |
|
1644 |
# Configuration file for $INTIF of forward unbound
|
| - |
|
1645 |
cat << EOF > /etc/unbound/conf.d/forward/iface.${INTIF}.conf
|
| - |
|
1646 |
server:
|
| - |
|
1647 |
interface: ${PRIVATE_IP}@53
|
| - |
|
1648 |
access-control-view: $PRIVATE_NETWORK_MASK $INTIF
|
| - |
|
1649 |
|
| - |
|
1650 |
view:
|
| - |
|
1651 |
name: "$INTIF"
|
| - |
|
1652 |
local-zone: "$HOSTNAME.$DOMAIN" static
|
| - |
|
1653 |
local-data: "$HOSTNAME.$DOMAIN A $PRIVATE_IP"
|
| - |
|
1654 |
local-zone: "$HOSTNAME" static
|
| - |
|
1655 |
local-data: "$HOSTNAME A $PRIVATE_IP"
|
| - |
|
1656 |
view-first: yes
|
| - |
|
1657 |
EOF
|
| - |
|
1658 |
|
| - |
|
1659 |
# Configuration file for forward unbound
|
| - |
|
1660 |
cat << EOF > /etc/unbound/unbound.conf
|
| - |
|
1661 |
server:
|
| - |
|
1662 |
verbosity: 1
|
| - |
|
1663 |
hide-version: yes
|
| - |
|
1664 |
hide-identity: yes
|
| - |
|
1665 |
do-ip6: no
|
| - |
|
1666 |
|
| - |
|
1667 |
include: /etc/unbound/conf.d/common/forward-zone.conf
|
| - |
|
1668 |
include: /etc/unbound/conf.d/common/local-forward/*
|
| - |
|
1669 |
include: /etc/unbound/conf.d/common/local-dns/*
|
| - |
|
1670 |
include: /etc/unbound/conf.d/forward/*
|
| - |
|
1671 |
EOF
|
| - |
|
1672 |
|
| - |
|
1673 |
# Configuration file for $INTIF of blacklist unbound
|
| - |
|
1674 |
cat << EOF > /etc/unbound/conf.d/blacklist/iface.${INTIF}.conf
|
| - |
|
1675 |
server:
|
| - |
|
1676 |
interface: ${PRIVATE_IP}@54
|
| - |
|
1677 |
access-control: $PRIVATE_IP_MASK allow
|
| - |
|
1678 |
access-control-tag: $PRIVATE_IP_MASK "blacklist"
|
| - |
|
1679 |
access-control-tag-action: $PRIVATE_IP_MASK "blacklist" redirect
|
| - |
|
1680 |
access-control-tag-data: $PRIVATE_IP_MASK "blacklist" "A $PRIVATE_IP"
|
| - |
|
1681 |
EOF
|
| - |
|
1682 |
|
| - |
|
1683 |
# Configuration file for blacklist unbound
|
| - |
|
1684 |
cat << EOF > /etc/unbound/unbound-blacklist.conf
|
| - |
|
1685 |
server:
|
| - |
|
1686 |
verbosity: 1
|
| - |
|
1687 |
hide-version: yes
|
| - |
|
1688 |
hide-identity: yes
|
| - |
|
1689 |
do-ip6: no
|
| - |
|
1690 |
logfile: "/var/log/unbound/unbound-blacklist.log"
|
| - |
|
1691 |
chroot: ""
|
| - |
|
1692 |
define-tag: "blacklist"
|
| - |
|
1693 |
log-local-actions: yes
|
| - |
|
1694 |
|
| - |
|
1695 |
include: /etc/unbound/conf.d/common/forward-zone.conf
|
| - |
|
1696 |
include: /etc/unbound/conf.d/common/local-forward/*
|
| - |
|
1697 |
include: /etc/unbound/conf.d/common/local-dns/*
|
| - |
|
1698 |
include: /etc/unbound/conf.d/blacklist/*
|
| - |
|
1699 |
|
| - |
|
1700 |
include: /usr/local/share/unbound-bl-enabled/*
|
| - |
|
1701 |
EOF
|
| - |
|
1702 |
|
| - |
|
1703 |
# Configuration file for $INTIF of whitelist unbound
|
| - |
|
1704 |
cat << EOF > /etc/unbound/conf.d/whitelist/iface.${INTIF}.conf
|
| - |
|
1705 |
server:
|
| - |
|
1706 |
interface: ${PRIVATE_IP}@55
|
| - |
|
1707 |
access-control: $PRIVATE_IP_MASK allow
|
| - |
|
1708 |
access-control-tag: $PRIVATE_IP_MASK "whitelist"
|
| - |
|
1709 |
access-control-tag-action: $PRIVATE_IP_MASK "whitelist" redirect
|
| 1654 |
# the main instance should start after network and chilli (which create tun0)
|
1710 |
access-control-tag-data: $PRIVATE_IP_MASK "whitelist" "A $PRIVATE_IP"
|
| - |
|
1711 |
EOF
|
| - |
|
1712 |
|
| - |
|
1713 |
# Configuration file for whitelist unbound
|
| - |
|
1714 |
cat << EOF > /etc/unbound/unbound-whitelist.conf
|
| - |
|
1715 |
server:
|
| - |
|
1716 |
verbosity: 1
|
| - |
|
1717 |
hide-version: yes
|
| - |
|
1718 |
hide-identity: yes
|
| - |
|
1719 |
do-ip6: no
|
| - |
|
1720 |
do-not-query-localhost: no
|
| - |
|
1721 |
define-tag: "whitelist"
|
| - |
|
1722 |
|
| - |
|
1723 |
local-zone: "." transparent
|
| - |
|
1724 |
local-zone-tag: "." "whitelist"
|
| - |
|
1725 |
|
| - |
|
1726 |
include: /usr/local/share/unbound-wl-enabled/*
|
| - |
|
1727 |
include: /etc/unbound/conf.d/whitelist/*
|
| - |
|
1728 |
include: /etc/unbound/conf.d/common/local-dns/*
|
| - |
|
1729 |
include: /etc/unbound/conf.d/common/local-forward/*
|
| - |
|
1730 |
|
| - |
|
1731 |
forward-zone:
|
| - |
|
1732 |
name: "."
|
| - |
|
1733 |
forward-addr: 127.0.0.1@55
|
| - |
|
1734 |
EOF
|
| - |
|
1735 |
|
| - |
|
1736 |
# Configuration file for $INTIF of blackhole unbound
|
| - |
|
1737 |
cat << EOF > /etc/unbound/conf.d/blackhole/iface.${INTIF}.conf
|
| - |
|
1738 |
server:
|
| - |
|
1739 |
interface: ${PRIVATE_IP}@56
|
| - |
|
1740 |
access-control-view: $PRIVATE_NETWORK_MASK $INTIF
|
| - |
|
1741 |
|
| - |
|
1742 |
view:
|
| - |
|
1743 |
name: "$INTIF"
|
| - |
|
1744 |
local-zone: "." redirect
|
| - |
|
1745 |
local-data: ". A $PRIVATE_IP"
|
| - |
|
1746 |
EOF
|
| - |
|
1747 |
|
| - |
|
1748 |
# Configuration file for blackhole unbound
|
| - |
|
1749 |
cat << EOF > /etc/unbound/unbound-blackhole.conf
|
| - |
|
1750 |
server:
|
| - |
|
1751 |
verbosity: 1
|
| - |
|
1752 |
hide-version: yes
|
| - |
|
1753 |
hide-identity: yes
|
| - |
|
1754 |
do-ip6: no
|
| - |
|
1755 |
|
| - |
|
1756 |
include: /etc/unbound/conf.d/blackhole/*
|
| - |
|
1757 |
include: /etc/unbound/conf.d/common/local-dns/*
|
| - |
|
1758 |
include: /etc/unbound/conf.d/common/local-forward/*
|
| - |
|
1759 |
EOF
|
| - |
|
1760 |
|
| - |
|
1761 |
if [ ! -e /lib/systemd/system/unbound.service.default ]
|
| - |
|
1762 |
then
|
| 1655 |
[ -e /lib/systemd/system/dnsmasq.service.default ] || cp -f /lib/systemd/system/dnsmasq.service /lib/systemd/system/dnsmasq.service.default
|
1763 |
cp -f /lib/systemd/system/unbound.service /lib/systemd/system/unbound.service.default
|
| - |
|
1764 |
fi
|
| 1656 |
$SED "s?^After=.*?After=syslog.target network-online.target chilli.service?g" /lib/systemd/system/dnsmasq.service
|
1765 |
$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/unbound -d -c /etc/unbound/unbound.conf?g" /lib/systemd/system/unbound.service
|
| 1657 |
# Create dnsmasq-blacklist, dnsmasq-whitelist and dnsmasq-blackhole unit
|
1766 |
$SED "s?^After=.*?After=syslog.target network-online.target chilli.service?g" /lib/systemd/system/unbound.service
|
| - |
|
1767 |
|
| 1658 |
for list in blacklist whitelist blackhole
|
1768 |
for list in blacklist blackhole whitelist
|
| 1659 |
do
|
1769 |
do
|
| 1660 |
cp -f /lib/systemd/system/dnsmasq.service /lib/systemd/system/dnsmasq-$list.service
|
1770 |
cp -f /lib/systemd/system/unbound.service /lib/systemd/system/unbound-$list.service
|
| 1661 |
$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/dnsmasq -C /etc/dnsmasq-$list.conf?g" /lib/systemd/system/dnsmasq-$list.service
|
1771 |
$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/unbound -d -c /etc/unbound/unbound-$list.conf?g" /lib/systemd/system/unbound-$list.service
|
| 1662 |
$SED "s?^PIDFile=.*?PIDFile=/var/run/dnsmasq-$list.pid?g" /lib/systemd/system/dnsmasq-$list.service
|
1772 |
$SED "s?^PIDFile=.*?PIDFile=/var/run/unbound-$list.pid?g" /lib/systemd/system/unbound-$list.service
|
| 1663 |
done
|
1773 |
done
|
| - |
|
1774 |
|
| - |
|
1775 |
$SED "s?^After=.*?After=syslog.target network-online.target chilli.service dnsmasq-whitelist.service?g" /lib/systemd/system/unbound-whitelist.service
|
| 1664 |
} # End dnsmasq
|
1776 |
} # End unbound
|
| 1665 |
|
1777 |
|
| 1666 |
##########################################################
|
1778 |
##########################################################
|
| 1667 |
## Function "BL" ##
|
1779 |
## Function "BL" ##
|
| 1668 |
## - copy Toulouse BL ##
|
1780 |
## - copy Toulouse BL ##
|
| 1669 |
## - adapt this BL to ALCASAR architecture ##
|
1781 |
## - adapt this BL to ALCASAR architecture ##
|
| 1670 |
## - domain names for dnsmasq-bl & dnasmasq-wl ##
|
1782 |
## - domain names for unbound-bl & unbound-wl ##
|
| 1671 |
## - URLs for E²guardian ##
|
1783 |
## - URLs for E²guardian ##
|
| 1672 |
## - IPs for NetFilter ##
|
1784 |
## - IPs for NetFilter ##
|
| 1673 |
##########################################################
|
1785 |
##########################################################
|
| 1674 |
BL ()
|
1786 |
BL ()
|
| 1675 |
{
|
1787 |
{
|
| Line 1843... |
Line 1955... |
| 1843 |
useradd --system -g gammu_smsd -s /bin/false -c "system user for gammu_smsd" gammu_smsd
|
1955 |
useradd --system -g gammu_smsd -s /bin/false -c "system user for gammu_smsd" gammu_smsd
|
| 1844 |
usermod -a -G dialout gammu_smsd
|
1956 |
usermod -a -G dialout gammu_smsd
|
| 1845 |
|
1957 |
|
| 1846 |
# Create 'gammu' database
|
1958 |
# Create 'gammu' database
|
| 1847 |
MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
|
1959 |
MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
|
| 1848 |
$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_GAMMU; GRANT ALL ON $DB_GAMMU.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd'; FLUSH PRIVILEGES;"
|
1960 |
$MYSQL "CREATE DATABASE IF NOT EXISTS $DB_GAMMU; GRANT ALL ON $DB_GAMMU.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd'; FLUSH PRIVILEGES;"
|
| 1849 |
# Add a gammu database structure
|
1961 |
# Add a gammu database structure
|
| 1850 |
mysql -u$DB_USER -p$radiuspwd $DB_GAMMU < $DIR_CONF/empty-gammu-smsd-db.sql
|
1962 |
/usr/bin/mysql -u$DB_USER -p$radiuspwd $DB_GAMMU < $DIR_CONF/empty-gammu-smsd-db.sql
|
| 1851 |
|
1963 |
|
| 1852 |
# Config file for the gammu_smsd daemon & gammu (ttyUSB0 as default com port)
|
1964 |
# Config file for the gammu_smsd daemon & gammu (ttyUSB0 as default com port)
|
| 1853 |
cat << EOF > /etc/gammurc
|
1965 |
cat << EOF > /etc/gammurc
|
| 1854 |
[gammu]
|
1966 |
[gammu]
|
| 1855 |
device = /dev/ttyUSB0
|
1967 |
device = /dev/ttyUSB0
|
| Line 1970... |
Line 2082... |
| 1970 |
|
2082 |
|
| 1971 |
# Extract acme.sh
|
2083 |
# Extract acme.sh
|
| 1972 |
tar xzf ./conf/letsencrypt-client/acme.sh-*.tar.gz -C /tmp/
|
2084 |
tar xzf ./conf/letsencrypt-client/acme.sh-*.tar.gz -C /tmp/
|
| 1973 |
|
2085 |
|
| 1974 |
pwdInstall=$(pwd)
|
2086 |
pwdInstall=$(pwd)
|
| 1975 |
cd /tmp/acme.sh-*
|
2087 |
cd /tmp/acme.sh-* || { echo "Unable to find ACME directory"; exit 1; }
|
| 1976 |
|
2088 |
|
| 1977 |
acmesh_installDir="/opt/acme.sh"
|
2089 |
acmesh_installDir="/opt/acme.sh"
|
| 1978 |
acmesh_confDir="/usr/local/etc/letsencrypt"
|
2090 |
acmesh_confDir="/usr/local/etc/letsencrypt"
|
| 1979 |
acmesh_userAgent="ALCASAR"
|
2091 |
acmesh_userAgent="ALCASAR"
|
| 1980 |
|
2092 |
|
| Line 2002... |
Line 2114... |
| 2002 |
dateIssued=
|
2114 |
dateIssued=
|
| 2003 |
dnsapi=
|
2115 |
dnsapi=
|
| 2004 |
dateNextRenewal=
|
2116 |
dateNextRenewal=
|
| 2005 |
EOF
|
2117 |
EOF
|
| 2006 |
|
2118 |
|
| 2007 |
cd $pwdInstall
|
2119 |
cd $pwdInstall || { echo "Unable to find $pwdInstall directory"; exit 1; }
|
| 2008 |
rm -rf /tmp/acme.sh-*
|
2120 |
rm -rf /tmp/acme.sh-*
|
| 2009 |
|
2121 |
|
| 2010 |
} # END letsencrypt()
|
2122 |
} # END letsencrypt()
|
| 2011 |
|
2123 |
|
| 2012 |
##################################################################
|
2124 |
##################################################################
|
| Line 2025... |
Line 2137... |
| 2025 |
chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
|
2137 |
chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
|
| 2026 |
[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
|
2138 |
[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
|
| 2027 |
$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
|
2139 |
$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
|
| 2028 |
$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
|
2140 |
$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
|
| 2029 |
# postfix banner anonymisation
|
2141 |
# postfix banner anonymisation
|
| 2030 |
$SED "s?^smtpd_banner =.*?smtpd_banner = $myhostname ESMTP?g" /etc/postfix/main.cf
|
2142 |
$SED "s?^smtpd_banner =.*?smtpd_banner = \$myhostname ESMTP?g" /etc/postfix/main.cf
|
| 2031 |
chown -R postfix:postfix /var/lib/postfix
|
2143 |
chown -R postfix:postfix /var/lib/postfix
|
| 2032 |
# sshd liste on EXTIF & INTIF
|
2144 |
# sshd liste on EXTIF & INTIF
|
| 2033 |
$SED "s?^#ListenAddress 0\.0\.0\.0.*?ListenAddress 0\.0\.0\.0?g" /etc/ssh/sshd_config
|
2145 |
$SED "s?^#ListenAddress 0\.0\.0\.0.*?ListenAddress 0\.0\.0\.0?g" /etc/ssh/sshd_config
|
| 2034 |
# sshd authorized certificate for root login
|
2146 |
# sshd authorized certificate for root login
|
| 2035 |
$SED "s?^PermitRootLogin.*?PermitRootLogin without-password?g" /etc/ssh/sshd_config
|
2147 |
$SED "s?^PermitRootLogin.*?PermitRootLogin without-password?g" /etc/ssh/sshd_config
|
| Line 2050... |
Line 2162... |
| 2050 |
echo "MULTIWAN=off" >> $CONF_FILE
|
2162 |
echo "MULTIWAN=off" >> $CONF_FILE
|
| 2051 |
echo "FAILOVER=30" >> $CONF_FILE
|
2163 |
echo "FAILOVER=30" >> $CONF_FILE
|
| 2052 |
echo "## WANx=active,@IPx/mask,GWx,Weight,MTUx" >> $CONF_FILE
|
2164 |
echo "## WANx=active,@IPx/mask,GWx,Weight,MTUx" >> $CONF_FILE
|
| 2053 |
echo "#WAN1=\"1,$EXTIF:1,192.168.2.20/24,192.168.2.6,1,1500\"" >> $CONF_FILE
|
2165 |
echo "#WAN1=\"1,$EXTIF:1,192.168.2.20/24,192.168.2.6,1,1500\"" >> $CONF_FILE
|
| 2054 |
echo "#WAN2=\"1,$EXTIF:2,192.168.3.20/24,192.168.3.1,2,1500\"" >> $CONF_FILE
|
2166 |
echo "#WAN2=\"1,$EXTIF:2,192.168.3.20/24,192.168.3.1,2,1500\"" >> $CONF_FILE
|
| - |
|
2167 |
echo "BL_PUREIP=on" >> $CONF_FILE
|
| - |
|
2168 |
echo "BL_SAFESEARCH=off" >> $CONF_FILE
|
| - |
|
2169 |
echo "WL_SAFESEARCH=off" >> $CONF_FILE
|
| 2055 |
# Prompt customisation (colors)
|
2170 |
# Prompt customisation (colors)
|
| 2056 |
[ -e /etc/bashrc.default ] || cp /etc/bashrc /etc/bashrc.default
|
2171 |
[ -e /etc/bashrc.default ] || cp /etc/bashrc /etc/bashrc.default
|
| 2057 |
cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
|
2172 |
cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
|
| 2058 |
$SED "s?^ORGANISME.*?ORGANISME=$ORGANISME?g" /etc/bashrc
|
2173 |
$SED "s?^ORGANISME.*?ORGANISME=$ORGANISME?g" /etc/bashrc
|
| 2059 |
# sudoers configuration for "apache" & "sysadmin"
|
2174 |
# sudoers configuration for "apache" & "sysadmin"
|
| Line 2066... |
Line 2181... |
| 2066 |
# Log compression
|
2181 |
# Log compression
|
| 2067 |
$SED "s?^delaycompress.*?#&?g" /etc/logrotate.conf
|
2182 |
$SED "s?^delaycompress.*?#&?g" /etc/logrotate.conf
|
| 2068 |
# actualisation des fichiers logs compressés
|
2183 |
# actualisation des fichiers logs compressés
|
| 2069 |
for dir in firewall e2guardian lighttpd
|
2184 |
for dir in firewall e2guardian lighttpd
|
| 2070 |
do
|
2185 |
do
|
| 2071 |
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 {} \;
|
2186 |
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 {} \;
|
| 2072 |
done
|
2187 |
done
|
| 2073 |
# create the alcasar-load_balancing unit
|
2188 |
# create the alcasar-load_balancing unit
|
| 2074 |
cat << EOF > /lib/systemd/system/alcasar-load_balancing.service
|
2189 |
cat << EOF > /lib/systemd/system/alcasar-load_balancing.service
|
| 2075 |
# This file is part of systemd.
|
2190 |
# This file is part of systemd.
|
| 2076 |
#
|
2191 |
#
|
| Line 2095... |
Line 2210... |
| 2095 |
[Install]
|
2210 |
[Install]
|
| 2096 |
WantedBy=multi-user.target
|
2211 |
WantedBy=multi-user.target
|
| 2097 |
EOF
|
2212 |
EOF
|
| 2098 |
/usr/bin/systemctl daemon-reload
|
2213 |
/usr/bin/systemctl daemon-reload
|
| 2099 |
# processes launched at boot time (Systemctl)
|
2214 |
# processes launched at boot time (Systemctl)
|
| 2100 |
for i in alcasar-load_balancing mysqld lighttpd php-fpm ntpd iptables dnsmasq dnsmasq-blacklist dnsmasq-whitelist dnsmasq-blackhole radiusd nfsen e2guardian freshclam ulogd-ssh ulogd-traceability ulogd-ext-access chilli fail2ban havp tinyproxy vnstat sshd
|
2215 |
for i in alcasar-load_balancing mysqld lighttpd php-fpm ntpd iptables unbound unbound-blacklist unbound-whitelist dnsmasq-whitelist unbound-blackhole radiusd nfsen e2guardian freshclam ulogd-ssh ulogd-traceability ulogd-ext-access chilli fail2ban havp tinyproxy vnstat sshd
|
| 2101 |
do
|
2216 |
do
|
| 2102 |
/usr/bin/systemctl -q enable $i.service
|
2217 |
/usr/bin/systemctl -q enable $i.service
|
| 2103 |
done
|
2218 |
done
|
| 2104 |
|
2219 |
|
| 2105 |
# disable processes at boot time (Systemctl)
|
2220 |
# disable processes at boot time (Systemctl)
|
| 2106 |
for i in ulogd gpm
|
2221 |
for i in ulogd gpm dhcpd
|
| 2107 |
do
|
2222 |
do
|
| 2108 |
/usr/bin/systemctl -q disable $i.service
|
2223 |
/usr/bin/systemctl -q disable $i.service
|
| 2109 |
done
|
2224 |
done
|
| 2110 |
|
2225 |
|
| 2111 |
# Apply French Security Agency (ANSSI) rules
|
2226 |
# Apply French Security Agency (ANSSI) rules
|
| Line 2150... |
Line 2265... |
| 2150 |
$SED "s?^GRUB_CMDLINE_LINUX_DEFAULT=\"?&vga=791 ?" /etc/default/grub
|
2265 |
$SED "s?^GRUB_CMDLINE_LINUX_DEFAULT=\"?&vga=791 ?" /etc/default/grub
|
| 2151 |
fi
|
2266 |
fi
|
| 2152 |
if [ $Lang == "fr" ]
|
2267 |
if [ $Lang == "fr" ]
|
| 2153 |
then
|
2268 |
then
|
| 2154 |
echo "Bienvenue sur ALCASAR V$VERSION" >> /etc/mageia-release
|
2269 |
echo "Bienvenue sur ALCASAR V$VERSION" >> /etc/mageia-release
|
| 2155 |
echo "Connectez-vous à l'URL 'https://alcasar.localdomain/acc'" >> /etc/mageia-release
|
2270 |
echo "Connectez-vous à l'URL 'https://$HOSTNAME.$DOMAIN/acc'" >> /etc/mageia-release
|
| 2156 |
else
|
2271 |
else
|
| 2157 |
echo "Welcome on ALCASAR V$VERSION" >> /etc/mageia-release
|
2272 |
echo "Welcome on ALCASAR V$VERSION" >> /etc/mageia-release
|
| 2158 |
echo "Connect to 'https://alcasar.localdomain/acc'" >> /etc/mageia-release
|
2273 |
echo "Connect to 'https://$HOSTNAME.$DOMAIN/acc'" >> /etc/mageia-release
|
| 2159 |
fi
|
2274 |
fi
|
| 2160 |
/usr/bin/update-grub2
|
2275 |
/usr/bin/update-grub2
|
| 2161 |
# Load and apply the previous conf file
|
2276 |
# Load and apply the previous conf file
|
| 2162 |
if [ "$mode" = "update" ]
|
2277 |
if [ "$mode" = "update" ]
|
| 2163 |
then
|
2278 |
then
|
| Line 2172... |
Line 2287... |
| 2172 |
fi
|
2287 |
fi
|
| 2173 |
rm -f /var/tmp/alcasar-conf*
|
2288 |
rm -f /var/tmp/alcasar-conf*
|
| 2174 |
chown -R root:apache $DIR_DEST_ETC/*
|
2289 |
chown -R root:apache $DIR_DEST_ETC/*
|
| 2175 |
chmod -R 660 $DIR_DEST_ETC/*
|
2290 |
chmod -R 660 $DIR_DEST_ETC/*
|
| 2176 |
chmod ug+x $DIR_DEST_ETC/digest
|
2291 |
chmod ug+x $DIR_DEST_ETC/digest
|
| 2177 |
cd $DIR_INSTALL
|
2292 |
cd $DIR_INSTALL || { echo "Unable to find $DIR_INSTALL directory"; exit 1; }
|
| 2178 |
echo ""
|
2293 |
echo ""
|
| 2179 |
echo "#############################################################################"
|
2294 |
echo "#############################################################################"
|
| 2180 |
if [ $Lang == "fr" ]
|
2295 |
if [ $Lang == "fr" ]
|
| 2181 |
then
|
2296 |
then
|
| 2182 |
echo "# Fin d'installation d'ALCASAR #"
|
2297 |
echo "# Fin d'installation d'ALCASAR #"
|
| Line 2188... |
Line 2303... |
| 2188 |
echo
|
2303 |
echo
|
| 2189 |
echo "- ALCASAR sera fonctionnel après redémarrage du système"
|
2304 |
echo "- ALCASAR sera fonctionnel après redémarrage du système"
|
| 2190 |
echo
|
2305 |
echo
|
| 2191 |
echo "- Lisez attentivement la documentation d'exploitation"
|
2306 |
echo "- Lisez attentivement la documentation d'exploitation"
|
| 2192 |
echo
|
2307 |
echo
|
| 2193 |
echo "- Le centre de controle d'ALCASAR (ACC) est à l'adresse http://alcasar.localdomain"
|
2308 |
echo "- Le centre de controle d'ALCASAR (ACC) est à l'adresse http://$HOSTNAME.$DOMAIN"
|
| 2194 |
echo
|
2309 |
echo
|
| 2195 |
echo " Appuyez sur 'Entrée' pour continuer"
|
2310 |
echo " Appuyez sur 'Entrée' pour continuer"
|
| 2196 |
else
|
2311 |
else
|
| 2197 |
echo "# End of ALCASAR install process #"
|
2312 |
echo "# End of ALCASAR install process #"
|
| 2198 |
echo "# #"
|
2313 |
echo "# #"
|
| Line 2203... |
Line 2318... |
| 2203 |
echo
|
2318 |
echo
|
| 2204 |
echo "- The system will be rebooted in order to operate ALCASAR"
|
2319 |
echo "- The system will be rebooted in order to operate ALCASAR"
|
| 2205 |
echo
|
2320 |
echo
|
| 2206 |
echo "- Read the exploitation documentation"
|
2321 |
echo "- Read the exploitation documentation"
|
| 2207 |
echo
|
2322 |
echo
|
| 2208 |
echo "- The ALCASAR Control Center (ACC) is at http://alcasar.localdomain"
|
2323 |
echo "- The ALCASAR Control Center (ACC) is at http://$HOSTNAME.$DOMAIN"
|
| 2209 |
echo
|
2324 |
echo
|
| 2210 |
echo " Hit 'Enter' to continue"
|
2325 |
echo " Hit 'Enter' to continue"
|
| 2211 |
fi
|
2326 |
fi
|
| 2212 |
sleep 2
|
2327 |
sleep 2
|
| 2213 |
if [ "$mode" == "install" ] || [ "$DEBUG_ALCASAR" == "on" ]
|
2328 |
if [ "$mode" == "install" ] || [ "$DEBUG_ALCASAR" == "on" ]
|
| 2214 |
then
|
2329 |
then
|
| 2215 |
read a
|
2330 |
read
|
| 2216 |
fi
|
2331 |
fi
|
| 2217 |
clear
|
2332 |
clear
|
| 2218 |
reboot
|
2333 |
reboot
|
| 2219 |
} # End post_install ()
|
2334 |
} # End post_install ()
|
| 2220 |
|
2335 |
|
| Line 2226... |
Line 2341... |
| 2226 |
then
|
2341 |
then
|
| 2227 |
echo "Lancez ce programme depuis le répertoire de l'archive d'ALCASAR"
|
2342 |
echo "Lancez ce programme depuis le répertoire de l'archive d'ALCASAR"
|
| 2228 |
echo "Launch this program from the ALCASAR archive directory"
|
2343 |
echo "Launch this program from the ALCASAR archive directory"
|
| 2229 |
exit 0
|
2344 |
exit 0
|
| 2230 |
fi
|
2345 |
fi
|
| 2231 |
if [[ $EUID > 0 ]]
|
2346 |
if [ $EUID -gt 0 ]
|
| 2232 |
then
|
2347 |
then
|
| 2233 |
echo "Vous devez être "root" pour installer ALCASAR (commande 'su')"
|
2348 |
echo "Vous devez être \"root\" pour installer ALCASAR (commande 'su')"
|
| 2234 |
echo "You must be "root" to install ALCASAR ('su' command)"
|
2349 |
echo "You must be \"root\" to install ALCASAR ('su' command)"
|
| 2235 |
exit 0
|
2350 |
exit 0
|
| 2236 |
fi
|
2351 |
fi
|
| 2237 |
VERSION=`cat $DIR_INSTALL/VERSION`
|
2352 |
VERSION=`cat $DIR_INSTALL/VERSION`
|
| 2238 |
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
|
2353 |
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
|
| 2239 |
nb_args=$#
|
2354 |
nb_args=$#
|
| Line 2271... |
Line 2386... |
| 2271 |
fi
|
2386 |
fi
|
| 2272 |
fi
|
2387 |
fi
|
| 2273 |
if [ $DEBUG_ALCASAR == "on" ]
|
2388 |
if [ $DEBUG_ALCASAR == "on" ]
|
| 2274 |
then
|
2389 |
then
|
| 2275 |
echo "*** 'debug' : end of cleaning ***"
|
2390 |
echo "*** 'debug' : end of cleaning ***"
|
| 2276 |
read a
|
2391 |
read
|
| 2277 |
fi
|
2392 |
fi
|
| 2278 |
# Test if manual update
|
2393 |
# Test if manual update
|
| 2279 |
if [ -e /var/tmp/alcasar-conf*.tar.gz ] && [ "$mode" == "install" ]
|
2394 |
if [ -e /var/tmp/alcasar-conf*.tar.gz ] && [ "$mode" == "install" ]
|
| 2280 |
then
|
2395 |
then
|
| 2281 |
header_install
|
2396 |
header_install
|
| Line 2311... |
Line 2426... |
| 2311 |
MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
|
2426 |
MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
|
| 2312 |
MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2`
|
2427 |
MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2`
|
| 2313 |
UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3|cut -c1`
|
2428 |
UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3|cut -c1`
|
| 2314 |
mode="update"
|
2429 |
mode="update"
|
| 2315 |
fi
|
2430 |
fi
|
| 2316 |
for func in init network ACC CA time_server init_db freeradius chilli e2guardian antivirus tinyproxy ulogd nfsen vnstat dnsmasq BL cron fail2ban gammu_smsd msec letsencrypt post_install
|
2431 |
for func in init network ACC CA time_server init_db freeradius chilli e2guardian antivirus tinyproxy ulogd nfsen vnstat dnsmasq unbound BL cron fail2ban gammu_smsd msec letsencrypt post_install
|
| 2317 |
do
|
2432 |
do
|
| 2318 |
$func
|
2433 |
$func
|
| 2319 |
if [ $DEBUG_ALCASAR == "on" ]
|
2434 |
if [ $DEBUG_ALCASAR == "on" ]
|
| 2320 |
then
|
2435 |
then
|
| 2321 |
echo "*** 'debug' : end of install '$func' ***"
|
2436 |
echo "*** 'debug' : end of install '$func' ***"
|
| 2322 |
read a
|
2437 |
read
|
| 2323 |
fi
|
2438 |
fi
|
| 2324 |
done
|
2439 |
done
|
| 2325 |
;;
|
2440 |
;;
|
| 2326 |
-u | --uninstall)
|
2441 |
-u | --uninstall)
|
| 2327 |
if [ ! -e $DIR_DEST_BIN/alcasar-uninstall.sh ]
|
2442 |
if [ ! -e $DIR_DEST_BIN/alcasar-uninstall.sh ]
|
| Line 2357... |
Line 2472... |
| 2357 |
echo "$usage"
|
2472 |
echo "$usage"
|
| 2358 |
exit 1
|
2473 |
exit 1
|
| 2359 |
;;
|
2474 |
;;
|
| 2360 |
esac
|
2475 |
esac
|
| 2361 |
# end of script
|
2476 |
# end of script
|
| 2362 |
|
- |
|