Rsyslog et la version amélioré du daemon syslog
Il permet d'ecrire des logs de facons normalisé localemetn ou sur un port donnée
Le protocole utilise le port UDP 514 redhat6redhat7
Configuration file are
/etc/rsyslog.conf
$IncludeConfig /etc/rsyslog.d/*.conf (vide a l'instal)
/etc/logrotate.conf
/etc/logrotate.d/
log are on
/var/log
Server conf
Firewall redhat7 Selinux
Lister la zone active et ajouté le port udp qui va bien (sur la conf active et sur le permanent)
Lister le resultat
Placer en fin de fichier (ici on aplique la modif a tous les logues)
$template affichage,"%msg%\n"
$template TmplAuth, "/logs/%HOSTNAME%/%fromhost-ip%/%PROGRAMNAME%.log"
*.* ?TmplAuth;affichage
!!Les logs distant sons donc sous /logs et non /var/logs
Le template affichage evite le template par defautl qui rajoute des infos avant le messges d'origine
Cela perturbe les outils de decodate de audit
On peut aussi redefinir le filtre par default
exemple2 /etc/rsyslog
$template affichage,"%msg%\n"
$template TmplAuth, "/logs/%HOSTNAME%/%fromhost-ip%/%programname%-%$YEAR%%$MONTH%%$DAY%.log"
$template TmplAuth2, "/logs/%HOSTNAME%/%fromhost-ip%/switch-%$YEAR%%$MONTH%%$DAY%.log"
if not ( $hostname contains 'swh' ) then ?TmplAuth;affichage
& stop
if $hostname contains 'swh' then ?TmplAuth2;affichage
& stop
redefinition du template par default
# Use default timestamp format
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
#Redefinition du template par default
$template CustomFormat,"%msg%\n"
$ActionFileDefaultTemplate CustomFormat
Tester le fichier de conf
rsyslogd -N1
Relancer le service
systemctl restart rsyslog !! Sa c'est la théorie les restarts ne marche pas rsyslog reste en carafe une fois sur 2 REBOOT et la ceul methode fiable
compression / gestion
par crontab rajouter un fichier
vi /etc/cron.daily/syslog-bzip2
find /logs -type f -mtime +1 -name "*.log" -exec bzip2 '{}' \;
find /logs -type f -mtime +500 -name "*.log.bz2" -print0 | xargs -0 rm
-type f : type de fichier standard
-mtime x*24h : que les fichier modifier dans les n*24h
-name "regex": dont le nom correpond a
on execute bzip2 pour compresser
on les suprime au bout de 500 jours
Vérif extern
sudo nmap -sV -p 514 logs.xxx.fr
Starting Nmap 6.45 ( http://nmap.org ) at 2014-11-07 13:04 CET
Nmap scan report for logs (129.88.240.71)
Host is up (0.00069s latency).
PORT STATE SERVICE
rDNS record for 129.88.240.71: ensi-logs.imag.fr
514/tcp open shell
Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds
Debugage rsyslog
Vérfier que rsyslog ne bug pas
cat /var/log/messages | grep rsyslog
Nov 21 11:51:50 logs rsyslogd-3000: Could not open dynamic file '/logs/centos/xxx.xxx.xxx.xxx/sshd.log' [state -3000] - discarding message
Probleme de droit donc
ls -Zd /var/log/
drwxr-xr-x. root root system_u:object_r:etc_runtime_t:s0 /logs/
on copie les droits de l'emplacement par default
chcon --reference /var/log /logs
ls -Zd /var/log/
drwxr-xr-x. root root system_u:object_r:var_log_t:s0 /logs/
remarquer etc_runtime_t -> var_log_t
Maintnenant
ls -Zd /logs/
drwxr-xr-x. root root system_u:object_r:var_log_t:s0 /var/log/
Les facilité c'est des types(catégory) dans lequelle sons regroupé les messages (si desus mail,authpriv...) auth: évènements type sécurité ou l’authentification exemple(SSH) authpriv: évènements type contrôle d’accès daemon: évènements type processus systèmes et d’application kern: évènements type kernel
mail: évènements type mail user: default -> quand celui qui ecrit na pas préciser dans qu'elle facilité il veu loguer local7: boot *: tous none: rien
La gravité Emerg: système inutilisable Alert,Crit,Err,Warning,Notice,Info,Debug reference filtrage
Client conf
Les modif sont à effectué pret de
#*.* @@remote-host:514
Reglage de la qualité de service
/etc/rsyslog.conf
#@=udp @@=tcp
$ActionQueueFileName fwdRule1
$WorkDirectory /var/lib/rsyslog
$ActionResumeInterval 10
$ActionQueueSize 100000
$ActionQueueDiscardMark 97500
$ActionQueueHighWaterMark 80000
$ActionQueueType LinkedList
$ActionQueueCheckpointInterval 100
$ActionQueueMaxDiskSpace 2g
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
$ActionQueueTimeoutEnqueue 10
$ActionQueueDiscardSeverity 0
Toutes c'est option sons facultative mais permetre de reagir au coupure reseau et au pick de charge
Exemple de conf possible pour les logues a envoyer
Rajouter sous *.* @@remote-host:514 (ligne comenté par #)
Inspiré vous des exemples si dessou pour envoyer qu'elle que chose au server
# Envoie tous les logs sur le server
#*.* @@logs.xxx.fr:514
# Envoie tous les logs contenant dans le message audit sur audit.log
#:msg, contains, "audit" /var/log/audit/audit.log
#& ~
# Envoie tous les logs de la machine nomé centos sur le serveur
#if $hostname == 'centos' then @@logs.xxx.fr:514
#& ~
# Envoie tous les logues envoyer par audit sur le serveur
#if $programname == 'audispd' then @@logs.xxx.fr:514
#& ~
# Envoie tosu les logs ....
#if $hostname == 'centos' and $programname startswith 'au' then @@logs.xxx.fr:514
#& ~
# Envoie les logues de audit+sshd+pam(logue sur x)
$MainMsgQueueType Direct
$ActionQueueType Direct
if $programname == 'audispd' or $programname == 'sshd' or $programname =='pam' then @@logs.xxx.fr:514
& ~
le "& ~" signifie on balance tous le resttes
doc pour les if
http://www.rsyslog.com/storing-messages-from-a-remote-system-into-a-specific-file/
Doc pour les queue mainsmsgqueuequeues
Iptables
iptables -A OUTPUT -j LOG -m state --state NEW --log-uid --log-prefix "iptables" --log-level 4
service iptables start
Ne perturbe pas les regles suivantes
Auditd
yum install audit
service auditd start
chkconfig auditd on
Auditd est un logiciel qui permet de surveillier les apelles systeme (syscall) ref debug
yum install audit
service auditd start
chkconfig auditd on
Regles temporaire
Status de audit
auditctl -s
Liste des regles
auditctl -l
Enable puis diseable
auditctl -e 1
auditctl -e 0
Exemples
-a pour ajouter(add) une comande
-d pour enlever(delete) une comande
Pour surveillier l'appelle connect
auditctl -a exit,always -F arch=b64 -S connect
Pour delete
auditctl -d exit,always -F arch=b64 -S connect
Autre exemple possible
auditctl -a always,exit -F arch=x86_64 -S socket -F a0=0x2 -F a1=0x1 -F key=con_out
auditctl -a always,exit -F arch=x86_64 -S socket -F a0=0x2 -F a1=0x1 -F key=con_in
Pour loguer tous les fichier ouvert par l'utilisateur avec le uid 80
auditctl -a exit,always -F arch=x86_64 -S open -F auid=80
-F arch=x86_64 en 32 ou 64 bits
-S open on choisie le syscall Open
-F auid=80 L'utilisateur ayant l'id 80
Pour surveillier un fichier spécifique
auditctl -a exit,always -F path=/etc/passwd -F perm=wa -K etcpasswdrule
logue tous ecriture ou tous changement d'atribut sur /etc/passwd
Pour surveillier des commande
auditctl -a entry,always -S mkdir -S rmdir3
Syntax
-a ajouter (add)
-d enelever(delete)
-S systeme
-F filtre
-F arch= : precise qu'elle est l'architecture des appeles syscall
-F auid= : filtre sur l'auid d'un utilisateure precis
-F path= : path du fichier que l'on veut surveillier
-F perm= : permissions sur les quelle on veut loguer (lecture ou ecriture)
&nbps;&nbps;&nbps;&nbps;R =read , w=write , x= execute , a = atribute change
-k LOG_audit : rajoute du text sur la ligen poru la regle donnée poru l'identifier
vi /etc/audit/audit.rules
Pour avoir la regles en dur à rajouter:
-a always,exit -F arch=b64 -S connect Attention le volume de donnée est importants et l'on ne peut pas filtrer par parg palge d'ip sortante
Configuration rsyslog de audit
Pour que audictl pass par rsyslog placer active a yes
vi /etc/audisp/plugins.d/syslog.conf
active = yes
direction = out
path = builtin_syslog
type = builtin
args = LOG_INFO
format = string
La sortie se fais sur la facilité (categorie) user
Le log est ecrit dans message
Malheuresement ce n'est pas réglable sur le plugin
Analyse de log /var/log/audit/audit.log
ref
Exemple de lecture apres un wget
cat /var/log/audit/audit.log
type=SYSCALL msg=audit(1416494249.018:1050): arch=c000003e syscall=42 success=yes exit=0 a0=3 a1=7fff3a691100 a2=10 a3=327c72662e656572 items=0 ppid=7320 pid=7429 auid=0 uid=15133 gid=10501 euid=15133 suid=15133 fsuid=15133 egid=10501 sgid=10501 fsgid=10501 tty=pts0 ses=54 comm="wget" exe="/usr/bin/wget" key=(null)
type=SOCKADDR msg=audit(1416494249.018:1050): saddr=02000050D41B3F810000000000000000
Le audit est un id unique
Outils de recherche
Researche par une ip (ici mon site free)
ausearch -i -ts today | grep 212.27.63.129
-i:decodage
-ts: time stamp
-c: instruction
type=SOCKADDR msg=audit(20/11/2014 15:37:29.018:1050) : saddr=inet host:212.27.63.129 serv:80
Puis recherche de l'utilisateur par l'id unique audit
type=SOCKADDR msg=audit(20/11/2014 15:37:29.018:1050) : saddr=inet host:212.27.63.129 serv:80
type=SYSCALL msg=audit(20/11/2014 15:37:29.018:1050) : arch=x86_64 syscall=connect success=yes exit=0 a0=0x3 a1=0x7fff3a691100 a2=0x10 a3=0x327c72662e656572 items=0 ppid=7320 pid=7429 auid=root uid=toto gid=tata euid=toto suid=toto fsuid=toto egid=tata sgid=tata fsgid=tata tty=pts0 ses=54 comm=wget exe=/usr/bin/wget key=(null)
autre exemple :
ausearch -c wget -i
ausearch -i -ts today -if audispd-20150109.log
Windows
FirewallConf
Pour faire loguer les requettes http passer par le firewall
Configurer le firewall pour loguer les requettes (click droite -> propriété)
Faire loguer pour le cas A B et C
Syslog Agent
Le but de l'agent est de forwarder les logs a un serveure de type syslog
L'agent est gratuit est open source le serveur payant
Pour suprimer ou modifier le chemin du service passer par Regedit
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services
Lancer le logiciel de conf en admin
conf
Placer l'ip du server syslog
Puis Cocher dans event logs (Enable ....) sinon aucun log n'est forwarder pas meme ceux du dessous
Puis clicquer sur Configure Event log et decocher tous les case pour tous les type de logue sauf Systeme et Power shell
Si systéme log n'est pas logué alors les logue aditionnel ne sont pas rapatrié
Authoriser les aplications logs et configurer deux logs suplémentaire
Firewall
Application name : Firewall
Level : Information Prosess name:Firewall (le logue se nomera Firewall-yyyymmdd.log)
Spécifique file: c:\Windows\Systeme32\LogFiles\Firewall\pfirewall.log
Facilité: Application (local7)
Pgina
(pgina est une aplication permettant de ce loguer sur un ldap linux)
Pgina Application name : Pgina Spécifique file: c:\Program Files\pGina\log\pGina.Service.ServiceHost_log.txt
Level : Information Prosess name:Pgina (le logue se nomera Pgina-yyyymmdd.log)
Facilité: Application (local7)