Rechercher
Connexion
Avec Facebook Connect
 Login Facebook
Ou avec vos identifiants
Enregistrer. Mot de passe perdu

linuxCréer une vm ubuntu-server 

samedi 02 août 2014 par Stéphane
En préambule à cet article nous avions installé phpvirtualbox sur notre serveur. On procède maintenant à la création d'une nouvelle machine virtuelle directement depuis l'interface de phpVirtualBox (pour cette vm j'ai opté pour 1024Mo de Ram, et activé VT-x/AMD-V, Nested Paging, et PAE/NX). Pendant la procédure d'installation on choisira un disque vdi avec l'espace et le partitionnement par défaut, les seules options sélectionnées durant l'opération seront ensuite "serveur LAMP" et "SSH".

On télécharge et on installe l'iso de trusty-server (32bits ici) depuis une connexion ssh:
cd ISOs/
wget http://distrib-coffee.ipsl.jussieu.fr/pub/linux/ubuntu-releases/14.04/ubuntu-14.04-server-i386.iso

Ceci fait, direction l'interface de configuration de la vm où l'on sélectionne l'iso VBoxGuestAdditions (disponible sur https://www.virtualbox.org/wiki/Downloads) dans le lecteur virtuel associé à l'ide2. Après avoir installé les paquets nécessaires, et monté l'iso, on pourra lancer l'installation directement:
sudo apt-get install build-essential module-assistant
sudo m-a prepare

sudo blkid
sudo mount /dev/sr0/media/cdrom
cd /media/cdrom
sudo ./VBoxLinuxAdditions.run

Vérifions que tout est en place après avoir redémarré la vm:
lsmod|grep -io vboxguest
modinfo vboxguest

Occupons-nous de l'interface réseau: dans phpVirtualBox on laissera simplement l'adapter1 en NAT dans la section Network, et sur le serveur on redirigera un port (ici le port 8888 pour l'exemple, qu'on n'oubliera pas d'ouvrir avec iptables...) vers le port 80 de la machine virtuelle.

Voila comment cela se traduit en utilisant le terminal:
su vbox
vboxmanage list vms
vboxmanage modifyvm "Machine1" --natpf1 "redirection,tcp,,8888,,80"

Et voila! On peut d'ores et déjà accéder au serveur Apache de la vm depuis http://server.com:8888/

Installons ensuite phpmyadmin avec apt-get, ceci fait si l'on obtient l'erreur "module mcrypt manquant" à l'ouverture, il faudra ajouter le module avec cette ligne:
sudo apt-get install phpmyadmin
sudo nano /etc/php5/conf.d/mcrypt.ini
# configuration for php MCRYPT module
extension=mcrypt.so

Et encore un petit redémarrage d'Apache :
sudo /etc/init.d/apache2 restart

A présent pour rediriger le serveur vers un port spécifique (reverse proxy) on aura besoin d'activer ces deux modules:
a2enmod proxy proxy_http
service apache2 restart

Et au final, pour faire pointer domain.com vers le serveur apache de la vm, on modifiera notre hôte virtuel en remplaçant ces lignes (à partir de DocumentRoot)
vim /etc/apache2/sites-available/domain.com

<VirtualHost *:80>
    ServerAdmin admin@server.com
    ServerName domain.com
    ServerAlias www.domain.com *.domain.com

    ProxyPass / http://localhost:8888/
    ProxyPassReverse / http://localhost:8888/
    ProxyPreserveHost On
</VirtualHost>

Configuration du serveur ftp
En premier lieu on ajoute quelques règles dans la configuration de notre pare-feu, notez le port 2121 que l'on va rediriger, et la plage 1035-1040 qui sert au mode passif:
# FTP en mode passive sur le port 21, 2121 et 1035-1040
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 2121 -j ACCEPT
iptables -A INPUT -p tcp --dport 1035:1040 -j ACCEPT

On applique cela tout de suite en exécutant notre script (du moins c'est la méthode que j'utilise avec iptables, libre à vous de faire autrement bien sur...)
/etc/network/if-pre-up.d/iptables-start

On peut maintenant s'atteler au port forwarding depuis l'interface de phpVirtualBox (Network) , ou en ajoutant ces redirections directement depuis le terminal (remplacez Machine1 par le nom de votre vm):
su vbox
vboxmanage modifyvm "Machine1" --natpf1 "ftp,tcp,,2121,,21"
vboxmanage modifyvm "Machine1" --natpf1 "ftp pasv1,tcp,,1035,,1035"
vboxmanage modifyvm "Machine1" --natpf1 "ftp pasv2,tcp,,1036,,1036"
vboxmanage modifyvm "Machine1" --natpf1 "ftp pasv3,tcp,,1037,,1037"
vboxmanage modifyvm "Machine1" --natpf1 "ftp pasv4,tcp,,1038,,1038"
vboxmanage modifyvm "Machine1" --natpf1 "ftp pasv5,tcp,,1039,,1039"
vboxmanage modifyvm "Machine1" --natpf1 "ftp pasv6,tcp,,1040,,1040"

Ceci fait on est prêt pour l'installation du service vsftpd sur notre vm:
sudo apt-get install vsftpd
sudo vim /etc/vsftpd.conf

On de-commente les lignes 29 et 33 (taper :set nu! dans vim pour afficher les numéros de ligne)
write_enable=YES
local_umask=022

ainsi que la ligne 120 pour interdire l’accès hors du dossier /home de l'utilisateur
chroot_local_user=YES

et on ajoute ceci à la fin
allow_writeable_chroot=YES

enfin on active le mode passive
# passive mode
port_enable=NO
pasv_enable=YES
pasv_promiscuous=NO
pasv_min_port=1035
pasv_max_port=1040
pasv_address=127.0.0.1

On peut redémarrer le service pour la prise en compte de la config:
sudo service vsftpd restart

Notre serveur ftp est maintenant accessible depuis le port 2121
on va créer un premier utilisateur "lambda":
sudo useradd -m lambda -s /usr/sbin/nologin
sudo passwd lambda

Notez que comme on utilise nologin comme shell pour empêcher l’accès au shell depuis bash, il va falloir l'ajouter dans /etc/shells:
vim /etc/shells
/usr/sbin/nologin

Et voila , si on peut aller plus loin on sécurisera l’accès avec SFTP:
http://www.krizna.com/ubuntu/setup-ftp-server-on-ubuntu-14-04-vsftpd/

Configuration du serveur ssh
comme toujours on ajoute une entrée au script iptables du serveur afin d'ouvrir un port
vim /etc/network/if-pre-up.d/iptables-start
# SSH vm Machine1 sur le port 10023
iptables -A INPUT -p tcp --dport 10023 -j ACCEPT

que l'on va rediriger vers le port 22 de la vm, évitant ainsi de faciliter la tâche aux intrus
VBoxManage modifyvm "Machine1" --natpf1 "ssh,tcp,,10023,,22"

Je passe les détails sur la configuration du serveur ssh, après quoi on pourra se connecter depuis le serveur, comme depuis l’extérieur, sur notre vm:
ssh -p 10023 user@server.com

Configuration du serveur Apache
Sur la vm on configure apache, afin de pouvoir utiliser le dossier /home/user/www
sudo vim /etc/apache2/apache2.conf

<Directory /home/user/www>
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

et on configure notre premier site
sudo vim /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
    ServerAdmin admin@server.com
    ServerName server.com
    ServerAlias www.server.com *.server.com

    DocumentRoot /home/user/www
    <Directory />
        Options FollowSymLinks
        AllowOverride all
    </Directory>

    <Directory /home/user/www>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog /home/user/logs/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /home/user/logs/access.log combined
</VirtualHost>

On oublie pas de créer le dossier logs dans le répertoire home de user
sudo mkdir /home/user/logs
sudo chown -R user /home/user/logs

et on relance le serveur
sudo service apache2 reload

A ce stade on peut déposer un fichier index.php contenant par exemple l'instruction phpinfo(); dans /www avec Filezilla, et admirer le résultat sur http://server.com

Ajouter des sous-domaines
sur le serveur on installera le module rewrite
sudo a2enmod rewrite

et sur la vm on crée un fichier .htaccess qui fera une redirection vers le sous-domaine X si le répertoire X existe, et le cas échéant une redirection vers le domaine 
sudo vim/home/user/www/.htaccess

<IfModule mod_autoindex.c>
    Options -Indexes
</IfModule>

# Url rewiting
<IfModule mod_rewrite.c>
    RewriteEngine on
    # redirection vers le sous-domaine X si le répertoire X existe
    RewriteCond %{HTTP_HOST} (.+)\.server.com
    RewriteCond %{DOCUMENT_ROOT}/%1 -d
    RewriteRule ^(.*)$ /%1/$1 [L]
</IfModule>

Il n'y a plus qu'à créer un dossier dans /www qui accueillera notre sous-domaine, qu'on appellera "test" pour l'exemple, et à y placer quelque chose pour faire office de test:
sudo mkdir /home/user/www/test
sudo vim /home/user/www/test/index.php
<?php
echo "there's nowhere like 127.0.0.1 !";
?>

Et voila qui est fait, on peut accéder à http://test.server.com et voir s'afficher notre texte !

On a maintenant une machine virtuelle "Machine1" qui embarque un serveur web opérationnel, il ne nous reste plus qu'à la cloner dans l'état (pas besoin de conserver les snapshots) en n'oubliant pas de cocher "recréer toutes les adresses MAC".

Une fois le clone "Machine2" terminé, il ne reste plus qu'à s'en servir : l'article suivant décrit comment s'y prendre pour utiliser les clones de serveurs virtuels.
Répondre
Contact | Plan du site | Mentions légales | Réalisation : Nomadweb
1 visiteur et 0 membre en ligne • v170318 • timer:0.335sec