01 February 2015

[Guide] Installer un serveur web LAMP avec firewall

Packages

sudo apt-get install apache2 
sudo apt-get install mysql-server
sudo apt-get install curl mcrypt php5-mcrypt php5-mysql libapache2-mod-php5 php5-curl php-apc php5-mysql php5-sqlite php5-gd php5-intl wkhtmltopdf git ruby gem acl
sudo apt-get install nodejs npm nodejs-legacy

Création d'un user

sudo adduser youruser

Ajout à la liste des sudoers

sudo adduser youruser sudo

Config Apache2

sudo a2enmod rewrite headers

Install de composer

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Install de bower, de less etc

sudo npm install -g bower
sudo npm install -g less
sudo gem install sass

New Relic

C'est est un service incroyable permettant de monitorer votre serveur et vos aplications php (entre autre) : Plus d'infos ici

sudo su
echo deb http://apt.newrelic.com/debian/ newrelic non-free >> /etc/apt/sources.list.d/newrelic.list
wget -O- https://download.newrelic.com/548C16BF.gpg | apt-key add -
apt-get update
apt-get install newrelic-sysmond
nrsysmond-config --set license_key=YOURLICENSEKEY
/etc/init.d/newrelic-sysmond start

Installation du firewall

Maintenant que le système fonctionne, vous pouvez (et devez s'il s'agit d'un serveur important) installer un firewall. Le plus simple pour ca, c'est shorewall !

sudo apt-get install shorewall

Copiez tous les fichiers d'exemple :

sudo cp /usr/share/doc/shorewall/examples/one-interface/* /etc/shorewall/

Commencez par définir le fichier des interfaces et assurez-vous que votre interface réseau est bien la bonne (par défaut eth0). Pour connaitre la votre, tapez ifconfig qui devrait vous donner la liste des vos interfaces, voici la mienne :

em1       Link encap:Ethernet  HWaddr c8:1f:66:c9:24:e8  
          inet addr: x.x.x.x.  Bcast:x.x.x.x  Mask:255.255.255.0
          inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:153432 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34798 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:83466216 (83.4 MB)  TX bytes:10975202 (10.9 MB)
          Interrupt:16 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:424 errors:0 dropped:0 overruns:0 frame:0
          TX packets:424 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:44350 (44.3 KB)  TX bytes:44350 (44.3 KB)

Personnellement, sur cet exemple, j'ai du remplacer la valeur par défaut eth0 par em1.

sudo nano /etc/shorewall/interfaces

ce qui donnera quelque chose comme ca :

###################################################################
?FORMAT 2
###################################################################
#ZONE   INTERFACE       OPTIONS
net     em1            dhcp,tcpflags,logmartians,nosmurfs,sourceroute=0

Ouvrez le fichier de définition des règles (rules) /etc/shorewall/rules et ajoutez cette ligne qui vous permettra de vous contionuer à vous connecter sur le serveur :

# Autoriser une connexion ssh depuis un ip spécifique (replace 123.123.123.123 par votre ip)

ACCEPT            net             $FW             tcp     http,https
SSH(ACCEPT) net:123.123.123.123             all
Ping(ACCEPT)      net:123.123.123.123       $FW
ACCEPT $FW net tcp 25,26,465,587,8000

Ceci est juste une exemple, pour en savoir plus, lisez la doc en français ici

Pour tester votre configuration, tapez cette commande :

sudo shorewall try /etc/shorewall 90s

vous aurez alors 90 secondes pendant lesquelles la configuration sera appliquée vous permettant de tester que les règles sont bien écrites et comprises par le système.

Une fois que c'est validé, lancez le firewall d'une manière définitive (après avoir vérifié que la variable STARTUP_ENABLED est bien à Yes (ou 1) dans le fichier de configuration /etc/shorewall/shorewall.conf :

sudo shorewall start
comments powered by Disqus