การทำให้ server มีความปลอดภัยยิ่งขึ้น

หลังจากที่เราสร้าง VM (Virtual Machines) แล้ว  จำเป็นต้องจัดการในเรื่องความปลอดภัย (security) ให้แก่ VM นั้นๆ ก่อนที่ VM นั้นๆจะถูกเข้าถึงจาก public internet. (ก่อนที่้จะ deploy หรือติดตั้ง applications ต่างๆลงไปใน VM)

บทความนี้ก็จะนำเสนอแนวทางที่ควรปฏิบัติ, ซึ่งไม่ใช่ check lists ทั้งหมด, เนื่องจากว่าแต่ละ application อาจจะมีแนวทางในเรื่อง security ที่แตกต่างกัน เช่น อาจจะต้องใช้ port หรือ protocol ที่ต่างกัน

การใช้ SSH Keys

SSH หรือ secure shell เป็น protocol ประเภทที่มีการเข้ารหัส  ถูกใช้สำหรับจัดการ, สื่อสาร หรือ login กับ servers   

การใช้งาน SSH Keys นั้น จะต้องใช้งานเป็นคู่ (key pair) นั่นคือตัว private key กับ public key จุดประสงค์เพื่อการยืนยันตัวตน  

- Private key นี้ users (ผู้ดูแลระบบ) จะต้องเก็บรักษาไว้ให้ดี 

- Public key สามารถแชร์ให้ผู้อื่นได้

วิธีการ login เข้า servers โดยการใช้ SSH Keys มีความปลอดภัยมากกว่าการใช้ username/password ที่อาจถูก random ได้ง่าย   และเนื่องจาก SSH Key มีจำนวน bits อยู่มากจึงทำให้ถูกแกะ (crack) ได้ยาก  

ไม่ว่าจะใช้วิธีการ login โดยวิธีไหนก็ "ไม่ควร" ที่จะให้เข้าสู่ root user โดยตรง, ควรที่จะเข้าไปด้วย user ธรรมดาแล้ว sudo เพื่อให้ได้สิทธิ์ root

มีการ Firewall

Firewall อาจเป็นได้ทั้ง software หรือ hardware ซึ่งใช้สำหรับกำหนดว่า ต้องการให้ services, IP address, ports ไหนสามารถใช้งานได้บ้าง  

การ configure ตัว Firewall อย่างถูกต้องก็จะทำให้มั่นใจได้ว่า services ไหน หรือ applications ไหนที่ควรเข้าถึงจาก public internet เช่น

- Public services เช่น web server ก็อาจจะต้องให้เข้าถึงโดยใครก็ได้โดยอิสระ

- Private service อาจจะต้องมีข้อกำหนดในการเข้าถึง เช่น phpMyAdmin อาจจะเข้าถึงได้บาง IP address, บาง network, หรือบาง location เท่านั้น

 - Internal services ซึ่งอาจจะเข้าถึงได้เฉพาะภายใน server/VM ได้เท่านั้น เช่น ในกรณีที่ web application และ database อยู่ใน server เดียวกัน

- สำหรับ port ไหนที่ไม่ได้ใช้ก็ต้องปิดให้หมด

ดังนั้นการจำกัดการเข้าถึงให้มากที่สุดเท่าที่จะทำได้ ก็จะเป็นการลดความเสียงของ server ในการเจาะช่องโหว่และการโจมตีแบบต่างๆ

ตัวอย่างของ Firewall ที่สามารถนำมาใช้

- UFW หรือ Uncomplicated Firewall เป็น software ที่สามารถติดตั้งแล้วใช้งานได้ภายใน Linux server ได้

- Iptables ก็เป็น software ที่สามารถติดตั้ง และใช้งานกำหนด rules คล้าย Firewall ได้ ภายใจ Linux server ได้

- ถ้าสร้าง servers บน cloud แล้ว  ทาง cloud provider หลายๆเจ้า เช่น DigitalOcean ก็จะมี Firewall แบบ GUI ให้ใช้งานได้เลย   

* หลักการใช้ Firewall ที่สำคัญคือ เรากำหนด rule ให้ deny ทุกอย่างให้เป็น default แล้วค่อย allow บาง services, IPs, ports

มีการใช้ VPC Networks

ใน cloud จะมีเครื่องมือที่ชื่อว่า VPC หรือ Virtual Private Cloud  ซึ่งทำให้เราสามารถ "แยก" network ของ resources (VMs, databases) ต่างออกจากกันได้อย่างชัดเจน

ตัวอย่างเช่น  ถ้าเรามี account ของ DigitalOcean แล้วเรามี 2 applications หรือสองลูกค้า ที่ไม่เกียวข้องกันเลย   เราก็ควรที่จะให้แต่ละ application แต่ละลูกค้าอยู่คนละ VPC  

แต่ละ VPC ก็ควรที่จะ เข้า/ออก public internet ผ่าน Internet Gateway เพื่อให้เราสามารถควบคุมการเชื่อมต่อระหว่างภายนอก และภายใน VPC จาก Internet Gateway เพียงที่เดียว หรือบางกรณีอาจจะมีการใช้ VPN Gateway ซึ่งขึ้นอยู่กับความต้องการ

มีการตรวจสอบ services

การตรวจสอบหรือการ audit ว่า services ไหนที่กำลัง run อยู่ และต้องใช้ port ไหนเพื่อเข้าสู่ servers ถือเป็นอีกส่วนสำคัญในด้าน security เช่น

- Nginx อาจจะให้ใช้แค่ port 443  ส่วน port 80 จะต้องปิดไป

- บางที Sendmail อาจจะถูกติดตั้งไว้และใช้ port 25 ซึ่งถ้าเราไม่ใช้ service นี้ก็ควรที่จะต้องปิด Sendmail ไม่ให้ run และแน่นอนว่าต้องปิด port 25 ด้วย

การปิดการใช้งานสิ่งที่ไม่จำเป็นให้ได้มากที่สุด ก็จะเป็นการลด attack surface (ด้านช่องโหว่, การโจมตี) ต่อผู้ไม่ประสงค์ดี  การตรวจสอบ services

ตัวอย่างคำสั่งใน Linux เพื่อใช้ list ดูว่า มี TCP/UDP ports ไหนที่ถูกใช้อยู่บ้าง และกำลัง listen traffic เช่นคำสั่ง sudo ss -plunt

 

มีการ update

การทำให้ software ต่างๆใน servers เป็น version ที่ใหม่อยู่เสมอถือเป็นสิ่ง "จำเป็น"

software ต่างๆที่ใช้ version เก่า (ไม่ถูก update) ก็จะมีโอกาสที่จะถูกเจาะช่องโหว่ ถูกโจมตีได้ "มากกว่า" ตัว software ที่ถูก update ให้เป็น version ล่าสุด

ผู้ใช้อาจจะตั้งค่าให้มีการ update แบบอัตโนมัติ เช่น ใน Ubuntu ด้วยคำสั่ง

sudo apt install unattended-upgrades

จากตัวอย่างคำสั่งนี้ จะเป็นการ update เฉพาะ software ที่ถูกติดตั้งผ่านทาง package manager  ส่วน software อื่นๆก็ต้อง update ตามวิธีของเขา

ปิด Directory Indexes

เมื่อเรามี web application อยู่บน server แล้วถ้าเราเปิดการใช้งาน directory indexes ก็จะทำให้ directory/paths/folders บน server เข้าถึงได้  ถ้ามีการเก็บไฟล์ที่เป็นความลับต่างๆไว้ ก็อาจจะสามารถเข้าถึงได้จาก public internet

ซึ่งวิธีการปิด directory index ก็ต้องขึ้นอยู่กับ software ที่เราใช้ web server เช่น Nginx ก็จะปิดให้เป็นค่า default

มีการ back up อยู่เสมอ

ถึงแม้ว่าการ back up จะไม่ใช่เรื่องของ security โดยตรง แต่ก็เป็นเรื่องสำคัญที่ควรจะทำเมื่อ server จริงถูกเจาะหรือถูกโจมตีหรือการลบข้อมูลโดยไม่ได้ตั้งใจ

ตัวอย่างเช่น เมื่อ server เราถูกโจมตีโดย ransomware ถ้าเราไม่มีการ backup เกิดขึ้น แล้วถ้าเราต้องการได้ข้อมูลคืน อาจจะต้องจ่ายเงินไป แต่ถ้าเรามีการ backup ข้อมูลใน server อยู่เสมอ ก็เพียงแค่สร้าง server ใหม่บน cloud เพื่อใช้แทนตัวเดิม

ในกรณีของ ransomware   การ backup ตัว server อยู่เสมอ ก็สามารถช่วยในเรื่องการวิเคาะห์ด้าน cyber ได้ ว่ามีสาเหตุเกิดขึ้นได้อย่างไร

 

ใช้ VPNs and Private Networking

การใช้ VPN เป็นเหมือนการสร้างเส้นทางส่วนตัวเพื่อเชื่อมต่อกับ servers ที่อยู่บน cloud 

การใช้งาน VPN บน cloud อาจจะติดตั้ง software ใว้ใน server หรือใช้เครื่องด้าน VPN ที่ cloud provider เจ้านั้นๆเตรียมไว้ให้

 

ใช่ SSL/TLS

การใช้งาน SSL/TLS ก็เพื่อให้การรับส่งข้อมูลผ่าน network มีการเข้ารหัส เพราะถ้าไม่มีการเข้ารหัสก็อาจจะถูกดักอ่านข้อมูลระหว่างทาง หรือเรียกการโจมตีนี้ว่า man-in-the-middle

การ implement ให้ application สามารถใช้งาน SSL/TLS ได้ ก็จะมีหลายวิธี

- การซื้อจากผู้ให้บริการ เช่น GoDaddy, Verisign

- การใช้งานในรูปแบบ self signed certificate

ตรวจสอบไฟล์ configure และการใช้งาน IDS

การตรวจสอบไฟล์ configure ก็เป็นวิธีที่ทำให้มั่นใจได้ว่า servers ของเรายังอยู่ในสถานะปกติ เนื่องจากไม่มีการเปลี่ยนแปลงใดๆ

การใช้งาน IDS (Intrusion Detection Systems) ก็เป็นหนึ่งในเครื่องมือเพื่อช่วยในการ monitor ในเรื่องนี้ได้

 

จากที่ได้แนะนำนี้ในบทความนี้ก็จะเป็นแนวทางที่หยิบนำไปใช้ได้ ซึ่งอาจจะมีมากกว่าที่บทความนี้กล่าวถึงก็ได้  แต่ที่หัวใจที่สำคัญก็คือ การจัดการเรื่องความปลอดภัยต้องทำแต่แรกๆเพื่อให้ services หรือ applications ถูก run อยู่บน environment ที่ปลอดภัยโดย default

 

(อ้างอิงจาก : https://www.digitalocean.com/community/tutorials/recommended-security-measures-to-protect-your-servers)

CloudLinuxSecurity

Leave a comment

All comments are moderated before being published