J'ai trouvé le coupable : Snort.
Snort m'a rempli /var/log/snort de fichiers du genre "tcpdump.log.133323568656" ce qui a saturé les inodes de /var
Dans logrotate.conf j'ai ça :
/var/log/snort/* {
daily
create 0640 snort adm
rotate 2
}
(c'était à weekly et rotate 3, je viens de changer)
et dans /etc/logrotate.d/snort j'ai ça :
/var/log/snort/portscan.log /var/log/snort/alert /var/log/snort/portscan2.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 snort adm
sharedscripts
postrotate
if [ -x /usr/sbin/invoke-rc.d ]; then \
invoke-rc.d snort restart > /dev/null; \
else \
/etc/init.d/snort restart > /dev/null; \
fi;
endscript
}
Pour récupérer mes inodes je suis en train d'exécuter un find de bourrin pour virer ces fichiers (j'ai coupé snort bien sûr).
Ma question, comment dois-je configurer snort ou logrotate pour que ça ne se reproduise plus ?
Question subsidiaire, dans le cas d'un FS qui n'as plus d'inode libre, quelle est votre méthode pour trouver où c'est-y qu'ils sont les plein de fichiers ?
Parce que là j'ai trouvé par hasard. Après avoir augmenté la taille de mon FS j'ai lancé un logrotate (vu que j'avais changé le paramètre rotate pour /var/log/snort) qui a planté en listant ces dump TCP dans le répertoire /var/log/snort.
# partition /var/log
Posté par Sébastien Maccagnoni (site web personnel) . Évalué à 3.
D'où l'intérêt d'avoir une partition /var/log séparée.
à l'arrache :
Et tu regarde ce qui défile à l'écran : si un répertoire revient super souvent, alors c'est là
:D
[^] # Re: partition /var/log
Posté par Marotte ⛧ . Évalué à 3.
J'ai une partition /var séparée. Même si le rootfs était pas saturé (heureusement, ssh continue de fonctionner) un /var avec plus un seul inode de libre ça fout le bordel.
J'ai /var/lock et /var/run sur des tmpfs également.
Ouai, pas con…
[^] # Re: partition /var/log
Posté par ze_lionix (site web personnel) . Évalué à 3.
Et tu regarde ce qui défile à l'écran : si un répertoire revient super souvent, alors c'est là
Ouai, pas con…
Autant éviter d'y aller à la louche et demander au système de compter à la volée :
find ./ -type f -o type d | cut -d '/' -f 1-2 | uniq -c
Fuse : j'en Use et Abuse !
[^] # Re: partition /var/log
Posté par Kerro . Évalué à 4.
Je dirais même
[^] # Re: partition /var/log
Posté par ze_lionix (site web personnel) . Évalué à 2. Dernière modification le 10 décembre 2012 à 19:08.
Certes…
Sauf qu'en collant le sort à la fin tu perd les trois petits mots pas anodins du tout "à la volée" !
Tu es obligé d'attendre que tout le fs soit parcouru pour qu'un résultat soit affiché…
Alors qu'en ne le mettant pas, tu peux aller regarder un gros répertoire qui vient de sortir, commencer à faire du ménage, hop un autre gros répertoire viens de sortir, tu regardes, hop un autre énorme…. etc….
=> tu n'es pas inactif pendant des plombes ( les Terra en nfs malgré le fiberchannel ça prend du temps ) ,
=> tu restaures le service plus rapidement…
Enfin moi je dis ça, je dis rien einh ! ^_^
Fuse : j'en Use et Abuse !
# Script ou Setup
Posté par ze_lionix (site web personnel) . Évalué à 2. Dernière modification le 10 décembre 2012 à 14:07.
Hello,
A mon sens logrotate n'est pas la bonne approche dans ce cas, car compresser ne libèrera pas d'inode, et la purge n'est pas une manière pertinente car tu peux très bien te retrouver avec un cas ou tu devras baisser la purge à journalière ( donc autant ne plus logger ) voir un cas ou une purge journalière n'est pas suffisante
Trois approches possibles pour moi :
1) Script
Tu ponds un script qui journalièrement :
- crée un répertoire YYYYMMDD-1
- move les fichiers de la veille dedans
- tar.gz le répertoire
Cela suppose que tu n'auras jamais le cas de débordement de ta capacité en une journée.
2) Setup FS
- tu crée une partition avec la terre d'inode, la monte sur /var/log/snort et hop !
Cela suppose d'avoir une partition de libre, ou pouvoir en libérer une.
3) Setup Snort
- il est possible de logger ce bordel en base mysql, je te renvoi sur le net pour trouver la conf qui va bien
Enfin pour finir, pour trouver ce qui bouffe en i-node personellement j'y vais à coup de $>find ./-type f | cut -d '/' -f 1-2 | uniq -c en considérant que ce ne sont pas les répertoires se multiplient.
Hélas il n'y a pas d'option 'i-node' sur la commande $>du
Fuse : j'en Use et Abuse !
[^] # Re: Script ou Setup
Posté par Marotte ⛧ . Évalué à 3.
Merci pour ton commentaire.
Je vais attendre quelques jours en surveillant comment se remplit /var/log/snort puis je vais faire un script, plus simple que celui proposé, à savoir virer les dumps plus vieux que X jours.
Si je comprends bien, le fait de ne plus avoir ces dumps m'empêchera de pouvoir analyser une éventuelle attaque mais n'empêchera pas snort de fonctionner. Il s'agit d'un serveur de test, aucunement critique. Mais je garde ton idée de zipper les vieux dumps si jamais j'en ai besoin.
Merci encore.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.