Cybersécurité : Lynis
Présentation
Lynis est un outil d'audit système sous Unix/Linux. Il scanne le système à la recherche d'informations sur la sécurité, d'informations générales, il cherche les logiciels installés, les configurations, les problèmes de sécurités, etc... Il est très utilisé pour les audits de sécurité.
J'utilise la version 2.7.3, dernière en date lors de l'écriture de cet article (avril 2019).
Mise en place
Installation
Lynis n'as pas besoin d'une installation. On peut lui faire un dossier dans /usr/local/lynis. On va ensuite le télécharger avec wget et le décompresser.
root@Justine-pc:~# mkdir /usr/local/lynis root@Justine-pc:~# cd /usr/local/lynis root@Justine-pc:/usr/local/lynis# wget https://downloads.cisofy.com/lynis/lynis-2.7.3.tar.gz --2019-04-07 12:28:44-- https://downloads.cisofy.com/lynis/lynis-2.7.3.tar.gz Résolution de downloads.cisofy.com (downloads.cisofy.com)… 2a01:7c8:aac2:37b::1, 37.97.194.171 Connexion à downloads.cisofy.com (downloads.cisofy.com)|2a01:7c8:aac2:37b::1|:443… connecté. requête HTTP transmise, en attente de la réponse… 200 OK Taille : 282609 (276K) [application/octet-stream] Enregistre : «lynis-2.7.3.tar.gz» lynis-2.7.3.tar.g 100%[==========>] 275,99K 1,37MB/s ds 0,2s 2019-04-07 12:28:44 (1,37 MB/s) - «lynis-2.7.3.tar.gz» enregistré [282609/282609] root@Justine-pc:/usr/local/lynis# tar -xvf lynis-2.7.3.tar.gz
Les bases de l'utilisation
Il faut être root pour utiliser Lynis, car celui-ci écrit vers /var/log/lynis.log. On va d'abord le lancer sans arguments pour voir son aide :
root@Justine-pc:/usr/local/lynis# cd lynis root@Justine-pc:/usr/local/lynis/lynis# ./lynis [ Lynis 2.7.3 ] ################################################################################ Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under the terms of the GNU General Public License. See the LICENSE file for details about using this software. 2007-2019, CISOfy - https://cisofy.com/lynis/ Enterprise support available (compliance, plugins, interface and tools) ################################################################################ [+] Initializing program ------------------------------------ Usage: lynis command [options] Command: audit audit system : Perform local security scan audit system remote <host> : Remote security scan audit dockerfile <file> : Analyze Dockerfile show show : Show all commands show version : Show Lynis version show help : Show help update update info : Show update details Options: --no-log : Don't create a log file --pentest : Non-privileged scan (useful for pentest) --profile <profile> : Scan the system with the given profile file --quick (-Q) : Quick mode, don't wait for user input Layout options --no-colors : Don't use colors in output --quiet (-q) : No output --reverse-colors : Optimize color display for light backgrounds Misc options --debug : Debug logging to screen --view-manpage (--man) : View man page --verbose : Show more details on screen --version (-V) : Display version number and quit Enterprise options --plugindir <path> : Define path of available plugins --upload : Upload data to central node More options available. Run './lynis show options', or use the man page. No command provided. Exiting..
Lynis se lance donc comme n'importe quel script. Diverses options sont disponibles, visibles avec --check-options :
audit audit system : Perform local security scan audit system remote <host> : Remote security scan audit dockerfile <file> : Analyze Dockerfile show show : Show all commands show version : Show Lynis version show help : Show help update update info : Show update details Options: --no-log : Don't create a log file --pentest : Non-privileged scan (useful for pentest) --profile <profile> : Scan the system with the given profile file --quick (-Q) : Quick mode, don't wait for user input Layout options --no-colors : Don't use colors in output --quiet (-q) : No output --reverse-colors : Optimize color display for light backgrounds Misc options --debug : Debug logging to screen --view-manpage (--man) : View man page --verbose : Show more details on screen --version (-V) : Display version number and quit Enterprise options --plugindir <path> : Define path of available plugins --upload : Upload data to central node More options available. Run './lynis show options', or use the man page. root@Justine-pc:/usr/local/lynis/lynis# ./lynis show options --auditor --cronjob (--cron) --debug --developer --help (-h) --license-key --log-file --manpage (--man) --no-colors --no-log --pentest --profile --plugin-dir --quick (-Q) --quiet (-q) --report-file --reverse-colors --skip-plugins --tests --tests-from-category --tests-from-group --upload --verbose --version (-V) --wait --warnings-only
Scanner notre système
Pour scanner notre système, nous allons utiliser la commande suivante :
./lynis audit system
Lynis commence par nous donner quelques informations généralistes sur le système, puis il scanne diverses choses classées en catégories, et affiche ses résultats selon le code-couleur que l'on connaît déjà en matière de supervision (Vert = OK, Jaune = Attention, rouge = danger).
Un scan de mon système sous Ubuntu 18.10 révèle dores et déjà quelques faiblesses !
Cet affichage est utile, et plus de détails sont disponibles dans les fichiers de logs :
- /var/log/lynis.log : donne le détail des scans
- /var/log/lynis-report.dat donne des informations sur le fonctionnement interne de Lynis.
Dans le fichier lynis.log, celui-ci nous donne, en plus du détail de ses activités, des suggestions :
019-04-07 12:39:37 Result: file /boot/grub/grub.cfg is readable (or directory accessible). 2019-04-07 12:39:37 Result: Didn't find hashed password line in GRUB boot file! 2019-04-07 12:39:37 Suggestion: Set a password on GRUB bootloader to prevent altering boot configuration (e.g. boot in single user mode without password) [test:BOOT-5122] [details:-] [solution:-]
Mettre Lynis à jour
La mise à jour de Lynis, installé de cette façon, ne peut se faire qu'en changeant l'exécutable; l'usage de la commande lynis update release est déprécié !
On peut connaître la version actuelle de Lynis grâce à la commande suivante :
root@Justine-pc:/usr/local/lynis/lynis# ./lynis update info == Lynis == Version : 2.7.3 Status : Up-to-date Release date : 2019-03-21 Update location : https://cisofy.com/lynis/
Lynis est aussi disponible via les dépôts, mais le version la plus récente disponible sur ceux-ci (chez Ubuntu) est actuellement la 2.6.2.
Au quotidien
Il peut être intéressant de lancer Lynis via des cronjobs. Un exemple :
30 22 * * * root /path/to/lynis -c -Q --auditor "automated" --cronjob
Ici, lynis sera lancé à 22h30, avec l'identité d'auditeur (le champ représentant la personne en train de lancer le scan) "automated". Le -c correspond à "check", soit uns can du système; le Q correspond à "quick", ce qui permet d'éviter que Lynis ne demande des inputs de la aprt de l'utilisateur.
En conclusion
Lynis est un outil puissant, facile à déployer. Il peut être utile de le lancer au quotidien et de le coupler à un outil d'analyse des logs. Cependant, il faut rester prudent : ce n'est pas parce que tout est [OK] que le système est parfaitement sécurisé ! Le plus utile reste de regarder les logs pour comprendre les retours que nous donne le programme.