LAMP dans aptosid
LAMP est l'acronyme d'une série d'outils logiciels utilisés fréquemment tous ensemble pour faire fonctionner des serveurs et des sites web dynamiques :
- Linux, le système d'exploitation
- Apache, le serveur web
- MySQL, le système de gestion de base de données (ou serveur de bases de données)
- PHP et/ou Python, Perl, des langages de script
ATTENTION: N'autorisez JAMAIS votre PC de tous les jours comme serveur web connecté à Internet ! Utilisez pour celà un PC purement dédié à rester un serveur web et ne lui laissez rien faire d'autre!
Usages d'un serveur:
- Serveur local de test pour un concepteur de sites web sans connexion internet, ce qui correspond au domaine d'application de ce sujet ;
- Serveur individuel dédié à un accès privatif, et connecté à Internet ;
- Serveur web personnel diffusant de l'information sur Internet ;
- Serveur web commercial, cas qui dépasse de loin le sujet traité ici.
Minimum Requis
Il vous faut au minimum 256 MO de RAM utilisable. Si vous avez moins, vous rencontrerez des problèmes, car un serveur avec MySQL consomme énormément d'espace en mémoire RAM pour fonctionner correctement. Sinon MySQL ne cessera pas de vous retourner des erreurs de type "cannot connect to mysql.sock", signe patent de manque de RAM.
Les paquets que vous avez besoin d'installer sont:
apache2 apache2-utils apache2-mpm-prefork php5 php5-common mysql-server mysql-common libapache2-mod-php5 php5-mysql phpmyadmin
ATTENTION !: en préalable à votre installation de Generic_Server, si splashy est installé, désinstallez-le et purgez ses fichiers de configuration via la commande :
apt-get remove --purge splashy
Car splashy casse tout le temps MySQL.
Le fichier de configuration d'Apache est localisé dans :/etc/apache2/apache2.conf et votre répertoire web sera /var/www.
Pour vérifier que php est bien installé et fonctionne correctement, créez juste un fichier nommé test.php avec une fonction phpinfo() exactement comme celle figurée ci-dessous.
mcedit /var/www/test.php # test.php <? phpinfo(); ?>
Puis avec un navigateur Internet, rendez-vous à la page:
http://localhost/test.php ou http://votre_adresse_ip:80/test.php
Ceci devrait vous retourner toute votre configuration et tous les paramètres par défaut de php.
Vous pouvez éditer les valeurs désirées ou configurer des domaines virtuels en utilisant le fichier de configuration d'Apache.
Si vous voulez tester votre installation, avec votre navigateur, rendez-vous à la page :
http://votre_adresse_ip/apache2-default/
Si un message de bienvenue vous est affiché c'est que votre installation est correcte.
La racine par défaut des répertoires de documents pour apache2 est /var/www. Changez-en pour:
mkdir /home/mon_nom/www ln -s /home/mon_nom/www /var/www
Au moyen de ces commandes vous serez en mesure d'éditer directement votre site dans votre répertoire d'utilisateur habituel.
Clients FTP
Utilisez SSH et lisez attentivement le chapitre SSH. notez qu'aptosid embarque un client FTP intégré sous la forme de Dolphin, qui vous permet d'uploader vos fichiers.
Activer des protocoles de sécurité efficaces pour les serveurs web
Pare-feux
Sans pare-feu (firewall), vous n'avez absolument aucune sécurité pour votre serveur. Souvenez-vous qu'il faille bloquer TOUT jusqu'à ce que vous ayez besoin de débloquer quelque chose. Sitôt que vous n'avez plus besoin d'un déblocage, bloquez-le à nouveau !.
21 (ftp) 22 (SSH) 25 110 (email) 443 (SSL http or https) 993 (imap ssl) 995 (pop3 ssl) 80 (http) et tout autre port!
Protégez par défaut les fichiers du serveur
Un aspect d'Apache occasionnellement mal compris est la fonction d'accès par défaut. Celle-ci implique, tant que vous ne modifiez pas cette situation, que si le serveur est mesure de trouver un chemin utilisant des URL de syntaxe ordinaire vers un fichier, alors il peut servir ce fichier aux clients.
Considérez notamment l'exemple qui suit:
1. # cd /; ln -s / public_html 2. Accessing http://localhost/~root/
Ce qui revient à permettre aux clients du serveur de se promener dans toute l'aborescence du système de fichiers! Donc, pour remédier à cette situation, ajoutez les blocages qui suivent à la configuration de votre serveur:
<Directory /> Order Deny,Allow Deny from all </Directory>
Cette instruction interdit l'accès par défaut aux adresses du système de fichiers. Il suffit d'y mentionner les blocs appropriés de <Directory> (Répertoires) pour n'accorder accès qu'à ceux où vous voulez l'autoriser. Par exemple :
<Directory /usr/users/*/public_html> Order Deny,Allow Allow from all </Directory> <Directory /usr/local/httpd> Order Deny,Allow Allow from all </Directory>
Faites particulièrement attention aux interactions des directives <Location> et <Directory> ; par exemple, même si <Directory /> bloque l'accès, une directive <Location /> peut le contourner.
De la même manière, soyez prudent, et ne jouez pas au malin avec la directive UserDir ; la régler sur "./" aurait le même effet, à l'égard de l'administrateur, que le premier exemple cité plus haut. Si vous utilisez la version d'Apache 1.3 ou les suivantes, nous vous recommandons avec insistance d'inclure la ligne qui suit dans les fichiers de configuration de votre serveur :
UserDir disabled root
SSL
Lancez le script “apache2-ssl-certificate”
# apache2-ssl-certificate
L'écran suivant va apparaître pour vous permettre d'entrer l'information requise.
Creating self-signed certificate replace it with one signed by a certification authority (CA) enter your ServerName at the Common Name prompt. If you want your certificate to expire after x days call this programm with -days x ----- Generating a 1024 bit RSA private key -------- writing new private key to '/etc/apache2/ssl/apache.pem' -------- You are about to be asked to enter information that will be incorporated into your certificate request. ----------- What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank. For some fields there will be a default value, ---------- If you enter '.', the field will be left blank.
Country Name (2 letter code) [GB]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company; recommended) []: Organizational Unit Name (eg, section) []: server name (eg. ssl.domain.tld; required!!!) []: Email Address []:
Lancez le script “a2enmod ssl”. exemple:
# a2enmod ssl
Ceci va créer automatiquement un lien symbolique entre mods- available et mods – enabled
Faites une copie du fichier '/etc/apache2/sites-available/default' dans le /etc/apache2/sites-available/ - appelez le 'ssl'
# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
Créez un lien symbolique de nouveau site vers cette configuration pour cet usage
# ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ (ou) #a2ensite ssl
Si vous voulez modifier quelque réglages basiques de configuration dans /etc/apache2/apache2.conf et si vous changez la racine du répertoire de documents du serveur, déclarez-le dans le fichier /etc/apache2/sites-available/default et redémarrez le serveur Apache.
Pour redémarrer le serveur web Apache utilisez cette commande :
#service apache2 restart
À présent nous devons modifier l'adresse de port utilisée dans /etc/apache2/ports.conf qui par défaut écoute sur le port 80, et qu'installant SSL il faut utiliser le port 443 pour écouter.
Listen 443
Éditez /etc/apache2/sites-available/ssl (ou tout nom que vous donneriez à la nouvelle configuration ssl de votre site) et changez port 80 dans le nom du site pour le port 443.
Ajoûtez comme ci-dessous deux lignes quelque part dans le fichier /etc/apache2/apache2.conf
SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem
Éditez SSLCertificateFile /etc/apache2/ssl/apache.pem et entrez l'adresse du fichier de certificat et du fichier de clé du certificat. Trouvez ci-dessous un exemple :
SSLCertificateFile /etc/apache2/ssl/online.test.net.crt SSLCertificateKeyFile /etc/apache2/ssl/online.test.net.key
Réglez ServerSignature sur off, suivez les étapes qui suivent et en éditant le fichier /etc/apache2/apache2.conf ajoûtez-y ces deux lignes :
ServerSignature Off ServerTokens ProductOnly
Si vous décidez d'autoriser les différents types d'index, vous pouvez les contrôler à la ligne suivante du fichier /etc/apache2/apache2.conf:
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.shtml
Redémarrez le serveur apache :
service apache2 restart
Vous devriez à présent disposer d'un serveur bac-à-sable, que vous vous pourriez vouloir connecter à Internet, ... BAH NON !...Utilisez un PC exclusivement dédié à l'usage de serveur web!
Sources:
http://www.mysql-apache-php.com
http://httpd.apache.org/docs/1.3/misc/security_tips.html
http://www.debianhelp.co.uk/webserver.htm