#!/bin/sh ################################### #~ /* #~ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #~ #~ Title : Script d'installation OpenK #~ Author : Mickael Allain #~ #~ Description : Installation et configuration #~ automatique d'un serveur complet avec choix #~ des rôles. #~ #~ Created : 10012007 #~ Modified : 01032007 #~ #~ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ################################### VERSION='1.0' RELEASE='01/03/2007' ########### FONCTIONS ############# # Vérification du processus # # statutProcess nom_processus # renvoie un int # 1 démarré # 2 arrêté # 255 processus inconnu ########################### function statutProcess () { racine='/etc/init.d/' #Si le processus est présent dans /etc/init.d/ if [ -f $racine$1 ]; then statut=`$racine$1 status | grep -E '(cours|server)'` # Si son statut contient le texte "cours" if (( ${#statut} > 0 )); then #Processus démarré" start=1 else #Processus arrêté" start=0 fi else #Processus inconnu start=255 fi return $start } # Détection si la chaîne est numérique # avec possibilité de sélectionner le nombre de décimales # # is_numeric variable valeur_maximale # renvoie un entier # 1 c'est un numérique # 2 ce n'est pas un numérique ############################################ function is_numeric () { local ARG=$1 numeric=`echo ${ARG} | grep -E "^[1-$2]{1}$"` if [ -z "$numeric" ];then is_numeric=0 else is_numeric=1 fi return $is_numeric } ############################################ # Démarrage du processus # # startProcess nom_processus # renvoie un entier # 0 processus redémarré # -1 processus absent ######################## function startProcess () { local PROCESSUS=$1 statutProcess $PROCESSUS case $start in 0) echo "Demarrage de $PROCESSUS" $racine$PROCESSUS start return 0 ;; 1) echo "Arret puis redemarrage de $PROCESSUS" $racine$PROCESSUS restart return 0 ;; 255) echo "Daemon absent" return -1 ;; esac } # Parse de l'adresse ip # # parse_ip adresseip # renvoie IPREVERSE ####################################### function parse_ip () { local IP=$1 for (( i=1 ; i<=4 ; i++ )) do OCTET[$i]=$(echo "$IP" | cut -d "." -f "$i") done IPREVERSE=${OCTET[3]}.${OCTET[2]}.${OCTET[1]} OCTET4IP=$(echo "$IP" | cut -d "." -f 4) } # Récupération de la date # # dns_serial # Sous forme AAAAMMJJXX # XX représente 01 ######################### function dns_serial () { local date=`date "+%Y%m%d"` AAAAMMJJXX=$date\01 } # Présence d'un fichier # # presenceFichier # retourne PRESENCE # 1 : présent # 0 : absent ############### presenceFichier() { local FICHIER=$1 if [ -e $FICHIER ] then PRESENCE=1 else PRESENCE=0 fi } ######## FIN DES FONCTIONS ############## ######## FONCTIONS D'INSTALLATION ######## ######## CONFIGURATION ET INSTALLATION ADMINISTRATION###### depot_local() { mv /etc/apt/sources.list /etc/apt/sources.list.0 cp $INST/apt/sources.list /etc/apt/ sed s/\#LOCAL//g $INST/apt/sources.list > /etc/apt/sources.list apt-get update ## Installation des outils apt-get install -y vim iftop htop ssh mc netcat } installation_depot() { depot_internet() { ## NTP INSTALL ## ## Installation NTP apt-get install -y ntp ntp-doc ntp-simple ntpdate # Ajout des serveurs NTP cp $INST/ntp/ntp.conf /etc/ntp.conf # Ajout au démarrage et redémarrage du service NTP update-rc.d -f ntp defaults 50 /etc/init.d/ntpdate restart ################################# ## Configuration du sources.list pour les dépôts Internet## sed s/\#NET//g $INST/apt/sources.list > /etc/apt/sources.list ## Mise à jour de la liste apt-get update } case $1 in 1) depot_internet ;; 2) ;; 3) echo "Quit" exit 0 ;; esac } ################################################## # Script d'installation de la connection Internet # # argument 1 : choix effectué ################################################# installation_connection() { case $1 in 1) ;; 2) apt-get install -y arno-iptables-firewall pppoeconf ;; 3) ;; 4) echo "Quit" exit 0 ;; esac } ################################################# # # Script d'installation du serveur DNS # # argument 1 : choix effectué ################################################# installation_dns () { REPERTOIRE_DNS_CONF='/etc/bind' REPERTOIRE_DNS_ZONE='/etc/bind/data' parse_ip $EXCHANGE dns_serial local i i=1 case $1 in 1) # Installation du serveur DNS avec Redirecteurs ############################ echo "Installation du serveur DNS avec des redirecteurs" # Installation DNS ######################### apt-get install -y bind9 dnsutils if [ ! -d /etc/bind/data ] then mkdir /etc/bind/data fi # Définition des variables ######################## FICHIER='/etc/bind/named.conf.options' # Configuration host.conf ######################### cp $INST/bind/host.conf /etc/host.conf # Configuration du fichier /etc/bind/conf/named.conf.options ################################### cp $INST/bind/named.conf.options $FICHIER ## On rentre le redirecteur numéro 1 et on fais 0 pour terminer echo -e "\nRedirecteur numéro $i ? (ex : 10.0.43.1)" echo -e "Appuyez sur la touche [0] pour finir la configuration des redirecteurs" ## Tant qu'on n'a pas appuyé sur la touche <0> on continue while [ "$REDIRECTEUR" != 0 ] do ## Si ce n'est pas le premier redirecteur, on [re]demande un autre redirecteur if [ $i -ne 1 ] then # Dans ce cas on affiche une seule phrase echo -e "\nRedirecteur numéro $i ? (ex : 10.0.43.1)" read REDIRECTEUR else # Sinon on attend le redirecteur read REDIRECTEUR fi # Si la réponse est vide, on redemande le redirecteur while [ -z "$REDIRECTEUR" ] do echo -e "Désolé mais votre redirecteur est incorrect !" echo -e "Redirecteur numéro $i ? (ex : 10.0.43.1)" read REDIRECTEUR done # Si le redirecteur n'est pas égal à "0" dans ce cas on inscrit le redirecteur dans le fichier de configuration # de named.local.options if [ "$REDIRECTEUR" != 0 ] then echo -e "\t\t$REDIRECTEUR;" >> $FICHIER fi # On incrémente de 1 i=`expr $i + 1` done # On finalise le fichier. echo -e "\t};" >> $FICHIER echo -e "\tauth-nxdomain no;" >> $FICHIER echo -e "\tlisten-on-v6 { any; };" >> $FICHIER echo -e "\t};" >> $FICHIER # Configuration /etc/hosts sed s/\$EXCHANGE/$EXCHANGE/g $INST/bind/hosts | sed s/\$DOMAIN/$DOMAIN/g |sed s/\$HOSTNAME/$HOSTNAME/g > /etc/hosts # Configuration /etc/bind/named.conf sed s/\$DOMAIN/$DOMAIN/g $INST/bind/named.conf | sed s/\$IPREVERSE/$IPREVERSE/g | sed s/\#forwarders/forwarders/g > $REPERTOIRE_DNS_CONF/named.conf # Configuration /etc/bind/data/domaineDirect sed s/\$HOSTNAME/$HOSTNAME/g $INST/bind/rechercheDirecte | sed s/\$DOMAIN/$DOMAIN/g | sed s/\$AAAAMMJJXX/$AAAAMMJJXX/g | sed s/\$EXCHANGE/$EXCHANGE/g > $REPERTOIRE_DNS_ZONE/$DOMAIN # Configuration /etc/bind/data/domaineIndirecte sed s/\$DOMAIN/$DOMAIN/g $INST/bind/rechercheIndirecte | sed s/\$HOSTNAME/$HOSTNAME/g | sed s/\$IPREVERSE/$IPREVERSE/g | sed s/\$AAAAMMJJXX/$AAAAMMJJXX/g | sed s/\$OCTET4IP/$OCTET4IP/g > $REPERTOIRE_DNS_ZONE/$DOMAIN.reverse # Configuration /etc/resolv.conf sed s/\$DOMAIN/$DOMAIN/g $INST/bind/resolv.conf | sed s/\$EXCHANGE/$EXCHANGE/g > /etc/resolv.conf # Attribution des droits de lecture pour bind chown -R root:bind /etc/bind/data # Lancement du processus DNS update-rc.d -f bind9 defaults 50 /etc/init.d/networking restart /etc/init.d/bind9 restart ;; 2) ###Installation d'un serveur DNS sans redirecteurs echo "Installation du serveur DNS Simple (sans redirecteurs)" # Configuration host.conf ######################### cp $INST/bind/host.conf /etc/host.conf # Configuration /etc/hosts sed s/\$EXCHANGE/$EXCHANGE/g $INST/bind/hosts | sed s/\$DOMAIN/$DOMAIN/g |sed s/\$HOSTNAME/$HOSTNAME/g > /etc/hosts # Installation DNS ######################## apt-get install -y bind9 dnsutils if [ ! -d /etc/bind/data ] then mkdir /etc/bind/data fi # Configuration /etc/bind/named.conf sed s/\$DOMAIN/$DOMAIN/g $INST/bind/named.conf | sed s/\$IPREVERSE/$IPREVERSE/g > $REPERTOIRE_DNS_CONF/named.conf # Configuration /etc/bind/data/domaineDirect sed s/\$HOSTNAME/$HOSTNAME/g $INST/bind/rechercheDirecte | sed s/\$DOMAIN/$DOMAIN/g | sed s/\$AAAAMMJJXX/$AAAAMMJJXX/g | sed s/\$EXCHANGE/$EXCHANGE/g > $REPERTOIRE_DNS_ZONE/$DOMAIN # Configuration /etc/bind/data/domaineIndirecte sed s/\$DOMAIN/$DOMAIN/g $INST/bind/rechercheIndirecte | sed s/\$HOSTNAME/$HOSTNAME/g | sed s/\$IPREVERSE/$IPREVERSE/g | sed s/\$AAAAMMJJXX/$AAAAMMJJXX/g | sed s/\$OCTET4IP/$OCTET4IP/g > $REPERTOIRE_DNS_ZONE/$DOMAIN.reverse # Configuration /etc/resolv.conf sed s/\$DOMAIN/$DOMAIN/g $INST/bind/resolv.conf | sed s/\$EXCHANGE/$EXCHANGE/g > /etc/resolv.conf # Attribution des droits pour l'utilisateur root et le groupe bind chown -R root:bind /etc/bind/data # Lancement du processus update-rc.d -f bind9 defaults 50 /etc/init.d/networking restart /etc/init.d/bind9 restart ;; 3) # Configuration /etc/hosts sed s/\$EXCHANGE/$EXCHANGE/g $INST/bind/hosts | sed s/\$DOMAIN/$DOMAIN/g | sed s/\$HOSTNAME/$HOSTNAME/g > /etc/hosts ##Demande du serveur DNS du réseau ## On rentre le redirecteur numéro 1 et on fais C pour terminer echo -e "\nAdresse IP du DNS numéro $i ? (ex : 10.0.25.250)" echo -e "Appuyez sur la touche [0] pour finir la configuration des serveurs de DNS" # Copie de sauvegarde de l'ancien resolv.conf cp /etc/resolv.conf /etc/resolv.conf.0 echo '' > /etc/resolv.conf ## Tant qu'on a pas appuyer sur la touche <0> on continue while [ "$IP_DNS" != 0 ] do ## Si ce n'est pas le premier serveur DNS, on redemande une autre adresse ip if [ $i -ne 1 ] then # Dans ce cas on affiche une seule phrase echo -e "\nDNS numéro $i ? (ex : 10.0.25.250)" read IP_DNS else # Sinon on attends le redirecteur read IP_DNS fi # Si la réponse est vide, on redemande le redirecteur while [ -z "$IP_DNS" ] do echo -e "\nDésolé mais votre adresse IP est incorrecte !" echo -e "DNS numéro $i ? (ex : 10.0.25.250)" read IP_DNS done # Si le redirecteur n'est pas égal à "c" dans ce cas on inscrit le redirecteur dans le fichier de configuration # de named.local.options if [ "$IP_DNS" != 0 ] then echo -e "nameserver $IP_DNS" >> /etc/resolv.conf fi # On incrémente de 1 i=`expr $i + 1` done presenceFichier /etc/init.d/bind9 if [ $PRESENCE = 1 ] then update-rc.d -f bind9 remove /etc/init.d/bind9 stop fi ;; 4) echo "Quit" exit 0 ;; esac } ################################################# # # Script d'installation du serveur POSTFIX / IMAP / POP3 # # argument 1 : choix effectué ################################################# installation_mail () { REPERTOIRE_MAIL_CONF='/etc/postfix' # Procédure install_antiSpam # # Installation de spamassassin # Aucun argument #################### install_antiSpam() { # Installation de spamassassin apt-get install -y spamassassin spamc # Suppression puis Recréation du groupe et de l'utilisateur spamd userdel -r spamd groupadd spamd useradd -m -g spamd -s /sbin/nologin spamd # Copie du fichier de configuration standard cp $INST/spamassassin/local.cf /etc/spamassassin/ # Activation de Spamassassin (ENABLE=1) cp $INST/spamassassin/spamassassin /etc/default/spamassassin # Activation de Spamassassin au démarrage et redémarrage du processus update-rc.d spamassassin defaults 50 /etc/init.d/spamassassin restart } ########## FIN PROCEDURE INSTALLATION SPAMASSASSIN############## # Procédure install_antiVirus # # Installation de Amavisd-new # Aucun argument #################### install_antiVirus() { # Installation de l'antivirus apt-get install -y amavisd-new clamav-daemon clamav-freshclam # Installation des différents standard de compréssion pour permettre une recherche # approfondie dans les archives apt-get install -y arj bzip2 cabextract cpio file gzip lha lzop nomarch p7zip pax rar unrar unzip unzoo zip zoo # Ajout d'un utilisateur clamav dans le groupe amavis adduser clamav amavis # Configuration d'amavis sed s/\$DOMAIN/$DOMAIN/g $INST/amavis/amavisd.conf > /etc/amavis/amavisd.conf # Activation de Spamassassin au démarrage et redémarrage du processus update-rc.d amavis defaults 50 /etc/init.d/amavis restart /etc/init.d/postfix restart /etc/init.d/spamassassin restart } ######### FIN PROCEDURE INSTALLATION AMAVISD-NEW ############## #Procédure cas_ssl() # # Activation/Désactivation SSL du processus # Suivant l'argument 1 # # Argument 1 : nom du programme cas_ssl() { local PROCESSUS=$1 clear echo "Voulez vous exclusivement du cryptage SSL pour $PROCESSUS ? [o/n]" read CRYPT_SSL while [ "$CRYPT_SSL" != "o" ] && [ "$CRYPT_SSL" != "n" ] do echo "Choix invalide !" echo "Voulez vous exclusivement du cryptage SSL pour $PROCESSUS ? [o/n]" read CRYPT_SSL done NOMPROCESSUS=`echo "$PROCESSUS" | tr A-Z a-z` if [ "$CRYPT_SSL" == "o" ] then case $NOMPROCESSUS in "postfix") echo "Désactivation Postfix non SSL" ;; "imap") echo "Désactivation IMAP non SSL" presenceFichier /etc/init.d/courier-imap-ssl if [ $PRESENCE -eq 1 ] then # On supprime courier-imap de l'init du boot # On assure le démarrage de courier-imap-ssl au démarrage update-rc.d -f courier-imap remove update-rc.d courier-imap-ssl defaults 50 # Le processus courier-imap est stoppé et le SSL est redémarré /etc/init.d/courier-imap stop /etc/init.d/courier-imap-ssl restart else echo -e "[!!] IMAP n'est pas correctement installé\n" fi ;; "pop") echo "Désactivation POP non SSL" presenceFichier /etc/init.d/courier-pop-ssl if [ $PRESENCE -eq 1 ] then # On supprime courier-pop de l'init du boot # On assure le démarrage de courier-pop-ssl au démarrage update-rc.d -f courier-pop remove update-rc.d courier-pop-ssl defaults 50 # Le processus courier-pop est stoppé et le SSL est redémarré /etc/init.d/courier-pop stop /etc/init.d/courier-pop-ssl restart else echo -e "[!!] POP n'est pas correctement installé\n" fi ;; esac else clear echo "(L'accès en SSL de $PROCESSUS reste néanmoins possible)" case $NOMPROCESSUS in "postfix") echo "Activation Postfix non SSL" ;; "imap") echo "Activation IMAP non SSL" presenceFichier /etc/init.d/courier-imap-ssl if [ $PRESENCE -eq 1 ] then update-rc.d courier-imap defaults 50 update-rc.d courier-imap-ssl defaults 50 /etc/init.d/courier-imap restart /etc/init.d/courier-imap-ssl restart else echo -e "[!!] IMAP n'est pas correctement installé\n" fi ;; "pop") echo "Activation POP non SSL" presenceFichier /etc/init.d/courier-pop-ssl if [ $PRESENCE -eq 1 ] then update-rc.d courier-pop defaults 50 update-rc.d courier-pop-ssl defaults 50 /etc/init.d/courier-pop restart /etc/init.d/courier-pop-ssl restart else echo -e "[!!] POP n'est pas correctement installé\n" fi ;; esac fi } ###FIN PROCEDURE CAS_SSL ########### # Procédure selection_ssl() # # argument 1 : choix du type de messagerie # 1) INSTALLATION POSTFIX/IMAP # 2) INSTALLATION POSTFIX/POP # 3) INSTALLATION POSTFIX/IMAP/POP ########################## selection_ssl() { case $1 in 1) cas_ssl Postfix install_antiSpam install_antiVirus cas_ssl IMAP /etc/init.d/postfix stop /etc/init.d/amavis stop /etc/init.d/spamassassin stop /etc/init.d/clamav-daemon stop /etc/init.d/courier-imap stop /etc/init.d/courier-imap-ssl stop /etc/init.d/amavis start /etc/init.d/spamassassin start /etc/init.d/clamav-daemon start /etc/init.d/courier-imap stop /etc/init.d/courier-imap-ssl stop /etc/init.d/postfix start ;; 2) cas_ssl Postfix install_antiSpam install_antiVirus cas_ssl Pop /etc/init.d/postfix stop /etc/init.d/amavis stop /etc/init.d/spamassassin stop /etc/init.d/clamav-daemon stop /etc/init.d/courier-pop stop /etc/init.d/courier-pop-ssl stop /etc/init.d/amavis start /etc/init.d/spamassassin start /etc/init.d/clamav-daemon start /etc/init.d/courier-pop start /etc/init.d/courier-pop-ssl start /etc/init.d/postfix start ;; 3) cas_ssl Postfix install_antiSpam install_antiVirus cas_ssl IMAP cas_ssl Pop /etc/init.d/postfix stop /etc/init.d/amavis stop /etc/init.d/spamassassin stop /etc/init.d/clamav-daemon stop /etc/init.d/courier-pop stop /etc/init.d/courier-pop-ssl stop /etc/init.d/courier-imap stop /etc/init.d/courier-imap-ssl stop /etc/init.d/amavis start /etc/init.d/spamassassin start /etc/init.d/clamav-daemon start /etc/init.d/courier-pop start /etc/init.d/courier-pop-ssl start /etc/init.d/courier-imap start /etc/init.d/courier-imap-ssl start /etc/init.d/postfix start ;; esac } ###PROCEDURE FIN Selection SSL ################################# # PROCEDURE INSTALLATION POSTFIX install_postfix () { # Présence d'un relay ou non echo "Voulez-vous faire du relay host sur un SMTP particulier ? [o/n]" read RELAY while [ "$RELAY" != "o" ] && [ "$RELAY" != "n" ] do echo "Choix invalide !" echo "Voulez-vous faire du relay host sur le SMTP du FAI ? [o/n]" read RELAY done # Installation de Postfix dans tous les cas apt-get remove -y exim4-base exim4-daemon-light exim4-config apt-get install -y postfix mailx # Attribution des droits limités au fichier /etc/fetchmailrc, pour que personne ne puisse y accéder sauf root #chmod 600 /etc/fetchmailrc if [ "$RELAY" = "o" ] then echo -e "\nQuel est le relay SMTP ? (ex : smtp.unnom.com)" read SMTP_FAI # Configuration du /etc/postfix/main.cf sed s/\$NETWORK/$NETWORK/g $INST/postfix/main.cf | sed "s/\#relayhost = smtp.mon.fai/relayhost = $SMTP_FAI/g" | sed s/\$MASK/$MASK/g | sed s/\$DOMAIN/$DOMAIN/g | sed s/\$HOSTNAME/$HOSTNAME/g > /etc/postfix/main.cf else # Configuration du /etc/postfix/main.cf sed s/\$NETWORK/$NETWORK/g $INST/postfix/main.cf | sed s/\$MASK/$MASK/g | sed s/\$DOMAIN/$DOMAIN/g | sed s/\$HOSTNAME/$HOSTNAME/g > /etc/postfix/main.cf fi # Configuration du /etc/postfix/master.cf cp $INST/postfix/master.cf /etc/postfix/ # Configuration des Aliases pour root LOGIN=`echo "$POSTMASTER" | cut -d "@" -f 1` sed s/\$LOGIN/$LOGIN/g $INST/postfix/aliases > /etc/aliases # Réactualiser la base de donnée des alias newaliases # Configuration d'un squelette type pour chaque utilisateur cp -R $INST/profil/skel /etc/ cp $INST/profil/skel/.* /etc/skel/ chmod -R 750 /etc/skel/Maildir chmod -R 750 /etc/skel/.spamassassin chmod -R 750 /etc/skel/.bash_profile chmod -R 750 /etc/skel/.bashrc # Détection si l'administrateur qui vas recevoir tous les avertissements à déja été créé. presenceFichier /home/$LOGIN if [ ! $PRESENCE -eq 1 ] then clear echo "Veuillez saisir un mot de passe pour le responsable du serveur ($POSTMASTER)" read MDP_LOGIN apt-get install -y openssl groupadd mail useradd -m -g mail $LOGIN -s /bin/bash -p `openssl passwd -crypt "$MDP_LOGIN"` else cp -R /etc/skel/Maildir /home/$LOGIN/ cp -R /etc/skel/.spamassassin /home/$LOGIN/ chown $LOGIN:mail /home/$LOGIN/Maildir chown $LOGIN:mail /home/$LOGIN/.spamassassin fi } case $1 in 1) ###Installation du serveur Postfix et IMAP echo "Installation du serveur Postfix et IMAP" install_postfix # Installation d'IMAP ######################### apt-get install -y courier-imap-ssl # Selection SSL ou non de Posfix et IMAP ######################### selection_ssl $1 ;; 2) ###Installation du serveur Postfix et POP echo "Installation du serveur Postfix et POP" install_postfix # Installation de POP ######################### apt-get install -y courier-pop-ssl # Sélection SSL ou non de Postfix et POP ######################## selection_ssl $1 ;; 3) ###Installation du serveur Postfix, IMAP et POP echo "Installation du serveur Postfix, IMAP et POP" install_postfix # Installation IMAP et POP ######################### apt-get install -y courier-imap-ssl apt-get install -y courier-pop-ssl # Sélection SSL ou non de Postfix et POP ######################## selection_ssl $1 ;; 4) echo "Quit" exit 0 ;; esac } ############################################################################################ # # Script d'installation du WEBMAIL # # argument 1 : choix effectué ################################################# installation_webmail() { installation_adminpage() { # Copie des fichiers dans /var/www/admin cp -R $INST/apache/admin/ /var/www/ # Parse du fichier index.html sed s/\$DOMAIN/$DOMAIN/g $INST/apache/admin/index.html > /var/www/admin/index.html } case $1 in 1) installation_adminpage # Installation d'Apache apt-get install -y apache2 php4 php4-mysql php4-cli libapache2-mod-php4 # Installation de Squirrelmail apt-get install -y squirrelmail-locales # Configuration du fichier /usr/share/squirrelmail/config/config.php sed s/\$DOMAIN/$DOMAIN/g $INST/squirrelmail/config.php > /usr/share/squirrelmail/config/config.php # Configuration du fichier VHOST /etc/apache2/site-availables/default d'Apache 2.0.54 # Permet l'utilisation de l'adresse http://www.domain.com pour l'affichage de Squirrelmail ROOT_DOCUMENT='\/usr\/share\/squirrelmail\/' sed s/\$POSTMASTER/$POSTMASTER/g $INST/apache/default.vhost | sed "s/\$ROOT_DOCUMENT/$ROOT_DOCUMENT/g" > /etc/apache2/sites-available/default # Configuration de /etc/mailname sed s/\$DOMAIN/$DOMAIN/g $INST/squirrelmail/mailname > /etc/mailname # La localisation française de Squirrelmail n'est active que si on effectue une reconfiguration des locales dpkg-reconfigure locales ;; 2) # Installation de la page d'administration installation_adminpage # Définition du root document dans le /etc/apache2/sites-availables/default ROOT_DOCUMENT='\/var\/www\/admin\/' sed s/\$POSTMASTER/$POSTMASTER/g $INST/apache/default.vhost | sed "s/\$ROOT_DOCUMENT/$ROOT_DOCUMENT/g" | sed 's/\#Alias \/admin/Alias \/admin/g' > /etc/apache2/sites-available/default # Redémarrage d'Apache2 /etc/init.d/apache2 restart ;; 3) echo "Quit" exit 0 ;; esac } ########################################################################################### # # Script d'installation du monitoring # # argument 1 : choix effectué ################################################# installation_monitoring() { install_phpsysinfo() { clear echo -e "Installation de PHPSysInfo" # Installation d'Apache apt-get install -y apache2 php4 php4-mysql php4-cli libapache2-mod-php4 # Installation de PHPSysINFO apt-get install -y phpsysinfo if [ $TYPE_WEBMAIL -eq 1 ] then # Configuration du fichier VHOST d'Apache2 ROOT_DOCUMENT='\/usr\/share\/squirrelmail\/' else ROOT_DOCUMENT='\/var\/www\/admin\/' fi sed s/\$POSTMASTER/$POSTMASTER/g $INST/apache/default.vhost | sed "s/\$ROOT_DOCUMENT/$ROOT_DOCUMENT/g" | sed 's/\#Alias \/phpsysinfo/Alias \/phpsysinfo/g' | sed 's/\#Alias \/admin/Alias \/admin/g' > /etc/apache2/sites-available/default # Redémarrage d'Apache2 /etc/init.d/apache2 restart } install_cacti() { clear echo -e "Installation de CACTI" apt-get install -y mysql-server cacti # Configuration variable base de donnée BASE=cacti # On redemande le mot de passe inséré lors de l'installation de Cacti echo -e "\nQuel est le mot de passe pour l'utilisateur CACTI ?" echo -e "(Le même mot de passe que pendant l'installation de Cacti)" read MDP_CACTI # Création de l'utilisateur CACTI en local sur la machine useradd -m cacti -s /bin/false -p `openssl passwd -crypt "$MDP_CACTI"` # Redémarrage de mysql /etc/init.d/mysql restart # On demande le mot de passe pour le Root echo -e "Quel est le mot de passe pour l'administrateur ROOT de la base MySQL ?" read MDP_ROOT # Modification du mot de passe Root de la base MySQL `mysql -u root -e "update mysql.user set Password=PASSWORD('$MDP_ROOT') WHERE User='root'"` # Création d'une base de donnée CACTI `mysql -u root --password=$MDP_ROOT -e "create database $BASE"` # Ajout de droits sur la base de donnée Cacti pour l'utilisateur Cacti `mysql -u root --password=$MDP_ROOT -e "grant all privileges on $BASE.* to cacti@localhost identified by '"$MDP_CACTI"';" ` # Création des différentes tables pour la base de donnée Cacti `zcat /usr/share/doc/cacti/cacti.sql.gz | mysql -u cacti --password=$MDP_CACTI $BASE` case $TYPE_WEBMAIL in 1) ROOT_DOCUMENT='\/usr\/share\/squirrelmail\/' ;; 2) ROOT_DOCUMENT='\/var\/www\/admin\/' #ROOT_DOCUMENT='\/var\/www\/roundcubemail\/' ;; 3) ROOT_DOCUMENT='\/var\/www\/admin\/' ;; esac sed s/\$POSTMASTER/$POSTMASTER/g $INST/apache/default.vhost | sed "s/\$ROOT_DOCUMENT/$ROOT_DOCUMENT/g" | sed 's/\#Alias \/phpsysinfo/Alias \/phpsysinfo/g' | sed 's/\#Alias \/cacti/Alias \/cacti/g' | sed 's/\#Alias \/admin/Alias \/admin/g' > /etc/apache2/sites-available/default # Redémarrage /etc/init.d/apache2 restart /etc/init.d/mysql restart # Résumé de la configuration echo "Résumé de la configuration" echo -e "---------------------------\n\n" echo -e "Identifiants pour l'administration de la base MySQL\n" echo "Login : root" echo -e "Mot de passe : $MDP_ROOT\n" echo "Login : cacti" echo -e "Mot de passe : $MDP_CACTI\n\n\n" echo -e "Identifiants pour l'administration de cacti\n\n" echo "Login : admin" echo "Mot de passe : admin" echo -e "Connectez vous sur http://www.$DOMAIN/cacti/ pour configurer CACTI" sleep 10 } case $1 in 1) install_phpsysinfo install_cacti ;; 2) ;; 3) echo "Quit" exit 0 ;; esac } # # Script d'installation de Squid # # argument 1 : choix effectué ################################################# installation_proxy() { case $1 in 1) # Installation de Squid apt-get install -y squid arno-iptables-firewall # Activation du routage sous Linux echo 1 > /proc/sys/net/ipv4/ip_forward cp $INST/squid/options /etc/network/options # Ajout de règles iptables iptables -A FORWARD -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ;; 2) ;; 3) ;; 3) echo "Quit" exit 0 ;; esac } ################################################# # # Script d'installation des outils de controle à distance # # argument 1 : choix effectué ################################################# installation_distance() { install_webmin() { # Installation de Webmin #apt-get install -y webmin webmin-bind webmin-fetchmail webmin-firewall webmin-status apt-get install -y webmin webmin-fetchmail webmin-firewall webmin-status webmin-bind # Copie du fichier de configuration cp $INST/webmin/miniserv.conf /etc/webmin/miniserv.conf } install_ssh() { # Installation SSH apt-get install -y ssh } install_phpmyadmin() { # Installation PHPMyAdmin apt-get install -y phpmyadmin # Configuration du VHOST D'Apache2 if [ $TYPE_WEBMAIL -eq 1 ] then # Configuration du fichier VHOST d'Apache2 ROOT_DOCUMENT='\/usr\/share\/squirrelmail\/' else ROOT_DOCUMENT='\/var\/www\/admin\/' fi sed s/\$POSTMASTER/$POSTMASTER/g $INST/apache/default.vhost | sed "s/\$ROOT_DOCUMENT/$ROOT_DOCUMENT/g" | sed 's/\#Alias \/phpsysinfo/Alias \/phpsysinfo/g' | sed 's/\#Alias \/cacti/Alias \/cacti/g' | sed 's/\#Alias \/admin/Alias \/admin/g' > /etc/apache2/sites-available/default } case $1 in 1) install_webmin install_ssh install_phpmyadmin ;; 2) ;; 3) echo "Quit" exit 0 ;; esac } ########################################################################################### ######################### CONFIGURATION DU SERVEUR ############################################### ########################### MENU D'INSTALLATION ############################ clear echo -e "\n\t\t\t Installation automatique d'OpenK $VERSION \n" echo -e "\n Que souhaitez-vous configurez ? \n" echo -e "\n Faites votre choix (Entrer le chiffre correspondant à votre choix) \n" echo -e "1. Configuration du serveur" echo -e "2. Connection Internet" echo -e "3. Serveur DNS" echo -e "4. Serveur de Messagerie" echo -e "5. Serveur Webmail" echo -e "6. Outils de Surveillance" echo -e "7. Serveur Proxy" echo -e "8. Prise en main à Distance" echo -e "9. Mise à jour du système et des logiciels" echo -e "10. Quitter" read CHOIX #test $CHOIX 3 while [ "$CHOIX" > 0 ] do while [ "$CHOIX" == 1 ] do clear echo -e "\n\n\t\t\t Installation automatique d'OpenK $VERSION \n" echo -e "\t\t\t (MAJ : $RELEASE)" echo -e "\nEntrer le nom du serveur (nom court, ex : mail):" read HOSTNAME echo -e "\nEntrer le nom du domaine principal de messagerie (ex : openk.org):" read DOMAIN echo -e "\nEntrer l'adresse de messagerie du responsable (ex : postmaster@openk.org):" read POSTMASTER echo -e "\nEntrer l'adresse IP du réseau (ex : 10.3.0.0):" read NETWORK echo -e "\nEntrer le masque de réseau (format décimal, ex : 16):" read MASK echo -e "\nEntrer l'adresse IP du serveur de Messagerie (ex : 10.3.29.4):" read EXCHANGE echo -e "\nRésumé de la configuration:\nFQDN:\t\t\t$HOSTNAME.$DOMAIN" echo -e "Postmaster:\t\t$POSTMASTER" echo -e "Network:\t\t$NETWORK/$MASK\nRelay to:\t\t$EXCHANGE" echo -e "\nÊtes-vous sur de vouloir continuer ? [o/n] " read CONTINUE if [ "$CONTINUE" != "o" ] && [ "$CONTINUE" != '' ]; then exit 0 fi ### Variable d'environnement INST=`pwd`/packages ################## ######## Copie du dépôt local sur le disque dur et configuration de celui-ci echo -e "Veuillez attendre quelques minutes pour la copie du dépôt sur le disque dur...." cp -R $INST/depot/ /root/depot/ cp -R $INST/profil/skel/.spamassassin /root/ cp -R $INST/profil/skel/Maildir /root/ source /root/.bashrc depot_local ############################################# $CHOIX == 0 done while [ "$CHOIX" == 2 ] do clear ######## CHOIX TYPE DE CONNECTION #################################### echo -e "\n\nQuel est votre type de connection Internet ? [1|2|3|4]\n" echo -e "1 - Connection internet par routeur (Configuration effectuée lors de l'installation)" echo -e "2 - Connection par modem adsl (adsl-connect & PPPoE) " echo -e "3 - Pas de connection internet" echo -e "4 - Sortir" read TYPE_CONNECTION is_numeric $TYPE_CONNECTION 4 while [ "$is_numeric" == 0 ] do echo "Choix invalide !" echo -e "\nQuel est votre type de connection Internet ? [1/2/3/4] " read TYPE_CONNECTION is_numeric $TYPE_CONNECTION 4 done installation_connection $TYPE_CONNECTION ################################################################ sleep 2 $CHOIX=0 done while [ "$CHOIX" == 3 ] do clear ########CHOIX SERVEUR DNS ########################################## echo -e "\n\nMise en place d'un serveur DNS ? [1|2|3|4]\n" echo -e "1 - Serveur DNS avec des redirecteurs" echo -e "2 - Serveur DNS Simple (sans redirecteurs)" echo -e "3 - Pas de serveur DNS" echo -e "4 - Sortir" read TYPE_DNS is_numeric $TYPE_DNS 4 while [ "$is_numeric" == 0 ] do echo "Choix invalide !" echo -e "\nMise en place de DNS ? [1|2|3|4] " read TYPE_DNS is_numeric $TYPE_DNS 4 done installation_dns $TYPE_DNS ############################################################### sleep 2 $CHOIX=0 done while [ "$CHOIX" == 4 ] do clear #########CHOIX DE MESSAGERIE ####################################### echo -e "\nMise en place de la messagerie ? [1|2|3|4]" echo -e "(Antivirus et Anti-Spam installés par défaut)\n" echo "1 - Postfix / IMAP" echo "2 - Postfix / POP" echo "3 - Postfix / IMAP / POP" echo "4 - Sortir" read TYPE_MAIL is_numeric $TYPE_MAIL 4 while [ "$is_numeric" == 0 ] do echo "Choix invalide !" echo -e "Mise en place de la messagerie ? [1|2|3|4]" read TYPE_DNS is_numeric $TYPE_MAIL 4 done installation_mail $TYPE_MAIL ############################################################### $CHOIX=0 done sleep 2 while [ "$CHOIX" == 5 ] do clear #################INSTALLATION D'UN WEBMAIL ########################## echo -e "\nMise en place d'un Webmail ? [1|2|3]\n" echo "1 - Squirrelmail" echo "2 - Aucun" echo "3 - Sortir" read TYPE_WEBMAIL is_numeric $TYPE_WEBMAIL 3 while [ "$is_numeric" == 0 ] do echo "Choix invalide !" echo "Mise en place d'un Webmail ?" read TYPE_WEBMAIL is_numeric $TYPE_WEBMAIL 3 done installation_webmail $TYPE_WEBMAIL ############################################################## sleep 2 done while [ "$CHOIX" == 6 ] do clear #################INSTALLATION PROGRAMMES DE MONITORING ################# echo -e "\nMise en place des outils de surveillance [1|2|3]\n" echo "1 - PHPSysInfo - MRTG - CACTI" echo "2 - Aucun" echo "3 - Sortir" read TYPE_MONITORING is_numeric $TYPE_MONITORING 3 while [ "$is_numeric" == 0 ] do echo "Choix invalide !" echo "Mise en place des outils de surveillance" read TYPE_MONITORING is_numeric $TYPE_MONITORING 3 done installation_monitoring $TYPE_MONITORING ############################################################### sleep 2 done while [ "$CHOIX" == 7 ] do clear #################INSTALLATION D'UN PROXY ########################### echo -e "\nMise en place de Squid (Proxy)" echo "1 - Solution : Cache" echo "2 - Solution : Cache + Filtrage [ !! NON DISPONIBLE !! ]" echo "3 - Aucun" echo "4 - Sortir" read TYPE_PROXY is_numeric $TYPE_PROXY 4 while [ "$is_numeric" == 0 ] do echo "Choix invalide !" echo "\nMise en place de Squid (Proxy)" read TYPE_PROXY is_numeric $TYPE_PROXY 4 done installation_proxy $TYPE_PROXY ################################################################ sleep 2 done while [ "$CHOIX" == 8 ] do clear #################INSTALLATION PRISE EN MAIN A DISTANCE ################## echo -e "\nMise en place des outils de prise en main à distance [1|2|3]\n" echo "1 - Webmin - SSH - PHPMyAdmin" echo "2 - Aucun" echo "3 - Sortir" read TYPE_DISTANCE is_numeric $TYPE_DISTANCE 3 while [ "$is_numeric" == 0 ] do echo "Choix invalide !" echo "Mise en place des outils de prise en main à distance [1|2|3]" read TYPE_DISTANCE is_numeric $TYPE_DISTANCE 3 done installation_distance $TYPE_DISTANCE ############################################################### sleep 2 done clear #~ #################INSTALLATION OUTILS SAUVEGARDE ###################### #~ echo -e "\nMise en place d'une sauvegarde automatique [ !! EN COURS !! CHOISIR 1 ou 2 POUR CONTINUER ]\n" #~ echo "1 - RSync / Cron" #~ echo "2 - Aucune" #~ echo "3 - Sortir" #~ read TYPE_SAUVEGARDE #~ is_numeric $TYPE_SAUVEGARDE 3 #~ while [ "$is_numeric" == 0 ] #~ do #~ echo "Choix invalide !" #~ echo "Mise en place d'une sauvegarde automatique" #~ read TYPE_SAUVEGARDE #~ is_numeric $TYPE_SAUVEGARDE 3 #~ done #~ installation_sauvegarde $TYPE_SAUVEGARDE #~ ############################################################### #done sleep 2 while [ "$CHOIX" == 9 ] do clear #################SOURCES.LIST###################### echo -e "\nMise en place du dépôt Debian (/etc/apt/sources.list) : distant ou local ?\n" echo "1 - Distant" echo "2 - Local" echo "3 - Sortir" read TYPE_SOURCE is_numeric $TYPE_SOURCE 3 while [ "$is_numeric" == 0 ] do echo "Choix invalide !" echo "Local ou distant ?" read TYPE_SAUVEGARDE is_numeric $TYPE_SOURCE 3 done installation_depot $TYPE_SOURCE ############################################################### done #while [ "$CHOIX" == 10 ] #do #exit 0 echo -e "\n\n\tOpenK : Installation des composants terminée.\n\n" exit 0 done