Subversion Repositories ALCASAR

Rev

Rev 307 | Rev 309 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 307 Rev 308
Line 1... Line 1...
1
#!/bin/sh
1
#!/bin/sh
2
#  $Id: alcasar.sh 307 2010-10-22 21:44:53Z richard $ 
2
#  $Id: alcasar.sh 308 2010-10-25 22:17:29Z richard $ 
3
 
3
 
4
# alcasar.sh
4
# alcasar.sh
5
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
5
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
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
 
7
 
Line 30... Line 30...
30
#	param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
30
#	param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
31
#	antivirus	: Installation havp + clamav
31
#	antivirus	: Installation havp + clamav
32
#	firewall	: Mise en place des règles du parefeu et de l'interface WEB FirewallEyes
32
#	firewall	: Mise en place des règles du parefeu et de l'interface WEB FirewallEyes
33
#	param_awstats	: Configuration de l'interface des statistiques de consultation WEB
33
#	param_awstats	: Configuration de l'interface des statistiques de consultation WEB
34
#	dnsmasq		: Configuration du serveur de noms et du serveur dhcp de secours
34
#	dnsmasq		: Configuration du serveur de noms et du serveur dhcp de secours
-
 
35
#	BL		: Configuration de la BlackList
35
#	cron		: Mise en place des exports de logs (+ chiffrement)
36
#	cron		: Mise en place des exports de logs (+ chiffrement)
36
 
37
 
37
 
38
 
38
VERSION=`cat VERSION`
39
VERSION=`cat VERSION`
39
MDV_NEEDED="2010.1"
40
MDV_NEEDED="2010.1"
Line 93... Line 94...
93
			echo "Échec"
94
			echo "Échec"
94
			echo "Le lien réseau de la carte $i n'est pas actif."
95
			echo "Le lien réseau de la carte $i n'est pas actif."
95
			echo "Réglez ce problème avant de poursuivre l'installation d'ALCASAR."
96
			echo "Réglez ce problème avant de poursuivre l'installation d'ALCASAR."
96
			exit 0
97
			exit 0
97
		fi
98
		fi
-
 
99
	echo -n "."
98
	done
100
	done
99
# On teste la présence d'un routeur par défaut (Box FAI)
101
# On teste la présence d'un routeur par défaut (Box FAI)
100
	if [ `/sbin/route -n|grep -c ^0.0.0.0` -ne "1" ] ; then
102
	if [ `/sbin/route -n|grep -c ^0.0.0.0` -ne "1" ] ; then
101
		echo "Échec"
103
		echo "Échec"
102
		echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
104
		echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
103
		echo "Réglez ce problème avant de poursuivre."
105
		echo "Réglez ce problème avant de poursuivre."
104
		exit 0
106
		exit 0
105
	fi
107
	fi
-
 
108
	echo -n "."
106
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certains BIOS et sur VirtualBox)
109
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certaines version de BIOS et de VirtualBox)
107
	if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
110
	if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
108
		echo "Échec. La configuration des cartes réseau va être corrigée."
111
		echo "Échec. La configuration des cartes réseau va être corrigée."
109
		/etc/init.d/network stop
112
		/etc/init.d/network stop
110
		mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
113
		mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
111
		$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
114
		$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
Line 115... Line 118...
115
		echo "Configuration corrigée"
118
		echo "Configuration corrigée"
116
		sleep 2
119
		sleep 2
117
		echo "Vous pouvez relancer ce script (sh alcasar.sh -install)."
120
		echo "Vous pouvez relancer ce script (sh alcasar.sh -install)."
118
		exit 0
121
		exit 0
119
	fi
122
	fi
-
 
123
	echo -n "."
-
 
124
# On test le lien vers le routeur par default
-
 
125
	IP_GW=`ip route list|grep ^default|cut -d" " -f3`
-
 
126
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $IP_GW|grep response|cut -d" " -f2`
-
 
127
	if [[ $(expr $arp_reply) -eq 0 ]]
-
 
128
	       	then
-
 
129
		echo "Échec"
-
 
130
		echo "Le routeur de site ou la Box Internet ($IP_GW) ne répond pas."
-
 
131
		echo "Réglez ce problème avant de poursuivre."
-
 
132
		exit 0
-
 
133
	fi
-
 
134
	echo -n "."
120
# On teste la connectivité Internet
135
# On test la connectivité Internet
121
	rm -rf /tmp/con_ok.html
136
	rm -rf /tmp/con_ok.html
122
	/usr/bin/curl www.google.fr -# -o /tmp/con_ok.html
137
	/usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
123
	if [ ! -e /tmp/con_ok.html ]
138
	if [ ! -e /tmp/con_ok.html ]
124
	then
139
	then
125
		echo "La tentative de connexion vers Internet a échoué (google.fr)."
140
		echo "La tentative de connexion vers Internet a échoué (google.fr)."
126
		echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
141
		echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
127
		echo "Vérifiez la validité des adresses DNS."
142
		echo "Vérifiez la validité des adresses DNS."
128
		exit 0
143
		exit 0
129
	fi
144
	fi
130
	echo "Tests de connectivité Internet corrects"
-
 
131
	rm -rf /tmp/con_ok.html
145
	rm -rf /tmp/con_ok.html
-
 
146
	echo ". : ok"
132
} # end of testing
147
} # end of testing
133
 
148
 
134
##################################################################
149
##################################################################
135
##			Fonction INIT				##
150
##			Fonction INIT				##
136
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
151
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
Line 140... Line 155...
140
##################################################################
155
##################################################################
141
init ()
156
init ()
142
{
157
{
143
	if [ ! "$mode" = "update" ]
158
	if [ ! "$mode" = "update" ]
144
	then
159
	then
145
		header_install
-
 
146
# On affecte le nom d'organisme
160
# On affecte le nom d'organisme
147
		header_install
-
 
148
		ORGANISME=!
161
		ORGANISME=!
149
		PTN='^[a-zA-Z0-9-]*$'
162
		PTN='^[a-zA-Z0-9-]*$'
150
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
163
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
151
                do
164
                do
152
			echo -n "Entrez le nom de votre organisme : "
165
			echo -n "Entrez le nom de votre organisme : "
Line 197... Line 210...
197
	urpmi --auto $PACKAGES 
210
	urpmi --auto $PACKAGES 
198
# On empêche les mises à jour de coova-chilli et freeradius par le biais des dépôts
211
# On empêche les mises à jour de coova-chilli et freeradius par le biais des dépôts
199
	echo -n "/^coova/" >> /etc/urpmi/skip.list
212
	echo -n "/^coova/" >> /etc/urpmi/skip.list
200
	echo -n "/^freeradius/" >> /etc/urpmi/skip.list
213
	echo -n "/^freeradius/" >> /etc/urpmi/skip.list
201
# On supprime les paquetages, les services et les utilisateurs inutiles
214
# On supprime les paquetages, les services et les utilisateurs inutiles
202
	for rm_rpm in avahi mandi shorewall libc-icap0 cyrus-sasl
215
	for rm_rpm in dhcp-server avahi mandi shorewall libc-icap0 cyrus-sasl
203
	do
216
	do
204
		/usr/sbin/urpme --auto $rm_rpm --auto-orphans
217
		/usr/sbin/urpme --auto $rm_rpm --auto-orphans
205
	done
218
	done
206
	for svc in alsa sound dm atd dc_server
219
	for svc in alsa sound dm atd dc_server
207
	do
220
	do
Line 473... Line 486...
473
</body>
486
</body>
474
</html>
487
</html>
475
EOF
488
EOF
476
	echo "- URL d'accès au centre de gestion : https://$PRIVATE_IP" >> $FIC_PARAM
489
	echo "- URL d'accès au centre de gestion : https://$PRIVATE_IP" >> $FIC_PARAM
477
# On crée le VirtualHost pour l'accès au port 80 (redirection après filtrage)
490
# On crée le VirtualHost pour l'accès au port 80 (redirection après filtrage)
-
 
491
# On tente d'intercepter toute les URLs (réécriture) 
478
	FIC_VIRTUAL=`find /etc/httpd/conf -type f -name *default_vhosts*`
492
	FIC_VIRTUAL=`find /etc/httpd/conf -type f -name *default_vhosts*`
479
	[ -e /etc/httpd/conf/vhosts.default ]  || cp $FIC_VIRTUAL /etc/httpd/conf/vhosts.default
493
	[ -e /etc/httpd/conf/vhosts.default ]  || cp $FIC_VIRTUAL /etc/httpd/conf/vhosts.default
480
	cat <<EOF > $FIC_VIRTUAL
494
	cat <<EOF > $FIC_VIRTUAL
481
NameVirtualHost *:80
495
NameVirtualHost *:80
482
<VirtualHost *:80>
496
<VirtualHost *:80>
483
ServerName $HOSTNAME
497
ServerName $HOSTNAME
484
DocumentRoot $DIR_WEB/redirect
498
DocumentRoot $DIR_WEB/redirect
-
 
499
RewriteEngine on
-
 
500
RewriteRule ^(.*)$ /index.php [L]
485
</VirtualHost>
501
</VirtualHost>
486
EOF
502
EOF
487
# Définition du premier compte lié au profil 'admin'
503
# Définition du premier compte lié au profil 'admin'
488
	if [ "$mode" = "install" ]
504
	if [ "$mode" = "install" ]
489
	then
505
	then
Line 901... Line 917...
901
	touch /etc/dansguardian/lists/bannedextensionlist
917
	touch /etc/dansguardian/lists/bannedextensionlist
902
	touch /etc/dansguardian/lists/bannedmimetypelist
918
	touch /etc/dansguardian/lists/bannedmimetypelist
903
# on vide la liste des @IP du Lan ne subissant pas le filtrage WEB
919
# on vide la liste des @IP du Lan ne subissant pas le filtrage WEB
904
	[ -e /etc/dansguardian/lists/exceptioniplist.default ] || mv /etc/dansguardian/lists/exceptioniplist /etc/dansguardian/lists/exceptioniplist.default
920
	[ -e /etc/dansguardian/lists/exceptioniplist.default ] || mv /etc/dansguardian/lists/exceptioniplist /etc/dansguardian/lists/exceptioniplist.default
905
	touch /etc/dansguardian/lists/exceptioniplist
921
	touch /etc/dansguardian/lists/exceptioniplist
906
# on copie les fichiers de la BL de toulouse
-
 
907
	[ -d /etc/dansguardian/lists/blacklists ] && mv /etc/dansguardian/lists/blacklists /etc/dansguardian/lists/blacklists.default
-
 
908
	tar zxvf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ 2>&1 >/dev/null
-
 
909
	cp -f $DIR_CONF/VERSION-BL $DIR_WEB/
-
 
910
	chown apache:apache $DIR_WEB/VERSION-BL
-
 
911
# on crée la BL secondaire
-
 
912
	mkdir /etc/dansguardian/lists/blacklists/ossi
-
 
913
	touch /etc/dansguardian/lists/blacklists/ossi/domains
-
 
914
	touch /etc/dansguardian/lists/blacklists/ossi/urls
-
 
915
# On crée une WhiteList vide
-
 
916
	[ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
-
 
917
	[ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
-
 
918
	touch /etc/dansguardian/lists/exceptionsitelist
-
 
919
	touch /etc/dansguardian/lists/exceptionurllist
-
 
920
# on configure le filtrage de site WEB
922
# on configure le filtrage de domaine
921
	[ -e /etc/dansguardian/lists/bannedsitelist.default ] || cp /etc/dansguardian/lists/bannedsitelist /etc/dansguardian/lists/bannedsitelist.default
923
	[ -e /etc/dansguardian/lists/bannedsitelist.default ] || cp /etc/dansguardian/lists/bannedsitelist /etc/dansguardian/lists/bannedsitelist.default
922
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedsitelist # (on commente ce qui ne l'est pas)
924
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedsitelist # (on commente ce qui ne l'est pas)
923
# on bloque les sites ne possédant pas de nom de domaine (ex: http://12.13.14.15)
925
# on bloque les sites ne possédant pas de nom de domaine (ex: http://12.13.14.15)
924
	$SED "s?^#\*ip?\*ip?g" /etc/dansguardian/lists/bannedsitelist
926
	$SED "s?^#\*ip?\*ip?g" /etc/dansguardian/lists/bannedsitelist
925
# on bloque le ssl sur port 80
927
# on bloque le ssl sur port 80
926
	$SED "s?^#\*\*s?\*\*s?g" /etc/dansguardian/lists/bannedsitelist
928
	$SED "s?^#\*\*s?\*\*s?g" /etc/dansguardian/lists/bannedsitelist
927
# (pris en compte par dnsmasq)	cat $DIR_CONF/bannedsitelist >> /etc/dansguardian/lists/bannedsitelist
-
 
928
# on configure le filtrage d'url
929
# on configure le filtrage d'url
929
[ -e /etc/dansguardian/lists/bannedurllist.default ] || cp /etc/dansguardian/lists/bannedurllist /etc/dansguardian/lists/bannedurllist.default
930
[ -e /etc/dansguardian/lists/bannedurllist.default ] || cp /etc/dansguardian/lists/bannedurllist /etc/dansguardian/lists/bannedurllist.default
930
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedurllist # (on commente ce qui ne l'est pas)
931
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedurllist # (on commente ce qui ne l'est pas)
931
	cat $DIR_CONF/bannedurllist >> /etc/dansguardian/lists/bannedurllist
-
 
932
	chown -R dansguardian:apache /etc/dansguardian/
932
	chown -R dansguardian:apache /etc/dansguardian/
933
	chmod -R g+rw /etc/dansguardian
933
	chmod -R g+rw /etc/dansguardian
934
} # End of param_dansguardian ()
934
} # End of param_dansguardian ()
935
 
935
 
936
##################################################################
936
##################################################################
Line 1065... Line 1065...
1065
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1065
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1066
 
1066
 
1067
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1067
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1068
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.10.20,255.255.255.0,45m
1068
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.10.20,255.255.255.0,45m
1069
EOF
1069
EOF
-
 
1070
} # End dnsmasq
-
 
1071
 
-
 
1072
##########################################################
-
 
1073
##		Fonction BL (BlackList)			##
-
 
1074
##########################################################
-
 
1075
BL ()
-
 
1076
{
-
 
1077
# on copie par défaut la BL de toulouse embarqués dans l'archive d'ALCASAR
-
 
1078
	rm -rf /etc/dansguardian/lists/blacklists
-
 
1079
	tar zxf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ 2>&1 >/dev/null
-
 
1080
	cp -f $DIR_CONF/VERSION-BL $DIR_WEB/
-
 
1081
	chown apache:apache $DIR_WEB/VERSION-BL
-
 
1082
# on crée le répertoire de la BL secondaire
-
 
1083
	mkdir /etc/dansguardian/lists/blacklists/ossi
-
 
1084
	touch /etc/dansguardian/lists/blacklists/ossi/domains
-
 
1085
	touch /etc/dansguardian/lists/blacklists/ossi/urls
-
 
1086
# On crée le répertoire de la WhiteList
-
 
1087
	[ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
-
 
1088
	[ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
-
 
1089
	touch /etc/dansguardian/lists/exceptionsitelist
-
 
1090
	touch /etc/dansguardian/lists/exceptionurllist
1070
# On crée la structure du DNS-blackhole :
1091
# On crée la structure du DNS-blackhole :
1071
#	- import des domaines de la BL Toulouse dans /usr/local/etc/alcasar-dns-availabled (1 fichier par domaine)
-
 
1072
#	- lien symbolique de ces fichiers dans /usr/local/etc/alcasar-dns-enabled pour activation/désactivation
-
 
1073
  	mkdir /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1092
  	mkdir /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1074
	chown -R 770 /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1093
	chown -R 770 /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1075
	chown -R root:apache /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1094
	chown -R root:apache /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
-
 
1095
# On fait pointer le black-hole sur une page interne
1076
	$SED "s?^IP_RETOUR=.*?IP_RETOUR=\"$PRIVATE_IP\"?g" /usr/local/bin/alcasar-dnsfilter-import.sh
1096
	$SED "s?^IP_RETOUR=.*?IP_RETOUR=\"$PRIVATE_IP\"?g" $DIR_DEST_SBIN/alcasar-bl.sh
1077
	/usr/local/bin/alcasar-dnsfilter-import.sh
1097
	ln -s $DIR_WEB/redirect/index-access-deny.php $DIR_WEB/index.php
1078
	/usr/local/bin/alcasar-dnsfilter-activate.sh
1098
# On récupère la dernière version de la BL Toulouse
1079
} # End dnsmasq
1099
	$DIR_DEST_SBIN/alcasar-bl.sh -download
-
 
1100
}
-
 
1101
 
-
 
1102
 
-
 
1103
 
-
 
1104
 
1080
 
1105
 
1081
##########################################################
1106
##########################################################
1082
##		Fonction cron				##
1107
##		Fonction cron				##
1083
## - Mise en place des différents fichiers de cron	##
1108
## - Mise en place des différents fichiers de cron	##
1084
##########################################################
1109
##########################################################
Line 1278... Line 1303...
1278
		;;
1303
		;;
1279
	-i | --install)
1304
	-i | --install)
1280
		header_install
1305
		header_install
1281
		testing
1306
		testing
1282
# On teste la présence d'une version déjà installée
1307
# On teste la présence d'une version déjà installée
1283
		header_install
-
 
1284
		if [ -e $DIR_WEB/VERSION ]
1308
		if [ -e $DIR_WEB/VERSION ]
1285
		then
1309
		then
1286
			echo -n "La version "; echo -n `cat $DIR_WEB/VERSION`; echo " d'ALCASAR est déjà installée";
1310
			echo -n "La version "; echo -n `cat $DIR_WEB/VERSION`; echo " d'ALCASAR est déjà installée";
1287
			response=0
1311
			response=0
1288
			PTN='^[oOnN]$'
1312
			PTN='^[oOnN]$'
Line 1328... Line 1352...
1328
			hostname `cat $DIR_CONF/hostname`
1352
			hostname `cat $DIR_CONF/hostname`
1329
			mode="update"
1353
			mode="update"
1330
		else
1354
		else
1331
			mode="install"
1355
			mode="install"
1332
		fi
1356
		fi
1333
		for func in init network gestion AC init_db param_radius param_web_radius param_chilli param_squid param_dansguardian antivirus firewall param_awstats param_dnsmasq cron post_install
1357
		for func in init network gestion AC init_db param_radius param_web_radius param_chilli param_squid param_dansguardian antivirus firewall param_awstats param_dnsmasq BL cron post_install
1334
 
1358
 
1335
		do
1359
		do
1336
			$func
1360
			$func
1337
 echo "*** 'debug' : end of function $func ***"; read a
1361
 echo "*** 'debug' : end of function $func ***"; read a
1338
		done
1362
		done