Cet article décrit Audit, le système d'audit Linux.
En tant que système d'audit Linux, Audit définit les règles d'audit et renvoie les événements liés à la sécurité qui se produisent dans le système dans un fichier journal.
En surveillant la sortie du message dans le fichier journal, vous pouvez détecter les événements liés à la sécurité.
Les règles d'audit suivantes peuvent être définies dans Audit.
Audit démarre en tant que démon auditd et renvoie les résultats d'audit reçus du noyau dans un fichier journal.
Les paramètres généraux sont définis dans le fichier / etc / audit / auditd.conf
.
#
# This file controls the configuration of the audit daemon
#
local_events = yes
write_logs = yes
log_file = /var/log/audit/audit.log
log_group = root
log_format = RAW
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 8
num_logs = 5
priority_boost = 4
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NONE
##name = mydomain
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
verify_email = yes
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
use_libwrap = yes
##tcp_listen_port = 60
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
enable_krb5 = no
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
distribute_network = no
Les commandes de base pour utiliser Audit sont les suivantes.
commander | La description |
---|---|
auditctl | Définir les paramètres liés à l'opération d'audit et définir les règles d'audit |
ausearch | Rechercher les résultats d'audit à partir des fichiers journaux d'audit |
aureport | Créer un rapport des résultats d'audit à partir du fichier journal d'audit |
Les règles d'audit sont définies en exécutant la commande ʻauditctl, ou dans le fichier
/ etc / audit / rules.d / audit.rules` pour les paramètres persistants.
auditctl ʻL'utilisation de la commande auditctl` est expliquée pour chaque règle.
Définissez les paramètres relatifs à l'opération d'audit.
# auditctl -e 1
# auditctl -s
--Supprimer toutes les règles d'audit
# auditctl -D
Définissez des règles pour les appels système.
** Format: auditctl -a
--Définir l'appel système
# auditctl -a always,exit -F arch=b64 -S adjtimex,settimeofday -k time-change
--Vérifier les règles d'appel système
# auditctl -l
-a always,exit -F arch=b64 -S adjtimex,settimeofday -F key=time-change
Le nom de l'appel système et le numéro d'appel système spécifié dans -S peuvent être confirmés en se référant au fichier / usr / include / asm / unistd_64.h
ou en utilisant la commande ʻau syscall`.
# cat /usr/include/asm/unistd_64.h | grep open
#define __NR_open 2
#define __NR_mq_open 240
#define __NR_openat 257
#define __NR_perf_event_open 298
#define __NR_open_by_handle_at 304
# ausyscall open
open 2
mq_open 240
openat 257
perf_event_open 298
open_by_handle_at 304
Définissez des règles pour les systèmes de fichiers. Lorsque des modifications d'écriture ou d'attribut sont apportées au fichier, elles sont sorties dans le journal.
** Format: auditctl -w
--Définir les règles du système de fichiers
# auditctl -w /etc/passwd -p wa -k identity
--Vérifier les règles du système de fichiers
# auditctl -l
-w /etc/passwd -p wa -k identity
Par exemple, si vous changez le mot de passe avec le test de compte, vous pouvez voir que le journal du changement de mot de passe est sorti dans le fichier / var / log / audit / audit.log
comme indiqué ci-dessous.
type=USER_CHAUTHTOK msg=audit(1582528251.037:19125): pid=32026 uid=0 auid=0 ses=2508 subj=unconfined_u:unconfined_r:passwd
_t:s0-s0:c0.c1023 msg='op=PAM:chauthtok grantors=pam_pwquality,pam_unix acct="test" exe="/usr/bin/passwd" hostname=localho
st.localdomain addr=? terminal=pts/1 res=success
ausearch
La commande ʻau searchrecherche dans le journal d'audit le journal qui correspond au mot-clé et le produit en fonction des conditions spécifiées. Le fichier journal spécifié par
log_file dans le fichier
/ etc / audit / auditd.conf` est ciblé.
-i
pour convertir la date et l'heure et le pid en texte, et utilisez -k
pour spécifier le mot-clé)
# ausearch -i -k time-change
----
type=CONFIG_CHANGE msg=audit(24 février 2020 15:00:55.539:17800) : auid=root ses=2118 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 op=add_rule key=time-change list=exit res=yes
----
type=CONFIG_CHANGE msg=audit(24 février 2020 15:01:17.592:17824) : auid=root ses=2118 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 op=remove_rule key=time-change list=exit res=yes
----
type=CONFIG_CHANGE msg=audit(24 février 2020 15:08:59.057:17944) : auid=root ses=2118 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 op=add_rule key=time-change list=exit res=yes
--Rechercher les événements qui correspondent au type de message spécifié (ci-après, utilisez -m
pour spécifier l'événement lié à la connexion et --start today
pour spécifier la date et l'heure du jour)
# ausearch -m USER_LOGIN --start today
----
time->Thu Apr 30 21:25:25 2020
type=USER_LOGIN msg=audit(1588249525.137:125): pid=1341 uid=0 auid=0 ses=1 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=login id=0 exe="/usr/sbin/sshd" hostname=192.168.10.10 addr=192.168.10.10 terminal=/dev/pts/0 res=success'
--Une doublure pour extraire les types de messages spécifiables
# ausearch -m help 2>&1 | awk -v RS=' ' '/^[A-Z]{2}/{ print}' | sort
aureport La commande ʻau report` génère un rapport de journal d'audit selon les conditions spécifiées.
-l
, la conversion texte-en-texte de la date et de l'heure et pid avec -i
, la date et l'heure de début et la fin en tant que plage de recherche de journal de -ts
à -te
Précisez la date et l'heure)
# aureport -l -i -ts yesterday -te now
Login Report
============================================
# date time auid host term exe success event
============================================
1.23 février 2020 21:12:44 racine <adresse IP>/dev/pts/0 /usr/sbin/sshd yes 132
2.24 février 2020 12:52:29 root <adresse IP> ssh/usr/sbin/sshd no 16883
3.24 février 2020 12:52:35 racine <adresse IP>/dev/pts/0 /usr/sbin/sshd yes 16901
4.24 février 2020 15:45:37 racine <adresse IP>/dev/pts/1 /usr/sbin/sshd yes 18626
5.24 février 2020 18:27:12 racine <adresse IP>/dev/pts/0 /usr/sbin/sshd yes 21660
# aureport --summary
Summary Report
======================
Range of time in logs:1 janvier 1970 09:00:00.000 -24 février 2020 16:07:17.070
Selected time for report:1 janvier 1970 09:00:00 -24 février 2020 16:07:17.070
Number of changes in configuration: 220
Number of changes to accounts, groups, or roles: 5
Number of logins: 7
Number of failed logins: 1
Number of authentications: 14
Number of failed authentications: 12
Number of users: 2
Number of terminals: 9
Number of host names: 3
Number of executables: 24
Number of commands: 28
Number of files: 48
Number of AVC's: 3716
Number of MAC events: 9
Number of failed syscalls: 25835
Number of anomaly events: 10
Number of responses to anomaly events: 0
Number of crypto events: 89
Number of integrity events: 0
Number of virt events: 0
Number of keys: 3
Number of process IDs: 13855
Number of events: 90789
Vous pouvez utiliser la commande ʻau report` pour enregistrer les commandes saisies dans le terminal.
Pour auditer l'entrée au clavier, écrivez les paramètres suivants dans le fichier suivant.
/etc/pam.d/system-auth
/etc/pam.d/password-auth
session required pam_tty_audit.so disable=* enable=test
Exécutez la commande suivante pour vérifier l'opération et passer à l'utilisateur tes.
# su -l test
A titre d'exemple, exécutez la commande suivante selon le cas et déconnectez-vous avec ctrl + d
.
$ date
$ echo "test"
$ top
Vous pouvez vérifier les commandes exécutées par l'utilisateur de test dans le terminal en exécutant les commandes suivantes.
# aureport --tty --start today
TTY Report
===============================================
# date time event auid term sess comm data
===============================================
1.30 avril 2020 21:58:09 184 0 ? 1 bash "date",<ret>,"echo \"test\"",<ret>,"top",<ret>,<^L>,<^D>
/etc/audit/rules.d/audit.rules
Les paramètres persistants sont définis dans le fichier / etc / audit / rules.d / audit.rules
.
Après avoir modifié les paramètres, redémarrez auditd pour refléter les paramètres.
En tant qu'administrateur système, l'audit est une connaissance nécessaire.
L'audit est conçu pour répondre aux exigences de la norme de sécurité relative au système d'exploitation ** Profil de protection d'accès contrôlé (CAPP) ** en tant que niveau standard pour les systèmes ouverts.
Recommended Posts