Category: Internet


Update Pi-hole

หลังจากที่ได้ใช้ Pi-hole เพื่อบล็อคโฆษณามาซักพัก ก็ทำงานได้ดี แล้วก็ลืมไปเลยว่าเคยมีอยู่ พอวันนี้มาเปิดดูพบว่ามีเวอร์ชั่นใหม่ออกมาอีกเยอะเลย งั้นมาอัพเกรดกันดีกว่า

ขั้นตอนการอัพเกรดสามารถทำได้โดย
1. SSH ไปที่ Linux ที่ลง Pi-hole ด้วยคำสั่ง putty pi-hole.domain.com
2. รันคำสั่ง pihole -v เพื่อตรวจสอบเวอร์ชั่น

3. สั่งอัพเกรดด้วยคำสั่ง pihole -up (อาจต้องใส่ sudo ข้างหน้าด้วย ขึ้นอยู่กับ user ที่ล็อกอิน)

4. รอซัก 1-2 นาทีก็อัพเกรดเสร็จ

5. ถ้าลองมาตรวจสอบในหน้า web admin ก็จะแสดงเป็นเวอร์ชั่นใหม่เช่นกัน

6. แล้วเราก็จะได้หน้ากราฟสวยๆ กลับมาแล้ว ว่าแต่ 5.2.4 กับ 5.0 มันต่างกันตรงไหนหว่า ขอไปอ่าน releases note ก่อนนะ

Advertisement

จาก post ก่อนโน้น SSL Certificate มีกี่แบบ แตกต่างกันอย่างไร ล่าสุดผมพบว่ามีเวปไซต์ที่ใช้ทั้ง SAN และ Wildcard ได้ในใบเดียวกัน ไม่ใช่คนอื่นไกลเลย แต่เป็นอากู๋ Google เอง

โดยมีรายละเอียดตามด้านล่างครับ
2015-06-13_SAN_&_Wildcard_SSL_1


นอกจากนี้ Google ยังมี Intermediate certificate authorities เป็นของตัวเองอีกด้วย ถ้าออก cert ไม่เยอะจริงไม่คุ้มค่าตั้งเองนะเนี่ย
2015-06-13_SAN_&_Wildcard_SSL_2

Edit DNS Configure at THNIC

นอกเนื่องการการตั้งค่า DNS ที่ BIND หรือ Windows Server ของเราแล้ว ยังต้องมีการกำหนดค่าที่ฝั่งของผู้จดทะเบียน DNS ด้วย ในกรณีที่ใช้ .th จะอยู่ในความดูแลของ THNIC ครับ

การแก้ไข DNS ที่ THNIC สามารถทำได้ง่ายๆ ดังนี้
1) เปิดเวปบราวเซอร์ไปที่ https://www.thnic.co.th/
2) เลือก Member Login
THNIC_DNS_2
3) กรอกข้อมูล user และ password
THNIC_DNS_3
4) เลือกแก้ไข DNS
THNIC_DNS_4
5) ใส่ค่าที่ต้องการลงไป เลือก checkbox ว่าใช่ และกด Continue
THNIC_DNS_5
6) เท่านี้ก็เรียบร้อยแล้วครับ ที่เหลือก็คือรอให้ THNIC refresh ค่า DNS Zone และรอให้ cache ใน DNS server อื่นๆ expire ก็ใช้ได้ครับ ผมลองทดสอบกับ google DNS (8.8.8.8) พบว่ารอไม่ถึง 5 นาทีก็ใช้ได้แล้วครับ

ต้องขออ้างถึง SSL หรือ Secure Sockets Layer ซึ่งเป็นโพรโตคอลที่ใช้ในการส่งข้อมูลที่เป็นความลับ โดยใช้เทคนิค asymmetric cryptography และได้นำมาประยุกต์ใช้กับโพรโตคอล HTTP เป็น HTTPS

ซึ่งการทำงานของ HTTPS ตัวเวปเซิร์ฟเวอร์จะบอกว่าถ้าอยากส่งข้อมูลมาหาเวปเซิร์ฟเวอร์ให้เข้ารหัสด้วย public key แบบนี้ ปัญหาคือแล้วเราจะรู้ได้อย่างไรว่า public key ที่บอกมาเป็นของจริง ไม่โดน man-in-the-middle attack ดังนั้นจึงต้องพึ่งใบรับรองหรือ certificate โดยมันจะรับรองว่า public key ที่ใช้เข้ารหัสลับที่เวปต่างๆ กล่าวอ้างนั้นเป็นตัวจริง ส่วนคนที่ออกใบรับรองก็มักเป็นบริษัทใหญ่ๆ โตๆ ซึ่งเค้าจะมี deal กะ Microsoft, Mozilla, และ Google อยู่เพื่อบอกว่าเค้าเป็นคนออกใบรับรองได้นะ

สำหรับชนิดของใบรับรองที่ใช้อยู่ในปัจจุบันมี 4 แบบ

    1) แบบธรรมดา

      ราคาถูกสุด ตั้งแต่หลักร้อยไปหลักพันบาท ใช้ได้แค่เวปเดียว โดเมนเดียว
      SSL_Certificate_01
    2) Wild Card SSL Certificate

      เหมือนคำสั่งใน command line แบบ dir *.* นั่นแหละครับ คือเป็น *.domain.com คือใช้กับ sub domain อะไรก็ได้ของให้ลงท้ายด้วย .domain.com ดูตัวอย่างได้ที่ https://securityalliance.mcafee.com/
      SSL_Certificate_02
    3) Extended Validation SSL Certificate

      หรือ EV SSL นอกเหนือจะใช้เพื่อเข้ารหัสลับแล้วก่อนจะออก certificate ผู้รับรองจะต้องมาตรวจสอบเจ้าของโดเมนด้วยว่า อยู่ที่ไหน ทำธุรกิจจริงหรือเปล่า ซึ่งจะสร้างความน่าเชื่อถือให้กับผู้ใช้งานมากขึ้น เพราะไม่ใช่แค่จ่ายเงินผ่านบัตรเครดิตแล้วจบแบบอื่นๆ ซึ่ง Web browser ที่สนับสนุนจะแสดงสีเขียวในช่อง address bar ครับ ตัวอย่างดูตาม URL ของอินเทอร์เน็ตแบ้งค์กิ้งของธนาคารในบ้านเราได้เลยครับ
      SSL_Certificate_03
    4) SAN SSL Certificate

      ไม่ได้เกี่ยวอะไรกับ Storage Area Network นะครับ แต่มันย่อมาจาก Subject Alternative Name มันจะอยู่กึงกลางระหว่างแบบแรกและแบบที่สองคือสามารถใส่หลายๆ ชื่อได้ แต่ไม่ถึงขั้น unlimited แบบ wild card โดยเราต้องระบุชื่อลงไปว่าจะใช้กับ domain ชื่ออะไรบ้าง ตัวอย่างไปดูได้ที่ https://email.vmware.com ครับ
      SSL_Certificate_04b

บางท่านอาจเข้าใจผิดว่า EV SSL จะมีความแข็งแกร่งกว่า ถอดรหัสยากกว่า แต่ความจริงไม่ใช่ครับ ทั้ง 4 แบบหากความยาวของคีย์เท่ากันก็มีความแข็งแกร่งเท่ากัน ความยาวมากสุดปัจจุบันที่ใช้กันทั่วไปน่าจะ 2,048 บิทนะครับ สามารถใช้เข้ารหัสลับได้เหมือนกัน ป้องกัน man-in-the-middle-attack ได้เหมือนกัน ถ้ามองแค่แง่ความต้องการด้านความปลอดภัยใช้แบบธรรมดาก็ได้ครับ ประหยัดดี (ถ้าอยากประหยัดสุดไม่ต้องซื้อ cert ก็ได้ ใช้เป็น self-signed) แต่หากมองด้านความน่าเชื่อถือ EV SSL ก็จะดีกว่า แต่ถ้าต้องใช้กับหลายเซิร์ฟเวอร์หรือหลายชื่อก็คงต้องดูเรื่องของ SAN กับ Wild Card ครับ

นอกจากนี้ EV SSL สามารถใช้งานร่วมกับ SAN ก็ได้เช่นกันครับ แต่ผมยังหาตัวอย่างเวปที่ใจป้ำไม่เจอเหมือนกัน 😀

เมื่อวานผมพบปัญหาตอนเปิด Gmail ด้วย Google Chrome ขึ้น error ว่า “Gmail – The app is currently unreachable”
Gmail-Proxy-1

แต่ Firefox กลับเปิดได้ พอลองทดสอบด้วย IE เข้าไม่ได้เช่นเดียวกับ Chrome จึงถึงบางอ้อว่า Chrome ใช้ proxy config ร่วมกับ IE นั่นเอง
Gmail-Proxy-2

เพื่อแก้ปัญหานี้เราสามารถเข้าไปเปลี่ยน proxy ของ Chrome ได้โดยไปที่
1) คลิ๊กที่สัญลักษณ์ขีดๆ ด้านขวา แล้วเลือก Settings
Gmail-Proxy-3

2) ให้หน้า Settings เลื่อนลงมาล่างสุดจะพบกับ Show advanced settings…
Gmail-Proxy-4

3) เมนูจะขยายออก ให้เลื่อนลงมาอีก แล้วเลือก Change proxy settings
Gmail-Proxy-5

4) ก็จะมีหน้า Internet Options ของ IE ปรากฏขึ้นมา ให้เลือก LAN settings แล้วติ๊กถูกออกให้หมดตามรูปให้หน้าจอ หรือหากอยู่ภายในที่ทำงานก็ให้กำหนดค่า proxy ตามที่แผนก IT แจ้ง
Gmail-Proxy-6

หมายเหตุ เนื่องจาก Chrome ใช้ proxy config ร่วมกับ IE ดังนั้นอาจกำหนด proxy จาก IE ก็ได้เช่นกันครับ

นอกจากการใช้งาน Internet Connection Sharing ที่มาพร้อมกับวินโดวส์ เพื่อแชร์อินเทอร์เน็ตให้กับคอมเครื่องอื่นผ่านสายแลนแล้ว ตอนนี้เราสามารถแชร์อินเทอร์เน็ตจากวินโดวส์ให้มือถือ, แท็บเล็ต, หรือคอมอีกเครื่องผ่านไวไฟได้แล้ว หรือที่เรียกว่าไวไฟฮอทสปอต (WiFi Hotspot) นั่นเอง

โดยใช้โปรแกรม Connectify ซึ่งสามารถโหลดมาใช้งานได้ฟรีอย่างไม่จำกัดเวลา หลังจากติดตั้งแล้วจะมี icon ปรากฎในมุมล่างขวาของจอ โดยเราสามารถเลือกชื่อ Hotspot เองได้ แต่ในเวอร์ชั่นฟรี Hotspot (หรือ SSID) ที่คนอื่นจะมองเห็นจะเริ่มต้นด้วยคำว่า Connectify-ชื่อที่เรากำหนดเอง ยกเว้นจ่ายตังซื้อตัวเต็มจะกำหนดเองได้ทั้งหมด จากนั้นก็ใส่รหัสผ่าน เลือกวิธีการเข้ารหัส แล้วก็กด Start Hotspot ได้เลย
Share-WiFi-1

เมื่อมาที่อุปกรณ์แท็บเล็ตก็เลือก WiFi ตามชื่อที่กำหนดไว้ แล้วใส่รหัสผ่านก็ใช้งานได้เลยครับ
Share-WiFi-2

ปล. แต่มีข้อสังเกตุนิดนึงครับ หากเราใช้ WiFi ต้นทางเป็นใช้ความถี่ที่ 5GHz เวลาเราแชร์ฮอทสปอทมันก็จะแชร์ที่ 5GHz เหมือนกันนะครับ ดังนั้นอุปกรณ์ที่ไม่สนับสนุน 5GHz ก็จะใช้ไม่ได้ ซึ่งผมมี iPhone4 ที่ไม่สนับสนุน WiFi 5GHz ก็เลยใช้ไม่ได้เลย เศร้าจัง 😥

TTL ของ DNS จะคล้ายกับ TTL ที่ใช้ในเครือข่ายไอพี คือเป็นตัวบอกอายุของ DNS record มีหน่วยเป็นวินาทีครับ จุดทีมีผลกระทบกับเราผู้ใช้งานอินเทอร์เน็ตคือ เป็นค่าที่บอกให้ DNS server ของ ISP ที่เราใช้อยู่จะเก็บแคช (Cache) ของ DNS record ไว้นานแค่ไหน ซึ่งหากกำหนดค่าไว้นานๆ ก็ไม่ต้องถามกันบ่อยๆ ทำให้ DNS server โหลดไม่สูง แต่ก็มีข้อเสียคือหากเปลี่ยน IP ก็ต้องรอให้ cache expired ซะก่อน

และตัวนี้เองก็เป็นเหตุผลที่บอกกันว่าถ้าจะย้ายเวปจาก colo เจ้าเดิมไปเจ้าใหม่ต้องรอ 2-3 วันจึงจะดำเนินการเสร็จ เพราะโดยทั่วไปแล้วหลายๆ Colo ที่เค้ามักจะกำหนด TTL ไว้เป็นหลักวันครับ

หากต้องการทดสอบว่าโดเมนที่เราสนใจสามารถใช้คำสั่ง

nslookup -qt=soa ชื่อโดเมน

ตัวอย่างเช่น

nslookup -qt=soa modplusplus.com

Server:  google-public-dns-a.google.com
Address:  8.8.8.8

Non-authoritative answer:
modplusplus.com
        primary name server = ns1.wordpress.com
        responsible mail addr = hostmaster.wordpress.com
        serial  = 2005071858
        refresh = 14400 (4 hours)
        retry  = 7200 (2 hours)
        expire  = 604800 (7 days)
        default TTL = 300 (5 mins)

แสดงให้เห็นว่าโดเมน modplusplus.com มีค่า TTL 300 วินาที หากภายใน 300 วินาทีมีไคลเอนท์มาถาม DNS server ที่ ISP อีกก็จะตอบค่าเดิมได้เลย แต่หากพ้น 300 วินาทีแล้ว DNS server ที่ ISP จำเป็นต้องวิ่งมาถามที่ ns1.wordpress.com ใหม่ครับ

หากเราต้องการตั้ง Public DNS แล้วไม่ต้องการให้ DNS ของเราเป็น Open DNS คือให้คนอื่นมาถามหาโดเมนอื่นหรือปิด recursive query นั่นเอง ข้อดีคือจะทำให้ CPU, RAM, และ network load ลดลง สามารถทำได้โดย
1) เลือก Start -> Administrative Tools -> DNS

2) คลิกขวาที่ชื่อเครื่อง DNS ที่ต้องการ แล้วเลือก Properties

3) ไปที่แท๊ป Advanced แล้วเลือก Disable Recursion จากนั้นกด OK

หากต้องการเปิด recursive query อีกครั้ง ก็แค่เอาเครื่องหมายถูกหน้า Disable Recursion ออกเท่านั้นเอง

หากเราใช้ Android เชื่อมต่อกับเมล์เซิร์ฟเวอร์แล้วได้ error message ว่า “ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ (500 #5.5.1 command not recognized)”

เมื่อทดสอบด้วยคำสั่ง EHLO จะไม่ผ่าน แต่หากใช้ HELO สามารถทำงานได้

S: 220 ************************
C: EHLO www.google.com
S: 500 #5.5.1 command not recognized
C: HELO www.google.com
S: 250 smtp01.modplusplus.com

ขออธิบายดังนี้ การทำงานของ SMTP จะทำงานได้อยู่ 2 โหมดคือ
1) โหมดดังเดิม (HELO)
2) โหมดเพื่อประสิทธิภาพ (EHLO หรือ Enhanced HELO) โดยโหมดนี้จะเพิ่มความสามารถในเรื่องการเข้ารหัสลับ TLS, การพิสูจน์ตน, และอื่นๆ

ปัญหานี้เกิดจาก 2 ปัจจัยคือ
1) มีอุปกรณ์เน็ตเวิร์คบางตัวไม่ยอมให้ใช้ EHLO เพราะจะไม่สามารถตรวจสอบข้อมูลได้หากเปิดการใช้งานเข้ารหัสลับ TLS ซึ่งอุปกรณ์เน็ตเวิร์คดังกล่าวคือยี่ห้อ Cisco ไม่ว่าจะเป็น PIX, ASA, หรือแม้แต่ firewall service module หากเปิดใช้งานฟีเจอร์ inspect esmtp มันจะแก้ return code ปกติที่เป็น 250 จากเมล์เซิร์ฟเวอร์เป็น 5xx แทนครับ
2) mail client เจ้าอื่นๆ หากใช้ EHLO ไม่ได้มันยอมกลับไปใช้ HELO แต่ว่า Android มันไม่ยอม ต้องใช้ EHLO เท่านั้น

ดังนั้นวิธีแก้ง่ายมากครับ ปิดฟีเจอร์นี้ที่อุปกรณ์ Cisco วิธีการสามารถอ่านเพิ่มเติมจากคู่มือของ Cisco หน้า 14-10 http://www.cisco.com/en/US/docs/security/asa/asa83/command/reference/cmdref.pdf

หมายเหตุ: ในบางอุปกรณ์ Cisco บางเวอร์ชั่นจะสามารถใช้ EHLO ได้ แต่เมื่อมีการใช้งานคำสั่ง STARTTLS อุปกรณ์ Cisco ที่เปิดฟีเจอร์ดังกล่าว จะแก้ไข STARTTLS เป็น ******** เพื่อไม่ให้ใช้งานเข้ารหัสลับ TLS ได้เหมือนกันครับ

transparent proxy เป็นการทำ web proxy แบบหนึ่งที่ไม่จำเป็นต้องแก้ไขใดๆ ที่ฝั่งของไคลเอนท์ มักนิยมกับบริษัทที่มีขนาดใหญ่หรือตามผู้ให้บริการอินเทอร์เน็ตเนื่องจากมีค่าใช้จ่ายและความซับซ้อนสูงกว่า explicit proxy หรือ proxy ธรรมดา เนื่องจากไม่จำเป็นต้องแก้ไขคอนฟิกใดๆ ที่ฝั่งไคลเอนท์เลย โดยการคอนฟิกจะทำที่อุปกรณ์เครือข่ายทั้งหมด อาจจะเป็นการใช้งานร่วมกับ L4 switch, hardware load balancer, ใช้โพรโตคอล WCCP คุยกับ Cisco switch, หรือแม้แต่ว่าง in-line เลย

แล้วเราจะรู้ได้อย่างไรว่าตอนนี้มี ใครแอบเอา transparent proxy มาวางขวางเราหรือเปล่า เราสามารถตรวจสอบได้ง่ายๆ โดยเข้าเวป WhatIsMyProxy ซึ่งเวปนี้อาจจะบอกว่าเราได้ว่าเราใช้ transparent proxy อยู่หรือเปล่า

ซึ่งในรูปข้างบนทำให้เรารู้ได้ว่าตอนนี้กำลังใช้ proxy ที่ชื่อว่า paul-suk2 เป็น squid และมี private IP เป็น 10.199.88.57

อย่างไรก็ตามหาก transparent proxy ดังกล่าว ไม่ได้สแตมป์ header VIA หรือ X-Forwarded-For เราก็อาจไม่เห็นก็ได้ครับ เพราะการที่ proxy ส่งข้อมูลรายละเอียดเยอะเกินไปอาจเป็นดาบสองคมได้ เพราะเวปเซิร์ฟเวอร์จะรู้ข้อมูลข้างในองค์กร หรือเวอร์ชั่นและยี่ห้อของ proxy ได้ ดังนั้นบางครั้งแอดมินจึงคอนฟิก proxy ไม่ให้ส่งข้อมูลดังกล่าว