sysadmin : début de découpage

This commit is contained in:
Jérémy Lecour 2017-06-19 16:46:03 +02:00 committed by Jérémy Lecour
parent 0f58606a74
commit 61e1db092e

View file

@ -14,23 +14,23 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="../css/reveal.css"> <link rel="stylesheet" href="reveal.js/css/reveal.css">
<link rel="stylesheet" href="../css/theme/beige.css" id="theme"> <link rel="stylesheet" href="reveal.js/css/theme/beige.css" id="theme">
<!-- Theme used for syntax highlighting of code --> <!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="../lib/css/zenburn.css"> <link rel="stylesheet" href="reveal.js/lib/css/zenburn.css">
<!-- Printing and PDF exports --> <!-- Printing and PDF exports -->
<script> <script>
var link = document.createElement( 'link' ); var link = document.createElement( 'link' );
link.rel = 'stylesheet'; link.rel = 'stylesheet';
link.type = 'text/css'; link.type = 'text/css';
link.href = window.location.search.match( ../print-pdf/gi ) ? '../css/print/pdf.css' : '../css/print/paper.css'; link.href = window.location.search.match( /print-pdf/gi ) ? 'reveal.js/css/print/pdf.css' : 'reveal.js/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link ); document.getElementsByTagName( 'head' )[0].appendChild( link );
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../lib/js/html5shiv.js"></script> <script src="reveal.js/lib/js/html5shiv.js"></script>
<![endif]--> <![endif]-->
</head> </head>
@ -52,15 +52,22 @@ crontab
https://wiki.evolix.org/HowtoCron https://wiki.evolix.org/HowtoCron
</section> </section>
<section>
ntpd ntpd
https://wiki.evolix.org/HowtoNTP https://wiki.evolix.org/HowtoNTP
</section>
<section>
systemd systemd
https://wiki.evolix.org/HowtoSystemd https://wiki.evolix.org/HowtoSystemd
</section>
<section>
Postfix Postfix
https://wiki.evolix.org/HowtoPostfix https://wiki.evolix.org/HowtoPostfix
</section>
<section>
syslog syslog
Les journaux systèmes sont gérés par syslog, un protocole qui permet de gérer les messages système de façon centralisé. syslog est précisé dans la RFC 3164Il est utilisé sous la forme d'un daemon syslogd chargé de rassembler les messages envoyés par diverses applications (messages kernel, user, daemon, mail, etc.) triés par une facility : LOG_KERN, LOG_CRON, LOG_DAEMON, LOG_MAIL, LOG_AUTH, etc. et un certain niveau de severity : LOG_EMERG, LOG_ALERT, LOG_ERR, LOG_WARNING, etc. Les messages reçus sont répartis dans différents fichiers situés dans le répertoire /var/log/ ou d'autres façons (serveur syslog distant, terminal, etc.). Les journaux systèmes sont gérés par syslog, un protocole qui permet de gérer les messages système de façon centralisé. syslog est précisé dans la RFC 3164Il est utilisé sous la forme d'un daemon syslogd chargé de rassembler les messages envoyés par diverses applications (messages kernel, user, daemon, mail, etc.) triés par une facility : LOG_KERN, LOG_CRON, LOG_DAEMON, LOG_MAIL, LOG_AUTH, etc. et un certain niveau de severity : LOG_EMERG, LOG_ALERT, LOG_ERR, LOG_WARNING, etc. Les messages reçus sont répartis dans différents fichiers situés dans le répertoire /var/log/ ou d'autres façons (serveur syslog distant, terminal, etc.).
@ -82,7 +89,7 @@ Le logiciel logrotate permet de gérer les journaux système et logiciel de faç
Les journaux sont des fichiers qui contiennent des informations d'activité datée. Ils sont essentiels pour un serveur pour de nombreuses raisons : vérifier des actions passées, générer des statistiques, déboguer un programme. La vérification des actions passées est notamment importante en cas de problème (piratage, service défectueux). La justice oblige également à conserver certains journaux pendant une certaine durée. Un flou concerne ce qu'il faut réellement conserver (apparemment seules les informations d'entêtes mais pas le contenu en lui-même) et la durée (cela varie entre 3 mois, 1 an et 3 ans si l'on se base sur les lois françaises ou européennes). Des décrets d'application devraient éclaircir ces points dans les prochains mois.\\ Les journaux sont des fichiers qui contiennent des informations d'activité datée. Ils sont essentiels pour un serveur pour de nombreuses raisons : vérifier des actions passées, générer des statistiques, déboguer un programme. La vérification des actions passées est notamment importante en cas de problème (piratage, service défectueux). La justice oblige également à conserver certains journaux pendant une certaine durée. Un flou concerne ce qu'il faut réellement conserver (apparemment seules les informations d'entêtes mais pas le contenu en lui-même) et la durée (cela varie entre 3 mois, 1 an et 3 ans si l'on se base sur les lois françaises ou européennes). Des décrets d'application devraient éclaircir ces points dans les prochains mois.\\
~\\ ~\\
Sous Debian, les journaux se trouvent généralement dans le répertoire \textit{/var/log}. On va distinguer les journaux systèmes et les journaux applicatifs. Les journaux systèmes sont gérés par le démon SYSLOG\footnote{\url{ftp://ftp.rfc-editor.org/in-notes/rfc3164.txt}}. Sa configuration se trouve dans le fichier \textit{syslog.conf}. Voici quelques ligne extraites de ce fichier~: Sous Debian, les journaux se trouvent généralement dans le répertoire \textit{/var/log}. On va distinguer les journaux systèmes et les journaux applicatifs. Les journaux systèmes sont gérés par le démon SYSLOG\footnote{\url{ftp://ftp.rfc-editor.org/in-notes/rfc3164.txt}}. Sa configuration se trouve dans le fichier \textit{syslog.conf}. Voici quelques ligne extraites de ce fichier~:
\begin{verbatim} \begin{verbatim}
daemon.* -/var/log/daemon.log daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log kern.* -/var/log/kern.log
mail.* -/var/log/mail.log mail.* -/var/log/mail.log
@ -107,28 +114,35 @@ Voici les fichiers pincipaux générés par SYSLOG : \\
~\\ ~\\
Les journaux applicatifs sont générés par chaque application. Ils sont souvent dans un répertoire du nom de l'application situé dans \textit{/var/log}.\\ Les journaux applicatifs sont générés par chaque application. Ils sont souvent dans un répertoire du nom de l'application situé dans \textit{/var/log}.\\
~\\ ~\\
</section>
<section>
log2mail log2mail
Surveiller les journaux avec log2mail Surveiller les journaux avec log2mail
Pour surveiller précisement un fichier journal et recevoir des alertes par mail si certains termes apparaissent dans ce fichier, vous pouvez utiliser le logiciel log2mail. Sa configuration se déroule dans le fichier /etc/log2mail/config/default. Par exemple, si vous voulez préciser que vous voulez recevoir un mail dès que le terme fatal apparaît dans le fichier /var/log/mail.log, ajoutez ces lignes : Pour surveiller précisement un fichier journal et recevoir des alertes par mail si certains termes apparaissent dans ce fichier, vous pouvez utiliser le logiciel log2mail. Sa configuration se déroule dans le fichier /etc/log2mail/config/default. Par exemple, si vous voulez préciser que vous voulez recevoir un mail dès que le terme fatal apparaît dans le fichier /var/log/mail.log, ajoutez ces lignes :
file = /var/log/mail.log file = /var/log/mail.log
pattern = "fatal" pattern = "fatal"
mailto = maintenance@example.com mailto = maintenance@example.com
template = /etc/log2mail/template.mail-fatal template = /etc/log2mail/template.mail-fatal
Dans ce cas, on devra avoir un fichier /etc/log2mail/template.mail-fatal qui définit la structure du mail qui sera envoyé. Voici un exemple simple : Dans ce cas, on devra avoir un fichier /etc/log2mail/template.mail-fatal qui définit la structure du mail qui sera envoyé. Voici un exemple simple :
From: %f From: %f
To: %t To: %t
Subject: [LOG2MAIL] Erreur fatale pour mail.log Subject: [LOG2MAIL] Erreur fatale pour mail.log
Nous avons reconnu le terme "%m" dans "%F" %n fois : %l Nous avons reconnu le terme "%m" dans "%F" %n fois : %l
</section>
<section>
logcheck logcheck
https://wiki.evolix.org/HowtoLogcheck https://wiki.evolix.org/HowtoLogcheck
</section>
<section>
fail2ban fail2ban
https://wiki.evolix.org/HowtoFail2Ban https://wiki.evolix.org/HowtoFail2Ban
</section>
<section>
logrotate logrotate
L'un des points essentiels est la rotation des journaux, c'est-à-dire l'action de fermer le journal actuel (et éventuellement le compresser) et d'en ouvrir un autre. L'un des points essentiels est la rotation des journaux, c'est-à-dire l'action de fermer le journal actuel (et éventuellement le compresser) et d'en ouvrir un autre.
@ -137,41 +151,53 @@ Logrotate est exécuté tous les jours (cron.daily)
https://wiki.evolix.org/HowtoLogrotate https://wiki.evolix.org/HowtoLogrotate
Note : mentionner l'existence de savelog. L'option "-d" de savelog permet d'utiliser la date lors de la rotation des journaux et de ne pas les effacer. On pourra donc ajouter ses propres règles dans les scripts cron pour faire une sauvegarde distante des journaux (éventuellement dans une base de données). Pour des serveurs dédiés (applications clés), on peut augmenter la fréquence des rotations et des sauvegardes distantes, mais également utiliser des scripts afin de détecter toutes alertes ou anomalies et les envoyer par courrier électronique ou même SMS. Note : mentionner l'existence de savelog. L'option "-d" de savelog permet d'utiliser la date lors de la rotation des journaux et de ne pas les effacer. On pourra donc ajouter ses propres règles dans les scripts cron pour faire une sauvegarde distante des journaux (éventuellement dans une base de données). Pour des serveurs dédiés (applications clés), on peut augmenter la fréquence des rotations et des sauvegardes distantes, mais également utiliser des scripts afin de détecter toutes alertes ou anomalies et les envoyer par courrier électronique ou même SMS.
</section>
<section>
intro Git intro Git
HowtoGit HowtoGit
</section>
<section>
Monitoring Monitoring
Il existe de nombreux programmes évolués permettant de générer des courbes et statistiques. Il existe de nombreux programmes évolués permettant de générer des courbes et statistiques.
Citons Nagios, Munin, etc. Citons Nagios, Munin, etc.
Le plus connu d'entre eux est certainement Nagios qui permet de surveiller de nombreux services (SMTP, POP3, HTTP, NNTP, PING, etc.) mais également les ressources (charge processeur, utilisation des disques, etc.). Le plus connu d'entre eux est certainement Nagios qui permet de surveiller de nombreux services (SMTP, POP3, HTTP, NNTP, PING, etc.) mais également les ressources (charge processeur, utilisation des disques, etc.).
La mise en place de Nagios (ou d'un équivalent) pour un nombre de serveurs dépassant la dizaine est fortement conseillée. La mise en place de Nagios (ou d'un équivalent) pour un nombre de serveurs dépassant la dizaine est fortement conseillée.
</section>
<section>
Sécurité Sécurité
</section>
<section>
réseau / iptables réseau / iptables
Couche physique : Ethernet Couche physique : Ethernet
(adresses MAC) (adresses MAC)
Couche réseau : IPv4 Couche réseau : IPv4
(adressage, HostID, NetID, Masque, (adressage, HostID, NetID, Masque,
Brodcast, protocole ARP, ICMP) Brodcast, protocole ARP, ICMP)
Couche transport : TCP, UDP Couche transport : TCP, UDP
(notion de ports, mode connecté) (notion de ports, mode connecté)
Couche application : HTTP, SMTP, DNS, etc. Couche application : HTTP, SMTP, DNS, etc.
</section>
<section>
intro ansible intro ansible
</section>
<section>
ssh ssh
</section>
<section>
sauvegardes sauvegardes
</section>
<section>
Gestion des droits Gestion des droits
Sous les systèmes de type Unix ou Linux, il existe plusieurs types de fichiers: les fichiers, les répertoires, les liens symboliques, les fichiers-périphériques. Sous les systèmes de type Unix ou Linux, il existe plusieurs types de fichiers: les fichiers, les répertoires, les liens symboliques, les fichiers-périphériques.
Un fichier appartient à un utilisateur (en fait un numéro d'utilisateur) et à un groupe (en fait un numéro de groupe). Un fichier appartient à un utilisateur (en fait un numéro d'utilisateur) et à un groupe (en fait un numéro de groupe).
@ -203,26 +229,33 @@ Notation décimale :
umask : umask :
- Pour gérer droit niveau utilisateurs : commande umask - Pour gérer droit niveau utilisateurs : commande umask
Fixé dans le fichier profile ou bashrc (local ou général...) Fixé dans le fichier profile ou bashrc (local ou général...)
</section>
<section>
NFS NFS
</section>
<section>
DRBD DRBD
</section>
<section>
LVM LVM
</section>
<section>
Virtualisation Virtualisation
</section>
<section>
Conteneur Conteneur
</section>
<section>
evolinux evolinux
</section>
<section>
auth auth
Historiquement sous Unix, l'authentification est gérée par une liste des utilisateurs avec les mots de passe chiffrés accessible à tous, à savoir le fameux fichier /etc/passwd accessible en lecture et la commande passwd « set-uid root » Historiquement sous Unix, l'authentification est gérée par une liste des utilisateurs avec les mots de passe chiffrés accessible à tous, à savoir le fameux fichier /etc/passwd accessible en lecture et la commande passwd « set-uid root »
@ -240,13 +273,13 @@ Il se trouve dans le répertoire /etc/skel/
Les utilisateurs sont identifiés par leur nom de compte et par leur appartenance à un groupe par défaut(informations dans /etc/passwd). En plus, les utilisateurs peuvent appartenir à d'autres groupes (informations /etc/group). Les utilisateurs sont identifiés par leur nom de compte et par leur appartenance à un groupe par défaut(informations dans /etc/passwd). En plus, les utilisateurs peuvent appartenir à d'autres groupes (informations /etc/group).
jdoe@serveur:~$ whoami jdoe@serveur:~$ whoami
jdoe jdoe
jdoe@serveur:~$ groups jdoe@serveur:~$ groups
jdoe dialout cdrom floppy audio video plugdev jdoe dialout cdrom floppy audio video plugdev
jdoe@serveur:~$ id jdoe@serveur:~$ id
uid=1000(jdoe) gid=1000(jdoe) groupes=20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),1000(jdoe) uid=1000(jdoe) gid=1000(jdoe) groupes=20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),1000(jdoe)
jdoe@serveur:~$ jdoe@serveur:~$
Restriction au niveau des procédures de login : Restriction au niveau des procédures de login :
@ -270,7 +303,7 @@ foo:$1$mYploS2J$uSouKZPBjUF6D094HPgGj/:13853:0:99999:7:::
· nom de connexion de l´utilisateur (« login ») · nom de connexion de l´utilisateur (« login »)
· mot de passe chiffré · mot de passe chiffré
· nombre de jours, comptés à partir du 1er janvier 1970, · nombre de jours, comptés à partir du 1er janvier 1970,
depuis le dernier changement de mot de passe depuis le dernier changement de mot de passe
· nombre de jours à attendre avant de pouvoir changer le mot de passe · nombre de jours à attendre avant de pouvoir changer le mot de passe
· nombre de jours après lesquels le mot de passe doit être changé · nombre de jours après lesquels le mot de passe doit être changé
@ -325,7 +358,7 @@ hosts: files dns
PAM PAM
Mode de fonctionnement très modulaire rendant transparent à l'application l'utilisation de tel ou tel système d'authentification. Mode de fonctionnement très modulaire rendant transparent à l'application l'utilisation de tel ou tel système d'authentification.
Des modules PAM existent pour NIS, LDAP, Kerberos, rendant ainsi les trois systèmes d'authentification interchangeables sans que cela nécessite une reconfiguration des logiciels en eux-même ou encore une recompilation des services. Des modules PAM existent pour NIS, LDAP, Kerberos, rendant ainsi les trois systèmes d'authentification interchangeables sans que cela nécessite une reconfiguration des logiciels en eux-même ou encore une recompilation des services.
- Répertoire des fichiers de configuration: - Répertoire des fichiers de configuration:
/etc/pam.d/ /etc/pam.d/
@ -360,17 +393,20 @@ Exemple /etc/pam.d/login :
password required pam_cracklib.so retry=3 minlen=6 difok=3 password required pam_cracklib.so retry=3 minlen=6 difok=3
password required pam_unix.so use_authtok nullok md5 password required pam_unix.so use_authtok nullok md5
session required pam_unix.so session required pam_unix.so
</section>
ACL/QUOTA <section>
TODO
ACL/QUOTA
TODO
</section>
</div> </div>
</div> </div>
<script src="../lib/js/head.min.js"></script> <script src="reveal.js/lib/js/head.min.js"></script>
<script src="../js/reveal.js"></script> <script src="reveal.js/js/reveal.js"></script>
<script> <script>
@ -385,12 +421,12 @@ TODO
// More info https://github.com/hakimel/reveal.js#dependencies // More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [ dependencies: [
{ src: '../lib/js/classList.js', condition: function() { return !document.body.classList; } }, { src: 'reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: '../plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, { src: 'reveal.js/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: '../plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, { src: 'reveal.js/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: '../plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }, { src: 'reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: '../plugin/zoom-js/zoom.js', async: true }, { src: 'reveal.js/plugin/zoom-js/zoom.js', async: true },
{ src: '../plugin/notes/notes.js', async: true } { src: 'reveal.js/plugin/notes/notes.js', async: true }
] ]
}); });