Everything are connected together

“ทุกสรรพสิ่งเชื่อมต่อกัน” สวัสดี ผู้อ่านทุกท่านนะครับ นี่คือบทความฉบับปฐมภูมิของผู้เขียน ที่จะนำพาท่านไปพบกับบทความในอีกรูปแบบหนึ่ง ที่ผู้เขียนพยามสรรสร้างบทความนี้เพื่อให้เกิดแนวความคิดที่เรียบง่าย แต่ได้ไอเดีย เพื่อนำไปสร้างนวัตกรรมหรือนำไปประยุกต์ใช้งานกับหน้าที่การงาน ที่เราต่างร่วมกันทำเพื่อองค์กรของเราให้มีความก้าวหน้าอย่างยั่งยืนต่อไป กล่าวถึงหัวข้อที่ผู้เขียนเรื่อง “Everything are connected together” เป็นเรื่องราวที่ผู้เขียนได้สกัดมาจากงานที่ผู้เขียนปฏิบัติจริงและได้มีการดำเนินการมาเป็นระยะเวลา 2 ปี ตั้งแต่เริ่มตั้งไข่ จนกระทั่งเริ่มยืนและเดินได้ เติบโตขึ้นทีละเล็ก ทีละน้อย ค่อยๆ เพิ่มทักษะในการเรียนรู้ไปพร้อม ๆ กัน ในบทความนี้จะไม่เน้นเนื้อหาในเชิงลึก แต่จะนำเสนอแก่นสาร ที่รวบรวมแนวความคิดของผู้เขียนที่มีต่อการปฏิบัติงาน เพื่อนำเสนอไอดีย และแง่มุมต่าง ๆ ที่มันสะท้อนให้เห็นอะไรบางอย่างจากการปฏิบัติงาน เพื่อเป็นแนวทางให้กับผู้อ่านต่อไป ปัจจุบันโลกของเรามีการเปลี่ยนอย่างก้าวกระโดด โดยเฉพาะในด้านเทคโนโลยีตลอดจนเครื่องมือต่าง ๆ เกิดขึ้นมากมายให้เราเลือกนำมาใช้งาน สิ่งที่จะกล่าวต่อไปนี้คือ “ทุกสรรพสิ่งเชื่อมต่อกัน” เมื่ออ่านมาถึงจุดนี้ผู้อ่านคงจะเริ่มคิดถึงสิ่งต่าง ๆ ที่อยู่รอบตัวเรา ในชีวิตประจำวันที่เราใช้ Internet มันเชื่อมโยงทุกสิ่งอย่าง อย่างไรก็ตามในหลาย ๆ มิติของการเปลี่ยนแปลงมันก็เป็นไปตามธรรมชาติของมัน นั่นคือทุกอย่างล้วน เกิดขึ้น ตั้งอยู่ และดับไป ผู้เขียนพยามสะท้อนให้เห็นถึงความเป็นจริง หากเราจะก้าวไปข้างหน้า จงอย่างไปยึดติด แต่เราควรเลือกที่จะเปลี่ยนให้เหมาะสมไปตามภาวะในความเป็นจริง เรามาเข้าเรื่องที่จะนำเสนอในบทความนี้กัน…. เพิ่งได้เข้าเรื่องนะ OK ใจเย็น ๆ ไม่ต้องรีบร้อนค่อย ๆ อ่านไปแล้วกันนะ ^_^ จากการที่ศูนย์คอมพิวเตอร์ มหาวิทยาลัยสงขลานครินทร์ เป็นเจ้าภาพในการจัดการประชุมปฏิบัติการ “ระบบเทคโนโลยีสารสนเทศและการสื่อสารมหาวิทยาลัยสงขลานครินทร์” ครั้งที่ 1 (The 1st PSU ICT Workshop) นับเป็นนิมิตหมายอันดีที่ทำให้เราได้เชื่อมต่อถึงกัน ในการประชุมครั้งนั้นผู้เขียนได้มีส่วนร่วมในการนำเสนอ ” แพลตฟอร์มสำหรับการพัฒนา web app และ mobile app บนสถาปัตยกรรมไมโครเซอร์วิส (Microservices Architecture)” สถาปัตยกรรมของแพลตฟอร์มใหม่ ของคณะวิศวกรรมศาสตร์ ได้ออกแบบขึ้นบนพื้นฐานของสถาปัตยกรรม Microservice ซึ่งทุกสิ่งอย่างเชื่อมต่อกัน แต่ละ Service มีหน้าที่เฉพาะตัว ไม่ยึดติดภาษาที่ใช้พัฒนา แต่เราจะควบคุมให้ทำงานตามที่เราต้องการและสามารถปรับแต่งได้ เพื่องรองรับการเปลี่ยนแปลง นั่นคือภาพโดยรวมของเพลตฟอร์ม การเลือกเครื่องมือ (Tools) ทีนำมาใช้ในการพัฒนาหรือการ Operation ระบบทั้งหมดนั้นมีความสำคัญต่อการปฏิบัติงาน หลักการเลือกเครื่องมือของผู้เขียนมีดังนี้ ตรงตามความต้องการ มีรายละเอียด (Docs) อธิบายชัดเจน มีชุมชน (Community) ที่มีการ update ปัญหาอย่างสมำเสมอ มี Road map ของการพัฒนาที่ชัดเจน มีช่องทางเชื่อมต่อแบบต่างเพลตฟอร์ม (Cross Platform) เมื่ออ่านมาถึงจุดนี้ ผู้เขียนขอนำเสนอเครื่องมือที่ใช้ในการจัดการบริหารเพลตฟอร์ม ที่สามารถเชื่อมต่อกันโดยไม่ต้องพัฒนาหรือเขียน Code ขึ่นมาใหม่ ตรงนี้จะช่วยให้เรามีเวลาไปทำอย่างอื่นเพิ่มขึ้น เครื่องมือที่นำเสนอในบทความนี้เป็นเพียงส่วนหนึ่งของการพัฒนา ที่ผู้เขียนได้ผ่านกระบวนการทดสอบ และใช้งานจริงแล้ว ขอนำเสนอด้วยภาพด้านล่างเพื่อความเข้าใจอย่างรวดเร็ว จากภาพเครื่องมือที่ใช้นั้นเป็น Open source ที่มาจากต่างค่าย ต่างผู้พัฒนาแต่มันสามารถเชื่อมต่อกันได้อย่างลงตัว ซึ่งรายละเอียดของเครื่องมือนั้นผู้เขียน ขอให้ข้อมูลจากผู้ให้บริการเลยนะครับซึ่งมีดังนี้ Kong API Gateway เป็นเครื่องมือสำหรับจัดการ การเข้าถึง APIs จากภายนอกแล้วไปเรียก APIs ภายในโดยใช้หลักการ Reverse proxy ได้อย่างง่าย สะดวก ไม่ต้องเขียน config ให้ยุ่งยากปลอดภัยและรวดเร็ว ในตัว Kong API Gateway นั้น มี Logging UDP/TCP Plugin  ให้เราสามารถส่ง logs ไปบันทึกตามตำแหน่งที่เราต้องการได้ Reference:  https://konghq.com ELK API Analytic เป็นเครื่องมือที่หลายคนน่าจะรู้จักดีและมีบทความดี ๆ ที่ผ่านมาเกี่ยวกับ ELK อยู่ในชุมชนนี้ด้วย เครื่องมือนี้ช่วยวิเคราะห์ปัญหาการเรียกใช้ APIs ตรวจสอบความผิดปกติในการใช้งาน เป็นต้น Reference: https://www.elastic.co Grafana API Monitoring เป็นเครื่องมือสำหรับใช้สร้าง Dashboard / Visualize กราฟ และวิเคราะห์ในเชิงสถิติ โดยตัวมันมี Plugin connection data source หลายแบบ หนึ่งใน data source

Read More »

อย่าเชื่อเครื่องมือมากเกินไป …

เมื่อเดือนมีนาคม 2561 ผมได้ทำการทดสอบเครื่องมือเจาะระบบ “N”  (ใช้ทดสอบว่าระบบเป้าหมายมีช่องโหว่ใดให้โจมตีบ้าง) ภายใต้ภาระกิจ “Honeypot” เพื่อทดสอบว่า เครื่องมือดังกล่าว สามารถรับรองความปลอดภัยของระบบปฏิบัติการของเครื่องเซิร์ฟเวอร์ ก่อนที่จะอนุญาตให้เข้าถึงได้จากอินเตอร์เน็ตได้หรือไม่ *** การทดลองนี้อยู่ในสภาวะควบคุมที่รัดกุม เป็นระบบที่สร้างขึ้นมา แยกออกจากระบบอื่นที่อาจจะได้รับผลกระทบ และเป็นการทดลองเพื่อวัดความสามารถของเครื่องมือ ไม่ได้มุ่งโจมตีผู้ใด หรือระบบใด *** วิธีการทดสอบ จัดให้มีเครื่องทดสอบ ชื่อ honeypot.in.psu.ac.th อยู่บน VM และใช้เครื่องมือเจาะระบบ “N” ตรวจสอบ 2 ครั้ง โดยครั้งแรก (Baseline 01) เป็นการติดตั้งระบบปฏิบัติการ Ubuntu 16.04 LTS แบบ Default และ Update ให้เป็นปัจจุบันที่สุด แล้วรีบแจ้งให้ “N” ตรวจสอบ ครั้งที่ 2 (Baseline 02) ทำการติดตั้ง Web Server, PHP, MySQL และติดตั้งช่องโหว่อย่างง่ายที่พัฒนาขึ้นเอง (https://github.com/nagarindkx/honeypot) ลงไป โดยภาพรวมดังภาพที่ 1 แล้วรีบแจ้งให้ “N” ตรวจสอบ honeypot.in.psu.ac.th ประกอบด้วยโครงสร้างไฟล์ ดังภาพที่ 2 เมื่อคลิก Login with SQL Injection Vulnerable  จะได้ภาพที่ 3 ซึ่งจะส่งไปที่ไฟล์ badform.html โดยในฟอร์มนี้จะมีช่องโหว่ SQL Injection ทำให้สามารถเข้าเป็น admin ได้โดยลองใส่ username/password ดังนี้ ซึ่งจะได้ผลว่า สามารถเข้าเป็น admin ได้โดยไม่ต้องทราบรหัสผ่านที่แท้จริง แต่อาศัยการเขียน SQL Statement ที่ไม่รัดกุม และไม่ตรวจสอบ Input ก่อน ดังภาพที่ 4 เมื่อคลิก  Simple Non Persistent XSS   จะได้ภาพที่ 5  ซึ่งจะส่งไปยัง simple.php โดยจะเห็นได้ว่า สามารถใส่ชื่อ นามสกุล ลงไปใน URL ได้เลย ผ่านตัวแปร name  (ต้องลองใช้กับ FireFox ถ้าเป็น Google Chrome จะมี XSS Auditor ไม่ได้รับผลกระทบ)   ช่องโหว่นี้ ทำให้ Hacker นำเว็บไซต์นี้ไป ดักเอา Cookie Session ของผู้อื่น หรือ Session HiJacking ดังภาพที่ 6 ด้วย URL นี้http://honeypot.in.psu.ac.th/simple.php?name=%3Cscript%3Ealert(escape(document.cookie))%3C/script%3E หรือ เปลี่ยนเปลี่ยน URL ที่ “Click to Download” ไห้ยังเว็บไซต์ที่ต้องการได้ เช่นเป็น hacked.com เป็นต้น ดังภาพที่ 7 ด้วย URL นี้http://honeypot.in.psu.ac.th/simple.php?name=%3Cscript%3Ewindow.onload=function()%20{%20var%20link=document.getElementsByTagName(%22a%22);%20link[0].href=%27http://hacked.com%27}%3C/script%3E เมื่อคลิก Login to Test Permanent XSS จะได้ภาพที่ 8  ซึ่งจะส่งไปยัง goodlogin.php ซึ่ง เป็น Form ที่ป้องกัน SQL Injection และ ไม่ยอมรับ username/password ว่าง หากไม่ทราบรหัสผ่านจริงๆ ก็จะเข้าไม่ได้ ดังภาพที่ 9 หาก Login เป็น user1 สำเร็จ จะสามารถเปลี่ยน Display Name ได้ ดังภาพที่ 10 ทดลองด้วย username: user1password: user1123** หาก user1 ต้องการดัก Session HiJack

Read More »

จดหมายลอกลวง 23/4/61

ช่วง ศุกร์ที่ 20 ถึง เช้าวันนี้ จันทร์ที่ 23 เมษายน 2561 พบว่า มีผู้ใช้หลายท่านได้รับ email ลักษณะประมาณนี้ แล้วมีคำถามว่า เป็นของมหาวิทยาลัยส่งจริงหรือไม่ ตอบก่อนเลยว่า “ไม่ใช่อีเมลของทางมหาวิทยาลัย” เป็นจดหมายหลอกลวง ทางระบบของมหาวิทยาลัยจะไม่ส่ง email แจ้งเตือนใดๆอย่างนี้ ข้อสังเกต ลิงค์ใน email ที่ให้คลิก จะเป็นอะไรที่ไม่ใช่ psu.ac.th (ทราบไม๊ครับ ? ว่าโดเมนเนมของมหาวิทยาลัยสงขลานครินทร์ คือ psu.ac.th ???) ถ้าเป็นเว็บไซต์ที่ถูกต้อง ของมหาวิทยาลัย จะต้องปรากฏ รูปกุญแจเขียว และ โดเมนเป็นของมหาวิทยาลัยสงขลานครินทร์ ซึ่งใช้โดเมนเนม psu.ac.th ดังภาพ ผู้ส่ง (From) ในทางปฏิบัติ จะ “ตั้งค่า” ให้เป็นใครก็ได้ แต่ในที่นี้ เค้าจะไม่สามารถตั้งค่าเป็น @psu.ac.th ได้ เพราะเราได้ทำการจดทะเบียน DomainKeys Identified Mail (DKIM) และทำตามกระบวนการ Sender Policy Framework (SPF) แล้ว ซึ่งจะกำหนดว่า ต้องเป็น IP ที่ได้รับอนุญาตเท่านั้น จึงจะบอกว่า ส่งจาก @psu.ac.th ได้เท่านั้น …. แม้จะส่งได้และเข้ามาใน Inbox ของท่าน แต่อาจจะเป็นบน gmail.com, hotmail.com, yahoo.com ก็ตาม ก็จะถูกระบุว่า ไม่สามารถเชื่อถือได้ ในที่นี้ จึงเลี่ยงไปใช้ @itservice.psu.ac.th ซึ่ง ก็ไม่มีอยู่จริงเช่นกัน   หากหลงเชื่อ คลิก Link แล้วกรอกข้อมูลไปแล้วควรทำอย่างไร? ให้ทำการตั้งรหัสผ่าน PSU Email ใหม่ที่ ตามวิธีการนี้เท่านั้น http://gafe.psu.ac.th/support/1/1   และ เว็บไซต์ที่จะทำการ ตั้งรหัสผ่าน PSU Email ได้ ต้องเป็นเว็บไซต์นี้เท่านั้น ซึ่งต้องยืนยันตัวจริง ด้วย PSU Passport อีกชั้นหนึ่งด้วย https://webmail.psu.ac.th/src/resetpassword.html   ลืม PSU Passport / ไม่แน่ใจว่า PSU Passport คืออะไร ทำอย่างไร ??? บุคลากรมหาวิทยาลัยสงขลานครินทร์ >>> ติดต่อการเจ้าหน้าที่ คณะ หน่วยงานของท่าน นักศึกษา >>> ติดต่อ ศูนย์คอมพิวเตอร์ ม.สงขลานครินทร์ วิทยาเขตหาดใหญ่ (email สอบถาม: passport@psu.ac.th) บุคลากรที่เกษียณ/ไม่ได้ทำงานที่มหาวิทยาลัยแล้ว >>> มหาวิทยาลัยยังคง email ของท่านไว้เสมอ สามารถใช้ต่อไปได้ แม้ เกษียณ/ลาออก ก็ตาม แต่ในกรณีที่ท่านต้องการเปลี่ยนรหัสผ่าน PSU Email แล้ว ไม่สามารถใช้งาน PSU Passport ได้แล้ว ให้มาติดต่อด้วยตนเองที่ศูนย์คอมพิวเตอร์ มหาวิทยาลัยสงขลานครินทร์ วิทยาเขตหาดใหญ่เท่านั้น

Read More »

ติดตั้ง Piwik บน Ubuntu 16.04

ถ้าอยากมี Web Analytic ใช้เอง ทำไงได้บ้าง             PIWIK [1] เป็นโปรแกรมที่เป็น Opensource ใช้สำหรับทำ Web Analytic โดยมีจุดเด่นใหญ่ ๆ คือมีข้อมูลอยู่ในองค์กรเอง และรองรับมุมมองต่าง ๆ ครบถ้วนตามที่ควรจะมี (จริง ๆ ใช้ Google Analytic ก็ได้ครับ ขอเสนอเป็นทางเลือกในกรณีที่ต้องการอะไรที่ private หน่อย) การติดตั้งลักษณะก็จะเป็นการติดตั้ง mysql (หรือ mariadb), php, apache (หรือ nginx) ดังนี้ครับ ทำการติดตั้ง Ubuntu 16.04[2] ทำการติดตั้ง nginx+mariadb+php (สามารถติดตั้งเป็น apache+mysql+php[3]ก็ได้ครับ) MariaDB sudo apt install mariadb-server mariadb-client Nginx sudo apt install nginx PHP sudo apt install php-fpm php-mysql php-curl php-gd php-cli php-geoip php-zip php-mbstring php-dom php-xml ทำการตั้งค่า nginx เพื่อใช้งานกับ php-fpm sudo vim /etc/php/7.0/fpm/php.ini แก้ไข php config (uncomment cgi.fix_pathinfo และแก้ค่าเป็น 0) […] ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP’s ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 […] แก้ไขไฟล์ nginx.conf sudo vim /etc/nginx/sites-available/default ตั้งค่า fastcgi_pass ให้เรียกใช้งาน php7.0-fpm […] index index.html index.htm index.nginx-debian.html index.php; server_name _; location / { # First attempt to serve request as file, then # as directory,

Read More »

Spark #03: Query Apache Access Log with Spark SQL

ต่อจาก Spark #02: Cluster Installation ซึ่งทำให้เรามี Spark Cluster ที่พร้อมจะทำงานแบบ Distributed Computing แล้ว ขั้นตอนการติดตั้ง Hadoop Cluster อย่างง่าย ทำให้มี Hadoop HDFS เป็นพื้นที่จัดกับ Zeppelin #01 Installation ทำให้สามารถใช้งาน Spark ได้ง่ายขึ้น บทความนี้ จะกล่าวถึงการนำเข้าไฟล์ Apache Access Log เข้าไปเก็บไว้ใน Hadoop HDFS แล้ว ให้ Apache Spark Cluster เข้าไปค้นหาข้อมูล โดยใช้ภาษา SQL ผ่าน Spark SQL API นำ Apache Access Log เข้า HDFS ให้ Copy Apache Access Log ที่มีอยู่มาเก็บไว้ในเครื่องที่สามารถติดต่อ Hadoop HDFS ได้ (ในที่นี้ ชื่อไฟล์เป็น apache.access.log) ใช้คำสั่งต่อไป (แทน /test/ ด้วย Path ที่สร้างไว้ใน HDFS) hdfs dfs -copyFromLocal apache.access.log /test/ เมื่อไปดูผ่าน Web UI ของ Hadoop HDFS ก็จะเห็นไฟล์อยู่ดังนี้ วิธี Query ข้อมูลจาก Zeppelin ไปยัง Spark Cluster เปิด Zeppelin Web UI แล้วสร้าง Note ใหม่ โดยคลิกที่ Create new node แล้วใส่ชื่อ Note เช่น Query Apache Access Log ตั้ง Default Interpreter เป็น Spark แล้วคลิก Create Note ใส่ Code ต่อไปนี้ลงไป ด้านขวามือบน จะมีรูปเฟือง ให้คลิก แล้วเลือก Insert New แล้วใส่ข้อความนี้ลงไป จากนั้นคลิก Run all paragraphs ผลที่ได้ ตอนต่อไปจะมาอธิบายวิธีการเขียนคำสั่งครับ

Read More »