Réaliser les travaux pratiques ci-dessous.
Pour accéder aux ressources du réseau, un système hôte doit voir un certain nombre des paramètres de sa pile TCP/IP configurés :
La configuration IP peut être effectuée temporairement à l’aide de la
commande ip
. La configuration DNS doit être écrite dans le fichier
/etc/resolv.conf
. Les commandes ping
et dig
(ou host
à
défaut) sont très largement utilisées pour effectuer le diagnostic du
fonctionnement IP et DNS.
Pour garantir la pérennité de la configuration IP, celle-ci est également enregistrée dans les fichiers de configuration utilisés à l’initialisation du système pour le démarrage du service réseau :
/etc/hosts
/etc/sysconfig/network
NETWORKING
, enregistrement du
nom d’hôte (HOSTNAME
) et de l’adresse de la passerelle
(GATEWAY
),/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE
BOOTPROTO
dhcp
ou static
HWADDR
IPADDR
NETMASK
NETWORK
BROADCAST
ONBOOT
Exemple :
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:11:22:33:44:55"
IPADDR="172.17.1.1"
NETMASK="255.0.0.0"
BROADCAST="172.255.255.255"
ONBOOT="yes"
SSH est à la fois un protocole réseau et une application. Ils permettent d’obtenir — en toute sécurité — un shell (ou interpréteur de commandes) à distance sur une machine proposant ce service (c’est-à-dire sur laquelle « tourne » la partie serveur de l’application).
Il faut — évidemment — disposer d’un compte sur le serveur distant ; alors il est possible de s’authentifier avec un mot de passe (si le serveur le permet), voire — mieux ! — en utilisant une clé de chiffrement asymétrique.
Les principes de base sont les suivants :
Au démarrage, le BIOS se charge de lire le MBR (Master Boot Record), d’une taille de 512 octets. La routine de démarrage contenue dans le MBR (avec la table des partitions) lance le chargeur d’amorçage, et ce dernier à son tour lance le noyau (kernel) du système d’exploitation en usage sur l’ordinateur.
Un disque RAM d’initialisation (image disque montée en mémoire vive) permet d’avoir un noyau minimal, les pilotes requis au fonctionnement du système étant chargés par le noyau depuis le disque monté en RAM.
Le noyau exécute ensuite un premier processus init
(PID 1) qui se
charge de l’initialisation séquentielle du système et des services.
Le programme init
issu dUnix System V (à ne pas confondre à celui
des BSD) est compatible avec la majorité des distributions Linux.
Cependant, certaines utilisent des versions alternatives, comme
upstart
sur Ubuntu.
Le fichier de configuration dinit est /etc/inittab
définit le
niveau de fonctionnement attendu du système (runlevel), situé entre
0 et 6 (0 : arrêt, 1 : monoutilisateur, 2 à 5 : personnalisable, 6 :
redémarrage) auquel sont associés des programmes et services à
démarrer et arrêter. À chaque runlevel correspond un répertoire
/etc/rcX.d
qui contient des liens symboliques vers des scripts
situés dans /etc/init.d
. Les scripts cibles sont lancés suivant
l’ordre indiqué par le nom de leur lien, et avec un argument
correspondant à l’action souhaitée (S : start, K : kill).
Aujourd’hui la plupart des distributions (dans l’ordre chronologique : Gentoo, Debian, Archlinux, openSuse, Mandriva, Fedora) ont migré vers systemd qui permet une gestion plus fine des dépendances entre les services, un démarrage en parallèle, une utilisation moindre des scripts et la prise en charge des groupes de contrôle (cgroups).
Là où le processus init
de system V utilisait un démarrage
séquentiel des services, systemd
assure un démarrage parallèle des
services, tout en gérant les dépendances à un niveau très fin. Ainsi
si le service A requiert que le service B ait ouvert une socket,
systemd
sera capable de démarrer A dès que la socket est
disponible, potentiellement avant la fin du démarrage de B.
systemd
introduit plusieurs niveaux pour déterminer la
disponibilité d’un service :
dbus
Le services sont généralement démarrés par le gestionnaire d’initialisation. Toutefois, il est possible de les gérer à la main depuis la ligne de commande.
Les scripts utilisés par init
sont situés dans le répertoire
/etc/init.d
et permettent d’arrêter ou démarrer manuellement les
services. La commande service
, si elle est présente, permet de
réaliser ces mêmes opérations.
systemd
est piloté par la commande systemctl
. Les services sont
gérés par systemd
sous la forme d’unité de type… service. Il existe
d’autres types d’unités (target
, mount
, automount
, device
,
slice
, path
, scope
, socket
, timer
, snapshot
, swap
).
La commande systemctl -t service list-units
permet d’afficher les
services connus. La commande systemctl start <nom_du_service>
permet
de démarrer le service, systemctl status <nom_du_service>
d’afficher
son état, systemctl enable <nom_du_service>
d’activer le démarrage
automatique du service…
Un autre type d’unité essentiel est target
. La cible par défaut,
visée au démarrage du système est généralement un lien symbolique. La
commande systemctl show -p Wants -p Requires <target>
permet
d’afficher les besoins et pré-requis d’une cible.
De nombreux autres concepts et commandes étendent la portée de
systemd
(journalctl
, systemd-cgls
, systemd-cgtop
)
Pour aller (beaucoup) plus loin : Blog de Lennart Poettering,
développeur du controversé systemd
Les services parmi les plus utiles sont généralement rendus accessibles au travers du réseau IP. Leur bon fonctionnement requiert une configuration réseau opérante.
Le bon fonctionnement des services peut être vérifié :
ps
,ss
(socket
statistics),dhclient
.)lpasrsi.net
et le
réseau IP 172.17.0.0/16
. Quelles commandes avez-vous
utilisées ?
~/.ssh/id_rsa
) et les
permissions sur le fichier~/.ssh/id_rsa
) et les
permissions sur le fichierssh-copy-id
, scp
, copier/coller, voire un tiers de confiance
ou disposant des accès requisAfin de limiter la visibilité du service SSH, on souhaite déporter le service sur un port atypique (ex : 1337)
Préliminaire : pour éviter tout conflit de ce changement de configuration avec les outils de sécurité intégrés
sudo setenforce 0
sudo systemctl stop
firewalld
Première phase :
Deuxième phase, en possession d’une procédure donnée :
Autres éléments de sécurisation :
who
, id
, ls -ld ~
, getent
passwd asrsi
, getent group users
, getent passwd www-data
,
getent group www-data
asrsi
. Celui-ci doit pouvoir
lire et écrire tous les fichiers.uid www-data
) doit pouvoir écrire dans le
sous-répertoire data
de l’application. Quelle est la solution
à cette problématique ?Préliminaire : pour éviter tout conflit de ce changement de configuration avec les outils de sécurité intégrés
sudo setenforce 0
sudo systemctl stop
firewalld
apache2
)Préliminaire : pour éviter tout conflit de ce changement de configuration avec les outils de sécurité intégrés
sudo setenforce 0
sudo systemctl stop
firewalld
bind
et bind-utils
/etc/named.conf
listen-on
)directory
)allow-query
)lpasrsi.net
secondaire, le maître étant
172.17.100.128 :zone "lpasrsi.net" IN {
type slave;
file "lpasrsi.net";
masters { 172.17.100.128; };
};
named-checkconf
et
named-checkzone
pour valider la configurationnamed
systemctl
status -l named
dig
Voir aussi :
Le gestionnaire de paquetages des distributions de la lignée Redhat
est yum
(Yellowdog Updater Modified). C’est une surcouche de
l’outil de gestion de paquetage unitaire rpm
qui permet de gérer :
yum check-update
),yum search
ou
yum provides
par exemple),yum install
),yum update
),yum upgrade
).Tout système Linux enregistre son activité et celle des processus
fonctionnant en tâche de fond dans des journaux (log). Ceux-ci sont
disponibles sous forme de simples fichiers dans le répertoire
/var/log
.
Un processus dédié à la journalisation, appelé démon de journalisation
système (le plus souvent syslogd
) est chargé de recevoir les
enregistrements à journaliser. La cible d’un enregistrement est
déterminée par la configuration du démon.
La journalisation des événements est une technique de sécurité majeure. Elle permet d’effectuer des analyses diverses, en temps réel ou a posteriori, en corrélant les journaux avec d’autres événements. La mise en œuvre d’une centralisation de la journalisation permet d’accéder à des niveaux fonctionnels et de sécurité optimaux.
Sur un système enregistrant les événements dans des fichiers, la
connaissance des commandes de recherche et de manipulation de texte et
de fichiers texte est essentiel pour l’exploitation des journaux :
grep
et tail
principalement ; voire cut
, awk
, ou – mieux
encore – perl
.
Last edited by Olm, 2017-10-20 15:03:09