Installer Apache 2

Dans notre série de billets sur l’installation d’un serveur on passe enfin à la partie serveur web avec l’installation d’Apache.

Configuration

A première vue, l’installation d’Apache est très simple ! Il suffit d’installer le paquet adéquat et ça fonctionne :

apt-get install apache2

Si on entre dans notre navigateur web l’adresse IP de notre serveur on devrait avoir une jolie page disant “It works”. Non? Comment ça non ? Ah vous avez suivi depuis le début les billets sur l’installation de notre serveur et donc vous avez bloqué les ports HTTP avec iptables et netfilters. C’est bien, sauf que maintenant il faut les ré-ouvrir. Pour cela on retourne modifier notre configuration du pare-feu :

nano /etc/init.d/firewall

Et on ajoute la partie HTTP et HTTPS à la fin du fichier firewall :

# HTTP
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
iptables -t filter -A INPUT -p tcp –dport 8443 -j ACCEPT

On recharge la configuration :

/etc/init.d/firewall

Et on entre à nouveau l’adresse IP de notre serveur dans le navigateur web :
apache_defaut_webpage.png
Ça marche capitaine !

Premier site

Maintenant on améliore un peu les choses, car on risque bien d’abriter plusieurs sites / noms de domaine. Comme le nom de domaine principal sur cette machine sera “scribox.org” (je suis toujours maitre à bords et donc je prend le nom que je veux), j’utilise ce nom pour les répertoires, les utilisateurs, etc..
On commence par créer un répertoire qui abritera notre site :

mkdir /var/www/scribox.org

On y place un fichier index qui sera notre page d’accueil temporaire :

nano /var/www/scribox.org/index.html

On y met un bout de code html (valide ça nous entraine) :
default_index.png
Maintenant il faut créer un hôtes virtuel (virtual host ou vhost) pour notre nom de domaine :

nano /etc/apache2/sites-available/scribox.org

On le rempli comme suit et évidement il faut adapter et suivre le nom du fichier avec ce qu’on a fait avant, ça sera plus simple pour s’y retrouver plus tard, quand on aura tout oublié :
conf_vhost.png
On ajoute ce vhost à Apache :

a2ensite scribox.org

On en profite pour désactiver le site par défaut (/var/www) :

a2dissite default

Et on relance Apache :

/etc/init.d/apache2 restart

Voila c’est fini notre site est joignable depuis son nom de domaine. Enfin pour peu qu’on ai configuré le champs A de notre domaine chez notre registrar.
ndd_webpage.png

Complément

On va également en profiter pour activer la réécriture d’URL (mod rewrite) d’Apache, car on s’en servira plus tard :

a2enmod rewrite

On peut fouillier un peu plus loin, par exemple on enleve la signature d’Apache sur les pages d’erreurs :

nano /etc/apache2/conf.d/security

Et modifier la ligne:

ServerSignature Off

On le relance :

service apache2 restart
  • TIPS : On peut relancer le service apache soit depuis son répertoire, soit avec la commande service.

Au suivant

Et hop, notre Apache est prêt, on va pouvoir passer à l’installation de PHP dans un prochain billet.

Banissement

On a vu dans un précédent billet de notre série sur l’installation d’un serveur comment filtrer ce qui entre et sort de notre machine, maintenant on va apprendre à bannir les méchants.

On va utiliser fail2ban, un outil très utile, répandu, et reconnu qui est fait pour analyser les fichiers log de notre système et mener des actions de blocage.

Configuration

Commençons par l’installer :

apt-get install fail2ban

On va copier sa configuration et comme on a changé le port de notre connexion SSH, il faut la modifier :

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local

On prendra soin de mettre le port choisi précédemment dans la section ssh :
conf_fail2ban.png
On peut modifier l’action par défaut pour envoyer un mél :
conf_fail2ban_b.png Rien d’autre à changer dans ce fichier pour l’instant puisque qu’on a laissé d’origine tout le reste. (sendmail, mél root, etc…)
On redémarre le service pour prendre en compte les modifications :

/etc/init.d/fail2ban restart

Unban

Pour vérifier si quelqu’un est banni on utilise :

iptables -L


Chain fail2ban-ssh (1 references)
target prot opt source destination
DROP all — IP.DU.SERVER.VPS.WEB anywhere
RETURN all — anywhere anywhere

Dans cette exemple je me suis fait bannir lors de l’installation de mes backups. Pour le ré autoriser il suffit d’utiliser la commande :

iptables -D fail2ban-ssh 1

Ici je demande d’enlever -D du filtre ‘fail2ban-ssh la 1”ère ligne.

Au suivant

On pourra revenir modifier cette configuration au fur et à mesure de l’installation de programmes comme par exemple Apache mais d’abords un petit mot sur les quotas.

Sources

Configurer un pare-feu

Dans notre optique de se faire un serveur web, on va se configurer un pare-feu avec iptables qui permet d’interdire ou d’autoriser tout se qui entre et sort de notre machine. Pour l’instant on n’utilise pas grand chose donc on va en interdire beaucoup puis au fur et à mesure qu’on installera des programmes on reviendra configurer notre pare-feu.

Règles

Pour commencer créons notre fichier de règles, ce script sera lancé à chaque démarrage d’où sa place dans le dossier init.d :

nano /etc/init.d/firewall

Pour résumer, on commence par tout effacer, puis on interdit tout sauf notre connexion en cours, puis on autorise le passage de quelques services, ce qui donne comme fichier firewall :

#!/bin/sh

# Purge de tables
iptables -t filter -F

# Purge des regles
iptables -t filter -X

# Bloque tout ce qui entre ou sort
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

# Garde les connexions en cours
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

# Loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

# ICMP
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

# SSH
iptables -t filter -A INPUT -p tcp –dport 2222 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 2222 -j ACCEPT

# 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 INPUT -p tcp –dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp –dport 53 -j ACCEPT

# NTP
iptables -t filter -A OUTPUT -p udp –dport 123 -j ACCEPT

# SMTP (uniquement mail sortant pour les alertes)
iptables -t filter -A OUTPUT -p tcp –dport 25 -j ACCEPT

Attention, ne pas oublier de modifier le port de SSH pour correspondre à celui qu’on a mis lorsqu’on a sécuriser SSH. En cas d’erreur on ne pourra plus se connecter à note machine, ça serait dommage !

Exécution

Maintenant il faut rendre le fichier exécutable :

chmod +x /etc/init.d/firewall
  • TIPS : chmod permet de modifier les droits d’un utilisateur ou d’un groupe sur un fichier ou répertoire. On peut l’utiliser soit avec les lettres o,x,w,r, soit avec des chiffres de 0 à 7. On peut connaitre le mode des fichiers avec la commande ls -l Pour plus de détail, voir les sources en bas de page.

Avant d’aller plus loin on va le tester en l’exécutant :

/etc/init.d/firewall

Puis en tentant de se reconnecter à la console… Si on n’arrive plus à se connecter à notre machine, c’est qu’on à fait une erreur, il faut alors rebooter la machine depuis le gestionnaire de notre fournisseur. Si on arrive encore à se connecter à notre machine, cela veut dire qu’on ne s’est pas trop trompé, on peut alors lui dire de se lancer à chaque démarrage :

update-rc.d firewall defaults

Au suivant

Voila notre pare-feu est en place, on pourra le modifier au fil de nos besoins. Prochaine étape, se protèger des rootkit.

Sources

Debian squeeze 64 sur VPS OVH

Ça y est, je me lance ma brave dame, j’ai pris 2 serveurs VPS chez OVH.

Le pourquoi du comment

Je tente d’expliquer pas à pas la configuration de deux serveurs, nouveaux compagnons de mes nuits blanches, à travers toute une suite d’articles, et si je n’abandonne pas avant. Le but de ces billets sera de me servir d’aide mémoire pour configurer les deux VPS en serveur web et serveur de base de données (ou plus). J’en aurai bien besoin car je ne suis pas du tout du monde Linux (ni de celui des serveurs). Je pars de zéro, j’ai toujours eu des hébergements mutualisés ou on avait seulement besoin de faire des clics dans un manager mais je n’ai jamais écrit une ligne de commande. (Ce n’est pas vraiment la réalité car dans ma jeunesse j’ai bien monté des serveurs FTP et IRC mais je ne m’en rappelle plus du tout.) Je modifierai ces billets au fur et à mesure de mes découvertes et de vos réactions. (à me donner sur mon Twitter @ ) Notez bien que je ne prétend pas à la vérité dans ces billets et que si vous copiez dessus, c’est à vos risques et péril !
A l’heure ou j’écris, le manager OVH concernant les VPS 2013 n’est pas du tout fini, de même pour les distributions disponible dessus, pas de réinstallation en panel, etc, que du brut mais comme on m’a toujours dit qu’il fallait une Debian nu pour un serveur, ben je commence avec cette distribution. Donc tout ce que vous trouverez dans ces billets concernera l’installation d’une distribution Debian 6 Squeeze 64Bits sur des VPS 2013 Classic de chez OVH.
Le choix des programmes pour mes serveurs n’appartient qu’à moi ! Beaucoup d’entre vous aurait préféré voir la configuration de nginx, postgresql, ou python.. Hé bien non. Ou alors beaucoup plus tard. Ici je choisi les armes et la façon de les porter. Et dernière remarque, vous aurez besoin d’un clavier d’ordinateur alors lâchez votre tablette et retournez vous assoir devant votre PC.

Nomenclature

Afin de ne pas s’emmêler les pinceaux, voici comment seront nommées les machines par la suite.
La première machine est un VPS (Virual private server) de la gamme Classic 3 de chez OVH, elle servira de serveur web. Les paramètres en relation avec cette machine seront nommés xxx_VPS_WEB comme par exemple IVv4_VPS_WEB, PORT_SSH_VPS_WEB, MDP_ROOT_VPS_WEB, etc…
La seconde machine est un VPS Classic 1, elle embarque moins de mémoire et moins de disque dur, elle servira uniquement (au début) de serveur SQL pour la première machine. Les paramètres en relation avec cette machine seront nommés xxx_VPS_SQL.

Au menu

Chacun de ces articles correspond à une étape de ma découverte de l’installation des serveurs.

  1. Première connexion au VPS
  2. Sécuriser un peu SSH
  3. Configurer un pare feu
  4. Ajouter un anti rootkit
  5. Bannir les méchants
  6. Quotas
  7. Installer Apache 2
  8. Installer PHP 5
  9. Préparation du deuxième VPS
  10. Installer MySQL
  11. Installer phpMyAdmin
  12. Structure en sous-domaines
  13. Installer un serveur FTP
  14. Installer la plateforme de blogs Dotclear
  15. Ajout de blog par script shell
  16. Maintenance du système par script shell
  17. Trucs et astuces
  18. Installer BitTorrent Sync
  19. Sauvegardes
  20. Gestion de mail ( à la demande générale de Loic ! )
  21. Gestion de listes de diffusions
  22. Installer un réducteur d’URL Yourls
  23. Et si on effaçait tout ?

Changelog

Quelques notes sur les modifications apportées dans le temps aux articles.

  • 2013.05.15 Corrections typo sur divers pages
  • 2013.05.01 Ajout de la page sur la gestion des listes de diffusions
  • 2013.04.30 Ajout de la page sur YOURLS
  • 2013.04.29 Ajout de la page sur la gestion de mail
  • 2013.04.26 Ajout de la page sur la création de sauvegardes
  • 2013.04.25 Ajout des plugins de cache à l’installation de Dotclear
  • 2013.04.25 Ajout du script de création de blog
  • 2013.04.25 Ajout d’installation de BitTorrent Sync
  • 2013.04.23 Ajout d’une page qui sera consacrée aux trucs et astuces
  • 2013.04.23 Ajout d’article sur ma déception à propos des quotas
  • 2013.04.19 Amélioration du script de maintenance système
  • 2013.04.13 Ajout de la page de maintenance du système
  • 2013.04.11 Ajout de l’utilisation de SSL sur l’admin de Dotclear
  • 2013.04.07 Modification de la configuration de fail2ban pour envoyer un mél
  • 2013.04.07 Modification de nom de l’utilisateur root
  • 2013.04.07 Ajout de la page d’installation du serveur FTP
  • 2013.04.07 Nettoyage de l’installation de phpmyadmin
  • 2013.04.07 Ajout de la page d’installation de Dotclear
  • 2013.04.06 Modification des messages envoyés par mél lors de connexions au shell
  • 2013.04.06 Nouvelle page de réflexion sur la Structure en sous domaines
  • 2013.04.05 Début de hostilités

Remerciements

La liste est très longue mais voici les principaux génériques.