| Line 1... | 
            Line 1... | 
          
          
            | 1 | 
            #!/bin/bash
  | 
            1 | 
            #!/bin/bash
  | 
          
          
            | 2 | 
            #  $Id: alcasar.sh 2947 2021-04-21 16:36:52Z rexy $
  | 
            2 | 
            #  $Id: alcasar.sh 2956 2021-05-24 19:57:17Z rexy $
  | 
          
          
            | 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 598... | 
            Line 598... | 
          
          
            | 598 | 
            		echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $CONF_FILE
  | 
            598 | 
            		echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $CONF_FILE
  | 
          
          
            | 599 | 
            		echo "GW=$PUBLIC_GATEWAY" >> $CONF_FILE
  | 
            599 | 
            		echo "GW=$PUBLIC_GATEWAY" >> $CONF_FILE
  | 
          
          
            | 600 | 
            	fi
  | 
            600 | 
            	fi
  | 
          
          
            | 601 | 
            	echo "DNS1=$DNS1" >> $CONF_FILE
  | 
            601 | 
            	echo "DNS1=$DNS1" >> $CONF_FILE
  | 
          
          
            | 602 | 
            	echo "DNS2=$DNS2" >> $CONF_FILE
  | 
            602 | 
            	echo "DNS2=$DNS2" >> $CONF_FILE
  | 
          
          
            | - | 
               | 
            603 | 
            	echo "PROXY=off" >> $CONF_FILE
  | 
          
          
            | - | 
               | 
            604 | 
            	echo "PROXY_IP=\"192.168.0.100:80\"" >> $CONF_FILE
  | 
          
          
            | - | 
               | 
            605 | 
            	echo "PUBLIC_WEIGHT=1" >> $CONF_FILE
  | 
          
          
            | 603 | 
            	echo "PUBLIC_MTU=$MTU" >> $CONF_FILE
  | 
            606 | 
            	echo "PUBLIC_MTU=$MTU" >> $CONF_FILE
  | 
          
          
            | 604 | 
            	echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $CONF_FILE
  | 
            607 | 
            	echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $CONF_FILE
  | 
          
          
            | 605 | 
            	echo "DHCP=on" >> $CONF_FILE
  | 
            608 | 
            	echo "DHCP=on" >> $CONF_FILE
  | 
          
          
            | 606 | 
            	echo "EXT_DHCP_IP=" >> $CONF_FILE
  | 
            609 | 
            	echo "EXT_DHCP_IP=" >> $CONF_FILE
  | 
          
          
            | 607 | 
            	echo "RELAY_DHCP_IP=" >> $CONF_FILE
  | 
            610 | 
            	echo "RELAY_DHCP_IP=" >> $CONF_FILE
  | 
          
          
            | Line 740... | 
            Line 743... | 
          
          
            | 740 | 
            # modify iptables service files (start with "alcasar-iptables.sh" and stop with flush)
  | 
            743 | 
            # modify iptables service files (start with "alcasar-iptables.sh" and stop with flush)
  | 
          
          
            | 741 | 
            	cp /lib/systemd/system/iptables.service /etc/systemd/system/iptables.service
  | 
            744 | 
            	cp /lib/systemd/system/iptables.service /etc/systemd/system/iptables.service
  | 
          
          
            | 742 | 
            	$SED 's/ExecStart=\/usr\/libexec\/iptables.init start/ExecStart=\/usr\/local\/bin\/alcasar-iptables.sh/' /etc/systemd/system/iptables.service
  | 
            745 | 
            	$SED 's/ExecStart=\/usr\/libexec\/iptables.init start/ExecStart=\/usr\/local\/bin\/alcasar-iptables.sh/' /etc/systemd/system/iptables.service
  | 
          
          
            | 743 | 
            	[ -e /usr/libexec/iptables.init.default ] || cp /usr/libexec/iptables.init /usr/libexec/iptables.init.default
  | 
            746 | 
            	[ -e /usr/libexec/iptables.init.default ] || cp /usr/libexec/iptables.init /usr/libexec/iptables.init.default
  | 
          
          
            | 744 | 
            	$SED "s?\[ -f \$IPTABLES_CONFIG \] .*?#&?" /usr/libexec/iptables.init # comment the test (flush all rules & policies)
  | 
            747 | 
            	$SED "s?\[ -f \$IPTABLES_CONFIG \] .*?#&?" /usr/libexec/iptables.init # comment the test (flush all rules & policies)
  | 
          
          
            | - | 
               | 
            748 | 
            # create the alcasar-network unit
  | 
          
          
            | - | 
               | 
            749 | 
            	cat << EOF > /etc/systemd/system/alcasar-network.service
  | 
          
          
            | - | 
               | 
            750 | 
            #  This file is part of systemd.
  | 
          
          
            | 745 | 
            #
  | 
            751 | 
            #
  | 
          
          
            | - | 
               | 
            752 | 
            #  systemd is free software; you can redistribute it and/or modify it
  | 
          
          
            | - | 
               | 
            753 | 
            #  under the terms of the GNU General Public License as published by
  | 
          
          
            | - | 
               | 
            754 | 
            #  the Free Software Foundation; either version 2 of the License, or
  | 
          
          
            | - | 
               | 
            755 | 
            #  (at your option) any later version.
  | 
          
          
            | - | 
               | 
            756 | 
             
  | 
          
          
            | - | 
               | 
            757 | 
            # This unit starts alcasar-network.sh script.
  | 
          
          
            | - | 
               | 
            758 | 
            [Unit]
  | 
          
          
            | - | 
               | 
            759 | 
            Description=alcasar-network.sh execution
  | 
          
          
            | - | 
               | 
            760 | 
            After=network.target iptables.service
  | 
          
          
            | - | 
               | 
            761 | 
             
  | 
          
          
            | - | 
               | 
            762 | 
            [Service]
  | 
          
          
            | - | 
               | 
            763 | 
            Type=oneshot
  | 
          
          
            | - | 
               | 
            764 | 
            RemainAfterExit=yes
  | 
          
          
            | - | 
               | 
            765 | 
            ExecStart=$DIR_DEST_BIN/alcasar-network.sh
  | 
          
          
            | - | 
               | 
            766 | 
            ExecStop=$DIR_DEST_BIN/alcasar-network.sh
  | 
          
          
            | - | 
               | 
            767 | 
            TimeoutSec=0
  | 
          
          
            | - | 
               | 
            768 | 
             
  | 
          
          
            | - | 
               | 
            769 | 
            [Install]
  | 
          
          
            | - | 
               | 
            770 | 
            WantedBy=multi-user.target
  | 
          
          
            | - | 
               | 
            771 | 
            EOF
  | 
          
          
            | - | 
               | 
            772 | 
            	/usr/bin/systemctl daemon-reload
  | 
          
          
            | - | 
               | 
            773 | 
             
  | 
          
          
            | 746 | 
            # the script "$DIR_DEST_BIN/alcasar-iptables.sh" is launched at the end in order to allow update via ssh
  | 
            774 | 
            # the script "$DIR_DEST_BIN/alcasar-iptables.sh" is started at the end of this script in order not to cut network flow in case of using ssh
  | 
          
          
            | 747 | 
            } # End of network()
  | 
            775 | 
            } # End of network()
  | 
          
          
            | 748 | 
             
  | 
            776 | 
             
  | 
          
          
            | 749 | 
            ##################################################################
  | 
            777 | 
            ##################################################################
  | 
          
          
            | 750 | 
            ##                      Fonction "CA"                           ##
  | 
            778 | 
            ##                      Fonction "CA"                           ##
  | 
          
          
            | 751 | 
            ## - Creating the CA and the server certificate (lighttpd)      ##
  | 
            779 | 
            ## - Creating the CA and the server certificate (lighttpd)      ##
  | 
          
          
            | Line 2162... | 
            Line 2190... | 
          
          
            | 2162 | 
            	echo "LDAP_PASSWORD=" >> $CONF_FILE
  | 
            2190 | 
            	echo "LDAP_PASSWORD=" >> $CONF_FILE
  | 
          
          
            | 2163 | 
            	echo "LDAP_SSL=on" >> $CONF_FILE
  | 
            2191 | 
            	echo "LDAP_SSL=on" >> $CONF_FILE
  | 
          
          
            | 2164 | 
            	echo "LDAP_CERT_REQUIRED=" >> $CONF_FILE
  | 
            2192 | 
            	echo "LDAP_CERT_REQUIRED=" >> $CONF_FILE
  | 
          
          
            | 2165 | 
            	echo "SMS=off" >> $CONF_FILE
  | 
            2193 | 
            	echo "SMS=off" >> $CONF_FILE
  | 
          
          
            | 2166 | 
            	echo "SMS_NUM=" >> $CONF_FILE
  | 
            2194 | 
            	echo "SMS_NUM=" >> $CONF_FILE
  | 
          
          
            | - | 
               | 
            2195 | 
            	echo "## MULTIWAN : WANx=@IPx,Weightx" >> $CONF_FILE
  | 
          
          
            | 2167 | 
            	echo "MULTIWAN=off" >> $CONF_FILE
  | 
            2196 | 
            	echo "MULTIWAN=off" >> $CONF_FILE
  | 
          
          
            | 2168 | 
            	echo "FAILOVER=30" >> $CONF_FILE
  | 
            - | 
               | 
          
          
            | 2169 | 
            	echo "## WANx=active,@IPx/mask,GWx,Weight,MTUx" >> $CONF_FILE
  | 
            - | 
               | 
          
          
            | 2170 | 
            	echo "#WAN1=\"1,$EXTIF:1,192.168.2.20/24,192.168.2.6,1,1500\"" >> $CONF_FILE
  | 
            2197 | 
            	echo "#WAN1=\"192.168.0.250,1\"" >> $CONF_FILE
  | 
          
          
            | 2171 | 
            	echo "#WAN2=\"1,$EXTIF:2,192.168.3.20/24,192.168.3.1,2,1500\"" >> $CONF_FILE
  | 
            2198 | 
            	echo "#WAN2=\"192.168.0.251,1\"" >> $CONF_FILE
  | 
          
          
            | 2172 | 
            	echo "BL_PUREIP=on" >> $CONF_FILE
  | 
            2199 | 
            	echo "BL_PUREIP=on" >> $CONF_FILE
  | 
          
          
            | 2173 | 
            	echo "BL_SAFESEARCH=off" >> $CONF_FILE
  | 
            2200 | 
            	echo "BL_SAFESEARCH=off" >> $CONF_FILE
  | 
          
          
            | 2174 | 
            	echo "WL_SAFESEARCH=off" >> $CONF_FILE
  | 
            2201 | 
            	echo "WL_SAFESEARCH=off" >> $CONF_FILE
  | 
          
          
            | 2175 | 
            	echo "IOT_CAPTURE=off" >> $CONF_FILE
  | 
            2202 | 
            	echo "IOT_CAPTURE=off" >> $CONF_FILE
  | 
          
          
            | 2176 | 
            	echo "WIFI4EU=off" >> $CONF_FILE
  | 
            2203 | 
            	echo "WIFI4EU=off" >> $CONF_FILE
  | 
          
          
            | Line 2192... | 
            Line 2219... | 
          
          
            | 2192 | 
            # actualisation des fichiers logs compressés
  | 
            2219 | 
            # actualisation des fichiers logs compressés
  | 
          
          
            | 2193 | 
            	for dir in firewall e2guardian lighttpd
  | 
            2220 | 
            	for dir in firewall e2guardian lighttpd
  | 
          
          
            | 2194 | 
            	do
  | 
            2221 | 
            	do
  | 
          
          
            | 2195 | 
            		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 {} \;
  | 
            2222 | 
            		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 {} \;
  | 
          
          
            | 2196 | 
            	done
  | 
            2223 | 
            	done
  | 
          
          
            | 2197 | 
            # create the alcasar-load_balancing unit
  | 
            - | 
               | 
          
          
            | 2198 | 
            	cat << EOF > /etc/systemd/system/alcasar-load_balancing.service
  | 
            - | 
               | 
          
          
            | 2199 | 
            #  This file is part of systemd.
  | 
            - | 
               | 
          
          
            | 2200 | 
            #
  | 
            - | 
               | 
          
          
            | 2201 | 
            #  systemd is free software; you can redistribute it and/or modify it
  | 
            - | 
               | 
          
          
            | 2202 | 
            #  under the terms of the GNU General Public License as published by
  | 
            - | 
               | 
          
          
            | 2203 | 
            #  the Free Software Foundation; either version 2 of the License, or
  | 
            - | 
               | 
          
          
            | 2204 | 
            #  (at your option) any later version.
  | 
            - | 
               | 
          
          
            | 2205 | 
             
  | 
            - | 
               | 
          
          
            | 2206 | 
            # This unit lauches alcasar-load-balancing.sh script.
  | 
            - | 
               | 
          
          
            | 2207 | 
            [Unit]
  | 
            - | 
               | 
          
          
            | 2208 | 
            Description=alcasar-load_balancing.sh execution
  | 
            - | 
               | 
          
          
            | 2209 | 
            After=network.target iptables.service
  | 
            - | 
               | 
          
          
            | 2210 | 
             
  | 
            - | 
               | 
          
          
            | 2211 | 
            [Service]
  | 
            - | 
               | 
          
          
            | 2212 | 
            Type=oneshot
  | 
            - | 
               | 
          
          
            | 2213 | 
            RemainAfterExit=yes
  | 
            - | 
               | 
          
          
            | 2214 | 
            ExecStart=$DIR_DEST_BIN/alcasar-load_balancing.sh start
  | 
            - | 
               | 
          
          
            | 2215 | 
            ExecStop=$DIR_DEST_BIN/alcasar-load_balancing.sh stop
  | 
            - | 
               | 
          
          
            | 2216 | 
            TimeoutSec=0
  | 
            - | 
               | 
          
          
            | 2217 | 
             
  | 
            - | 
               | 
          
          
            | 2218 | 
            [Install]
  | 
            - | 
               | 
          
          
            | 2219 | 
            WantedBy=multi-user.target
  | 
            - | 
               | 
          
          
            | 2220 | 
            EOF
  | 
            - | 
               | 
          
          
            | 2221 | 
            	/usr/bin/systemctl daemon-reload
  | 
            2224 | 
            	/usr/bin/systemctl daemon-reload
  | 
          
          
            | 2222 | 
            # processes launched at boot time (Systemctl)
  | 
            2225 | 
            # processes started at boot time (Systemctl)
  | 
          
          
            | 2223 | 
            	for i in alcasar-load_balancing mysqld lighttpd php-fpm ntpd iptables unbound unbound-blacklist unbound-whitelist dnsmasq-whitelist unbound-blackhole radiusd nfcapd e2guardian clamav-daemon clamav-freshclam ulogd-ssh ulogd-traceability ulogd-ext-access chilli fail2ban vnstat sshd
  | 
            2226 | 
            	for i in alcasar-network mysqld lighttpd php-fpm ntpd iptables unbound unbound-blacklist unbound-whitelist dnsmasq-whitelist unbound-blackhole radiusd nfcapd e2guardian clamav-daemon clamav-freshclam ulogd-ssh ulogd-traceability ulogd-ext-access chilli fail2ban vnstat sshd
  | 
          
          
            | 2224 | 
            	do
  | 
            2227 | 
            	do
  | 
          
          
            | 2225 | 
            		/usr/bin/systemctl -q enable $i.service
  | 
            2228 | 
            		/usr/bin/systemctl -q enable $i.service
  | 
          
          
            | 2226 | 
            	done
  | 
            2229 | 
            	done
  | 
          
          
            | 2227 | 
             
  | 
            2230 | 
             
  | 
          
          
            | 2228 | 
            # disable processes at boot time (Systemctl)
  | 
            2231 | 
            # disable processes at boot time (Systemctl)
  | 
          
          
            | Line 2386... | 
            Line 2389... | 
          
          
            | 2386 | 
            				echo "*** 'debug' : end of function '$func' ***"
  | 
            2389 | 
            				echo "*** 'debug' : end of function '$func' ***"
  | 
          
          
            | 2387 | 
            				read
  | 
            2390 | 
            				read
  | 
          
          
            | 2388 | 
            			fi
  | 
            2391 | 
            			fi
  | 
          
          
            | 2389 | 
            		done
  | 
            2392 | 
            		done
  | 
          
          
            | 2390 | 
            # RPMs install
  | 
            2393 | 
            # RPMs install
  | 
          
          
            | 2391 | 
            			if [ "$mode" == "update" ] # to avoid updating unbound during the V5.3.3 update (to be removed after this version)
  | 
            - | 
               | 
          
          
            | 2392 | 
            			then
  | 
            - | 
               | 
          
          
            | 2393 | 
            				echo "/^unbound/" >> /etc/urpmi/skip.list
  | 
            - | 
               | 
          
          
            | 2394 | 
            			fi
  | 
            - | 
               | 
          
          
            | 2395 | 
            		$DIR_SCRIPTS/alcasar-rpm.sh
  | 
            2394 | 
            		$DIR_SCRIPTS/alcasar-rpm.sh
  | 
          
          
            | 2396 | 
            		if [ "$?" != "0" ]
  | 
            2395 | 
            		if [ "$?" != "0" ]
  | 
          
          
            | 2397 | 
            		then
  | 
            2396 | 
            		then
  | 
          
          
            | 2398 | 
            			exit 0
  | 
            2397 | 
            			exit 0
  | 
          
          
            | 2399 | 
            		fi
  | 
            2398 | 
            		fi
  | 
          
          
            | Line 2426... | 
            Line 2425... | 
          
          
            | 2426 | 
            				MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
  | 
            2425 | 
            				MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
  | 
          
          
            | 2427 | 
            				MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2`
  | 
            2426 | 
            				MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2`
  | 
          
          
            | 2428 | 
            				UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3|cut -c1`
  | 
            2427 | 
            				UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3|cut -c1`
  | 
          
          
            | 2429 | 
            				if [ $Lang == "fr" ]
  | 
            2428 | 
            				if [ $Lang == "fr" ]
  | 
          
          
            | 2430 | 
            					then echo "Le fichier de configuration d'une version $MAJ_PREVIOUS_VERSION.$MIN_PREVIOUS_VERSION.$UPD_PREVIOUS_VERSION a été trouvé";
  | 
            2429 | 
            					then echo "Le fichier de configuration d'une version $MAJ_PREVIOUS_VERSION.$MIN_PREVIOUS_VERSION.$UPD_PREVIOUS_VERSION a été trouvé";
  | 
          
          
            | 2431 | 
            					else echo "The configuration file of an old version has been found";
  | 
            2430 | 
            					else echo "The configuration file of a version $MAJ_PREVIOUS_VERSION.$MIN_PREVIOUS_VERSION.$UPD_PREVIOUS_VERSION has been found";
  | 
          
          
            | 2432 | 
            				fi
  | 
            2431 | 
            				fi
  | 
          
          
            | 2433 | 
            				response=0
  | 
            2432 | 
            				response=0
  | 
          
          
            | 2434 | 
            				PTN='^[oOnNyY]?$'
  | 
            2433 | 
            				PTN='^[oOnNyY]?$'
  | 
          
          
            | 2435 | 
            				until [[ "$response" =~ $PTN ]]
  | 
            2434 | 
            				until [[ "$response" =~ $PTN ]]
  | 
          
          
            | 2436 | 
            				do
  | 
            2435 | 
            				do
  |