| 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
|