来源:https://www.qosient.com/argus/
http://www.ha97.com/2678.html
一、背景介绍
Argus-3.0.8.2是稳定的、当前版本的Argus。我们计划在年底发布Argus-3.0.8.4,以提供额外的修复。argus -3.0.8.2修复了一系列报告的错误,应该被认为是argus的一个主要bug修复版本。附带的argus-client -3.0.8.2代表了argus客户端程序的一个小错误修复版本。当然,仍有一些问题需要解决,一如既往。请考虑为您的生产环境获取这个版本。argus的新版本已经进行了多次测试,并在几个站点上进行了几个月的生产。主要的变化是可移植性修复(OpenWRT, Solaris, Windows),一个国家实验室报告的bug,更好的Debian包支持和一些额外的封装,包括GRE ERSPAN II和Juniper包捕获。
目前,稳定的源代码集可以从这些链接:
argus-3.0.8.2:http://qosient.com/argus/src/argus-3.0.8.2.tar.gz
argus-clients-3.0.8.2:http://qosient.com/argus/src/argus-clients-3.0.8.2.tar.gz
欢迎来到Argus,网络审计记录生成和利用系统。Argus项目的重点是开发从网络活动审计中获得的大规模网络环境感知的所有方面。Argus本身是下一代网络流技术,处理网络流数据的数据包,无论是在线路上还是在捕获中。数据、模型、格式和属性被设计为支持网络操作、性能和安全管理。如果您需要知道您的网络中正在发生什么,现在或过去,您会发现Argus是一个有用的工具。
Argus由高级综合网络流数据生成器和Argus传感器组成,Argus传感器处理包(捕获文件或活动包数据)并生成包流中所有流的详细网络流状态报告。Argus捕获了每个流的许多包动态和语义,有大量的数据缩减,因此您可以有效地存储、处理、检查和分析大量的网络数据。Argus提供了可达性、可用性、连接性、持续时间、速度,负载,good-put,损失,抖动,重传,对所有网络流量和延迟指标,并从数据包内容捕获大部分属性,如L2地址,隧道标识符(MPLS、GRE、ESP等…),协议id,SAP的跳数,选择,L4流量标识(RTP、媒体服务器检测),主机流量控制的迹象,等等……
许多站点使用Argus为其网络上的每个网络事务生成网络活动报告。Argus生成的网络审计数据对于安全性、操作和性能管理非常有用。该数据用于网络取证、不可抵赖性、网络资产和服务库存、服务器和客户关系的行为基线化、隐蔽通道检测和零日事件分析。
Argus是一个开源项目,目前运行在Mac OS X、Linux、Solaris、FreeBSD、OpenBSD、NetBSD、AIX、HP-UX、VxWorks、IRIX、Windows(在Cygwin下)和OpenWrt上,已经移植到许多硬件加速平台,如Bivio、Pluribus、Arista和Tilera,并嵌入到网络适配器中。该软件应该可以移植到许多其他环境中,很少或根本不需要修改。性能是通过使用适当的计算资源来审计整个企业的Internet活动。
二、argus的安装
% ./configure
% make
% make install
编译完成后应用程序位于:./bin/argus
如果需要采用长期的daemon方式运行程序,那么需要将配置文件拷贝到/etc中,Argus可将数据输出到输出文件中,或者使用argus实时监控网络流量,或者将数据输出到socket,客户端程序可以使用。可以采取一种或者两种方式,这些行为都可以由argus.conf文件指定,可以通过去掉合适行的注释来完成。
cp ./support/Config/argus.conf /etc
要使用 interpacket arrival time等相关指标信息,需要将RGUS_GENERATE_RESPONSE_TIME_DATA (`-R`), ARGUS_GENERATE_TCP_PERF_METRIC等参数去注释。
ARGUS_INTERFACE=ens33
ARGUS_FLOW_STATUS_INTERVAL=60
ARGUS_MAR_STATUS_INTERVAL=300
ARGUS_IP_TIMEOUT=30
ARGUS_TCP_TIMEOUT=60
ARGUS_ICMP_TIMEOUT=5
ARGUS_IGMP_TIMEOUT=30
ARGUS_FRAG_TIMEOUT=5
ARGUS_ARP_TIMEOUT=5
ARGUS_OTHER_TIMEOUT=30
sudo ./argus -i ens33 -P 561,向指定端口输出信息
在 /etc/argus.conf中的信息修改完成之后,可以直接使用下面命令运行程序:
sudo ./argus
三、argus-clients的安装
% ./configure
% make
# make install
修改/support/Config/rarc中的配置文件,可以设置输出的时间格式,输出的列元素的等信息。
sudo cp ./argus-clients*/support/Config/rarc ~/.rarc
(1)不打印標題頭
RA_PRINT_LABELS=-1
(2)設置输出的字段:
RA_FIELD_SPECIFIER="stime ltime flgs saddr daddr proto sport dport dir dur pkts spkts dpkts sintpkt dintpkt sintpktidl dintpktidl bytes sbytes dbytes sintpktact dintpktact smeansz dmeansz dmaxsz sminsz dminsz dminsz load sload dload rate srate drate state"
(3)設置分隔符:
RA_FIELD_DELIMITER=','
(4)不採用"x.y.z.w.yyyy"輸出形式:
RA_SEPARATE_ADDR_FROM_PORT_WITH_PERIOD="no"
(5)設置輸出變量的長度:
RA_FIELD_WIDTH='variable'
(6)設置專意方式:
RA_PRINT_NAMES=proto
(7)設置時間輸出方式:
# RA_PRINT_UNIX_TIME=yes
RA_TIME_FORMAT="%F %T" //2018-09-18 10:36:49
(8)命令行:
ra -S 127.0.0.1:561 -p 2 > argus.log
-p表示輸出數據的小數點精度,-u表示採用unix時間
四、使用logstash输出数据
input {
file {
type => "argus"
start_position => "end"
sincedb_path => "$HOME/bin/log/.argus_sincedb"
#Edit the following path to reflect the location of your log files. You can also change the extension if you use something else
path => "$HOME/argus.log"
}
}
filter{
if [type] == "argus" {
csv{
columns => ["stime","ltime","flgs","saddr","daddr","proto","sport","dport","dir","dur","pkts","spkts","dpkts","sintpkt","dintpkt","sintpktidl","dintpktidl","bytes","sbytes","dbytes","sintpktact","dintpktact","smeansz","dmeansz","smaxsz","dmaxsz","sminsz","dminsz","load","sload","dload","rate","srate","drate","state"]
separator => ","
}
if ![sintpkt] {
mutate {
replace => { "sintpkt" => 0 }
}
}
if ![dintpkt] {
mutate {
replace => { "dintpkt" => 0 }
}
}
if ![dintpktidl] {
mutate {
replace => { "dintpktidl" => 0 }
}
}
if ![dmaxsz] {
mutate {
replace => { "dmaxsz" => 0 }
}
}
if ![dminsz] {
mutate {
replace => { "dminsz" => 0 }
}
}
if ![sintpktact] {
mutate {
replace => { "sintpktact" => 0 }
}
}
if ![sport] {
mutate {
replace => { "sport" => 0 }
}
}
if ![dport] {
mutate {
replace => { "dport" => 0 }
}
}
if ![dir] {
mutate {
replace => { "dir" => "-" }
}
}
if ![dintpktact] {
mutate {
replace => { "dintpktact" => 0 }
}
}
if ![sintpktidl] {
mutate {
replace => { "sintpktidl" => 0 }
}
}
mutate {
gsub => ["flgs"," ",""]
}
mutate {
gsub => ["dir"," ",""]
}
date {
match => ["stime", "yyyy-MM-dd HH:mm:ss"]
timezone => "UTC"
}
}
}
output {
if [type] == "argus" {
stdout { codec => "rubydebug" }
}
}
nohup ra -F rarc -S 127.0.0.1:561 -p 2 > argus.log &