Trên cơ sở các kết quả đạt được trong nghiên cứu này, chúng tôi nhận thấy còn một số vấn đề cần tiếp tục được nghiên cứu để có được kết quả tốt hơn như:
91
- Tiếp tục nghiên cứu các loại Log khác như: Error Log, System Log, … đưa vào Ontology để tạo thành một mô hình tổng quát cho các loại Log.
92
DANH MỤC TÀI LIỆU THAM KHẢO Tài liệu Web
[1] https://en.wikipedia.org/wiki/Web_server
[2] https://en.wikipedia.org/wiki/Web_Ontology_Language [3] https://logging.apache.org/log4j/2.0/manual/architecture.html [4] https://www.apacheviewer.com
Tài liệu, giáo trình, tiểu luận, luận văn
[5] McGGuinness, D. L., & Van Harmelen, F. (2004). OWL web ontology language overview. W3C recommendation, 10(10), 2004.
[6] Suneetha, K. R., & Krishnamoorthi, R. (2009). Identifying user behavior by analyzing web server access log file. IJCSNS
International Journal of Computer Science and Network
Security, 9(4), 327-332.
[7] Fielding, R. T., & Kaiser, G. (1997). The Apache HTTP server project. IEEE Internet Computing, 1(4), 88-90.
[8] Grimaila, Michael R., et al. "Design and analysis of a dynamically configured log-based distributed security event detection methodology." The Journal of Defense Modeling and Simulation 9.3 (2012): 219-241.
[9] HOLSAPPLE, Clyde W.; JOSHI, Kshiti D. A knowledge management ontology. In: Handbook on Knowledge Management 1. Springer, Berlin, Heidelberg, 2004. p. 89-124.
[10]Sirin, E., & Parsia, B. (2007, June). SPARQL-DL: SPARQL Query for OWL-DL. In OWLED (Vol. 258).
93
[11]Aluç, G., Hartig, O., Özsu, M. T., & Daudjee, K. (2014, October). Diversified stress testing of RDF data management systems.
In International Semantic Web Conference (pp. 197-212). Springer,
Cham.
[12]Horrocks, I. (2002). DAML+OIL: A Description Logic for the Semantic Web. IEEE Data Eng. Bull., 25(1), 4-9.
[13]McGuinness, D. L., Fikes, R., Rice, J., & Wilder, S. (2000). The chimaera ontology environment. AAAI/IAAI, 2000, 1123-1124.
[14]Gabel, T., Sure, Y., & Voelker, J. (2004). D3. 1.1. a: KAON– ontology management infrastructure. SEKT informal deliverable.
[15]Youn, Seongwook, and Dennis McLeod. "Ontology development tools for ontology-based knowledge management." Encyclopedia of
E-Commerce, E-Government, and Mobile Commerce. IGI Global,
2006. 858-864.
[16]Noy, N. F., Sintek, M., Decker, S., Crubézy, M., Fergerson, R. W., & Musen, M. A. (2001). Creating semantic web contents with protege- 2000. IEEE intelligent systems, 16(2), 60-71.
[17]Laurie, B., & Laurie, P. (2003). Apache: The definitive guide. " O'Reilly Media, Inc.".
[18]Tartir, S., Arpinar, I. B., Moore, M., Sheth, A. P., & Aleman-Meza, B. (2005). OntoQA: Metric-based ontology quality analysis.
[19]Atzori, M. (2014, October). Toward the web of functions: Interoperable higher-order functions in SPARQL. In International Semantic Web Conference (pp. 406-421). Springer, Cham.
PHỤ LỤC
Nhập dữ liệu vào Ontology trong Protégé được viết bằng Python
import datetime import time
from owlready2 import * import csv
my_world = World()
onto = my_world.get_ontology('structure and instances.owl').load() webServer = WebServer("WebServer_1")
webServer.hasServerName = "Server test luan van" webServer.hasServerIP = "103.1.239.239:2222"
webServer.hasServerConfiguration = "CPU: 1x Xeon 12 Core E5-2650 V4 2.2Ghz, 30MB;RAM: 1x IBM 16GB PC4-17000 2133Mhz RDIMM;HDD: Option HDD SAS/SATA 2.5;DVD: Option;RAID: IBM ServeRaid M5210 1GB Flash Raid 0,1,5,10,50;Power Supply: 1x 750Watts;Rail kit: Sliding Rails Rackmount 2U Kit"
log = Log("Log_1")
log.hasLogName = "cameragiabao.com.access.log" eventTypeGet = EventType("EventType_GET") eventTypeGet.hasEventTypeName = "GET"
eventTypeGet.hasEventTypeDescription = "Event Type GET" eventTypePost = EventType("EventType_POST")
eventTypePost.hasEventTypeName = "POST"
eventTypePost.hasEventTypeDescription = "Event Type POST" log.hasEventType.append(eventTypeGet) log.hasEventType.append(eventTypePost) eventTypeGet.isEventTypeOf.append(log) eventTypePost.isEventTypeOf.append(log) eventGroupAccess = EventGroup("EventGroup_1") eventGroupAccess.hasEventGroupName= "Access" eventGroupAccess.isEventGroupOf.append(webServer) webServer.hasEventGroup.append(eventGroupAccess) eventGroupAccess.hasEventType.append(eventTypeGet) eventGroupAccess.hasEventType.append(eventTypePost) eventTypeGet.isEventTypeOf.append(eventGroupAccess) eventTypePost.isEventTypeOf.append(eventGroupAccess) country1 = Country('Country_0') country1.hasCountryName = 'Vietnam' webServer.hasCountry.append(country1) country1.isCountryOf.append(webServer)
with open('../cameragiabao.com.access.csv', newline='') as csvfile: reader = csv.DictReader(csvfile)
count = 0
count = count+1
event = Event("Event"+"_"+str(count)) if row[" Request"][1] == "E":
event.hasEventType.append(eventTypeGet) eventTypeGet.isEventTypeOf.append(event) else:
event.hasEventType.append(eventTypePost) eventTypePost.isEventTypeOf.append(event) event.hasIPAddress =row['IP Address']
event.ofLog.append(log) log.hasEvent.append(event)
user = User("User_"+row[' User']) user.hasUserName = row[' User'] event.hasUser.append(user) user.isUserOf.append(event)
dateTimeVal = datetime.datetime.strptime(row[' Date'], "[%d/%b/%Y:%H:%M:%S %z]")
event.hasDate = str(dateTimeVal.date()) event.hasTime= str(dateTimeVal.time()) event.hasRequest=row[' Request']
event.hasCode=int(row[' Code']) event.hasSizeOfRequest =row[' Size']
if (row[' Country']=="Vietnam"): country = country1
else:
country = Country("Country_"+str(count)) country.hasCountryName = row[' Country'] event.hasCountry.append(country)
country.isCountryOf.append(event) event.hasReferer =row[' Referer']
event.hasUserAgent =row[' UserAgent']
event.hasDescription = "Description of "+"Event"+"_"+str(count) event.hasEventName = "Event"+"_"+str(count)
eventGroupAccess.hasEvent.append(event) event.isEventOf.append(eventGroupAccess) if (count>1001):
break