วิธีแก้ไข Excel เปิดไฟล์ CSV แล้วอ่านภาษาไทยไม่ออก

ผู้ใช้จะใช้คำประมาณว่า “เป็นภาษาต่างดาว” เอ่อ … ภาษาต่างดาวเนี่ยเป็นไงครับ ? อย่างคนเขียนคำว่า “私はあなたを愛している” ทำไมเราถึงรู้ว่า นี่คือภาษาญี่ปุ่น หรือ “我愛你”  ทำไมเราถึงรู้ว่า นี่เป็นภาษาจีน หรือ “Я люблю тебя” เป็นภาษารัสเซีย เปลี่ยนเป็นคำว่า “เป็นภาษาที่อ่านไม่ออก” หรือ “ไม่ออกมาเป็นภาษาไทย” จะถูกต้องกว่านะครับ ปัญหา ผู้ใช้เปิดไฟล์ที่แน่ใจได้ว่า Export จากระบบมาเป็น Unicode/UTF-8 แน่นอน เหตุ Microsoft Excel เค้าจะ Default ใช้ Charset เป็น Windows-874 วิธีการแก้ไข สร้างไฟล์ Excel ใหม่ คลิกเมนู Data -> From Text/CSV(ของใครเมนูภาษาไทย เทียบเคียงเอาเองนะครับ) เลือกไฟล์ CSV ที่ต้องการ เบื้องต้นตอนจะ Import จะได้เห็นสิ่งที่ Excel ทำ คือ Default เป็น Windows-874 ต่อไป เปลี่ยนที่ File Origin เป็น Unicode/UTF-8หรือ แล้วแต่ที่ต้นทาง Export มา ก็จะได้ ภาษาไทยสวยงาม เมื่อคลิก Load ก็จะได้ข้อมูลที่เป็น “ภาษาไทย” อ่านออกแล้ว หวังว่าจะเป็นประโยชน์ครับ

Read More »

Hardening your HTTP response headers

Introduction HTTP Response headers คือ ค่าของสตริงที่ส่งกลับมาจากเซิร์ฟเวอร์ที่มีเนื้อหาตามที่ถูกร้องขอ โดยปกติจะใช้บอกข้อมูลทางเทคนิค เช่น เบราเซอร์ควรแคชเนื้อหา, ประเภทของเนื้อหาคืออะไร, ซอฟต์แวร์ที่ทำงานบนเซิร์ฟเวอร์ และอื่น ๆ   HTTP Response headers ถูกใช้เพื่อส่งต่อนโยบายความปลอดภัยไปยังเบราเซอร์  ทำให้การเปิดเว็บไซต์ของเรามีความปลอดภัยเพิ่มมากขึ้น Header ของ Apache2 ที่ควรต้องใส่เพื่อเพิ่มความปลอดภัยมีดังนี้ Content Security Policy Header เรื่อง Content Security Policy (CSP) ช่วยให้กำหนดต้นทางของเนื้อหาที่อนุญาตสำหรับเว็บไซต์ โดยการจำกัดเนื้อหาที่เบราเซอร์สามารถโหลดได้ ได้แก่ js และ css สามารถสร้าง CSP ได้จาก https://report-uri.com/home/generate ทั้งนี้ต้องทดสอบการทำงานทุกครั้งเนื่องจาก การกำหนดค่าบางอย่างอาจทำให้เว็บไซต์ ทำงานไม่ถูกต้อง ดูรายละเอียดเพิ่มเติมได้ที่ https://scotthelme.co.uk/content-security-policy-an-introduction/ สำหรับ Apache2 เพิ่ม Header ต่อไปนี้ ในแฟ้มของไซต์ที่ต้องการ เช่น /etc/apache2/site-enabled/lsc-ssl.conf  หรือแฟ้ม .htaccess ในไซต์ที่ต้องการ (ซึ่งแนะนำว่าใช้ .htaccess จะได้ไม่ต้องรีสตาร์ทเซิร์ฟเวอร์) เพื่อเปิดการใช้งาน CSP Header always set Content-Security-Policy “default-src https: data: ‘unsafe-inline’ ‘unsafe-eval'” HTTP Strict Transport Security (HSTS) เว็บไซต์ ต้องมีการตั้งค่าให้ redirect จาก HTTP ไปยัง HTTPS เสมอ และ HSTS จะเป็น Header ที่กำหนดให้เบราเซอร์จำสถานะของ HTTPS เอาไว้แม้ว่าจะเป็นการเปิดจาก bookmark ที่เป็น HTTP ก็ตาม ก็จะถูกบังคับให้เป็น HTTPS รายละเอียดเพิ่มเติม https://scotthelme.co.uk/hsts-the-missing-link-in-tls/ เช่น เมื่อเปิด http://licensing.psu.ac.th ก็จะถูก redirect ไป https://licensing.psu.ac.th Header always set Strict-Transport-Security “max-age=31536000; includeSubDomains” X-Frame-Options X-Frame-Options หรือ XFO header จะช่วยป้องกันผู้ใช้จากการโจมตีแบบ clickjacking ที่ผู้บุกรุกสามารถโหลด iframe จากไซต์ของเขาบนไซต์ของเราได้ ซึ่งทำให้ผู้ใช้งานเว็บไซต์ของเราเชื่อว่าไม่อันตราย!! รายละเอียดเพิ่มเติม https://www.troyhunt.com/clickjack-attack-hidden-threat-right-in/ Header always set X-Frame-Options “SAMEORIGIN” X-Xss-Protection Header นี้ใช้กำหนดค่าการป้องกัน XSS ที่มีอยู่บนเบราเซอร์ต่างๆ โดยการตั้งค่าจะมี 0 คือ ปิดการทำงาน 1 คือเปิดการทำงาน และ 1; mode=block ซึ่งจะกำหนดให้เบราเซอร์ทำการบล็อคการกระทำใดๆ ก็ตามที่มากกว่าการล้างข้อมูลสคริปต์ Header always set X-Xss-Protection “1; mode=block” X-Content-Type-Options X-Content-Type-Options ใช้ในการป้องกันการโจมตีผ่านทางช่องโหว่ MIME sniffing ซึ่งจะเกิดเมื่อ เว็บไซต์อนุญาตให้ผู้ใช้อัพโหลดเนื้อหาไปยังเซิร์ฟเวอร์ ซึ่งผู้ใช้อาจเปลี่ยนหรือซ่อนไฟล์อันตราย แล้วอัพโหลดขึ้นเซิร์ฟเวอร์ รายละเอียดเพิ่มเติม https://www.keycdn.com/support/x-content-type-options/ Header always set X-Content-Type-Options “nosniff” เบื้องต้นแนะนำเท่านี้ก่อนครับ พิเศษ!! สำหรับผู้ใช้งาน wordpress มีปลั๊กอินชื่อ HTTP Headers ใช่ตั้งค่า Header ต่างๆ ที่เล่ามาข้างต้นได้อย่างสบายใจหายห่วง!!! ไม่ต้องแก้ .htaccess ไม่ต้องแก้ config ใด ๆ  เมื่อติดตั้งเสร็จแล้วจะพบว่ามี Header อีกมากที่สามารถตั้งค่าเพิ่มเติมได้ ซึ่งจะกล่าวอีกในครั้งต่อ ๆ ไป ต้นฉบับ https://scotthelme.co.uk/hardening-your-http-response-headers/ มีวิธีการเซ็ตสำหรับ Nginx และ IIS สามารถดูเพิ่มเติมได้ครับ อย่าลืม!! ตรวจ

Read More »

วิธีทำให้โปรไฟล์บน Google Scholar เป็น Public

Google Scholar เป็นบริการหนึ่งของ Google ทำให้เรามีโปรไฟล์  “อีกช่องทางหนึ่ง” เพื่อแสดงผลงานที่ได้รับการเผยแพร่ หรือตีพิมพ์ในที่ต่าง ๆ  อ่านเพิ่มเติม https://scholar.google.com/intl/en/scholar/about.html ปัญหาอยู่ที่ว่า ในการสร้างครั้งแรกโปรไฟล์ (Profile) ของท่าน จะยังไม่ Public หมายความว่า จากหน้า Google จะค้นหาไม่เจอ Google Scholar Profile ของท่านนั่นเอง ( พอดีมีอาจารย์ท่านหนึ่งถามมา เห็นว่าเป็นประโยชน์ จึงเขียนบันทึกนี้ไว้ให้ ) วิธีการทำให้เป็น Public Profile จากหน้า Profile ของท่าน คลิกที่รูป ดินสอ (Edit) ด้านหลังชื่อ คลิก Make my profile public แล้วคลิกปุ่ม Save แต่ต้องรอสักหน่อย เคยอ่านเจอมาว่า ใช้เวลาประมาณ 4 weeks กว่าจะค้นหาบน Google เจอ

Read More »

ELK #07 LogStash

จากที่ได้กล่าวถึงมายาวนานในเรื่อง ELK  และ  ELK #02 ที่ได้กล่าวถึงการติดตั้ง LogStash ไว้เบื้องต้น ในบทความนี้จะมาลงลึก ถึงกระบวนการทำงานของ LogStash ซึ่งเป็นส่วนสำคัญในการเปลี่ยนข้อมูล Unstructured ให้เป็น Structured ตอนนี้ เราจะทำงานใน /etc/logstash/conf.d/ Simple input – output plugin สร้างไฟล์ 01-input-file.conf มีเนื้อหาดังนี้ input { file { path => [“/tmp/input.txt”] mode => “tail” } } ในส่วนนี้ เป็นการกำหนดว่า ให้ LogStash อ่านไฟล์ /tmp/input.txt โดยให้อ่านบรรทัดล่าสุด (ต่อจาก Checkpoint ก่อนหน้า) เข้ามา โดยถ้าไม่กำหนด mode => “tail” ระบบจะอ่านไฟล์ก็ต่อเมื่อ มีการสร้างไฟล์ใหม่เท่านั้น สร้างไฟล์ 98-output-file.conf มีเนื้อหาดังนี้ output { file { path => “/tmp/output.txt” } } ในส่วนนี้ เป็นการกำหนดว่า ให้ LogStash เขียนไฟล์ /tmp/output.txt เมื่อปรับเปลี่ยน configuration ต้องทำการ Restart Service service logstash restart ลองส่งข้อมูลเข้าไปในไฟล์ /tmp/input.txt ด้วยคำสั่ง echo “Hello World 1” >> /tmp/input.txt ดูผลลัพธ์ใน /tmp/output.txt cat /tmp/output.txt {“path”:”/tmp/input.txt”,”@version”:”1″,”message”:”Hello World 1″,”@timestamp”:”2018-09-11T03:42:33.645Z”,”host”:”elk1″} แสดงให้เห็นว่า ระบบ LogStash สามารถรับข้อมูลจากไฟล์ และส่งข้อมูลออกไปยังไฟล์ได้ Filter Plugin ก่อนอื่น Stop Service ด้วยคำสั่ง service logstash stop ในการจัดการข้อมูลก่อนบันทึก เช่นการกรอง การจัดรูปแบบ LogStash ทำงานผ่าน Filter Plugin ซึ่งมีหลายรูปแบบ (https://www.elastic.co/guide/en/logstash/current/filter-plugins.html) แต่ในที่นี้ จะใช้ grok เหมาะกับข้อมูล Unstructured อย่าง syslog เป็นต้น ซึ่งมักจะเป็น Log ที่ให้มนุษย์อ่านได้ง่าย แต่ไม่ค่อยเหมาะสำหรับให้คอมพิวเตอร์เอาไปใช้งานต่อ ซึ่ง LogStash มีไว้ให้แล้วกว่า 120 ตัว ต่อไป สร้าง 44-filter-basic.conf มีเนื้อหาดังนี้ filter { grok { match => { “message” => “%{IP:ipaddress} %{NUMBER:size}” } } } จากนั้น Start Service ด้วยคำสั่ง (รอสักครู่ด้วย) service logstash start แล้วส่งข้อมูลต่อไปนี้ต่อท้ายไฟล์ /tmp/input.txt echo “192.168.1.1 120” >> /tmp/input.txt และเมื่อดูผลใน /tmp/output.txt จะพบบรรทัดสุดท้าย {“message”:”192.168.1.1 120″,”@version”:”1″,”path”:”/tmp/input.txt”,”@timestamp”:”2018-09-11T04:56:03.662Z”,”size”:”120″,”host”:”elk1″,”ipaddress”:”192.168.1.1″} แสดงให้เห็นว่า สามารถใช้ filter นี้ แยกแยะข้อมูลเบื้องต้นได้ Example : Postfix Log ก่อนอื่น Stop Service ด้วยคำสั่ง service logstash stop เนื่องจาก Log แต่ละชนิด แต่ละซอฟต์แวร์มีความหลากหลายมาก แต่ดีที่มีผู้เชี่ยวชาญเค้าเขียน Pattern เอาไว้ให้ ให้ใช้คำสั่งต่อไปนี้ สร้างไดเรคทอรี่ /etc/logstash/patterns.d/ และ ดาวน์โหลด มาเก็บไว้

Read More »

pGina fork 3.9.9.12 configuration

pGina 3.9.9.12 ส่ง RADIUS accounting ได้ และทำ option Remove account and profile after logout ได้ และ ปุ่ม Shutdown ก็ log off user ให้ด้วย (โดยตั้งค่าที่ Local Machine Plugin จะมีให้ ติ๊ก เลือก Notification เพิ่มมาอีกอัน) นอกจากนี้ก็มีเพิ่ม plugins อีกหลายตัว พร้อมแก้บั๊ก ที่น่าสนใจคือ scripting plugin ทำให้ customize ได้มากขี้น แต่ผู้เขียนบทความนี้ยังไม่ได้ลอง เวอร์ชั่น 3.9.9.12 ดาวน์โหลดได้จาก http://mutonufoai.github.io/pgina/index.html การตั้งค่าสำหรับทำเป็น Windows Authentication ในเครื่องคอมที่เป็น Windows 10 ผมได้ทำ screen capture มาเฉพาะที่ผมได้ใช้งาน ซึ่งก็คือ Local Machine, RADIUS plugin ดังนี้ หน้าแรกคือแท็บ General จะแสดงให้เห็นว่าโปรแกรมพร้อมทำงาน ให้ดูที่ข้อความที่แสดงเป็นสีเขียวใต้ข้อความ pGina Service status และตัวเลือกที่ผมเลือกใช้คือ Use original username to unlock computer คือหากหลุดไปที่หน้า screen saver ก็ปลดได้ด้วย username ที่ login นั้น แท็บถัดไปคือ แท็บ Plugin Selection อันแรกที่จะใช้คือ Local Machine คือ user ที่สร้างขึ้นภายใน Windows นั่นเอง สังเกตจะมีตัวเลือกที่ Authentication, Gateway และ Notification (เพิ่มมาใหม่) และที่ใช้อีกอันคือ RADIUS Plugin จากนั้นให้เลือก Local Machine แล้วให้คลิกปุ่ม Configure จะได้ค่าดีฟอลต์ ดังรูปข้างล่างนี้ ผมจะใช้ค่าตัวเลือก Remove account and profile after logout เพื่อที่ไม่ต้องเก็บ user profile ที่เป็น user จาก user database ภายนอก เช่น จาก RADIUS server เป็นต้น และ หากต้องการให้ user นั้นมีสิทธิมากกว่า User ทั่วไป ก็ตั้ง Mandatory Group เช่น ตั้งเป็น Administrators หรือ ใส่ชื่อกลุ่ม Guests ไว้ เมื่อเวลาผู้ใช้ login ก็จะมีสิทธิแค่ Guest ติดตั้งโปรแกรมเพิ่มไม่ได้ เป็นต้น เราจะไม่ใช้ option Remove account and profile after logout ก็ได้โดยให้เก็บ user account ไว้ ก็จะทำให้การเข้าใช้งาน login ในครั้งต่อไปเร็วขึ้น เพราะไม่ต้องเสียเวลาสร้าง user profile ใหม่ แต่ก็ต้องเตรียม disk ไว้ให้ใหญ่เพียงพอ หรือ ทำรอบ cloning ใหม่ให้เร็วขึ้น ต่อไปก็มาถึงตั้งค่า RADIUS plugin หลังจากเลือก Authentication และ Notification แล้วจากนั้นคลิกปุ่ม Configure จะได้ค่าดีฟอลต์รวมกับที่แก้ไขแล้ว ดังรูป ผมจะเลือกใช้และใส่ค่าต่าง ๆ เหล่านี้ครับ เลือก Enable Authentication เพื่อสอบถาม username/password เลือก

Read More »