mysql db(sport and dport data type)

Carter Bullard carter at qosient.com
Sun Jun 24 12:38:32 EDT 2012


Be sure and drop any existing tables that you may write into, to avoid writing into an old schema.

Carter


On Jun 24, 2012, at 11:46 AM, CS Lee <geek00l at gmail.com> wrote:

> hi Carter,
> 
> I will put a quick test and see how it goes, the saddr and daddr trick does work so I try to make changes to argus_util.h and see how it goes. With all those data type changes, mysql partition can work more efficiently.
> 
> Thank you!
> 
> On Sun, Jun 24, 2012 at 10:53 PM, Carter Bullard <carter at qosient.com> wrote:
> Hey CS Lee,
> This request is in line with the need to insert IP addrs as integers, so that  masking and
> range selection can be done easily for addresses.  Now you can specify the type on the
> RA_FIELD_SPECIFIER line in your rarc file.
>     RA_FIELD_SPECIFIER="stime flgs proto saddr::%u"
> 
> to print the src IP address as an unsigned int. You can do this with any field, many will
> convert based on this directive, some will not (how to convert the label to an int ?)
> 
> Ports are defined as 'var char' because someone can insert the string from /etc/services
> into the database.  Its just the use of -n that defines whether it will be a string or a number.
> 
> Now, with all of that, the basic support to do what you want to do is there, (specifying fields
> as different data types), but what is missing is the automatic table generation piece.  
> 
> To modify that, all you need to do is modify  ./common/argus_util.h to  something like this:
> osiris:clients carter$ diff -c ./include/argus_util.h ./include/argus_util.h.new
> *** ./include/argus_util.h	Tue Jun 19 17:47:38 2012
> --- ./include/argus_util.h.new	Sun Jun 24 10:43:34 2012
> ***************
> *** 692,700 ****
>   #define ARGUSPRINTPROTO			9
>      { "proto", "", 6 , 1, 0, ARGUSPRINTPROTO, ArgusPrintProto, ArgusPrintProtoLabel, "varchar(16) not null", 0},
>   #define ARGUSPRINTSRCPORT		10
> !    { "sport", "", 6 , 1, 0, ARGUSPRINTSRCPORT, ArgusPrintSrcPort, ArgusPrintSrcPortLabel, "varchar(10) not null", 0},
>   #define ARGUSPRINTDSTPORT		11
> !    { "dport", "", 6 , 1, 0, ARGUSPRINTDSTPORT, ArgusPrintDstPort, ArgusPrintDstPortLabel, "varchar(10) not null", 0},
>   #define ARGUSPRINTSRCTOS		12
>      { "stos", "", 5 , 1, 0, ARGUSPRINTSRCTOS, ArgusPrintSrcTos, ArgusPrintSrcTosLabel, "tinyint unsigned", 0},
>   #define ARGUSPRINTDSTTOS		13
> --- 692,700 ----
>   #define ARGUSPRINTPROTO			9
>      { "proto", "", 6 , 1, 0, ARGUSPRINTPROTO, ArgusPrintProto, ArgusPrintProtoLabel, "varchar(16) not null", 0},
>   #define ARGUSPRINTSRCPORT		10
> !    { "sport", "", 6 , 1, 0, ARGUSPRINTSRCPORT, ArgusPrintSrcPort, ArgusPrintSrcPortLabel, "smallint unsigned", 0},
>   #define ARGUSPRINTDSTPORT		11
> !    { "dport", "", 6 , 1, 0, ARGUSPRINTDSTPORT, ArgusPrintDstPort, ArgusPrintDstPortLabel, "smallint unsigned", 0},
>   #define ARGUSPRINTSRCTOS		12
>      { "stos", "", 5 , 1, 0, ARGUSPRINTSRCTOS, ArgusPrintSrcTos, ArgusPrintSrcTosLabel, "tinyint unsigned", 0},
>   #define ARGUSPRINTDSTTOS		13
> 
> 
> Just make sure that you don't print out the port strings when you insert the data.
> Even though we print the icmp port numbers as hex values, mysql should read them no problem.
> 
> I'll be putting the automatic table schema data type changes in argus-clients-3.0.7
> Hope this is helpful !!!!
> 
> 
> Carter
> 
> On Jun 24, 2012, at 1:17 AM, CS Lee wrote:
> 
>> hi Carter,
>> 
>> The argus database table contains the following -
>> 
>> | saddr     | varchar(64)           | NO   | PRI | NULL    |       |
>> | sport     | varchar(10)           | NO   | PRI | NULL    |       |
>> | dir       | varchar(3)            | YES  |     | NULL    |       |
>> | daddr     | varchar(64)           | NO   | PRI | NULL    |       |
>> | dport     | varchar(10)           | NO   | PRI | NULL    |       |
>> 
>> Do you think we should use varchar for sport and dport, I know you maybe doing this because icmp sport and dport maybe 0x0000(type and code). 
>> 
>> So in order to find port scanner, we need to do this(convert the value to integer)
>> 
>> select saddr,daddr, MIN(CONVERT(dport,SIGNED INTEGER)) AS dport_range1,MAX(CONVERT(dport,SIGNED INTEGER)) AS dport_range2, COUNT(DISTINCT CONVERT(dport,SIGNED INTEGER)) AS unique_ports , COUNT(dport) AS total_detection from tbl_argus WHERE state='CON' AND stime > x AND stime < y group by saddr,daddr ORDER by total_detection DESC limit 0,50;
>> 
>> Is that possible to change data type for sport and dport(and instead of doing 0x[type][code], can we just use type and code without 0x. I'm not sure if we are using sport and dport for other stuffs. 
>> 
>> Currently the workaround is doing conversion, I'm not saying this is a problem but rather some thoughts to share.
>> 
>> Thank you!
>> 
>> -- 
>> Best Regards,
>> 
>> CS Lee<geek00L[at]gmail.com>
>> 
>> http://geek00l.blogspot.com
>> http://defcraft.net
> 
> 
> 
> 
> -- 
> Best Regards,
> 
> CS Lee<geek00L[at]gmail.com>
> 
> http://geek00l.blogspot.com
> http://defcraft.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist1.pair.net/pipermail/argus/attachments/20120624/7b3fa1ec/attachment.html>


More information about the argus mailing list