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
|