Subversion Repositories ALCASAR

Rev

Rev 383 | Rev 389 | Go to most recent revision | Show entire file | Regard 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 208... Line 212...
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 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