Post on 12-Sep-2018
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
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
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
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.
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
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.
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.
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
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
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
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.
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
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
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.
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
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
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
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
Travail de TR2TR1
Linux CentOS 6.9
Delcampe Thomas
2ème IRT – Sécurité 1 19 HEH – Campus Technique
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 thomas@gamingtest.fr : 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.
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
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
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(); ?>
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
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.
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
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,
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
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
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.
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
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;"
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.
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.
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
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.
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
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
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
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
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
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
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.
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.
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
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.
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/
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/