版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验13B通过日志分析发现入侵行为实验目的熟悉tomcat日志的格式、配置和启用。掌握使用AWStats查看日志的方法。掌握日志分析的基本方法通过编程实现把日志文件的信息放入数据库并进行可视化展示实验准备1.理论上讲,只要坚持跟踪以下信息,几乎所有网络攻击都能被检测出来:(1)网络拥挤程度和网络连接;(2)Web日志与系统安全日志;(3)成功与失败的登录尝试;(4)当前运行的应用程序和服务(5)定时运行的应用程序或启动时运行的应用程序(6)对文件系统所做的改变。2.Webserver日志有两部分,一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息;一是访问日志信息,它记录的访问的时间,IP,访问的资料等相关信息。在tomcat日志中,catalina.log记录了tomcat启动时的信息,localhost.log,记录运行日志,localhost_access_log存放访问tomcat的请求的所有地址以及请求的路径、时间,请求协议以及返回码等重要信息。3.AWStats是一款功能强大的免费日志分析工具,可以图形方式生成Web,流媒体,ftp或邮件服务器统计信息。该软件可以到https://awstats.sourceforge.io/下载。由于AWStats是用Perl编写的程序,其安装前必须先安装ActivePerl(ForWin32)程序(官网:/)。4.JFreeChart是JAVA平台上的一个开放的图表绘制类库,其载地址:/projects/jfreechart/files/。三、实验内容1、开启tomcat的访问日志功能Tomcat的日志记录功能默认是关闭的,直接将conf文件夹下的server.xml配置文件中找到:<!--<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"prefix="localhost_access_log."suffix=".txt"pattern="common"resolveHosts="false"/>-->将以上配置部分的注释去掉,重启Tomcat服务器,在logs目录下就可以看到相应的日志文件了。这里directory是产生的目录tomcat安装${catalina}作为当前目录,pattern表示日志生产的格式,common是tomcat提供的一个标准设置格式。pattern值可以为common与combined,这两个预先设置好的格式对应的日志输出内容如下:common的值:%h%l%u%t%r%s%bcombined的值:%h%l%u%t%r%s%b%{Referer}i%{User-Agent}ipattern也可以根据需要自由组合,例如pattern="%h%l"因为标准配置有一些重要的日志数据无法生,建议采用以下具体的配置,%h%l%u%t"%r"%s%b%T具体的日志产生样式说明如下:*%a-RemoteIPaddress*%A-LocalIPaddress*%b-Bytessent,excludingHTTPheaders,or'-'ifzero*%B-Bytessent,excludingHTTPheaders*%h-Remotehostname(orIPaddressifresolveHostsisfalse)*%H-Requestprotocol*%l-Remotelogicalusernamefromidentd(alwaysreturns'-')*%m-Requestmethod(GET,POST,etc.)*%p-Localportonwhichthisrequestwasreceived*%q-Querystring(prependedwitha'?'ifitexists)*%r-Firstlineoftherequest(methodandrequestURI)*%s-HTTPstatuscodeoftheresponse*%S-UsersessionID*%t-Dateandtime,inCommonLogFormat*%u-Remoteuserthatwasauthenticated(ifany),else'-'*%U-RequestedURLpath*%v-Localservername*%D-Timetakentoprocesstherequest,inmillis*%T-Timetakentoprocesstherequest,inseconds具体操作如下:打开Tomcat的日志记录功能,首先打开conf文件夹下的server.xml配置文件修改红框内容如下启动Tomcat服务器,在启动之前要先配置一下环境变量需要一个CATALINA_HOME环境变量发现这样还不够启动tomcat服务器,查看配置文件后发现还要一个JRE_HOME环境变量,于是再添加一个JRE_HOME环境变量然后打开bin文件夹双击startup.bat出现如下页面说明启动成功了然后打开logs文件夹就可以看到日志文件了参考/blog/qlqllu-1576099文档,配置、使用awstats,查看awstats的统计界面。点击“立即更新”连接,查看并记录更新后的统计信息。在tomcat的webapps文件夹下创建一个awstats文件夹把awstats文件夹下的docs复制到webapps文件夹下的awstats文件夹再把wwwroot文件夹下的四个文件复制到webapps文件夹下的awstats文件夹最后新建两个文件夹META-INF和WEB-INF
在META-INF下新建context.xml文件内容如下:<Contextreloadable="true"privileged="true"></Context>在WEB-INF下新建
web.xml内容如下:<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID"version="2.5"><servlet><servlet-name>cgi</servlet-name><servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class><init-param><param-name>clientInputTimeout</param-name><param-value>100</param-value></init-param><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>cgiPathPrefix</param-name><param-value>WEB-INF/cgi-bin</param-value></init-param><load-on-startup>5</load-on-startup></servlet><servlet-mapping><servlet-name>cgi</servlet-name><url-pattern>/cgi-bin/*</url-pattern></servlet-mapping><resource-env-ref><description>LinktotheUserDatabaseinstancefromwhichwerequestlistsofdefinedrolenames.Typically,thiswillbeconnectedtotheglobaluserdatabasewithaResourceLinkelementinserver.xmlorthecontextconfigurationfilefortheManagerwebapplication.</description><resource-env-ref-name>users</resource-env-ref-name><resource-env-ref-type>org.apache.catalina.UserDatabase</resource-env-ref-type></resource-env-ref><!--DefineaSecurityConstraintonthisApplication--><security-constraint><web-resource-collection><web-resource-name>awstatsstatus</web-resource-name><url-pattern>/cgi-bin/*</url-pattern></web-resource-collection><auth-constraint><role-name>awstats</role-name></auth-constraint></security-constraint><!--DefinetheLoginConfigurationforthisApplication--><login-config><auth-method>BASIC</auth-method><realm-name>Awstatsstatus,username:awstats,password:awstats</realm-name></login-config><!--Securityrolesreferencedbythiswebapplication--><security-role><description>TherolethatisrequiredtologintotheManagerApplication</description><role-name>awstats</role-name></security-role><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>复制cgi-bin到WEB-INF目录下将WEB-INF/cgi-bin目录下的awstats.model.conf文件改名为common.conf,新建文件awstats.localhost.confawstats.localhost.conf文件内容如下:Include"common.conf"LogFile="D:/apache-tomcat-9.0.72/apache-tomcat/logs/localhost_access_log.%yyyy-%mm-%dd.log"SiteDomain="localhost"HostAliases="localhost"DefaultFile="index.jsp"#在cgi-bin建立data文件夹DirData="data"DirCgi="/cgi-bin"DirIcons="/awstats/icon"#允许在web页更新日志,默认为0(命令行更新)AllowToUpdateStatsFromBrowser=1然后创建一个data文件夹用来存放数据最后在打开的时候发现要输入用户名和密码,所以我们要设置一个用户名和密码打开conf配置文件夹找到tomcat-user.xml文件加上一个自己设置的用户,包含用户名和密码打开之后就来到了统计页面,点击立即更新就可以看到统计信息了3、分析如下代码的功能package网络安全;publicclassteststring13b3{publicstaticvoidmain(String[]args){Stringstr="9--[02/Feb/2012:13:07:10+0800]\"GET/?a=2&b=3&c=4&d=6&e=8&fi=12HTTP/1.1\"200151\"-\"\"curl/7.15.5(x86_64-redhat-linux-gnu)libcurl/7.15.5OpenSSL/0.9.8bzlib/1.2.3libidn/0.6.5\"";String[]strArr=str.split("");Stringip=strArr[0];Stringdate=strArr[3].substring(1);Stringparams=strArr[6].substring(2);System.out.println(ip);System.out.println(date);System.out.println(params);}}4、日志分析(1)首先确保电脑的文件路径内有glog2.log的日志文件,日志文件举例: 2021-03-2912:42:43[http-bio-8080-exec-116]-[INFO]03GET/api/api/llll 2021-03-2912:42:43[http-bio-8080-exec-116]-[INFO]35GET/api/api/llll2021-03-292:42:43[http-bio-8080-exec-116]-[INFO]52GET/api/api/llll(2)导入各类需要的包。下载地址:/download.html导入poi-5.0.0.jar和commons-math3-3.6.1.jar包+ jfreechart-1.0.19-demo.jar+ jsp-api.jar servlet-api.jar commons-io-2.11.0.jar+ log4j-api-2.17.2.jar+ log4j-to-slf4j-2.17.2.jar slf4j-api-1.7.32.jar+ slf4j-nop-1.7.25.jar(3)分析、调试并描述如下代码的功能。packagefenxi;importorg.apache.poi.hssf.usermodel.*;importorg.apache.poi.ss.usermodel.HorizontalAlignment;importjava.io.*;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.HashMap;importjava.util.Map;importjava.util.Set;publicclasstest{publicstaticvoidmain(String[]args){//读取log文件Strings;Map<String,Integer>map=newHashMap<>();Strings1;try{FileInputStreamis=newFileInputStream("C:\\Users\\Administrator\\Desktop\\日志\\glog2.log");InputStreamReaderisr=newInputStreamReader(is);BufferedReaderbr=newBufferedReader(isr);Stringline;//遍历每一行,while((line=br.readLine())!=null){if(line.indexOf("INFO")!=-1){//截取ip,存入map中,key值为ip,value为次数s=line.replace("","=");Stringh="[=INFO=]";//---------ip----------------------inti=s.indexOf(h)+9;intj=s.indexOf("=",i);//-------------------------//------------接口--------------//inti=s.indexOf("/");//intj=s.indexOf("=",i);//------------------------if(i<0||j<0){continue;}s1=s.substring(i,j);if(map.get(s1)==null){map.put(s1,1);}else{map.put(s1,map.get(s1)+1);}}} //map写到excel中write2Excel(map);//map写到txt文件中/*Stringss;Set<String>keys=map.keySet();for(Stringkey:keys){//ss="ip为"+key+"的用户访问了"+map.get(key)+"次";//ipss="接口为"+key+"被请求了"+map.get(key)+"次";//接口write2Txt(ss);}*/}catch(Exceptione){e.printStackTrace();}}staticvoidwrite2Txt(Stringcontent){try{//保存路径//ip//Filewritename=newFile("C:\\Users\Administrator\Desktop\\日志\\123.txt");//相对路径,如果没有则要建立一个新的output.txt文件//接口Filewritename=newFile("C:\\Users\\Administrator\\Desktop\\日志\\456.txt");//判断文件是否存在,不存在即新建//存在即根据操作系统添加换行符if(!writename.exists()){writename.createNewFile();//创建新文件}else{StringosName=System.getProperties().getProperty("");if(osName.equals("Linux")){content="\r"+content;}else{content="\r\n"+content;}}//如果是在原有基础上写入则append属性为true,默认为falseBufferedWriterout=newBufferedWriter(newFileWriter(writename,true));out.write(content);//写入TXTout.flush();//把缓存区内容压入文件out.close();//最后记得关闭文件}catch(Exceptione){e.printStackTrace();}}staticvoidwrite2Excel(Mapmap){try{Filef=newFile("C:\\Users\\Administrator\\Desktop\\日志\\log2-ip.xls");if(!f.exists()){f.createNewFile();}OutputStreamos=newFileOutputStream(f);//1.创建一个webbook,对应一个Excel文件HSSFWorkbookwb=newHSSFWorkbook();//2.在webbook中添加一个sheet,对应Excel文件中的sheetHSSFSheetsheet=wb.createSheet("sheet1");//3.在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制shortHSSFRowrow=sheet.createRow(0);//4.创建单元格,并设置表头这只表头居中HSSFCellStylestyle=wb.createCellStyle();style.setAlignment(HorizontalAlignment.CENTER);//创建一个居中格式HSSFCellcell=row.createCell(0);cell.setCellValue("接口");//createTimecell.setCellStyle(style);cell=row.createCell(1);cell.setCellValue("次数");//goodsNamecell.setCellStyle(style);HSSFSheetsheet2=wb.createSheet("sheet2");//3.在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制shortHSSFRowrow2=sheet.createRow(0);//4.创建单元格,并设置表头这只表头居中HSSFCellcell2=row2.createCell(0);cell2.setCellValue("接口");//createTimecell2.setCellStyle(style);cell2=row2.createCell(1);cell2.setCellValue("次数");//goodsNamecell2.setCellStyle(style);introwNum=1;//当前行号Set<String>keys=map.keySet();for(Stringkey:keys){//if(Integer.parseInt(map.get(key).toString())<30){//continue;//}row=sheet.createRow(rowNum);row.createCell(0).setCellValue(key);row.createCell(1).setCellValue(map.get(key).toString());rowNum++;}wb.write(os);}catch(Exceptione){e.printStackTrace();}}}实验报告1、通过实验回答下列问题给出实验内容1、2的运行界面实验1运行界面我的运行界面如下实验2运行界面我的运行界面如下给出实验内容3、4的功能描述。实验3运行界面代码:package网络安全;publicclassteststring13b3{publicstaticvoidmain(String[]args){Stringstr="9--[02/Feb/2012:13:07:10+0800]\"GET/?a=2&b=3&c=4&d=6&e=8&fi=12HTTP/1.1\"200151\"-\"\"curl/7.15.5(x86_64-redhat-linux-gnu)libcurl/7.15.5OpenSSL/0.9.8bzlib/1.2.3libidn/0.6.5\"";String[]strArr=str.split("");Stringip=strArr[0];Stringdate=strArr[3].substring(1);Stringparams=strArr[6].substring(2);System.out.println(ip);System.out.println(date);System.out.println(params);}}我的运行界面如下实验3功能描述:截取字符串,并输出指定字符串内容,输出中第一行为ip地址,第二行为时间,第三行为传入参数的值实验4运行界面导入jar包并编写好代码代码:package网络安全;importorg.apache.poi.hssf.usermodel.*;importorg.apache.poi.ss.usermodel.HorizontalAlignment;importjava.io.*;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.HashMap;importjava.util.Map;importjava.util.Set;publicclasstestexcel13b4{publicstaticvoidmain(String[]args){//读取log文件Strings;Map<String,Integer>map=newHashMap<>();Strings1;try{FileInputStreamis=newFileInputStream("C:\\Users\\86189\\Desktop\\日志\\glog2.log");InputStreamReaderisr=newInputStreamReader(is);BufferedReaderbr=newBufferedReader(isr);Stringline;//遍历每一行,while((line=br.readLine())!=null){if(line.indexOf("INFO")!=-1){//截取ip,存入map中,key值为ip,value为次数s=line.replace("","=");Stringh="[=INFO=]";//---------ip----------------------inti=s.indexOf(h)+9;intj=s.indexOf("=",i);//-------------------------//------------接口--------------//inti=s.indexOf("/");//intj=s.indexOf("=",i);//------------------------if(i<0||j<0){continue;}s1=s.substring(i,j);if(map.get(s1)==null){map.put(s1,1);}else{map.put(s1,map.get(s1)+1);}}}//map写到excel中write2Excel(map);//map写到txt文件中/*Stringss;Set<String>keys=map.keySet();for(Stringkey:keys){//ss="ip为"+key+"的用户访问了"+map.get(key)+"次";//ipss="接口为"+key+"被请求了"+map.get(key)+"次";//接口write2Txt(ss);}*/}catch(Exceptione){e.printStackTrace();}}staticvoidwrite2Txt(Stringcontent){try{//保存路径//ip//Filewritename=newFile("C:\\Users\Administrator\Desktop\\日志\\123.txt");//相对路径,如果没有则要建立一个新的output.txt文件//接口Filewritename=newFile("C:\\Users\\86189\\Desktop\\日志\\456.txt");//判断文件是否存在,不存在即新建//存在即根据操作系统添加换行符if(!writename.exists()){writename.createNewFile();//创建新文件}else{StringosName=System.getProperties().getProperty("");if(osName.equals("Linux")){content="\r"+content;}else{content="\r\n"+content;}}//如果是在原有基础上写入则append属性为true,默认为falseBufferedWriterout=newBufferedWriter(newFileWriter(writename,true));out.write(content);//写入TXTout.flush();//把缓存区内容压入文件out.close();//最后记得关闭文件}catch(Exceptione){e.printStackTrace();}}staticvoidwrite2Excel(Mapmap){try{Filef=newFile("C:\\Users\\86189\\Desktop\\日志\\log2-ip.xls");if(!f.exists()){f.createNewFile();}OutputStreamos=newFileOutputStream(f);//1.创建一个webbook,对应一个Excel文件HSSFWorkbookwb=newHSSFWorkbook();//2.在webbook中添加一个sheet,对应Excel文件中的sheetHSSFSheetsheet=wb.createSheet("sheet1");//3.在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制shortHSSFRowrow=sheet.createRow(0);//4.创建单元格,并设置表头这只表头居中HSSFCellStylestyle=wb.createCellStyle();style.setAlignment(HorizontalAlignment.CENTER);//创建一个居中格式HSSFCellcell=row.createCell(0);cell.setCellValue("接口");//createTimecell.setCellStyle(style);cell=row.createCell(1);cell.setCellValue("次数");//goodsNamecell.setCellStyle(style);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械手培训课程设计
- 机械原理怎么写课程设计
- 低空经济未来发展趋势与市场前景深度分析报告
- 高中历史 3.1 英国革命的领导者克伦威尔教案2 新人教版选修4
- 七年级英语下册 Unit 5 Our school life Topic 2 A few students are running around the playground Section A教案 (新版)仁爱版
- 机械制造与实验课程设计
- 2016年湖南省株洲市中考真题语文试题(解析版)
- 机械传动与控制课程设计
- 机械产品改良课程设计
- 机械专业液压课程设计
- 召开听证会程序流程
- 中建路桥集团有限公司分包分供结算管理办法
- 风电场项目质量目标及保证措施
- 轮扣架支模体系材料量计算
- 《短视频拍摄脚本模板资料》视频抖音拍摄脚本剧本分镜表
- 玻璃纤维行业准入条件(2021年修订)
- 马铃薯种植技术.ppt
- CRRT的原理PPT参考课件
- 现金流量表excel表格模板.doc
- 小水电接入电力系统技术规定
- 合同管理制度与流程图(附内控体系表)
评论
0/150
提交评论