Subversion Repositories ALCASAR

Compare Revisions

Ignore whitespace Rev 502 → Rev 503

/alcasar.sh
55,12 → 55,12
DB_RADIUS="radius" # nom de la base de données utilisée par le serveur FreeRadius
DB_USER="radius" # nom de l'utilisateur de la base de données
# ******* Network parameters - paramètres réseau *******
HOSTNAME="alcasar" #
DOMAIN="localdomain" # domaine local
EXTIF="eth0" # ETH0 est l'interface connectée à Internet (Box FAI)
INTIF="eth1" # ETH1 est l'interface connectée au réseau local de consultation
CUSTOM_PRIVATE_NETWORK_MASK="192.168.182.0/24" # adresse du réseau de consultation proposée par défaut
SQUID_PORT="3128" # Port d'écoute du proxy Squid
UAMPORT="3990"
# ****** Paths - chemin des commandes *******
SED="/bin/sed -i"
# ****** Alcasar needed RPMS - paquetages nécessaires au fonctionnement d'Alcasar ******
330,7 → 330,6
done
fi
# Récupération de la config réseau côté "LAN de consultation"
HOSTNAME=alcasar-$ORGANISME
hostname $HOSTNAME
echo "- Nom du système : $HOSTNAME" >> $FIC_PARAM
PRIVATE_NETWORK=`/bin/ipcalc -n $CUSTOM_PRIVATE_NETWORK_MASK | cut -d"=" -f2` # @ réseau de consultation (ex.: 192.168.182.0)
381,8 → 380,8
# Modif /etc/hosts
[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
cat <<EOF > /etc/hosts
127.0.0.1 $HOSTNAME localhost.localdomain localhost
$PRIVATE_IP $HOSTNAME alcasar portail
127.0.0.1 localhost
$PRIVATE_IP $HOSTNAME
EOF
echo "- Adresse IP 'côté réseau de consultation' ($INTIF) : $PRIVATE_IP / $PRIVATE_NETWORK_MASK" >> $FIC_PARAM
echo " - plage d'adresses statiques : $PRIVATE_STAT_IP" >> $FIC_PARAM
728,7 → 727,7
chown -R apache:apache $DIR_ACC/manager/
# Modification des fichiers de configuration
[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
$SED "s?^general_domain:.*?general_domain: $ORGANISME.$DOMAIN?g" /etc/freeradius-web/admin.conf
$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
$SED "s?^sql_debug:.*?sql_debug: false?g" /etc/freeradius-web/admin.conf
806,9 → 805,9
dns1 $PRIVATE_IP
dns2 $PRIVATE_IP
uamlisten $PRIVATE_IP
uamport $UAMPORT
uamport 3990
dhcpif $INTIF
ethers /usr/local/etc/alcasar-ethers
ethers $DIR_DEST_ETC/alcasar-ethers
uamanyip
macallowlocal
locationname $HOSTNAME
822,22 → 821,22
papalwaysok
uamsecret $secretuam
coaport 3799
include /usr/local/etc/alcasar-uamallowed
include /usr/local/etc/alcasar-uamdomain
include /usr/local/etc/alcasar-macallowed
include $DIR_DEST_ETC/alcasar-uamallowed
include $DIR_DEST_ETC/alcasar-uamdomain
include $DIR_DEST_ETC/alcasar-macallowed
EOF
# Pour la fonctionnalité de DHCP statique, le fichier alcasar-ethers a été copié précédemment dans /usr/local/etc
# création des fichiers de sites, d'urls et d'adresses MAC de confiance
echo -e "uamallowed=\"\"" > /usr/local/etc/alcasar-uamallowed
echo -e "uamdomain=\"\"" > /usr/local/etc/alcasar-uamdomain
echo -e "macallowed=\"\"" > /usr/local/etc/alcasar-macallowed
chown root:apache /usr/local/etc/alcasar-*
chmod 660 /usr/local/etc/alcasar-*
echo "- URL de deconnexion du portail : http://$PRIVATE_IP:$UAMPORT/logoff" >> $FIC_PARAM
# Définition du secret partagé entre coova-chilli et la page d'authentification (intercept.php)
echo -e "uamallowed=\"\"" > $DIR_DEST_ETC/alcasar-uamallowed
echo -e "uamdomain=\"\"" > $DIR_DEST_ETC/alcasar-uamdomain
echo -e "macallowed=\"\"" > $DIR_DEST_ETC/alcasar-macallowed
chown root:apache $DIR_DEST_ETC/alcasar-*
chmod 660 $DIR_DEST_ETC/alcasar-*
echo "- URL de deconnexion du portail : http://alcasar:3990/logoff" >> $FIC_PARAM
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli et nom d'organisme)
$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php $DIR_WEB/intercept.php.old
$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php $DIR_WEB/intercept.php.old
$SED "s?^\$organisme = .*?\$organisme = \"$ORGANISME\";?g" $DIR_WEB/intercept.php $DIR_WEB/intercept.php.old
$SED "s?^\$organisme = .*?\$organisme = \"$ORGANISME\";?g" $DIR_WEB/intercept.php $DIR_WEB/intercept.php.old $DIR_WEB/status.php
} # End of param_chilli ()
 
##########################################################
969,7 → 968,7
$SED "s?^DNSSERVERS=.*?DNSSERVERS=\"$DNS1,$DNS2\"?g" $DIR_DEST_BIN/alcasar-iptables.sh
chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
# création du fichier d'exception au filtrage
touch /usr/local/etc/alcasar-filter-exceptions
touch $DIR_DEST_ETC/alcasar-filter-exceptions
# le script $DIR_DEST_BIN/alcasar-iptables.sh est lancé à la fin (pour ne pas perturber une mise à jour via ssh)
} # End of firewall ()
 
1047,18 → 1046,15
##########################################################
param_dnsmasq ()
{
[ -d /etc/dnsmasq.d ] || mkdir /etc/dnsmasq.d
[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
[ -e /etc/dnsmasq.conf ] && cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
$SED "s?^[^#]?#&?g" /etc/dnsmasq.conf # on commente ce qui ne l'est pas
$SED "s?^#conf-dir=.*?conf-dir=/etc/dnsmasq.d?g" /etc/dnsmasq.conf # les fichiers de config se trouvent dans /etc/dnsmasq.d/*
$SED "s?^DHCP_LEASE=.*?DHCP_LEASE=/var/log/dnsmasq/lease.log?g" /etc/sysconfig/dnsmasq # fichier contenant les baux
[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
# 1st configuration file for "dnsmasq + blackhole" (listen on udp 52)
cat << EOF > /etc/dnsmasq.d/alcasar-dnsmasq.conf
cat << EOF > /etc/dnsmasq.conf
# Configuration file for "dnsmasq + blackhole"
# Inclusion de la blacklist <domains> de Toulouse dans la configuration
conf-dir=/usr/local/etc/alcasar-dnsfilter-enabled
conf-file=/usr/local/etc/alcasar-dns-name # zone de definition de noms DNS locaux
conf-dir=$DIR_DEST_ETC/alcasar-dnsfilter-enabled
conf-file=$DIR_DEST_ETC/alcasar-dns-name # zone de definition de noms DNS locaux
listen-address=$PRIVATE_IP
listen-address=127.0.0.1
no-dhcp-interface=$INTIF
1072,7 → 1068,7
server=$DNS1
server=$DNS2
# le servive DHCP est configuré mais n'est exploité que pour le "bypass"
dhcp-range=$ORGANISME,$PRIVATE_DYN_FIRST_IP,$PRIVATE_DYN_LAST_IP,$PRIVATE_MASK,12h
dhcp-range=$PRIVATE_DYN_FIRST_IP,$PRIVATE_DYN_LAST_IP,$PRIVATE_MASK,12h
#dhcp-option=3,1.2.3.4
#dhcp-option=option:router,1.2.3.4
#dhcp-option=42,0.0.0.0
1084,7 → 1080,7
# 2nd dnsmasq configuration file for filter exception user (listen on udp 54)
cat << EOF > /etc/dnsmasq-forward.conf
# Dnsmasq configuration for exception filter users (no blackhole)
conf-file=/usr/local/etc/alcasar-dns-name # zone de definition de noms DNS locaux
conf-file=$DIR_DEST_ETC/alcasar-dns-name # zone de definition de noms DNS locaux
listen-address=$PRIVATE_IP
port=54
no-dhcp-interface=$INTIF
1099,12 → 1095,15
server=$DNS2
EOF
# On crée le fichier de résolution locale
touch /usr/local/etc/alcasar-dns-name
# On modifie le fichier d'initialisattion (lancement dune deuxième instance)
[ -e /etc/init.d/dnsmasq ] && cp /etc/init.d/dnsmasq /etc/init.d/dnsmasq.default
$SED "s?^DOMAIN_SUFFIX=.*?DOMAIN_SUFFIX=''?g" /etc/init.d/dnsmasq
$SED "/\$dnsmasq/a daemon \$dnsmasq -C /etc/dnsmasq-forward.conf" /etc/init.d/dnsmasq
$SED "/killproc \$DAEMON_NAME/a killall \$DAEMON_NAME" /etc/init.d/dnsmasq
cat << EOF > $DIR_DEST_ETC/alcasar-dns-name
# Here you can define your local domain name
# use the /etc/hosts file to define your hosts name
local=/$DOMAIN/
EOF
# On modifie le fichier d'initialisattion (lancement et arret de la deuxième instance)
[ -e /etc/init.d/dnsmasq.default ] || cp /etc/init.d/dnsmasq /etc/init.d/dnsmasq.default
$SED "/daemon/a \$dnsmasq -C /etc/dnsmasq-forward.conf \$OPTIONS" /etc/init.d/dnsmasq
$SED "/killproc \$DAEMON_NAME/a killproc \$DAEMON_NAME" /etc/init.d/dnsmasq
} # End dnsmasq
 
##########################################################
1144,9 → 1143,9
chown -R dansguardian:apache /etc/dansguardian/
chmod -R g+rw /etc/dansguardian
# On crée la structure du DNS-blackhole :
mkdir /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
chown -R 770 /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
chown -R root:apache /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
mkdir $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
chown -R 770 $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
chown -R root:apache $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
# On fait pointer le black-hole sur une page interne
$SED "s?^IP_RETOUR=.*?IP_RETOUR=\"$PRIVATE_IP\"?g" $DIR_DEST_SBIN/alcasar-bl.sh
# On récupère la dernière version de la BL Toulouse
1199,7 → 1198,7
EOF
# suppression des fichiers de mots de passe lors d'imports massifs par fichier de plus de 24h
cat << EOF > /etc/cron.d/clean_import
30 * * * * root /usr/local/bin/alcasar-import-clean.sh
30 * * * * root $DIR_DEST_BIN/alcasar-import-clean.sh
EOF
# mise à jour des stats de connexion (accounting). Scripts provenant de "dialupadmin" (rpm freeradius-web) (cf. wiki.freeradius.org/Dialup_admin).
# on écrase le crontab d'origine installé par le RPM "freeradius-web" (bug remonté à qa.mandriva.com : 46739).
1393,9 → 1392,8
echo "#### Installation avec mise à jour ####"
echo "#### Installation with update ####"
# On récupère le nom d'organisme à partir de fichier de conf
tar -xvf /tmp/alcasar-conf.tar.gz conf/hostname
ORGANISME=`cat $DIR_CONF/hostname|cut -b 9-`
hostname `cat $DIR_CONF/hostname`
tar -xvf /tmp/alcasar-conf.tar.gz conf/organisme
ORGANISME=`cat $DIR_CONF/organisme`
mode="update"
else
mode="install"