Installer Apache2

De NCad Wiki
Aller à la navigation Aller à la recherche

Serveur Web

Installation d'Apache2 Paramétrage courant

Certificats SSL Web | .htaccess | Authentification par carte à puce


Archives : Ancien article sur Apache2 | Module Whois | ProFTPd


Note de version

Configuration du service SSH pour SFTP

Un compte SFTP ne doit pouvoir se connecter qu’au service SFTP du serveur et avoir accès qu’au répertoire home.

  • Editer le fichier de configuration /etc/ssh/sshd_config. Commenter la ligne suivante :
#Subsystem sftp /usr/lib/openssh/sftp-server
  • Puis, à la fin du fichier, ajouter les lignes suivantes :
Subsystem sftp internal-sftp

Match group sftp
       X11Forwarding no
       ChrootDirectory /home/
       AllowTcpForwarding no
       ForceCommand internal-sftp
  • Pour appliquer la configuration, redémarrer le service ssh :

root@apache2:~# service ssh restart

Installation du serveur Web

  • Installation du paquet Apache2 (Serveur Web) et de ses dépendances :

root@apache2:~# apt-get install apache2 apache2-utils

  • Installations de modules complémentaires pour Apache2 notamment pour l’authentification Kerberos :

root@apache2:~# apt-get install libapache2-mod-auth-gssapi libapache2-mod-auth-kerb libapache2-mod-fcgid

  • Installation du module FCGID pour la gestion de requêtes CGI simultanées :

root@apache2:~# apt-get install libapache2-mod-fcgid

  • Installation du module mpm_itk pour l’exécution du processus Apache avec l’utilisateur assigné au VHost :

root@apache2:~# apt-get install libapache2-mod-fcgid

  • Installation du module PHP en version courante (module pour Apache2) et de ses dépendances :

root@apache2:~# apt-get install php php-fpm php-apcu php-apcu-bc php-bz2 php-cli php-common php-curl php-gd php-intl php-ldap php-mbstring php-mysql php-xmlrpc php-zip libapache2-mod-php

  • Activation d’SSL de la réécriture d’url et de FCGI sur Apache2 :

root@apache2:~# a2enmod ssl proxy_fcgi rewrite

  • Redémarrage du service Apache2 pour la bonne prise en compte des nouveaux paramètres:

root@apache2:~# service apache2 restart

Installation d’une version spécifique de PHP

Les versions de PHP proposées dans les dépôts Debian peuvent être obsolètes. Il est donc nécessaire d’ajouter le dépôt SURY qui regroupe un certain nombre de package PHP pour les distribution Linux basées sur Debian.

Installation

  • Ajout du dépôt et installation des dépendances :

root@apache2:~# curl -sSL https://packages.sury.org/php/README.txt

  • Installation de la version 8.1 de PHP (exemple à adapter en fonction de la version souhaitée) :

root@apache2:~# apt-get install php8.1 php8.1-fpm php8.1-mysql php8.1-apcu php8.1-apcu-bc php8.1-bz2 php8.1-cli php8.1-common php8.1-curl php8.1-gd php8.1-intl php8.1-ldap php8.1-mbstring php8.1-xmlrpc php8.1-zip libapache2-mod-php8.1

Création d’un pool spécifique pour le VHost

Les pools permettent de contrôler les droits et les ressources utilisés pour chaque VHost hébergés sur le serveur.

  • Créer le fichier de configuration /etc/php/8.2/fpm/pool.d/exemple.conf et y adapter/coller les lignes suivantes :
[exemple]
user = exemple
group = exemple
listen = /run/php/php8.2-fpm.exemple.sock
listen.owner = exemple
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
  • Redémarrer le service pour prendre en compte les nouveaux paramètres :

root@apache2:~# /etc/init.d/php8.2-fpm restart


Pour de plus amples informations, reportez-vous à l'article Création d'un pool PHP pour Apache 2.

Activation au niveau d’un VHost

  • Editer le fichier de configuration du VHost puis ajouter les éléments suivant avant la balise </virtual> :
<FilesMatch \.php$>
	SetHandler "proxy:unix:/run/php/php8.1-fpm.exemple.sock|fcgi://localhost"
</FilesMatch>

Activation par défaut

  • Pour activer la version PHP 8.1 par défaut sur le serveur web Apache2 :

root@apache2:~# a2enmod proxy_fcgi setenvif
root@apache2:~# a2enconf php8.1-fpm

Paramétrage du pare-feu

Matrice des flux autorisés

Par défaut, les flux non listés ci-dessous ne sont pas autorisés sur l’équipement.

Matrice de flux
Source Protocole(s) Port(s) Description
* tcp 22 Accès SSH, SFTP.
* tcp 80 Accès Web HTTP.
* tcp 443 Accès Web HTTPS.
<@IP_SUPERVISION> udp 161,162 Accès SNMP depuis serveur supervision.
* icmp Réponse aux requêtes ping.

Configuration iptables sur la couche IPv4

  • Installation des paquets iptables (pare-feu) et iptables-persistent (sauvegarde persistante de la configuration).

root@apache2:~# apt-get install iptables iptables-persistent -y

  • Ajout des règles iptables pour autoriser les flux SSH, ICMP et WEB :

root@apache2:~# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
root@apache2:~# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
root@apache2:~# iptables -A INPUT -p tcp --dport 443 -j ACCEPT
root@apache2:~# iptables -A INPUT -p udp –m multiport -s <@IP_SUPERVISION> --dports 161,162 -j ACCEPT
root@apache2:~# iptables –A INPUT –p icmp –j ACCEPT
root@apache2:~# iptables –A INPUT –i lo –j ACCEPT
root@apache2:~# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
root@apache2:~# iptables -P INPUT DROP

  • Sauvegarde de la configuration et application automatique à chaque redémarrage du système.

root@apache2:~# dpkg-reconfigure iptables-persistent

Configuration ip6tables sur la couche IPv6

  • Ajout des règles ip6tables pour autoriser les flux SSH, ICMP et WEB :

root@apache2:~# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
root@apache2:~# ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
root@apache2:~# ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
root@apache2:~# ip6tables -A INPUT -p udp –m multiport -s <@IPV6_SUPERVISION> --dports 161,162 -j ACCEPT
root@apache2:~# ip6tables –A INPUT –p icmpv6 –j ACCEPT
root@apache2:~# ip6tables –A INPUT –i lo –j ACCEPT
root@apache2:~# ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
root@apache2:~# ip6tables -P INPUT DROP

  • Sauvegarde de la configuration et application automatique à chaque redémarrage du système.

root@apache2:~# dpkg-reconfigure iptables-persistent

Configuration supervision SNMP

  • Installation du paquet snmpd.

root@apache2:~# apt-get install snmpd

  • Depuis le fichier de configuration /etc/snmp/snmpd.conf, rechercher la ligne :
sysLocation
sysContact
  • Puis, remplacer son contenu par :
sysLocation	PARIS,DC5
sysContact	webmaster@domaine.tld
  • Rechercher la ligne :
agentaddress	127.0.0.1,[::1]
  • Puis, remplacer son contenu par :
agentaddress	<@IP_PUBLIC_APACHE2>
  • Rechercher la ligne :
rocommunity	public default –V systemonly
  • Puis, remplacer son contenu par :
rocommunity	public default
  • Redémarrer le service snmp pour appliquer les changements.

root@apache2:~# service snmpd restart

Synchronisation du temps

  • Installation du paquet ntpdate :

root@apache2:~$ apt-get install ntpdate

  • Depuis le fichier de configuration ntpdate disponible dans le répertoire /etc/default, rechercher la ligne :
NTPSERVERS="0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org"
  • À remplacer par (optionnel, si vous disposez d'un serveur NTP spécifique) :
NTPSERVERS="<@IP_NTP_SERVEUR>"
  • Forcer la synchronisation du temps avec le serveur de temps :

root@apache2:~$ ntpdate <@IP_NTP_SERVEUR>