linux centos 6 - thomasdelcampe.be · serveur sous centos 6.9 qui devra interagir avec des autres...

48
2 ème IRT – Sécurité 1 Date de remise du travail Année académique 2016-2017 21 juin 2017 Haute Ecole en Hainaut Campus Technique Avenue Victor Maistriau, 8 7000 Mons Bachelier en Informatique & système Télécommunications et réseaux 1 Linux CentOS 6.9 Par : Delcampe Thomas

Upload: vongoc

Post on 12-Sep-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

2ème IRT – Sécurité 1 Date de remise du travail

Année académique 2016-2017 21 juin 2017

Haute Ecole en Hainaut

Campus Technique

Avenue Victor Maistriau, 8

7000 Mons

Bachelier en Informatique & système Télécommunications et réseaux 1

Linux CentOS 6.9

Par :

Delcampe Thomas

Page 2: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

2ème IRT – Sécurité 1 Date de remise du travail

Année académique 2016-2017 21 juin 2017

Table des matières Introduction ............................................................................................................................................. 4

Au préalable ............................................................................................................................................ 5

Configuration ...................................................................................................................................... 5

Modification du nom d’hôte ............................................................................................................... 6

Configuration IP .................................................................................................................................. 6

Création d’un dossier de sauvegarde ................................................................................................. 7

Mises à jour ......................................................................................................................................... 7

Création d’un partage ............................................................................................................................. 8

Sur le serveur - NFS ............................................................................................................................. 8

Sur le client - AutoFS ........................................................................................................................... 9

Sur Windows - Samba ....................................................................................................................... 10

Serveur DNS ........................................................................................................................................... 12

Sécurisation ....................................................................................................................................... 15

Serveur DHCP ........................................................................................................................................ 16

Création d’un hébergement multiutilisateur ........................................................................................ 18

Serveur MySQL .................................................................................................................................. 18

Serveur Web Apache......................................................................................................................... 20

Installation du serveur PHP ............................................................................................................... 23

Interface phpMyAdmin ..................................................................................................................... 24

Serveur vsFTPd .................................................................................................................................. 25

Création de la base de données ................................................................................................... 27

Authentification avec PAM ............................................................................................................... 28

Création d’un utilisateur de test ................................................................................................... 29

Création d’un hébergement multiutilisateur - automatisation ............................................................ 30

Script d’ajout d’utilisateur ................................................................................................................ 30

Script de suppression d’utilisateur ................................................................................................... 32

Vérification du fonctionnement ................................................................................................... 33

Serveur NTP ........................................................................................................................................... 35

Serveur SSH ........................................................................................................................................... 36

Installation de Clam Antivirus ............................................................................................................... 36

Backup Rsync ......................................................................................................................................... 38

Firewall .................................................................................................................................................. 39

Désactivation des services inutiles ........................................................................................................ 41

Page 3: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 3 HEH – Campus Technique

Quota ..................................................................................................................................................... 42

Conclusion ............................................................................................................................................. 46

Références ............................................................................................................................................. 47

Page 4: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

2ème IRT – Sécurité 1 Date de remise du travail

Année académique 2016-2017 21 juin 2017

Introduction Dans une entreprise, le personnel a besoin de communiquer entre eux, de partager leur travail et

bien d’autres tâches. Chaque entreprise nécessite donc un serveur, ici nous allons installer un

serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que

Windows.

Grâce à ça, l’entreprise pourra communiquer entre elles et échanger des données avec les personnes

concernées, tout en étant authentifiées sur le réseau par un login et mot de passe. Le serveur servira

aussi d’Anti-Virus et disposera de plusieurs sécurités.

Page 5: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 5 HEH – Campus Technique

ÉLABORATION DU PROJET

Au préalable Pour commencer, il faut donner un nom d’hôte au serveur et aux clients ainsi que choisir et définir

leur configuration IP.

Configuration Serveur :

Nom d’hôte : srv1

Nom de domaine : newocomputer.lan

Nom d’utilisateur : newo

Mot de passe : Info1234

Mot de passe compte root : Info1234

Mot de passe BIOS User : 123456

Mot de passe BIOS Supervisor :1234

IP du serveur : 192.168.1.11

Masque : 255.255.255.0

Adresse réseau : 192.168.1.0

Adresse broadcast : 192.168.1.255

Client Linux :

Nom d’hôte : postelinux

Nom de domaine : newocomputer.lan

Nom d’utilisateur : poste1

Mot de passe : Info1234

Mot de passe compte root : Info1234

Mot de passe BIOS User : 123456

Mot de passe BIOS Supervisor :1234

Page 6: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 6 HEH – Campus Technique

IP du serveur : 192.168.1.20

Masque : 255.255.255.0

Adresse réseau : 192.168.1.0

Adresse broadcast : 192.168.1.255

Client Windows :

Nom d’hôte : poste1

Nom de domaine : newocomputer.lan

Nom d’utilisateur : Newo

Mot de passe: /

Mot de passe BIOS User : 123456

Mot de passe BIOS Supervisor :1234

IP du serveur : 192.168.1.30

Masque : 255.255.255.0

Adresse réseau : 192.168.1.0

Adresse broadcast : 192.168.1.255

Modification du nom d’hôte Pour modifier le nom d’hôte, il faut modifier le fichier /,etc/sysconfig/network avec la commande vi

ou vim. Une fois dedans, il faut modifier l’hostname en celui choisi.

Il faut ensuite modifier le fichier hosts pour la résolution du nom d’hôte quand on fera le DNS

(uniquement pour le serveur). Il faut rajouter une ligne à la fin indiquant l’IP du serveur suivi du nom

du serveur.

Ensuite, redémarrer et taper la commande hostname pour vérifier que l’hostname est bien pris en

compte.

Configuration IP Pour effectuer la configuration IP d’une machine Linux, il suffit de modifier le fichier

/etc/sysconfig/network-scripts/ifcfg-eth0. Eth0 est le nom de la carte réseau, sur notre machine

client il s’agit d’eth1.

Dans le fichier, il faut modifier les lignes :

BOOTPROTO=STATIC : modifie le mode d’attribution IP, on passe en attribution statique

IPADDR=192.168.1.11 : définis l’IP du serveur

NETMASK=255.255.255.0 : Définis le masque de sous-réseau

NETWORK=192.168.1.0 : Définis la première adresse du réseau

BROADCAST=192.168.1.255 : Définis la dernière adresse du réseau

GATEWAY=192.168.1.1 : Définis l’adresse du routeur par défaut

DNS1=192.168.1.1 Définis l’adresse du routeur par défaut faisant office de serveur DNS

Faire un « service network restart » pour redémarrer la carte réseau et prendre en compte le

changement.

Page 7: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 7 HEH – Campus Technique

Création d’un dossier de sauvegarde Durant la configuration du serveur, nous serons amenés à modifier des fichiers « sensibles » de Linux.

Pour éviter tout problème, nous créons un dossier de backup dans lequel nous mettrons tous les

fichiers « sensibles » avant de les modifier et pouvoir les récupérer en cas de problème.

Mkdir /root/backup

Nous attribuons les permissions spécifiques pour que seul l’user root puisse lire, modifier et

supprimer le dossier.

chown –R root.root /root/backup

chmod –R 700 /root/backup

Mises à jour Pour garantir la sécurité d’un OS, il est obligatoire de faire ses mises à jour régulièrement vu qu’elles

pourraient contenir des correctifs de sécurités ou des options supplémentaires par exemple.

Yum update : lance la mise à jour de tout le système.

Page 8: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 8 HEH – Campus Technique

Création d’un partage Sur le serveur - NFS Pour partager un dossier sur le réseau, il faut installer et configurer NFS (Network File System) à la

fois sur le serveur et le client. Ce service n’est pas installé de base dans Linux, il faut donc l’installer,

ainsi que rpcbind avec la commande.

yum -y install nfs-utils

yum -y install nfs-utils rpcbind

Nous créons évidemment un dossier que l’on partagera.

Mkdir /share

Nous ajoutons le droit d’écriture et de lecture pour tout le monde.

Chmod a+w /share

La commande chkconfig permet de lancer les démons des services automatiques au démarrage de

l’OS. Nous le ferons pour la plupart des services que l’on va installer, ici pour les services nfs et

rpcbind.

chkconfig nfs on

chkconfig rpcbind on

chkconfig nfslock on

Il faut aussi les démarrer une première fois (ou rebooter l’OS).

service rpcbind start

service nfs start

service nfslock start

Nous ajoutons le partage dans le fichier /,etc/exports. La commande contiendra le lien du dossier,

l’adresse IP du réseau et son masque ainsi que plusieurs options. Ici, on spécifie juste les droits en

lecture et écriture pour toutes les machines du réseau.

/share 192.168.1.0/24(rw,sync,no_subtree_check)

-no_subtree_check : Cette fonction désactive l'exploration de l'arborescence dans le cas où le

partage est un dossier principal qui contient une structure de sous-dossiers complexe.

La désactiver améliore la sécurité, mais peu éventuellement rendre plus difficile l'utilisation de NFS

dans de rares cas.

-no_root_squash : par défaut, les connexions via root sur nu client sont considérées comme si c'était

un user quelconque (nfsnobody). Avec no_root_squash, une connexion avec un user root aura le

même effet niveau permission qu'une connexion via root sur le serveur. Ça peut être un problème de

sécurité, mais peut être nécessaire pour des tâches administratives.

On le désactive via root_squash ( par défaut )

On exporte le fichier afin de démarrer le partage

Exportfs -va

Page 9: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 9 HEH – Campus Technique

La commande exportfs -v permet de visualiser les partages effectués.

On édite le fichier /,etc/sysconfig/nfs afin d’ouvrir les ports réseau nécessaires au partage NFS. Pour

se faire, il suffit de dé commenter les lignes ci-dessous.

RQUOTAD_PORT=875

LOCKD_TCPPORT=32803

LOCKD_UDPPORT=32769

MOUNTD_PORT=892

STATD_PORT=662

STATD_OUTGOING_PORT=2020

RDMA_PORT=20049

Redémarrer le service nfs pour prendre en compte les modifications

Service nfs restart

Sur le client - AutoFS Pour monter le dossier partagé sur le client, nous utilisons la méthode via autofs, qui est moins

gourmande en ressource que le montage manuel via fstab. Il faut tout d’abord installer le package

associé.

Yum -y install autofs

On édite ensuite le fichier /etc/auto.master afin d’y activer Autofs, en y ajoutant cette ligne.

/autofs /etc/auto.nfs --timeout=60

On modifie le fichier /etc/auto.nfs pour y ajouter le partage en y spécifiant d’abord le nom du dossier

partager local, les autorisations puis le chemin vers le dossier partager distant (IP:/chemin).

Rshare -rw,soft,intr 192.168.1.11:/share

On démarre le service et l’éxécutons automatiquement au démarrage.

Service autofs restart

chkconfig autofs on

Nous pouvons vérifier via la commande mount que le montage via autofs est réalisé.

Et ensuite on peut, par exemple, créer un fichier dans le dossier local sur le client et vérifier qu’il

s’affiche dans le dossier local /autofs/rshare ainsi que le dossier distant /share.

Touch /autofs/rshare/testclient

Page 10: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 10 HEH – Campus Technique

Sur Windows - Samba Nous venons de créer un dossier partagé via le service NFS, mais ce dernier ne fonctionne que sur les

différentes distributions Linux. Pour créer un partage sur Windows, il faut installer le service Samba.

Yum -y install samba

Le dossier backup initialement créé va servir à contenir une copie des fichiers spécifiques à Samba

avant leur modification.

Mkdir /root/backup/samba

Cp /etc/samba/smb.conf /root/backup/samba/smb.conf.old

Tout comme pour le DNS, on active le service à chaque démarrage du serveur, puis on le démarre.

Chkconfig smb on

service smb start

Il faut maintenant déclarer le dossier partagé pour SELinux en lui apposant la marque du partage

Samba.

chcon -R -t samba_share_t /share

on supprime le contenu du fichier «/etc/samba/smb.conf » puis on l’édite

cat /dev/null > /etc/samba/smb.conf

vi /etc/samba/smb.conf

[global]

server string = newocomputer

workgroup = WORKGROUP

netbios name = newocomputer

public = yes

encrypt passwords = true

security = share

load printers = NO disable spoolss = YES

hosts allow = 192.168.1.

[share_windows]

path = /share

Page 11: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 11 HEH – Campus Technique

read only = no

writeable = yes

browseable = yes

force directory mode = 777

force create mode = 777

comment = partage samba windows ouvert

On redémarre enfin le service pour prendre en compte les modifications, puis on vérifie sur la

machine client si on voit le partage.

Service smb restart

Si on le voit, on essaie, comme pour Linux d’y créer un fichier quelconque (ici, test smb.txt), puis on

vérifie qu’il est présent dans le dossier /share du serveur.

Page 12: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 12 HEH – Campus Technique

Serveur DNS Nous allons commencer par installer et configurer un serveur de résolution de noms DNS sur le

serveur local.

yum –y install bind

Nous créons le dossier qui contiendra une copie des fichiers originaux que l’on va modifier.

mkdir /root/backup/dns

On copie le fichier /etc/named.conf, puis on le modifie. C’est le fichier qui définit le serveur DNS.

cp /etc/named.conf /root/backup/dns/named.conf.old

vi /etc/named.conf

Nous avons rajouté l’adresse de notre serveur dans listen-on port 53 ainsi que dans allow-query.

Pour faire office de DNS cache et pouvoir accéder à Internet, nous rajoutons les forwarders définis

par notre F.A.I ou , au choix, les adresses « OpenDNS », qui fonctionneront avec tous les F.A.I et pas

juste Proximus par exemple.

208.67.222.222

208.67.220.220

Deuxième fichier à modifier, celui-ci contient les zones DNS.

cp /etc/named.rfc1912.zones /root/backup/dns/named.rfc1912.zones.old

vi /etc/named.rfc1912.zones

Page 13: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 13 HEH – Campus Technique

Nous rajoutons une zone de recherche directe(newocomputer.lan) et indirecte(1.168.192.in-

addr.arp) en modifiant le modèle de base. Nous spécifions aussi l’emplacement de leur fichier de

configuration.

Nous modifions ensuite le fichier /etc/resolv.conf en spécifiant le nom du réseau ainsi que l’adresse

IP du serveur DNS primaire.

Si le fichier de configuration de la carte réseau est contrôlé par le Network Manager, resolv.conf se

remettra à zéro à chaque reboot. Il faut donc modifier le fichier de la carte réseau Vi

/etc/sysconfig/network-scripts/ifcfg-eth0 afin de le désactiver, et vérifier que la ligne DNS1 soit

n’existe pas, soit pointe sur notre serveur et pas notre routeur.

Nm_controled=no

On ajoute notre adresse réseau, nom du serveur et le nom complet dans le fichier /,etc/hosts

On redémarre la carte réseau avec service network restart.

Le DNS est configuré, il faut maintenant créer et configurer ses zones. Nous commençons par créer le

premier fichier pour la zone directe avec le même nom que mentionné dans le fichier named.conf, à

partir du modèle de base. On y modifiera ensuite son groupe pour que le service named (DNS) y ait

accès.

cp /var/named/named.empty /var/named/newocomputer.lan.zone

chgrp named /var/named/newocomputer.lan.zone

vi /var/named/newocomputer.lan.zone

Idem pour la zone indirecte

cp /var/named/named.empty /var/named/192.168.1.zone

chgrp named /var/named/192.168.1.zone

vi /var/named/192.168.1.zone

Page 14: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 14 HEH – Campus Technique

On ajoute ce service au démarrage du système et on le démarre une première fois.

Chkconfig named on

service named restart

Nous allons maintenant configurer les machines clinslents afin de leur rajouter l’adresse IP de notre

serveur en DNS primaire, et faire divers nslookup afin de tester les zones directes et indirectes.

Page 15: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 15 HEH – Campus Technique

Sécurisation Une multitude d’options existe pour sécuriser un serveur DNS.

Seul le serveur DNS ou le serveur local pourra demander un transfert de zone.

/etc/named.rfc1912.zones

allow-transfer {localhost ; 192.168.1.11 ; };

Seul notre réseau pourra demander une résolution DNS.

/etc/named.conf

allow-query (localhost ; 192.168.1.0/24 ; );

Vérifier que chaque IP faisant une requête DNS est associée à un nom de domaine valide, et

enregistre les tentatives de spoofing avec syslog, dans le fichier host.conf

order hosts,bind

multi on

nospoof on

alert on

Page 16: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 16 HEH – Campus Technique

Serveur DHCP Afin d’éviter de devoir entrer manuellement la configuration IP de chaque nouveau poste client, nous

configurons notre serveur local pour qu’il fasse office de serveur DHCP, il distribuera donc lui-même

la configuration IP aux nouveaux clients.

Yum -y install dhcp

Création du dossier de backup et copie des fichiers de configuration originaux

Mkdir /root/backup/dhcp/

cp /etc/sysconfig/dhcpd /root/backup/dhcp/dhcpd.old

cp /etc/dhcp/dhcpd.conf /root/backup/dhcp/dhcpd.conf.old

On sélectionne ensuite la bonne interface Ethernet par laquelle le serveur fera office de DHCP.

Vi /,etc/sysconfig/dhcpd

DHCPDARGS=eth0

On ouvre le fichier de configuration, et on configure notre serveur DHCP comme suit.

#Nom de domaine

option domain-name "newocomputer.lan";

#IP du serveur DNS principal (SRV1) et secondaire (routeur)

option domain-name-servers 192.168.1.11, 192.168.1.1;

#Durée du bail par défaut

default-lease-time 600;

#Durée du bail maximal

max-lease-time 7200;

#Methode de connexion

log-facility local7;

#Configuration du sous-reseau et de la plage d’IP adressable

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.100 192.168.1.254;

option broadcast-address 192.168.1.255;

#Routeur passerelle par defaut

option routers 192.168.1.1;

}

On lance le service automatiquement au démarrage et on le démarre, ensuite on lance un nouveau

client et on vérifie qu’il reçoit bien une configuration IP dans la plage et avec les options définies.

Chkconfig dhcpd on

Service dhcpd on

Page 17: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 17 HEH – Campus Technique

On peut aussi vérifier les logs du serveur (/var/log/messages) afin de vérifier les activités de tous les

clients DHCP

Page 18: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 18 HEH – Campus Technique

Création d’un hébergement multiutilisateur Serveur MySQL Installation du service mysql

yum –y install mysql-server mysql-devel

Création du dossier backup et copie du fichier original.

cp /etc/my.cnf /root/backup/mysql/my.cnf.old

Copie du contenu du fichier et création du fichier my.cnf

cp /usr/share/doc/mysql-server-5.1.73/my-medium.cnf /etc/my.cnf

vi /etc/my.cnf

Nous avons ajouté la ligne skip-external-locking au lieu de skip-locking yuqui évite la corruption de

données, et augmenter la taille maximale à 16M.

Active le démarrage automatique et démarre le service.

Chkconfig mysqld on

service mysqld start

Le service est démarré, nous pouvons créer le compte root et lui définir un mot de passe.

mysqladmin –u root password ‘rootadmin’

Et tenter de s’y connecter pour vérifier le bon fonctionnement.

Mysql -u root -p

Page 19: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 19 HEH – Campus Technique

Page 20: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 20 HEH – Campus Technique

Serveur Web Apache Nous allons maintenant installer le serveur web Apache, c’est le serveur http le plus populaire. Il

permet donc d’héberger des sites webs.

yum -y install httpd httpd-devel

On crée le dossier backup associé, copie le fichier original, puis on le modifie.

mkdir /root/backup/apache

cp /etc/httpd/conf/httpd.conf /root/backup/apache/httpd.conf.old

vi /etc/httpd/conf/httpd.conf

Dans ce fichier, nous allons remplacer quelques valeurs.

ServerTokens Prod : Contrôle l’en-tête du serveur qui est inclus dans la réponse du client.

Avec Prod, on renvoie Server : Apache

ServerAdmin [email protected] : adresse email de contact en cas de problème

ServerName srv1.newocompter.lan : nom complet du serveur

UseCanonicalName On : Apache va créer le nom canonique du serveur grâce au nom

d’hôte et au port spécifia par servername. Ce nom est utilisé dans toutes les URL auto-identifiantes.

UserDir disabled root : Désactive la fonction pour tous sauf root.

UserDir /home/users/*/public_html : Détermine le chemin de l’adresse des dossiers

utilisateurs.

Décommenter le bloc répertoire, supprimer « SymLinksIfOwnerMatch » et ajout de la ligne

IndexOptions, php_admin et modification du chemin des dossiers users public.

FoldersFirst : Affiche les répertoires en premier

FancyIndexing : Affiche les répertoires en mode intelligent

IgnoreCase : Ignore la casse.

ServerSignature Off : Désactive le pied de page fixe pour les documents

générés par le serveur, n’affiche pas la version Apache pour la sécurité.

On met le service dans le démarrage automatique puis on le démarre pour la première fois.

Page 21: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 21 HEH – Campus Technique

Chkconfig httpd start

service httpd start

On vérifie que le serveur fonctionne, en y accédant via Firefox.

Nous allons maintenant créer une clef SSL afin de disposer du mode HTTPS, donc avoir une interface

web sécurisée. On commence par installer le service.

yum –y install mod_ssl openssl

On crée un dossier qui contiendra le certificat.

mkdir /root/certificats

cd /root/certificats

On génère la clef SSL dans ce dossier.

openssl genrsa -out ca.key 1024

On génère la demande de signature du certificat, puis on remplit les informations personnelles

demandées.

openssl req -new -key ca.key -out ca.csr

Page 22: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 22 HEH – Campus Technique

Maintenant, nous pouvons soit envoyé la clef à une autorité de certification, soit la signer soit même

pour une durée de 365 jours avec la commande.

openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

On copie les trois fichiers dans les dossiers requis :

cp ca.crt /etc/pki/tls/certs/ca.crt

cp ca.key /etc/pki/tls/private/ca.key

cp ca.csr /etc/pki/tls/private/ca.csr

On copie les droits sur les certificats :

chmod 600 /etc/pki/tls/certs/ca.crt

chmod 600 /etc/pki/tls/private/ca.key

chmod 600 /etc/pki/tls/private/ca.csr

On modifie la configuration du serveur Apache SSL via le fichier /etc/httpd/conf.d/ssl.conf

ServerName newocomputer.lan : renseigne le nom du domaine

SSLCertificateFile /etc/pki/tls/certs/ca.crt : renseigne l’emplacement du certificat

SSLCertificateKeyFile /etc/pki/tls/private/ca.key : renseigne l’emplacement de la clef

On met le service dans le démarrage automatique puis on le démarre pour la première fois.

Chkconfig httpd on

service httpd start

Page 23: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 23 HEH – Campus Technique

Installation du serveur PHP On installe les paquets requis pour le serveur PHP

yum –y install php php-*

On crée le dossier backup associé, copie le fichier original, puis on le modifie.

mkdir /root/backup/php

cp /etc/php.ini /root/backup/php/php.ini.old

vi /etc/php.ini

Voici les modifications :

short_open_tag = On :On autorise les balises courtes de PHP

expose_php = Off :On expose à tous les clients l’installation de PHP

post_max_size = 128M : On augmente la taille maximale des méthodes

upload_max_filesize = 20M : On augmente la taille maximale d’un upload

date.timezone = Europe/Brussels : défini le bon fuseau horaire

Pour qu’un utilisateur ne puisse pas modifier le contenu du dossier d’un autre grâce à PHP, nous

rajoutons les lignes ci-dessous dans le httpd.conf vu précédemment.

Php_admin_value safe_mode « 1 » : Interdi l’usage de fonction comme shell_exec()

Php_admin_value open_basedir « .. » : Enferme PHP dans le dossier parent du fichier

modifié

Puis on redémarre le service web via service httpd restart

Pour vérifier le bon fonctionnement de PHP, il nous suffit de créer un fichier PHP dans le dossier

html. Ici, nous lançons juste la commande phpinfo, qui donne des infos sur le serveur php.

touch /var/www/html/test.php

vi /var/www/html/test.php

< ?php phpinfo(); ?>

Page 24: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 24 HEH – Campus Technique

Interface phpMyAdmin Comme son nom l’indique, c’est une interface web qui nous permet de gérer une base de données

mySQL grâce à un serveur PHP. Nous commençons par vérifier le fonctionnement du serveur MySQL

et PHP ensemble de la même manière que pour PHP, en créant un fichier dans le bon langage en

l’ouvrant via Firefox. Ici, le code permettra de se connecter à la base de données et de renvoyer un

message de succès ou d’erreur

touch /var/www/html/dbtest.php

vi /var/www/html/dbtest.php

Le test réussi, nous téléchargeons la clef GPG du dépôt EPEL en version 64 bits.

rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm

Nous vérifions que tout le système soit à jour.

Yum check-update

On installe finalement phpMyAdmin

Yum -y install phpMyAdmin

Page 25: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 25 HEH – Campus Technique

On édite le fichier de configuration phpMyAdmin afin d’autoriser le réseau à accéder au serveur.

vi /etc/httpd/conf.d/phpMyAdmin.conf

On redémarre httpd via service httpd restart et on essaie de s’y connecter via les logs configurés et

l’adresse https://srv1.newocomputer.lan/phpmyadmin/index.php

Serveur vsFTPd Un serveur VSFTPD est un serveur FTP pour Linux, libre et sécurisé. Il prend en charge IPv6 et SSL.

On commence par installer les paquets nécessaires.

yum –y install vsftpd

yum -y install ftp

On crée un utilisateur vsftpd avec privilèges normaux et associé au répertoire /home/vsftpd afin de

prévenir des éventuels problèmes de sécurité étant donné que cet user aura des droits d’user et pas

plus.

Page 26: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 26 HEH – Campus Technique

On crée le dossier backup associé, copie le fichier original, puis on le modifie.

mkdir /root/backup/ftp

cp /etc/vsftpd/vsftpd.conf /root/backup/ftp/vsftpd.conf.old

On supprime le contenu du fichier de configuration puis on l’édite.

cat /dev/null > /etc/vsftpd/vsftpd.conf

vi /etc/vsftpd/vsftpd.conf

#interdit les connexions anonymes

anonymous_enable=NO

#On autorise les utilisateurs non anonymes avec permissions write 755

local_enable=YES

write_enable=YES

#droits par défaut des fichiers uploadés

local_umask=022

#active les logs

xferlog_enable=YES

#Coupe la connexion après 600 secondes d'inactivité

idle_session_timeout=600

#Coupe la connexion après 120 secondes d'utilisation de données

data_connection_timeout=120

#maximum de sessions à 10 et 5 par IP

max_clients=50

max_per_ip=5

#use le serveur ntp et pas le serveur universel

use_localtime=YES

#Défini un utilisateur normal que le serveur peut utiliser comme isolé et sans privilèges.

nopriv_user=vsftpd

#chaque utilisateur sera bloqué dans son dossier

chroot_local_user=YES

#active le mode standalone

listen=YES

ftpd_banner=Serveur FTP NewoComputer

Page 27: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 27 HEH – Campus Technique

#Utilisation de PAM pour la connexion utilisateur

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

#active les utilisateurs virtuels

guest_enable=YES

#indique de quel utilisateur les utilisateurs virtuels prendront les caractéristiques

guest_username=vsftpd

#dossier racine d'un utilisateur vsftpd non-inscrit (via le script), nom = $user

local_root=/home/vsftpd/$USER

user_sub_token=$USER

virtual_use_local_privs=YES

#dossier contenant les fichiers de configuration des utilisateurs virtuels

user_config_dir=/etc/vsftpd/vsftpd_user_conf

#dossier contenant les fichiers de configuration des utilisateurs virtuels

user_config_dir=/etc/vsftpd/vsftpd_user_confet on réduit ses droits par sécurité

chmod 600 /etc/vsftpd/vsftpd.conf

Création de la base de données On crée une base de données qui contiendra les utilisateurs du service FTP.

On se connecte avec mysql -u root -p

On crée la base de donnée ainsi qu’un user vsftpd

CREATE DATABASE vsftpd;

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost'

IDENTIFIED BY '123456';

FLUSH PRIVILEGES ;

On crée les tables « users » et « logs » dans la base que l’on vient de créer

USE vsftpd;

CREATE TABLE `vsftpd`.`users` (

`id_user` int(11) NOT NULL auto_increment,

`login` varchar(50) NOT NULL,

`password` varchar(100) NOT NULL,

Page 28: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 28 HEH – Campus Technique

`active` int(11) NOT NULL,

PRIMARY KEY (`id_user`)

) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

CREATE TABLE `vsftpd`.`log` (

`id_log` int(11) NOT NULL auto_increment,

`login` varchar(50) NOT NULL,

`message` varchar(200) NOT NULL,

`pid` varchar(10) NOT NULL,

`host` varchar(30) NOT NULL,

`time` datetime default NULL,

PRIMARY KEY (`id_log`)

) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

Authentification avec PAM PAM est un plug-in qui permet la connexion entre VSFTPD et une base de données mySQL.

yum –y install pam_mysql

On crée le dossier backup associé, copie le fichier original, puis on le modifie.

cp /etc/pam.d/vsftpd /root/backup/ftp/vsftpd_old

cat /dev/null > /etc/pam.d/vsftpd

vi /etc/pam.d/vsftpd

#%PAM-1.0

auth sufficient pam_unix.so

account sufficient pam_unix.so

auth required /lib64/security/pam_mysql.so verbose=0 user=vsftpd passwd=123456 host=localhost

db=vsftpd table=users usercolumn=login passwdcolumn=password crypt=3 where=users.active=1

sqllog=yes logtable=log logmsgcolumn=message logusercolumn=login logpidcolumn=pid

loghostcolumn=host logtimecolumn=time

account required /lib64/security/pam_mysql.so verbose=0 user=vsftpd passwd=123456

host=localhost db=vsftpd table=users usercolumn=login passwdcolumn=password crypt=3

where=users.active=1 sqllog=yes logtable=log logmsgcolumn=message logusercolumn=login

logpidcolumn=pid loghostcolumn=host logtimecolumn=time

Page 29: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 29 HEH – Campus Technique

On met le service dans le démarrage automatique puis on le démarre pour la première fois.

chkconfig vsftpd on

service vsftpd start

Création d’un utilisateur de test On commence évidemment par se connecter à la table, cette fois avec l’user vsftpd

Mysql -u vsftpd -p

On crée l’utilisateur

USE vsftpd ;

INSERT INTO vsftpd.users (login,password,active) VALUES('admin',md5('passadmin'),1)

exit ;

On crée le dossier user_conf que l’on a défini comme dossier qui contiendra la configuration des

clients et on modifie son groupe et ses permissions

mkdir /etc/vsftpd/vsftpd_user_conf

chown root.apache /etc/vsftpd/vsftpd_user_conf -R

chmod 740 /etc/vsftpd/vsftpd_user_conf -R

On crée le fichier de configuration pour l’user que l’on vient de créer puis on le modifie.

touch /etc/vsftpd/vsftpd_user_conf/admin

vi /etc/vsftpd/vsftpd_user_conf/admin

local_root=/home/users/admin

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

hide_file=(none)

force_dot_files=YES

On crée le dossier de l’user

Mkdir /home/users/admin

chmod 700 /home/users/admin

chown vsftpd.users /home/users/admin

On crée le dossier /home/www qui sera la redirection du dossier /var/www puis on modifie ses

permissions.

mkdir /home/www

chown -R apache.apache /home/www

chmod -R 700 /home/www

chown -R apache.apache /var/www

chmod -R 700 /var/www

Faire le montage avec /,etc/fstab

Page 30: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 30 HEH – Campus Technique

Vi /,etc/fstab

/var/www /home/www none bind 0 0

Activer le montage avec mount -a puis le vérifier avec mount -v

Enfin, il faut désactiver SELinux car ce module de sécurité empêche de faire fonctionner

correctement vsFTP.

Pour ce faire, on modifie le fichier /,etc/selinux/config, et on modifie SELINUX=disabled, puis on

redémarre le service.

Puis on teste le FTP via Fillezilla, une invite de commande, un terminal…

Création d’un hébergement multiutilisateur - automatisation Afin de ne pas devoir ajouter manuellement un utilisateur dans la base de données, créer ses

dossiers et permissions à chaque fois, nous créons des scripts permettant l’ajout et la suppression de

ceux-ci automatiquement, avec toute la configuration.

Mkdir /root/script

mkdir /root/script/ftp

On modifie les permissions du dossier script, afin que seulement root puisse les utiliser.

chown –R root.root /root/script/ftp

chmod –R 700 /root/script/ftp

Script d’ajout d’utilisateur Fonctions du script :

Demander les identifiants (Nom d’utilisateur et mot de passe).

Vérifier si le nom d’utilisateur est libre.

Page 31: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 31 HEH – Campus Technique

Créer les dossiers nommés comme l’utilisateur « /home/users/[nom_utilisateur] » et «

/home/users/[nom_utilisateur]/public_html ».

Régler le propriétaire et les droits du dossier « /home/users/[nom_utilisateur] » et de son

contenu (vsftpd.users / 700).

Créer le fichier de configuration « /etc/vsftpd/vsftpd_user_conf/[nom_utilisateur] » et le

remplir selon le même modèle que défini lors de l’installation de PAM

ajouter l’utilisateur dans la base de données avec un compte activer par défaut.

Créer un utilisateur MySQL et une base de données associée.

vi /root/script/ftp/add_ftpuser.sh

#!/bin/sh

#Identifiants MYSQL

password_mysql_vsftpd="123456"

password_mysql_root="rootadmin"

#Demande la saisie du nom d'utilisateur et du mot de passe avec

vérification d'erreur de frappe

echo "Nom d'utilisateur : "

read USER

echo "Mot de passe : "

read -s mdp

echo "Recopier le mot de passe : "

read -s mdp2

#Boucle permettant d'effectuer la vérification d'erreur de frappe entre les

2 mots de passe entrer

if test $mdp = $mdp2 ; then

#Verifie que le dossier vsftpd de l'user est inexistant, sinon

c'est qu'il y a déjà un user avec ce USER.

if test -d /home/users/$USER; then

echo "L'utilisateur existe deja"

else

# Creation des dossiers et permissions

mkdir /home/users/$USER

mkdir /home/users/$USER/public_html

chown -R vsftpd.users /home/users/$USER

chmod -R 755 /home/users/$USER

# Creation du fichier de configuration pour l'user et ses

permissions

echo "anon_world_readable_only=NO" >>

/etc/vsftpd/vsftpd_user_conf/$USER

echo "local_root=/home/users/$USER" >>

/etc/vsftpd/vsftpd_user_conf/$USER

echo "write_enable=YES" >>

/etc/vsftpd/vsftpd_user_conf/$USER

echo "anon_upload_enable=YES" >>

/etc/vsftpd/vsftpd_user_conf/$USER

echo "anon_mkdir_write_enable=YES" >>

/etc/vsftpd/vsftpd_user_conf/$USER

echo "anon_other_write_enable=YES" >>

/etc/vsftpd/vsftpd_user_conf/$USER

echo "hide_file=(none)" >>

/etc/vsftpd/vsftpd_user_conf/$USER

Page 32: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 32 HEH – Campus Technique

echo "force_dot_files=YES" >>

/etc/vsftpd/vsftpd_user_conf/$USER

# Ajout de l'utilisateur dans la BDD activé

mysql -u vsftpd -p"$password_mysql_vsftpd" -D vsftpd -e

"INSERT INTO vsftpd.users (login ,password, active) VALUES ('$USER',

md5('$mdp'),1);"

# Creation d’une BDD propre à l'utilisateur où il dispose

de tous les droits

mysql -u root -p"$password_mysql_root" -e "CREATE USER

'$USER'@'localhost' IDENTIFIED BY '$mdp';GRANT USAGE ON *.* TO

'$USER'@'localhost' IDENTIFIED BY '$mdp' WITH MAX_QUERIES_PER_HOUR 0

MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS

0;CREATE DATABASE IF NOT EXISTS $USER;GRANT ALL PRIVILEGES ON $USER.* TO

'$USER'@'localhost';"

echo "Utilisateur ajouté avec succès"

fi

else

echo "Les mots de passe ne sont pas identiques"

fi

Script de suppression d’utilisateur Fonctions du script :

Demander le nom de l’utilisateur à supprimer.

Vérifier l’existence de cet utilisateur.

Supprimer les données de l'utilisateur dans la base de données.

Supprimer l'utilisateur MySQL et la base de données associée ;

Supprimer son fichier de configuration « /etc/vsftpd/vsftpd_user_conf/[nom_utilisateur] ».

Supprimer son dossier « /home/users/[nom_utilisateur] » et l'intégralité de son contenu.

vi /root/script/ftp/del_ftpuser.sh

#!/bin/sh

#Identifiants MYSQL

password_mysql_vsftpd="123456"

password_mysql_root="rootadmin"

#Demande du nom d'utilisateur a supprimé

echo -n "Nom d'utilisateur : "

read USER

#Verification de son existence

if test -d /home/users/$USER ; then

# Suppression de son compte et sa BDD MySQL

mysql -u root -p"$password_mysql_root" -e "DROP USER

$USER@'localhost';DROP DATABASE IF EXISTS $USER;"

Page 33: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 33 HEH – Campus Technique

#Suppression de la base de données vsftpd

mysql -u vsftpd -p"$password_mysql_vsftpd" -D vsftpd -e "DELETE

FROM users WHERE login='$USER';"

# Suppression son fichier de configuration vsFTPd

rm -f /etc/vsftpd/vsftpd_user_conf/$USER

# Suppression de son dossier

rm -fr /home/users/$USER

echo "Utilisateur DETRUIT"

else

echo "L'utilisateur n'existe pas"

fi

Vérification du fonctionnement Enfin, nous pouvons lancer les scripts, vérifier la base de données, les dossiers et la connexion sur un

poste client afin de vérifier le fonctionnement des scripts avant et après suppression.

sh /root/script/ftp/add_ftpuser.sh

Nous pouvons vérifier le fonctionnement par une multitude de façon possible. Par exemple, sur le

client Windows, après avoir créé un user nommé « newo » grâce au script, nous pouvons lancer une

connexion FTP via Fillezilla, et nous connecter à son dossier web public_html via un explorateur

Internet à l’adresse https://srv1.newocomputer.lan/~newo/

Sur le serveur, nous pouvons vérifier la présence de la base de données MySQL et l’user créé.

Ainsi que l’entrée dans la table Vsftpd.

Et la création du dossier partager ainsi que du dossier public_html.

Page 34: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 34 HEH – Campus Technique

Sécurisation du serveur VSFTPd

Maintenant que vsFTPd, PAM et tous les services associés sont fonctionnels, nous pouvons sécuriser

notre serveur FTP en utilisant une connexion TLS au lieu du SSL.

Pour cela, nous créons un dossier qui contiendra notre certificat, et créons le certificat.

mkdir /etc/ssl/private

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out

/etc/ssl/private/vsftpd.pem

Ensuite, on retourne modifier le fichier vsftpd.conf en rajoutant les lignes suivantes.

#Active SSL

ssl_enable=YES

#Oblige de se connecter en sécurisé

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

#Autorise que TLS et pas SSL

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

#interdis de réutiliser le même certificat

require_ssl_reuse=NO

#Active le chiffrement du canal

ssl_ciphers=HIGH

On redémarre et teste la connexion sécurisée.

Page 35: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 35 HEH – Campus Technique

En plus du TLS, nous pouvons changer les ports de connexion pour que le trafic passe par un port

autre que les 20 et 21 par défaut. Pour ce faire, nous retournons éditer le fichier vsftpd.conf et

modifions le port d’écoute par un port choisi que nous ouvrirons plus tard dans l’iptables.

listen_port=3069

Nous définissons aussi la plage de port de renvoi des données et les rajouterons plus tard dans le

pare-feu.

pasv_min_port=3650

pasv_max_port=3660

Serveur NTP Installation d’un serveur de temps, pour que le serveur et toutes les machines du réseau soient à la

même heure.

Yum -y install ntp

On crée le dossier backup associé, copie le fichier original, puis on le modifie.

mkdir /root/backup/ntp

cp /etc/ntp.conf /root/backup/ntp/ntp.conf.old

vi /etc/ntp.conf

Dans le fichier, il faut décommenter les lignes ci-dessous afin d’ajouter la plage d’adresse réseau ainsi

que son broadcast.

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

Page 36: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 36 HEH – Campus Technique

broadcast 192.168.1.255

On démarre le service et on automatise son lancement.

Service ntpd start

chkconfig ntp on

Serveur SSH Nous installons les paquets du serveur SSH, un service de sécurité permettant de modifier plusieurs

variables importantes des systèmes. Nous les avons déjà, mais sinon, la commande est yum –y install

openssh-server openssh-clients.

On démarre le service si ce n’est pas fait, puis le met en lancement automatique

chkconfig sshd on

service sshd start

On crée le dossier backup associé, copie le fichier original, puis on le modifie.

mkdir /root/backup/ssh

cp /etc/ssh/sshd_config /root/backup/ssh/sshd_config.old

vi /etc/ssh/sshd_config

Dans le fichier, il faut modifier certaines valeurs.

PermitRootLogin no : root ne pourra plus être utilisé

AllowUsers newo : les utilisateurs séléctionnés sont autorisés

port 2200 : la modification de ce dernier, pour des raisons de sécurité

est recommandé par certains, vivement déconseillé par d’autre…

protocoles 2 : le protocole 2 est plus récent, il faut lui laisser cette valeur

On redémarre le service via service sshd restart

Installation de Clam Antivirus Tout comme sur Windows, avoir un antivirus est primordial pour se protéger des … virus. Nous allons

ici installer l’antivirus Clam pour Linux.

Page 37: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 37 HEH – Campus Technique

yum install clamav clamd

On le met à jour

freshclam

On met le service dans le démarrage automatique puis on le démarre pour la première fois.

Service clamd start

chkconfig clamd on

On crée un script qui va scanner quotidiennement le dossier /home.

vi /etc/cron.daily/scanhome

SCAN_DIR="/home" LOG_FILE="/var/log/clamav/manual_clamscan.log" /usr/bin/clamscan -i -r $SCAN_DIR >> $LOG_FILE

On modifie ses permissions pour qu’il devienne exécutable

chmod 755 /etc/cron.daily/scanhome

Page 38: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 38 HEH – Campus Technique

Backup Rsync Pour commencer, nous créons un nouveau disque dur physique via VmWare qui sera destiné a

stocker les sauvegardes. Ensuite, nous installons le package Rsync s’il ne l’est pas déjà.

Yum -y install rsync

Notre nouveau disque dur est nommé sdb, nous formatons sa totalité.

Mkfs -t ext4 /dev/sdb

Ensuite, nous allons dans le dossier racine du système et y créons un dossier destiné aux backup.

Cd /

mkdir /backupNewocomputer

Pour finir, nous montons ce dossier au disque sdb dans /,etc/fstab

Mount /dev/sdb /backupNewocomputer

Nous créons enfin le script de sauvegarde Rsync dans un dossier backup. Celui-ci permet de faire une

sauvegarde incrémentielle des dossiers /root, /home et /,etc. Les options définies permettent

d’utiliser verbose, le mode archive (copie les fichiers en préservant les liens, permissions, etc),

compresse les fichiers et supprime les fichiers présents dans le backup mais pas dans la source.

mkdir /root/script/backup

vi /root/script/backup/backupNewocomputer.sh

#!/bin/bash

rsync -avz --delete /root /backupNewocomputer

rsync -avz --delete /home /backupNewocomputer

rsync -avz --delete /etc /backupNewocomputer

On rend le script exécutable, puis on automatise son lacement tous les jours à 21h00 via crontab.

chmod 755 /root/script/backup/backupNewocomputer.sh

crontab -e

0 21 * * * /root/script/backup/backupNewocomputer.sh

Puis on reboot le service crontab et on vérifie le fonctionnement du backup en affichant l’espace

disque disponible sur le disque via df -H

Page 39: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 39 HEH – Campus Technique

Firewall On réactive le Firewall en acceptant les trafics des ports et services utilisés. Pour ce faire, nous créons

un script dans le dossier root.

Mkdir /root/script/fw

vi /root/script/fw/fw.sh

#!/bin/sh

# Vider les tables actuelles

iptables -F

# Vider les règles personnelles

iptables -X

# Interdire toute connexion entrante et sortante

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT DROP

# ---

# Ne pas casser les connexions etablies

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Autoriser loopback

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

# ICMP (Ping)

iptables -A INPUT -p icmp -j ACCEPT

iptables -A OUTPUT -p icmp -j ACCEPT

# ---

# SSH In

iptables -A INPUT -p tcp --dport 2200 -j ACCEPT

# SSH Out

iptables -A OUTPUT -p tcp --dport 2200 -j ACCEPT

# DNS In

iptables -A INPUT -p tcp --dport 53 -j ACCEPT

iptables -A INPUT -p udp --dport 53 -j ACCEPT

# DNS Out

Page 40: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 40 HEH – Campus Technique

iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

# DHCP in

iptables -A INPUT -p udp --sport 68 --dport 67 -j ACCEPT

# DHCP Out

iptables -A OUTPUT -p udp --sport 67 --dport 68 -j ACCEPT

# NTP Out

iptables -A OUTPUT -p udp --dport 123 -j ACCEPT

# HTTP + HTTPS Out

iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT

iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

# HTTP + HTTPS In

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

iptables -A INPUT -p tcp --dport 8443 -j ACCEPT

# FTP Out

iptables -A OUTPUT -p tcp --dport 3069 -j ACCEPT

iptables -A OUTPUT -p tcp --dport 3650:3660 -j ACCEPT

# FTP In

iptables -A INPUT -p tcp --dport 3069 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p tcp --dport 3650:3660 -j ACCEPT

#SAMBA in

iptables -A INPUT -p udp -m udp --dport 137 -j ACCEPT

iptables -A INPUT -p udp -m udp --dport 138 -j ACCEPT

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

iptables -A INPUT -m state --state NEW -m udp -p udp --dport 445 -j ACCEPT

#NFS In

iptables -A INPUT -p udp -m multiport --dports 10053,111,2049,32769,875,892 -m state --state

NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dports 10053,111,2049,32803,875,892 -m state --state

NEW,ESTABLISHED -j ACCEPT

#NFS Out

iptables -A OUTPUT -p udp -m multiport --sports 10053,111,2049,32769,875,892 -m state --state

ESTABLISHED -j ACCEPT

Page 41: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 41 HEH – Campus Technique

iptables -A OUTPUT -p tcp -m multiport --sports 10053,111,2049,32803,875,892 -m state --state

ESTABLISHED -j ACCEPT

# Rsync in

iptables -A INPUT -p tcp --dport 873 -m state --state NEW -j ACCEPT

# Rsync out

iptables -A OUTPUT -p tcp --dport 873 -m state --state NEW -j ACCEPT

#Enregistrer les paramètres

service iptables save

#liste les règles

iptables -L -v

On rend le fichier exécutable

chmod +x /root/script/fw/fw.sh

Ajoute le script à /etc/rc.local pour qu’il se lance automatiquement au démarrage.

Sh /root/script/fw/fw.sh

Désactivation des services inutiles On affiche la liste des services qui se lancent au démarrage

Chkconfig –list

Nous pouvons maintenant désactiver les services inutiles via la commande, afin de gagner en

sécurité et en performance.

chkconfig cups off

chkconfig NetworkManager off

chkconfig bluetooth off

Page 42: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 42 HEH – Campus Technique

Quota Afin d’éviter que les utilisateurs du système et de vsFTPd ne surchargent le disque en donnée, nous

mettons en place des quotas simples. Pour se faire, n’ayant que la partition / de montée et pas

/home, les quotas seront sur la racine, donc tout le disque.

On modifie donc le fichier /,etc/fstab en implémentant les quota users et groupe.

On démonte/monte le dossier racine, ou rebootons le système, puis vérifions que les quotas sont

activés.

Mount -o remount /

mount | grep /

On crée les quota

Quotacheck -vugm -f /

quotaon -avug

Nous pouvons maintenant créer les quota. Ils seront de 100 000 Kb pour la limite dure, et 90 000 Kb

pour la limite douce, pour le groupe « Users » qui définit tous les users système, et l’user « vsftpd »

qui définit l’utilisateur que l’on a créé pour vsftpd.

Edquota -u vsftpd

Edquota -g users

Nous pouvons vérifier l’utilisation disque via repquota -as -g

Page 43: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 43 HEH – Campus Technique

LVM On installe les paquets nécessaires pour les lvm

Yum -y install lvm2

On formate nos deux nouveaux disques durs (sdc et sdd)

Mkfs /dev/sdc

mkfs /dev/sdd

On crée les deux volumes physiques et on les met dans un groupe de volume.

Pvcreate /dev/sdc

pvcreate /dev/sdd

vgcreate mvg /dev/sdc /dev/sdd

On vérifie que c’est fait avec vgdisplay. On peut voir que le groupe fait bien 10 Go.

On crée un volume logique de 8Go et un autre de 1.9 Go, puis on les formate.

Page 44: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 44 HEH – Campus Technique

lvcreate –n VOl1 –L 8g mvg

lvcreate –n VOl2 –L 1.9g mvg

mkfs –t ext4 /dev/mvg/VOl1

mkfs –t ext4 /dev/mvg/VOl2

On les vérifie avec lvdisplay.

On crée les dossiers volumes à la racine afin de pouvoir les monter dans le fstab après, puis on ajoute

les lignes requises dans le fstab.

mkdir /LVM1

mkdir LVM2

/dev/mvg/Vol1 /LVM1 ext4 defaults 0 0

/dev/mvg/Vol2 /LVM2 ext4 defaults 0 0

Nous pouvons monter et vérifier notre montage de LVM avec mount -va et df -H.

Page 45: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 45 HEH – Campus Technique

RAID Pour avoir encore plus de sécurité au niveau des données du serveur, nous implémentons un RAID 1

sur le disque de backup sdb et un nouveau disque à créer, sde.

Le RAID 1 ou « mirroring » permet de protéger les données dues à une panne du disque dur en

copiant les données sur chaque disque. Ainsi, en cas de perte d’un disque, l’autre sera utilisé sans

perte et automatiquement.

Mkfs -t ext4 /dev/sde

Le RAID sera fait grâce à mdadm.

Yum -y install mdadm

On formate les disques puis on vérifie.

fdisk /dev/sdb

fdisk /dev/sde

mdadm -E /dev/sd[b-e]

On crée un volume nommé md0 qui contient le RAID1

mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sdb /dev/sde

cat /proc/mdstat

On vérifie que le RAID est fonctionnel

mdadm -E /dev/sd[b-e]

mdadm --detail /dev/md0

Il faut maintenant y créer un système de fichier et monter son dossier racine en tant que RAID1 dans

le fstab.

mkfs.ext4 /dev/md0

mkdir /mnt/raid1

mount /dev/md0 /mnt/raid1/

vi /,etc/fstab

/dev/md0 /mnt/raid1 ext4 defaults 0 0

On le monte et vérfiie avec mount -va, puis on sauvegarde la configuration RAID dans mdadm.conf

mdadm --detail --scan --verbose >> /etc/mdadm.conf

Page 46: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 46 HEH – Campus Technique

Conclusion La mise au point de ce serveur m’a permis d’améliorer mes connaissances dans ce domaine, mais

surtout de remarquer qu’il est très dur de tenir une deadline : en raison des problèmes et autres

bugs rencontrés en cours de chemin qui ont considérablement ralenti le développement, la durée du

projet que je m’étais fixée n’a quasiment pas su être tenue.

Page 47: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 47 HEH – Campus Technique

Références Cours et laboratoire de Télécommunication et réseaux

http://fr.wikipedia.org

http://linux.developpez.com/vsftpd/

http://www.debianaddict.org/article47.html

http://www.bootyourbrain.com/utilisation/centos-serveur-web-

apache-vsftpd/

http://www.krizna.com/centos/how-install-phpmyadmin-centos-6/

https://www.unixmen.com/setting-dns-server-centos-7/

http://denisrosenkranz.com/tuto-mettre-en-place-un-serveur-web-

sous-centos-apache-mysql-php-vsftpd/

http://www.smnet.fr/centos/centos-dns.html

http://www.krizna.com/centos/setup-nfs-server-centos-6/

https://access.redhat.com/documentation/en-

US/Red_Hat_Enterprise_Linux/4/html/System_Administration_Gui

de/Mounting_NFS_File_Systems-

Mounting_NFS_File_Systems_using_autofs.html

http://www.linux-

france.org/prj/edu/archinet/systeme/index_monopage.html

https://www.howtoforge.com/tutorial/setting-up-an-nfs-server-and-

client-on-centos-7/

http://www.golinuxhub.com/2012/08/dns-configuration-in-

centos.html

https://wiki.centos.org/HowTos

http://www.commentcamarche.net/contents/1027-mise-en-place-

de-samba-sous-linux

https://openclassrooms.com/courses/un-serveur-d-hebergement-

multiutilisateur-sous-linux

https://access.redhat.com/documentation/en-

US/Red_Hat_Enterprise_Linux/6/html/Managing_Confined_Service

s/chap-Managing_Confined_Services-Samba.html

http://www.commentcamarche.net/faq/29784-securiser-son-acces-

ssh

https://www.centosblog.com/how-to-install-clamav-and-configure-

daily-scanning-on-centos/

https://www.adayinthelifeof.nl/2012/03/12/why-putting-ssh-on-another-

port-than-22-is-bad-idea/

Page 48: Linux CentOS 6 - thomasdelcampe.be · serveur sous CentOS 6.9 qui devra interagir avec des autres PC sous la même distribution ainsi que Windows. Grâce à ça, l’entreprise pourra

Travail de TR2TR1

Linux CentOS 6.9

Delcampe Thomas

2ème IRT – Sécurité 1 48 HEH – Campus Technique

http://www.krizna.com/centos/install-configure-dhcp-server-centos-

6/

http://debian-facile.org/doc:systeme:quota

https://www.linuxtechi.com/enable-user-group-disk-quota-on-

centos-7-rhel-7/

https://www.tecmint.com/create-raid1-in-linux/