Transcript
Page 1: Takpong Boontung - msit.mut.ac.th

ระบบจดการขอมลจราจรทางคอมพวเตอร

Log Management System

ทกพงศ บญทง

Takpong Boontung

สารนพนธนเปนสวนหนงของการศกษา

หลกสตรวทยาศาสตรมหาบณฑต สาขาวชาวศวกรรมเครอขายและความมนคง

ปลอดภยสารสนเทศ

คณะวทยาการและเทคโนโลยสารสนเทศ

มหาวทยาลยเทคโนโลยมหานคร

ปการศกษา 2562

Page 2: Takpong Boontung - msit.mut.ac.th

I

หวขอโครงงาน ระบบจดการขอมลจราจรทางคอมพวเตอร

Log Management System

นกศกษา ทกพงศ บญทง

รหสนกศกษา 6127810001

หลกสตร หลกสตรวทยาศาสตรมหาบณฑต สาขาวชาวศวกรรมเครอขายและความมนคง

ปลอดภยสารสนเทศ

ปการศกษา 2562

อาจารยทปรกษา ผศ.ดร.สรณพร ภมวฒสาร

บทคดยอ

โครงงานเรองระบบคนหาประมวลผลและการแสดงผลขอมลทางคอมพวเตอร เพอใหการคนหา

ประมวลผล และการแสดงผลขอมลจราจรคอมพวเตอร เปนไปไดอยางมประสทธภาพและสามารถเรยกด

หรอตรวจสอบยอนหลงไดงาย รวมถงขอมลรายละเอยดการใชงานตาง ๆ เพอเปนการวเคราะหขอมล

จราจรคอมพวเตอรไดอยางถกตอง

และสามารถแจงเตอนปญหาภยคกคามทอาจจะเกดขนกบระบบสารสนเทศ โดยน าขอมลจราจร

ทางคอมพวเตอรทมอยในระบบมาใชงานเพอใหเกดประโยชนมากยงขน ซงภยคกคามอาจจะมาจาก

บคคลภายในองคกร หรอบคคลภายนอกทไมประสงคดกบองคกร เมอระบบสามารถตรวจสอบภย

คกคามไดทนทวงท กจะท าใหลดจ านวนภยคกคามได อกทงยงลดภาระผดแลระบบในการตรวจสอบ

ขอมลจราจรทางคอมพวเตอร และยงสามารถด าเนนการตรวจสอบ วเคราะห แกไขปญหาของเหตการณ

ตาง ๆ ทเกดขนได ซงวธการด าเนนงานประกอบดวยการน าเครองมอมาจาก Open Source มาพฒนา

เพมเตม เพอใชในการพฒนาระบบไดอยางมประสทธภาพ และไมเสยคาใชจาย

Page 3: Takpong Boontung - msit.mut.ac.th

II

กตตกรรมประกาศ

สารนพนธฉบบนสามารถส าเรจไดตามความมงหมายซงไดรบความกรณาจากอาจารยทปรกษา

สารนพนธ ผศ.ดร.สรณพร ภมวฒสาร และ อาจารยสรการ ดวงผาสข ทไดเสนอแนะแนวทางในการท า

โครงงาน รวมถงไดสละเวลาใหค าปรกษาแนะน าเพอปรบปรงแกไขขอบกพรองดานตาง ๆ จนสามารถ

น าความรทไดมาพฒนาโครงงานไดเสรจสน

สดทายนขอขอบคณผมพระคณทกทานทคอยใหค าปรกษาและก าลงใจ และหากโครงงานฉบบน

มขอผดพลาดประการใด ขาพเจาผจดท าตองขออภยมา ณ ทนดวย

ทกพงศ บญทง

มนาคม 2563

Page 4: Takpong Boontung - msit.mut.ac.th

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

Page 5: Takpong Boontung - msit.mut.ac.th

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 -

Page 6: Takpong Boontung - msit.mut.ac.th

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

Page 7: Takpong Boontung - msit.mut.ac.th

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

Page 8: Takpong Boontung - msit.mut.ac.th

VII

สารบญภาพ (ตอ)

ภาพท 61 การสรางรายงานเปนรปแบบ PDF เสรจสน สามารถ Download ได .................................. 55

ภาพท 62 หนารายงานการแสดงผลเปนรปแบบ PDF ....................................................................... 56

Page 9: Takpong Boontung - msit.mut.ac.th

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

Page 10: Takpong Boontung - msit.mut.ac.th

1

บทท 1

บทน า

1.1 ความเปนมาและความส าคญของปญหา

ขอมลจราจรทางคอมพวเตอร หมายถงขอมลเกยวกบการตดตอสอสารของระบบคอมพวเตอร

ซงแสดงถงแหลงก าเนดตนทาง ปลายทาง เสนทาง เวลา วนท ปรมาณ ระยะเวลา ชนดของบรการ หรอ

อน ๆ ทเกยวของกบการตดตอสอสารของระบบคอมพวเตอร การเกบขอมลจราจรทางคอมพวเตอร และ

นอกเหนอจากการเกบขอมลจราจรทางคอมพวเตอรเรายงสามารถเกบขอมลในสวนอน ๆ ทเกยวของกบ

ระบบคอมพวเตอร เชน ขอมลของระบบเครองคอมพวเตอรแมขาย อปกรณเครอขาย หรอขอมลการ

เขาถงระบบเครองคอมพวเตอรแมขาย เขาถงอปกรณเครอขาย เปนตน

ในปจจบนมการใชงานระบบเครอขายคอมพวเตอรและเครอขายอนเตอรเนตเปนหลกในการ

ตดตอสอสารกน ขอมลทวงเขาออกจงผานหลากหลายอปกรณทมภายในองคกร รวมถงคอมพวเตอร

สวนบคคล ดงนนขอมลการใชงานจงมหลากหลายและมจ านวนมาก ในการทจะคนหาและวเคราะห

ขอมลจงเปนไปไดยาก รวมถงขอมลจากภายนอกทตองการน ามาใชประโยชน หรอแมกระทงภยคกคาม

ของระบบคอมพวเตอร และการเขาใชงานทผดวตถประสงค เชน มการเขาสระบบของเครอง

คอมพวเตอรแมขายทไมไดรบอนญาต ดงนนหากเราสามารถน าขอมลจราจรทางคอมพวเตอร หรอ

ขอมลทถกจดเกบมาท าการวเคราะหถงภยคกคามกจะท าใหเกดประโยชนกบผใชงานมากยงขน

1.2 ปญหาและแรงจงใจ

จากปญหาขางตนจงมระบบการจดเกบขอมลจราจรทางคอมพวเตอรเกดขนซงสวนใหญเปน

รปแบบทเสยคาใชจาย (Commercial) หรอในรปแบบไมเสยคาใชจาย (Open Source) ทวไปนน ก

บรหารจดการไดคอนขางยงยาก การทจะวเคราะหเหตการณเมอเกดปญหาหรอเหตการณการโจมตท

เกดขนกบองคกร โดยการทจะเขาไปตรวจสอบขอมลจราจรทางคอมพวเตอรในแตละอปกรณ กตองใช

เวลาในการวเคราะหแกปญหาคอนขางมาก ถาในองคกรนนมอปกรณจ านวนมาก ซงไดเปนไปไดยาก

และเสยเวลา จงไดเกดแนวคดโครงการนเพอพฒนาระบบจดการขอมลจราจรทางคอมพวเตอร เพอให

ตอบโจทยตอการใชงาน และการจดเกบขอมลจราจรคอมพวเตอร ใหงายตอการบรการจดการและ

ประหยดคาใชจาย

Page 11: Takpong Boontung - msit.mut.ac.th

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)

Page 12: Takpong Boontung - msit.mut.ac.th

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) และรายงานสรปขอมลได

Page 13: Takpong Boontung - msit.mut.ac.th

4

1.6 โครงสรางของสารนพนธ

โครงสรางสารนพนธฉบบนมทงหมด 5 บทดวยกน กลาวถงภาพรวมของแตละบทดงน

บทท 2 กลาวถง พนฐานและทฤษฎตาง ๆ ทเกยวของ

บทท 3 กลาวถง ระบบทน าเสนอ ภาพรวมของระบบโครงงานทออกแบบและพฒนา เพอเพม

ประสทธภาพในการจดเกบ และบรหารจดการขอมลจราจรคอมพวเตอร

บทท 4 กลาวถง ผลการทดลอง ทไดท าการทดสอบการใชงานในระบบจ าลอง

บทท 5 กลาวถง สรปผลการด าเนนงาน ในการทดลองและประเมนผลใชงานในระบบจ าลองและ

แนวทางในการศกษาและพฒนาระบบตอไป

Page 14: Takpong Boontung - msit.mut.ac.th

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 ในการ

ท าการสงขอมล

Page 15: Takpong Boontung - msit.mut.ac.th

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

Page 16: Takpong Boontung - msit.mut.ac.th

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

Page 17: Takpong Boontung - msit.mut.ac.th

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

Page 18: Takpong Boontung - msit.mut.ac.th

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 แบบตาง ๆ

Page 19: Takpong Boontung - msit.mut.ac.th

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

Page 20: Takpong Boontung - msit.mut.ac.th

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]"

}

Page 21: Takpong Boontung - msit.mut.ac.th

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 ซงทงหมดนท าใหเหนวา ชวยท าให

ผสมผสานไดอยางงายดายในทกแอพพลเคชนตามทการคนหาและวเคราะหตองการ

Page 22: Takpong Boontung - msit.mut.ac.th

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

Page 23: Takpong Boontung - msit.mut.ac.th

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 สามารถเกบขอมลเหตการณ เชนเหตการณแอปพลเคชน, เหตการณฮารดแวร, เหตการณความปลอดภยและเหตการณระบบ

Page 24: Takpong Boontung - msit.mut.ac.th

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

Page 25: Takpong Boontung - msit.mut.ac.th

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)

Page 26: Takpong Boontung - msit.mut.ac.th

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 ได)

Page 27: Takpong Boontung - msit.mut.ac.th

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

Page 28: Takpong Boontung - msit.mut.ac.th

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, ในปจจบน การวเคราะหเชงคาดการณก าลงไดรบความนยม เนองจากการวเคราะหเชงคาดการณเปนการวเคราะหขนสงทใชในการคาดการณเหตการณทอาจเกดขนในอนาคต รปแบบทเปนผลลพธในอดตและขอมลทางธรกรรมตาง ๆ สามารถน ามาใชเพอประเมณความเสยงในอนาคต การวเคราะหเชงคาดการณยงชวยใหองคกรสามารถคดแบบเชงรก การ

Page 29: Takpong Boontung - msit.mut.ac.th

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 อาจไมเหมาะกบการใชงาน ดวยเหตน จงมความจ าเปนทตองมการจดการการท าศนยกลางขน ซงจะชวยอ านวยความสะดวกส าหรบผดแลระบบในการวเคราะหและคนหาขอมลทตองการ

Page 30: Takpong Boontung - msit.mut.ac.th

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 ตามความตองการของผใช

Page 31: Takpong Boontung - msit.mut.ac.th

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)

Page 32: Takpong Boontung - msit.mut.ac.th

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 } }

Page 33: Takpong Boontung - msit.mut.ac.th

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

Page 34: Takpong Boontung - msit.mut.ac.th

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

Page 35: Takpong Boontung - msit.mut.ac.th

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

Page 36: Takpong Boontung - msit.mut.ac.th

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”

Page 37: Takpong Boontung - msit.mut.ac.th

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 จะถกแทนทดวย _

Page 38: Takpong Boontung - msit.mut.ac.th

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 และแยกวเคราะหคาลงในชองโทรศพท

Page 39: Takpong Boontung - msit.mut.ac.th

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,

Page 40: Takpong Boontung - msit.mut.ac.th

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

Page 41: Takpong Boontung - msit.mut.ac.th

32

บทท 3

ระบบทน าเสนอ

3.1 ภาพรวมของระบบ

การออกแบบและพฒนาระบบจดการขอมลจราจรทางคอมพวเตอรในโครงการน จะตองศกษา

โครงสรางการท างานของซอฟตแวร Open Source ไดแก ELK และ Apache Kafka น ามาออกแบบการ

เชอมตอใหท างานรวมกนได ใหตรงความตองการขององคกร ทความตองการแตกตางกน โดยตอง

ออกแบบวธการสงและรบขอมลจราจรทางคอมพวเตอร และการจดเกบขอมลจราจรอยางไรใหงายตอ

การบรหารจดการและประหยดคาใชจาย ซงจะมรปแบบและฟงกชนการท างานและใชงานดงภาพ

ดานลาง

ภาพท 17 ภาพรวมการท างานของระบบในโครงงาน

Page 42: Takpong Boontung - msit.mut.ac.th

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

Page 43: Takpong Boontung - msit.mut.ac.th

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 ได

Page 44: Takpong Boontung - msit.mut.ac.th

35

ภาพท 20 หนาการใชงานของซอฟทแวร Kibana

3.3.3 การตดตงระบบ NGINX

ตดตงระบบ NGINX บนเครองคอมพวเตอรแมขายหรอเครองคอมพวเตอรจ าลอง (Virtual Machine) เพอใชในการ Reverse Proxy ไปยงระบบ Kibana ท Port 5601 เพอใชจดการกบการใชงานผาน HTTP โดยท าการ redirect ไปท HTTPS อตโนมต ดงภาพดานลาง

ภาพท 21 การตงคา NGINX

Page 45: Takpong Boontung - msit.mut.ac.th

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}

Page 46: Takpong Boontung - msit.mut.ac.th

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)

Page 47: Takpong Boontung - msit.mut.ac.th

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

Page 48: Takpong Boontung - msit.mut.ac.th

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 มประโยชนดงน

Page 49: Takpong Boontung - msit.mut.ac.th

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

Page 50: Takpong Boontung - msit.mut.ac.th

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 โดยแต

ละเครองมการตดตงซอฟตแวร ดงน

Page 51: Takpong Boontung - msit.mut.ac.th

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 หนาลอกอนระบบคนหา ประมวลผลและแสดงผลขอมลจราจรทางคอมพวเตอร

Page 52: Takpong Boontung - msit.mut.ac.th

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

Page 53: Takpong Boontung - msit.mut.ac.th

44

ภาพท 35 ภาพหนาจอ Remote Gateway ไปยงระบบตาง ๆ เพอทดสอบ

ภาพท 36 ภาพหนาจอการ remote ผาน Remote Gateway ไปยงระบบตาง ๆ เพอทดสอบ

- ท าการ Run Script บน Attacker (Kali Linux) เพอทดสอบโจมตไปยงเครองลกขาย

Linux และ Snort-NIDS ท าการตรวจจบและสงขอมลไปยงระบบคนหา ประมวลผลและแสดงผลจราจร

ทางคอมพวเตอร ท าการประมวลผลและสงขอมลแสดงผลไปยงหนาแสดงผล Dashboard ดงภาพท 45

และมขอมลดบดงภาพท 37 - 44

Page 54: Takpong Boontung - msit.mut.ac.th

45

ภาพท 37 ท าการ run script บน Attacker (Kali Linux)

ภาพดานลางท าการ SSH ไปทระบบแจงเตอนการบกรกเครอขาย (SNORT-NIDS) และท าการ

ตรวจสอบจากขอมลเหตการณบนระบบ

ภาพท 38 ตรวจสอบเหตการณบนระบบแจงเตอนการบกรกเครอขาย SNORT-NIDS

Page 55: Takpong Boontung - msit.mut.ac.th

46

ท าการตรวจสอบบนระบบคนหา ประมวลผลและแสดงผลจราจรทางคอมพวเตอรทเกยวของกบ

เหตการณทดสอบการโจมตบน Gateway Firewall

ภาพท 39 ตรวจสอบขอมลจราจรทางคอมพวเตอรทสงมาจาก Gateway Firewall

ท าการตรวจสอบบนระบบคนหา ประมวลผลและแสดงผลจราจรทางคอมพวเตอรทเกยวของกบ

เหตการณทดสอบการโจมตบนระบบแจงเตอนการบกรกเครอขาย (SNORT-NIDS)

ภาพท 40 ตรวจสอบขอมลจราจรทางคอมพวเตอรทสงมาจาก SNORT-NIDS

Page 56: Takpong Boontung - msit.mut.ac.th

47

ภาพท 41 ตรวจสอบขอมลดบทสงมาจาก SNORT-NIDS

ภาพท 42 ตรวจสอบขอมลดบทท าการแยกฟลดแลวทสงมาจาก SNORT-NIDS

ท าการตรวจสอบบนเครองลกขายทเกยวของกบการทดสอบการโจมต

ภาพท 43 ตรวจสอบขอมลจราจรทางคอมพวเตอรทถกโจมตบนเครองลกขาย Linux

Page 57: Takpong Boontung - msit.mut.ac.th

48

ท าการตรวจสอบบนระบบคนหา ประมวลผลและแสดงผลจราจรทางคอมพวเตอรทเกยวของกบ

เหตการณทดสอบการโจมตบนเครองลกขาย Linux

ภาพท 44 ตรวจสอบขอมลดบทท าการแยกฟลดทสงมาจากเครองลกขาย Linux

ท าการตรวจสอบบนระบบคนหา ประมวลผลและแสดงผลจราจรทางคอมพวเตอรทเกยวของกบ

เหตการณทดสอบการโจมตบนหนาแสดงผล Kibana จากขอมลทถกสงมาจาก SNORT-NIDS

ภาพท 45 ตรวจสอบหนาแสดงผลทเกยวของกบการทดสอบการโจมตดวย Brute Force

Page 58: Takpong Boontung - msit.mut.ac.th

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

Page 59: Takpong Boontung - msit.mut.ac.th

50

ภาพท 48 ขอมลถกสงมาจาก Apache Kafka เขามาประมวลผลบนระบบ

4.2.2 ผลการทดลองการแจงเตอนเหตการณการโจมต

เมอท าการทดสอบการโจมตแลวขอมลการโจมตทท าการแยกฟลดดวย Logstash แลวจะท าการ

สราง Output Filter เพอเกบเปนขอมลดบในการน าขอมลนมาท าการแจงเตอนผานระบบ Line Notify

ภาพท 49 สราง Output Filter เพอน าขอมลเหตการณมาเกบเปนขอมลดบ

ท าการตรวจสอบขอมลของเหตการณทท าการทดสอบการโจมต จะเหนขอมลทถกสงมาจาก

ระบบแจงเตอนการบกรกเครอขาย SNORT-NIDS ถกสงมายงระบบคนหา ประมวลผลและแสดงผล

ขอมลจราจรทางคอมพวเตอรในรปแบบขอมลดบบนระบบ

Page 60: Takpong Boontung - msit.mut.ac.th

51

ภาพท 50 ขอมลดบทไดจากการท า Output Filter ถกเกบไวบนระบบ

ท าการเขาเวบ ไซทของ Line Notify เพ อขอ API Token น ามาใชงานกบระบบคนหา

ประมวลผลและแสดงผลขอมลการจราจรทางคอมพวเตอร ท าการสมครโดยใช Account Line ของเรา

เองในการสมคร โดยการกดทชอของเราแลวเลอก My Page เสรจแลวกดท Generate Token ดงภาพท

51 - 53

ภาพท 51 เขาสเวบไซท Line Notify เพอสมครสมาชก

ภาพท 52 หลงจากสมครสมาชกใหเลอกท My Page

Page 61: Takpong Boontung - msit.mut.ac.th

52

ภาพท 53 ท าการสราง Token โดยการกดท Generate Token

หลงจากกด Generate Token จะมหนาตางใหตงชอและสามารถเลอกกลมในการสงขอมลการ

แจงเตอนเหตการณจากระบบคนหา ประมวลผลและแสดงผลการจราจรทางคอมพวเตอร โดยการ

ทดลองนจะท าการสงไปท Line มาทตวเอง

ภาพท 54 การ Generate Token ของ Line Notify

ภาพท 55 การ Generate Token ของ Line Notify จะได Token มาใชงาน

Page 62: Takpong Boontung - msit.mut.ac.th

53

ภาพท 56 จะได Token ทท าการสรางขนและการเชอมตอไปยงกลมหรอบคคลใน Line Account

ท าการสราง PHP สครปต เพอท าการสงการแจงเตอนเหตการณทท าการทดลองในขอ 4.2.1

จากระบบคนหา ประมวลผลและแสดงผลขอมลจราจรทางคอมพวเตอรผาน API Token ของ Line Noti-

fy ไปยง Line Account

ภาพท 57 สราง PHP Script เพอทดลองการแจงเตอนผาน Line Notify API Token

Page 63: Takpong Boontung - msit.mut.ac.th

54

หลงจากท าการทดลองตามขอ 4.2.2 จะมการแจงเตอนตามเหตการณททดสอบและมการแจง

เตอนผานระบบ Line Notify ไปยง Line Account ทท าการสรางไว

ภาพท 58 ท าการทดลองการโจมตจะมการแจงเตอนผาน Line Notify ไปยง Line Account

ภาพท 59 ท าการทดลองการโจมตจะมการแจงเตอนผาน Line Notify ไปยง Line Account

Page 64: Takpong Boontung - msit.mut.ac.th

55

4.2.3 ผลการทดลองการจดท ารายงาน

ท าการทดลองสรางรายงานโดยสงออกเปนไฟล PDF โดยการเลอกเมน Dashboard -> NIDS-

SNORT เพอสรางรายงานการทดลองตามหวขอ 4.2.1 ดงภาพ 61 - 63

ภาพท 60 การสรางรายงานเปนรปแบบ PDF

ภาพท 61 การสรางรายงานเปนรปแบบ PDF เสรจสน สามารถ Download ได

Page 65: Takpong Boontung - msit.mut.ac.th

56

ภาพท 62 หนารายงานการแสดงผลเปนรปแบบ PDF

Page 66: Takpong Boontung - msit.mut.ac.th

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) ทสามารถน ามาใชงานไดเลยโดยไม

จ าเปนตองตดตงระบบเองใหยงยาก

Page 67: Takpong Boontung - msit.mut.ac.th

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) และยงยากในการจดการ ใหสามารถแสดงผลออกมาใน

ภาพรวมไดอยางมประสทธภาพ

Page 68: Takpong Boontung - msit.mut.ac.th

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/

Page 69: Takpong Boontung - msit.mut.ac.th

60

อกษรยอและค าจ ากดความ

ELK Elasticsearch, Logstash, Kibana

Logs ขอมลจราจรทางคอมพวเตอร

Node Server

JSON JavaScript Object Notation

Index Database

NIDS

REST

PDF

Regex

Src

Dst

Network Intrusion Detection System

Representational State Transfer

Portable Document Format

Regular Expression

Source

Destination

Page 70: Takpong Boontung - msit.mut.ac.th

- 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

Page 71: Takpong Boontung - msit.mut.ac.th

- 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

Page 72: Takpong Boontung - msit.mut.ac.th

- 3 -

สรางไฟล config ในการรบขอมล (Input) การแยกขอมล (Filter) และการสงออกขอมล (Output)

ไวท /etc/logstash/conf.d/ ซงไดแก Input filebeat, Input Syslog, Input Kafka

Page 73: Takpong Boontung - msit.mut.ac.th

- 4 -

Filter ของ Gateway Firewall

Filter และ Output ของ Kafka Streaming

Filter และ output ของระบบแจงเตอนการบกรกเครอขาย SNORT-NIDS

Page 74: Takpong Boontung - msit.mut.ac.th

- 5 -

Filter และ output ของเครองลกขาย Linux

1.3 การตดตงและการตงคา Kibana เพอใชในการแสดงขอมลการจราจรทางคอมพวเตอร

# sudo yum -y install kibana

Page 75: Takpong Boontung - msit.mut.ac.th

- 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

Page 76: Takpong Boontung - msit.mut.ac.th

- 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

Page 77: Takpong Boontung - msit.mut.ac.th

- 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:

Page 78: Takpong Boontung - msit.mut.ac.th

- 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

Page 79: Takpong Boontung - msit.mut.ac.th

- 10 -

php /root/alert/rawlog.php

sleep 5

rm -rf /var/log/rawlog/*.log

- ตงคา crontab -e

* * * * * /root/alert/rawlog.sh

Page 80: Takpong Boontung - msit.mut.ac.th

- 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

Page 81: Takpong Boontung - msit.mut.ac.th

- 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 ตามภาพ

Page 82: Takpong Boontung - msit.mut.ac.th

- 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-(ป.เดอน.วน)

Page 83: Takpong Boontung - msit.mut.ac.th

- 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-(ป.เดอน.วน)

Page 84: Takpong Boontung - msit.mut.ac.th

- 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-(ป.เดอน.วน)

Page 85: Takpong Boontung - msit.mut.ac.th

- 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-(ป.เดอน.วน)

Page 86: Takpong Boontung - msit.mut.ac.th

- 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-(ป.เดอน.วน)

Page 87: Takpong Boontung - msit.mut.ac.th

- 18 -

13. ไฟล filebeat.yml บนระบบตรวจจบการบกรกเครอขาย NIDS-Snort และเครองลกขาย Linux

14. ไฟล winlogbeat.yml บนเครองลกขาย Windows 10

Page 88: Takpong Boontung - msit.mut.ac.th

- 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 ดงภาพ

Page 89: Takpong Boontung - msit.mut.ac.th

- 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 ดงภาพ

Page 90: Takpong Boontung - msit.mut.ac.th

- 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

Page 91: Takpong Boontung - msit.mut.ac.th

- 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)