Έλεγχος για rotation log αρχείου

Christos Ricudis ricudis at itc.auth.gr
Wed Sep 16 15:38:15 EEST 2009


George Notaras wrote:
> Apollon Oikonomopoulos wrote:
>   
>> On 11:23 Wed 16 Sep     , Christos Ricudis wrote:
>>     
>>> O monos tropos na anixneuseis ti egine, einai na anoikseis ksana to 
>>> log  file - epeidh o file descriptor ton opoio exeis hdh anoixto den  
>>> prokeitai na katalabei xristo sthn periptwsh pou to log file exei 
>>> ginei  rename h unlink kai oxi truncate - na kaneis mia stat(3), kai 
>>> na  sygkrineis to mege8os me to (apo8hkeymeno apo to prohgoumeno 
>>> iteration  ths stat(3)).
>>>       
>> Υπάρχει πάντα και το inotify(7) (με τα python-inotify bindings), με το 
>> οποίο ο πυρήνας αναλαμβάνει να σε ειδοποιήσει όταν συμβεί κάτι (που 
>> έχεις εσύ ορίσει) σε ένα αρχείο (που πάλι έχεις εσύ ορίσει). Και πάλι 
>> βέβαια, πρέπει να ξέρεις αν το logrotate κάνει move ή copy + truncate...
>>     
>
> Δεν έχω ξανακάνει χρήση του inotify, αν και ακούγεται καλό. Θα το έχω
> υπόψη. Thanks
>
>   
>> Το βασικό θέμα όμως είναι, τι ακριβώς θες να κάνεις με τα log files πέρα 
>> από το να τα βλέπεις in real time; Αν βασίζεσαι σε κάτι το οποίο κάνει 
>> real-time parse τα log files για κάποιο λόγο (όπως κάνουν όλα αυτά τα 
>> σκριπτάκια τύπου fail2ban), τότε πρέπει να είσαι προετοιμασμένος και για 
>> διάφορα άλλα ενδεχόμενα (από το να γεμίσει ο δίσκος, μέχρι το να ψοφήσει 
>> ο syslogd ή να αλλάξει logging format η εφαρμογή της οποίας η έξοδος σε 
>> απασχολεί).
>>
>> /Απόλλων
>>     
>
> Αυτό που θέλω να κάνω είναι ό,τι κάνει το fail2ban, αλλά με μία
> διαφορετική λογική.
>
> Το fail2ban βάζει την IP του client σε blacklist για N ώρες, όταν αυτός
> έχει προκαλέσει Χ failures. Αυτό είναι χρήσιμο στην περίπτωση που οι
> clients που προκαλούν τα failures είναι λιγοι. Αντίθετα, σε περιπτώσεις
> που γίνονται μαζικά connections από πολλούς clients, η αντίδραση είναι
> πολύ αργή και καθόλου αποτελεσματική στο να μειώσει το load.
>
> Αυτό που θέλω να κάνω είναι να μπαίνει σε blacklist για Ν ώρες η IP όλων
> των clients που προκαλούν έστω κι ένα failure, όταν ο συνολικός ρυθμός
> των failures ξεπεράσει ένα προκαθορισμένο όριο
>   

Em eides poy otan h erwthsh diatypwnetai ws "Epanalambanomenes 
palindromikes eksanagkasmenes talantwseis sta8erou platous katalhgoun se 
stigmiaia anekselegkth eksarsh neyrofysiologikhs drasthriothtas poy 
akolou8eitai apo ragdaia ptwsh toy metabolismou, mhpws ftaiei to platos 
ths talantwshs?" h *swsth* apanthsh einai "stamata na malakizesai" ?

De xreiazesai tipote poy moiazei me thn "tail -f", kai profanws de 
xreiazetai na kaneis matsakwnies prospa8wntas na kaneis detect kanena 
rotation. Diabase to man page tou syslog.conf :

   Named Pipes
       This version of syslogd(8) has support  for  logging  output   
to  named  pipes
       (fifos).  A fifo or named pipe can be used as a destination for 
log messages by
       prepending a pipe symbol (‘‘|’’) to the name of the file.  This  
is  handy  for
       debugging.   Note  that  the  fifo  must  be created with the 
mkfifo(1) command
       before syslogd(8) is started.

Opote me th mknod dhmiourgeis ena named pipe (p.x. /tmp/named-pipe), kai 
sto syslogd.conf sou bazeis apla ena :

auth.notice                  /var/log/messages.|/tmp/named-pipe

(den eimai sigouros gia to .notice).

Kai meta esy to mono poy exeis na kaneis einai na anoikseis to 
/tmp/named-pipe apo thn allh akrh kai na mazeyeis log entries.

Oson afora twra to *kyrio* sou problhma :

O *makran* pio eykolos tropos gia na glytwneis mia kai kalh apo tis 
bruteforce SSH blakeies, einai *apla na allakseis listening port ston 
ssh daemon*. Den exw dei pote na xtypane opoudhpote allou ektos apo to 
22, opote poly apla katargw to 22 kai bazw ton sshd na akouei sto 2200.

Bebaia ayto proypo8etei oti 8a 8ymasai na kaneis p.x. ssh -p 2200 ... h 
scp -P 2200 ..., alla aksizei ton kopo.








 


More information about the Linux-greek-users mailing list