Inscrivez-vous maintenant pour accéder à toutes nos fonctionnalités. Une fois inscrit et connecté, vous pourrez créer des sujets, publier des réponses aux discussions existantes, donner de la réputation à vos collègues, obtenir votre propre messager privé, publier des mises à jour de statut, gérer votre profil et bien plus encore. Si vous avez déjà un compte, connectez-vous ICI autrement Inscription un compte gratuit aujourd'hui!
-
Compteur de contenus
84 -
Inscription
-
Dernière visite
-
Jours gagnés
1
Tout ce qui a été posté par dokkun
-
Ha le cloud, la tête dans les nuages, le nuage maîtrisé comme dirait l’autre. La grosse révolution qui en faite n’en est pas une. La vrai révolution se passe plus au niveau de la simplicité d’utilisation pour l’utilisateur lambda grâce à des applications clientes qui se charge de synchroniser vos données plutôt que du coté serveur !!! Lors de l’article précédent je vous montrais l’intérêt financier pour une société de mettre en place un système owncloud plutôt que de choisir une solution propriétaire comme dropbox ou google drive. Voyons maintenant comment installer owncloud. Installation Préambule Nous sommes sur une Vm avec 4Go de Ram, un disque dur de 150Go et deux fois deux cœur. J’installe une debian wheezy 64 bit avec un un disque en partition LVM. Préparation . Bien que owncloud propose un paquet pour faciliter l’installation il va falloir avant installer quelques paquets util. apt-get install vim htop screen rsync zip iftop git joe iotop tmux fail2ban rkhunter mysql-server postfix Les deux paquets vraiment intéressants sont mysql-server et postfix mysql-server a la base le owncloud s installe avec sqllite, mais pour l’utilisation de certaines applications il est nécessaire d’avoir un serveur MySql postfix afin de permettre l’envoi de mail. Pensez à créer votre base de données et votre utilisateur echo 'debhttp://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/ /' >>/etc/apt/sources.list.d/owncloud.list wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/Release.key apt-key add - < Release.key apt-get update apt-get install owncloud L’installation terminée, nous allons maintenant configurer apache. En effet le paquet ne pas va vous faire cette partie de la configuration. On va donc configurer un virtualhost specialement pour owncloud et activer le ssl. Nous forcerons la connexion en https pour une plus grande sécurité. cd /etc/apache2/sites-available/ vim owncloud.conf Copier ce qui suit en modifiant le servername du virtualhost <IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin webmaster@localhost ServerName votrenomdedomaine.com DocumentRoot /var/www/owncloud <Directory /var/www/owncloud> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/owncloud_ssl_access.log combined ErrorLog ${APACHE_LOG_DIR}/owncloud_ssl_error.log SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key <FilesMatch ".(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 # MSIE 7 and newer should be able to use keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost> </IfModule> <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName votrenomdedomaine.com DocumentRoot /var/www/owncloud <Directory /var/www/owncloud> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined ErrorLog ${APACHE_LOG_DIR}/error.log </VirtualHost> a2enmod ssl a2enmod headers a2dissite default a2ensite owncloud.conf /etc/init.d/apache2 restart Connectez vous sur https://monnomdedomaine.fr Vous arrivez à cette page : Dans cet écran vous définissez : Votre login de connexion administrateur Votre mot de passe le chemin absolu de stockage des fichiers le type de base de données, on sélectionne bien sur Mysql le login de connexion a la base le mot de passe associé le nom de la base et le serveur le plus souvent localhost Vous cliquez sur Terminer l’installation , voila c’est fini vous arrivez sur cette page : Dans les prochains articles nous verrons : Comment installer les clients owncloud Les applications Owncloud La configuration de Owncloud
-
Il existe de nombreuses façons de lutter contre le spam. Voici une méthode qui permet de vous protéger contre l’usurpation de nom de domaine. Pour cela nous allons très simplement créer un enregistrement SPF (Sender Policy Framework ) dans vos DNS. Définition Le SPF est un type d’enregistrement DNS qui détermine les serveurs de messagerie autorisés à envoyer des messages au nom de votre domaine. Création du SPF En premier lieu allez sur cette page :http://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard Sur le premier écran entrez votre nom de domaine puis next Sur le deuxième écran vous avez un récapitulatif de la vérification du domaine, faites next Nous allons maintenant créer le spf, je vais détailler section par section Domain Not Used for Sending E-Mail Cochez cette case si votre domaine n envoie jamais de mail Inbound Mail Servers Send Outbound Mail Cochez la liste de vos mx déclarés , en dessous vous avez un champs permettant de rajouter d’autres serveur mx non déclarés dans vos dns Outbound Mail Server Addresses Pour ne pas avoir à mettre tous mes serveurs reliés à ce nom de domaine, je coche uniquement la première case vu que j’ai bien tout défini dans mon serveur dns Dans la dernière case, vous pouvez ajouter les alias à votre nom de domaine principal. Reverse DNS Lookup Si vous avez la possibilité de faire du reverse dns, chose toujours bonne mais pas toujours faisable pour plusieurs domaines sur une ip. Outsourced Domains Si vous avez d’autres serveurs smtp comme mailchimp par exemple, qui envoie des mails en votre nom, c’est ici que vous les insérez. Default Étant sûr de moi ,à la première question, j’ai répondu que mon domaine envoyait bien des mails que par les adresses identifiées au dessus. Faites enfin next pour générer votre enregistrement spf Copiez le résultat. Rendez vous dans la gestion de votre zone dns là oû est enregistré votre nom de domaine et collez dedans : IN TXT v=spf1 a mx:mail.admin-systeme.com a:mail.admin-systeme.com -all Voila votre spf est en place. Il n’y a plus qu’a le tester après que la propagation dns soit effectuée. Ci dessous un lien pour ce qui voudrait apprendre la syntaxe complète de SPF http://www.zytrax.com/books/dns/ch9/spf.html
-
Aujourd’hui en voulant écrire un tutoriel, je me suis rendu compte que je n’avais pas de logiciel pour vous faire de jolis schémas. Je me suis aussi rendu compte à quel point dans une documentation, certaines notions ne sont facilement explicables qu’avec justement un schéma. Présentation de DIA Dia est un logiciel libre de création de diagramme. L’un des atouts de dia est qu’il peut être scripter en python et génère des bouts de code suivant vos schémas UML. Très modulaire, on peut dire que c est un sérieux concurrent à visio. Installation sur une débian L’installation est très simple, nous allons installer deux paquets dia dia-shapes Le premier est le logiciel par lui même, le second est une bibliothèque de formes très utile pour faire facilement des schémas représentatifs apt-get install dia dia-shapes Créez sa propre feuille de forme nous allons maintenant personnaliser nos graphiques et pour cela créer notre propre feuille de forme. C’est un travail lent et minutieux mais qui va s avérer très rentable lors de la création de nos diagrammes. Nous passerons en root puisque les fichiers des dia se trouve dans /usr/share/dia/ nous allons créer une bibliothèque nommée serveur mkdir /usr/share/dia/shapes/serveur && chmod 777/usr/share/dia/shapes/serveur Création d’une forme Lancez dia et faites outils->image Dessinez un rectangle sur votre espace de travail puis clic droit sur le rectangle et propriété parcourir pour trouver le fichier image Puis faire Fichier>Exporter sélectionnez le type de fichier : fichier de forme dia (*.shape) et enregistrez le dans le répertoire : /usr/share/dia/shapes/serveur Deux fichiers seront ainsi créés dans le répertoire, un .shape et un .png Déclarer une nouvelle feuille de forme Maintenant que nous avons créer nos formes il faut faire en sorte que dia les gère dans sa bibliothèque. Pour cela nous allons créer un fichier xml contenant la description des objets : vim /usr/share/dia/sheets/serveur.sheets <?xml version="1.0" encoding="UTF-8"?> <sheet xmlns="http://www.lysator.liu.se/~alla/dia/dia-sheet-ns"> <name>serveur</name> <name xml:lang="fr">Serveur info</name> <description>Ma feuille de forme pour mes diagrammes perso</description> <description xml:lang="fr">Ma feuille de forme pour mes diagrammes perso</description> <contents> <object name="serveur - serveur_linux"> <description>serveur sous linux</description> <description xml:lang="fr">Serveur sous linux</description> </object> <object name="serveur - firewall"> <description>firewall</description> <description xml:lang="fr">firewall</description> </object> </contents> </sheet> Décryptage : name : nom du répertoire de votre nouvelle feuille de forme object name= « nom du répertoire – nom du fichier sans extension » Redémarrez dia, vous avez votre feuille personnalisée Lien externe Voila un site plus qu’intéressant, vous allez y trouver plein de clipart open source http://openclipart.org/
-
Préambule Afin de tester OBM en mode déployé, j ai décidé de mettre en place plusieurs VM sous debian sur mon ESXI hébergé sous ovh. Désirant avant tout tester les points d’accès à OBM dans ce type d’infra je voulais que seul un serveur ai une ip publique et que tous les autres soient sur un LAN. Déjà cela m’évitais d’avoir plusieurs ip failover a acheter à OVH. Mais pour que cela marche il me faut faire en sorte que mes serveurs sur le LAN puissent accéder tout de même à internet pour leur installation et mise à jour. Dans ce tutoriel, je vais vous montrer comment mettre en place sur votre esxi ce type de réseau virtualisé. Préparation de l’esxi Les switchs En tout premier lieu il va falloir créer un nouveau switch dont l’étiquette réseau sera LAN. Dans votre vsphere : Clic sur l’ip de votre serveur -> onglet configuration a droite -> encart matériel clic sur mise en réseau En haut à droite ajouter gestion réseau Sélectionner en type connexion : Machine virtuelle puis suivant et encore suivant Dans étiquette réseau mettre LAN puis suivant et terminé. Voila votre switch est maintenant opérationnel. A ce stade vous avez maintenant deux switch, un vSwitch0 qui lui est connecté à la carte réseau de votre ESXI et le vSwitch1 qui va servir à créer votre LAN interne à l’ESXI Configuration des VM Il a deux types de VM La VM ayant accès a internet et faisant le partage Les VM du LAN n’ayant pas d’ip publique. LA VM PARTAGEANT LA CONNEXION INTERNET. Elle aura besoin de deux adaptateurs réseaux un sur le VM Network relié à internet et l’autre sur le réseau LAN. LES VM DU LAN N’AYANT PAS D’IP PUBLIQUE. Une seule interface réseau reliée uniquement sur le LAN. Paramétrage des machines sous debian Voila un schéma de ce à quoi nous devons arriver. Paramétrage du serveur partageant sa connexion internet. PARAMÉTRAGE CARTE RÉSEAU Nous devons définir les cartes eth0 (connectée au VM NETWORK) et eth1 (connectée à LAN). éditez le fichier /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 188.165.59.111 netmask 255.255.255.255 broadcast 188.165.59.111 post-up route add 94.23.17.254 dev eth0 post-up route add default gw 94.23.17.254 post-down route del 94.23.17.254 dev eth0 post-down route del default gw 94.23.17.254 allow-hotplug eth1 iface eth1 inet static address 192.168.4.1 netmask 255.255.255.0 broadcast 192.168.4.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 213.186.33.99 dns-search ovh.com MISE À JOUR DU NOYAU Maintenant que les cartes sont ok, nous allons activer la fonction de fowarding d’ip dans le noyau. éditez le fichier : /etc/sysctl.conf dé-commentez la ligne : net.ipv4.ip_forward=1 Configuration du firewall iptable Nous allons créer un fichier autoloader au démarrage pour initialiser le firewall vim /etc/network/if-pre-up.d/iptables-start et coller ceci dedans #!/bin/sh # REMISE à ZERO des règles de filtrage iptables -F iptables -t nat -F # Forwarfind ou eth0 est l interface connectée à internet iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE on rend le script exécutable chmod a+x /etc/network/if-pre-up.d/iptables-start Voila la machine est prête. Paramétrage des serveurs sur le LAN Nous aurons juste qu’a paramétrer l’interface réseau. voici un exemple : allow-hotplug eth0 iface eth0 inet static address 192.168.4.2 netmask 255.255.255.0 network 192.168.4.0 broadcast 192.168.4.255 gateway 192.168.4.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 213.186.33.99 Voila tout est en place
-
Introduction Lorsque l on possède un site, il est bien sur ouvert au monde entier, il peut être interessant de savoir de quels pays viennent les internautes pour par exemple : leur fournir un contenu différent afficher le site dans la bonne langue… Il existe de multiples solutions, gratuites ou payantes. On peut acheter une base de donnée ou passer par des webservices. Les webservices Le probleme majeur dans ce type de solution reste le temps de latence entre la demande et le resultat ce qui peut donc ralentir grandement votre site. De plus vous êtes tributaire d’un prestataire qui peut très bien avoir une coupure de service ou meme carrément tout arréter du jour au lendemain. Les bases de donnée. Solution bien souvent payante mais qui a l avantage d être plus rapide. elle peut néanmoins consommer pas mal de ressources suivant sur votre site. La solution !!! A force de recherche j ai fini par trouver une vrai solution efficace qui merite d être connue!! Il existe une bibliothèque native dans php qui fait ce travail : geoip !!! Je vais donc vous montrer comment la mettre sous php5 sur une debian et l accoupler avec une banque de donnée gratuite de maxmind que nous mettrons a jour grâce à un cron. Installation Allez c est parti pour un tour, on va commencer par récupérer la base de donnée d ip par pays disponible via maxmind wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz gunzip GeoLiteCity.dat.gz mkdir /usr/share/GeoIP mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat Maintenant on installe la librerie qu il nous faut apt-get update apt-get install php5-geoip Il nous reste plus qu a faire une petite configuration dans le fichier .ini de geoip echo "geoip.custom_directory = /usr/share/GeoIP" >>/etc/php5/conf.d/geoip.ini On reload apache /etc/init.d/apache2 restart On verifie avec un phpinfo qui devrait vous donnez cela : Utilisation L utilisation de la bibliotheque est très très simple je vous renvoie à la doc sur le site php pour plus d info : http://www.php.net/manual/fr/book.geoip.php Voici un exemple très simple pour tester : echo "<pre>"; print_r(geoip_record_by_name($_SERVER['REMOTE_ADDR'])); echo "</pre>"; Qui donne le résultat suivant : Array ( [continent_code] => EU [country_code] => FR [country_code3] => FRA [country_name] => France [region] => [city] => [postal_code] => [latitude] => 46 [longitude] => 2 [dma_code] => 0 [area_code] => 0 ) Et le tour est joué. Cette base est gratuite et ne possède pas beaucoup de donnée mais vous pouvez très bien avoir plus d information avec une base payante. Mise à jour Maintenant que tout cela marche bien il est temps de mettre tout cela à jour de manière automatique grâce a un cron Perso moi je veux faire la mise a jour une fois par semaine touch /etc/cron.weekly/geoip_update.sh chmod a+x /etc/cron.weekly/geoip_update.sh Editez le fichier et coller les lignes suivantes cd ~ wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz gunzip GeoLiteCity.dat.gz mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat Voila le tour est joué
-
Lorsque l’on possède un seul serveur, on peut facilement retenir le mot de passe root, ou pas si on s’appelle Dori la pote de Némo… Mais lorsque comme moi vous devez jongler entre le travail et la maison avec environ 200 machines, là retenir 200 mots de passe différents ça devient plus compliqué. Alors pour se simplifier la tâche, nous allons mettre en place une clé ssh, reconfigurer le serveur openssh et nous créer des alias sur notre machine histoire de nous faciliter la connexion au machine. Création de la clé ssh La clé ssh marche avec la combinaison de deux fichiers. Une partie publique que l’on déploie sur les serveurs et la partie privée que l’on conserve précieusement sur votre $HOME Nous allons donc générer ces deux fichiers. Pour cela il faut commencer par installer notre client SSH : apt-get update && apt-get install openssh-client Ps : Notez l’utilisation de l’opérateur && à la place de & le && ne lance la suite que lorsque la première partie est entièrement finie. Nous générons ensuite la clé ssh-keygen -t rsa -b 2048 ssh-keygen prend ici deux paramètres : -t : Permet de spécifier le type de clé. je vous invite à lire le man pour voir les 4 possibilités suivant le protocole (à noter que le dsa est limité à un encryptage de 1024bits, c’est pour cela que je préfère le rsa). -b : 2048 représente le niveau d’encryptage de la clé, ici j ai mis 2048 bits. Il vous faut répondre maintenant à une série de questions, dont celle ci, qui permet surtout de nommer votre clé !! Enter file in which to save the key (/home/ivanb/.ssh/id_rsa) : Entrez le chemin complet en modifiant le id_rsa par cle_perso_serv, enfin ce que vous voulez. Enter passphrase (empty for no passphrase): Si vous laissez vide pas besoin de mot de passe, par contre si vous saisissez un mot de passe, il faudra le saisir pour que la clé fonctionne. Bon certain rabat-joie vont me dire « je ne vois pas l’intérêt de faire une clé pour mettre un mot de passe dessus! ». On parle d’une clé root ici, on est jamais trop parano. De plus, la saisie du mot de passe en passant par votre bureau ne se fera qu’une fois puisque l’agent ssh va stocker. C’est un peu comme si vous déverrouillez votre coffre fort. Pour toutes les autres connexions sur les serveurs utilisant cette clé, il n’y aura plus besoin de la ressaisir. Maintenant vous avez deux fichiers : cle_perso_serv et cle_perso_serv.pub Installation de la clé Il ne reste plus qu’à installer votre clé publique sur votre serveur. En premier lieu il faut que sur le serveur vous ayez déjà défini un compte avec le login et le mot de passe. ssh-copy-id -i ~/.ssh/cle_perso_serv.pub user@monserveur.com user : le nom d’utilisateur pour qui la clé sera disponible monserveur.com : soit l’ip soit le nom de domaine rattaché au serveur. Saisissez le mot de passe. Le tour est joué. Testez votre connexion : ssh user@monserveur.com Pour aller plus loin SÉCURISATION L’intérêt de la clé ssh est bien sur de nous faciliter la vie mais aussi de sécuriser la connexion à des comptes comme root. Voici quelques petits réglages supplémentaires : éditez le fichier /etc/ssh/sshd_config Modifiez la ligne PermitRootLogin Yes en PermitRootLogin without-password Modifiez le port d’ecoute ssh Port 22 en Port 222 On restart le serveur ssh /etc/init.d/ssh restart Facilité d’utilisation Si vous avez beaucoup de serveurs a gérer il est intéressant de se créer des alias. Au lieu de taper : ssh user@monserveur.com vous aurez à faire sshserveur Pour cela éditez votre fichier .bashrc vim ~/.bashrc rajoutez la ligne : alias sshserveur='ssh user@monserveur.com' si vous avez modifié le port cela sera alias sshserveur='ssh -p 222 user@monserveur.com' Debug Il m’est arrivé récemment une drôle d erreur en essayant de me connecter en ssh à un serveur n’ayant pas de clé. Received disconnect from XXX.XXX.XXX.XXX: 2: Too many authentication failures for user Cela vient en fait de notre ssh-agent qui tente de lancer notre clé pour s’authentifier. Au bout d’un moment le serveur en face de nous nous bloque sans nous laisser la possibilité de taper notre mot de passe. Pour cela il faut faire une connexion ssh de ce type : ssh -o PubkeyAuthentication=no user@monserveur.com De plus si comme moi vous avez beaucoup de clés, vous pouvez modifier vos alias en spécifiant la clé à utiliser pour le serveur. Cela donnera alias sshserveur='ssh -p 222 -i ~/.ssh/cle_perso_serv user@monserveur.com'
-
Lorsque que l’on a un serveur ouvert sur internet , on s’expose à toutes sortes de menaces. Alors on peut avoir un anti-virus, un système anti DDOS comme celui fourni par ovh, rkhunter pour scanner votre machine, mais toutes ces solutions sont bien souvent des remèdes. Comment se protéger en amont de ses menaces? Comment se prémunir des scans ou de parc de zombies? La seule et unique réponse que j ai trouvé est votre firewall. Jusque la vous allez me dire : sans rire voila un grand comique, comme si on était pas au courant !!! Mais comme toute solution le firewall a aussi plusieurs faiblesses. Dans le principe vous allez bloquer des ports, ou des ips. Mais comment connaître les ips? Soit lors d’une attaque en analysant les logs vous relevez l’IP de l’attaquant et la blacklistez, soit un logiciel comme fail2ban le fait. Mais on reste la encore dans le remède et l’attaque a déjà eu lieu et a pu avoir de nombreuses conséquences. Dans cet article, je vais vous présenter un système normalement utilisé par les ‘pirates du p2p’ pour se protéger de Hadopi ou de la RIAA que nous allons retourner à notre avantage. Peerguardian 2 Peerguardian dans sa version 2 pour linux, est une surcouche à votre firewall. Il va se nourrir d’une ou plusieurs listes d’ip considérées comme dangereuses pour faire votre blacklist. Traduction : un attaquant ne pourra même pas arriver jusque vous et débuter un scan ou une attaque, grâce à peerguardian. Comme je le disais plus haut à la base peerguardian comme son nom l’indique est un logiciel pour particulier qui s’adonne au téléchargement disons pas très légal. Et pour éviter de se faire sniffer et repérer par les ayants droits, ils utilisent ce petit logiciel. Mais il existe plein d’autres listes contenant les ips de spammeur, les ZBOTS , spyware et compagnie. Vous trouverez toutes les listes ici : https://www.iblocklist.com/lists.php Installation On edite le fichier source.list vim /etc/apt/sources.list et on rajoute : deb http://moblock-deb.sourceforge.net/debian wheezy main deb-src http://moblock-deb.sourceforge.net/debian wheezy main on installe les clés. gpg --keyserver keyserver.ubuntu.com --recv-keys C0145138 gpg --export --armor C0145138 | apt-key add - gpg --export --armor C0145138 | apt-key add - et l’on met à jour les dépôts : apt-get update on peut maintenant installer peerguardian : apt-get install pgld pglcmd iftop je rajoute le paquet iftop afin de pouvoir regarder le trafic en temps réel. Configuration la configuration ce fait sur 3 fichiers : /etc/pgl/pglcmd.conf : fichier de configuration principal /etc/pgl/allow.p2p : fichier de whitelist /etc/pgl/blocklists.list : fichier contenant les urls des listes à aspirer lors de la mise à jour Le fichier pglcmd.conf est vide, personnellement j ai rajouté deux choses : Mes serveurs sont en lan derrière un firewall et je veux pas bloquer la communication entre eux donc j ai mis : WHITE_LOCAL= »1″ et pour etre sur que ca marche : WHITE_IP_IN="192.168.11.0/24" WHITE_IP_OUT="192.168.11.0/24" ensuite j’automatise les mises à jour CRON="1" il faut bien sur adapter la plage ip à vos besoins. Ensuite pour whitelister un client ou votre propre ip éditez le fichier allow.p2p Le fichier fonctionne de cette manière pour whitelister le bureau par exemple qui a l ip 1.1.1.1 vous rajoutez la ligne bureau:1.1.1.1 et le tour est joué, vous pouvez aussi mettre des plages d ip. Pour la gestion des listes éditons les fichiers blocklists.list il suffit alors tout simplement de dé-commenter et commenter les urls de listes dont le nom est bien souvent suffisamment parlant pour savoir de quoi il en retourne. exemple : http://list.iblocklist.com/lists/bluetack/web-exploit ATTENTION : Avant de lancer pglcmd pensez à whitelisté votre ip !!! sinon vous pouvez vous retrouver blacklisté ! Utilisation de Peerguadian Voici les lignes de commandes pglcmd start demarre pgl et inject les régles dans iptables pglcmd stop stop pgl et purge iptables pglcmd restart restarts pgl. pglcmd reload reconstruit la liste local et la charge dans pgl pglcmd update Met a jour et reconstruie la liste local et reload dans pgl pglcmd status montre iptables pglcmd test pour faire un test pglcmd search PATTERN permet de rechercher une liste par rapport au mot clé PATTERN pglcmd stats voir les stats de pgl pglcmd reset_stats reset les stats de pgl pglcmd show_config Permet de voir la configuration actuel Et après : Si ca vous intéresse et pour vous rendre compte que le net est un monde dangereux regardez les logs des ips bloqués : tail -f /var/log/pgl/pgld.log j’ai trouvé aussi le pglcmd stats très intéressant . En conclusion Peerguadian est une surcouche pour votre firewall qui ne manque pas d’intérêt. On a vu que sa grande force est justement de se nourrir de listes et donc de bloquer des attaques relevées par d’autres que vous. Malheureusement il y a un revers à la médaille. En effet, les listes bloquent de larges plages d’ip, chez free par exemple et ovh. On peut donc blacklister des internautes sans le savoir et rendre son site ou webservices inaccessible. Il existe toute fois une page permettant de vérifier une ip https://www.iblocklist.com/search.php mais je n’ai pas trouvé comment se faire déblacklister à part bien sur peut être par le formulaire de contact. A utiliser donc mais avec des pincettes surtout pour de la prod
-
Bonjour à vous, Après quelques expérimentations et mes installations sur iBuild, je me suis dis qu'il serait temps de partager ce que j'appelle une configuration de serveur web complète, performante et optimisé. Tout d'abord en temps que serveur web, nous n'allons pas prendre Litespeed Standard ou Entreprise, la version standard est trop limité et pour la version entreprise faut avoir un porte-monnaie solide, on va donc prendre la version OpenSource, OpenLitespeed. Prologue : Explications sur les logiciels utilisés. OpenLiteSpeed est une version libre et gratuite de LiteSpeed Web Server, fondée sur l'idée d'adopter une optique proche de celle de Nginx tout en assurant une configuration simple depuis une interface graphique mais aussi en supportant la syntaxe du rewriting d'Apache (mais ne supporte pas le fichier .htaccess), Litespeed possède sa propre version de PHP (PHP LSAPI) qui est 20% plus performante que PHP-FPM et 50% plus performante que mod_php. MariaDB est une version largement optimisé et puissante de MySQL maintenu par le père fondateur de MySQL : Michael Widenius, pour me croire, il suffit de vous dire que MariaDB est utilisé par Wikipédia, Google et bien évidemment iBuild, le plus gros avantage c'est finalement que vous n'êtes plus dépendant de Sun Microsystems et sa politique digne de celle de Facebook (rachat, rachat, vite!), il est parfaitement compatible avec les bases de données MySQL, ce n'est qu'un remplacement de MySQL, tout ce qui marche sous MySQL marche sous MariaDB. Varnish est un cache très puissant généralement couplé avec Nginx, il permet un chargement très rapide des pages, cependant peu pratique pour un environnement de développement puisqu'il met en cache la moindre des ressources et cela d'une manière assez agressive (il existe des moyens de vider le cache Varnish qu'on abordera) CSF ou ConfigServer Security & Firewall (avouer que CSF c'est mieux) est un pare-feu logiciel puissant et gratuit, il permettra de gérer quelques attaques SYN et de bloquer une bonne partie du portflood ou encore de gérer les ports qui seront ouverts ou non, cependant, il ne remplace pas un Anti-DDOS et est là de manière préventive. 1. Installation des logiciels. AVERTISSEMENT : Toutes les commandes exécutés sont faites en temps que root, si vous n'avez pas accès au root, merci d'utiliser sudo. A. OpenLiteSpeed Web Server : Installation des dépendances requises : Cette partie contient aussi des dépendances spécifiques à la compilation de OpenLiteSpeed, PHP et de quelques extensions et logiciels, pour installer les dépendances requises pour OpenLiteSpeed, il suffit d'entrer cette commande : apt-get -y install build-essential zlib1g-dev openssl libcurl4-openssl-dev libpcre3 libpcre3-dev libexpat1-dev curl sendmail-bin sendmail nano build-essential check install zip libgeoip-dev Installation et compilation d'OpenLiteSpeed : Nous admettons dans ce tutoriel que la dernière version est la 1.3, merci de consulter le site web http://open.litespeedtech.com/ afin de récupérer la dernière archive (actuellement : la version 1.3 est la dernière) Nous allons tout d'abord récupérer l'archive dans le dossier /tmp et l'extraire dans le même dossier : cd /tmp wget http://open.litespeedtech.com/packages/openlitespeed-1.3.tgz tar -xzf openlitespeed-*.tgz Nous allons maintenant procéder à la compilation, normalement, sous Debian Wheezy avec les dépendances installées précédemment, il ne devrait pas y avoir de problème, si jamais vous avez une erreur de compilation, merci de laisser un message sur ce topic : cd openlitespeed-* ./configure make && make install Une fois la compilation faite, il vous suffira de rentrer cette commande pour démarrer Litespeed : service lsws start cd ~ Si l'installation a été faite sans problème, vous devriez pouvoir accéder au serveur depuis http://votreserveur:8088/ et obtenir cette page : Normalement, le panel de gestion de Litespeed est lui aussi opérationnel à l'adresse https://votreserveur:7080/ avec les identifiants admin et le mot de passe 123456, si cela marche, vous devriez obtenir ce panel : Litespeed est maintenant opérationnel, nous verrons la configuration ainsi que la compilation de PHP plus tard. B. MariaDB : On ajoute tout d'abord le dépôt de MariaDB sur notre machine Debian Wheezy : apt-get install python-software-properties apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db add-apt-repository 'deb http://mirrors.linsrv.net/mariadb/repo/10.0/debian wheezy main’ apt-get update On procède ainsi à l'installation de MariaDB, il vous sera demandé un mot de passe, choisissez un mot de passe sécurisé et complexe puisque ce mot de passe sera celui de l'user root MySQL : apt-get install mariadb-server libmariadbclient-dev Cette commande installe aussi la librairie MariaDBclient-dev qui remplace la librairie MySQL pour la compilation de PHP par exemple. C. Varnish : On ajoute le dépôt de Varnish ainsi que sa clé GPG : curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add - echo "deb http://repo.varnish-cache.org/debian/ wheezy varnish-4.0" >> /etc/apt/sources.list apt-get update Une seule commande suffit pour installer Varnish : apt-get install varnish Varnish est prêt mais il n'est pas encore configuré, nous aborderons cela dans la prochaine étape du tutoriel D. CSF : On retourne encore une fois dans le dossier /tmp et on récupère l'archive de CSF (et évidemment on la décompresse) : rm -fv csf.tgz wget http://www.configserver.com/free/csf.tgz tar -xzf csf.tgz On va maintenant dans notre dossier csf fraichement décompressé et on lance le script d'installation : cd csf ./install.sh CSF est opérationnel, nous allons très bientôt s'attaquer à la configuration 2. Configuration des logiciels. On ne commencera pas dans l'ordre d'installation puisque certains logiciels comme CSF peuvent interférer avec le bon fonctionnement de certains logiciels utilisant certains ports. A. CSF : Pour simplifier au maximum ce tutoriel, je vais vous fournir un fichier de configuration totalement prêt et optimisé pour un serveur web, voici les caractéristiques : Accepte les connexions TCP entrantes (IPv4 ou v6) sur les ports : 20,21,22,25,53,80,110,143,443,465,587,993,995,3306,7080,8088 Accepte les connexions TCP sortantes (IPv4 ou v6) sur les ports : 20,21,22,25,53,80,110,113,443,3306,7080,8088 Accepte les connexions UDP entrantes (IPv4 ou v6) sur les ports : 20,21,53,3306 Accepte les connexions UDP sortantes (IPv4 ou v6) sur les ports : 20,21,53,113,123 Refuse toutes autres connexions TCP ou UDP n'étant pas listé plus haut Autorise le ping entrant, avec un maximum de requête de 1req/sec. Autorise le ping sortant. Protection SYN FLOOD activé par défaut, ralenti la vitesse des requêtes (désactiver SYNFLOOD = "1", si vous n'avez pas besoin de la protection pour le moment), limite de 100req/s Pas plus de 20 connexions simultanées ou concurrentes par IP, filtrage des requêtes sur port 80, 8088, 7080 Protection UDP FLOOD activé par défaut, aucun effet sur les requêtes, limite de 100req/s. Enregistrement des blocages, bannissement ainsi que des limites de connexion et des SYN/UDP Flood. Blocage définitif des IPs récidivistes. Protection en cas de tentative de bruteforce (pas plus de 5 échec de connexion au port SSH). Aucune limite de pays (vous pouvez bloquer des ports ou laisser accéder des pays à des ports) Blocage des IPs en cas de DDoS Traçage des utilisateurs/ip/machines activé. C'est une liste non-exhaustive, vous pouvez configurer d'autres paramètres. J'ai largement simplifié la tache, vous n'avez qu'à entrer ceci dans votre terminal pour remplacer votre configuration de CSF : cd /etc/csf/ rm csf.conf wget https://gist.githubusercontent.com/Maxime-BHA/f48b77efeb3f001a024a/raw/eac0538de0249d0b6d0eba3338b24968effe8dac/csf.conf Vous n'avez plus qu'à recharger CSF et le redémarrer et le tour est joué : csf -r service csf restart Si vous souhaitez éditer de vous même la configuration de CSF, vous pouvez la trouver sur ce lien, il vous suffira simplement de remplacer le fichier csf.conf qui se trouve dans /etc/csf/ et de recharger et redémarrer CSF comme expliqué plus haut. B. Varnish : Varnish est déjà installé, il faut maintenant le configurer pour qu'il mette en cache le contenu de Litespeed qui se trouve sur le port 8088, nous allons donc éditer/ouvrir le fichier default.vcl : nano /etc/varnish/default.vcl Une fois dans le fichier remplacer : backend default { .host = "127.0.0.1"; .port = "8080"; } Par ceci : backend default { .host = "127.0.0.1"; .port = "8088"; } Vous l'avez compris, nous venons juste de changer le port où Varnish va chercher les fichiers. Problème.. quand vous allez sur votre site, vous ne voyez toujours rien (au port 80), en effet, Varnish est encore configuré sur le port 6081, nous allons donc éditer le fichier de configuration (/etc/default/varnish) pour faire en sorte que Varnish pointe sur le port 80 et non le port 6081, commençons : nano /etc/default/varnish Une fois dans le fichier, chercher la ligne ## ALTERNATIVE 2, Configuration with VCL et remplacer : DAEMON_OPTS="-a :6081 Simplement par le port 80 : DAEMON_OPTS="-a :80 Il vous suffit maintenant de redémarrer Varnish avec cette commande : service varnish restart Varnish est installé, configuré et techniquement, si vous n'avez rien changé, vous devriez voir la page de Litespeed : C. MariaDB : Tout comme pour CSF, je vais vous simplifier au maximum la tache et vous donner une configuration déjà prête, je passe les caractéristiques techniques pour celle-ci, voici la commande à entrer : cd /etc/mysql/ rm my.cnf wget https://gist.githubusercontent.com/Maxime-BHA/ef72669d0397c34dc2a4/raw/89d988317fc8cdfd28382e8f54b15b1788f9aa57/my.cnf Ensuite, il suffit de redémarrer votre serveur MariaDB : service mysql restart D. OpenLiteSpeed : Nous allons tout d'abord compiler PHP, dans ce tutoriel, nous utiliserons PHP 5.5.9, mais tout d'abord, nous devons installer les dépendances de PHP, aucun problème : apt-get -y build-dep php5 apt-get -y install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libxml2-dev Une fois les dépendances installées, vous avez deux choix, la compilation manuelle (pour les vrais) ou la compilation semi-automatique (pour les faux). La compilation pour les faux (semi-automatique, on abordera que celle-ci dans ce tutoriel) : Il faut aller dans votre panel Litespeed à l'adresse http://votreserveur:7080/, connectez-vous avec vos identifiants (par défaut, utilisateur : admin, mot de passe : 123456), Une fois sur le panel, vous devriez voir dans le menu l'onglet "Actions" et dans ce même onglet, vous devriez voir "Compile PHP" : Si vous êtes vraiment aveugle, allez simplement à cette url http://votreserveur:...hp/buildPHP.php (remplacer quand même votreserveur par l'adresse de votre serveur hein..), vous aurez ainsi une page vous proposant de choisir votre version de PHP, pour ma part ce sera PHP 5.5 : La prochaine page est celle-ci : Maintenant que vous êtes sur cette page, supprimer tout ce qui est dans la zone "Configure Parameters" et mettez les lignes suivantes (ne pas cocher la case eAccelerator): '--with-litespeed' '--with-zlib-dir' '--with-freetype-dir' '--enable-cgi' '--enable-mbstring' '--with-libxml-dir=/usr' '--enable-soap' '--enable-calendar' '--with-curl' '--with-mcrypt' '--with-zlib' '--with-gd' '--disable-rpath' '--enable-inline-optimization' '--with-bz2' '--with-zlib' '--with-zip' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-pcntl' '--enable-mbregex' '--with-mhash' '--with-tidy' '--with-pcre-regex' '--with-mysql' '--with-pdo-mysql' '--with-mysqli' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--with-openssl' '--with-libdir=lib64' '--with-libxml-dir=/usr' '--enable-exif' '--enable-dba' '--with-gettext' '--enable-shmop' '--enable-sysvmsg' '--enable-wddx' '--with-kerberos' '--enable-bcmath' '--enable-ftp' '--enable-intl' '--enable-soap=shared' '--with-pspell' Il vous suffira de cliquer sur Build PHP5.5.9 et vous aurez la page suivante : Une fois que le Main Status est **PREPARE_DONE**, vous pouvez cliquer sur Next, vous allez tomber sur la page de compilation qui demande tout de même d'accéder au SSH et faire cette commande : /usr/local/lsws/phpbuild/buildphp_manual_run.sh La compilation démarrera automatiquement en arrière-plan, vous pouvez voir le log détaillé tout en bas de la page : Une fois la compilation finie, il vous suffira de faire un Graceful Restart depuis le menu action, ou de redémarrer Litespeed en méthode Robot : service lsws restart MAGIE : Pour accéder à vos fichiers, il suffit de vous rendre dans /usr/local/DEFAULT/html/ et de mettre le contenu de votre site web. Ce tutoriel n'aborde aucunement la configuration avancé ainsi que celles des virtualhosts et l'installation de PHPMyAdmin sous LiteSpeed, nous aborderons cela dans un tutoriel qui sortira très prochainement. Je vous remercie de m'avoir lu. Installation d'un serveur web complet sous Debian 7 - OpenLiteSpeed, MariaDB, Varnish et CSF deMaximeBHA est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International. Fondé(e) sur une œuvre à http://ibuild.fr/ind...varnish-et-csf/.
-
This is a tutorial on how to install an email server on Debian Wheezy 7. We are going to install the following components: E-mail server: Postfix Dovecot Sasl library MySQL Milters: SpamAssassin Clamav Greylist Webserver: Nginx PHP5 phpMyAdmin PostfixAdmin RoundCube Please replace any text in red with your info. Here is a scheme about the internals, click on image to get a clear view: 1. Install Debian Wheezy 7 When installing Debian 7 itself, only select ‘SSH server’ when prompted to select software. If Debian is ready, install the following packages: apt-get install sudo mc vim 2. Install MySQL server and client apt-get install mysql-server mysql-client Enter a MySQL root password when prompted. Check that mysqld is running: ps aux 3. Install PHP5 and Nginx At this point I use the Dotdeb repo to install PHP version 5.5.x Add Dotdeb repositories to /etc/apt/sources.list file: deb http://packages.dotdeb.org wheezy-php55 all deb-src http://packages.dotdeb.org wheezy-php55 all Add Dotdeb key: wget http://www.dotdeb.org/dotdeb.gpg sudo apt-key add dotdeb.gpg Update apt cache: apt-get update Install PHP5 and Nginx: apt-get install php5-fpm php5-imap php5-mysql php5-mcrypt php5-intl nginx openssl ssl-cert Make sure php5-fpm and nginx are running: service php5-fpm start service nginx start Create a folders to store web files: mkdir /home/clients_ssl mkdir /home/clients_ssl/<subdomain.domain.tld> mkdir /home/clients_ssl/<subdomain.domain.tld>/logs mkdir /home/clients_ssl/<subdomain.domain.tld>/tmp mkdir /home/clients_ssl/<subdomain.domain.tld>/www Create nginx config for this site: vi /etc/nginx/sites-available/<subdomain.domain.tld>_ssl Press ‘i’ and paste the following in vim, replace <yourip> and <subdomain.domain.tld> with your info: server { listen <yourip>:443; server_name <subdomain.domain.tld>; ssl on; ssl_certificate /etc/nginx/certs/<subdomain.domain.tld>.combined.crt; ssl_certificate_key /etc/nginx/certs/<subdomain.domain.tld>.key; root /home/clients_ssl/<subdomain.domain.tld>/www; index index.php index.html index.htm; location ~ .php$ { fastcgi_pass unix:/etc/php5/fpm/socks/ssl_<subdomain.domain.tld>.sock; include fastcgi_params; fastcgi_param HTTPS on; } location ~ /. { deny all; } access_log /home/clients_ssl/<subdomain.domain.tld>/logs/access.log; error_log /home/clients_ssl/<subdomain.domain.tld>/logs/error.log; error_page 404 /404.html; } Remove the default site and put your site online: rm /etc/nginx/sites-available/default ln -s /etc/nginx/sites-available/<subdomain.domain.tld>_ssl /etc/nginx/sites-enabled/<subdomain.domain.tld>_ssl Create the certs folder. mkdir /etc/nginx/certs Put your cerificates in there. Get a valid certificate from a certificate authority or create a self signed certificate. You can google on how to make one. Make sure to edit your Nginx config file to match the certificate filenames. Restart Nginx service nginx restart Create a php5-fpm config file: vi /etc/php5/fpm/pool.d/ssl_<subdomain.domain.tld>.conf Press ‘i’ and paste the following in vim, replace <subdomain.domain.tld> with your info: [ssl_<subdomain.domain.tld>] listen = /etc/php5/fpm/socks/ssl_<subdomain.domain.tld>.sock user = u1001 group = g1001 listen.owner = www-data listen.group = www-data listen.mode = 0666 pm = dynamic pm.max_children = 50 pm.start_servers = 1 pm.min_spare_servers = 1 pm.max_spare_servers = 5 pm.max_requests = 0 php_admin_value[open_basedir]=/ php_admin_value[session.save_path]=/home/clients_ssl/<subdomain.domain.tld>/tmp php_admin_value[upload_tmp_dir]=/home/clients_ssl/<subdomain.domain.tld>/tmp php_admin_value[disable_functions]=dl Create a user for this virtualhost: groupadd -g 1001 g1001 useradd --no-create-home -g 1001 -u 1001 u1001 Create socks folder: mkdir /etc/php5/fpm/socks Remove the default php pool: rm /etc/php5/fpm/pool.d/www.conf Add timezone info to php ini file /etc/php5/fpm/php.ini: date.timezone = Europe/Tallinn Restart php5-fpm service php5-fpm restart 4. Install phpMyAdmin cd /home/clients_ssl/<subdomain.domain.tld>/www wget 'http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.0.8/phpMyAdmin-4.0.8-english.tar.gz?use_mirror=netcologne' mv phpMyAdmin-4.0.8-english.tar.gz?use_mirror=netcologne pma.tar.gz tar -zxvf pma.tar.gz Hide pma or bots will try to hack into it: mv phpMyAdmin-4.0.8-english pma_763773 cd pma_763773 cp config.sample.inc.php config.inc.php Set the right owner for www and tmp folder: cd /home/clients_ssl/<subdomain.domain.tld> chown -R 1001.1001 www tmp Now you should be able to access pma at: https://<subdomain.domain.tld>/pma_763773/ Now open phpMyAdmin and click on ‘SQL’ on the top menubar. Paste the following SQL queries to create a database and user, replace <password> as you see fit: CREATE DATABASE postfix; GRANT ALL PRIVILEGES ON postfix.* TO 'postfix_admin'@'%' IDENTIFIED BY '<dbpassword1>'; GRANT SELECT ON postfix.* TO 'postfix'@'%' IDENTIFIED BY '<dbpassword2>'; FLUSH PRIVILEGES; 5. Install PostfixAdmin Although you can install it from a standard Debian package I am going to download it directly instead so I can put it under my custom path immediately. cd /home/clients_ssl/<subdomain.domain.tld>/www wget 'http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.6/postfixadmin-2.3.6.tar.gz?use_mirror=garr' mv postfixadmin-2.3.6.tar.gz?use_mirror=garr pfa.tar.gz tar -zxvf pfa.tar.gz mv postfixadmin-2.3.6 pfa_746338 chown -R 1001.1001 pfa_746338 cd pfa_746338 sed -i 's/change-this-to-your.domain.tld/<subdomain.domain.tld>/g' config.inc.php Now edit configuration file config.inc.php and change these values: $CONF['configured'] = true; $CONF['postfix_admin_url'] = 'https://<subdomain.domain.tld>/pfa_746338'; $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix_admin'; $CONF['database_password'] = '<dbpassword1>'; $CONF['database_name'] = 'postfix'; $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'NO'; $CONF['fetchmail'] = 'NO'; Go to https://<subdomain.domain.tld>/pfa_746338/setup.php This setup script should create the nesessary tables to postfix database. At the bottom of setup.php enter your admin password and click ‘Gererate password hash’. Edit config.inc.php and add the hash: $CONF['setup_password'] = '<hash>'; Now enter superadmin account info. You can use this to access PostfixAdmin and configure domains, e-mail accounts, aliases etc. Try to log in with the admin account here: https://<subdomain.domain.tld>/pfa_746338 6. Install Postfix and Sasl library apt-get install postfix postfix-mysql libsasl2-modules libsasl2-modules-sql When prompted, choose ‘Internet Site’. Use yor domain name as ‘System mail name': <subdomain.domain.tld> For example use ‘mail.yourdomain.tld’. Do not use ‘yourdomain.tld’ here if it is going to be one of your virtual mailbox domains. Create virtual mail user and group: groupadd -g 3000 vmail useradd -d /home/vmail -m -u 3000 -g 3000 vmail Edit /etc/postfix/main.cf: mydestination = <subdomain.domain.tld>, localhost and add the following lines: virtual_uid_maps = static:3000 virtual_gid_maps = static:3000 virtual_mailbox_base = /home/vmail virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf virtual_transport = lmtp:unix:private/dovecot-lmtp smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth milter_default_action = accept Create the following files: /etc/postfix/mysql_virtual_mailbox_domains.cf hosts = 127.0.0.1 user = postfix password = <dbpassword2> dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1 /etc/postfix/mysql_virtual_mailbox_maps.cf hosts = 127.0.0.1 user = postfix password = <dbpassword2> dbname = postfix query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1 /etc/postfix/mysql_virtual_alias_maps.cf hosts = 127.0.0.1 user = postfix password = <dbpassword2> dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = 1 /etc/postfix/mysql_relay_domains.cf hosts = 127.0.0.1 user = postfix password = <dbpassword2> dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1 /etc/postfix/sasl/smtpd.conf pwcheck_method: auxprop mech_list: plain login auxprop_plugin: sql sql_engine: mysql sql_hostnames: 127.0.0.1 sql_user: postfix sql_passwd: <dbpassword2> sql_database: postfix sql_select: SELECT password FROM mailbox WHERE username = '%u@%r' AND active = 1 Add postfix user to sasl group: adduser postfix sasl Enable secure smtp ports, edit /etc/postfix/master.cf and uncomment: submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING 7. Install Dovecot apt-get install dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-lmtpd Create file /etc/dovecot/dovecot-mysql.conf.ext: driver = mysql connect = host=127.0.0.1 dbname=postfix user=postfix password=<dbpassword2> default_pass_scheme = MD5-CRYPT user_query = SELECT '/home/vmail/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u' password_query = SELECT password FROM mailbox WHERE username = '%u' Edit /etc/dovecot/conf.d/10-auth.conf disable_plaintext_auth = no auth_mechanisms = plain login #!include auth-system.conf.ext !include auth-sql.conf.ext Edit /etc/dovecot/conf.d/10-mail.conf mail_location = maildir:/home/vmail/%d/%n:INDEX=/home/vmail/%d/%n/indexes Edit /etc/dovecot/conf.d/10-ssl.conf ssl = yes Edit /etc/dovecot/conf.d/20-imap.conf mail_max_userip_connections = 10 Edit /etc/dovecot/conf.d/auth-sql.conf.ext passdb { driver = sql # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext args = /etc/dovecot/dovecot-mysql.conf.ext } userdb { driver = sql args = /etc/dovecot/dovecot-mysql.conf.ext } Edit /etc/dovecot/conf.d/10-master.conf service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix } } service auth { # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 } } Restart services: service dovecot restart service postfix restart You can now add a domain with PostfixAdmin and test your e-mail server. Any errors are found in logfiles: /var/log/auth.log /var/log/mail.log /var/log/syslog 8. Install Milters apt-get install clamav-milter clamav-unofficial-sigs milter-greylist spamass-milter clamav-milter: Update ClamAv database and start the daemon: freshclam /etc/init.d/clamav-daemon start Edit /etc/default/clamav-milter and uncomment the last line: SOCKET_RWGROUP=postfix Create a socket folder inside Postfix chroot environment: mkdir /var/spool/postfix/clamav chown clamav /var/spool/postfix/clamav Configure ClamAv milter: dpkg-reconfigure clamav-milter Answer questions as follows: Handle configuration automatically --> yes User for daemon --> clamav Additional groups --> none (empty field) path to socket --> /var/spool/postfix/clamav/clamav-milter.ctl group owner for the socket --> clamav permissions (mode) for socket --> 660 remove stale socket --> yes wait timeout for clamd --> 120 foreground --> no chroot --> none (empty field) pid file --> /var/run/clamav/clamav-milter.pid temporary path --> /tmp clamd socket --> unix:/var/run/clamav/clamd.ctl hosts excluded for scanning --> none (empty field) mail whitelist --> none (empty field) action for "infected" mail --> reject action on error --> defer reason for rejection --> Rejecting harmful e-mail: %v found. headers -> replace log file --> /var/log/clamav/clamav-milter.log disable log file locking --> no maximum log file size --> 0 log time --> yes use syslog --> no log facility (type of syslog message) --> LOG_LOCAL6 verbose logging --> no log level when infected --> off log level when no threat --> off size limit for scanned messages --> 25 Tell Postfix to use this new milter: postconf -e 'smtpd_milters = unix:/clamav/clamav-milter.ctl' postfix reload spamass-milter: Edit /etc/default/spamass-milter: Add ‘-m’ so it won’t change the subject header. Add ‘-r -1′ so Postfix rejects what SpamAssassin flags as spam. Add ‘-l’ to avoid scanning e-mails sent by logged in users. OPTIONS="-u spamass-milter -i 127.0.0.1 -m -r -1 -I" Restart milter: service spamass-milter restart Add a dedicated user for SpamAssassin daemon: adduser --shell /bin/false --home /var/lib/spamassassin --disabled-password --disabled-login --gecos "" spamd Edit /etc/default/spamassassin: ENABLED=1 OPTIONS="--create-prefs --max-children 5 --helper-home-dir=/var/lib/spamassassin -u spamd -g spamd" CRON=1 Update rules and restart the daemon: sa-update service spamassassin restart Tell Postfix to use new milter: postconf -e 'smtpd_milters = unix:/clamav/clamav-milter.ctl, unix:/spamass/spamass.sock' postfix reload milter-greylist: Edit /etc/milter-greylist/greylist.conf: # For sendmail use the following two lines #socket "/var/run/milter-greylist/milter-greylist.sock" #user "smmsp" # For Postfix uncomment the following two lines and comment out the # sendmail ones above. socket "/var/spool/postfix/milter-greylist/milter-greylist.sock" 660 user "greylist" Edit /etc/default/milter-greylist: ENABLED=1 SOCKET="/var/spool/postfix/milter-greylist/milter-greylist.sock" Make a folder for the socket and restart milter: mkdir /var/spool/postfix/milter-greylist chmod 2755 /var/spool/postfix/milter-greylist chown greylist:postfix /var/spool/postfix/milter-greylist service milter-greylist restart Tell Postfix to use the new milter: postconf -e 'milter_connect_macros = i b j _ {daemon_name} {if_name} {client_addr}' postconf -e 'smtpd_milters = unix:/milter-greylist/milter-greylist.sock, unix:/clamav/clamav-milter.ctl, unix:/spamass/spamass.sock' postfix reload 9. Install RoundCube wget 'http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/0.9.4/roundcubemail-0.9.4.tar.gz?use_mirror=heanet' mv roundcubemail-0.9.4.tar.gz?use_mirror=heanet roundcubemail-0.9.4.tar.gz tar -zxvf roundcubemail-0.9.4.tar.gz mv roundcubemail-0.9.4 rcb_733621 chown -R 1001.1001 rcb_733621 Open phpMyAdmin SQL window and paste: CREATE DATABASE roundcube; GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost IDENTIFIED BY '<rcpassword>'; FLUSH PRIVILEGES; Add initial tables and data: cd /home/clients_ssl/<subdomain.domain.tld>/www/rcb_733621 mysql -u roundcube -p roundcube < SQL/mysql.initial.sql Go to https://<subdomain.domain.tld>/rcb_733621/installer/ See that your environment is ok and click Next. On the ‘Create config’ page, you may want to change the following values: product_name: <yourproductname> support_url: <yoururl> database name: roundcube database password: <rcpassword> default_host: localhost smtp_server: localhost language: en_US Click Continue Change the value in textarea to: $rcmail_config['use_https'] = true; Then copy all from textarea and paste the contents to main.inc.php and db.inc.php under /home/clients_ssl/<subdomain.domain.tld>/www/rcb_733621/config Remove installer folder: mv installer ../../ Open RoundCube at https://<subdomain.domain.tld>/rcb_733621/
-
Pour installer un programmes à partir de ses sources (src), il est généralement nécessaire de les configurer et compiler avant de procéder à l'installation proprement dite. Pour pouvoir compiler, assurez-vous d'avoir installé les paquetages suivants: gcc gcc-c++ automake autoconf Avec yum cette commande suffit: # yum install gcc gcc-c++ automake autoconf Une fois l'environnement de compilation installé, vous pouvez installer un programme linux à partir de ses sources... Récupérez maintenant les sources de l'application que vous souhaitez installer. Décompacter l'archive Les manipulations peuvent se faire soit à l'aide d'un gestionnaire d'archives, de votre window manager si des actions sont implémentées, ou bien en ligne de commandes dans la console, méthode universelle et fonctionnelle pour tout linux. Dans un premier temps, il faut se placer dans le répertoire où se situe l'archive. $ cd /dossier/ou/est/archive Bien sûr, adaptez /dossier/ou/est/archive à l'emplacement de votre archive. Selon le format de compression, la méthode est différente. * l'archive porte l'extension .tar (TAR) $ tar xvf nom_du_fichier.tar * l'archive porte l'extension .gz (Gzip) $ gunzip nom_du_fichier.gz * l'archive porte l'extension .bz2 (Bzip2) $ bzip2 -d nom_du_fichier.bz2 * l'archive porte l'extension .tar.gz (Tar/GZip appelé aussi Tarball) $ tar zxvf nom_du_fichier.tar.gz * l'archive porte l'extension .tar.bz2 (Tar/BZip2) $ tar jxvf nom_du_fichier.tar.bz2 Une fois l'archive décompactée, se placer dans le réperoire. $ cd /dossier/ou/est/archive/decompactee Configurer, Compiler, Installer Il est généralement nécessaire de compiler les sources, mais, bien que la manipulation se fasse toujours de la même façon pour la majorité des cas, lire d'abord le fichier README et/ou INSTALL pour connaître les commandes nécessaires et de l'information sur d'éventuelles dépendances... $ ./configure Cette commande va configurer l'application à compiler en l'adaptant à votre système. $ make Cette commande permet de compiler l'application. Patientez durant la compilation, plus ou moins longue selon votre configuration et le programme. Si tout se passe normalement, de nombreuses lignes de commandes s'affichent dans la console. En cas de problème ou arrêt de la compilation, un message d'erreur vous informera du soucis rencontré, le plus souvent une dépendance à installer... Si un programme annexe est nécessaire procédez à son installation puis recommencez le compilation. Après avoir compilé l'application, passer à l'installation proprement dite... Pour cela il est nécessaire de passer en root (su et votre mot de passe dans la console) $ su # make install Vous pouvez alors exécuter votre application. En cas d'échec de compilation ou d'installation, nettoyer les fichiers créés automatiquement lors de la compilation. make clean
-
Objectif: Installer Windows et Fedora sur le même disque dur. Utiliser le boot de démarrage de Windows, placé sur le MBR (Master Boot Record, secteur d'amorçage du disque dur) et de lui faire reconnaître votre installation Linux. Cette solution possède l'avantage de ne pas toucher à l'installation de Windows qui pourra ainsi de nouveau s'installer sans poser de problème à l'ensemble de votre installation. Au vu de la stabilité de Windows, cela semble plus sécurisé. Cela a été testé avec Windows 2000 et/ou Windows XP d'un côté ET Fedora Core 4, 5 ou 6 de l'autre. Pré-requis: Installer Windows 2000 ou XP sur le disque dur. Défragmenter le disque dur (c:/) pour regrouper les données au début du disque. Il est bien sûr recommandé d'avoir un Windows fonctionnel, si possible, et pas trop chargé de spywares et tout çà... Etre en possession du CD de rescue et du DVD (ou CDs) d'installation de Fedora Core 5. Pour partitionner et organiser le disque, j'utilise ici le LiveCD Gparted. Téléchargez l'ISO et gravez-le sur CD. (sourceforge download) Ce liveCD contient un noyau Linux minimal et le nécessaire pour faire fonctionner librement un très bon outil de gestion de partitions... Configurer la séquence de boot de l'ordinateur pour qu'il démarre sur le CD (ou DVD) Cela se trouve en général dans le BIOS (presser [suppr] au démarrage de la machine) , sous un nom du genre "boot sequence" Partitionner le disque dur Insérer le liveCD Gparted et booter l'ordinateur sur le CD. Au premier écran, presser ENTREE. Le CD se lance, patientez jusqu'à l'interface. Il vous est demandé de choisir la langue du logiciel, le clavier (azerty/fr) la resolution écran et l'échantillonnage couleurs... Naviguez au clavier et appuyer sur ENTREE pour confirmer les choix. Une fois fait, patientez le temps que gParted scanne votre matériel... Gparted présente alors votre disque, vous pouvez créér, (re)dimensionner et organiser vos partitions simplement. Votre partition Windows est par défaut la première, en FAT32 ou NTFS. Pour cette première partition, faites juste un redimensionnage, il est important de ne pas la déplacer (ou pire, formater) Viendront ensuite les partitions Linux , de type ext3. Pour le multiboot, il faut une première partition /boot de 100 Mo Une seconde partition Linux accueillera le système / , minimum 6 Go Vous pouvez aussi créér une partition /home pour séparer les fichiers des utilisateurs Linux du système Linux. Donnez-lui alors l'espace souhaité, pensez cependant que les fichiers présents dans /home ne sont pas visible sur Windows ! Si vous ne le créez pas, /home sera contenu dans la partition "système" Arrive le tour de la partition Linux swap . C'est en quelque sorte une partition d'échange utilisée si nécessaire en complément de votre RAM. Sa taille peut varier de 512 à 2 Go. On recommande souvent de donner une valeur équivalente à la quantité de RAM disponible sur l'ordinateur. Le "reste" du disque est formaté en vfat (FAT32) et sera la ou les partition(s) partagée(s)par les deux plateformes... Vous pouvez bien sûr créér plusieurs partitions partagées... vfat permet la lecture et écriture sur Windows (FAT32) et Linux. Une fois le disque organisé, notez les partitions et leurs correspondances (/dev/hdc1 windows, /dev/hdc5 /boot, etc...) Quitter Gparted et retirer le liveCD. Installation de Fedora Core 5 sur ce disque Placer le DVD d'installation (ou le premier des CDs) de Fedora et bootez l'ordinateur sur celui-ci. Anaconda sera votre guide pour la procédure d'installation. Choisissez la langue, le clavier fr latin-9, et arrive le moment important de l'installation... "L'installation requiert le partitionnement de votre disque dur." Choisir custom layout dans le menu déroulant pour l'installer en fonction de votre partitionnement. Vous arrivez sur un écran dans lequel votre disque dur est représenté. Dans la liste des partitions, repérez celles de type ext3 Double-clic sur la première, celle de 100 Mo... Une fenêtre s'ouvre, dans la case point de montage, entrer /boot Cocher "Formater la partition comme:" est sélectionnez ext3 La seconde, le système Fedora, point de montage / Eventuellement une troisième ext3, point de montage /home Puis au tour du swap, formaté en swap... Cliquer Suivant Une fenêtre de récapitulatif et avertissement en raison du formatage... Cliquer Formater "Le programme d'installation GRUB sera installé sur ..." Dans cette fenêtre, cochez la case Configuration des options avancées du chargeur de démarrage. Ceci permettra de placer le chargeur sur notre partition /boot Suivant Deux choix possibles, installation sur le MBR ou sur /boot Sélectionnez le second choix, /dev/hdc5 Premier secteur de la partition de démarrage Selon votre disque, vous aurez peut-être /dev/hda3 ... Je n'ai pas coché forcer l'utilisation de LBA32... Suivant Lorsque ces choix sont correctement faits, finir l'installation de Fedora Core 5 en choisissanr les applications qui seront installées. Laisser Anaconda faire son travail d'installation, cela va durer entre 15 minutes et 1 heure selon les paquetages installés et la vitesse de votre CPU et disque dur... A la fin de l'installation, le DVD s'éjecte, rangez-le et changez-le par le CD rescue de Fedora, puis cliquer Redémarrer. Récupérer le secteur d'amorce Linux La machine démarre sur le CD de rescue de Fedora. Presser sur ENTREE au lancement. Puis choisir la langue, le clavier, inutile de charger l'interface réseau, suivre les étapes jusqu'au shell (invite de commandes texte) Entrer ces commandes, une fois adaptées à la configuration de votre disque # chroot /mnt/sysimage # mkdir /mnt/Montage # mount -t vfat /dev/hdc8 /mnt/Montage # dd if=/dev/hdc5 of=/mnt/Montage/linux.bin bs=512 count=1 Commentaire et adaptations à faire: # chroot /mnt/sysimage reste inchangé # mkdir /mnt/Montage crée un dossier Montage pour la partition partagée (dans /mnt) Vous pouvez lui donner un autre nom mais il doit se trouver dans /mnt de toutes façons ( /mnt/dossierdevotrechoix ) # mount -t vfat /dev/hdc8 /mnt/Montage Remplacez hdc8 par celui de votre partition partagée. et Montage par le dossier créé précedemment. Ceci a pour effet de "monter" le contenu de la partition partagée dans le dossier Montage, de façon transparente... Nous allons l'utiliser pour communiquer à Windows le fichier qui nous intéresse. # dd if=/dev/hdc5 of=/mnt/Montage/linux.bin bs=512 count=1 Remplacez hdc5 par votre partition /boot et Montage par votre dossier de partage... * Pas de partition partagée ? Oubliez la création du point de montage et enregistrer le fichier sur une disquette en changeant hdc5 par votre partition /boot dd if=/dev/hdc5 of=/media/floppy/linux.bin bs=512 count=1 Vous pouvez relancer la machine et enlever le CD rescue, Ctrl+Alt+Suppr Ajouter Fedora au Multiboot Windows L'ordinateur boote encore sur Windows... Pour la dernière fois ? Récupérez linux.bin dans la partition partagée (ou sur la disquette) et collez-le dans c:/ Affichez les fichiers cachés et système et ouvrez c:/boot.ini avec le notepad... Dans la section [operating systems], ajoutez le lanceur Fedora, par exemple: [operating systems] C:linux.bin="Linux FEDORA Core 5" multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Windows" /fastdetect... Pour proposer par défaut Fedora, modifiez la ligne default default=C:linux.bin Enregistrez boot.ini et redémarrez la machine. Premier BOOT sur Fedora Le chargeur de Windows vous propose maintenant d'ouvrir Fedora ou Windows, sélectionnez Fedora. Vous allez procéder aux dernières étapes de l'installation, les derniers réglages pui l'ordinateur redémarre pour le vrai premier lancement... Bienvenue sur FC5 Activer la partition partagée sur Fedora Afin d'avoir toujours sous la main la partition partagée, il faut maintenant éditer le fichier fstab... Depuis le bureau de Fedora, à priori Gnome, cherchez et ouvrez le Terminal de commandes. (Applications -> Accessoires -> Terminal) Passez en mode super-utilisateur $ su - Entrez votre mot de passe root et pressez ENTREE. Le symbole $ est remplacé par le symbole # en début de ligne, ceci signifie que vous êtes connecté en super utilisateur (root) sur la machine... # gedit /etc/fstab (changer gedit par kwrite sur KDE) L'éditeur de texte ouvre le fichier fstab, insérez la ligne suivante à la suite des lignes commençant par /dev/, changez hdc8 par votre partition partagée et Montage par le dossier correspondant. /dev/hdc8 /mnt/Montage vfat auto,users,rw,umask=0 0 0 Enregistrez le fichier et au prochain démarrage de Fedora, /mnt/Montage contiendra la partition partagée.
-
On installe le tout à l'aide de la commande magique, qui contient peut-être quelques redondances inutiles mais qui aura le mérite de mettre en place tout le nécessaire. Puisque un utilisateur non-root a été créé précédemment et qu'il peut utiliser sudo pour exécuter des commander administratives, on se connecte sous son identité pour administrer le serveur. $ sudo apt-get install apache2 apache2-utils mysql-server mysql-client php5 php5-curl php5-dev php5-geoip libapache2-mod-geoip php5-gd php5-imap php5-imagick php5-mysql php5-mcrypt php5-memcache php-pear phpmyadmin Lors de l'installation, vous allez être invité à créer l'utilisateur root de MySQL ainsi que divers paramètres à adapter à votre choix de configuration. Ces paramètres peuvent dans tous les cas être modifiés par la suite... Configuration sommaire de Apache $ sudo nano /etc/apache2/conf.d/security Si le serveur a vocation de publier des pages web, on le place en mode Production et on peut optionnellement désactiver les signatures serveur pour diffuser le minimum d'informations sur la configuration de la machine. Ce fichier est assez bien documenté, cherchez et adapter les lignes suivantes: ServerTokens Prod ServerSignature Off Si vous voulez églament interdire l'intégration de vos sites dans des iframes extérieures, considérer le fait d'activer la dernière option en enlevant le # en début de ligne: Header set X-Frame-Options: "sameorigin" On active ensuite les modules utiles, et on redémarre apache $ sudo a2enmod headers $ sudo a2enmod expires $ sudo a2enmod rewrite $ sudo a2enmod geoip $ sudo /etc/init.d/apache2 restart Configuration de MySQL Si vous n'avez pas créé de mot de passe pour l'utilisateur root de MySQL, c'est le moment ! $ sudo mysql -u root mysql> UPDATE mysql.user SET Password=PASSWORD('***passe***') WHERE User='root'; Query OK, 4 rows affected (0.00 sec) Rows matched: 4 Changed: 4 Warnings: 0 mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> exit Vous avez configuré MySQL au moment de l'installation via apt-get et vous avez attribué un mot de passe à l'utilisateur root. Vérifiez que la connection root sur Mysql échoue sans mot de passe $ sudo mysql -u root >Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 40321 Server version: 5.5.31-0+wheezy1-log (Debian) Copyright © 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> exit Pour aller plus loin dans le paramétrage du serveur MySQL $ sudo nano /etc/mysql/my.cnf Configuration de phpMyAdmin Editer le fichier de configuration Apache pour phpMyAdmin afin de lui donner un Alias différent que celui par défaut. Ceci empêchera de nombreuses tentatives de connexion sur vos bases. $ sudo nano /etc/phpmyadmin/apache.conf Modifier l'Alias par le nom de votre choix # phpMyAdmin default Apache configuration Alias /mon_alias_phpmyadmin /usr/share/phpmyadmin Redémarrer Apache puis testez l'accès à phpMyAdmin dans un navigateur $ sudo /etc/init.d/apache2 restart La page résultante sera donc: http://ns01.mondomaine.net/mon_alias_phpmyadmin
-
Dernière phase du montage du serveur mails complet, l'installation d'un webmail afin de permettre aux utilisateurs de consulter leurs emails en ligne sur le serveur. Roundcube m'a paru être une bonne solution, complet, en français, pas vilain du tout et bénéficiant de fonctions jquery pour le glisser-déposer des messages, support CCS2, bref à mon goût. Pour son installation, nous allons récupérer la dernière archive en date sur le site officiel. Cela se passe ici: http://www.roundcube.net/download Téléchargez la dernière version complète (0.9.2 ce jour) et récupérez la sur votre serveur Nous n'allons pas utiliser l'auto-installer, alors on va déplacer ce dossier ( ou le supprimer ) # tar xvzf roundcubemail-0.9.2.tar.gz /var/www # mv /var/www/roundcubemail-0.9.2 /var/www/alias_roundcubemail # chown root:www-data -R /var/www/alias_roundcubemail # cd /var/www/alias_roundcubemail # chmod 0777 logs # chmod 0777 temp # mv installer installer-off On prépare ensuite la base de données MySQL rouncube # mysql -uroot -pmot_de_passe_mysqlroot mysql> CREATE DATABASE roundcube; mysql> GRANT ALL ON roundcube.* TO 'roundcube'@'localhost' IDENTIFIED BY 'mot_de_passe_mysqlroundcube'; mysql> quit On peuple la base de données roundcube avec le fichier SQL fourni # mysql -uroundcube -pmot_de_passe_mysqlroundcube -droundcube </var/www/alias_roundcubemail/SQL/mysql5.initial.sql On fait ensuite une copie des fichiers de configuration pour les utiliser # cp /var/www/alias_roundcubemail/config/db.inc.php.dist /var/www/alias_roundcubemail/config/db.inc.php # cp /var/www/alias_roundcubemail/config/main.inc.php.dist /var/www/alias_roundcubemail/config/main.inc.php On passe à l'édition, fichier db.inc.php afin de connecter correctement à la base de donnée # nano /var/www/alias_roundcubemail/config/db.inc.php $rcmail_config['db_dsnw'] = 'mysql://roundcube:mot_de_passe_mysqlroundcube@localhost/roundcube'; # nano /var/www/alias_roundcubemail/config/main.inc.php $rcmail_config['default_host'] = 'localhost'; $rcmail_config['default_port'] = 143; $rcmail_config['imap_auth_type'] = LOGIN; ## Pour utiliser la fonction mail() de PHP pour les envois (easy) $rcmail_config['smtp_server'] = ''; $rcmail_config['enable_installer'] = false; ## Permettre l'auto-complétion de la connexion $rcmail_config['login_autocomplete'] = 2; ## Pour autoriser Roundcube dans des frames $rcmail_config['x_frame_options'] = false; $rcmail_config['product_name'] = 'Mon Webmail'; $rcmail_config['locale_string'] = 'fr'; $rcmail_config['prefer_html'] = true; $rcmail_config['show_images'] = 1; Il y a de multiples autres paramètres intéressants ! Pour finir, installons le Webmail sur Apache On assumera qu'il a été créé un sous domaine du nom de webmail Dans les faits, c'est la création d'une zone DNS type A avec le nom webmail, pointant sur le serveur... # nano /etc/apache2/sites-available/alias_roundcubemail.conf ServerName webmail.mondomaine.net DocumentRoot /var/www/alias_roundcubemail Options FollowSymLinks AllowOverride All alias_roundcubemail> Options FollowSymLinks -MultiViews -Indexes AllowOverride All Order allow,deny allow from all ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access-alias_roundcubemail.log combined ServerSignature On On "installe" le site avec la commande suivante, puis on redemarre le serveur web # a2ensite # /etc/init.d/apache2 restart Il n'y a plus qu'à se connecter sur http://webmail.mondomaine.net
-
Postfixadmin C'est une interface web qui permet de gérer les noms de domaines et adresses emails installés sur le serveur mails. Pour installer postfixadmin, j'ai choisi de récupérer sur le site web Postfixadmin le paquet pour debian, actuellement il s'agit de la version postfixadmin-_2.92-1_all.deb Une fois le paquet deb récupéré sur le serveur, on installe le paquet et sa dépendance nécessaire... $ sudo apt-get install wwwconfig-common $ sudo dpkg -i postfixadmin_2.92-1_all.deb Lors de l'installation, la base de données associée peut être créée, nous allons utiliser celle créée précedemment lors de l'installation de postfix. Type: mysql Nom: postfix Nom d'utilisateur: postfix Un mot de passe utilisateur: mot_de_passe_postfix La méthode d'encryption des mots de passe est très importante puisque plusieurs applications vont y accéder. Au vu de l'installation faite précédemment, il faut choisir l'encodage de mysql, parfait pur une authentification SASL se déroulant avec PAM + mysql. Pour ne pas avoir un soucis lors de la création du premier mot de passe, on commence par éditer certaines lignes du fichier de config. # nano /etc/postfixadmin/config.inc.php $CONF['encrypt'] = 'mysql_encrypt'; $CONF['authlib_default_flavor'] = 'md5'; $CONF['dovecotpw'] = "/usr/sbin/dovecotpw"; On place un alors lien symbolique dans /var/www et on change les droits $ sudo ln -s /usr/share/postfixadmin /var/www/alias_vers_postfixadmin $ sudo chmod -R o-r /usr/share/postfixadmin $ sudo chown root:www-data -R /usr/share/postfixadmin L'adresse web de Postfixadmin sera: http://ns01.mondomaine.net/alias_vers_postfixadmin postfixadmin est livré avec un script d'installation. Saisir l'URL: http://ns01.mondomaine.net/alias_vers_postfixadmin/setup.php Lors de l'installation par ce script, il faut choisir l'adresse email et le mot de passe du super-administrateur de postfix, utilisateur qui pourra faire toutes les opérations sur les comptes emails et emails. Il sera ensuite possible de nommer un administrateur par domaine si besoin. Mais avant de faire tout cela et d'ajouter les premiers domaines, fermer le navigateur une fois le super-administrateur créé et finaliser la configuration. Retour sur le fichier de configuration PHP. # nano /usr/local/share/postfixadmin/config.inc.php Voici certaines des lignes importantes de ce fichier: $CONF['configured'] = true; $CONF['default_language'] = 'fr'; $CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'mot_de_passe_postfix'; $CONF['database_name'] = 'postfix'; ### Rappel $CONF['encrypt'] = 'mysql_encrypt'; $CONF['authlib_default_flavor'] = 'md5'; $CONF['dovecotpw'] = "/usr/sbin/dovecotpw"; $CONF['default_aliases'] = array ( 'abuse' => 'email@mondomaine.net', 'hostmaster' => 'email@mondomaine.net', 'postmaster' => 'email@mondomaine.net', 'webmaster' => 'email@mondomaine.net' ); ### Afin de stocker dans /var/mail/virtual/mondomaine.net/email $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'NO'; $CONF['maildir_name_hook'] = 'NO'; $CONF['user_footer_link'] = "http://ns01.mondomaine.net"; $CONF['show_footer_text'] = 'YES'; $CONF['footer_text'] = 'Aller sur Mon Domaine'; $CONF['footer_link'] = 'http://ns01.mondomaine.net'; $CONF['welcome_text'] = <<Salut, ici le message de bienvenue après création de nouveau compte email EOM; On va ensuite dépalcer le fichier setup.php # mv /usr/local/share/postfixadmin/setup.php /usr/local/share/postfixadmin/setup-done.php Il est maintenant possible d'utiliser postfixadmin, ajouter les domaines et adresses emails. Roundcube webmail Dernière phase du montage du serveur mails complet, l'installation d'un webmail afin de permettre aux utilisateurs de consulter leurs emails en ligne sur le serveur. Roundcube m'a paru être une bonne solution, complet, en français, pas vilain du tout et bénéficiant de fonctions jquery pour le glisser-déposer des messages, support CCS2, bref à mon goût. Pour son installation, nous allons récupérer la dernière archive en date sur le site officiel. Cela se passe ici: http://www.roundcube.net/download Téléchargez la dernière version complète (0.9.2 ce jour) et récupérez la sur votre serveur Nous n'allons pas utiliser l'auto-installer, alors on va déplacer ce dossier ( ou le supprimer ) # tar xvzf roundcubemail-0.9.2.tar.gz /var/www # mv /var/www/roundcubemail-0.9.2 /var/www/alias_roundcubemail # chown root:www-data -R /var/www/alias_roundcubemail # cd /var/www/alias_roundcubemail # chmod 0777 logs # chmod 0777 temp # mv installer installer-off On prépare ensuite la base de données MySQL rouncube # mysql -uroot -pmot_de_passe_mysqlroot mysql> CREATE DATABASE roundcube; mysql> GRANT ALL ON roundcube.* TO 'roundcube'@'localhost' IDENTIFIED BY 'mot_de_passe_mysqlroundcube'; mysql> quit On peuple la base de données roundcube avec le fichier SQL fourni # mysql -uroundcube -pmot_de_passe_mysqlroundcube -droundcube </var/www/alias_roundcubemail/SQL/mysql5.initial.sql On fait ensuite une copie des fichiers de configuration pour les utiliser # cp /var/www/alias_roundcubemail/config/db.inc.php.dist /var/www/alias_roundcubemail/config/db.inc.php # cp /var/www/alias_roundcubemail/config/main.inc.php.dist /var/www/alias_roundcubemail/config/main.inc.php On passe à l'édition, fichier db.inc.php afin de connecter correctement à la base de donnée # nano /var/www/alias_roundcubemail/config/db.inc.php $rcmail_config['db_dsnw'] = 'mysql://roundcube:mot_de_passe_mysqlroundcube@localhost/roundcube'; # nano /var/www/alias_roundcubemail/config/main.inc.php $rcmail_config['default_host'] = 'localhost'; $rcmail_config['default_port'] = 143; $rcmail_config['imap_auth_type'] = LOGIN; ## Pour utiliser la fonction mail() de PHP pour les envois (easy) $rcmail_config['smtp_server'] = ''; $rcmail_config['enable_installer'] = false; ## Permettre l'auto-complétion de la connexion $rcmail_config['login_autocomplete'] = 2; ## Pour autoriser Roundcube dans des frames $rcmail_config['x_frame_options'] = false; $rcmail_config['product_name'] = 'Mon Webmail'; $rcmail_config['locale_string'] = 'fr'; $rcmail_config['prefer_html'] = true; $rcmail_config['show_images'] = 1; Il y a de multiples autres paramètres intéressants ! Pour finir, installons le Webmail sur Apache On assumera qu'il a été créé un sous domaine du nom de webmail Dans les faits, c'est la création d'une zone DNS type A avec le nom webmail, pointant sur le serveur... # nano /etc/apache2/sites-available/alias_roundcubemail.conf ServerName webmail.mondomaine.net DocumentRoot /var/www/alias_roundcubemail Options FollowSymLinks AllowOverride All alias_roundcubemail> Options FollowSymLinks -MultiViews -Indexes AllowOverride All Order allow,deny allow from all ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access-alias_roundcubemail.log combined ServerSignature On On "installe" le site avec la commande suivante, puis on redemarre le serveur web # a2ensite # /etc/init.d/apache2 restart Il n'y a plus qu'à se connecter sur http://webmail.mondomaine.net
-
Il est temps de lancer les services et de contrôler le fonctionnement de tout cela... # /etc/init.d/postfix start # /etc/init.d/dovecot start # /etc/init.d/saslauthd start # /etc/init.d/amavis start # /etc/init.d/clamav-freshclam start # /etc/init.d/clamav-daemon start # /etc/init.d/spamassassin start Commandes utiles Connaître l'état de la Queue de mails # mailq Pour supprimer un seul mail de la Queue, il suffit d'indiquer son ID # /etc/init.d/postfix stop # postsuper -d queue_id # /etc/init.d/postfix start Pour vider entièrement la file d'attente... # /etc/init.d/postfix stop # postsuper -d ALL # /etc/init.d/postfix start Surveillez les logs des différents services # tail -f /var/log/mail.log # tail -f /var/log/mail.err # tail -f /var/log/dovecot.log Vérifier que votre serveur n'est pas en open relay ici: http://www.mailradar.com/openrelay
-
Configuration Amavis, Spamassassin et Clamav Le principe de Amavis est de monitorer ces divers outils. Il récupère de postfix les messages, les traite avec clamav (antivirus) et spamassin et repasse dans postfix selon leur état. Autorisons clamav à traiter les message en l'ajoutant au groupe amavis et créons le dossier qui servira de quarantaine pour les virus... # usermod -a -G clamav amavis # mkdir -p /var/spool/virusmails # chown amavis:amavis /var/spool/virusmails # chmod 0770 /var/spool/virusmails Mettre à jour les divers outils installés, d'abord Clamav, patience ! # freshclam Puis Spamassassin # sa-update Le dossier de configuration de Amavis se situe dans /etc/amavis/conf.d et fonctionne un peu de la même manière que les fichiers de configuration de dovecot. # cd /etc/amavis/conf.d On fait une copie du fichier et on l'édite # cp 01-debian 01-debian.save # nano 01-debian $ENV{PATH} = $path = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/bin:/bin'; $file = 'file'; $gzip = 'gzip'; $bzip2 = 'bzip2'; $lzop = 'lzop'; $rpm2cpio = ['rpm2cpio.pl','rpm2cpio']; $cabextract = 'cabextract'; $uncompress = ['uncompress', 'gzip -d', 'zcat']; $unfreeze = ['unfreeze', 'freeze -d', 'melt', 'fcat']; #disabled (non-free, no security support) $arc = ['nomarch', 'arc']; $unarj = ['arj', 'unarj']; $unrar = ['unrar-free']; # $zoo = 'zoo'; $lha = 'lha'; $lha = undef; $pax = 'pax'; $cpio = 'cpio'; $ar = 'ar'; $ripole = 'ripole'; $dspam = 'dspam'; 1; # ensure a defined return # cp 05-domain_id 05-domain_id.save # nano 05-domain_id use strict; chomp($mydomain = `head -n 1 /etc/mailname`); @local_domains_acl = ( "." ); # Permet de scanner tous les domaines # cp 15-content_filter_mode 15-content_filter_mode.save # nano 15-content_filter_mode ####### Décommenter les lignes suivantes @bypass_virus_checks_maps = ( %bypass_virus_checks, @bypass_virus_checks_acl, $bypass_virus_checks_re); @bypass_spam_checks_maps = ( %bypass_spam_checks, @bypass_spam_checks_acl, $bypass_spam_checks_re); # cp 20-debian_defaults 20-debian_defaults.save # nano 20-debian_defaults # Extrait des lignes importantes $QUARANTINEDIR = "/var/spool/virusmails"; $quarantine_subdir_levels = 1; # enable quarantine dir hashing $log_recip_templ = undef; # disable by-recipient level-0 log entries $DO_SYSLOG = 1; # log via syslogd (preferred) $syslog_ident = 'amavis'; # syslog ident tag, prepended to all messages $syslog_facility = 'mail'; $syslog_priority = 'debug'; # switch to info to drop debug output, etc $enable_db = 1; # enable use of BerkeleyDB/libdb (SNMP and nanny) $enable_global_cache = 1; # enable use of libdb-based cache if $enable_db=1 $inet_socket_port = 10024; # default listening socket $sa_spam_subject_tag = '*****SPAM***** '; $sa_tag_level_deflt = undef; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 5.00; # add 'spam detected' headers at that level $sa_kill_level_deflt = 5.00; # triggers spam evasive actions $sa_dsn_cutoff_level = 25; # spam level beyond which a DSN is not sent $sa_mail_body_size_limit = 200*1024; # don't waste time on SA if mail is larger $sa_local_tests_only = 0; # only tests which do not require internet access? $MAXLEVELS = 14; $MAXFILES = 1500; $MIN_EXPANSION_QUOTA = 100*1024; # bytes $MAX_EXPANSION_QUOTA = 300*1024*1024; # bytes $final_virus_destiny = D_DISCARD; # (data not lost, see virus quarantine) $final_banned_destiny = D_BOUNCE; # D_REJECT when front-end MTA $final_spam_destiny = D_PASS; $final_bad_header_destiny = D_PASS; # False-positive prone (for spam) $enable_dkim_verification = 0; #disabled to prevent warning $virus_admin = "root@$mydomain"; # due to D_DISCARD default $X_HEADER_LINE = "Debian $myproduct_name at $mydomain"; # cp 50-user 50-user.save # nano 50-user use strict; $spam_quarantine_to = undef; # Do nothing with Spam $spam_admin = "root"; # Where to send Notification 1; # ensure a defined return Pour activer le démon spamd, éditer /etc/default/spamassassin et passer la variable ENABLED à 1 # nano /etc/default/spamassassin Pour paramétrer plus avant SpamAssasion, se référer au fichier local.cf # nano /etc/spamassassin/local.cf
-
Dovecot sera le relai de transport emails IMAP et POP3. On va lui indiquer qu'il doit se connecter par mysql afin d'authentifier les utilisateurs dans la base de données postfix. # cp /etc/dovecot/dovecot-sql.conf /etc/dovecot/dovecot-sql.conf.save # nano /etc/dovecot/dovecot-sql.conf driver = mysql connect = host=127.0.0.1 dbname=postfix user=postfix password=mot_de_passe_postfix default_pass_scheme = CRYPT password_query = SELECT password FROM mailbox WHERE username = '%u' user_query = SELECT '/var/mail/virtual/%d/%n' as home, 'maildir:/var/mail/virtual/%d/%n' as mail, 5000 AS uid, 5000 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1' # cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.save # nano /etc/dovecot/dovecot.conf auth_debug = yes mail_debug = yes # auth_debug_password = yes listen = *, :: base_dir = /var/run/dovecot/ instance_name = dovecot !include conf.d/*.conf protocols = imap pop3 log_path = /var/log/dovecot.log info_log_path = /var/log/dovecot-info.log # SSL ssl = yes disable_plaintext_auth = no ssl_cert = ssl_key = verbose_ssl = yes service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { port = 995 ssl = yes } } protocol imap { imap_client_workarounds = delay-newmail tb-extra-mailbox-sep } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } service imap-login { inet_listener imap { address = * port = 143 } inet_listener imaps { port = 993 ssl = yes } } Voilà donc pour la base de Dovecot. Il nous reste encore à configurer un certain nombre d'autres paramètres, dans les fichiers de configuration situés dans /etc/dovecot/conf.d # cd /etc/dovecot/conf.d # cp 10-auth.conf 10-auth.conf.save # nano 10-auth.conf disable_plaintext_auth = yes auth_mechanisms = plain login cram-md5 digest-md5 !include auth-sql.conf.ext # cp 10-mail.conf 10-mail.conf.save # nano 10-mail.conf ####### Ajouter à la fin mail_location = maildir:/var/mail/virtual/%d/%n mail_uid = 5000 mail_gid = 5000 # cp 10-master.conf 10-master.conf.save # nano 10-master.conf ####### S'assurer de la bonne configuration de la section auth { } service auth { unix_listener /var/spool/postfix/private/auth { mode = 0777 user = postfix group = postfix } } # cp auth-sql.conf.ext auth-sql.conf.ext.save # nano auth-sql.conf.ext passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf }
-
Il y a encore besoin d'un certain nombre de fichiers additionnels pour faire la configuration de Postfix selon le filtrage que l'on veut activer. Je veux filtrer sur une liste d'expéditeurs et de destinataires valides, afin d'éviter que le serveur serve de relai ouvert pour tout les domaines. Dans cette optique, on va créer deux fichiers qui contiendront plus ou moins la même chose. Il suffit de saisir les noms de domaines acceptés. Dans ce cas, les emails sur mondomaine.net et monautredomaine.com pourront recevoir des mails depuis partout et envoyer des emails partout. # nano /etc/postfix/access_by_recipient mondomaine.net OK monautredomaine.com OK unautredomaine.com REJECT # nano /etc/postfix/access_by_sender mondomaine.net OK monautredomaine.com OK unautredomaine.com REJECT Nous allons également éditer les alias système pour recevoir les alertes de Postfix et les messages administratifs par email. # nano /etc/aliases # /etc/aliases mailer-daemon: root postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root root: email@mondomaine.net clamav: root On prépare ces fichiers pour être utilisés par Postfix. Si des modifications sont faites ultérieurement sur ces fichiers (ajout de domaines, alias ou autre), il sera nécessaire de les republier en saisissant la commande correspondante au fichier: # newaliases # postmap /etc/postfix/access_by_sender # postmap /etc/postfix/access_by_recipient On crée l'utilisateur et groupe vmail avec un UID et GID de 5000. Cet utilsateur aura comme dossier /var/mail/virtual qui sera donc le dossier de stockage emails # groupadd -g 5000 vmail # useradd -g vmail -u 5000 vmail -d /var/mail/virtual -m Nous avons maintenant les fichiers utiles à la configuration de Postfix. Avant de modifier les fichiers sensibles de la configuration, on en fera une copie avec un suffixe .save qui permettra si besoin de revenir à la configuration de base. On attaque par le main.cf # cp /etc/postfix/main.cf /etc/postfix/main.cf.save # nano /etc/postfix/main.cf biff = no anvil_rate_time_unit = 60s mail_name = Postfix Mail Server myhostname = ns01.mondomaine.net mydomain = mondomaine.net myorigin = $mydomain mail_owner = postfix alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mydestination = ns01.mondomaine.net, localhost.mondomaine.net, localhost relayhost = notify_classes = resource, software mynetworks = 127.0.0.0/8, 91.91.91.91/32 relay_domains = recipient_delimiter = + inet_interfaces = all smtpd_banner = $myhostname ESMTP $mail_name (Debian) append_dot_mydomain = no delay_warning_time = 1h maximal_queue_lifetime = 10d mailbox_size_limit = 0 message_size_limit = 15728640 virtual_alias_maps = mysql:/etc/postfix/mysql/mysql_virtual_alias.cf virtual_mailbox_base = /var/mail/virtual virtual_mailbox_domains = mysql:/etc/postfix/mysql/mysql_virtual_domains.cf virtual_mailbox_limit = 51200000 virtual_mailbox_maps = mysql:/etc/postfix/mysql/mysql_virtual_mailbox.cf virtual_minimum_uid = 100 virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 #virtual_create_maildirsize = yes #virtual_mailbox_extended = yes #virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql/mysql_virtual_mailbox_limit.cf #virtual_mailbox_limit_override = yes #virtual_maildir_limit_message = Sorry, the maildir has overdrawn diskspace quota #virtual_overquota_bounce = yes # Transport par dovecot dovecot_destination_recipient_limit = 1 virtual_transport = dovecot maps_rbl_domains = relays.ordb.org, opm.blitzed.org, blackholes.easynet.nl, cbl.abuseat.org smtpd_helo_required = yes allow_untrusted_routing = no disable_vrfy_command = yes # Securite SASL smtpd_sasl_local_domain = $myhostname smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes # TLS server options smtpd_tls_security_level = may smtpd_tls_auth_only = no smtp_enforce_tls = no smtp_tls_enforce_peername = no smtpd_tls_key_file = /etc/ssl_cert/sCA/private/server-key-cert.pem smtpd_tls_cert_file = /etc/ssl_cert/sCA/private/server-key-cert.pem smtpd_tls_CAfile = /etc/ssl_cert/sCA/certs/serverCA.crt smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_session_cache tls_random_source = dev:/dev/urandom smtpd_tls_ask_ccert = yes smtpd_tls_req_ccert = no smtpd_tls_mandatory_protocols = !SSLv2 smtpd_tls_mandatory_ciphers = high smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 smtp_use_tls = yes smtp_tls_note_starttls_offer = no smtp_tls_loglevel = 1 smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination, check_recipient_access hash:/etc/postfix/access_by_recipient, check_sender_access hash:/etc/postfix/access_by_sender, reject_unauth_destination, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_non_fqdn_sender, reject_unknown_recipient_domain, reject_invalid_helo_hostname, reject_unlisted_recipient, reject_unlisted_sender, reject_non_fqdn_helo_hostname, reject_rbl_client list.dsbl.org, reject_rhsbl_sender $maps_rbl_domains, dsn.rfc-ignorant.org, reject_invalid_hostname, reject_unauth_pipelining, Passons au master.cf # cp /etc/postfix/master.cf /etc/postfix/master.cf.save # nano /etc/postfix/master.cf # Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master"). # # Do not forget to execute "postfix reload" after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - - - - smtpd submission inet n - - - - smtpd -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes #628 inet n - - - - qmqpd pickup fifo n - - 60 1 pickup cleanup unix n - - - 0 cleanup qmgr fifo n - n 300 1 qmgr #qmgr fifo n - - 300 1 oqmgr tlsmgr unix - - - 1000? 1 tlsmgr rewrite unix - - - - - trivial-rewrite bounce unix - - - - 0 bounce defer unix - - - - 0 bounce trace unix - - - - 0 bounce verify unix - - - - 1 verify flush unix n - - 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - - - - smtp # When relaying mail as backup MX, disable fallback_relay to avoid MX loops relay unix - - - - - smtp -o smtp_fallback_relay= # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 showq unix n - - - - showq error unix - - - - - error retry unix - - - - - error discard unix - - - - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - - - - lmtp anvil unix - - - - 1 anvil scache unix - - - - 1 scache # # ==================================================================== # Interfaces to non-Postfix software. Be sure to examine the manual # pages of the non-Postfix software to find out what options it wants. # # Many of the following services use the Postfix pipe(8) delivery # agent. See the pipe(8) man page for information about ${recipient} # and other message envelope options. # ==================================================================== # # maildrop. See the Postfix MAILDROP_README file for details. # Also specify in main.cf: maildrop_destination_recipient_limit=1 # maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d vmail ${extension} ${recipient} ${user} ${nexthop} ${sender} # # See the Postfix UUCP_README file for configuration details. # uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) # # Other external delivery methods. # ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} # Dovecot dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} # Amavis smtp-amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
-
Il existe de nombreuses solutions pour la gestion des emails sur un serveur dédié. Après avoir utilisé qmail pendant un moment sur la Release 2 de OVH, je me suis tourné vers une autre solution: - Postfix/Mysql avec identification SASL pour le serveur SMTP - Dovecot comme serveur POP & IMAP - Amavis comme surcouche de Spamassassin et Clamav La configuration de tout ce petit monde est plutôt complexe et va nécessiter de modifier de nombreux fichiers afin d'obtenir un bon fonctionnement. J'ai beaucoup tatonné avant de trouver une solution me convenant et je livre ici un résultat final, partant sur le principe que nous allons utiliser l'ensemble de ces paquets. On va passer en root pour ces opérations. La commande magique pour l'installation... $ su # apt-get install postfix postfix-mysql libsasl2-2 sasl2-bin libsasl2-modules dovecot-common dovecot-imapd dovecot-pop3d libpam-mysql clamav-daemon clamav-freshclam spamassassin amavisd-new arj nomarch lzop cabextract razor pyzor p7zip-full pax zip unzip unrar-free Choisissez "site internet" comme configuration de base pour Postfix et donnez le nom de votre machine comme serveur, soit ns01.mondomaine.net dans cet exemple... Une fois l'installation achevée, on va stopper tous les services, puisque rien n'est correctement configuré pour le moment # /etc/init.d/postfix stop # /etc/init.d/dovecot stop # /etc/init.d/saslauthd stop # /etc/init.d/amavis stop # /etc/init.d/clamav-freshclam stop # /etc/init.d/clamav-daemon stop # /etc/init.d/spamassassin stop Configuration MySQL pour Postfix Créons la table Mysql de base qui sera utilisée par Postfix et Posfix-Admin par la suite. C'est ici que seront stockées nos adresses email entre autres... # mysql -u root -p mysql> create database postfix; mysql> grant create,alter,select,insert,update,delete on postfix.* TO 'postfix'@'localhost' identified by 'mot_de_passe_postfix'; mysql> flush privileges; mysql> quit Ensuite, préparons les fichiers utiles pour faire la connexion à cette base # mkdir /etc/postfix/mysql Nous avons besoin de créer 4 fichiers: # nano /etc/postfix/mysql/mysql_virtual_alias.cf user = postfix password = mot_de_passe_postfix hosts = 127.0.0.1 dbname = postfix table = alias select_field = goto where_field = address # nano /etc/postfix/mysql/mysql_virtual_domains.cf user = postfix password = mot_de_passe_postfix hosts = 127.0.0.1 dbname = postfix table = alias table = domain select_field = domain where_field = domain #additional_conditions = and backupmx = '0' and active = '1' # nano /etc/postfix/mysql/mysql_virtual_mailbox.cf user = postfix password = mot_de_passe_postfix hosts = 127.0.0.1 dbname = postfix table = mailbox select_field = maildir where_field = username additional_conditions = and active = '1' # nano /etc/postfix/mysql/mysql_virtual_mailbox_limit.cf user = postfix password = mot_de_passe_postfix hosts = 127.0.0.1 dbname = postfix table = mailbox select_field = quota where_field = username Afin que Postfix puisse lire ces fichiers, on change les droits. # chmod 640 /etc/postfix/mysql/mysql_* # chgrp postfix /etc/postfix/mysql/mysql_* On se connecte via phpMyAdmin sur la base de données postfix et on crée les tables minimales utiles au fonctionnement de Postfix, avec la commande SQL suivante: CREATE TABLE IF NOT EXISTS `alias` ( `address` varchar(255) NOT NULL, `goto` text NOT NULL, `domain` varchar(255) NOT NULL, `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `active` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`address`), KEY `domain` (`domain`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `domain` ( `domain` varchar(255) NOT NULL, `description` varchar(255) CHARACTER SET utf8 NOT NULL, `aliases` int(10) NOT NULL DEFAULT '0', `mailboxes` int(10) NOT NULL DEFAULT '0', `maxquota` bigint(20) NOT NULL DEFAULT '0', `quota` bigint(20) NOT NULL DEFAULT '0', `transport` varchar(255) NOT NULL, `backupmx` tinyint(1) NOT NULL DEFAULT '0', `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `active` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`domain`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mailbox` ( `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `name` varchar(255) CHARACTER SET utf8 NOT NULL, `maildir` varchar(255) NOT NULL, `quota` bigint(20) NOT NULL DEFAULT '0', `local_part` varchar(255) NOT NULL, `domain` varchar(255) NOT NULL, `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `active` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`username`), KEY `domain` (`domain`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; Authentification SASL pour Postfix Pour commencer on va créer un lien symbolique pour le daemon d'authentification et ajouter l'utilisateur postfix au groupe sasl # mkdir -p /var/spool/postfix/var/run/saslauthd # ln -s /var/spool/postfix/var/run/saslauthd /var/run # chgrp sasl /var/spool/postfix/var/run/saslauthd # adduser postfix sasl Configuration par défaut du daemon # nano /etc/default/saslauthd START=yes DESC="SASL Authentication Daemon" NAME="saslauthd" MECHANISMS="pam" MECH_OPTIONS="" THREADS=5 OPTIONS="-c -r -m /var/spool/postfix/var/run/saslauthd" Le mécanisme utlisé est "PAM", il faut le configurer pour qu'il puisse correctement accéder aux mots de passe stockés dans la base de données postfix. Il y a seulement deux lignes, deux longues lignes ( auth et account ) à ajouter à la fin du fichier # nano /etc/pam.d/smtp auth required pam_mysql.so user=postfix passwd=mot_de_passe_postfixhost=127.0.0.1 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 md5=1 account sufficient pam_mysql.so user=postfix passwd=mot_de_passe_postfixhost=127.0.0.1 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 md5=1 Configuration de l'authentification via SMTP dans Postfix # nano /etc/postfix/sasl/smtp.conf pwcheck_method: saslauthd auxprop auxprop_plugin: sql mech_list: plain login password_format: crypt log_level: 5 allow_plaintext: true sql_engine: mysql sql_hostnames: 127.0.0.1 sql_user: postfix sql_database: postfix sql_passwd: mot_de_passe_postfix sql_verbose: yes sql_select: SELECT password FROM mailbox WHERE username = '%u' LIMIT 1 Indiquer à Postfix qu'il doit utiliser ce fichier lors du démarrage # nano /etc/init.d/postfix Rechercher la ligne qui commence par FILES=" ( aux alentours de la ligne 150 ) et ajouter le fichier précédemment créé comme ceci: FILES="etc/localtime etc/services etc/resolv.conf etc/hosts etc/nsswitch.conf etc/nss_mdns.config etc/postfix/sasl/smtpd.conf"
-
Maintenant que l'installation de base est faite, voici un script de Pare-feu via iptables, à adapter selon la configuration et services actifs sur le serveur et des ports utilisés. J'ai séparé le code en plusieurs parties mais tout ceci est dans un seul et unique script que l'on va nommer firewall.sh ou quelque chose comme ça, à placer dans le dossier /root Attention, de mauvaises règles de pare-feu peuvent boquer l'accès à votre serveur ! # nano /root/firewall.sh #!/bin/bash # Vider les tables iptables -t filter -F iptables -t filter -X # Ne pas casser les connexions etablies iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT On passe aux autorisations # Autoriser NTP iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT # Autoriser loopback iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A OUTPUT -o lo -j ACCEPT # Autoriser ping iptables -t filter -A INPUT -p icmp -j ACCEPT iptables -t filter -A OUTPUT -p icmp -j ACCEPT # HTTP et HTTPS iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT # Serveur FTP iptables -t filter -A OUTPUT -p tcp --dport 20 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Serveur DNS iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 953 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 953 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 953 -j ACCEPT iptables -t filter -A INPUT -p udp --dport 953 -j ACCEPT Pour le filtrage des ports liés aux emails, ici il y a tous les ports utiles pour le smtp de base ou alternatif, pop, imap, smtps, etc etc... A adapter selon les besoin ! # Autoriser les services Mail iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 783 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 465 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 587 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 993 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 2703 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 5025 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 783 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 2703 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 5025 -j ACCEPT Autorise la connexion à Webmin sur un port personnalisé, par exemple le 17170 Sinon, le port par défaut de Webmin est le 10000 # Webmin iptables -t filter -A INPUT -p tcp --dport 17170 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 17170 -j ACCEPT Autorisation pour SSH sur un port personnalisé, par exemple le 22222 Sinon, le port SSH par défaut est le 22 # Autoriser SSH iptables -t filter -A INPUT -p tcp --dport 22222 -m recent --rcheck --seconds 60 --hitcount 2 --name SSH -j LOG --log-prefix "SSH REJECT" iptables -t filter -A INPUT -p tcp --dport 22222 -m recent --update --seconds 60 --hitcount 2 --name SSH -j DROP iptables -t filter -A INPUT -p tcp --dport 22222 -m state --state NEW -m recent --set --name SSH -j ACCEPT Il n'y a là que la base afin d'ouvrir uniquement les ports nécessaires à l'activité web. Didacticiel très complet sur iptables: http://www.frozentux.net/iptables-tutorial/fr/book1.html Une fois firewall.sh correctement renseigné, il faut rendre le script exécutable # chmod +x /root/firewall.sh Et ensuite l'exécuter # sh /root/firewall.sh Puis vérifier que les règles du pare-feu sont correctement chargées. # iptables -L
-
# apt-get install monit # do _leokde _nhtrhtr
-
Vous avez donc reçu un email avec les informations de connexion au serveur. On connait donc l'adresse IP du serveur, son hostname (nom d'hôte), le mot de passe du compte root. On se connecte par l'intermédiaire d'un terminal. ( ou d'un logiciel commePutty ) ssh root@91.91.91.91 Saisissez le mot de passe root. On fait quelques vérifications sur notre système de fichiers # uname -ar Linux ***.org 3.10.23-xxxx-std-ipv6-64 #1 SMP Tue Mar 18 (***) x86_64 GNU/Linux # cat /etc/debian_version 7.7 # cat /etc/fstab # /dev/md2 / ext4 errors=remount-ro,relatime 0 1 /dev/md3 /home ext4 defaults,relatime 1 2 /dev/md5 /var ext4 defaults,relatime 1 2 /dev/sda4 swap swap defaults 0 0 /dev/sdb4 swap swap defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts defaults 0 0 Pour des raisons assez évidentes de sécurité, c'est une très bonne chose que de changer immédiatement ce mot de passe root qui a circulé par email. # passwd Tapez deux fois un nouveau mot de passe fort et sécurisé pour l'utilisateur root. Et conservez-le ! Création d'un nouvel utilisateur Profitez-en pour créer un utilisateur "normal", auquel nous donnerons les droits 'root' pour gérer les opérations d'administration du serveur. Ce sera l'utilisateur qui sera l'administrateur à privilégier, se connecter en root sur une machine est plus que déconseillé et par la suite nous interdirons toute connexion de l'utilisateur root par SSH. # adduser nom_utilisateur Saisir deux fois le mot de passe du nouvel utilisateur, là encore, penser à utiliser un mot de passe fort et sécurisé, puis on associe le nouvel utilisateur aux groupes root et adm afin qu'il puisse accéder aux tâches administratrives sur le système # adduser nom_utilisateur root # adduser nom_utilisateur adm Pour utiliser la commande sudo avec cet utilisateur, on installe le nécessaire # aptitude install sudo # visudo Ajouter la ligne suivante à la fin du fichier: %root ALL=(ALL) PASSWD: ALL Pour confirmer l'enregistrement, faire Ctrl+X, puis presser Y pour yes... On installe quelques paquets utiles # aptitude install debian-goodies fail2ban ntp ntpdate Configuration Fail2ban pour le SSH: # nano /etc/fail2ban/jail.conf Ajouter une section pour sécuriser le SSH, en fin de fichier [ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 5 bantime = 900 On redémarre fail2ban # /etc/init.d/fail2ban restart Déplacer le port d'écoute de SSH # nano /etc/ssh/sshd_config Modifier la ligne Port 22 par Port 22020 (ou tout autre port non standard ouvert) On redémarre ensuite SSH # /etc/init.d/ssh restart Puis on se déconnecte du serveur # logout Reconnexion en SSH Après ces premières opérations, on donc doit pouvoir: Se connecter en SSH avec l'utilisateur root et/ou avec le nouvel utilisateur créé. S'assurer que tout cela est bien possible! On connecte avec le nouvel utilisateur, sur le nouveau port... ssh nom_utilisateur@91.91.91.91 -p 22020 -> Saisir le mot de passe de l'utilisateur Tester la fonction sudo, par exemple en mettant à jour la base de données des fichiers: $ whoami nom_utilisateur $ sudo updatedb (saisir le mot de passe pour nom_utilisateur) Tester le passage en root pour notre utilisateur $ su - (saisir le mot de passe root) # whoami root Si tout cela fonctionne, on peut maintenant interdire l'accès SSH à l'utilisateur root en éditant le fichier de configuration... Changer yes par no pour le paramètre PermitRootLogin # nano /etc/ssh/sshd_config PermitRootLogin no Maintenant, il suffit de relancer le serveur SSH pour prendre en compte cette modification. A compter de ce moment, il faudra donc se connecter avec l'utilisateur qui possède les droits root sur la machine, mais qui n'est pas root... # /etc/init.d/ssh restart
-
Dans le cas d'un serveur dédié OVH. Le partitionnement proposé n'est pas vraiment adapté à certaines spécificités Debian concernant le stockage des fichiers, il faut donc un partitionnement personnalisé, ce qui se paramètre au moment de l'installation du système. On va donc choisir d'installer ou réinstaller, sur un serveur dédié: Système d'exploitation Linux Distribution de base Système d'exploitation Debian 7 stable (Wheezy) 64 bits Utiliser le noyau stable et testé d' OVH (recommandé) Option de langue, je reste en Anglais Rester en Anglais ??? C'est surtout pour avoir des messages pour lesquels il sera plus simple de faire de la recherche sur le net ! A l'étape suivante, il faut choisir de faire un: Partitionnement personnalisé Partitionner le serveur pour une installation de Debian Je passe sur l'outil OVH pour créer les partitions, cela reste assez maniable et compréhensible. A noter que les valeurs sont à noter en Mo. Lorsque l'on veut donc allouer 10 Go, il faut saisir 10240 Mo. On a besoin d'une partition système / Une debian Wheezy ne va pas occuper beaucoup d'espace, il faut compter une paire de Go mais il faut considérer de l'espace diponible pour le "taf" courant du système ( dossier /tmp ) afin qu'on ne se retrouve pas coincé rapidement en cas de surcharge serveur, je me baserai sur les 20 Go proposés par défaut... Par défaut, Debian stocke tout le matos web dans /var Les sites web sont stockés dans /var/www Les divers fichiers de log sont stockés dans /var/log Les bases de données sont stockés dans /var/mysql Les emails sont stockés dans /var/mail On va donc faire une partition /var qui occupera la plus grande partie du stockage. On fait une partition pour le ou les utilisateurs /home La taille est à définir en fonction de ses besoins, si par exemple on a beaucoup d'utilisateurs à qui on va donner accès à des FTPs privés, si on souhaite faire des back-ups dans le dossier d'un utilisateur non-root... Même si le besoin peut être quasi-nul, ne pas être radin et attribuer au moins une dizaine de Go ! Dans le cas présent, ce sera 100 Go car je vais y monter mes backups. Il faut également une partition de type swap Celle-ci sera très peu sollicitée sur un serveur orienté web, mais ça ne mangera pas grand chose que d'attribuer entre 2Go à ce effet... / primaire Le système de base ext4 20480 M /home primaire Les fichiers perso des utilisateurs. ext4 102400 M /var primaire Les fichiers web, mails, logs ext4 Tout le reste swap primaire Un espace de swap swap 2048 M Une fois le partitionnement réalisé, Lancer l'installation et laisser tourner l'installeur d'OVH, cela va demander environ un quart d'heure avant d'obtenir l'email qui contient les informations pour se connecter au serveur fraîchement réinstallé.
-
Présentation de LXC Tout comme Linux-VServer et OpenVZ, LXC est une solution de virtualisation de type isolateur. Cette solution permet la virtualisation par container au niveau du noyau. LXC est très récent et remplace Linux-VServer et OpenVZ. Aussi, LXC est dès à présent intégré au noyau, ce qui n’a jamais été le cas des deux solutions citées précédemment. L’isolateur tire avantage de la possibilité, unique sous UNIX et Linux, de partager le noyau avec d’autres processus du système. Cette virtualisation à noyau partagé utilise une fonctionnalité nommée chroot. Cette fonctionnalité modifie le système de fichiers racine d’un processus pour l’isoler de manière à fournir une certaine sécurité. On parle alors de « prison » chroot. Un programme, ensemble de programmes ou système dans le cas de virtualisation à noyau partagé fonctionnant dans un environnement chroot est protégé en faisant croire au système emprisonné qu’il fonctionne sur une machine réelle avec son propre système de fichiers. Le mécanisme de chroot a été amélioré pour mimer un système de fichiers entier, de sorte qu’un système entier peut fonctionner dans un chroot, ce qui constitue une machine virtuelle. Cette solution est très performante du fait du peu d’overhead puisque les environnements virtualisés se partagent le code du noyau. Le schéma ci-dessous représente la technologie de virtualisation par isolation : Notes La totalité des opérations décrites ne devrait pas vous prendre plus de 30 minutes (en dehors des temps nécessaires aux compilations qui devraient avoisiner les 45 minutes en fonction des performances de votre machine) Si une partie d’une ligne de commande est surlignée comme ceci, cela signifie qu’elle peut ou doit être adaptée avec vos paramètres ou préférences Je pars du principe que vous avez déjà installé une distribution sur votre serveur Ce guide a été écrit et testé pour une Debian Wheezy 64 bits, il devrait cependant fonctionner avec ses dérivés (Ubuntu, Xandros, etc.) Compilation du nouveau noyau Linux Les noyaux par défaut installés sur les serveurs Kimsufi ont été privés de certaines options malheureusement indispensables au fonctionnement de LXC (Pid namespace, User namespace, Multiple /dev/pts instances, Cgroup namespace, Cgroup sched, Cgroup memory controller, Veth pair device, Macvlan). Pour cette raison, nous allons devoir en compiler un nouveau en activant les options nécessaires. Avant d’entamer de nombreuses manipulations sur un serveur, j’ai pour habitude de lancer un screen. Cela permet, en cas de coupure de la connexion, de ne pas stopper la tâche en cours (une compilation par exemple) ; vous pourrez donc vous y rattacher et ainsi reprendre là où vous en étiez. Si screen n’est pas déjà installé : apt-get install screen On créé la session screen : screen -S kim En cas de déconnexion, vous pourrez reprendre votre session comme ceci : screen -x kim Il est même possible de se rattacher à la session depuis plusieurs machines, cela vous permet par exemple de partager votre terminal avec une autre personne qui pourra voir en temps réel ce qu’il s’y passe. Nous allons commencer par reconfigurer les locales avec le jeu de paramètres régionaux français : dpkg-reconfigure locales On décoche les locales suivantes avec la barre d’espace : en_GB ISO-8859-1 en_GB.ISO-8859-15 ISO-8859-15 en_GB.UTF-8 UTF-8 On coche celles-ci : fr_FR ISO-8859-1 fr_FR.UTF-8 UTF-8 fr_FR.UTF-8@euro fr_FR@euro ISO-8859-15 On valide, puis dans la fenêtre de dialogue qui suit on sélectionne fr_FR.UTF-8. Enfin, on précise au système quelle langue utiliser : echo "LC_ALL=fr_FR.UTF-8" >> /etc/environment echo "LANG=fr_FR.UTF-8" >> /etc/environment echo "LANGUAGE=fr_FR.UTF-8" >> /etc/environment On met à jour le système au cas où : apt-get update apt-get upgrade Pour compiler notre noyau, nous allons avoir besoin d’installer plusieurs outils : apt-get install make gcc libncurses5-dev lzma dpkg-dev wget On se créé un répertoire de travail : mkdir /root/noyau cd /root/noyau On récupère la dernière version stable du noyau sur https://www.kernel.org/. Actuellement la dernière version est la 3.14.3 : wget -P /root/noyau -c --no-check-certificate https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.3.tar.xz On décompresse l’archive et on se place dans le répertoire : tar -Jxvf linux-3.14.3.tar.xz cd /root/noyau/linux-3.14.3 Par curiosité, on peut regarder quelle est la version du noyau actuellement utilisée : uname -r Pour que le noyau que nous allons compiler soit compatible avec la machine, nous allons devoir récupérer la dernière version du fichier de configuration du noyau d’OVH. Ces fichiers sont hébergés ici : ftp://ftp.ovh.net/made-in-ovh/bzImage On récupère la dernière configuration (actuellement la 3.14.2) : wget -P /root/noyau/linux-3.14.3 -c ftp://ftp.ovh.net/made-in-ovh/bzImage/3.14.2-2/config-3.14.2-xxxx-std-ipv6-64 Dans l’utilitaire de configuration des options du noyau menuconfig, le nom par défaut du fichier de configuration est « .config », nous allons donc renommer celui que nous venons de télécharger : mv config-3.14.2-xxxx-std-ipv6-64 .config On lance l’utilitaire de configuration : make menuconfig Si vous n’êtes pas familier avec menuconfig, voici le minimum à savoir : On se déplace avec les flèches haut, bas, gauche et droite On coche une option avec la barre espace ([*] signifie que l’option est activée, [ ]signifie que l’option n’est pas activée) ---> signifie que l’option dispose d’un sous-menu On se rend dans un sous-menu avec la touche entrée La première étape est de charger le fichier de configuration. Pour cela, on se rend dans<Load> et on valide <Ok> avec la touche entrée. Ensuite, il faut activer les options suivantes : General setup ---> [*] Control Group support ---> [*] Example debug cgroup subsystem [*] Freezer cgroup subsystem [*] Device controller for cgroups [*] Cpuset support [*] Include legacy /proc/<pid>/cpuset file [*] Simple CPU accounting cgroup subsystem [*] Resource counters [*] Memory Resource Controller for Control Groups [*] Memory Resource Controller Swap Extension [*] Memory Resource Controller Swap Extension enabled[...] [*] Memory Resource Controller Kernel Memory accountin[...] [*] Enable perf_event per-cpu per-container group (cgrou[...] [*] Group CPU scheduler ---> [*] Group scheduling for SCHED_OTHER (NEW) [*] CPU bandwidth provisioning for FAIR_GROUP_SCHED [*] Group scheduling for SCHED_RR/FIFO [*] Block IO controller [*] Enable Block IO controller debugging -*- Namespaces support ---> [*] UTS namespace [*] IPC namespace [*] User namespace [*] PID Namespaces [*] Network namespace [*] Enable loadable module support Networking support ---> Networking options ---> <*> 802.1d Ethernet Bridging [*] IGMP/MLD snooping [*] VLAN filtering <*> 802.1Q/802.1ad VLAN Support [*] GVRP (GARP VLAN Registration Protocol) support Device Drivers ---> [*] Network device support ---> <*> MAC-VLAN support <*> MAC-VLAN based tap driver <*> Virtual ethernet pair device Character devices ---> -*- Unix98 PTY support [*] Support multiple instances of devpts Une fois la configuration terminée, ne pas oublier d’enregistrer les modifications : <Save>puis <Ok>. Nous pouvons à présent quitter menuconfig : <Exit> et compiler notre nouveau noyau. La commande suivante redirige la sortie standard vers le fichier compil.log, cela vous permettra d’en savoir un peu plus en cas de problème ; aussi, pour que la compilation soit plus rapide, vous pouvez adapter l’argument 4 de l’option --jobs en fonction du nombre de threads que peut exécuter votre machine simultanément : make KDEB_PKGVERSION=3.14.2.cgroups.1.0 deb-pkg --jobs 4 | tee -a compil.log La compilation devrait durer une bonne demi-heure, voir plus, selon la configuration de votre serveur. Si tout se passe bien, vous devriez trouver votre nouveau noyau dans /root/noyau :linux-image-3.12.4-xxxx-std-ipv6-64_3.12.4.cgroups.1.0_amd64.deb LXC repose sur les fonctionnalités des Control Groups qui permettent de limiter, compter, et isoler l’utilisation des ressources processeur, mémoire, ou espace disque ; nous devons donc les monter automatiquement au démarrage de la machine, pour cela, il suffit de les ajouter dans /etc/fstab : echo "cgroup /sys/fs/cgroup cgroup defaults 0 0" >> /etc/fstab mkdir -p /sys/fs/cgroup mount /sys/fs/cgroup On déplace le noyau actuel : mv /boot/bzImage-3.10.23-xxxx-std-ipv6-64 /tmp mv /boot/System.map-3.10.23-xxxx-std-ipv6-64 /tmp mv /etc/grub.d/06_OVHkernel /tmp Nous pouvons à présent installer le noyau que nous venons de compiler : dpkg -i /root/noyau/linux-image-3.14.3-xxxx-std-ipv6-64_3.14.2.cgroups.1.0_amd64.deb Si l’installation s’est bien déroulée, on redémarre le serveur : reboot On pense à recréer une session screen : screen -S kim On s’assure que nous sommes à présent sur le nouveau noyau : uname -r Vous devriez obtenir la valeur suivante : 3.12.4-xxxx-std-ipv6-64 Maintenant que la compilation et l’installation du nouveau noyau Linux sont terminées, nous pouvons passer à l’installation de LXC. Installation de LXC LXC est présent dans les dépôts, mais dans une ancienne version, qui de plus, peut poser quelques problèmes. Le projet évoluant assez vite, nous allons récupérer la dernière version directement depuis git et la compiler nous-mêmes. Pour cela, nous avons besoin de quelques outils : apt-get install git automake libcap-dev pkg-config docbook2x python3-dev On récupère le projet complet : cd /root git clone https://github.com/lxc/lxc.git On se place dans le répertoire contenant le projet et on lance le script de génération dumakefile : cd /root/lxc ./autogen.sh On démarre la compilation en lançant les commandes suivantes une par une : ./configure --enable-doc --enable-python --prefix=/usr | tee -a config.logmake -j4 | tee -a compil.logmake check On installe LXC : make install Un peu de nettoyage : make distclean Maintenant que nous avons un noyau compilé spécialement pour l’occasion, et que nous avons installé LXC dans sa version la plus récente, il convient de s’assurer que la configuration du noyau est correcte : lxc-checkconfig Tout devrait être à « enable ». En lançant la commande lxc-checkconfig, vous pouvez voir que le contrôleur memory est activé ce qui n’est pas tout à fait exact ; le terme adéquat serait « supporté » car en réalité, par défaut, il est désactivé. Ce contrôleur permet de limiter l’utilisation de la mémoire (plus d’infos ici et là). Nous allons donc devoir l’activer en remplaçant la ligneGRUB_CMDLINE_LINUX="" du fichier /etc/default/grub parGRUB_CMDLINE_LINUX="cgroup_enable=memory". La commande sed suivante vous épargnera l’édition manuelle du fichier : sed -i -e "s/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="cgroup_enable=memory"/g" /etc/default/grub On applique les modifications puis on redémarre la machine pour la dernière fois : update-grub reboot LXC est à présent prêt à fonctionner, cependant, avant de pouvoir créer des serveurs virtuels, il va nous falloir effectuer une petite modification. Par défaut, les containers sont stockés dans le répertoire /usr/var/lib/lxc. Or sur un serveur Kimsufi PS 4G de 1To, la partition / ne fait que 20 Go, contre 898 Go pour la partition /home. Nous allons donc déplacer l’emplacement par défaut vers/home/containers. On créé le répertoire /home/containers : mkdir /home/containers On créé un lien symbolique de /usr/var/lib/lxc vers /home/lxc : rm -r /usr/var/lib/lxc ln -s /home/containers/ /usr/var/lib/lxc Création d’un serveur virtuel sous Debian Wheezy On installe les paquets nécessaires à la création du pont et du rootfs : apt-get install bridge-utils debootstrap Les templates de création de containers fournis avec LXC sont stockés dans/usr/share/lxc/templates. Ces templates automatisent l’installation des distributions. Je vous propose de personnaliser le template de création d’un container Debian en modifiant les paramètres de langues et en ajoutant quelques paquets. On met de côté le template original : cp /usr/share/lxc/templates/lxc-debian /usr/share/lxc/templates/lxc-debian.bak De base, les paramètres de langues sont définis en anglais, nous allons éditer deux lignes pour les mettre en français : chroot $rootfs locale-gen en_US.UTF-8 UTF-8 devient chroot $rootfs locale-gen fr_FR.UTF-8 chroot $rootfs update-locale LANG=en_US.UTF-8 devient chroot $rootfs update-locale LANG=fr_FR.UTF-8 Les commandes sed suivantes vous épargneront l’édition manuelle du fichier : sed -i -e "s/locale-gen en_US.UTF-8 UTF-8/locale-gen fr_FR.UTF-8/g" /usr/share/lxc/templates/lxc-debian sed -i -e "s/update-locale LANG=en_US.UTF-8/update-locale LANG=fr_FR.UTF-8/g" /usr/share/lxc/templates/lxc-debian Nous allons également ajouter deux paquets : l’éditeur de texte vim et l’utilitaire iputils-ping qui permet de tester l’accessibilité d’une autre machine à travers un réseau IP : La commande sed suivante vous épargnera l’édition manuelle du fichier : sed -i -e "s/openssh-server/openssh-server,niputils-ping,nvim/g" /usr/share/lxc/templates/lxc-debian Nous sommes à présent prêts à créer notre premier container sous Debian Wheezy. Pour cela rien de plus simple : on créé un nouveau container : lxc-create on lui donne un nom : -n vm1 on indique quel template utiliser : -t debian Ce qui nous donne : lxc-create -n vm1 -t debian Comme vous avez pu le constater, l’installation a duré quelques minutes, rassurez-vous, la création de nouveaux containers ne prendra que quelques secondes, car les paquets nécessaires ont été mis en cache. Nous venons de créer notre premier container, avant de le démarrer, nous allons configurer le réseau pour qu’il ait accès à internet. Configuration du réseau Configuration du container Nous allons commencer par configurer l’interface de notre serveur virtuel en lui attribuant une adresse privée. Pour cela, on édite son fichier interfaces comme suit : vim /home/containers/vm1/rootfs/etc/network/interfacesauto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 Pour finir, on édite le fichier de configuration de notre serveur virtuel en ajoutant les éléments suivants à la fin du fichier : vim /home/containers/vm1/config# Network lxc.utsname = vm1 lxc.network.type = veth lxc.network.flags = up lxc.network.link = br0 lxc.network.name = eth0 lxc.network.ipv4 = 192.168.1.2/24 lxc.network.ipv4.gateway = 192.168.1.1 lxc.network.veth.pair = veth-vm1 Configuration de l’hôte Nous allons à présent configurer l’hôte en autorisant le système à rediriger les paquets IP. Pour cela, il suffit d’éditer le fichier /etc/network/interfaces et d’ajouter la ligne suivante pour l’interface eth0 : vim /etc/network/interfacespost-up echo 1 > /proc/sys/net/ipv4/ip_forward Comme nos containers auront chacun une adresse réseau privée, nous allons créer une nouvelle interface qui aura pour rôle de faire un pont entre l’ensemble des adresses privées de nos containers et l’interface physique eth0. Pour cela, on ajoute la configuration suivante à la suite du fichier /etc/network/interfaces : auto br0 iface br0 inet static address 192.168.1.1 netmask 255.255.255.0 bridge_ports none bridge_stp off bridge_fd 0 bridge_maxwait 5 Pour que l’ensemble de nos containers puisse accéder à internet, nous allons devoir ajouter une règle iptables pour activer le SNAT et la mascarade. Pour cela, on ajoute la ligne suivante pour l’interface eth0 : post-up iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE Le fichier de configuration du réseau de votre hôte devrait maintenant ressembler à ceci : auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 5.39.88.234 netmask 255.255.255.0 network 5.39.88.0 broadcast 5.39.88.255 gateway 5.39.88.254 post-up echo 1 > /proc/sys/net/ipv4/ip_forward post-up iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE auto br0 iface br0 inet static address 192.168.1.1 netmask 255.255.255.0 bridge_ports none bridge_stp off bridge_fd 0 bridge_maxwait 5 iface eth0 inet6 static address 2001:41D0:8:9Aea::1 netmask 128 post-up /sbin/ip -f inet6 route add 2001:41D0:8:9Aff:ff:ff:ff:ff dev eth0 post-up /sbin/ip -f inet6 route add default via 2001:41D0:8:9Aff:ff:ff:ff:ff pre-down /sbin/ip -f inet6 route del default via 2001:41D0:8:9Aff:ff:ff:ff:ff pre-down /sbin/ip -f inet6 route del 2001:41D0:8:9Aff:ff:ff:ff:ff dev eth0 La configuration est à présent terminée, il ne vous reste plus qu’à redémarrer vos interfaces réseau pour enfin profiter des avantages des containers : service networking restart Informations utiles Commandes LXC : Démarrer un container : lxc-start -n vm1 Démarrer un container en arrière-plan : lxc-start -n vm1 -d Rentrer dans un container démarré en arrière-plan (pour en sortir faire ctrl+a puisq) : lxc-console -n vm1 Arrêter un container (si possible privilégier l’arrêt depuis le container qui est moins brutal): lxc-stop -n vm1 Mettre en pause un container : lxc-freeze -n vm1 Sortir de pause un container : lxc-unfreeze -n vm1 Créer un container : lxc-create -n vm2 -t debian Détruire un container : lxc-destroy -n vm1 Afficher la liste des containers : lxc-ls Afficher l’état (démarré/arrêté/en pause) et l’IP de tous les containers : lxc-ls --fancy Afficher des informations sur un container : lxc-info -n vm1 Purger le cache d’une image : /usr/share/lxc/templates/lxc-debian --clean Je vous invite à consulter le manuel pour plus d’informations : man lxc Quelques règles iptables : Si vous souhaitez que des services installés sur vos containers soient accessibles depuis l’extérieur, vous devez rediriger les connexions vers les adresses et ports des containers. Pour cela, nous allons utiliser le DNAT. Si votre container dont l’adresse IP est 192.168.1.2 héberge un serveur HTTP, nous utiliserons la règle suivante pour transférer les connexions entrantes sur le port 80 de l’hôte vers notre container écoutant sur le port 80 : iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80 Si vous ne souhaitez pas donner l’accès à internet à l’ensemble de vos containers, mais plutôt au cas par cas, vous pouvez vous inspirer de la règle suivante en lieu et place de celle que nous avons utilisée dans la partie « Configuration de l’hôte » : iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth0 -j MASQUERADE Démarrer des containers automatiquement : Avec la version 0.8.0-rc1 de LXC, il était possible de démarrer automatiquement des containers lors du démarrage de l’hôte en effectuant un simple lien symbolique : ln -s /var/lib/lxc/vm1/config /etc/lxc/auto/vm1. Mais cette fonctionnalité était en fait offerte par les distributions et non par LXC, cela ne fonctionne donc plus avec la version actuelle. J’ai pris contact avec le développeur principal de LXC qui m’a dit travailler à l’implémentation de l’auto-start en natif. En attendant, mon ami Arnaud Valensi a créé un script qui pallie ce manque ; je vous propose de l’utiliser. On récupère le script dans /etc/inid.d : wget -P /etc/init.d https://raw.github.com/ArnaudValensi/lxc-ovh/master/files/init.d/lxc On lui donne les bons droits : chmod 755 /etc/init.d/lxc Pour finir, on active le service : update-rc.d lxc defaults Pour activer le démarrage automatique d’un container au lancement de l’hôte, il suffira d’écrire la valeur 1 dans un fichier nommé autostart contenu dans le répertoire principal du container : echo "1" > /home/containers/vm1/autostart
-
Vous venez donc d'installer un serveur HTTP Apache2 sur votre serveur Gandi Ubuntu 7.10 et vous voulez maintenant commencer à héberger les sites de vos amis ou de vos clients. Une fois installé, Apache affichera la même page web pour tous les “host names” pointant vers le serveur. Vous pouvez donc installer vos pages web directement dans /var/www/ mais cette configuration ne fonctionnera que pour un seul site web en combinaison avec un pointage A vers l'adresse IP de votre serveur Gandi. Créer des "Virtual Hosts" Apache peut héberger un nombre illimité de sites web à la fois. Cette technique d'hébergement virtuel est possible gràce à l'installation de ce qu'on appelle des “virtual hosts” dans votre serveur Apache. Au niveau le plus basique, seuls deux répertoires doivent être utilisés pour installer des “virtual hosts”:/etc/apache2/sites-available/ et /etc/apache2/sites-enabled/. Avec apache 1.x, on installait des “virtual hosts” en ajoutant des entrées <virtualhost> dans le fichier /etc/apache/httpd.conf. Apache2 gère les “virtual hosts” de façon différente : il utilise des fichiers individuels “sites-available” liés au répertoire “sites-enabled”. Pour créer des “virtual hosts” avec Apache2, vous devez ajouter un fichier dans votre répertoire sites-available correspondant au site web virtuellement hébergé. Pour schématiser : Un fichier sites-available = Un site hébergé Dans l'exemple suivant, nous allons ajouter un site web appelé www.djmadjack.com dans notre serveur Gandi. Vous pourrez héberger autant de sites web que vous voudrez en répétant simplement les opérations décrites ci-dessous et en les adaptant par rapport au nom des autres sites web. 1. Créer un nouveau fichier "sites-available" Dans le répertoire /etc/apache2/sites-available/, vous trouverez un fichier par défaut appelé “default”. Utilisez ce fichier comme modèle pour vos “virtual hosts”. Pour ce faire, faites-en simplement une copie à laquelle vous donnerez un nom différent. Par exemple : cp default djmadjack.com Pour des raisons de clarté, il est recommandé de donner au fichier le même nom que le nom de domaine du site web à héberger. De cette manière il sera facilement identifiable sur votre serveur. Vous pouvez cependant le nommer comme vous le voulez. 2. Editer le nouveau fichier "sites-available" Il vous faut maintenant éditer le fichier que vous venez de créer de façon à ce qu'il soit configuré pour le site web que vous désirez héberger sur votre serveur. Commencez par l'ouvrir à l'aide de votre éditeur de texte préféré… nano djmadjack.com …et modifiez-le afin qu'il contienne le nom du site web que vous désirez héberger. Dans le cas présent, disons que vous désirez héberger le site de djmadjack.com. Voici de quoi aura l'air le début du nouveau fichier modifié “sites-available”: NameVirtualHost IP_DU_SERVEUR:80 <VirtualHost IP_DU_SERVEUR:80> ServerAdmin eric@djmadjack.com ServerName www.djmadjack.com DocumentRoot /var/www/djmadjack.com/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/djmadjack.com/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> (...) La ligne DocumentRoot est utilisée pour spécifier le répertoire des pages web du site sur le serveur. Vous pouvez désigner ici n'importe quel répertoire, mais assurez vous qu'il existe. C'est donc le répertoire dans lequel se trouveront les pages web de djmadjack.com. Il n'y a pas de limite au nombre de sites web que vous pouvez héberger virtuellement. Il vous suffira de créer un nouveau fichier dans le répertoire “sites-available”. Cela étant dit, plus vous hébergez de sites web, plus le serveur sera lent. C'est pour cela que Gandi vous permet d'ajouter des parts à votre serveur, de façon à augmenter la puissance et accélérer la navigation des sites web. 3. Liens de "sites-enabled" Afin d'activer le site, vous devez lancer la commande : a2ensite djmadjack.com Qui va se charger de créer le lien symbolique entre site-available/djmadjack.com et site-enable/djmadjack.com (vous pouvez également faire le lien à la main avec la commande ln -s). Afin de désactiver le site, vous devez lancer la commande: a2dissite djmadjack.com 4. Redémarrer apache Une fois que vous avez terminé, assurez-vous de bien redémarrer apache afin que vos modifications soient prises en compte par votre serveur. Pour ce faire, utilisez la commande suivante : /etc/init.d/apache2 restart