Isyweb est fermé et ne propose plus aucun de ses services !

Installer et sécuriser un serveur web avec accès FTP sur Debian 8 Jessie

Installer et configurer l'application serveur linux : Installer et sécuriser un serveur web avec accès FTP sur Debian 8 Jessie

Ce tutoriel est compatible avec les distributions suivantes : DebianDebian

Tutoriel

Ce tutoriel explique, simplement et sans détours, comment configurer son serveur web sur Debian Jessie avec un serveur ftp, ssh et mails sans oublier les programmes très utile de surveillance ou de sécurité: fail2ban, logwatch ou monit.
La sécurité ici ne sera bien entendu pas optimale et pourra toujours être améliorée mais c’est un très bon début.


Nous allons lister une série de commandes à écrire en SSH. Elles sont pratiquement toutes suffisament explicite pour se passer de les commenter. Vous pouvez tout faire sous votre compte root.



Changez votre mot de passe root fourni par votre hébergeur (exemple : OVH, Kimsufi, SoYouStart)



# passwd

# echo > /root/.ssh/authorized_keys

# rm /root/scripts-d-initialisation-de-votre-hebergeur -rf



Mises à jours et installations diverses



# apt-get update

# apt-get install aptitude

# aptitude update && aptitude full-upgrade

# aptitude install nano ntp ntpdate

# date

Vérifiez que la date est correcte

Update des serveurs NTP localisé en FR par exemple



# dpkg-reconfigure tzdata

# whereis ntp

# nano /etc/ntp.conf (selon son emplacement)
On ajoute ces serveurs là :

server fr.pool.ntp.org iburst dynamic
server 0.fr.pool.ntp.org iburst dynamic
server 1.fr.pool.ntp.org iburst dynamic
server 2.fr.pool.ntp.org iburst dynamic
server 3.fr.pool.ntp.org iburst dynamic



Si besoin, modifiez votre .bashrc


Via http://bashrcgenerator.com/ pour ajouter de la couleur ou activer des alias (exemple : alias ll='ls -lah’)

# nano ~/.bashrc

# source ~/.bashrc

# nano /etc/pam.d/su
Décommentez : auth required pam_wheel.so

# nano /etc/ssh/sshd_config
Modifiez le port SSH : Port 15839 (Attention, pensez à vous connecter à ce port à l’avenir)



Changez le nom d’hôte



# nano /etc/hostname
Ajoutez :
monsite.com

# nano /etc/hosts
Ajoutez ou vérifiez :
127.0.0.1 localhost.localdomain localhost
111.222.333.444 monsite.com monsite




Installation de divers paquets pour serveur web



# aptitude install binutils debian-goodies debianutils sudo spamassassin clamav clamav-daemon unzip gcc mutt ftp make bzip2 curl perl openssl locate



Vérifiez ou redirigez vos emails



# nano /etc/aliases
Modifiez éventuellement :
root : [email protected]


# newaliases

# nano /etc/mailname
monsite.com



Installation du serveur Apache et configuration d’un site web sur Apache 2.4



# aptitude install apache2 php5 php5-gd php5-curl php5-dev php5-mcrypt php5-gmp php5-apcu php5-memcached memcached apache2-dev php-pear php5-imagick php5-mysql

# nano /etc/apache2/conf-available/security.conf
Décommentez/ajoutez/modifiez :
ServerTokens Prod
ServerSignature Off


# a2enmod cgi rewrite expires headers

# nano /etc/apache2/apache2.conf
Modifiez/vérifiez :
<Directory /var/www/>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>


# nano /etc/apache2/sites-available/monsite.conf
Ajoutez :
<VirtualHost *:80>
ServerName www.monsite.com
ServerAdmin [email protected]
DocumentRoot /var/www/monsite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/monsite>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>


# a2ensite monsite

# nano /etc/apache2/envvars
Ajoutez :
umask 002




Installation du serveur FTP



# aptitude install proftpd
Indépendamment (standalone)

# adduser monlogin -shell /bin/false -home /var/www/monsite

# nano /etc/proftpd/proftpd.conf
Ajoutez/Modifiez :
ServerName "Mon serveur FTP"
TimeoutStalled 3600
ListOptions "-latr"
AllowStoreRestart on


Décommentez :
RequireValidShell off




Installation de MySQL et PhpMyAdmin



# aptitude install mysql-server-5.5 phpmyadmin


Sur Debian Stretch (debian 9 et +) il faudra faire : # sudo mysql_secure_installation

# nano /etc/phpmyadmin/apache.conf
Modifiez :
Alias /phpMyAdmin /usr/share/phpmyadmin

par
Alias /DOSSIER-secret- phpMyAdmin /usr/share/phpmyadmin

Après :

Options FollowSymLinks
DirectoryIndex index.php

Ajoutez :
AuthType Basic
AuthName "phpMyAdmin"
AuthUserFile /etc/phpmyadmin/htpasswd.setup #ou un autre fichier htpasswd (cf section plus bas, monitoring - login pass)
Require valid-user



Installation du monitoring serveurs et des statistiques serveur awstats



# aptitude install logwatch monit awstats

# chmod 644 /var/log/apache2/access.log*

# chmod 755 /var/log/apache2/

# nano /etc/logrotate.d/apache2
Modifiez/vérifiez :
create 644 root adm


Ajoutez :
prerotate
/usr/share/doc/awstats/examples/awstats_updateall.pl now -awstatsprog=/usr/lib/cgi-bin/awstats.pl >> /var/log/awstats.log
endscript


# htpasswd -c /usr/local/.monfichierpassword monlogin
Ce sera votre login/pass pour accéder à vos statistiques, modifiez également le « monlogin » ci-dessous.

# nano /etc/apache2/conf-available/awstats.conf
Créez ce fichier :
Alias /awstats-icon "/usr/share/awstats/icon/"
ScriptAlias /AWstats/ /usr/lib/cgi-bin/
<Location /AWstats>
AuthType Basic
AuthName "Statistiques awstats"
AuthUserFile /usr/local/.monfichierpassword
Require valid-user
Require user monlogin
</Location>
<Directory /usr/lib/cgi-bin/>
DirectoryIndex awstats.pl
UseCanonicalName off
Options +ExecCGI
AllowOverride None
</Directory>


# a2enconf awstats

# nano /etc/awstats/awstats.conf
Vérifiez :
LogType=W
LogFormat=1
SiteDomain="monsite.com"
DNSLookup=2


# nano /etc/monit/conf.d/isy
Créez ce fichier (configurez-le, au moins l’email et login :pass et disques !):
set daemon 60
set logfile syslog facility log_daemon
set mailserver localhost
set mail-format {
subject: [Monit] $HOST - $SERVICE $EVENT
}
set alert [email protected]
set httpd port 22334 #monit sera accessible via http://monsite.com:22334
allow monlogin:pass #vous pouvez aussi mettre allow @groupAdmin si vous avez un groupe unix
check system $HOST
if loadavg (5min) > 3 then alert
if memory usage > 80% for 4 cycles then alert
# Apache2
check process apache2 with pidfile /run/apache2/apache2.pid
group www-data
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if failed host 127.0.0.1 port 80
protocol http then restart
if 5 restarts within 5 cycles then timeout
# MySQL
check process mysqld with pidfile /run/mysqld/mysqld.pid
group database
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout
# Disques (configurez votre disque selon le chemin indiqué via la commande : df)
check device rootfs with path /dev/sda1
if space usage > 80% then alert
group system


Seulement si vous utilisez @adm en user, faites ceci :
# adduser monlogin

# adduser monlogin adm



Installation de fail2ban



# aptitude install fail2ban

# nano /etc/fail2ban/jail.conf

Configurez vos prisons à activer et ajoutez par exemple, en général ou sur un module précis :
[ssh]

enabled = true
port = 65000
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
# durée du banissement en secondes
bantime = 20000
# durée de recherches entre plusieurs tentatives
findtime = 3600



Installez votre serveur mail Postfix (avec serveur SMTP configuré pour GMAIL)




Si vous désirez tourner sous exim4, il est parfois utile de désactiver la gestion IPV6 qui cause des problèmes

# nano /etc/exim4/update-exim4.conf.conf
Ajoutez :
dc_disable_ipv6='true'

# update-exim4.conf afin de recharger la configuration



Commencez par ajouter à vos dns (sur godaddy, namecheap, ou autre):
smtp IN A 111.222.333.444
monsite.com. IN MX 10 smtp


# aptitude install postfix libsasl2-modules sasl2-bin
Site Internet (Internet Site)
monsite.com


# nano /etc/postfix/main.cf
Ajoutez / Vérifiez :
myorigin = /etc/mailname
smtpd_tls_security_level=encrypt
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtpd_tls_ask_ccert = yes
myhostname = monsite.com
mydestination = $myhostname, localhost.$mydomain $mydomain
mailbox_size_limit = 0
message_size_limit = 1024000000
#sasl conf
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination


# adduser webmaster (pour créer un adresse [email protected])

# nano /etc/aliases
Ajoutez/modifiez :
root: webmaster
webmaster: [email protected]


# echo "Email test" | mail -s "test de mon serveur mail" [email protected]
Vérifiez ce que dit le log, cela s’est bien passé ?

# tail –F /var/log/mail.log



Configuration le SMTP SASL (envoyer via SMTP TLS gmail)



# nano /etc/postfix/sasl/smtpd.conf
Ajoutez :
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN


# cp /etc/default/saslauthd /etc/default/saslauthd-postfix && nano /etc/default/saslauthd-postfix
Modifiez :
START=yes
DESC="SASL Auth. Daemon for Postfix"
NAME="saslauthd-postf"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"


# dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd

# adduser postfix sasl

# service saslauthd restart

# service postfix restart

Configurez votre gmail avec votre serveur smtp afin d’envoyer des e-mails de votre adresse [email protected]! (A faire, de préférence, à la fin du tuto)
Paramètres > Comptes et importations > Envoyer des e-mails en tant que : > Ajouter une autre adresse e-mail
-Décochez « traiter comme un alias »
-Serveur SMTP : smtp.monsite.com
-Port : 25
-Utilisateur : webmaster
-Pass : votre mot de passe défini lors de « adduser webmaster »
-Connexion sécurisée TLS




Configuration muttrc



# nano ~/.muttrc
Créez ce fichier (en remplaçant votre nom/ email) :
set from="monsite.com <[email protected]>"
set locale="fr_FR"
set date_format="%A %d %b %Y à %H:%M:%S (%Z)"
set attribution="Le %d, %n a écrit :"
set forward_format="[Fwd: %s]"
set forward_quote
set pager_index_lines=7
set pager_stop
set copy = no




Installation d’un script de backup des sites et du serveur



Si vous possédez le script de backup Isyweb, installez le comme ceci :

# wget http://machin/scriptbackup.sh (désolé pour ceux qui ne l’ont pas, le script n’est plus disponible !)

# nano scriptbackup.sh
Configurez nom du site, serveur, email, heure cron, ftp, …

# sh scriptbackup.sh

# rm scriptbackup.sh





Redémarrez, votre serveur Debian 8 Jessie est prêt à la production et complètement configuré!
# reboot

- Selon vos envies ou besoins, vous pouvez également installer :
* amavisd-new
* nginx
* php-fpm

En bonus : petits ajouts pour mettre en place SPF, DKIM et DMARC afin d’éviter que ses mails aillent en SPAM.



Revenir aux listes des applications Linux

Créer un site web avec Isyweb.com © 1999 - 2019 - Tous les prix affichés sur Isyweb.com sont HTVA