ระบบจดการขอมลจราจรทางคอมพวเตอร
Log Management System
ทกพงศ บญทง
Takpong Boontung
สารนพนธนเปนสวนหนงของการศกษา
หลกสตรวทยาศาสตรมหาบณฑต สาขาวชาวศวกรรมเครอขายและความมนคง
ปลอดภยสารสนเทศ
คณะวทยาการและเทคโนโลยสารสนเทศ
มหาวทยาลยเทคโนโลยมหานคร
ปการศกษา 2562
I
หวขอโครงงาน ระบบจดการขอมลจราจรทางคอมพวเตอร
Log Management System
นกศกษา ทกพงศ บญทง
รหสนกศกษา 6127810001
หลกสตร หลกสตรวทยาศาสตรมหาบณฑต สาขาวชาวศวกรรมเครอขายและความมนคง
ปลอดภยสารสนเทศ
ปการศกษา 2562
อาจารยทปรกษา ผศ.ดร.สรณพร ภมวฒสาร
บทคดยอ
โครงงานเรองระบบคนหาประมวลผลและการแสดงผลขอมลทางคอมพวเตอร เพอใหการคนหา
ประมวลผล และการแสดงผลขอมลจราจรคอมพวเตอร เปนไปไดอยางมประสทธภาพและสามารถเรยกด
หรอตรวจสอบยอนหลงไดงาย รวมถงขอมลรายละเอยดการใชงานตาง ๆ เพอเปนการวเคราะหขอมล
จราจรคอมพวเตอรไดอยางถกตอง
และสามารถแจงเตอนปญหาภยคกคามทอาจจะเกดขนกบระบบสารสนเทศ โดยน าขอมลจราจร
ทางคอมพวเตอรทมอยในระบบมาใชงานเพอใหเกดประโยชนมากยงขน ซงภยคกคามอาจจะมาจาก
บคคลภายในองคกร หรอบคคลภายนอกทไมประสงคดกบองคกร เมอระบบสามารถตรวจสอบภย
คกคามไดทนทวงท กจะท าใหลดจ านวนภยคกคามได อกทงยงลดภาระผดแลระบบในการตรวจสอบ
ขอมลจราจรทางคอมพวเตอร และยงสามารถด าเนนการตรวจสอบ วเคราะห แกไขปญหาของเหตการณ
ตาง ๆ ทเกดขนได ซงวธการด าเนนงานประกอบดวยการน าเครองมอมาจาก Open Source มาพฒนา
เพมเตม เพอใชในการพฒนาระบบไดอยางมประสทธภาพ และไมเสยคาใชจาย
II
กตตกรรมประกาศ
สารนพนธฉบบนสามารถส าเรจไดตามความมงหมายซงไดรบความกรณาจากอาจารยทปรกษา
สารนพนธ ผศ.ดร.สรณพร ภมวฒสาร และ อาจารยสรการ ดวงผาสข ทไดเสนอแนะแนวทางในการท า
โครงงาน รวมถงไดสละเวลาใหค าปรกษาแนะน าเพอปรบปรงแกไขขอบกพรองดานตาง ๆ จนสามารถ
น าความรทไดมาพฒนาโครงงานไดเสรจสน
สดทายนขอขอบคณผมพระคณทกทานทคอยใหค าปรกษาและก าลงใจ และหากโครงงานฉบบน
มขอผดพลาดประการใด ขาพเจาผจดท าตองขออภยมา ณ ทนดวย
ทกพงศ บญทง
มนาคม 2563
III
สารบญ
บทคดยอ ............................................................................................................................................. I
กตตกรรมประกาศ ............................................................................................................................... II
สารบญ ................................................................................................................................................ III
สารบญภาพ ......................................................................................................................................... V
สารบญตาราง ...................................................................................................................................... VIII
บทท 1 ................................................................................................................................................. 1
1.1 ความเปนมาและความส าคญของปญหา .......................................................................................... 1
1.2 ปญหาและแรงจงใจ ........................................................................................................................ 1
1.3 แนวทางการแกปญหา .................................................................................................................... 2
1.4 วตถประสงคของโครงงาน .............................................................................................................. 2
1.5 ขอบเขตของโครงงาน..................................................................................................................... 3
1.6 โครงสรางของสารนพนธ ................................................................................................................ 4
บทท 2 ................................................................................................................................................. 5
2.1 ระบบ Log Management System .................................................................................................. 5
2.2 ระบบ Messaging System ............................................................................................................ 6
2.3 เทคโนโลยทน ามาใชในการพฒนาระบบ ......................................................................................... 10
2.3.1 Elastic Stack ............................................................................................................................. 10
2.3.1 Logstash ................................................................................................................................ 13
2.3.2 Kibana .................................................................................................................................... 13
2.3.4 Beats ...................................................................................................................................... 14
2.3.5 Apache Kafka ........................................................................................................................ 15
2.4 การวเคราะหและประมวลผลขอมลจราจรทางคอมพวเตอร .............................................................. 19
2.4.1 ความทาทายของการวเคราะหและประมวลผลขอมล .................................................................... 19
2.4.2 ปญหาในการวเคราะหและประมวลผลขอมล ................................................................................ 20
2.4.3 การแกไขปญหาในกระบวนการวเคราะหและประมวลผลขอมล ..................................................... 21
IV
สารบญ (ตอ)
บทท 3 ................................................................................................................................................. 32
3.1 ภาพรวมของระบบ ......................................................................................................................... 32
3.2 การออกแบบโครงสรางของระบบ ................................................................................................... 33
3.3 การออกแบบการทดลองระบบ ........................................................................................................ 34
3.3.1 การตดตงระบบปฏบตการ CentOS Linux ................................................................................... 34
3.3.2 การตดตงระบบ Elasticsearch, Logstash และ Kibana ............................................................... 34
3.3.3 การตดตงระบบ NGINX .............................................................................................................. 35
3.3.4 การตดตงระบบ Apache Kafka ................................................................................................... 36
3.3.5 ออกแบบรปแบบของขอมล (Parser Logs) .................................................................................. 36
บทท 4 ................................................................................................................................................. 41
4.1 วธการและสภาพแวดลอมของการทดลอง ....................................................................................... 41
4.1.1 การทดลองระบบคนหา ประมวลผลและแสดงผลขอมลจราจรคอมพวเตอร .................................... 42
4.1.2 การทดลองการแจงเตอนเหตการณการโจมต ............................................................................... 43
4.1.3 การทดลองการจดท ารายงาน ...................................................................................................... 43
4.2 ผลการทดลอง ................................................................................................................................ 43
4.2.1 ผลการทดสอบระบบ และทดสอบสงขอมลแบบสตรมมง ............................................................... 43
4.2.2 ผลการทดลองการแจงเตอนเหตการณการโจมต .......................................................................... 50
4.2.3 ผลการทดลองการจดท ารายงาน .................................................................................................. 55
บทท 5 ................................................................................................................................................. 57
5.1 สรปผลการด าเนนงาน .................................................................................................................... 57
5.2 ปญหาและอปสรรคของการด าเนนการ............................................................................................ 57
5.3 ขอจ ากดและแนวทางการแกไขของโครงงาน ................................................................................... 57
5.4 แนวทางการพฒนาโครงงานตอไปในอนาคต ................................................................................... 58
เอกสารอางอง ...................................................................................................................................... 59
อกษรยอและค าจ ากดความ .................................................................................................................. 60
ภาคผนวก ก ........................................................................................................................................ - 1 -
V
สารบญภาพ
ภาพท 1 ระบบ Messaging System ในแบบ PTP .............................................................................. 7
ภาพท 2 ระบบ Messaging System ในแบบ Pub-Sub ....................................................................... 8
ภาพท 3 Messaging System ในแบบ AQMP .................................................................................... 8
ภาพท 4 รปแบบการท างานของ Broker แบบตาง ๆ ........................................................................... 9
ภาพท 5 การท างานของระบบ ELK ทใชในโครงงาน ......................................................................... 14
ภาพท 6 สถาปตยกรรมของ Kafka ................................................................................................... 15
ภาพท 7 ขอมลทจดเกบใน Partitions ของ Kafka ............................................................................. 16
ภาพท 8 การท างานระหวาง Producer -> Broker -> Consumer ...................................................... 17
ภาพท 9 การท างานของ Kafka Cluster ........................................................................................... 17
ภาพท 10 การท างานของ Kafka โดยแยก Topic .............................................................................. 18
ภาพท 11 ความหมายของ Offset ใน Kafka ..................................................................................... 18
ภาพท 12 กลมของ Consumer ทท าหนาทเดยวกนใน Kafka ........................................................... 18
ภาพท 13 ตวอยาง Logs ทไมมรปแบบตายตวหรอความสอดคลองกน .............................................. 20
ภาพท 14 Logstash Pipeline .......................................................................................................... 22
ภาพท 15 ตวอยางของ Filter Logstash Pipeline ............................................................................. 27
ภาพท 16 ตวกรอง GeoIP ............................................................................................................... 31
ภาพท 17 ภาพรวมการท างานของระบบในโครงงาน ......................................................................... 32
ภาพท 18 แผนผงโครงสรางออกแบบการท างานของระบบในโครงงาน .............................................. 33
ภาพท 19 หนาจอการตดตงระบบปฏบตการ CentOS Version 7 ...................................................... 34
ภาพท 20 หนาการใชงานของซอฟทแวร Kibana .............................................................................. 35
ภาพท 21 การตงคา NGINX ............................................................................................................ 35
ภาพท 22 ภาพ Kafka รปแบบ Single Node.................................................................................... 36
ภาพท 23 การเขยน Grok Pattern โดยใช Grok Debugger ใน Kibana ............................................ 37
ภาพท 24 ภาพตวอยางการเขยน Grok Pattern โดยใช Grok Debugger .......................................... 38
ภาพท 25 Field Data ทไดจากการเขยน Grok Pattern .................................................................... 38
ภาพท 26 การน า Grok Pattern ไปใชใน Logstash .......................................................................... 38
ภาพท 27 Input Filter ของการรบขอมลจาก Beats .......................................................................... 39
ภาพท 28 Input Filter ของการรบขอมล Syslog ............................................................................... 39
ภาพท 29 Input Filter ของการรบขอมลจาก Kafka .......................................................................... 39
ภาพท 30 การเขยน Tags Filter เพอระบอปกรณ ............................................................................. 40
VI
สารบญภาพ (ตอ)
ภาพท 31 การเขยน Output Filter สงขอมลไปยง Elasticsearch ...................................................... 40
ภาพท 32 แผนผงภาพวธการทดลองระบบในโครงงาน ..................................................................... 41
ภาพท 33 หนาลอกอนระบบคนหา ประมวลผลและแสดงผลขอมลจราจรทางคอมพวเตอร ................. 42
ภาพท 34 หนาแสดงผลอนระบบคนหา ประมวลผลและแสดงผลขอมลจราจรทางคอมพวเตอร ........... 43
ภาพท 35 ภาพหนาจอ Remote Gateway ไปยงระบบตาง ๆ เพอทดสอบ ........................................ 44
ภาพท 36 ภาพหนาจอการ remote ผาน Remote Gateway ไปยงระบบตาง ๆ เพอทดสอบ .............. 44
ภาพท 37 ท าการ run script บน Attacker (Kali Linux) .................................................................... 45
ภาพท 38 ตรวจสอบเหตการณบนระบบแจงเตอนการบกรกเครอขาย SNORT-NIDS ........................ 45
ภาพท 39 ตรวจสอบขอมลจราจรทางคอมพวเตอรทสงมาจาก Gateway Firewall .............................. 46
ภาพท 40 ตรวจสอบขอมลจราจรทางคอมพวเตอรทสงมาจาก SNORT-NIDS ................................... 46
ภาพท 41 ตรวจสอบขอมลดบทสงมาจาก SNORT-NIDS ................................................................. 47
ภาพท 42 ตรวจสอบขอมลดบทท าการแยกฟลดแลวทสงมาจาก SNORT-NIDS ................................ 47
ภาพท 43 ตรวจสอบขอมลจราจรทางคอมพวเตอรทถกโจมตบนเครองลกขาย Linux ......................... 47
ภาพท 44 ตรวจสอบขอมลดบทท าการแยกฟลดทสงมาจากเครองลกขาย Linux ................................ 48
ภาพท 45 ตรวจสอบหนาแสดงผลทเกยวของกบการทดสอบการโจมตดวย Brute Force ................... 48
ภาพท 46 สมครสมาชกเพอขอ API ท openweathermap.org เพอดงขอมลแบบสตรมมง .................. 49
ภาพท 47 สราง Python Script ในการดงขอมลแบบสตรมมงสงขอมลไปยง Apache Kafka ............... 49
ภาพท 48 ขอมลถกสงมาจาก Apache Kafka เขามาประมวลผลบนระบบ ......................................... 50
ภาพท 49 สราง Output Filter เพอน าขอมลเหตการณมาเกบเปนขอมลดบ........................................ 50
ภาพท 50 ขอมลดบทไดจากการท า Output Filter ถกเกบไวบนระบบ ............................................... 51
ภาพท 51 เขาสเวบไซท Line Notify เพอสมครสมาชก ..................................................................... 51
ภาพท 52 หลงจากสมครสมาชกใหเลอกท My Page ........................................................................ 51
ภาพท 53 ท าการสราง Token โดยการกดท Generate Token .......................................................... 52
ภาพท 54 การ Generate Token ของ Line Notify ........................................................................... 52
ภาพท 55 การ Generate Token ของ Line Notify จะได Token มาใชงาน ........................................ 52
ภาพท 56 จะได Token ทท าการสรางขนและการเชอมตอไปยงกลมหรอบคคลใน Line Account ....... 53
ภาพท 57 สราง PHP Script เพอทดลองการแจงเตอนผาน Line Notify API Token .......................... 53
ภาพท 58 ท าการทดลองการโจมตจะมการแจงเตอนผาน Line Notify ไปยง Line Account ................ 54
ภาพท 59 ท าการทดลองการโจมตจะมการแจงเตอนผาน Line Notify ไปยง Line Account ................ 54
ภาพท 60 การสรางรายงานเปนรปแบบ PDF ................................................................................... 55
VII
สารบญภาพ (ตอ)
ภาพท 61 การสรางรายงานเปนรปแบบ PDF เสรจสน สามารถ Download ได .................................. 55
ภาพท 62 หนารายงานการแสดงผลเปนรปแบบ PDF ....................................................................... 56
VIII
สารบญตาราง
ตารางท 1 Input Plugins ของ Logstash .......................................................................................... 24
ตารางท 2 Output Plugins ของ Logstash ...................................................................................... 25
ตารางท 3 Filter Plugins ของ Logstash ......................................................................................... 25
ตารางท 4 Codec Plugins ของ Logstash ...................................................................................... 26
ตารางท 5 การก าหนดฟลดขอมล (Field Data) ของ NIDS-Snort ทใชในโครงงาน ........................... 36
1
บทท 1
บทน า
1.1 ความเปนมาและความส าคญของปญหา
ขอมลจราจรทางคอมพวเตอร หมายถงขอมลเกยวกบการตดตอสอสารของระบบคอมพวเตอร
ซงแสดงถงแหลงก าเนดตนทาง ปลายทาง เสนทาง เวลา วนท ปรมาณ ระยะเวลา ชนดของบรการ หรอ
อน ๆ ทเกยวของกบการตดตอสอสารของระบบคอมพวเตอร การเกบขอมลจราจรทางคอมพวเตอร และ
นอกเหนอจากการเกบขอมลจราจรทางคอมพวเตอรเรายงสามารถเกบขอมลในสวนอน ๆ ทเกยวของกบ
ระบบคอมพวเตอร เชน ขอมลของระบบเครองคอมพวเตอรแมขาย อปกรณเครอขาย หรอขอมลการ
เขาถงระบบเครองคอมพวเตอรแมขาย เขาถงอปกรณเครอขาย เปนตน
ในปจจบนมการใชงานระบบเครอขายคอมพวเตอรและเครอขายอนเตอรเนตเปนหลกในการ
ตดตอสอสารกน ขอมลทวงเขาออกจงผานหลากหลายอปกรณทมภายในองคกร รวมถงคอมพวเตอร
สวนบคคล ดงนนขอมลการใชงานจงมหลากหลายและมจ านวนมาก ในการทจะคนหาและวเคราะห
ขอมลจงเปนไปไดยาก รวมถงขอมลจากภายนอกทตองการน ามาใชประโยชน หรอแมกระทงภยคกคาม
ของระบบคอมพวเตอร และการเขาใชงานทผดวตถประสงค เชน มการเขาสระบบของเครอง
คอมพวเตอรแมขายทไมไดรบอนญาต ดงนนหากเราสามารถน าขอมลจราจรทางคอมพวเตอร หรอ
ขอมลทถกจดเกบมาท าการวเคราะหถงภยคกคามกจะท าใหเกดประโยชนกบผใชงานมากยงขน
1.2 ปญหาและแรงจงใจ
จากปญหาขางตนจงมระบบการจดเกบขอมลจราจรทางคอมพวเตอรเกดขนซงสวนใหญเปน
รปแบบทเสยคาใชจาย (Commercial) หรอในรปแบบไมเสยคาใชจาย (Open Source) ทวไปนน ก
บรหารจดการไดคอนขางยงยาก การทจะวเคราะหเหตการณเมอเกดปญหาหรอเหตการณการโจมตท
เกดขนกบองคกร โดยการทจะเขาไปตรวจสอบขอมลจราจรทางคอมพวเตอรในแตละอปกรณ กตองใช
เวลาในการวเคราะหแกปญหาคอนขางมาก ถาในองคกรนนมอปกรณจ านวนมาก ซงไดเปนไปไดยาก
และเสยเวลา จงไดเกดแนวคดโครงการนเพอพฒนาระบบจดการขอมลจราจรทางคอมพวเตอร เพอให
ตอบโจทยตอการใชงาน และการจดเกบขอมลจราจรคอมพวเตอร ใหงายตอการบรการจดการและ
ประหยดคาใชจาย
2
1.3 แนวทางการแกปญหา
จากปญหาและแรงจงใจ จงไดศกษาวธการแกไขปญหา โดยน าซอฟตแวร Apache Kafka และ
ELK (Elasticsearch, Logstash, Kibana) ซงเปนซอฟตแวรแบบ Open Source มาใชงาน ซง Apache
Kafka เปนระบบ Messaging System ซงท างานในแบบ distributed message queue หมายถง เปน
ระบบกระจายขอความทถกออกแบบใหเปนศนยกลางในการรองรบขอมลจราจรทางคอมพวเตอรทม
ความเรว และปรมาณมากได สวนซอฟตแวร ELK Stack น ามาใชในการบรหารจดการขอมลจราจร
คอมพวเตอรไดงายขน มาใชเพอใหสามารถจดเกบ คนหา ประมวลผล และแสดงผลขอมล ไดงายและ
สะดวกมากขน
โครงงานของระบบจดการขอมลจราจรทางคอมพวเตอร จดท าเพอใหการคนหาขอมลและการ
จดเกบขอมลจราจรคอมพวเตอร โดยท าการสงขอมลมาจากหลาย ๆ แหลงมารวมกนทศนยกลาง ท า
สามารถท าใหคนหา แยกแยะ และวเคราะหขอมลไดอยางรวดเรวเปนไปไดอยางมประสทธภาพและ
สามารถคนหาภยคกคามทางไซเบอร และขอมลทจ าเปนไดอยางรวดเรวและใกลเวลาจรงทสด หรอ
สามารถตรวจสอบขอมลยอนหลงได โดยวธด าเนนงานประกอบดวยการน าเครองมอจาก Open Source
ทงหมด มาท าการพฒนา เพอใหมประสทธภาพมากขน และไมเสยคาใชจาย
1.4 วตถประสงคของโครงงาน
1.4.1 เพอน าความรดานเทคโนโลยมาพฒนาระบบ การคนหาและการแสดงผลขอมลทาง
คอมพวเตอร
1.4.2 เพอน าระบบมาใชงานไดอยางมประสทธภาพ ประหยดคาใชจาย และปญหาลขสทธ
เนองจากซอฟแวรทงหมดเปน Open Source และตดตงบนระบบปฏบตการ Linux
1.4.3 เพอน าระบบมาเปนศนยกลางในการจดการขอมลจราจรทางคอมพวเตอรทมขนาดใหญ
และอปกรณจ านวนมากได เชน Firewall, IDS, Linux หรอ Windows
1.4.4 เพอจดการระบบผานทางหนาเวบอนเตอรเฟสไดและบรหารจดการจากศนยกลางได
(Centralized Log Management)
3
1.5 ขอบเขตของโครงงาน
1.5.1 ศกษาโครงสรางการเชอมตอและการท างานของซอฟแวร ELK และ Apache Kafka
1.5.2 ศกษาโครงสรางขอมลทางจราจรคอมพวเตอรในรปแบบตาง ๆ ทจะสงเขามาทระบบ
1.5.3 ออกแบบการท างานของระบบทใชในโครงงาน โดยออกแบบโครงสรางวธการสงและรบ
ขอมลจราจรทางคอมพวเตอร
1.5.4 พฒนาและทดสอบการท างานของซอฟแวร ELK และ Apache Kafka โดยทดสอบการ
คนหาขอมล และการสงและการรบขอมลมาทระบบ
1.5.5 พฒนารปแบบการจดเกบและทดสอบการสงขอมลทางจราจรคอมพวเตอรในรปแบบตาง
ๆ มาทระบบ โดยทดสอบจากเครองตนทางสงขอมลมาทระบบและแสดงผลขอมลในรปแบบแยกฟลด
ขอมล (Field)
1.5.6 ระบบการท างานและเวบอนเตอรเฟสส าหรบจดการระบบมการพสจนตวตนในการใชงาน
ระบบ (Log In) และยกเลกการเขาใชงานระบบ (Log Out)
1.5.7 ระบบในโครงการจะท าการตรวจสอบขอมลจราจรทางคอมพวเตอร เชน Firewall, Net-
work Intrusion Detection System (IDS) จาก Snort และ การ Authentication บน Linux และ Win-
dows System
1.5.8 ระบบสามารถท าการสบคนขอมลผานหนาเวบจากขอมลทจดเกบได เชน ขอมลจราจร
ทางคอมพวเตอรจากอปกรณในรปแบบตาง ๆ เชน เหตการณการโจมตดวยเทคนค Scan Activity,
Brute Force Attack, โดยแยกเปนฟลดของขอมล เชน Source IP, Destination IP, Rule Name,
Source/Destination Port, Protocol และ Priority ในรปแบบตารางขอมลได
1.5.9 ระบบสามารถจดท าหนาแสดงผลจากกราฟในรปแบบแสดงสถตขอมล, ขอมลสงสด 10
อนดบ หรอแผนภมวงกลม
1.5.10 ระบบสามารถแจงเตอนเหตการณ เชน Scan Activity, Brute Force Attack ไดผานทาง
Line Application (Line Notify) และรายงานสรปขอมลได
4
1.6 โครงสรางของสารนพนธ
โครงสรางสารนพนธฉบบนมทงหมด 5 บทดวยกน กลาวถงภาพรวมของแตละบทดงน
บทท 2 กลาวถง พนฐานและทฤษฎตาง ๆ ทเกยวของ
บทท 3 กลาวถง ระบบทน าเสนอ ภาพรวมของระบบโครงงานทออกแบบและพฒนา เพอเพม
ประสทธภาพในการจดเกบ และบรหารจดการขอมลจราจรคอมพวเตอร
บทท 4 กลาวถง ผลการทดลอง ทไดท าการทดสอบการใชงานในระบบจ าลอง
บทท 5 กลาวถง สรปผลการด าเนนงาน ในการทดลองและประเมนผลใชงานในระบบจ าลองและ
แนวทางในการศกษาและพฒนาระบบตอไป
5
บทท 2
ทฤษฎทเกยวของ
การตรวจสอบขอมลจราจรทางคอมพวเตอร เพอใหทราบถงปญหาหรอภยคกคามทอาจจะ
เกดขนในระบบคอมพวเตอรและการน าขอมลจราจรทางคอมพวเตอรทมอยนนมาใชประโยชนในการเฝา
ระวง ตรวจสอบ แกไขปญหา และท าการแจงเตอนใหผทเกยวของทราบ จ าเปนตองศกษาขนตอน
กระบวนการตาง ๆ ตงแตการสงขอมลจราจรทางคอมพวเตอรไปยงระบบทท าการรวบรวมขอมลจราจร
ทางคอมพวเตอร (Logs Server) การศกษาท าความเขาใจถงขอมล (Logs File) ทเกดขนกบระบบหรอ
อปกรณทางเครอขายและความปลอดภยทางสารสนเทศ เพอใหไดมาซงขอมลทจะท าการแจงเตอน และ
ในเรองการจดการขอมลจราจรทางคอมพวเตอรทมความหลากหลายและมจ านวนมากทจ าเปนจะตองสง
มาเกบไวในศนยกลาง เมอมขอมลจราจรทางคอมพวเตอรจ านวนมากสงมาทศนยกลางในเวลาพรอม ๆ
กนอาจท าใหเกดปญหาทศนยกลางรบขอมลจราจรทางคอมพวเตอรไมทน หรอขอมลทถกสงมาขาดหาย
ได จงมระบบการจดการขอความหรอขอมลจ านวนมากได โดยมทฤษฎทเกยวของดงตอไปน
2.1 ระบบ Log Management System
หมายถง ระบบบรหารจดการลอก (Logs) หรอขอมลจราจรทางคอมพวเตอร โดยการเกบแยก
ออกจากการเกบลอกไฟลภายในเครองคอมพวเตอรเซรฟเวอร หรออปกรณทางคอมพวเตอรตาง ๆ เชน
Web Server, Mail Server, Firewall, Switch, IPS, Server แมกระทงคอมพวเตอรสวนบคคล เปนตน
เนองจากการเกบลอกไฟลในเครองคอมพวเตอรหรออปกรณนน ถอวาไมรองรบตาม พรบ. วาดวยการ
กระท าผดเกยวกบคอมพวเตอร พ.ศ. 2550 เนองจากผดแลระบบสามารถเขาถงเครองเซรฟเวอรหรอ
อปกรณเหลานน และสามารถเขาถงขอมลลอกไฟล (Logs File) ได นอกจากน แฮกเกอร (Hacker)
หรอมลแวร (Malware) อาจเขามาลบลอกไฟลในเครองไดทกเมอถาแฮกเกอรสามารถเจาะเขาเครองแม
ขายและยดเครองแมขายไดส าเรจ ซงอาจเสยงตอการถกดดแปลงแกไข หรอท าลาย ท าใหขอมลทอยบน
เครองคอมพวเตอรหรออปกรณนน ๆ ขาดความนาเชอถอ และไมสามารถน ามาใชเปนหลกฐานในการ
ด าเนนคดในชนศาลได โดยมโครงสรางและสวนประกอบของระบบเกบขอมลลอกดงน
2.1.1 Log Source หรอ Log Generator เปนแหลงก าเนดของขอมลลอก (Logs) จาก
อปกรณสารสนเทศ เชน อปกรณเครอขายอปกรณเซรฟเวอร ระบบปฏบตการ หรอจากแอพพลเคชนทม
การบนทกขอมลลอก โดยในบางอปกรณหรอแอพพลเคชน สามารถท าการสงขอมล ลอกไปยงลอก
เซรฟเวอร (Log Server) ไดโดยตรงหรออาจจะตองอาศย Log Transmission หรอ Log Agent ในการ
ท าการสงขอมล
6
2.1.2 Log Transmission หรอ Log Agent ระบบส าหรบใชส าหรบสงขอมลลอก จาก
แหลงก าเนดของขอมลลอก (Log Source) ไปยงลอกเซรฟเวอรโดย Log Agent บางตวยงสามารถสง
ขอมล บางอยางใหกบลอกเซรฟเวอรได เชน สถานการณท างานของ Log Agent ขนาดของไฟลขอมล
ทอยในโฟลเดอร ขอมลการท างานของบรการทท างานอยบน Log Source
2.1.3 Log Parser ระบบส าหรบจดรปแบบ หรอแปลงขอมลลอก กอนทจะสงไปท าการ
จดเกบ เพอใหอยในรปแบบทจดเกบไดงายขน เกบไวเปนชนดเดยวกน เชน การตดขอมลลอกออกเปน
ชด ๆ ตามแบบของขอมล เพอใหงายตอการจดเกบและคนหา ในบางชนดสามารถเขยนค าสงตาง ๆ
เชน Regular Expression (REGEX), GROK Pattern เพอท าการจดเรยงขอมลตามเงอนไขทตองการ
2.1.4 Log Server หรอ Log Storage เซรฟเวอรส าหรบรบและจดเกบขอมลลอก จาก
แหลงก าเนดของขอมลลอก (Log Source) เพอจดเกบและแปลงขอมลลอกใหอยในรปแบบทก าหนด
เพอใหสามารถคนหาหรอน าไปวเคราะหไดตอไป
2.1.5 Log Management ระบบบรหารจดการส าหรบการคนหาขอมลลอก แสดงผล
รวมทงระบบสรางรายงานเพอใหผดแลระบบหรอผทมหนาทรบผดชอบสามารถวเคราะหขอมลลอก ได
อยางสะดวก รวดเรว รวมถงความสามารถในการส ารองขอมล นอกจากนบางระบบยงสามารถท าหนาท
เปน Log Analyzer เพอใชในการเฝาระวง และแจงเตอนเหตการณตาง ๆ ทเกดขนบนระบบ จากขอมลล
อกไฟล ทไดรบมา
2.2 ระบบ Messaging System
2.2.1 ระบบ Messaging Systemประกอบไปดวย
2.2.1.1 Message queue คอตวเช อมตอระหวาง Producer และ Consumer หรอ
เรยกวา Queue หรอ Channel มหนาทในการรบขอมล หรอ message ทสงมาจาก Producer และสง
ตอไปใหทาง Consumer ตอไป
2.2.1.2 Message หรอ Data Package คอขอมลทถกสงผานระบบเครอขาย Network
โดยขอมลจะถกหอหมตาม Protocol ทใชงาน
2.2.1.3 Sender หรอ Producer ท าการส งขอม ลหรอ Message ไปยง Message
Queue
7
2.2.1.4 Receiver หรอ Consumer ผร บ Message จาก Message Queue ไปไดทง
แบบ Pushing และ Polling
2.2.1.5 Data Transmit Protocol เปน protocol หรอภาษาในการสอสารกน มความ
หลากหลายตาม Implementation ของระบบ Queue ทใช ยกตวอยางเชน AMQP (Advance Message
Queuing Protocol), MQTT (Message Queue Telemetry Protocol) และ HTTP เปนตน
2.2.1.6 Transfer Mode เชน Synchronous, Asynchronous และ Batching เปนตน
2.2.2 รปแบบการท างานของ Messaging system มดงน
2.2.2.1 Point-to-Point (PTP) คอแตละ message จะถก consume จาก consumer
เดยวเทานน ถงแมจะม consumer มากกวา 1 ตวกตาม ท าใหมนใจไดวา จะไมม consumer มารบ
message ไปท างานซ าแนนอน การสงขอมลจะตวกลางซงเราจะเรยกวา queue (FIFO – First In First
Out) ในการ implement นน Producer จะท าการสงขอมลไปยงชอของ queue ทก าหนดจากนนในสวน
ของ consumer จะคอย monitoring วามขอมลเขามายง queue นน ๆ หรอไม ถามขอมลเขามากจะน า
ออกมาท างานหรอ processing ตอไป สามารถเพมจ านวนของ producer และ consumer ในขณะ
runtime ไดตามทตองการ แสดงดงรป
ภาพท 1 ระบบ Messaging System ในแบบ PTP
Point-to-Point แบงได 2 แบบตามการท างาน คอ
1. Fire-and-Forget model คอเมอสงขอมลเขา queue แลวเปนอนจบ ซงมกจะเรยกวา การ
ท างานแบบ Asynchronous
2. Request/Reply model คอเมอสงขอมลเขา queue แลวจะตองรอการตอบกลบจาก con-
sumer ดวยวาเปนอยางไร นนท าให producer และ consumer ผกมดกน หรออาจจะ
เรยกไดวา ท างานแบบ Synchronous
8
2.2.2.2 Publish-Subscribe (Pub-Sub) รปแบบการท างานน ใชงานเมอตองการสง
ขอมลหนง ๆ ไปยง consumer มากกวา 1 ตวโดย consumer นนจะถกเรยกวา Subscriber สวน pro-
ducer จะเรยกวา Publisher สวน message queue จะเรยกวา Topic ขอมลจะถกจดเกบใน Topic ไป
จนกวาขอมล จะถกสงไปถง subscriber/consumer ท active อยทงหมด การท างานของ producer และ
consumer นนจะไมผกมดกน นนหมายความวา producer จะไมสนใจเลยวาใครคอ consumer ท า
หนาทสงขอมลเขา topic ไปตามทตองการ สวน consumer กเชนกนไมสนใจ producer สนใจเพยงวาจะ
ท าการไป subscribe ท Topic อะไรกพอ หรอถาไมตองการขอมลจาก Topic กท าการ unsubscribe ได
เลย เหมอนกบการตดตามขอมลขาวสารตาม website นนเอง แสดงการท างานดงรป
ภาพท 2 ระบบ Messaging System ในแบบ Pub-Sub
2.2.2.3 Advance Queuing Messaging Protocol (AQMP) เปน open protocol
ส าหรบการสงขอมลผาน queue แบบ asynchronous มโครงสรางการท างานดงรป
ภาพท 3 Messaging System ในแบบ AQMP
9
จากรปนน Producer จะท าการสงขอมลไปยง Broker จากนน Broker จะสงขอมลไปยง con-
sumer ตอไป แตใน Broker นนจะม component ชอวา Exchange โดย Exchange ท าการสงขอมลทได
รบเขามาไปยง (routing) queue ตามทก าหนดในขอมล ดงนนการสงขอมลจะตองท าการก าหนดคาตาง
ๆ มาตามทตองการ (Smart Producer) สวน Consumer กท าตามขอมลทสงเขามา (Dumb consumer)
2.2.3 โดยรปแบบการท างานของ broker มหลายรปแบบดงน
2.2.3.1 Direct exchange ท าการสงไปยง queue ตามทก าหนดไวใน routing key ใน
ขอมล
2.2.3.2 Fan-out exchange ท าการสงขอมลไปยงทก ๆ queue ทก าหนดไว นนคอการ
copy ขอมลนนเอง เหมอนกบการ broadcast
2.2.3.3 Topic exchange ท าการสงขอมลไปยง queue ทเชอมตอ โดยก าหนดชอใน
รปแบบ wildcard ไดเลย รปแบบคลาย ๆ Pub/Sub หรอท างานแบบ multicast routing
ภาพท 4 รปแบบการท างานของ Broker แบบตาง ๆ
10
2.3 เทคโนโลยทน ามาใชในการพฒนาระบบ
2.3.1 Elastic Stack
Elastic Stack นนเปนระบบทใชในการคนหาขอมลอยางเตมรปแบบรวมทงการวเคราะห โดย
สวนประกอบหลกของ Elastic Stack จะประกอบไปดวย Kibana, Logstash, Beats และ Elasticsearch
ซง Elasticsearch นนถอวาเปนหวใจหลกของ Elastic Stack เลยทเดยว ซงคอยท าหนาทจดเตรยม
พนทจดเกบ, คนหาและวเคราะหขอมลจราจรทางคอมพวเตอร สวน Kibana ซงเปรยบเสมอนหนาตางท
จะเขาไปส Elastic Stack ท าหนาทแสดงผลและเชอมตอกบผใชงานกบ Elastic Stack สวน Logstash
และ Beats จะคอยชวยในเรองล าเลยงขอมลไปส Elastic Stack สวนรปแบบการใชงานทมประสทธภาพ
ทงดานการแสดงผล โดยเปนซอฟตแวรแบบ Open Source ทมลขสทธแบบ Apache License 2.0 ท า
ใหสามารถใชงานไดฟร ถกพฒนาโดยบรษท Elasticsearch NV ซง ELK (Elasticsearch, Logstash,
Kibana) เปนชดซอฟตแวร ทถกออกแบบมาใหสามารถท างานรวมกนเปนระบบจดเกบขอมล ระบบ
จดเรยงขอมล และระบบแสดงผล ตามล าดบ สวน Filebeat, Winlogbeat เปนซอฟตแวรทท าหนาทเปน
Log Agent ในการสงขอมลลอก ท าใหสามารถน ามาท าเปนระบบจดเกบขอมลจราจรคอมพวเตอรไดเปน
อยางด โดยมรายละเอยด ดงน
2.3.1.1 Elasticsearch
ระบบฐานขอมลแบบ NoSQL แบบหนง ทสามารถท าการคนหาขอมลไดแบบ Distributed
Search โดยระบบจะท าการสราง Index ขอมลทเกบไว ท าใหสามารถท าการคนหาขอมลไดอยางรวดเรว
ถกพฒนาตอยอดมาจาก Apache Lucene เปนการคนหาแบบ Realtime, Distributed ทงวเคราะห
ประมวลผลขอมลซงสามารถวดและบงชการแกปญหาไดหลากหลายรปแบบ ซงแกนแทของ Elastic
Stack จรงแลวนนคอเปนศนยกลางในการจดเกบขอมล
Elasticsearch ซงเปนแกนหลกของ Elastic Stack โดยจะท าหนาทหลกในการคนหาและ
วเคราะห โดย Elasticsearch ถกสรางขนมาจากพนฐานเทคโนโลยทหลากหลายอยาง Apache Lucene
ซงเทคโนโลยตาง ๆ เหลานใน Elasticsearch โดยพนฐานแลวจะถกน ามาจาก Database และ NoSQL
ดงนนเรามาดประโยชนหลก ๆ ของการใช Elasticsearch ในการจดเกบส ารองขอมลวามอะไรบาง
• Schema less, Document-oriented
• ชวยในการคนหา (Searching)
• ชวยในการวเคราะห (Analytics)
• Rich client library support และ REST API
• งายตอการปฏบตและ Scale
11
• Near Real Time
มาดกนทละประโยชนในแตละขอ วามรายละเอยดเปนอยางไร
2.3.1.1.1 Schema less and Document-oriented
Elasticsearch ไมจ าเปนทจะตองระบโครงสรางขอมล โดยสามารถเกบรายการเอกสาร
ในรปแบบ JSON ไวได ซง JSON Document นเปนสวนส าคญของ Elasticsearch โดยเนอหาสวนใหญ
จะถกบนทกในคอลมนของ Database โดย Traditional Relational Database นนจ าเปนทจะตองใช
Schema ในการระบเซตของคอลมนรวมไปถง Datatypes และขนาดตาง ๆ โดยปกตทวไปนน Data ม
ความไดนามคเปนอยางมาก ดงนนคอลมนทมความใหมและไดนามคจงจ าเปนทจะตองไดรบการดแล
ชวยเหลอ ซง JSON Document นนปกตแลวจะคอยสนบสนน Data จ าพวกน ตวอยางดงน
โดย Document นจะแทนคาบนทกของลกคา และในสวนนจะเปนบนทกชอ, ทอยและอายของลกคา ซงจะมหนาตาประมาณน
โดยการบนทกขอมลลกคารายท 2 จะไมมชองทอยใหระบ แตจะเปนทอยอเมลแทน ซงจรง ๆ แลว Document ตาง ๆ ของลกคาจะประเภททแตกตางกนไปอยางสนเชง ซงจะท าใหเราตองจดการกบขอมลทตองจดเกบซงมปรมาณเปนจ านวนมาก
{
"name": "Takpong Boontung",
"address": "123 Liverpool, England, 10000",
"age": 25
}
{
"name": " Takpong Boontung ",
"age": 25,
"email": "[email protected]"
}
12
2.3.1.1.2 ชวยในการคนหา (Searching)
โดยจดแขงของ Elasticsearch จะเปนความสามารถในการจดเรยงเนอหาขอมล โดย
Elasticsearch นนมความสามารถทยอดเยยมในการคนหา โดยเฉพาะแบบ Full-Text ดงนนเราจะมาท า
ความรจกกบการคนหาแบบ Full-Text วาเปนอยางไร
• การคนหาแบบ Full-Text Search
จะเปนการคนหาแบบครอบคลมเอกสารทงหมดทมอยใน Database ซงจ าเปนตองใช
ขอมลของเอกสารทงหมดในการจดแจงสวนและจดเกบตงแตลวงหนา โดยคดแบบงาย ๆ กคอเมอพดถง
Full-Text Search ใหนกถงการคนหาผาน Google คณสามารถท าการคนหาสงใดกไดและทาง Google
กจะเปนผคนหาผานเวบเพจตาง ๆ ทงหมดและเลอกวาเวบเพจไหนทเหมาะกบขอมลทเราคนหามาก
ทสด ซงจะมลกษณะทแตกตางไปจาก SQL Queries โดยท Normal Queries พรอมกบ WHERE
clause และ Equals (=) หรอ LIKE clause น นจะพยายามปรบใหเขาหากบ Underlying Data และ
นอกจากน SQL Queries สามารถท าไดดทสดในการคนหาประเภท Sub-String ใน Text
2.3.1.1.3 ชวยในการการวเคราะห (Analytics)
นอกจากการคนหาทวไปแลว ฟงกชนทส าคญรองลงมาของ Elasticsearch กจะเปนการ
วเคราะห (Analytics) ซงโดยพนฐานทวไปแลว คนทวไปจะรจก Full-Text Search ส าหรบในการ
วเคราะหหลากหลายกรณ โดยการใชงานตาง ๆ กไดใชการวเคราะหนในการด าเนนงาน ซงคนหานน
เปรยบเสมอนการซมเขาไปและคนหาเขมในกองหญา โดยการคนหานนท าใหเราไดในสงทตองการจาก
ฐานขอมลจ านวนมหาศาล ซงการวเคราะหนนแนนอนวาจะเปนสงทตรงขามกบการคนหา การวเคราะห
เปรยบเสมอนเราซมออกและมองเขาไปทภาพในมมมองทใหญขน Elasticsearch นนเปนสวนทคอย
ชวยเหลอในการรวบรวมทหลากหลายใหกบการวเคราะห ซงการรวมกลมของ Elasticsearch นนม
ประสทธภาพทดอกทงยงน าไปประยกตใชไดกบ Datatypes ทหลากหลาย
2.3.1.1.4 Rich client library support และ REST API
โดย Elasticsearch นนมการชวยเหลอสนบสนนจาก Rich Client Library เพอทจะท า
ใหเขาไปไดถงหลากหลาย Programming Language โดย Client Library เชน Java, C#, Python,
JavaScript, PHP, Ruby และอน ๆ โดยนอกจาก Client Libraries ทเปนทางการแลว ยงม Community
Libraries อกมากกวา 20 Programming Languages นอกจากน ยงม REST (Representational State
Transfer) API อกจ านวนมาก ซงท างานอยบน HTTP protocol ซงทงหมดนท าใหเหนวา ชวยท าให
ผสมผสานไดอยางงายดายในทกแอพพลเคชนตามทการคนหาและวเคราะหตองการ
13
2.3.1.1.5 Near Real Time
ขอมลสามารถใชงานส าหรบการสบคนโดยทวไปภายในวนาทเดยวหลงจากไดรบการ
จดท า Index (บนทก) โดยระบบจดเกบขอมลขนาดใหญนนไมใชทกระบบทสามารถท างานไดในเวลา
จรง Elasticsearch ชวยใหสามารถจดท า Index เอกสารหลายพนถงหลายแสนรายการตอหนงวนาท
และท าใหสามารถคนหาไดทนท
2.3.1 Logstash
Logstash คอระบบ Log Receiver ชนดหนง และสามารถจ าแนกขอมลจราจรคอมพวเตอรจาก
แหลงตาง ๆ ท าการแยกแยะ กรองขอมล แปลงขอมล กอนจะท าการจดเกบสระบบฐานขอมล หรอส
Syslog Server หรอระบบอน ๆ ไดอยางหลากหลายชนด โดย Logstash จะมหนาทในการรวมศนย
ขอมลเหตการณ เชน Logs หรอขอมลในรปแบบอน ๆ ในทกรปแบบ โดยจะท าหนาทเปนตวทแปลง
ขอมลจ านวนมากกอนทจะสงเขาไปยง Elasticsearch ซงถอวาเปนสวนประกอบทส าคญของ Elastic
Stack เลยกวาได อกทงยงเปนการท างานแบบทเปนศนยกลาง ส าหรบการท า Data Pipeline โดย
Logstash ท าหนาทในการรวบรวมรปแบบขอมลจากหลาย ๆ แหลง Input อกทงยงแปลงขอมลและท า
การสงขอมลไปตอยงแหลง Output โดย Output นนจะถกสงไปยง Elasticsearch ซง Logstash นนม
Plugin-based รองรบ Plugin ถง 3 ประเภท ไดแก Input Plugin, Filter Plugin และ Output Plugin ซง
Logstash นนรองรบรปแบบ Plugin ถง 200 แบบและยงเพมขนอกเรอย ๆ
2.3.2 Kibana
Kibana คอระบบแสดงผลและคนหาขอมลแบบเวบไซต ทถกออกแบบมาใหท างานรวมกบ
Elasticsearch และ Logstash โดยเฉพาะ ท าใหสามารถคนหาจดการขอมล และแสดงผลขอมลแบบ
Dashboard โดยสามารถแสดงผลไดอยางหลากหลาย Kibana คอเครองมอส าหรบท า Visualization
ของ Elastic Stack ซงจะคอยชวยเพมประสทธภาพในเบองลกมากขนเกยวกบขอมลดาน Elasticsearch
โดยการท า Visualization สามารถท าไดอยางหลากหลาย ทง Histograms, Maps, Line Charts, Time
Series และอน ๆ โดยสามารถสราง Visualization ดวยการคลกเมาสเพยงไมกครงและส ารวจขอมลแบบ
โตตอบ (Interactively) ซงจะท าใหสามารถสราง Dashboard ทสวยงามไดจากการรวบรวม Visualiza-
tion หลากหลายรปแบบ, แบงปน และรวมถงการสงรายงานผลทมคณภาพสง ในโครงงานจะใชเปนสวน
ชวยในการพฒนาหนา Web Interface
14
2.3.4 Beats
คอ Log Agent ชนดหนง ทถกออกแบบมาใหท างานรวมกบ Elasticsearch และ Logstash
โดยเฉพาะ ซง Beats นนเปนแพลตฟอรมของ Open Source Lightweight Data Shipper โดยท าหนาท
เปนสวนเตมเตมใน Logstash ซง Logstash นนเปนสวนประกอบของ Server-Side ในขณะท Beats จะ
ท าหนาทดาน Client Side โดย Beats นนจะมสวนประกอบหลายสวน ไดแก Core Library, Libbeat ซง
มหนาทในการจดหา API ในการสงขอมลจากแตละแหลงขอมล, โครงสรางของ Input Options และ Im-
plementing Logging ซง Beats นนจะถกตดตงในเครอง Client ทไมไดเกยวของกบสวนประกอบดาน
Server-Side เชน Elasticsearch, Logstash หรอ Kibana โดยภาพรวมของการท างานในระบบ Elastic
Stack จะเปนดงภาพ
ภาพท 5 การท างานของระบบ ELK ทใชในโครงงาน
2.3.4.1 Filebeat
เปน agent การจดสงขอมลการบนทกทมขนาดเลกจากไฟลโลคล (Local) Filebeat จะท างานในรปแบบไบนาร (Binary) และไมจ าเปนตองใชรนไทม (Runtime) เชน JVM ดงนนจงใชทรพยากรนอย และถกตดต งบนเครองแมขาย (Server) ซ งจะตรวจสอบไดเรกทอรหรอไฟลและสงตอไปยง Elasticsearch, Logstash หรอ Kafka มความสามารถในการจดสงบนทกจากหลายระบบไปยงระบบสวนกลาง/เซรฟเวอรในการประมวลผล
2.3.4.2 Winlogbeat
เปนแพลตฟอรมบน Windows XP หรอใหมกวาเพออานบนทกเหตการณอยางนอยหนงรายการ โดยใช Windows APIs กรองเหตการณตามเกณฑทก าหนดโดยผใชและจากนนสงขอมลเหตการณไปยงเอาตพตทก าหนดคาเชน Elasticsearch, Logstash หรอ Apache Kafka โดย Winlogbeat สามารถเกบขอมลเหตการณ เชนเหตการณแอปพลเคชน, เหตการณฮารดแวร, เหตการณความปลอดภยและเหตการณระบบ
15
2.3.5 Apache Kafka
Apache Kafka คอ distributed message queue โดยเรมแรก Kafka ถกสรางขนโดย LinkedIn
เปน open sourced ในชวงตนป 2011 และถกเผยแพรตออยางชา ๆ ผานทาง Apache Incubator
ตงแตป 2012 จากนนจงไดแยกบรษทออกมาจาก LinkedIn กอตงเปน บรษท Confluent เพอพฒนา
Kafka โดยเฉพาะ Kafka เปน platform ทใชกระจายขอความ (message) โดยมหลกการดงน
• ท าการเผยแพรขอมลอยางรวดเรวทละ records ในรปแบบ message queue หรอ ระบบ mes-saging
• ทดทานตอความผดปกตของ environment รอบขาง ดวยระบบ cluster • ท างานตามการรองขอของฝง Client • ท างานแบบกระจาย (Distributed system) • เปนระบบทคงทนตอความเสยหาย นนคอท างานไดแมระบบบางสวนจะเสยหาย • มการท างานแบบ Publish-Subscribe • ท าการบนทกหรอจดการขอมลตาง ๆ ใน Topic เทยบไดกบ Table ใน RDBMS • ผสรางขอมลและสงไปยง topic เรยกวา Producer • ผน าขอมลไปใชงานจาก topic เรยกวา Consumer • ขอมลทสงเขาไปใน topic จะถกจดเกบแบบถาวรลง file system เสมอ • ขอมลทถกจดเกบจะมอาย 168 ชวโมง ซงสามารถแกไขไดตาม use case • จะท าการบนทกขอมลลงไฟลหรอ log กอนท consumer จะเหนเพอน าไปท างานหรอ process
ตอไป ซงจะเรยกระบบนวา WAL (Write-Ahead Logging)
2.3.5.1 สถาปตยกรรมของ Apache Kafka
จากทอธบายมานน Apache Kafka จะม Producer, Consumer และ Topic โดยทในแตละ topic
นนจะแบงการเกบขอมลออกเปนกลม ๆ เรยกวา Partition จ านวนของ partition จะตองถกก าหนดไว
ตงแตตนซงไมควรเปลยนเมอระบบท างานแลวแสดงดงรป
ภาพท 6 สถาปตยกรรมของ Kafka
16
ขอมลทจดเกบในแตละ partition นน จะเรยงล าดบไปเรอย ๆ นนคอ ขอมลเกาจะอยดานหนา
ขอมลใหมจะอยดานหลง โดย consumer จะอานจากหนาไปหลง (อานตามคา offset ในแตละ partition)
ทส าคญการอาขอมลของ consumer มหลายรปแบบอกดวย จากรปในแตละ partition นนขอมลจะถก
เรยงล าดบเสมอ แสดงดงรป
ภาพท 7 ขอมลทจดเกบใน Partitions ของ Kafka
2.3.5.2 แนวคดโดยรวมของ Kafka
การจะเขาใจ Kafka เราตองรกอนวาสวนประกอบมอะไรบาง โดยหลกๆ มแค 8 อยาง
1. Producer ท าหนาทสงขอมลใหกบ topics ทก าหนดไว และกตองเลอก partition ภายใน topic
เอง ซงจะปกตท างานเปนแบบ round-robin เพอความสมดล หรอ อาจจะใช function อนในการ
กระจายกได
o application ทสง Message ไปหา Broker (Kafka server) โดยจะอยในรปแบบของ array of byte
o โดยทเวลา Producer สงขอมลออกไปจะสงทละ record ไมใชทเดยวหมด เชน ถาจะสงไฟลให Broker มนกจะสงทละ rows/record นนเอง
2. Consumer จะแทนตวเองดวย consumer group name โดยแตละ record ทอยใน topic จะถกสงใหเพยง 1 consumer ภายใต consumer group เทาน น เพราะฉะน นเราสามารถแบง process ของ consumer ออกเปนหลายเครองเพอชวยในการท างานได แตถา consumer groups ตางกนทงหมด record ทงหมดจะถก broadcast ใหกบ consumer ทงหมดเชนกน
o application ทรบ Message จาก Broker (Kafka server) ท Producer สงมา คอ con-sumer ของเราจะไมสงหา Producer ตรง ๆ จะตองไปหา kafka server
o Producer -> Broker (Kafka server) o Consumer -> Broker (Kafka server)
17
o Producer สงทละ rows/record/line เพราะฉะนน consumer กจะ request ไปท Broker (Kafka server) จนกวา Producer จะไมสงไป
ภาพท 8 การท างานระหวาง Producer -> Broker -> Consumer
3. Broker (Kafka server) เปนตวกลางในการ exchange message 4. Cluster กลมของคอมพวเตอรทท างานรวมกนเพอเปาหมายเดยวกน (distributed system)
ภาพท 9 การท างานของ Kafka Cluster
จากรปจะเหนวาเปนแบบ Multiple Broker ท างานเปนกลมนนเอง และจะมสวนของ Zookeeper
ซงคอ ผคม distributed system เชน Naming, Configuration, Synchronization เปนตน
5. Topic คอ หมวดหม หรอ ชอ group ของฐานขอมลทจะเผยแพร โดยสามารถมปลายทางไดหลายคน นนหมายถงอาจจะม consumer ตงแต 0 หรอ หลายคนกได ในการสงขอมลไปมาใน Kafka Stream จะมขอมลเยอะมาก ๆ การทจะรวาขอความไหนอยทไหน นนคอตองหา Unique key ซงตวนนกคอ Topic (หรอจะมองวา Topic คอ Unique key ใน database ได)
18
ภาพท 10 การท างานของ Kafka โดยแยก Topic
6. Partitions อยางทรวา Broker จะเปนคนเกบขอมลทสงไปมา แตบางทขอมลทเราเกบมนใหญมาก ๆ เกนกวาท computer เครองนงจะรบไหว เลยตองใช distributed system เขามาเลยมไอเดยทจะตองแบง data ออกเปน Partition หลาย ๆ สวน แลวกระจายไปเกบไวใน distribut-ed system นนเอง
7. Offset คอ sequence id ของ partition ทมความหมายตาม arrival ทมาถงกอนหลงนนเอง โดยหลกการของหาไฟลตาง ๆ เราจ าเปนตองร Topic Name, Partition Number, Offset เรากจะได direct ไปตรงนนได
ภาพท 11 ความหมายของ Offset ใน Kafka
8. Consumer Groups กลมของ consumer ทรวมกนเพอท าหนาทเดยวกน ดทภาพน
ภาพท 12 กลมของ Consumer ทท าหนาทเดยวกนใน Kafka
19
2.4 การวเคราะหและประมวลผลขอมลจราจรทางคอมพวเตอร
ขอมลจราจรทางคอมพวเตอร (Logs) ประกอบดวยขอมลเกยวกบสถานะและพฤตกรรมของระบบหรอแอปพลเคชน เมอใดกตามทมเหตการณเกดขน แตละระบบหรอแอปพลเคชนจะท าการสราง logs ขนมา ความถ จ านวนขอมลและรปแบบของขอมลทบนทกใน Logs จะแตกตางกนไปตามแตละระบบ โดยการทเราตองจดการกบขอมลปรมาณมาก การเกบรวบรวมขอมล การแยกขอมลทเกยวของและการวเคราะหใหใกลเคยงกบเวลาจรง (Near Real-Time) อาจเปนเรองทยงยาก
ดวยคณสมบตตาง ๆ ทชวยในการวเคราะหขอมลปรมาณมากแบบใกลเคยงกบเวลาจรง (Near Real-Time) กอนทจะท าการวเคราะหขอมล เราตองการเครองมอซงสามารถอ านวยความสะดวกในกระบวนการจดเกบ Logs, การแยกขอมลทส าคญออกจาก Logs และน าขอมลเหลานนมาเกบลงใน Elasticsearch ซงในสวนนจะเปน Logstash ซงเปนอกสวนประกอบหนงของ Elastic Stack และจะกลาวถงหวขอตาง ๆ ดงตอไปน
2.4.1 ความทาทายของการวเคราะหและประมวลผลขอมล
Logs คอการบนทกเหตการณหรอขอสงเกตตาง ๆ ทเกดขน โดย Logs นนถกสรางขนจากตวระบบเอง, แอปพลเคชน, อปกรณ, มนษย และอนๆ โดยทวไปแลว Logs จะประกอบดวยสองสวน คอ Timestamp (ชวงเวลาทเกดเหตการณขน) และ Data (ขอมลทเกยวของกบเหตการณนน)
Log = Timestamp + Data
วตถประสงคของ Logs คอ:
• การแกไขปญหา (Troubleshooting): เมอเกดบค (Bug) หรอปญหาขนกบระบบ สงแรกทควรตรวจสอบ วาอะไรคอสาเหตของปญหาคอ Logs ตวอยางเชน, เมอลองพจารณาจาก exception stack trace ภายใน Logs เราอาจพบสาเหตของปญหาไดอยางงายดาย
• เพอเขาใจพฤตกรรมของระบบหรอแอปพลเคชน ขณะทระบบหรอแอปพลเคชนท างานอยนนจะมลกษณะเหมอน Black box การทจะตรวจสอบหรอเขาใจวามอะไรเกดขนภายในระบบหรอแอปพลเคชนนนจ าเปนตองอาศย Logs
• การตรวจสอบ (Auditing) หลายองคกรตองปฏบตตามขอก าหนดบางประการและบงคบใหมการเกบ Logs ตวอยางเชน, การเขาสระบบ หรอ การท าธรกรรมทางการเงนทด าเนนโดยผใชงานมกจะถกเกบบนทกไวเปนชวงเวลา เพอวตถประสงคในการตรวจสอบ เพอวเคราะหหาการกระท าทเปนอนตรายจากผใชงานหรอ Hacker
• การวเคราะห เพ อคาดการณ ดวยความกาวหนาทางดาน Machine Learning, Data mining และ Artificial Intelligence, ในปจจบน การวเคราะหเชงคาดการณก าลงไดรบความนยม เนองจากการวเคราะหเชงคาดการณเปนการวเคราะหขนสงทใชในการคาดการณเหตการณทอาจเกดขนในอนาคต รปแบบทเปนผลลพธในอดตและขอมลทางธรกรรมตาง ๆ สามารถน ามาใชเพอประเมณความเสยงในอนาคต การวเคราะหเชงคาดการณยงชวยใหองคกรสามารถคดแบบเชงรก การ
20
คาดการณผลลพธและพฤตกรรมบนพนฐานของผลลพธทไดมานนไมไดเปนเพยงแคขอสมมตฐานเทานน ตวอยางของการวเคราะหเชงพยากรเชน การแนะน าภาพยนตรหรอสงของตาง ๆ ใหแกผใชงานไดเลอกซอ การตรวจจบการฉอโกง การเพมประสทธภาพแกแคมเปญทางดานการตลาดเปนตน
2.4.2 ปญหาในการวเคราะหและประมวลผลขอมล
จากตวอยางการใชงาน Logs ดงทกลาวไปแลวขางตน เราสามารถสรปไดวา Logs น นประกอบดวยขอมลมากมายทสามารถน าไปใชไดในหลายกรณ อยางไรกตาม การใชงาน Logs นนยงถอวามปญหาอยบาง ตวอยางปญหาในการใชงาน Logs:
• ไมมรปแบบตายตวหรอความสอดคลองกน (No common/consistent format): ทกระบบท าการสราง Logs ในรปแบบของตวเอง และในฐานะผดแลระบบหรอผใชงานเองกตองมความเชยวชาญระดบหนงเพอทจะเขาใจรปแบบของ Logs ทถกสรางขนในแตละระบบหรอแอปพลเคชน เมอรปแบบของ Logs แตกตางกน การคนหาขอมล Logs ในรปแบบทตางกนอาจเปนเรองทยงยาก ยกตวอยางจากภาพดานลาง จากภาพจะแสดงรปแบบของ SQL server Logs, Elasticsearch exception logs และ NGINX Logs
ภาพท 13 ตวอยาง Logs ทไมมรปแบบตายตวหรอความสอดคลองกน
• ไมมความเปนศนยกลาง (Logs are decentralized): Logs ถกสรางขนจากหลากหลายทรพยากร เชน ระบบ, แอปพลเคชน, อปกรณ, และอน ๆ ซง Logs นนจะกระจายอยในหลาย ๆ เซรฟเวอร ดวยการถอก าเนดของ Cloud Computing จงถอเปนความทาทายในการทจะคนหาขอมล Logs จากหลายๆ แหลง ในกรณน เครองมอทวไปอยาง find และ grep อาจไมเหมาะกบการใชงาน ดวยเหตน จงมความจ าเปนทตองมการจดการการท าศนยกลางขน ซงจะชวยอ านวยความสะดวกส าหรบผดแลระบบในการวเคราะหและคนหาขอมลทตองการ
21
• รปแบบเวลาไมสอดคลองกน (No consistent time format): Logs ถกสรางขนตามชวงเวลา (Timestamp) ชวงเวลาในการจดเกบ Logs ของแตละระบบหรอแอปพลเคชนจะจดเกบในรปแบบของตวเองจงถอเปนเรองยากในการทจะระบชวงเวลาทแนนอนของเหตการณทเกดขน Logs บางรปแบบมความใกลเคยงกบภาษาของระบบมากกวาภาษามนษย ตวอยางของของรปแบบเวลาทถกบนทกอยใน Logs:
Nov 14 22:20:10
[10/Oct/2000:13:55:36 -0700]
172720538
053005 05:45:21
1508832211657
• ขอม ล ไมม โครงสราง (Data is unstructured): เน อ งจาก Logs ไมมโครงสรางขอมล การพยายามวเคราะห Logs โดยตรงอาจเปนเรองทยงยาก กอนทจะเรมท าการวเคราะห Logs ตองมการท าใหขอมล Logs นนอยในรปแบบหรอโครงสรางทถกตองเพอความสะดวกในการเรมตนกระบวนการวเคราะหขอมล เครองมอทใชในการวเคราะหขอมลสวนมากสามารถใชไดกบขอมลแบบโครงสรางและขอมลแบบกงโครงสราง
2.4.3 การแกไขปญหาในกระบวนการวเคราะหและประมวลผลขอมล
ซงจะใช Logstash เขามาชวยในการแกไขปญหาในกระบวนการวเคราะห Logs เพราะเปน
เครองมอทใชในการเกบรวบรวมขอมลซงไดรบความนยมเปนอยางมาก เนองจากความสามารถในการ
ประมวลผลค าสง (Pipeline) แบบ เรยลไทม Logstash ยงสามารถชวยใหสราง Pipeline เพอใชในการ
เกบรวบรวมขอมลจากหลากหลายแหลงไดอยางงายดาย Logstash ม Input plugins และ output
plugins ซงงายตอการใชงาน Logstash ท างานรวมกบ ETL engine (Extract, Transform, Load)
2.4.3.1 คณสมบตของ Logstash
• Pluggable data pipeline architecture: Logstash ม Plugins กวา 200 ชดทถกพฒนาโดย Elastic stack และ open source community เพอใหสามารถเลอกใชไดตามความตองการ
• การเพมความสามารถ (Extensibility): Logstash ถกพฒนามาจาก JRuby และยงสนบสนน Plugins แบบ pipeline architecture ซงงายตอการสราง plugins ตามความตองการของผใช
22
• มการประมวลผลขอมลจากสวนกลาง (Centralized data processing): สามารถเกบรวบรวมขอมลและสามารถสงไปยงปลายทางทหลากหลายได
• ความหลากหลายและปรมาณ (Variety and volume): Logstash สามารถใชงานกบ Logs ไดทกประเภท ยกตวอยางเชน Apache, NGINX logs, system logs, windows event logs และยงสามารถเลอก metric จาก Application platform ทท างานบน TCP และ UDP ได Logstash ยงสามารถเปลยน HTTP Request ใหเปน Event และจดการ webhooks ส าหรบ Applications อยาง Meetup, GitHub, JIRA ได เปนตน อกทงยงสามารถรองรบการใชงานขอมลจากฐานขอมลเชงสมพนธ / NO SQL รวมถง Kafka ไดเปนตน
• ก ารท า งาน ร ว ม กน (Synergy): Logstash ส าม ารถ ท า ง าน ร ว ม ก น Elasticsearch, Beats, Kabana ได และนนท าใหการวเคราะห Logs แบบ end-to-end เปนเรองงาย
2.4.3.2 สถาปตยกรรมของ Logstash
Event process ของ Logstash หรอ pipeline ประกอบไปดวย 3 สวนคอ Inputs, Filters, Outputs โดย Logstash pipeline นนจ าเปนตองประกอบดวย 2 สวนคอ input และ output
ภาพท 14 Logstash Pipeline
• Input ท าหนาทสรางเหตการณ (Event)
• Filters ท าการเปลยนแปลง Input events
• Outputs ท าหนาทสงขอมลเหลานนไปยงปลายทาง
ส าหรบ Inputs และ Outputs นนสนบสนน Codecs ซงท าใหสามารถ encode และ decode ขอมลได เมอใดกตามตงแตขนตอนทขอมลเขาส pipeline หรอแมกระทงออกจาก pipeline โดยไมตองท าการ Filters แยก โดยปกตแลว Logstash ก าหนดล าดบ (queues) ในระหวางขนตอนการสงขอมลระหวาง pipeline ไวในหนวยความจ า (memory) หากเกดเหตการณผดปกตทสงผลให Logstash หยดท างานจะท าใหขอมล events ตาง ๆ ทถกเกบอยใน memory สญหายทงหมด เพอปองกนการสญหายของขอมล สามารถเปดให Logstash คงกระบวนการตาง ๆ ไวใน Disk ไดอยางตอเนอง (persistent queues)
23
สามารถเปดการใชงาน Persistent queues ไดโดย set property queue โดยพมพ persistent
ใน logstash.yml ซ ง อ ย ท LOGSTASH_HOME/config/ ซ ง logstash.yml เ ป น ไฟ ล ท ใช ใน ก าร
configuration ของ Logstash โดยปกต heap size ของ Logstash มขนาด 1 GB และสามารถถก
เข ย น ท บ ไ ด โ ด ย ก า ร ต ง ค า Xms แ ล ะ Xms properties ใ น ไ ฟ ล jvm.options ซ ง อ ย ท
LOGSTASH_HOME/config/
Logstash pipeline ถกเกบอยใน Configuration file (. conf) โดยสวนของการตงคาแสดงดงขอมลดานลาง:
ในแตละสวนประกอบดวย Configuration Plugin อยางนอยหนงชด โดยสามารถตงคา Plugin
ไดโดยตงชอใหกบ plugin และท าการ set value pair key โดยการ assign value ใหกบ key จะใช
สญลกษณ =>
ท าการสราง conf folder ภายใน LOGSTASH_HOME และสรางไฟล simple.conf แยกไวใน Directory LOGSTASH_HOME/conf folder/
สงเกตวาไฟลนประกอบดวยสวนประกอบทจ าเปนสองสวน คอ input และ output ในสวนของ input ก าหนดให input plugin มชอวา stdin ซงจะใชส าหรบรบคา Default parameters และในสวนของ output plugin จะใชชอ stdout ซงใชรบคา rubydebug codec, stdin ใชส าหรบการอานขอมลในรปแบบ standard input และ stdout ใชในการเขยนขอมล standard output สวน rubydebug codec จะท าการแสดงขอมล Event ของ Logstash ดวย ruby awesome print library และยงประกอบดวยสวนของ Filter ซงประกอบไปดวย mutate plugin ท าหนาทในการแปลงขอมลทเขามาใหกลายเปนตวอกษรพมพใหญ โดยทดสอบการใชงาน Logstash โดยใชงาน new pipeline/configuration ทถ ก เกบอย ใน simple.conf ไฟลดงขอมลทแสดงดานลาง
[[email protected] ~]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf/simple.conf
เมอเรมใชงาน Logstash ลองปอน input “logstash” หลงจากปอน input แลวตรวจสอบผลลพธ ซงจะแสดงดงขอมลดานลาง:
Input { }
Filter { }
Output { }
#simple.conf
input { stdin { } }
filter { mutate { uppercase => [ "message" ] } }
output { stdout { codec => rubydebug } }
24
{
"message" => "LOGSTASH",
"@version" => "1",
"host" => "elaska.boontung.net",
"@timestamp" => 2020-03-14T10:00:00.000Z
}
อยางทแสดงใหเหน Logstash จะท าการเพม Timestamp เขาไปในสวนของ message ดวยตามชวงเวลาท event นนถกสรางขน นอกจากนนยงเพมขอมล host และ version number เขาไปดวย ในสวนของ output จะผาน rubydebug codec กอนทขอมลจะถกน ามาแสดงผลและ event ตาง ๆ ทรบเขามานนจะถกเกบอยใน field name message เสมอ
2.4.3.3 ปลกอน (Plugins) ของ Logstash
Logstash ม plugin มากมาย (input, filter, codec และ output plugin) โดยท Plugin นนเปน self-contained package หรอเรยกวา gems อยบน RubyGems โดยสามารถเรยกดรายชอ plugin ไดโดยการโดยพมพค าสง: logstash-plugin list
2.4.3.4.1 Input Plugins ใชส าหรบการตงคากลมของเหตการณ (event) ทถก
สงตอไปยง Logstash โดยสามารถตงคาไดทงแบบ single input และ multiple input source โดยแสดง
รายการ Plugin ตามตารางดานลาง
ตารางท 1 Input Plugins ของ Logstash
logstash-input-beats logstash-input-
couchdb_changes
logstash-input-
elasticsearch
logstash-input-
ganglia logstash-input-xmpp logstash-input-unix logstash-input-syslog logstash-input-stdin logstash-input-udp logstash-input-twitter logstash-input-tcp logstash-input-sqs logstash-input-
snmptrap
logstash-input-redis logstash-input-pipe logstash-input-log4j logstash-input-s3 logstash-input-rabbitmq logstash-input-
lumberjack
logstash-input-
http_poller logstash-input-exec logstash-input-file logstash-input-http logstash-input-imap logstash-input-gelf logstash-input-jdbc logstash-input-irc logstash-input-
generator logstash-input-
heartbeat
logstash-input-graphite สามารถศกษารายละเอยดเพมเตมของแตละ Plugin ไดจาก https://www.elastic.co/guide/en/logstash/7.4/input-plugins.html
25
2.4.3.4.2 Output Plugins ใชส าหรบสงขอมลไปยงปลายทาง โดยสามารถตง
คาไดทงแบบ single input และ multiple input source โดยแสดงรายการ Plugin ตามตารางดานลาง:
ตารางท 2 Output Plugins ของ Logstash
logstash-output-
cloudwatch
logstash-output-
nagios
logstash-output-irc logstash-output-pagerduty logstash-output-xmpp logstash-output-tcp logstash-output-
stdout
logstash-output-redis logstash-output-
webhdfs
logstash-output-statsd logstash-output-sns logstash-output-rabbitmq logstash-output-udp logstash-output-sqs logstash-output-s3 logstash-output-pipe logstash-output-csv logstash-output-
graphite
logstash-output-file logstash-output-
elasticsearch logstash-output-http สามารถศกษารายละเอยดเพมเตมของแตละ Plugin ไดจากhttps://www.elastic.co/guide/en/logstash/7.4/output-plugins.html
2.4.3.4.3 Filter Plugins ใชส าหรบแปลงขอมล โดยหลายๆ Plugin สามารถ
ท างานรวมกนได, ล าดบของ Plugin จะเปนตวก าหนดล าดบของขอมลทจะท าการแปลง , Filter plugin
เปนเสมอนตวกลางระหวาง input และ output plugin และเปนตวเลอกเสรมในการตงคา Logstash โดย
แสดงรายการ Plugin ตามตารางดานลาง:
ตารางท 3 Filter Plugins ของ Logstash
logstash-filter-cidr logstash-filter-clone logstash-filter-grok logstash-filter-geoip logstash-filter-date logstash-filter-csv logstash-filter-throttle logstash-filter-xml logstash-filter-fingerprint logstash-filter-dns logstash-filter-drop logstash-filter-dissect logstash-filter-syslog_pri logstash-filter-useragent logstash-filter-split logstash-filter-translate logstash-filter-uuid logstash-filter-urldecode logstash-filter-sleep logstash-filter-ruby logstash-filter-mutate logstash-filter-metrics logstash-filter-kv logstash-filter-json สามารถศกษารายละเอยดเพมเตมของแตละ Plugin ไดจาก
https://www.elastic.co/guide/en/logstash/7.4/filter-plugins.html
26
2.4.3.4.4 Codec Plugins ใชส าหรบ เขารหส (encode) และ ถอดรหส (de-
code) ขอมลเหตการณทเขามาหรอขอมลเหตการณทสงออกไปจาก Logstash, Codec สามารถใชงาน
ไดทงในสวนของ input และ output โดย Input codec สามารถถอดรหสขอมลเหตการณกอนทจะสงผาน
เขามายง Input สวน output codec นนท าการเขารหสขอมลเหตการณกอนสงออกจาก output โดย
แสดงรายการ Plugin ตามตารางดานลาง:
ตารางท 4 Codec Plugins ของ Logstash
logstash-codec-netflow logstash-codec-cef logstash-codec-es_bulk logstash-codec-dots logstash-codec-
collectd
logstash-codec-multiline logstash-codec-
msgpack
logstash-codec-line logstash-codec-
rubydebug
logstash-codec-json logstash-codec-
json_lines
logstash-codec-fluent logstash-codec-plain logstash-codec-
graphite
logstash-codec-
edn_lines
logstash-codec-edn สามารถศกษารายละเอยดเพมเตมของแตละ Plugin ไดจากhttps://www.elastic.co/guide/en/logstash/7.4/codec-plugins.html
2.4.3.4 การท างานของ Logstash Plugins
• File plugin ใชส าหรบ Stream ขอมลเหตการณจากไฟลทละบรรทด มลกษณะ
การท างานคลายค าสง -0f ใน linux/unix โดย file จะท าการตดตามทก ๆ การเปลยนแปลงทเกดขน
ภายในไฟลและต าแหนงสดทายทไฟลนน ๆ ถกอาน นอกจากนนยงสามารถตรวจสอบการ rotate ไฟล
ไดโดยอตโนมตซง Plugin นยงมตวเลอกในการอานไฟลจากจดเรมตนของไฟลอกดวย
• File plugin จะเกบขอมลต าแหนงปจจบนของไฟลแตละไฟลโดยท าการบนทก
ต าแหนงปจจบนลาสดแยกไวในทชอ sincedb ซงสะดวกในการ stop หรอ restart logstash โดยไม
พลาดทกบรรทดทถกเพมเขาไปในไฟลในขณะท logstash อยในสถานะ stop
2.4.3.5 การจดการขอมลดวย Logstash
การวเคราะหขอมลทมโครงสรางนนงายกวาและชวยใหคนหาการวเคราะหมความหมายและลกกวาการวเคราะหขอมลทไมมโครงสราง เครองมอการวเคราะหสวนใหญขนอยกบโครงสรางของขอมล ซง Kibana ใชส าหรบการวเคราะหและมมมมองทสามารถใชงานไดอยางมประสทธภาพหากขอมลใน Elasticsearch ถกตอง (ขอมลทถกบนทกโหลดลงในฟลดทเหมาะสมและประเภทของฟลดนนมความเหมาะสมดวยเชนกน)
โดยทวไปขอมลทถกบนทกประกอบดวยสองสวน:
logdata =timestamp + data
27
timestamp คอเวลาทเกดเหตการณ
data เปนขอมลทเกยวกบเหตการณทเกดขน
ขอมลอาจมเพยงหนงหรอหลายขอมล ตวอยางเชน ถาใชบนทกการเขาถง Apache ขอมลทไดจะประกอบไดดวย URL, IP address และอน ๆ ดงนนจงจ าเปนตองมกลไกส าหรบดงขอมลเหลานและท าการแปลงขอมลทไมมโครงสรางเหลานใหเปนขอมลทมโครงสราง นคอสวนตวกรองของ Pipeline Logstash ทมประโยชน สวนปลกอนตวกรองเปนอกหนงตวทชวยในการจดการขอมล
ปลกอนตวกรองถกใชเพอท าการแปลงขอมล ชวยใหสามารถรวมหนงปลกอนหรอมากกวาได และล าดบของปลกอนถกก าหนดล าดบในการแปลงขอมล ตวอยางตวกรองใน Pipeline Logstash จะมลกษณะดงน
ภาพท 15 ตวอยางของ Filter Logstash Pipeline
จากรปดานบน เหตการณทสรางจากปลกอนอนพตจะผานแตละปลกอนทถกก าหนดไวในสวน
ของตวกรองในระหวางนนเหตการณจะถกแปลงตามปลกอนทก าหนด สดทายจะถกสงไปยงปลกอน
เอาตพตเพอสงเหตการณไปยงปลายทาง
2.4.3.5.1 ตวกรอง Mutate
ตวกรองนอนญาตใหท าการเปลยนแปลงฟลดได สามารถเปลยนชอ เปลยนแถบและปรบเปลยนเขตขอมลในเหตการณ โดยท าการสรางไฟล csv_file_mutate.conf ทสรางไวกอนหนานดวยตวกรอง Mutate และเขาใจการใชงาน ซง code ตอไปนแสดงการใชงานตวกรอง Mutate
#csv_file_mutate.conf
input {
file {
path => "\root\logs\users.csv"
start_posiiton => “beginnings”
sincedb_path => “NULL”
28
}
}
filter {
csv {
autodetect_column_names => true
}
mutate {
covert => {
“Age” => “integer”
“salary” => “float”
}
rename => { “Fname” => “Firstname”
“LName” => “Lastname” }
gsub => [
“EmailId”, “\.” , “_”
]
strip => [“Firstname” . “Lastname”]
uppercase => [“Gender”]
}
}
output {
stdout {
codec => rubydebug
}
}
rename การตงคาการเปลยนชอภายในตวกรอง ตวอยางกอนหนานเปลยนชอฟลด FName เปนชอและ LName เปนนามสกล
gsub ใชเพอจบค regular expression กบคาฟลดและแทนทการจบคทงหมดดวยสตรง เนองจาก regular expression ใชงานไดกบสตรงเทานน ฟลดนจงสามารถใชฟลดทมสตรง (String) หรออารเรย (Array) ของสตรง (String) เทานน ในตวอยางกอนหนา ในฟลด EmailId จะถกแทนทดวย _
29
uppercase ใชในการแปลงสตรงเปนตวพมพใหญ ในตวอยางกอนหนาคาในฟลดเพศจะถกแปลงเปนตวพมพใหญ
ในท านองเดยวกนโดยใชการตงคาตาง ๆ ของ Mutate Filter เชน lowercase, update, replace, join และ merge ได
2.4.3.5.2 ตวกรอง Grok
เปนปลกอนทใชบอยในการแยกวเคราะหขอมลทไมมโครงสรางลงในขอมลทมโครงสรางจงท าใหสามารถสบคนและกรองไดอยางงายดาย กลาวงาย ๆ วา Grok เปนวธการจบคบรรทดกบรปแบบ และการจบคสวนเฉพาะของบรรทดกบฟลดเฉพาะ
ไวยากรณทวไปของรปแบบ grok มดงน
%{PATTERN:FIELDNAME}
PATTERN เปนชอของรปแบบทจะจบคขอความ FIELDNAME เปนตวระบส าหรบสวนของขอความทถกจบค โดยคาเรมตนฟลด grok เปนสตรง ไม float หรอ int กอยางใดอยางหนง
สามารถใชรปแบบตอไปน:
%{PATTERN:FIELDNAME:type}
Logstash จดสงประมาณ 120 รปแบบตามคาเรมตน รปแบบเหลานสามารถน ามาใชซ าและขยายได หนงในนยงสามารถสรางรปแบบทก าหนดเองโดยรวมรปแบบทมอย ซงรปแบบเหลานขนอยกบไลบรารของ Oniguruma (BSD licensed regular expression)
https://en.wikipedia.org/wiki/Oniguruma
รปแบบประกอบดวย label และ regex ตวอยางเชน
USERNAME [a-zA-Z0-9._-]+
รปแบบสามารถมรปแบบอน ๆ ตวอยางเชน
HTTPDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT}
รายการรปแบบท สมบ รณ สามารถด ไดท https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns
หากรปแบบไมพรอมใชงานสามารถใชนพจนทวไปโดยใชรปแบบตอไปน:
(?<field_name>regex)
ตวอยางเชน regex (? <phone> \d\d\d-\d\d\d-\d\d\d\d) จะตรงกบหมายเลขโทรศพทเชน 123-123-1234 และแยกวเคราะหคาลงในชองโทรศพท
30
ลองดตวอยางเพอท าความเขาใจกบ grok ใหดขน
#grok1.conf
input {
file{
path => "/root/logs/msg.log”
start_position => "beginning"
sincedb_path => "NULL"
}
}
filter {
grok{
match => {"message" =>
"%{TIMESTAMP_ISO8601:eventtime}
%{USERNAME:userid} %{GREEDYDATA:data}" }
}
}
output {
stdout {
codec => rubydebug
}
}
หากบรรทดอนพตอยในรปแบบ "2020-04-14T08: 00: 10.000 + 00: 00 tmi_19 001 นคอขอความสม" ดงนนเอาตพตจะเปนไปตามทแสดงในบลอกตอไปน:
{
"path" => "/root/logs/msg.log",
"@timestamp" => 2020-04-14T08:00:10.000Z,
"data" => "this is a random message\r",
"@version" => "1",
"host" => "elaska.boontung.net",
"messageId" => 1,
31
"eventtime" => "2020-04-14T08:00:10.000+00:00",
"message" => "2020-04-14T08:50:10.000+00:00 tmi_19 001 this is a random message\r",
"userid" => "tmi_19"
}
มเครองมอท http://grokdebug.herokuapp.com ซงจะชวยสราง
2.4.3.5.3 ตวกรอง Geoip
ปลกอนนใชเพอเพมขอมลบนทก เมอไดรบทอย IP แลวจะเพมทตงทางภมศาสตรของทอย IP โดยท าการคนหากบฐานขอมล GeoLite2 City ส าหรบทอย IP ทถกตองและเตมฟลดดวยผลลพธ ฐานขอมล GeoLite2 City เปนผลตภณฑขององคกร Maxmind และอยภายใตใบอนญาต CCA-ShareAlike 4.0
ดวยฐานขอมล GeoLite2 City ดงนนเมอท าการคนหามนไมจ าเปนตองท าการเรยกเครอขายใด ๆ ดงนนการคนหาจงท าไดอยางรวดเรว
พารามเตอรทจ าเปนส าหรบปลกอนนคอ source ซงยอมรบทอย IP ในรปแบบสตรง ปลกอนนสรางฟลด geoip พรอมรายละเอยดทางภมศาสตรเชนประเทศรหสไปรษณย ภมภาค เมองและอน ๆ ฟลด [geoip] [location] จะถกสรางขนหากการคนหา GeoIP แลวท าการสงคนละตจดและลองจจด และมนถกแมปกบประเภท geo_point เมอสรางดชนไปยง Elasticsearch ฟลด geo_point สามารถใชส าหรบการสบคนเชงพนทของ Elasticsearch, facet และฟงกชนการกรองและสามารถน ามาใชเพอสรางการแสดงแผนทของ Kibana
ภาพท 16 ตวกรอง GeoIP
32
บทท 3
ระบบทน าเสนอ
3.1 ภาพรวมของระบบ
การออกแบบและพฒนาระบบจดการขอมลจราจรทางคอมพวเตอรในโครงการน จะตองศกษา
โครงสรางการท างานของซอฟตแวร Open Source ไดแก ELK และ Apache Kafka น ามาออกแบบการ
เชอมตอใหท างานรวมกนได ใหตรงความตองการขององคกร ทความตองการแตกตางกน โดยตอง
ออกแบบวธการสงและรบขอมลจราจรทางคอมพวเตอร และการจดเกบขอมลจราจรอยางไรใหงายตอ
การบรหารจดการและประหยดคาใชจาย ซงจะมรปแบบและฟงกชนการท างานและใชงานดงภาพ
ดานลาง
ภาพท 17 ภาพรวมการท างานของระบบในโครงงาน
33
3.2 การออกแบบโครงสรางของระบบ
โดยการออกแบบการท างานของระบบรวมทงการพฒนาการท างานของเวบอนเตอรเฟสเพมเตม
นน เพอใชในการจดการระบบ , การสรางเงอนไขตามเหตการณและแจงเตอน และยงสามารถออก
รายงานสรปขอมลเหตการณตามหนาแสดงผลแดชบอรด (Dashboard) รวมถงการสรปขอมลออกเปน
รปแบบเอกสารไดเชน PDF จงไดออกแบบแผนผงโครงสรางการท างานของระบบ ดงภาพดานลาง
ภาพท 18 แผนผงโครงสรางออกแบบการท างานของระบบในโครงงาน
3.2.1 Logs Forwarders
- จะน าขอมลจากเครองแมขาย อปกรณตาง ๆ รวมถงขอมลจากภายนอกสงเขาไปท
ระบบ เชน Firewall, Linux, Windows และ Stream Data เชน ขอมลพยากรณอากาศ
3.2.2 Logs Receiver
- จะเปนสวนในการรบขอมลหรอดงขอมลมาจากเครองแมขาย อปกรณตาง ๆ หรอ
ขอมลทมาจากภายนอกโดยสามารถรบขอมลไดทง 2 สวน ทง Logstash และ Kafka โดยขอมลทม
ขนาดใหญมาก ๆ จะท าการสงมาท Kafka และจะท าการสงขอมลตอไปท Logstash เพอแยกแยะขอมล
กอนทจะสงไปในสวนของ Logs Management
3.2.3 Logs Management
- ในสวนนจะมการท างานและน าขอมลจาก Logstash มาประมวลผล ทมขอมลการคด
แยก ขอมลทท าการตกแตงเพอเลอกในสวนทมประโยชนกอนทจะสงไปให Elasticsearch ในการสราง
ขอมลเอกสาร (Documents) และจดท าดชนของขอมล (Index Data) เพอจดเกบในฐานขอมลตอไป
3.2.4 Reverse Proxy, Multiple domains / Websites
- ในสวนนจะใชซอฟตแวรทชอวา เอนจนเอกซ (NGINX) คอ ซอฟตแวรโอเพนซอรส
ส าหรบ Web service แบบพรอกซยอนกลบ (Reverse Proxy) และการลอกอนระบตวตนในเบองตน
(Basic Authentication) เพอใชจดการกบการใชงานผาน HTTP หรอ HTTPS ของ Kibana
34
3.2.5 Elastic Security
ในสวนนจะเพมฟงกชน Security ในสวนของ Authentication กอนเขาใชงานระบบ ELK ไดตอง
มการ Login เขาอกครงนง ซงเปนเปดฟงกชนการท างานดานความปลอดภยเพมขน
3.2.6 Visualizing and Dashboard
- ในสวนนจะมซอฟตแวร Kibana ในการคนหาขอมล และแสดงผลขอมลจราจรทาง
คอมพวเตอรทดงขอมลมาจาก Elasticsearch
3.3 การออกแบบการทดลองระบบ
ส าหรบการออกแบบการตดตง สามารถท าการตดตงไดบนเครองแมขายหรอบนระบบจ าลอง
เครองแมขาย (Virtual Machine) ในโครงงานนจะท าการตดตงบนระบบจ าลองเครองแมขายทงหมด
3.3.1 การตดตงระบบปฏบตการ CentOS Linux
โดยซอฟทแวรระบบจดการขอมลการจราจรทางคอมพวเตอร (ELK) จะท าการตดตงบนระบบปฏบตการ CentOS Linux Version 7 ซงเปน Virtual Machine (VM) อยบนระบบ VMWare Workstation
ภาพท 19 หนาจอการตดตงระบบปฏบตการ CentOS Version 7
3.3.2 การตดตงระบบ Elasticsearch, Logstash และ Kibana
ตดตงซอฟทแวร ElasticSearch, Logstash, Kibana บนเครองคอมพวเตอรแมขายหรอเครองคอมพวเตอรจ าลอง (Virtual Machine) ซงระบบสามารถท าการสบคนขอมลการจราจรทางคอมพวเตอรจากอปกรณเครอขายและระบบคอมพวเตอร ในรปแบบ Grid View, แสดงหรอซอนแถวขอมล, การจดเรยงฟลดตาง ๆ ของขอมลการจราจรทางคอมพวเตอร, แสดงกราฟในรปแบบ histograms, line graphs, pie charts, sunbursts และยงสามารถแสดงขอมลในรปแบบ geolocation ได
35
ภาพท 20 หนาการใชงานของซอฟทแวร Kibana
3.3.3 การตดตงระบบ NGINX
ตดตงระบบ NGINX บนเครองคอมพวเตอรแมขายหรอเครองคอมพวเตอรจ าลอง (Virtual Machine) เพอใชในการ Reverse Proxy ไปยงระบบ Kibana ท Port 5601 เพอใชจดการกบการใชงานผาน HTTP โดยท าการ redirect ไปท HTTPS อตโนมต ดงภาพดานลาง
ภาพท 21 การตงคา NGINX
36
3.3.4 การตดตงระบบ Apache Kafka
การตดตงซอฟตแวร Kafka บนเครองคอมพวเตอรแมขายหรอเครองคอมพวเตอรจ าลอง (Virtual Machine) เพอใชในการท า Data pipeline ในการรบขอมลการจราจรทางคอมพวเตอรทเปนรปแบบสตรมขอมล (Stream Data) ไดแบบใกลเคยงเวลาจรง (Near Real-Time)
ภาพท 22 ภาพ Kafka รปแบบ Single Node
3.3.5 ออกแบบรปแบบของขอมล (Parser Logs)
โดยในสวนนจะท างานบนซอฟตแวร Logstash เปนหลกเพอใช Grok Pattern และ Regex ในการชวยกนแยกขอมลดบ (Raw Logs) เพอจดการ Field ของขอมลดบทไดรบมาจากอปกรณตาง ๆ ในโครงงาน เพอมาจดเรยงในรปแบบทจดการและเขาใจงาย ในตวอยางตามตารางดานลาง โดยออกแบบ Pattern ฟลดของขอมลทจะสงเขามาทระบบจะอางองในหวขอ 2.4.3.5.2 ตวกรอง Grok
3.3.5.1 การก าหนดฟลดขอมล (Field Data)
ตวอยางการก าหนดฟลดขอมล (Field Data) ของอปกรณ Firewall โดยตองน าตวอยางของ Logs มาจากอปกรณตาง ๆ เพอน ามาออกแบบชอของฟลด (Field Name) และเขยน Grok Pattern หรอ Regular Expression Parser ในกรณทไมสามารถใช Grok Pattern ได
ตารางท 5 การก าหนดฟลดขอมล (Field Data) ของ Snort-NIDS ทใชในโครงงาน
ชอของฟลด (Field Name) Grok pattern หรอ Regex parser
Timestamp %{SYSLOGTIMESTAMP:Timestamp}
DeviceSource %{SYSLOGHOST:DeviceSource}
Rule Name (?<Rule Name>.*?)
Classification %{DATA:Classification}
Priority %{DATA:Priority}
Protocol %{DATA:Protocol}
Src_IP %{DATA:Src_IP}
37
ชอของฟลด (Field Name) Grok pattern หรอ Regex parser
Src_Port %{DATA:Src_Port}
Dst_IP %{DATA:Dst_IP}
Dst_Port %{GREEDYDATA:Dst_Port}
3.3.5.2 การสราง Fields Data
การสราง Fields Data จะท าการสรางดวยการเขยน Grok Pattern โดยใช Grok Debugger ใน Kibana และการน า Grok Pattern ไปใชใน Logstash ซงสามารถท าไดดงน
➢ การเขยน Grok Pattern โดยใช Grok Debugger ในเมนของ Kibana > Dev Tools ตามภาพ
ภาพท 23 การเขยน Grok Pattern โดยใช Grok Debugger ใน Kibana
เปนการเขยน Grok Pattern โดยใช Grok Debugger ใน Kibana ซงจะท าการกดทเมน Dev
Tools (1) และท าการน า Raw Logs ทไดจากอปกรณตาง ๆ มาใสในชอง Sample Data (2) และท าการ
เขยน Grok Pattern ในชอง Grok Pattern (3) ทดสอบวา Grok Pattern ใชงานไดหรอไมใหกดท Simu-
late (4)
38
ภาพท 24 ภาพตวอยางการเขยน Grok Pattern โดยใช Grok Debugger
ภาพท 25 Field Data ทไดจากการเขยน Grok Pattern
หลงจากทได Grok Pattern ทใชงานได ใหน า Grok Pattern ไปใชงานใน Logstash เพอแยกวเคราะหขอมลทไมมโครงสรางลงในขอมลทมโครงสรางจงท าใหสามารถสบคนและกรองได อยางงายดาย โดยการเขยน Filter โดยการใช tags ทท าการสราง field ไวตอนแรก และใชฟงกชน grok ในการ match จาก field message
ภาพท 26 การน า Grok Pattern ไปใชใน Logstash
39
3.3.6.3 การสราง Input Filter
เพอเปนการรบขอมลในรปแบบตาง ๆ ซงทแนะน าจะใหรบขอมลเปนแบบ Syslog โดยการ
เขยน Input Filter ก าหนด Protocol ก าหนด Type ของ logs และการก าหนด Port ในการรบขอมล
ภาพท 27 Input Filter ของการรบขอมลจาก Beats
ภาพท 28 Input Filter ของการรบขอมล Syslog
ภาพท 29 Input Filter ของการรบขอมลจาก Kafka
3.3.6.4 การสราง Tags Filter
- การสราง Filter logs โดยการก าหนด Tags
จากการออกแบบ field data ในเบองตน เราจะท าการเขยน Filter Logs และการก าหนด tags กอนโดยใช Logstash โดยการเขยน filter logs โดยการก าหนด tags มประโยชนดงน
40
➢ ใชในการคนหาอปกรณทสงขอมลเขามา
➢ เพอใชในการสราง Visualize
➢ ใชในการแบงแยกประเภทของอปกรณทสงขอมลเขามา
ภาพท 30 การเขยน Tags Filter เพอระบอปกรณ
จากภาพตวอยาง จะก าหนด type ของ logs กอน ซงตอน Input Filter เราก าหนดใหรบเปน
Syslog Type เสรจแลวท าการเขยน if [message] เพอใหคนหาค าทเปน keyword เฉพาะทอยใน Raw
Log นน จากนนจะท าการใช Mutate Filter ในการเพมขอมล Fields Data เฉพาะทชอวา tag โดยใหคา
เทากบชออปกรณหรอประเภทของอปกรณทตองการเชน ชออปกรณคอ NIDS-Snort
3.3.6.5 การสราง Output Filter ดวย Logstash
การเขยน Output Filter ส าหรบสงขอมลออกไปยงระบบตาง ๆ ทตองการ โดยใช Logstash ซงในทนจะท าการตงคาใหสงไปยง Elasticsearch เพอจดท า Index ซงสามารถท าการเขยน Output Filter ไดดงน
- Output Filter สงขอมลไปยง Elasticsearch
ซงจะเปดหวดวยการสราง output และก าหนดวาถาเจอ tags ตามชออปกรณทสงขอมลมาใหท าการสงขอมลทท าการแปลงเปน JSON Format Documents แลวไปยง Elasticsearch และตามดวย Port 9200 และใหท าการสราง Index ชอตามทตองการตามดวย parameter ทระบ ป.เดอน.วน เพอแยก Index ในการเกบใหคนหาขอมลไดงายขน และเพอตรวจสอบขนาดของขอมลวามเยอะแคไหนในแตละวนไดดวย โดยรายละเอยดจะอยดงภาพ
ภาพท 31 การเขยน Output Filter สงขอมลไปยง Elasticsearch
41
บทท 4
ผลการทดลองระบบ
4.1 วธการและสภาพแวดลอมของการทดลอง
จากการออกแบบผงโครงการเครอขายของโครงงาน และการออกแบบระบบตาง ๆ ตามบทท 3
ท าใหสามารถออกแบบแผนผงเครอขายเพอท าการทดสอบตามโครงงานได ดงรปท 32 ดงน
การทดลองระบบในโครงงานนจะด าเนนการโดยใช Kali Linux และสรางสครป (Script) ท าการ
ทดสอบโจมต ระบบเครองคอมพวเตอรแมขายระบบปฏบตการลนกซ (Linux Server) และมในสวนของ
ไฟลวอล (Firewall) โดยใช PfSense ซงท าเปนเกตเวย (Gateway) เพอตรวจสอบพฤตกรรมการใชงาน
เครอขาย และมระบบแจงเตอนการบกรกทางเครอขายคอมพวเตอร (Network Intrusion Detection
System: SNORT) เพมเตมเขามา เพอแจงเตอนเหตการณการโจมตตามรปแบบ (Signature Attack)
ตาง ๆ โดยอปกรณทงหมดนจะสงขอมล Logs ไปใหระบบจดการขอมลจราจารทางคอมพวเตอรใน
โครงงาน และมการแจงเตอนผานระบบ Line Notify ตามแผนผงภาพดานลางน
ภาพท 32 แผนผงภาพวธการทดลองระบบในโครงงาน
โดยทแตละเซรฟเวอรสามารถเชอมตอออกอนเตอรเนตไดเพราะจะตองท าการเทยบเวลากบ
เซรฟเวอร NTP ทอยภายนอก เพอใหมเวลาทตรงกน และมการแจงเตอนผานระบบ Line Notify โดยแต
ละเครองมการตดตงซอฟตแวร ดงน
42
1. Attacker (Kali Linux) การทดลองโจมตโดยใช shell script
2. Firewall (PfSense) ท าหนาทเปน Gateway
3. NIDS (SNORT บน CentOS 7) ท าหนาทเปนระบบแจงเตอนการบกรกเครอขาย
4. Linux (CentOS 7) ท าหนาทเปนเครองคอมพวเตอรลกขาย
5. Centralize Logs Management (CentOS 7 + ELK + Kafka + NGINX) ท าหนาทเปน
ระบบคนหา ประมวลผลและม Kibana ใชในการแสดงผลขอมลทางคอมพวเตอร
โดยระบบจ าลองทท าการทดลองในโครงงานน จ าลองสภาวะเสมอนกบการใชงานจรง โดยระบบ
ตดตงบนระบบ Virtual Machine (VM) ทงหมด
4.1.1 การทดลองระบบคนหา ประมวลผลและแสดงผลขอมลจราจรคอมพวเตอร
ท าการจ าลองการโจมตจาก Attacker (Kali Linux) โดยการสรางสครปการโจมตในรปแบบเดา
รหสผาน (Brute Force Attack) ไปทเครองคอมพวเตอรลกขาย Linux โดยจะสรางกฏการตรวจจบไวท
ระบบแจงเตอนการบกรกเครอขายซงดกจบเหตการณภายในเครอขายของระบบจ าลองน เมอเหตการณ
ตรงกบรปแบบ Signature กจะท าการแจงเตอนโดยการสรางขอมลจราจรทางคอมพวเตอรขนและสง
ขอมลดงกลาวไปทระบบคนหา ประมวลผลและการแสดงผลขอมลทางคอมพวเตอร โดยท าการทดสอบ
ระบบประมวลผลทง Logstash และ Apache Kafka เพอเปรยบเทยบ และท าการแสดงผลทหนา
แสดงผล (Dashboard) บน Kibana
ภาพท 33 หนาลอกอนระบบคนหา ประมวลผลและแสดงผลขอมลจราจรทางคอมพวเตอร
43
4.1.2 การทดลองการแจงเตอนเหตการณการโจมต
โดยการแจงเตอนจะน าขอมลการจราจรคอมพวเตอรจากระบบแจงเตอนการบกรกเครอขายมา
ท าการแจงเตอนผาน Line Notify โดยการน าขอมลจากระบบคนหา ประมวลผลและการแสดงผลขอมล
ทางคอมพวเตอร สงออกมาเปนในรปแบบขอมลดบและท าการตดเอาในสวนของชอเหตการณการโจมต
ท าการสร างสครปและตงคาการสงออกไปท Line Application ทก 1 นาทหรอเมอมเหตการณ
4.1.3 การทดลองการจดท ารายงาน
ท าการออกรายงานจากหนาการแสดงผล (Dashboard) ตวอยางเกยวกบเหตการณการโจมต
ดวยเทคนค Brute Force Attack และขอมลจราจรทางคอมพวเตอรในรปแบบ PDF ไฟล
4.2 ผลการทดลอง
4.2.1 ผลการทดสอบระบบ และทดสอบสงขอมลแบบสตรมมง
เขาสระบบคนหา ประมวลผลและแสดงผลขอมลจราจรทางคอมพวเตอร โดยเขาผาน Web
Browser และท าการ Login เขาสระบบเพอมอนเตอรและตรวจสอบขอมลผาน Dashboard
ภาพท 34 หนาแสดงผลอนระบบคนหา ประมวลผลและแสดงผลขอมลจราจรทางคอมพวเตอร
- ท าการทดสอบโดยการ Remote ไปยงระบบตาง ๆ ไดแก Attacker (Kali Linux),
Snort-NIDS, Elaska (ELK) และเครองลกขาย Linux ดงภาพท 35 - 36
44
ภาพท 35 ภาพหนาจอ Remote Gateway ไปยงระบบตาง ๆ เพอทดสอบ
ภาพท 36 ภาพหนาจอการ remote ผาน Remote Gateway ไปยงระบบตาง ๆ เพอทดสอบ
- ท าการ Run Script บน Attacker (Kali Linux) เพอทดสอบโจมตไปยงเครองลกขาย
Linux และ Snort-NIDS ท าการตรวจจบและสงขอมลไปยงระบบคนหา ประมวลผลและแสดงผลจราจร
ทางคอมพวเตอร ท าการประมวลผลและสงขอมลแสดงผลไปยงหนาแสดงผล Dashboard ดงภาพท 45
และมขอมลดบดงภาพท 37 - 44
45
ภาพท 37 ท าการ run script บน Attacker (Kali Linux)
ภาพดานลางท าการ SSH ไปทระบบแจงเตอนการบกรกเครอขาย (SNORT-NIDS) และท าการ
ตรวจสอบจากขอมลเหตการณบนระบบ
ภาพท 38 ตรวจสอบเหตการณบนระบบแจงเตอนการบกรกเครอขาย SNORT-NIDS
46
ท าการตรวจสอบบนระบบคนหา ประมวลผลและแสดงผลจราจรทางคอมพวเตอรทเกยวของกบ
เหตการณทดสอบการโจมตบน Gateway Firewall
ภาพท 39 ตรวจสอบขอมลจราจรทางคอมพวเตอรทสงมาจาก Gateway Firewall
ท าการตรวจสอบบนระบบคนหา ประมวลผลและแสดงผลจราจรทางคอมพวเตอรทเกยวของกบ
เหตการณทดสอบการโจมตบนระบบแจงเตอนการบกรกเครอขาย (SNORT-NIDS)
ภาพท 40 ตรวจสอบขอมลจราจรทางคอมพวเตอรทสงมาจาก SNORT-NIDS
47
ภาพท 41 ตรวจสอบขอมลดบทสงมาจาก SNORT-NIDS
ภาพท 42 ตรวจสอบขอมลดบทท าการแยกฟลดแลวทสงมาจาก SNORT-NIDS
ท าการตรวจสอบบนเครองลกขายทเกยวของกบการทดสอบการโจมต
ภาพท 43 ตรวจสอบขอมลจราจรทางคอมพวเตอรทถกโจมตบนเครองลกขาย Linux
48
ท าการตรวจสอบบนระบบคนหา ประมวลผลและแสดงผลจราจรทางคอมพวเตอรทเกยวของกบ
เหตการณทดสอบการโจมตบนเครองลกขาย Linux
ภาพท 44 ตรวจสอบขอมลดบทท าการแยกฟลดทสงมาจากเครองลกขาย Linux
ท าการตรวจสอบบนระบบคนหา ประมวลผลและแสดงผลจราจรทางคอมพวเตอรทเกยวของกบ
เหตการณทดสอบการโจมตบนหนาแสดงผล Kibana จากขอมลทถกสงมาจาก SNORT-NIDS
ภาพท 45 ตรวจสอบหนาแสดงผลทเกยวของกบการทดสอบการโจมตดวย Brute Force
49
ท าการทดสอบสงขอมลในรปแบบสตรมมงซงท าการดงขอมลมาจาก openweathermap.org
โดยดงขอมลแบบเวลาจรง Real-Time โดยดงขอมลเฉพาะ Bangkok เทานน
ภาพท 46 สมครสมาชกเพอขอ API ท openweathermap.org เพอดงขอมลแบบสตรมมง
สราง Python script เพอท าการดงขอมลแบบสตรมมงสงขอมลไปท Apache Kafka โดยใส
ขอมล API Key และ Topic ในการเกบขอมลน และท าการสงขอมลดงกลาวไปท Elasticsearch ในการ
ประมวลผลและแสดงผลขอมลบน Kibana โดยใชค าสง python weather.py ขอมลจะถกสงไปยง
Apache Kafka ท าการเขาควอยางรวดเรวและท าการสงขอมลไปประมวลผลทระบบคนหา ประมวลผล
และแสดงผลขอมลการจราจรทางคอมพวเตอรตอไปดงภาพท 47 - 48
ภาพท 47 สราง Python Script ในการดงขอมลแบบสตรมมงสงขอมลไปยง Apache Kafka
50
ภาพท 48 ขอมลถกสงมาจาก Apache Kafka เขามาประมวลผลบนระบบ
4.2.2 ผลการทดลองการแจงเตอนเหตการณการโจมต
เมอท าการทดสอบการโจมตแลวขอมลการโจมตทท าการแยกฟลดดวย Logstash แลวจะท าการ
สราง Output Filter เพอเกบเปนขอมลดบในการน าขอมลนมาท าการแจงเตอนผานระบบ Line Notify
ภาพท 49 สราง Output Filter เพอน าขอมลเหตการณมาเกบเปนขอมลดบ
ท าการตรวจสอบขอมลของเหตการณทท าการทดสอบการโจมต จะเหนขอมลทถกสงมาจาก
ระบบแจงเตอนการบกรกเครอขาย SNORT-NIDS ถกสงมายงระบบคนหา ประมวลผลและแสดงผล
ขอมลจราจรทางคอมพวเตอรในรปแบบขอมลดบบนระบบ
51
ภาพท 50 ขอมลดบทไดจากการท า Output Filter ถกเกบไวบนระบบ
ท าการเขาเวบ ไซทของ Line Notify เพ อขอ API Token น ามาใชงานกบระบบคนหา
ประมวลผลและแสดงผลขอมลการจราจรทางคอมพวเตอร ท าการสมครโดยใช Account Line ของเรา
เองในการสมคร โดยการกดทชอของเราแลวเลอก My Page เสรจแลวกดท Generate Token ดงภาพท
51 - 53
ภาพท 51 เขาสเวบไซท Line Notify เพอสมครสมาชก
ภาพท 52 หลงจากสมครสมาชกใหเลอกท My Page
52
ภาพท 53 ท าการสราง Token โดยการกดท Generate Token
หลงจากกด Generate Token จะมหนาตางใหตงชอและสามารถเลอกกลมในการสงขอมลการ
แจงเตอนเหตการณจากระบบคนหา ประมวลผลและแสดงผลการจราจรทางคอมพวเตอร โดยการ
ทดลองนจะท าการสงไปท Line มาทตวเอง
ภาพท 54 การ Generate Token ของ Line Notify
ภาพท 55 การ Generate Token ของ Line Notify จะได Token มาใชงาน
53
ภาพท 56 จะได Token ทท าการสรางขนและการเชอมตอไปยงกลมหรอบคคลใน Line Account
ท าการสราง PHP สครปต เพอท าการสงการแจงเตอนเหตการณทท าการทดลองในขอ 4.2.1
จากระบบคนหา ประมวลผลและแสดงผลขอมลจราจรทางคอมพวเตอรผาน API Token ของ Line Noti-
fy ไปยง Line Account
ภาพท 57 สราง PHP Script เพอทดลองการแจงเตอนผาน Line Notify API Token
54
หลงจากท าการทดลองตามขอ 4.2.2 จะมการแจงเตอนตามเหตการณททดสอบและมการแจง
เตอนผานระบบ Line Notify ไปยง Line Account ทท าการสรางไว
ภาพท 58 ท าการทดลองการโจมตจะมการแจงเตอนผาน Line Notify ไปยง Line Account
ภาพท 59 ท าการทดลองการโจมตจะมการแจงเตอนผาน Line Notify ไปยง Line Account
55
4.2.3 ผลการทดลองการจดท ารายงาน
ท าการทดลองสรางรายงานโดยสงออกเปนไฟล PDF โดยการเลอกเมน Dashboard -> NIDS-
SNORT เพอสรางรายงานการทดลองตามหวขอ 4.2.1 ดงภาพ 61 - 63
ภาพท 60 การสรางรายงานเปนรปแบบ PDF
ภาพท 61 การสรางรายงานเปนรปแบบ PDF เสรจสน สามารถ Download ได
56
ภาพท 62 หนารายงานการแสดงผลเปนรปแบบ PDF
57
บทท 5
สรปผลการด าเนนงาน
5.1 สรปผลการด าเนนงาน
โครงงานนไดท าการจดท าระบบจดเกบ คนหา ประมวลผลและแสดงผลขอมลจราจรทาง
คอมพวเตอร เพอใหผใชงานระบบสามารถคนหา ตรวจสอบขอมล และแสดงผลขอมล ไดอยางสะดวก
รวดเรวและมประสทธภาพ รวมถงประหยดคาใชจาย เนองจากไดมการน าซอฟตแวรแบบ Open
Source ตาง ๆ มาประยกตใชในการพฒนาระบบ โดยสรปเปนขอ ๆ ไดดงน
5.1.1 สามารถปรบแตงตามความตองการได สามารถเพมเตมฟงกชนการท างานตาง ๆ ได
5.1.2 สามารถจดเกบขอมลไดหลากหลาย และคนหาขอมลไดรวดเรวจากศนยกลาง และ
แสดงผลขอมลจราจรคอมพวเตอรไดหลากหลายรปแบบ
5.1.3 สามารถแจงเตอนเหตการณการโจมต ตามทสรางความสมพนธหรอตามเงอนไขได
5.2 ปญหาและอปสรรคของการด าเนนการ
ระบบมขอจ ากดในกรณทตองการแจงเตอน (Alerts) ในรปแบบตาง ๆ ซงยงตองหาและเพมการ
เขยน Condition และการสรางความสมพนธของขอมลถามขอมลทถกสงมาจากหลาย ๆ แหลง
ในการแจงเตอนผาน Email และ Line Notify ทท าเพมเตมนน ยงตองสราง script ในการตด
ขอความเรยบเรยงใหอานงาย กอนทจะแจงเตอนและสรางรปแบบ (Template) ของแตละการแจงเตอน
5.3 ขอจ ากดและแนวทางการแกไขของโครงงาน
เนองจากซอฟแวรทน ามาใชในการพฒนาระบบเปนรปแบบ Opensource จงจ าเปนตองเรยนร
ในการปรบแตงระบบใหมความเสถยรและมประสทธภาพในการใชงาน ซงในโครงการนจะเนนการใชงาน
ทงายและสามารถตรวจสอบไดจากศนยกลาง ซงจะศกษาและพฒนาใหมความอตโนมตมากขน และใน
อนาคตมการวางแผนท าเปนในรปแบบทไมจ าเปนตองตดตงซอฟแวรแยกแตละระบบ จะท าการรวมเปน
หนงแพกเกตหรอเปนรปแบบระบบเสมอน (Virtual Machine) ทสามารถน ามาใชงานไดเลยโดยไม
จ าเปนตองตดตงระบบเองใหยงยาก
58
5.4 แนวทางการพฒนาโครงงานตอไปในอนาคต
เนองจากโครงงานฉบบน จดท าขนเพอศกษาการจดเกบขอมลจราจรทางคอมพวเตอร ยงม
บางสวนไมสมบรณ หรอยงสามารถพฒนาเพมเตมตอได จงเหนวาควรมการพฒนาระบบเพมเตม ดงน
5.4.1 ท าการพฒนาระบบแสดงผล (Dashboard) และระบบจดท ารายงานเพมเตม เพอให
สามารถแสดงผลขอมลจราจรคอมพวเตอรใหละเอยด ใชงานงายและครบถวนมากขน
5.4.2 ท าการเพมและพฒนาระบบการคนหาขอมลในรปแบบตาง ๆ เพมเตมเชน Cyber Threat
Intelligence ซงจะสามารถเชอมตอกบขอมล Threat Feeds ทมฐานขอมลภายนอกได
5.4.3 บรณาการระบบตาง ๆ เชน ระบบ OSINT (Opensource Intelligence) ซงจะรวมรวม
ขอมลเกยวกบ Website ทเกบรวมรวมขอมลแวดลอมเบองตน ขอมลสวนบคคลแบบเปดเผย เพอชวย
ในการคนหาขอมลในดานตาง ๆ เขามารวมกนไวทศนยกลาง เพอใหงายตอการคนหาและจดการ ไม
จ าเปนตองเปดหลาย ๆ ระบบ
5.4.4 ปรบปรงการกรองขอมลจราจรทางคอมพวเตอรทหลากหลาย หรอขอมลทเฉพาะเจาะจง
ในแตละระบบหรอองคกร (Proprietary Data) และยงยากในการจดการ ใหสามารถแสดงผลออกมาใน
ภาพรวมไดอยางมประสทธภาพ
59
เอกสารอางอง
[1] Elastic Stack: https://www.elastic.co/products/
[2] Apache Kafka: https://kafka.apache.org/
[3] Kafka-example (https://www.youtube.com/watch?v=udnX21__SuU)
[4] Kafka-KM https://www.howtoautomate.in.th/what-is-apache-kafka-qa/
[5] PfSense Firewall https://www.pfsense.org/
[6] Snort NIDS https://www.snort.org/
[7] OSINT Framework https://osintframework.com/
[8] Apache Guacamole http://guacamole.apache.org/
60
อกษรยอและค าจ ากดความ
ELK Elasticsearch, Logstash, Kibana
Logs ขอมลจราจรทางคอมพวเตอร
Node Server
JSON JavaScript Object Notation
Index Database
NIDS
REST
Regex
Src
Dst
Network Intrusion Detection System
Representational State Transfer
Portable Document Format
Regular Expression
Source
Destination
- 1 -
ภาคผนวก ก
การตดตงระบบและการตงคาระบบ
1. การตดตงและตงคาระบบ ELK
ขนตอนแรกตองตดตง Java กอนโดยใชค าสง
# sudo yum -y install java-openjdk-devel java-openjdk
สวนระบบ ELK จะท าการตดตงเปน Version 7 โดยการใชค าสง
# cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
# sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
1.1 การตดตงและการตงคา ElasticSearch เพอใชในการจดเกบขอมลการจราจรทาง
คอมพวเตอร
# sudo yum -y install elasticsearch
#vim /etc/elasticsearch/jvm.options เพอตงคา JVM เปน 512 MB
-Xms512m
-Xmx512m
#vim /etc/elasticsearch/elasticsearch.yml
cluster.name: boontung.net
- 2 -
node.name: Elaska
network.host: localhost
http.port: 9200
xpack.security.enabled: true
เพอท าการตง Password ใหกบระบบคนหา ประมวลผลและแสดงผลขอมลจราจรทางคอมพวเตอร
#/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
# sudo systemctl enable --now elasticsearch.service
# sudo systemctl start elasticsearch.service
1.2 การตดตงและการตงคา Logstash เพอใชในการน าเขาขอมล การแยกขอมลและการสงออก
ขอมลสหนาระบบแสดงผลการจราจรทางคอมพวเตอร
#sudo yum -y install logstash
สรางไฟล pattern ของการแปลงขอมลและแยกขอมลของระบบ Gateway Firewall เพอ
แสดงผลบนระบบแสดงผลขอมลการจราจรทางคอมพวเตอร Kibana โดยไวท /etc/logstash/pattern
- 3 -
สรางไฟล config ในการรบขอมล (Input) การแยกขอมล (Filter) และการสงออกขอมล (Output)
ไวท /etc/logstash/conf.d/ ซงไดแก Input filebeat, Input Syslog, Input Kafka
- 4 -
Filter ของ Gateway Firewall
Filter และ Output ของ Kafka Streaming
Filter และ output ของระบบแจงเตอนการบกรกเครอขาย SNORT-NIDS
- 5 -
Filter และ output ของเครองลกขาย Linux
1.3 การตดตงและการตงคา Kibana เพอใชในการแสดงขอมลการจราจรทางคอมพวเตอร
# sudo yum -y install kibana
- 6 -
# $ sudo vim /etc/kibana/kibana.yml
server.port: 5601
server.host: "localhost"
elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.username: "kibana"
elasticsearch.password: "password"
# sudo systemctl enable --now elasticsearch.service
# sudo systemctl start elasticsearch.service
# echo "admin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users
2. การตดตงและตงคาระบบ NGINX
การตดตงและตงคาระบบ NGINX เพอใชจดการกบการใชงานผาน HTTP โดยท าการ redirect
ไปท HTTPS อตโนมต และ Basic Authentication เบองตน
# sudo yum install nginx
# sudo vi /etc/nginx/conf.d/elaska.conf
- 7 -
3. การตดตงและตงคาระบบ Apache Kafka
การตดตงและตงคาระบบ Apache Kafka เพอใชในการท า Data pipeline ในการรบขอมล
การจราจรทางคอมพวเตอรทเปนรปแบบสตรมขอมล (Stream Data) เชน ขอมลพยากรณอากาศ
# mkdir ~/Downloads
# curl "https://www.apache.org/dist/kafka/2.1.1/kafka_2.11-2.1.1.tgz" -o ~/Downloads/kafka.tgz
# mkdir ~/kafka && cd ~/kafka
# tar -xvzf ~/Downloads/kafka.tgz --strip 1
# vim ~/kafka/config/server.properties
# sudo vim /etc/systemd/system/zookeeper.service
# sudo vi /etc/systemd/system/kafka.service
# sudo systemctl start kafka
# sudo systemctl enable kafka
- 8 -
# kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic weather
# kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --partitions 1 --topic weather
# kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --
partitions 1 --topic weather
# kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
# kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group logstash
# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic weather --group logstash
4. การตดตงและตงคา Filebeat
การตดตงและตงคา Filebeat ใชในยการสงขอมลออกจากระบบแจงเตอนการบกรกเครอขาย
และเครองลกขาย Linux ไปยงระบบ Logstash
# sudo yum install filebeat
# vim /etc/filebeat/filebeat.yml
ตงคาบนแจงเตอนการบกรกเครอขาย
- /var/log/snort/attacker
#----------------------------- Kafka output --------------------------
output.kafka:
# initial brokers for reading cluster metadata
hosts: ["192.168.200.11:9092"]
topic: "filebeat"
max_retries: 2
max_message_bytes: 1000000
#username: "elastic"
#password: "P@55vv0rd!"
#----------------------------- Logstash output ----------------------------
#output.logstash:
- 9 -
# The Logstash hosts
#hosts: ["192.168.200.11:5045"]
ตงคาบนเครองลกขาย Linux
- /var/log/secure
#----------------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts
hosts: ["192.168.200.11:5045"]
bulk_max_size: 1024
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false
username: "elastic"
password: "P@55vv0rd!"
#output.kafka:
# hosts: ["192.168.200.11:9092"]
# topic: 'apache'
# username: "elastic"
# password: "P@55vv0rd!"
# codec.json:
# pretty: false
5. การตงคา Crontab เพอตงเวลาในการแจงเตอน
- สราง Shell Script
#!/bin/bash
#cat /var/log/rawlog/192.168.200.5.log | grep -Po
"[^<\d+\>]+([\w\s\d\:]+)\s[^snort\ssnort\[\d+\]\:\s\[\d\:\d+\:\d\]]([\w\s]+)\[" >
/var/log/rawlog/test.log
- 10 -
php /root/alert/rawlog.php
sleep 5
rm -rf /var/log/rawlog/*.log
- ตงคา crontab -e
* * * * * /root/alert/rawlog.sh
- 11 -
System Specification
System CPU
Memory Storage
(GB) Function NAT Network
VMnet1 Network Socket Core
PfSense 1 1 1 GB 10 Gateway Firewall NAT VMnet1 Kali Linux 1 1 1 GB 80 Attacker NAT Snort 1 1 1 GB 40 NIDS NAT Elaska 1 8 8 GB 500 Centralize Log NAT Linux 1 1 512 MB 20 Client VMnet1
Network & Port Information
Protocol & Port System Detail TCP 22 All System Secure Shell to Install & Config
TCP/UDP 5140 Elaska Syslog Listening for Security Device System TCP 5045 Elaska Filebeat Port Listening for Linux Log System TCP 443 Elaska NGINX Service - HTTP secure (Reverse Proxy 5601) TCP 80 Elaska NGINX Service - HTTP (Reverse Proxy 5601)
TCP 8080 Elaska HTTPD Service Port for Main Web Page TCP 9200 Elaska Elasticsearch Service Port TCP 5601 Elaska Kibana Service Port TCP 9600 Elaska Logstash Service Port TCP 9092 Elaska Kafka Service Port TCP 2181 Elaska Zookeeper Service Port
- 12 -
Scenario Logical Diagram
Configure Input / Filter / Output on Elaska
ท Path: /etc/logstash/conf.d/ จะมไฟล config ในการ Input, Filter - transform, output ขอมล
อยภายใน โดยแตละไฟลจะมหนาทตางกน ขนอยกบขอมลทตองการรบสง และแสดงผล ดงภาพ
1. ไฟล 1-beats-input.conf จะ Input ขอมลทไดรบมาจาก Beat จะม 2 Port โดยแยก Type
ออกเปน 2 แบบ ไดแก Window Event Log และ Linux Logs ตามภาพ
- 13 -
2. ไฟล 2-syslog-input.conf จะ Input ขอมลทไดรบมาจาก Syslog Forward จะก าหนดใหใช Port
5140 สามารถรบขอมลไดทง TCP และ UDP
3. ไฟล 3-rawlog-alert.conf จะ Output ตาม Type ของ log ทตองการ ก าหนดใหสรางไฟล raw
log ตงชอตาม Host และ Hostname ไปเกบไวท Path ตามภาพ
4. ไฟล 4-pfsense-filter.conf จะมการเขยน Filter + Output ของ Gateway-PfSense โดยตงคาให
PfSense IP: 192.168.200.253 สง syslog มาท Port 5140 ท าการ filter โดยมการท า tag:
pfsense และน า tag มาก าหนด grok pattern parser และท าการสงขอมลไปท Elasticsearch
โดยสราง Index ชอวา pfsense-firewall-(ป.เดอน.วน)
- 14 -
5. ไฟล 5-winlogbeat-output.conf จะมการเขยน Filter + Output ของ Windows Event Logs
โดยตงคาท winlogbeat ทตดตงบนเครองลกขาย Windows 10 สงขอมลทก าหนดไวเชน sys-
tem, security และ application มาท Port 5044 ของ Logstash น ามาท าการ filter โดยมการท า
tag: winuseraccountwas และน า tag มาก าหนด grok pattern parser และท าการสราง field
ใหมชอวา UserAccountWas และท าการสงขอมลไปท Elasticsearch โดยสราง Index ชอวา
winlogbeat-(ป.เดอน.วน)
- 15 -
6. ไฟล 6-syslog-snort-nids.conf จะมการเขยน Filter + Output ของ NIDS-Snort โดยตงคาท
Filebeat ทตดตงบนระบบตรวจจบการบกรกเครอขาย สงขอมลการโจมตในรปแบบ signature
base มาท Port 5140 ของ Logstash น ามาท าการ filter โดยมการท า tag: snort ทไดจากการ
ตรวจสอบ message (Rawlog) ทมค าวา Classification: ทถกสงมาในรปแบบ Syslog และน า
tag มาก าหนด grok pattern parser ก าหนด field ตาง ๆ ใหกบ NIDS-Snort Logs และท าการ
สงขอมลไปท Elasticsearch โดยสราง Index ชอวา snort-nids-log-(ป.เดอน.วน)
7. ไฟล 7-linux-server.conf จะมการเขยน Filter + Output ของ Linux Server โดยตงคาท
Filebeat ทตดตงบนเครองลกขาย Linux ใหสง Logs มาท Port 5045 ของ Logstash น ามาท า
การ filter โดยมการท า tag: linux-login-failure เพอคนหาขอมล Logs ทถกสงมาวาใน
message (Rawlog) มประโยควา more authentication failure ถาเจอใหน ามาสราง grok
pattern parser ก าหนดและเพม field เขาไปนอกเหนอจากท Filebeat มให และท าการสงขอมล
ไปท Elasticsearch โดยสราง Index ชอวา linux-client-logs-(ป.เดอน.วน) สวน output ปกตท
ไดรบจาก Filebeat type: linuxlog ใหสงขอมลไปท Elasticsearch โดยสราง Index ชอวา
filebeat-(ป.เดอน.วน)
- 16 -
8. ไฟล kafka-Input.conf จะรบขอมลทถกสงมาจาก Kafka โดยก าหนด Topic ทเกยวของใน
โครงงาน เชน snort, filebeat, winlogbeat และ weather
9. ไฟล kafka-linux.conf จะน าขอมลทถกสงมาท Kafka มาท าการ filter โดยก าหนดใหถาเจอ top-
ic: filebeat ใหท าการคนหาขอมล Logs ทถกสงมาวาใน message (Rawlog) มประโยควา
more authentication failure ถาเจอใหท าการสราง tag วา kafka-linux-login-failure และท าการ
output ไปท Elasticsearch โดยสราง Index ชอวา linux-server-kafka-(ป.เดอน.วน)
- 17 -
10. ไฟล kafka-snort-nids.conf จะน าขอมลทถกสงมาท kafka โดยก าหนดใหถาเจอ topic: snort
ใหท าการ output ไปท Elasticsearch โดยสราง Index ชอวา snort-nids-kafka-(ป.เดอน.วน)
11. ไฟล kafka-weather.conf จะน าขอมลทสงมาท kafka โดยก าหนดใหถาเจอ topic: weather ให
ท าการ output ไปท Elasticsearch โดยสราง Index ชอวา weather-(ป.เดอน.วน)
12. ไฟล kafka-windows.conf จะน าขอมลทสงมาท kafka โดยก าหนดใหถาเจอ topic: weather ให
ท าการ output ไปท Elasticsearch โดยสราง Index ชอวา windows-kafka-(ป.เดอน.วน)
- 18 -
13. ไฟล filebeat.yml บนระบบตรวจจบการบกรกเครอขาย NIDS-Snort และเครองลกขาย Linux
14. ไฟล winlogbeat.yml บนเครองลกขาย Windows 10
- 19 -
การทดสอบท 1 โจมตดวยเทคนค Brute Force Attack จาก Kali Linux ไปทเครองลกขาย Linux
1 เขาไปทเครอง Kali Linux และรน script “linux.ssh-bruteforce.sh” ภายในใชทดสอบ
โจมตไปทเครองลกขาย Linux
2 NIDS-Snort แจงเตอนการโจมตดวย Medusa Tool Brute force และสง Logs ไปท
Elaska
3 Elaska รบ Logs จาก NIDS-Snort โดยท าการสราง Filter + Output ใหแสดงเปน
Rawlog ดงภาพ
- 20 -
4 เกดเหตการณการ Authentication Failure บนเครองลกขาย Linux
การทดสอบท 2 โจมตดวยเทคนค Brute Force Attack จาก Kali Linux ไปทเครองลกขาย Windows
1 เขาไปทเครอง Kali Linux และรน script “windows-smb-445.sh” ภายในใชทดสอบ
โจมตไปทเครองลกขาย Windows 10
2 NIDS-Snort แจงเตอนการโจมตดวย Medusa Tool Brute force และสง Logs ไปท
Elaska
3 Elaska รบ Logs จาก NIDS-Snort โดยท าการสราง Filter + Output ใหแสดงเปน
Rawlog ดงภาพ
- 21 -
4 เกดเหตการณการ Authentication Failure บนเครองลกขาย Windows
การทดสอบท 3 การใช Kafka ในการดงขอมลในรปแบบ Real-Time แบบสตรมมงขอมลจาก Open
Weather API
1. รน script ชอวา api-weather.sh โดยจะท าการใช python รนไฟล weather.py ซงภายในจะม
การก าหนดคา API และสราง key value ในการดงขอมลมาจากเวบ Open Weather มาท
kafka โดยก าหนดใหขอมลดงกลาวถกเกบไวท topic ทชอวา weather
2. ตรวจสอบวาขอมลวงเขา Topic: weather ดวยการใช script ของ Kafka consumer
3. ขอมลจาก Open Weather วงเขามาท Topic: weather
- 22 -
ค าสงในการใชงาน Kafka Command
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic
#Topic# (ค าสงในการสราง topic)
echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic
#Topic# > /dev/null
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic #Topic# --from-beginning
(ค าสงในการตรวจสอบขอมลใน topic)
kafka-topics.sh --zookeeper localhost:2181 –list (ค าสงในการดวาม topic อะไรบาง)
kafka-topics.sh --zookeeper localhost:2181 --topic #Topic# --describe (ค าสงในการดวา topic
ดงกลาวมรายละเอยดอะไรในการเกบขอมล)
kafka-topics.sh --zookeeper localhost:2181 --#Topic# --delete (ค าสงในการลบ topic)