Subversion Repositories ALCASAR

Rev

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

Rev 307 Rev 308
Line 1... Line 1...
1
#!/bin/sh
1
#!/bin/sh
2
#  $Id: alcasar.sh 307 2010-10-22 21:44:53Z richard $ 
2
#  $Id: alcasar.sh 308 2010-10-25 22:17:29Z 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 30... Line 30...
30
#       param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
30
#       param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
31
#       antivirus       : Installation havp + clamav
31
#       antivirus       : Installation havp + clamav
32
#       firewall        : Mise en place des règles du parefeu et de l'interface WEB FirewallEyes
32
#       firewall        : Mise en place des règles du parefeu et de l'interface WEB FirewallEyes
33
#       param_awstats   : Configuration de l'interface des statistiques de consultation WEB
33
#       param_awstats   : Configuration de l'interface des statistiques de consultation WEB
34
#       dnsmasq         : Configuration du serveur de noms et du serveur dhcp de secours
34
#       dnsmasq         : Configuration du serveur de noms et du serveur dhcp de secours
-
 
35
#       BL              : Configuration de la BlackList
35
#       cron            : Mise en place des exports de logs (+ chiffrement)
36
#       cron            : Mise en place des exports de logs (+ chiffrement)
36
 
37
 
37
 
38
 
38
VERSION=`cat VERSION`
39
VERSION=`cat VERSION`
39
MDV_NEEDED="2010.1"
40
MDV_NEEDED="2010.1"
Line 93... Line 94...
93
                        echo "Échec"
94
                        echo "Échec"
94
                        echo "Le lien réseau de la carte $i n'est pas actif."
95
                        echo "Le lien réseau de la carte $i n'est pas actif."
95
                        echo "Réglez ce problème avant de poursuivre l'installation d'ALCASAR."
96
                        echo "Réglez ce problème avant de poursuivre l'installation d'ALCASAR."
96
                        exit 0
97
                        exit 0
97
                fi
98
                fi
-
 
99
        echo -n "."
98
        done
100
        done
99
# On teste la présence d'un routeur par défaut (Box FAI)
101
# On teste la présence d'un routeur par défaut (Box FAI)
100
        if [ `/sbin/route -n|grep -c ^0.0.0.0` -ne "1" ] ; then
102
        if [ `/sbin/route -n|grep -c ^0.0.0.0` -ne "1" ] ; then
101
                echo "Échec"
103
                echo "Échec"
102
                echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
104
                echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
103
                echo "Réglez ce problème avant de poursuivre."
105
                echo "Réglez ce problème avant de poursuivre."
104
                exit 0
106
                exit 0
105
        fi
107
        fi
-
 
108
        echo -n "."
106
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certains BIOS et sur VirtualBox)
109
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certaines version de BIOS et de VirtualBox)
107
        if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
110
        if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
108
                echo "Échec. La configuration des cartes réseau va être corrigée."
111
                echo "Échec. La configuration des cartes réseau va être corrigée."
109
                /etc/init.d/network stop
112
                /etc/init.d/network stop
110
                mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
113
                mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
111
                $SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
114
                $SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
Line 115... Line 118...
115
                echo "Configuration corrigée"
118
                echo "Configuration corrigée"
116
                sleep 2
119
                sleep 2
117
                echo "Vous pouvez relancer ce script (sh alcasar.sh -install)."
120
                echo "Vous pouvez relancer ce script (sh alcasar.sh -install)."
118
                exit 0
121
                exit 0
119
        fi
122
        fi
-
 
123
        echo -n "."
-
 
124
# On test le lien vers le routeur par default
-
 
125
        IP_GW=`ip route list|grep ^default|cut -d" " -f3`
-
 
126
        arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $IP_GW|grep response|cut -d" " -f2`
-
 
127
        if [[ $(expr $arp_reply) -eq 0 ]]
-
 
128
                then
-
 
129
                echo "Échec"
-
 
130
                echo "Le routeur de site ou la Box Internet ($IP_GW) ne répond pas."
-
 
131
                echo "Réglez ce problème avant de poursuivre."
-
 
132
                exit 0
-
 
133
        fi
-
 
134
        echo -n "."
120
# On teste la connectivité Internet
135
# On test la connectivité Internet
121
        rm -rf /tmp/con_ok.html
136
        rm -rf /tmp/con_ok.html
122
        /usr/bin/curl www.google.fr -# -o /tmp/con_ok.html
137
        /usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
123
        if [ ! -e /tmp/con_ok.html ]
138
        if [ ! -e /tmp/con_ok.html ]
124
        then
139
        then
125
                echo "La tentative de connexion vers Internet a échoué (google.fr)."
140
                echo "La tentative de connexion vers Internet a échoué (google.fr)."
126
                echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
141
                echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
127
                echo "Vérifiez la validité des adresses DNS."
142
                echo "Vérifiez la validité des adresses DNS."
128
                exit 0
143
                exit 0
129
        fi
144
        fi
130
        echo "Tests de connectivité Internet corrects"
-
 
131
        rm -rf /tmp/con_ok.html
145
        rm -rf /tmp/con_ok.html
-
 
146
        echo ". : ok"
132
} # end of testing
147
} # end of testing
133
 
148
 
134
##################################################################
149
##################################################################
135
##                      Fonction INIT                           ##
150
##                      Fonction INIT                           ##
136
## - Création du fichier "/root/ALCASAR_parametres.txt"                ##
151
## - Création du fichier "/root/ALCASAR_parametres.txt"                ##
Line 140... Line 155...
140
##################################################################
155
##################################################################
141
init ()
156
init ()
142
{
157
{
143
        if [ ! "$mode" = "update" ]
158
        if [ ! "$mode" = "update" ]
144
        then
159
        then
145
                header_install
-
 
146
# On affecte le nom d'organisme
160
# On affecte le nom d'organisme
147
                header_install
-
 
148
                ORGANISME=!
161
                ORGANISME=!
149
                PTN='^[a-zA-Z0-9-]*$'
162
                PTN='^[a-zA-Z0-9-]*$'
150
                until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
163
                until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
151
                do
164
                do
152
                        echo -n "Entrez le nom de votre organisme : "
165
                        echo -n "Entrez le nom de votre organisme : "
Line 197... Line 210...
197
        urpmi --auto $PACKAGES
210
        urpmi --auto $PACKAGES
198
# On empêche les mises à jour de coova-chilli et freeradius par le biais des dépôts
211
# On empêche les mises à jour de coova-chilli et freeradius par le biais des dépôts
199
        echo -n "/^coova/" >> /etc/urpmi/skip.list
212
        echo -n "/^coova/" >> /etc/urpmi/skip.list
200
        echo -n "/^freeradius/" >> /etc/urpmi/skip.list
213
        echo -n "/^freeradius/" >> /etc/urpmi/skip.list
201
# On supprime les paquetages, les services et les utilisateurs inutiles
214
# On supprime les paquetages, les services et les utilisateurs inutiles
202
        for rm_rpm in avahi mandi shorewall libc-icap0 cyrus-sasl
215
        for rm_rpm in dhcp-server avahi mandi shorewall libc-icap0 cyrus-sasl
203
        do
216
        do
204
                /usr/sbin/urpme --auto $rm_rpm --auto-orphans
217
                /usr/sbin/urpme --auto $rm_rpm --auto-orphans
205
        done
218
        done
206
        for svc in alsa sound dm atd dc_server
219
        for svc in alsa sound dm atd dc_server
207
        do
220
        do
Line 473... Line 486...
473
</body>
486
</body>
474
</html>
487
</html>
475
EOF
488
EOF
476
        echo "- URL d'accès au centre de gestion : https://$PRIVATE_IP" >> $FIC_PARAM
489
        echo "- URL d'accès au centre de gestion : https://$PRIVATE_IP" >> $FIC_PARAM
477
# On crée le VirtualHost pour l'accès au port 80 (redirection après filtrage)
490
# On crée le VirtualHost pour l'accès au port 80 (redirection après filtrage)
-
 
491
# On tente d'intercepter toute les URLs (réécriture) 
478
        FIC_VIRTUAL=`find /etc/httpd/conf -type f -name *default_vhosts*`
492
        FIC_VIRTUAL=`find /etc/httpd/conf -type f -name *default_vhosts*`
479
        [ -e /etc/httpd/conf/vhosts.default ]  || cp $FIC_VIRTUAL /etc/httpd/conf/vhosts.default
493
        [ -e /etc/httpd/conf/vhosts.default ]  || cp $FIC_VIRTUAL /etc/httpd/conf/vhosts.default
480
        cat <<EOF > $FIC_VIRTUAL
494
        cat <<EOF > $FIC_VIRTUAL
481
NameVirtualHost *:80
495
NameVirtualHost *:80
482
<VirtualHost *:80>
496
<VirtualHost *:80>
483
ServerName $HOSTNAME
497
ServerName $HOSTNAME
484
DocumentRoot $DIR_WEB/redirect
498
DocumentRoot $DIR_WEB/redirect
-
 
499
RewriteEngine on
-
 
500
RewriteRule ^(.*)$ /index.php [L]
485
</VirtualHost>
501
</VirtualHost>
486
EOF
502
EOF
487
# Définition du premier compte lié au profil 'admin'
503
# Définition du premier compte lié au profil 'admin'
488
        if [ "$mode" = "install" ]
504
        if [ "$mode" = "install" ]
489
        then
505
        then
Line 901... Line 917...
901
        touch /etc/dansguardian/lists/bannedextensionlist
917
        touch /etc/dansguardian/lists/bannedextensionlist
902
        touch /etc/dansguardian/lists/bannedmimetypelist
918
        touch /etc/dansguardian/lists/bannedmimetypelist
903
# on vide la liste des @IP du Lan ne subissant pas le filtrage WEB
919
# on vide la liste des @IP du Lan ne subissant pas le filtrage WEB
904
        [ -e /etc/dansguardian/lists/exceptioniplist.default ] || mv /etc/dansguardian/lists/exceptioniplist /etc/dansguardian/lists/exceptioniplist.default
920
        [ -e /etc/dansguardian/lists/exceptioniplist.default ] || mv /etc/dansguardian/lists/exceptioniplist /etc/dansguardian/lists/exceptioniplist.default
905
        touch /etc/dansguardian/lists/exceptioniplist
921
        touch /etc/dansguardian/lists/exceptioniplist
906
# on copie les fichiers de la BL de toulouse
-
 
907
        [ -d /etc/dansguardian/lists/blacklists ] && mv /etc/dansguardian/lists/blacklists /etc/dansguardian/lists/blacklists.default
-
 
908
        tar zxvf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ 2>&1 >/dev/null
-
 
909
        cp -f $DIR_CONF/VERSION-BL $DIR_WEB/
-
 
910
        chown apache:apache $DIR_WEB/VERSION-BL
-
 
911
# on crée la BL secondaire
-
 
912
        mkdir /etc/dansguardian/lists/blacklists/ossi
-
 
913
        touch /etc/dansguardian/lists/blacklists/ossi/domains
-
 
914
        touch /etc/dansguardian/lists/blacklists/ossi/urls
-
 
915
# On crée une WhiteList vide
-
 
916
        [ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
-
 
917
        [ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
-
 
918
        touch /etc/dansguardian/lists/exceptionsitelist
-
 
919
        touch /etc/dansguardian/lists/exceptionurllist
-
 
920
# on configure le filtrage de site WEB
922
# on configure le filtrage de domaine
921
        [ -e /etc/dansguardian/lists/bannedsitelist.default ] || cp /etc/dansguardian/lists/bannedsitelist /etc/dansguardian/lists/bannedsitelist.default
923
        [ -e /etc/dansguardian/lists/bannedsitelist.default ] || cp /etc/dansguardian/lists/bannedsitelist /etc/dansguardian/lists/bannedsitelist.default
922
        $SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedsitelist # (on commente ce qui ne l'est pas)
924
        $SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedsitelist # (on commente ce qui ne l'est pas)
923
# on bloque les sites ne possédant pas de nom de domaine (ex: http://12.13.14.15)
925
# on bloque les sites ne possédant pas de nom de domaine (ex: http://12.13.14.15)
924
        $SED "s?^#\*ip?\*ip?g" /etc/dansguardian/lists/bannedsitelist
926
        $SED "s?^#\*ip?\*ip?g" /etc/dansguardian/lists/bannedsitelist
925
# on bloque le ssl sur port 80
927
# on bloque le ssl sur port 80
926
        $SED "s?^#\*\*s?\*\*s?g" /etc/dansguardian/lists/bannedsitelist
928
        $SED "s?^#\*\*s?\*\*s?g" /etc/dansguardian/lists/bannedsitelist
927
# (pris en compte par dnsmasq)  cat $DIR_CONF/bannedsitelist >> /etc/dansguardian/lists/bannedsitelist
-
 
928
# on configure le filtrage d'url
929
# on configure le filtrage d'url
929
[ -e /etc/dansguardian/lists/bannedurllist.default ] || cp /etc/dansguardian/lists/bannedurllist /etc/dansguardian/lists/bannedurllist.default
930
[ -e /etc/dansguardian/lists/bannedurllist.default ] || cp /etc/dansguardian/lists/bannedurllist /etc/dansguardian/lists/bannedurllist.default
930
        $SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedurllist # (on commente ce qui ne l'est pas)
931
        $SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedurllist # (on commente ce qui ne l'est pas)
931
        cat $DIR_CONF/bannedurllist >> /etc/dansguardian/lists/bannedurllist
-
 
932
        chown -R dansguardian:apache /etc/dansguardian/
932
        chown -R dansguardian:apache /etc/dansguardian/
933
        chmod -R g+rw /etc/dansguardian
933
        chmod -R g+rw /etc/dansguardian
934
} # End of param_dansguardian ()
934
} # End of param_dansguardian ()
935
 
935
 
936
##################################################################
936
##################################################################
Line 1065... Line 1065...
1065
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1065
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1066
 
1066
 
1067
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1067
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1068
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.10.20,255.255.255.0,45m
1068
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.10.20,255.255.255.0,45m
1069
EOF
1069
EOF
-
 
1070
} # End dnsmasq
-
 
1071
 
-
 
1072
##########################################################
-
 
1073
##              Fonction BL (BlackList)                 ##
-
 
1074
##########################################################
-
 
1075
BL ()
-
 
1076
{
-
 
1077
# on copie par défaut la BL de toulouse embarqués dans l'archive d'ALCASAR
-
 
1078
        rm -rf /etc/dansguardian/lists/blacklists
-
 
1079
        tar zxf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ 2>&1 >/dev/null
-
 
1080
        cp -f $DIR_CONF/VERSION-BL $DIR_WEB/
-
 
1081
        chown apache:apache $DIR_WEB/VERSION-BL
-
 
1082
# on crée le répertoire de la BL secondaire
-
 
1083
        mkdir /etc/dansguardian/lists/blacklists/ossi
-
 
1084
        touch /etc/dansguardian/lists/blacklists/ossi/domains
-
 
1085
        touch /etc/dansguardian/lists/blacklists/ossi/urls
-
 
1086
# On crée le répertoire de la WhiteList
-
 
1087
        [ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
-
 
1088
        [ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
-
 
1089
        touch /etc/dansguardian/lists/exceptionsitelist
-
 
1090
        touch /etc/dansguardian/lists/exceptionurllist
1070
# On crée la structure du DNS-blackhole :
1091
# On crée la structure du DNS-blackhole :
1071
#       - import des domaines de la BL Toulouse dans /usr/local/etc/alcasar-dns-availabled (1 fichier par domaine)
-
 
1072
#       - lien symbolique de ces fichiers dans /usr/local/etc/alcasar-dns-enabled pour activation/désactivation
-
 
1073
        mkdir /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1092
        mkdir /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1074
        chown -R 770 /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1093
        chown -R 770 /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1075
        chown -R root:apache /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1094
        chown -R root:apache /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
-
 
1095
# On fait pointer le black-hole sur une page interne
1076
        $SED "s?^IP_RETOUR=.*?IP_RETOUR=\"$PRIVATE_IP\"?g" /usr/local/bin/alcasar-dnsfilter-import.sh
1096
        $SED "s?^IP_RETOUR=.*?IP_RETOUR=\"$PRIVATE_IP\"?g" $DIR_DEST_SBIN/alcasar-bl.sh
1077
        /usr/local/bin/alcasar-dnsfilter-import.sh
1097
        ln -s $DIR_WEB/redirect/index-access-deny.php $DIR_WEB/index.php
1078
        /usr/local/bin/alcasar-dnsfilter-activate.sh
1098
# On récupère la dernière version de la BL Toulouse
1079
} # End dnsmasq
1099
        $DIR_DEST_SBIN/alcasar-bl.sh -download
-
 
1100
}
-
 
1101
 
-
 
1102
 
-
 
1103
 
-
 
1104
 
1080
 
1105
 
1081
##########################################################
1106
##########################################################
1082
##              Fonction cron                           ##
1107
##              Fonction cron                           ##
1083
## - Mise en place des différents fichiers de cron     ##
1108
## - Mise en place des différents fichiers de cron     ##
1084
##########################################################
1109
##########################################################
Line 1278... Line 1303...
1278
                ;;
1303
                ;;
1279
        -i | --install)
1304
        -i | --install)
1280
                header_install
1305
                header_install
1281
                testing
1306
                testing
1282
# On teste la présence d'une version déjà installée
1307
# On teste la présence d'une version déjà installée
1283
                header_install
-
 
1284
                if [ -e $DIR_WEB/VERSION ]
1308
                if [ -e $DIR_WEB/VERSION ]
1285
                then
1309
                then
1286
                        echo -n "La version "; echo -n `cat $DIR_WEB/VERSION`; echo " d'ALCASAR est déjà installée";
1310
                        echo -n "La version "; echo -n `cat $DIR_WEB/VERSION`; echo " d'ALCASAR est déjà installée";
1287
                        response=0
1311
                        response=0
1288
                        PTN='^[oOnN]$'
1312
                        PTN='^[oOnN]$'
Line 1328... Line 1352...
1328
                        hostname `cat $DIR_CONF/hostname`
1352
                        hostname `cat $DIR_CONF/hostname`
1329
                        mode="update"
1353
                        mode="update"
1330
                else
1354
                else
1331
                        mode="install"
1355
                        mode="install"
1332
                fi
1356
                fi
1333
                for func in init network gestion AC init_db param_radius param_web_radius param_chilli param_squid param_dansguardian antivirus firewall param_awstats param_dnsmasq cron post_install
1357
                for func in init network gestion AC init_db param_radius param_web_radius param_chilli param_squid param_dansguardian antivirus firewall param_awstats param_dnsmasq BL cron post_install
1334
 
1358
 
1335
                do
1359
                do
1336
                        $func
1360
                        $func
1337
 echo "*** 'debug' : end of function $func ***"; read a
1361
 echo "*** 'debug' : end of function $func ***"; read a
1338
                done
1362
                done