Subversion Repositories ALCASAR

Rev

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

Rev 383 Rev 384
Line 1... Line 1...
1
#!/bin/sh
1
#!/bin/sh
2
#  $Id: alcasar.sh 383 2010-12-27 20:31:01Z franck $ 
2
#  $Id: alcasar.sh 384 2010-12-27 23:25:59Z 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 64... Line 64...
64
SQUID_PORT="3128"				# Port d'écoute du proxy Squid
64
SQUID_PORT="3128"				# Port d'écoute du proxy Squid
65
UAMPORT="3990"
65
UAMPORT="3990"
66
# ****** Paths - chemin des commandes *******
66
# ****** Paths - chemin des commandes *******
67
SED="/bin/sed -i"
67
SED="/bin/sed -i"
68
# ****** Alcasar needed RPMS - paquetages nécessaires au fonctionnement d'Alcasar ******
68
# ****** Alcasar needed RPMS - paquetages nécessaires au fonctionnement d'Alcasar ******
69
PACKAGES="freeradius freeradius-mysql freeradius-ldap freeradius-web apache-mpm-prefork apache-mod_ssl apache-mod_php squid dansguardian postfix MySQL logwatch ntp awstats mondo cdrecord buffer vim-enhanced bind-utils wget arpscan ulogd openssh-server php-xml coova-chilli pam_ccreds rng-utils lsb-release dnsmasq clamav sudo cronie-anacron"
69
PACKAGES="freeradius freeradius-mysql freeradius-ldap freeradius-web apache-mpm-prefork apache-mod_ssl apache-mod_php squid dansguardian postfix MySQL logwatch ntp awstats mondo cdrecord buffer vim-enhanced bind-utils wget arpscan ulogd openssh-server php-xml pam_ccreds rng-utils lsb-release dnsmasq clamav sudo cronie-anacron pciutils"
70
# ****************** End of global parameters *********************
70
# ****************** End of global parameters *********************
71
 
71
 
72
header_install ()
72
header_install ()
73
{
73
{
74
	clear
74
	clear
Line 169... Line 169...
169
				then
169
				then
170
				ORGANISME=!
170
				ORGANISME=!
171
			fi
171
			fi
172
		done
172
		done
173
	fi
173
	fi
-
 
174
# On supprime les paquetages orphelins et inutiles
-
 
175
	for rm_rpm in avahi mandi dhcp-common radeontool
174
 
176
	do
-
 
177
		/usr/sbin/urpme --auto $rm_rpm --auto-orphans
-
 
178
	done
175
# On configure les dépots et on les teste 
179
# On configure les dépots et on les teste 
176
	echo "Configuration des dépôts de paquetages Internet (repository)"
180
	echo "Configuration des dépôts de paquetages Internet (repository)"
177
	chmod u+x $DIR_SCRIPTS/alcasar-urpmi.sh
181
	chmod u+x $DIR_SCRIPTS/alcasar-urpmi.sh
178
	$DIR_SCRIPTS/alcasar-urpmi.sh >/dev/null
182
	$DIR_SCRIPTS/alcasar-urpmi.sh >/dev/null
179
	if [ "$?" != "0" ]
183
	if [ "$?" != "0" ]
Line 205... Line 209...
205
		echo "Relancez l'installation ultérieurement."
209
		echo "Relancez l'installation ultérieurement."
206
		echo "Si vous rencontrez de nouveau ce problème, changez de dépôt en modifiant le fichier 'scripts/alcasar-urpmi.sh'"
210
		echo "Si vous rencontrez de nouveau ce problème, changez de dépôt en modifiant le fichier 'scripts/alcasar-urpmi.sh'"
207
		exit 0
211
		exit 0
208
	fi
212
	fi
209
# On mets à jour le système
213
# On mets à jour le système
210
	urpmi --auto --auto-update 
214
	urpmi --auto --auto-update
211
# On installe les paquetages complémentaires
215
# On installe les paquetages complémentaires
212
	urpmi --auto $PACKAGES 
216
	urpmi --auto $PACKAGES 
213
# On empêche les mises à jour de coova-chilli et freeradius par le biais des dépôts
-
 
214
	for rpmskip in coova freeradius 
-
 
215
	do
-
 
216
		echo -n "/^$rpmskip/" >> /etc/urpmi/skip.list
-
 
217
	done
-
 
218
# On supprime les paquetages, les services et les utilisateurs inutiles
217
# On supprime les paquetages, les services et les utilisateurs inutiles
219
	for rm_rpm in dhcp-server avahi mandi shorewall c-icap-server cyrus-sasl
218
	for rm_rpm in shorewall dhcp-server c-icap-server cyrus-sasl distcache-server
220
	do
219
	do
221
		/usr/sbin/urpme --auto $rm_rpm --auto-orphans
220
		/usr/sbin/urpme --auto $rm_rpm --auto-orphans
222
	done
221
	done
223
	for svc in alsa sound dm atd dc_server netfs bootlogd stop-bootlogd
222
	for svc in alsa sound dm atd netfs bootlogd stop-bootlogd
224
	do
223
	do
225
		/sbin/chkconfig --del $svc
224
		/sbin/chkconfig --del $svc
226
	done
225
	done
227
	for rm_users in avahi-autoipd avahi icapd
226
	for rm_users in avahi-autoipd avahi icapd
228
	do
227
	do
Line 244... Line 243...
244
			ARCH=`echo $i|cut -d"=" -f2`
243
			ARCH=`echo $i|cut -d"=" -f2`
245
		fi
244
		fi
246
	done
245
	done
247
	IFS="$old"
246
	IFS="$old"
248
	urpmi --no-verify --auto $DIR_CONF/rpms/$ARCH/*.rpm
247
	urpmi --no-verify --auto $DIR_CONF/rpms/$ARCH/*.rpm
-
 
248
# On empêche les mises à jour de coova-chilli et freeradius par le biais des dépôts
-
 
249
	for rpmskip in coova freeradius 
-
 
250
	do
-
 
251
		echo -n "/^$rpmskip/" >> /etc/urpmi/skip.list
-
 
252
	done
249
# On vide le répertoire temporaire
253
# On vide le répertoire temporaire
250
	urpmi --clean
254
	urpmi --clean
251
# On crée aléatoirement les mots de passe et les secrets partagés
255
# On crée aléatoirement les mots de passe et les secrets partagés
252
	rm -f $FIC_PASSWD
256
	rm -f $FIC_PASSWD
253
	grubpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de protection du menu Grub
257
	grubpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de protection du menu Grub
254
	echo -n "mot de passe de protection du menu de démarrage (GRUB) : " > $FIC_PASSWD
258
	echo -n "mot de passe de protection du menu de démarrage (GRUB) : " > $FIC_PASSWD
255
	echo "$grubpwd" >> $FIC_PASSWD
259
	echo "$grubpwd" >> $FIC_PASSWD
256
	md5_grubpwd=`/usr/bin/md5pass $grubpwd`
260
	md5_grubpwd=`/usr/bin/md5pass $grubpwd`
257
	sed -i "/^password.*/d" /boot/grub/menu.lst
261
	$SED "/^password.*/d" /boot/grub/menu.lst
258
	sed -i "1ipassword --md5 $md5_grubpwd" /boot/grub/menu.lst
262
	$SED "1ipassword --md5 $md5_grubpwd" /boot/grub/menu.lst
259
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'administrateur Mysqld
263
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'administrateur Mysqld
260
	echo -n "compte et mot de passe de l'administrateur Mysqld : " >> $FIC_PASSWD
264
	echo -n "compte et mot de passe de l'administrateur Mysqld : " >> $FIC_PASSWD
261
	echo "root / $mysqlpwd" >> $FIC_PASSWD
265
	echo "root / $mysqlpwd" >> $FIC_PASSWD
262
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'utilisateur Mysqld (utilisé par freeradius)
266
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'utilisateur Mysqld (utilisé par freeradius)
263
	echo -n "compte et mot de passe de l'utilisateur Mysqld : " >> $FIC_PASSWD
267
	echo -n "compte et mot de passe de l'utilisateur Mysqld : " >> $FIC_PASSWD
Line 646... Line 650...
646
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;CONNECT mysql;DELETE from user where user='';FLUSH PRIVILEGES;" 
650
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;CONNECT mysql;DELETE from user where user='';FLUSH PRIVILEGES;" 
647
	# On crée la base 'radius'
651
	# On crée la base 'radius'
648
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
652
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
649
# Ajout d'une base vierge	
653
# Ajout d'une base vierge	
650
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/radiusd-db-vierge.sql
654
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/radiusd-db-vierge.sql
651
#	FICSQL_LIBFREERADIUS=`find /etc/raddb/sql/mysql -type f -name schema.sql`
-
 
652
#	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $FICSQL_LIBFREERADIUS
-
 
653
#	$MYSQL="connect $DB_RADIUS;ALTER table radpostauth DROP column pass;" 
-
 
654
# Ajout des tables de comptabilité journalière et mensuelle (accounting)
-
 
655
#	DIRSQL_FREERADIUS=`find /usr/share/doc/freeradius-web* -type d -name mysql`
-
 
656
#	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIRSQL_FREERADIUS/mtotacct.sql
-
 
657
#	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIRSQL_FREERADIUS/totacct.sql
-
 
658
# correction d'un bug sur la table 'userinfo' avant import
-
 
659
#	$SED "s?^  id int(10).*?  id int(10) NOT NULL auto_increment,?g" $DIRSQL_FREERADIUS/userinfo.sql
-
 
660
#	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIRSQL_FREERADIUS/userinfo.sql
-
 
661
# correction d'un bug sur la table 'badusers' avant import (elle reste inutilisée par Alcasar pour l'instant)
-
 
662
#	#$SED "s?^  id int(10).*?  id int(10) NOT NULL auto_increment,?g" $DIRSQL_FREERADIUS/badusers.sql
-
 
663
#	#mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIRSQL_FREERADIUS/badusers.sql
-
 
664
} # End init_db ()
655
} # End init_db ()
665
 
656
 
666
##########################################################################
657
##########################################################################
667
##			Fonction param_radius				##
658
##			Fonction param_radius				##
668
## - Paramètrage des fichiers de configuration FreeRadius		##
659
## - Paramètrage des fichiers de configuration FreeRadius		##
Line 692... Line 683...
692
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
683
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
693
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
684
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
694
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
685
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
695
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
686
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
696
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
687
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
697
	# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
688
# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
698
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
689
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
699
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
690
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
700
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
691
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
701
	cat << EOF > /etc/raddb/clients.conf
692
	cat << EOF > /etc/raddb/clients.conf
702
client 127.0.0.1 {
693
client 127.0.0.1 {
Line 950... Line 941...
950
	$SED "/^HAVP_BIN=/i. /etc/init.d/functions" /etc/init.d/havp
941
	$SED "/^HAVP_BIN=/i. /etc/init.d/functions" /etc/init.d/havp
951
	$SED "s?^[\t ]*echo \"Checking for.*?status havp?g" /etc/init.d/havp
942
	$SED "s?^[\t ]*echo \"Checking for.*?status havp?g" /etc/init.d/havp
952
# on remplace la page d'interception (template)
943
# on remplace la page d'interception (template)
953
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
944
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
954
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
945
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
955
# mise à jour de la base antivirale de clamav toutes les 2 heures
946
# automatisation de la mise à jour de la base antivirale (toutes les 2 heures)
956
	$SED "s?^Checks.*?Checks 12?g" /etc/freshclam.conf
947
	$SED "s?^Checks.*?Checks 12?g" /etc/freshclam.conf
957
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
948
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
958
}
949
}
959
 
950
 
960
##################################################################################
951
##################################################################################
Line 974... Line 965...
974
	[ -e /var/log/firewall/firewall.log ] || touch /var/log/firewall/firewall.log
965
	[ -e /var/log/firewall/firewall.log ] || touch /var/log/firewall/firewall.log
975
	chown -R root:apache /var/log/firewall
966
	chown -R root:apache /var/log/firewall
976
	chmod 750 /var/log/firewall
967
	chmod 750 /var/log/firewall
977
	chmod 640 /var/log/firewall/firewall.log
968
	chmod 640 /var/log/firewall/firewall.log
978
 	$SED "s?^file=\"/var/log/ulogd.syslogemu\"?file=\"/var/log/firewall/firewall.log\"?g" /etc/ulogd.conf
969
 	$SED "s?^file=\"/var/log/ulogd.syslogemu\"?file=\"/var/log/firewall/firewall.log\"?g" /etc/ulogd.conf
979
	sh $DIR_DEST_BIN/alcasar-iptables.sh
-
 
980
# création du fichier d'exception au filtrage
970
# création du fichier d'exception au filtrage
981
	touch /usr/local/etc/alcasar-filter-exceptions
971
	touch /usr/local/etc/alcasar-filter-exceptions
-
 
972
	sh $DIR_DEST_BIN/alcasar-iptables.sh
982
}  # End of firewall ()
973
}  # End of firewall ()
983
 
974
 
984
##################################################################################
975
##################################################################################
985
##				Fonction param_awstats				##
976
##				Fonction param_awstats				##
986
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
977
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
Line 1217... Line 1208...
1217
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK_MASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1208
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK_MASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1218
# prise en compte de la rotation des logs sur 1 an (concerne mysql, httpd, dansguardian, squid, radiusd, ulogd)
1209
# prise en compte de la rotation des logs sur 1 an (concerne mysql, httpd, dansguardian, squid, radiusd, ulogd)
1219
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1210
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1220
	chmod 644 /etc/logrotate.d/*
1211
	chmod 644 /etc/logrotate.d/*
1221
# processus lancés par défaut au démarrage
1212
# processus lancés par défaut au démarrage
1222
	$SED "s?^# Default-Start.*?# Default-Start: 3 4 5?g" /etc/init.d/mysqld
-
 
1223
	$SED "s?^# Default-Stop.*?# Default-Stop: 0 1 2?g" /etc/init.d/mysqld  	# pour éviter les alertes de dépendance de services (netfs)
-
 
1224
	$SED "s?^# chkconfig:.*?# chkconfig: 23 61 40?g" /etc/init.d/dnsmasq  	# pour démarrer dnsmasq avec eth1 up avant chilli - utile ??
-
 
1225
	for i in netfs ntpd iptables ulogd dnsmasq squid chilli httpd radiusd mysqld dansguardian havp freshclam
1213
	for i in ntpd iptables ulogd dnsmasq squid chilli httpd radiusd mysqld dansguardian havp freshclam
1226
	do
1214
	do
1227
		/sbin/chkconfig --add $i
1215
		/sbin/chkconfig --add $i
1228
	done
1216
	done
-
 
1217
# pour éviter les alertes de dépendance avec le service 'netfs'.
-
 
1218
	$SED "s?^# Required-Start.*?# Required-Start: \$local_fs \$network?g" /etc/init.d/mysqld
-
 
1219
	$SED "s?^# Required-Stop.*?# Required-Stop: $local_fs $network?g" /etc/init.d/mysqld
1229
# On affecte le niveau de sécurité du système : type "fileserver"
1220
# On affecte le niveau de sécurité du système : type "fileserver"
1230
	$SED "s?BASE_LEVEL=.*?BASE_LEVEL=fileserver?g" /etc/security/msec/security.conf
1221
	$SED "s?BASE_LEVEL=.*?BASE_LEVEL=fileserver?g" /etc/security/msec/security.conf
1231
# On supprime la vérification du mode promiscious des interfaces réseaux ( nombreuses alertes sur eth1 dûes à Tun0 )
1222
# On supprime la vérification du mode promiscious des interfaces réseaux ( nombreuses alertes sur eth1 dûes à Tun0 )
1232
	$SED "s?CHECK_PROMISC=.*?CHECK_PROMISC=no?g" /etc/security/msec/level.fileserver
1223
	$SED "s?CHECK_PROMISC=.*?CHECK_PROMISC=no?g" /etc/security/msec/level.fileserver
1233
# On supprime les log_martians
1224
# On supprime les log_martians