Misc problems with argus-clients v. 3.0.5.34
Markku Parviainen
maketsi at gmail.com
Wed Feb 29 06:12:46 EST 2012
Hi,
I'm reporting some bugs and (annoying) features in argus-clients
version 3.0.5.34. The host is 64bit linux, gcc 4.1.2, kernel 2.6.18.
1. Aborting rabins/racluster with ctrl+c
There's a feature at least in racluster and rabins that I would want
to be removed: aborting the command with ctrl+c does not always work,
especially when the process is becoming a memory hog. Please fix it so
that ctrl+c would always instantly abort whatever the command was
doing, trashing everything from the memory without printing anything
it didn't had time to. Now it seems that it receives the command, but
ignores it while doing "just one more thing for next 5 minutes".
Sometimes when racluster starts outputting lines to console and I
can't stop it with ctrl+c at all.
Now I typically have to stop the process with ctrl+z and then kill it
with kill -9 %2, or similar. That works, but kinda sucks.
2. Segmentation fault when writing to a protected directory
All argus clients crash with Segmentation fault when trying to write
to a file (i.e. create it) in a directory where the current user has
no write permission.
$ ra -D6 -r t.arg -w t2.arg
...
ra[23826.e025c773a62b0000]: 2012-02-28T11:54:22 ArgusReadFileStream() starting
ra[23826.e025c773a62b0000]: 2012-02-28T11:54:22 ArgusReadStreamSocket
(0x2ba673db6010) read 600 bytes
ra[23826.e025c773a62b0000]: 2012-02-28T11:54:22 ArgusGenerateRecord
(0x2ba673db6620, 0) len 200
Segmentation fault
3. Wrong packet counts from rabins
Rabins reports wrong and somewhat random packet counts. It is expected
that rabins averages the values, but the sum of packets should not
change. Am I doing something wrong here?
I tried pre-sorting the data by stime, but it does not help on all
cases, depending on the size of the time bins.
And as it seems, when the file was written by argus and then grouped
by racluster (with -m saddr daddr proto dport), the file typically is
not ordered by stime on disk. The test file here (t.arg) contains data
for one hour, and obviously, is not changed in the middle:
This is correct:
$ racluster -m proto dport -r t.arg -s proto dport pkts -n - 'tcp and
dst port (0 or 80 or 22)'
tcp 0 8903
tcp 22 1640
tcp 80 136659
The same directly with rabins causes garbage:
$ rabins -m proto dport -M hard time 5m -r t.arg -w - - 'tcp and dst
port (0 or 80 or 22)' | racluster -m proto dport -s proto dport pkts
-n
tcp 0 2001
tcp 22 88
tcp 80 29865
Pre-sorting fixes the problem here:
$ rasort -m stime -r t.arg -w - - 'tcp and dst port (0 or 80 or 22)' |
rabins -m proto dport -M hard time 5m -w - | racluster -m proto dport
-s proto dport pkts -n
tcp 0 8903
tcp 22 1640
tcp 80 136659
But not here when using 5s bins:
$ rasort -m stime -r t.arg -w - - 'tcp and dst port (0 or 80 or 22)' |
rabins -m proto dport -M hard time 5s -w - | racluster -m proto dport
-s proto dport pkts -n
tcp 0 9378
tcp 22 1165
tcp 80 136659
What's even more odd here is that another racluster in chain changes
the values again.
This is correct as it should be:
$ racluster -m saddr daddr proto dport -r t.arg -w - - 'tcp and dst
port (0 or 80 or 22)' | rasort -m stime -w - | rabins -m proto dport
-M hard time 5m -w - | racluster -m proto dport -s proto dport pkts -n
tcp 0 8903
tcp 22 1640
tcp 80 136659
But this is not. The values are not even the same as with 5s bins before.
$ racluster -m saddr daddr proto dport -r t.arg -w - - 'tcp and dst
port (0 or 80 or 22)' | rasort -m stime -w - | rabins -m proto dport
-M hard time 5s -w - | racluster -m proto dport -s proto dport pkts -n
tcp 0 9882
tcp 22 661
tcp 80 136659
Random results makes a network analyst very frustrated...
More information about the argus
mailing list