4.3 系统平台的其他重要配置 该系统配置在win2k系统下,为了系统能正常的工作,还需要以下配置: 内容来自论文无忧网 www.paper51.com
1. 下载数据库动态驱动解压到本地某一文件夹中,该驱动包括:msbase.jar、mssqlserver.jar、msutil.jar并在环境变量中给出其路径。 内容来自论文无忧网 www.paper51.com
2. 结果最后显示java开发的可视化界面上,对于Aglet的安全设置默认是不允许的,这就需要在其策略文件(F:\Documentsand Settings\Administrator\.aglets\security\aglets.policy)里添加安全规则:permission java.lang.RuntimePermission "exitVM"; copyright paper51.com 3. 本系统要对F:\Snort\rules\myrules.rules文件进行读写操作,所以必须要在Aglet的策略文件中要添加以下语句: copyright paper51.com
4. permission java. io. FilePermission " F : \\ Snort \\ rules \\ myrules.rules " , " read " ; 内容来自www.paper51.com 5. permission java . io . FilePermission " F : \\ Snort \\ rules \\ myrules. rules " , " write " ; http://www.paper51.com 4.4 系统实现技术 内容来自论文无忧网 www.paper51.com
4.4.1 入侵检测数据收集 内容来自论文无忧网 www.paper51.com
启动snort工具 内容来自www.paper51.com
cd到F:\snort\bin下输入命令:snort -d -h 222.18.122.0/25 -lf:\snort\log -c f:\snort\etc\snort.conf -i 2 copyright paper51.com 其中-i 2指通过本地网卡的接口来检测,其中编号为2,对于不同的主机,编号可能有所不同。 copyright paper51.com
4.4.2 具体实现中采用的关键技术 paper51.com 1. 数据的携带。该系统使用了单项链表实现在访问分布式计算机的时候,将分布式数据库的数据带回到代理主机。 copyright paper51.com
2. 分析结果的显示。在分析完数据,将可疑地址通过java可视化界面显示在屏幕上。 http://www.paper51.com 3. 分析结果的记录。通过java对规则文件的操作,通过自动添加规则对可疑入侵行为来加以限定。 http://www.paper51.com
4.5 代码分析模块 copyright paper51.com 该模块主要包括两个部分:移动遍历代理和数据分析处理。移动遍历代理主要完成数据的提取,数据分析处理主要完成数据的分析记录,自动增加相应的规则禁止入侵地址再次访问。 copyright paper51.com 该模型实现的代码如下: http://www.paper51.com package design; http://www.paper51.com
import com.ibm.aglet.*; 内容来自www.paper51.com
import com.ibm.aglet.event.*; 内容来自www.paper51.com
import java.net.*; 内容来自论文无忧网 www.paper51.com import java.net.URL; paper51.com import java.sql.*; 内容来自论文无忧网 www.paper51.com import java.util.*; http://www.paper51.com
import java.io.*; paper51.com import java.awt.*; paper51.com import java.awt.event.*; 内容来自论文无忧网 www.paper51.com import javax.swing.*; 内容来自www.paper51.com
import java.lang.*; copyright paper51.com public class design extends Aglet{ paper51.com
int _theRemote=0; paper51.com URL target; 内容来自www.paper51.com String[] ip; copyright paper51.com node end,head,temp,search,pre; 内容来自www.paper51.com class node implements Serializable //数据移动前序列化 内容来自www.paper51.com { copyright paper51.com String IpSo; paper51.com int Times; 内容来自论文无忧网 www.paper51.com
node next; copyright paper51.com } http://www.paper51.com //实现数据从数据库的读取 内容来自www.paper51.com
private void myJDBC() copyright paper51.com
{ paper51.com
//把驱动、数据源通过变量传递 copyright paper51.com StringDriver="sun.jdbc.odbc.JdbcOdbcDriver"; http://www.paper51.com String source="jdbc:odbc:snort"; copyright paper51.com
try{ http://www.paper51.com
//查找用于JDBC驱动的类,这种查找会使得JAVA虚拟机装入该类,这个类的静态 paper51.com
//初始化语句块会对驱动程序进行初始化,从而下面可直接使用该驱动程序进行 http://www.paper51.com //数据库连接,无需要做其他额外的事情 paper51.com Class.forName(Driver); 内容来自论文无忧网 www.paper51.com }catch(ClassNotFoundException exc){ paper51.com //当没有驱动程序时,应用程序无法继续运行,故退出程序 http://www.paper51.com
System.out.println("没有发现驱动程序:"+Driver); 内容来自www.paper51.com exc.printStackTrace();System.exit(1); paper51.com } 内容来自论文无忧网 www.paper51.com
try{ paper51.com //建立与指定数据库的连接 内容来自www.paper51.com
ConnectionConnection=DriverManager.getConnection(source); http://www.paper51.com SQLWarning warn = Connection.getWarnings(); 内容来自www.paper51.com while(warn!=null){ 内容来自论文无忧网 www.paper51.com System.out.println(warn.getMessage()); http://www.paper51.com warn=warn.getNextWarning(); paper51.com } 内容来自论文无忧网 www.paper51.com //创建一个用于执行预编译SQL的语句对象:查询记录的cid 内容来自论文无忧网 www.paper51.com String sql="select ip=dbo.inet_ntoa(ip_src) fromiphdr,event,signature where iphdr.cid=event.cid and signature=signature.sig_idand sig_name='SCAN Proxy (8080) attempt'"; 内容来自www.paper51.com PreparedStatementpStm=Connection.prepareStatement(sql); http://www.paper51.com //发送和执行预编译的SQL语句,获得查询结果集 http://www.paper51.com ResultSet result=pStm.executeQuery(); 内容来自www.paper51.com //"i"用于记录读出数据库多少个记录,"j"在输出记录时用于循环 http://www.paper51.com int i=0,j=0; http://www.paper51.com //使用迭代模式访问查询结果集,计算有多少条数据 copyright paper51.com while(result.next()){ 内容来自www.paper51.com i++; 内容来自www.paper51.com } 内容来自论文无忧网 www.paper51.com //关闭查询结果集合 copyright paper51.com result.close(); http://www.paper51.com //关闭SQL语句 内容来自论文无忧网 www.paper51.com pStm.close(); 内容来自论文无忧网 www.paper51.com
System.out.println("i="+i); 内容来自www.paper51.com i=i-1; http://www.paper51.com
//建立"i"个单元的数组 内容来自www.paper51.com
ip=new String[i+1]; paper51.com //再读数据库 内容来自论文无忧网 www.paper51.com
//创建执行简单SQL语句的SQL语句对象 内容来自www.paper51.com Statement stm=Connection.createStatement(); copyright paper51.com //查询记录的IP地址,发送和执行简单SQL语句,获得查询结果集 内容来自www.paper51.com
sql="select ip=dbo.inet_ntoa(ip_src) fromiphdr,event,signature where iphdr.cid=event.cid and signature=signature.sig_idand sig_name='SCAN Proxy (8080) attempt'"; paper51.com result=stm.executeQuery(sql); paper51.com //使用迭代模式访问查询结果集,把数据用数组接受下来 内容来自论文无忧网 www.paper51.com while(result.next()){ copyright paper51.com ip[j]=result.getString("ip"); 内容来自www.paper51.com
j++; paper51.com } http://www.paper51.com //输出数组 paper51.com for(j=0;j<=i;j++){ paper51.com int k=j+1; copyright paper51.com System.out.println("第"+k+"个IP地址:"+ip[j]+"\t"); http://www.paper51.com
} paper51.com //关闭查询结果集合 内容来自论文无忧网 www.paper51.com result.close(); copyright paper51.com //关闭SQL语句 http://www.paper51.com
stm.close(); 内容来自www.paper51.com
//关闭数据库连接 内容来自www.paper51.com
Connection.close(); http://www.paper51.com }catch(SQLException exc){ http://www.paper51.com System.out.println("在执行数据库访问时发生了错误!"); copyright paper51.com exc.printStackTrace(); paper51.com } copyright paper51.com
} paper51.com //建立单项链表,添加头和尾,并把第一个ip地址插入进去。 paper51.com private void addhead() 内容来自www.paper51.com
{ copyright paper51.com temp=new node(); http://www.paper51.com head=temp; 内容来自www.paper51.com temp=new node(); copyright paper51.com temp.IpSo="end"; 内容来自论文无忧网 www.paper51.com end=temp; copyright paper51.com
head.next=end; 内容来自www.paper51.com temp=new node(); 内容来自论文无忧网 www.paper51.com temp.IpSo=ip[0]; 内容来自www.paper51.com
temp.Times=1; paper51.com temp.next=head.next; paper51.com head.next=temp; http://www.paper51.com } http://www.paper51.com
|