Installer un serveur linux (RedHat/CentOS)

Un nouveau serveur linux à installer, configurer, administrer, exploiter et sécuriser ? Un VPS chez OVH par exemple ? 😉

Mon mémo sur les actions à effectuer.

Je fais le choix de partir sur du CentOs cf : https://fr.wikipedia.org/wiki/CentOS :
La RHEL en version binaire, directement installable et exploitable, ne peut être obtenue que par achat d’une souscription auprès de Red Hat ou de ses revendeurs. La plupart des programmes inclus et livrés avec la Red Hat sont publiés sous la licence GPL, qui impose au redistributeur (sous certaines conditions) de fournir les sources. CentOS utilise donc les sources de la RHEL (accessibles librement sur Internet) pour regénérer la Red Hat à l’identique. On peut donc considérer la CentOS comme une version gratuite de la Red Hat.

Sinon la Debian est une distrib très costaud également. Suis pas sectaire.
(faudra changer qq commandes (yum–>apt-get, etc… mais la philosophie reste la même).

Sécuriser SSH : désactiver ROOT

Supprimer le user ROOT des logins autorisés à se connecter en SSH.
Donc créer/utiliser un nouveau user. Ici Jean-Claude DUSSE (ATTENTION : avec un ‘D’ comme Dusse) :

adduser jcdusse

La conf du démon SSH : /etc/ssh/sshd_config :

PermitRootLogin no
MaxAuthTries 3
PasswordAuthentication yes
AllowUsers jcdusse

Pour redémarrer le service SSH : systemctl restart ssh
(on peut aussi faire le choix d’utiliser un clef SSH et de désactiver l’authentification interactive)

Vérifier que le binaire sudo est présent, sinon :

yum install sudo

Autoriser Jean-Claude DUSSE à passer en root via sudo : fichier de conf sudo : /etc/sudoers : rajouter :

jcdusse   ALL=(ALL)       ALL 

Installer Fail2Ban

Fail2Ban analyse les logs de divers services (ssh, httpd, ftp, …) et modifie dynamiquement les règles du firewall (pour bannir les IP attaquants un service).

sudo yum install fail2ban
sudo systemctl enable fail2ban
Fichiers de conf dans /etc/fail2ban
Ne pas toucher au jail.conf, mais surcharger dans jail.local.
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

[root@vxxxx ~]# cat /root/bin/myfail2banstatus.sh 
#!/bin/bash 

echo "#commande : fail2ban-client status" 
fail2ban-client status 
echo "################################################\n" 

echo "#commande : fail2ban-client status sshd" 
fail2ban-client status sshd 
echo "################################################\n" 

echo "#commande : fail2ban-client status apache-auth" 
fail2ban-client status apache-auth 
echo "################################################\n"

echo "#commande : fail2ban-client status apache-40x" 
fail2ban-client status apache-40x 
echo "################################################\n"

Détecter les 40x Apache à répétition :
inspiré de https://blog.pastoutafait.fr/billets/Filtrer-erreurs-404-avec-Fail2ban-NGinx
Crééer /etc/fail2ban/filter.d/apache-40x.conf :

[INCLUDES]
before = apache-common.conf
[Definition]
failregex = <HOST> - - [.*?] ".*?" 4(0[0-9]|1[0-8]|2[2-6]|49|50)
ignoreregex =

et dans le jail.local ajouter la section :

[apache-40x]
enabled  = true
filter   = apache-40x
action   = iptables[name=apache-40x, port=http, protocol=tcp]
# le fichier de log à étudier
logpath  = /var/log/httpd/access_log
# le nombre de tentative avant d'être banni
maxretry = 4
# le temps en seconde durant lequel les
# tentatives peuvent être accumulée.
findtime  = 6
# la durée en seconde du ban
bantime  = 60

Installer ShellInABox

😉

Nom de domaine

Chez OVH, rubrique « Zone DNS » vérifiez que votre domaine mondomaine.com est créé avec le type A et le type AAAA.
type A = IPv4
type AAAA = IPv6

Idem pour des sous-domaine : rajouter un champ A et/ou AAAA.
(inspiré de http://blog.velh.fr/virtualhost-et-nom-de-domaines-sur-un-vps-ovh/ )

Installation Apache, PHP, MariaDB, PhpMyAdmin sur CentOS

cf excellent article https://www.howtoforge.com/apache_php_mysql_on_centos_7_lamp

VirtualHost Apache

Pas touche au httpd.conf (sauf éventuellement l’email « ServerAdmin »).
Il se termine par IncludeOptional conf.d/*.conf donc on va se créer un fichier /etc/httpd/conf.d/mondomaine.com.conf (puisqu’il sera automatiquement chargé 😉 )

[root@xxxxxxx]# cat mondomaine.com.conf
<Directory "/var/www/html/mondomaine.com">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>

<Directory "/var/www/html/mondomaine.com/www">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>

<Directory "/var/www/html/mondomaine.com/sub">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>

################# VirtualHost pour : www.mondomaine.com port 80 ######
<VirtualHost w.x.y.z:80>
ServerName www.mondomaine.com
ServerAdmin contact@mondomaine.com
DocumentRoot "/var/www/html/mondomaine.com/www"
</VirtualHost>

################# VirtualHost pour : www.mondomaine.com port 443 ######
<VirtualHost w.x.y.z:443>
ServerName www.mondomaine.com
DocumentRoot "/var/www/html/mondomaine.com/www"
SSLEngine On
SSLCertificateFile "/etc/ssl/mondomaine.com.crt"
SSLCertificateKeyFile "/etc/ssl/mondomaine.com.key"
</VirtualHost>

################# VirtualHost pour : mondomaine.com (sans www) port 80 ######
<VirtualHost w.x.y.z:80>
ServerName mondomaine.com
ServerAdmin contact@mondomaine.com
DocumentRoot "/var/www/html/mondomaine.com/www"
</VirtualHost>

################# VirtualHost pour : sub.mondomaine.com port 80 ######
<VirtualHost w.x.y.z:80>
ServerName sub.mondomaine.com
ServerAdmin contact@mondomaine.com
DocumentRoot "/var/www/html/mondomaine.com/sub"
#Redirect permanent / https://sub.mondomaine.com/
</VirtualHost>

################# VirtualHost pour : sub.mondomaine.com port 443 ######
<VirtualHost w.x.y.z:443>
ServerName sub.mondomaine.com
ServerAdmin contact@mondomaine.com
DocumentRoot "/var/www/html/mondomaine.com/sub"
SSLEngine On
SSLCertificateFile "/etc/ssl/mondomaine.com.crt"
SSLCertificateKeyFile "/etc/ssl/mondomaine.com.key"
# exemple ShellInABox a mettre dans un sous-domaine perso par exemple...
# configurer shellinabox en local only, et ici en ProxyPass HTTPS
<Location /urlpersonnaliseepourshellinabox>
ProxyPass http://localhost:1025
Require all granted
</Location>
</VirtualHost>

Pollution /var/log/messages

Jun 24 14:01:01 xxx systemd: Created slice User Slice of root.
Jun 24 14:01:01 xxx systemd: Starting User Slice of root.
Jun 24 14:01:01 xxx systemd: Started Session xxx of user root.
Jun 24 14:01:01 xxx systemd: Starting Session xxx of user root.
Jun 24 14:01:01 xxx systemd: Removed slice User Slice of root.
Jun 24 14:01:01 xxx systemd: Stopping User Slice of root.

==>   vi /etc/rsyslog.d/ignore-systemd-session-slice.conf :
if $programname == "systemd" and ($msg contains "Starting Session" or $msg contains "Started Session" or $msg contains "Created slice" or $msg contains "Starting user-" or $msg contains "Removed Slice" or $msg contains "Stopping user-") then stop

puis relancer rsyslogd :

systemctl restart rsyslog

WordPress

Plugin de sécurité (surveille brute force login par exemple) : iThemes Security

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *