การกำหนดค่าพื้นฐานความปลอดภัยสำหรับ IIS และ WordPress บน Windows Server

เพื่อให้ Web Server ของเราปลอดภัยจากการถูกโจมตี บทความนี้จะเป็นการแนะนำการกำหนดค่าต่างๆของ web server ที่ให้บริการ ซึ่งทำงานด้วยบน Windows Server และ มีการติดตั้ง IIS, PHP, MySql, ASP.Net และ WordPress

Read More »

วิธีติดตั้ง HTTPS ด้วย Certificate ของ Let’s Encrypt แบบ wildcard สำหรับ Intranet ที่ไม่สามารถเข้าถึงได้จาก Internet

ความเดิมตอนที่แล้ว ต่อจาก วิธีติดตั้ง HTTPS ด้วย Certificate ของ Let’s Encrypt ซึ่ง เครื่องที่จะขอใช้ Certificate นั้น ต้องสามารถ “เข้าถึงได้” จาก Internet เพราะ จะต้องสร้าง File ไปวางในตำแหน่งที่ Let’s Encrypt CA สามารถเข้ามาตรวจสอบได้ว่าเป็น ผู้ที่มีสิทธิ์ในการจัดการ Domain Name นั้นจริง ปัญหาคือ ในองค์กร ถ้าจะให้มีเซิร์ฟเวอร์ ที่สามารถเข้าถึงได้ จาก Internet ต้องเปิด Firewall ขององค์กร ซึ่ง ซับซ้อน และ มีความเสี่ยง แล้ว ถ้ามีเครื่องภายใต้โดเมนเดียวกันอีกหลายเครื่อง ต้องทำทุกเครื่อง ซึ่งไม่สะดวกเลย ต้องเข้าใจก่อน Let’s encrypt มีวิธีการตรวจสอบความเป็นเจ้าของ Domain Name หรือที่เรียกว่า “Challenge” หลายวิธี ได้แก่ HTTP-01 Challenge DNS-01 Challenge TLS-SNI-01 Challenge TLS-ALPN-01 Challenge วิธีที่ง่าย และทำกันทั่วไป คือ HTTP-01 คือ เมื่อ certbot client รับคำสั่งขอ certificate สำหรับโดเมนที่ต้องการแล้ว จะต้องเอาไฟล์ ไปวางที่ ซึ่ง ชื่อต้องตรงกับที่กำหนด และในไฟล์ จะเป็น Token และ Thumbprint ของ account key (ในทางเทคนิค อาจจะให้มีสักเครื่องในองค์กรที่เปิดให้เข้าถึงจาก Internet ได้ ทำหน้าที่ร้องขอ Certificate ได้ แล้วทำ HTTP-01 Challenge ให้ผ่าน ก็จะสามารถขอ Certificate ให้กับ Subdomain อื่น ๆ ได้) แต่มีอีกวิธีหนึ่ง คือ DNS-01 Challenge ซึ่ง ไม่จำเป็นต้องมีเครื่องที่เข้าถึงได้จาก Internet (แต่สามารถ ออก Internet ได้) แต่อาศัยการสร้าง TXT Record ตามที่กำหนดแทน ประมาณนี้ วิธีการมีดังนี้ 0. เราจะขอ wildcard certificate โดเมนของ abc.ijk.xyz.psu.ac.th โดยการติดตั้ง Let’s Encrypts certbot client บน Ubuntu 20.04 ซึ่งเครื่องนี้ สามารถต่อ Internet ได้ แต่ไม่สามารถเข้าถึงได้จาก Internet 1.ติดตั้ง Let’s Encrypts certbot client (ยุ่งยากหน่อย แต่จะได้ certbot version 1.19) หรือสั้นๆ ทำอย่างนี้ก็ได้ (ไม่ต้องใช้ snap แต่จะได้ certbot version 0.40) 2. สั่ง certbot ให้ไปขอเฉพาะ certificate จากนั้นบอกว่าจะติดตั้งเอง (manual) และ ขอใช้ DNS-01 Challenge 3. กรอกข้อมูล โดเมนเนม ที่ต้องการ ในที่นี้ จะขอใช้ wildcard คือ *.abc.ijk.xyz.psu.ac.th **** ตรงนี้ อย่าเพิ่งเคาะ Enter เด็ดขาด จนกว่า DNS admin จะดำเนินการเสร็จ ***** 4. แจ้งผู้ดูแล DNS ขององค์กร ว่า ให้เพิ่ม TXT Record ส่งข้อความตามนี้ไปให้เค้าก็น่าจะได้ หรือจะให้ดี

Read More »

การเชื่อมต่อ Dell EMC SC Series (SAN Storage) กับ Windows 2019 ด้วย iSCSI Microsoft MPIO

ทำไมต้องเชื่อมต่อ SAN Storage ด้วย MPIO มีข้อดีอย่างไร ต้องตั้งค่าอย่างไรให้ถูกต้อง Reference : – https://www.youtube.com/watch?v=hsXtfab-xNM Dell EMC SC Series Storage : Microsoft Multipath I/0 (MPIO) Best Practice– https://downloads.dell.com/manuals/all-products/esuprt_software/esuprt_it_ops_datcentr_mgmt/general-solution-resources_white-papers3_en-us.pdf Dell EMC SC Series Storage and Microsoft Multipath I/O– https://www.youtube.com/watch?v=Z2ICF8yzFkU How-to: Configure iSCSI MPIO on Windows Server 2012 R2– https://www.starwindsoftware.com/blog/lacp-vs-mpio-on-windows-platform-which-one-is-better-in-terms-of-redundancy-and-speed-in-this-case-2 ISCSI: LACP vs. MPIO Environment : – Dell EMC SC5020 – Windows Server 2019 Standard Edition MPIO ย่อมาจาก Multipath Input/Output เป็น Feature ของการเชื่อมต่อไม่ว่าจะเป็น iSCSI หรือ Fiber Channel ที่ต้องการให้ Server ไม่สับสนเมื่อมีการคุยกับ Storage หลายเส้นทาง (Storage ต่อเน็ตหลายเส้น และ Server ก็ต่อเน็ตหลายเส้น รวมถึงมีหลาย IP ไม่ได้ทำแบบหลายเส้นรวมเป็น Link เดียว) ซึ่งถ้าไม่ใช้ความสามารถนี้ จะทำให้ Server เห็น Volume หรือ LUN บน Storage เป็นหลาย ๆ อันทั้งที่เป็นอันเดียวกัน นอกจากนี้ MPIO ยังสามารถทำ Load Balance โดยการกระจายการเชื่อมต่อโดยมีหลายวิธีให้เลือกใช้งานเช่น Round Robin (ไล่ลำดับไปเรื่อย ๆ แล้วกลับมาเริ่มที่ connection ที่ 1 เช่น 12341234) ยกตัวอย่างในกรณีไม่ได้ทำ MPIO ได้ดังรูป หลังจากทำ MPIO จะได้ดังรูป MPIO ไม่ได้ติดตั้งโดย Default บน Windows Server โดยสามารถติดตั้งได้จาก Server Manager GUI โดยการ Add Feature ดังรูป หรือติดตั้งผ่าน PowerShell ดังนี้ หลังจากติดตั้งเสร็จให้ Restart Server สำหรับ Dell EMC SC Series ต้องทำการแก้ไข Registry ของ Windows ด้วย PowerShell Script ดังนี้ หลังจากรัน Script PowerShell ให้ Restart Server อีกรอบ เพื่อให้เข้าใจง่ายขึ้นสามารถยกตัวอย่างการใช้งาน Multipath ได้ดัง Diagramในรูป ตัวอย่างการตั้งค่าใน SAN Storage (Dell SC5020) โดยจะมีทั้งหมด 2 Controller ซึ่งแต่ละ Controller จะมี 4 Port ซึ่งเมื่อตรวจสอบในฝั่ง Windows จะเห็นว่ามี Connection ที่เกิดจากการ Discovery โดยใส่ IP ของ ISCSI ปลายทาง จำนวน 8 Connection ซึ่งต้องเข้าไปตั้งค่าใน Target ให้มีการใช้งานแบบ multi-path ด้วยทุก Connection ซึ่งเราสามารถเลือกใน Advance ได้อีกว่าจะให้เชื่อมต่อไปยัง

Read More »

Ubuntu server 18.04 config static IP with netplan

เดิมก่อนหน้า Ubuntu server 18.04 LTS จะออกมาให้ใช้งานกันนั้น จะเป็น Ubuntu server 16.04 LTS เราตั้งค่า (config) static IP ให้กับ server ด้วยไฟล์นี้ /etc/network/interfaces ซึ่งก็คือ software package ชื่อ ifupdown และ DNS resolver ที่ใช้ก็คือ resolvconf แต่ใน Ubuntu server 18.04 นี้ เปลี่ยนไปใช้ package ชื่อ netplan แก้ไขที่ไฟล์ /etc/netplan/01-netcfg.yaml และใช้ DNS resolver คือ systemd-resolve ซึ่งจะ connect สอบถามชื่อ DNS จาก internal DNS ที่ IP 127.0.0.53 (ตรวจดูด้วยคำสั่ง cat /etc/resolv.conf) โดย default จะเป็นค่า network interface แบบ รับค่า IP มาจาก DHCP server ไฟล์ /etc/netplan/01-netcfg.yaml network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: yes dhcp6: yes หากต้องการใช้เลข IP แบบ Static IP ก็ต้องตั้งค่าเองในแฟ้ม /etc/netplan/01-netcfg.yaml เป็นตัวอย่างประมาณว่า IP คือ 10.0.100.251 ใน class C (/24) มี gateway คือ 10.0.100.1 ทำหน้าที่ nameserver ด้วย และมี nameserver ที่สองคือ 192.100.77.10 network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: no addresses: [ 10.0.100.251/24 ] gateway4: 10.0.100.1 nameservers: addresses: – 10.0.100.1 – 192.100.77.10 หลังจากแก้ไขค่าเสร็จแล้ว สั่งให้ network ทำงานใหม่ ใช้คำสั่ง sudo netplan apply ถ้าตอนนี้ใช้ netplan version 0.36.3 เราสามารถตั้งชื่อ network interface เป็นชื่อ vif1 แทน physical network interface เดิม ก่อนอื่น ให้ใช้คำสั่ง ifconfig เพื่อดูค่า MAC address ของ enp0s3 สมมติคือ 44:bb:33:85:91:08 ตัวอย่างการแก้ไขข้อมูล network: version: 2 renderer: networkd ethernets: vif1: match: macaddress: “44:bb:33:85:91:08” set-name: vif1 dhcp4: no addresses: [ 10.0.100.251/24 ] gateway4: 10.0.100.1 nameservers: addresses: – 10.0.100.1 – 192.100.77.10 หลังจากแก้ไขค่าเสร็จแล้ว ใช้คำสั่ง sudo reboot หลาย ๆ คน อาจจะอยากตั้งชื่อ network interface เป็นชื่อ eth0

Read More »

วิธีติดตั้ง HTTPS ด้วย Certificate ของ Let’s Encrypt

จาก มาใช้งาน let’s encrypt กันเถอะ ของอาจารย์ฉัตรชัย ผมขอขยายความต่อ เอาแบบว่า Copy-Paste กันเลย โดยในที่นี้ … OS เป็น Ubuntu 18.04 Web Server เป็น Apache ที่ Firewall เปิดให้เข้าถึง TCP 80 / 443 จาก Internet ได้ — มันจำเป็นสำหรับการ Verification ของ Certbot ครับ *** ในเบื้องต้นนะ 🙂 *** Let’s Encrypt คืออะไร อ่าน …https://letsencrypt.org/getting-started/ เริ่มต้น ต้องติดตั้ง Certbot ก่อน อ่าน …https://certbot.eff.org/ ดูต้นฉบับการติดตั้งของ Ubuntu 18.04 และใช้ Apache ได้จากhttps://certbot.eff.org/lets-encrypt/ubuntubionic-apache ติดตั้ง Certbot ก่อน ใช้คำสั่งต่อไปนี้ จาก User ที่สามารถ sudo ได้ แบบ Auto จากนั้นใช้คำสั่งต่อไปนี้ เพื่อให้ certbot ทำการติดตั้ง Certificate และแก้ไขไฟล์ (ในที่นี้ใช้ Apache) Configuration ให้เลย แบบแก้ไขเอง หรือถ้าจะทำเอง โดยต้องการเอาเฉพาะ Certificate มา แล้วทำการแก้ไขไฟล์ Apache Configuration เองก็ได้ ระบบจะถาม ยอมรับเงื่อนไขไม๊ –> แน่นอน (A) Accept email address ให้ใส่ไปตามจริง ต้องการให้แสดง email address เปิดเผยหรือไม่ –> ผมตอบ No นะ และ บอกว่า Domain Name ของเราคืออะไร ให้ใส่ FQDN ไป เช่น kx1.in.psu.ac.th เป็นต้น จากนั้น Certbot จะ Callback ไป ให้มีการ Verification จาก Internet ว่าสามารถเข้าถึงได้จริงหรือไม่ (ตรงนี้ ใน PSU ต้องแจ้งทาง Network Admin เพื่อเปิด Port ที่ Firewall ให้เข้าถึง TCP 80 และ 443 ให้สำเร็จก่อน) เมื่อ Verification สำเร็จ ก็จะได้ไฟล์ Certificate และ Private Key มา จะอยู่ที่ (path แต่ละเครื่องจะแตกต่างกันตรงที่ Domain Name ที่กำหนดข้างต้น) ตามลำดับ แก้ไขไฟล์ ให้มีค่าต่อไปนี้ จากนั้นใช้คำสั่งนี้ เพื่อเปิดใช้งาน https ใช้คำสั่งนี้ เพื่อใช้งาน default-ssl และทำการ Restart apache ด้วยคำสั่งนี้ sudo systemctl reload apache2 ทดสอบใช้งาน HTTPS ใช้งานได้ NOTE จริง ๆ แล้ว ในองค์กร สามารถทำเครื่อง ๆ หนึ่งขึ้นมา เพื่อติดตั้ง certbot แล้วขอ Certificate มา ของ Domain ต่าง ๆ แล้วค่อย “ย้าย” certificate และ key file ไปเครื่องที่จะใช้งานจริง

Read More »