เป็น common misconception (ความเข้าใจผิดทั่วไป) ที่ว่าไม่มีไวรัสบน Linux สิ่งจริงคือ: มีอยู่จริง แม้คุณอาจ check through program files หาไฟล์ติดไวรัสได้ อาจใช้เวลาเดือนๆ ก่อนที่คุณจะรู้ว่า Linux system ของคุณถูก compromise
Trust (ความไว้วางใจ) เป็นสิ่งบอบบาง และคุณไม่ควรมอบให้ง่ายๆ แค่เพราะสิ่งใดถูกให้บนอินเทอร์เน็ต ไม่ได้หมายความว่าคุณไว้วางใจได้ คุณต้องทำขั้นตอนบางอย่างเพื่อ safeguard (ปกป้อง) OS และตัวคุณเอง
Security risks ของความเฉลียวเลว ครอบคลุมจาก information theft และการติดไวรัส จนถึง unauthorized user access เข้าสู่ Linux machine ของคุณ ดังนั้น บทความนี้จึงรายการวิธีดาวน์โหลดซอฟต์แวร์บน Linux อย่างปลอดภัย
1. ตรวจสอบ Hash Value
Hash value (หรือ checksum) เป็น alphanumeric string ที่ผลิตขึ้นเมื่อข้อมูลบางอย่างถูกส่งผ่าน cryptographic function มันทำหน้าที่เป็น digital signature ของไฟล์
เพื่อให้แน่ใจว่าคุณไม่ได้ดาวน์โหลด corrupt file หลาย open-source sites มักให้ expected hash ที่คุณควรได้หลังดาวน์โหลดไฟล์เสร็จ มาใช้ตัวอย่าง
สมมติคุณดาวน์โหลด Tomcat 10 ซึ่งเป็น web server ยอดนิยม Hash value สำหรับ Tomcat version 10.0.6 คือ:
3d39b086b6fec86e354aa4837b1b55e6c16bfd5ec985a82a5dd71f928e3fab5370b2964a
5a1098cfe05ca63d031f198773b18b1f8c7c6cdee6c90aa0644fb2f2 *apache-tomcat-10.0.6.tar.gz
ส่วน *apache-tomcat-10.0.6.tar.gz แค่ชื่อไฟล์ ค่าจาก 3d39...2f2 เป็น hash value
เพื่อได้ค่านี้ คุณต้องไปที่ directory ที่ดาวน์โหลด archive file ไว้ และรันคำสั่ง:
sha512sum apache-tomcat-10.0.6.tar.gz
คุณควรได้ hash value ที่กล่าวมา หากได้ค่าต่างออกไป แสดงว่า download corrupt และคุณต้องลบทันที
ในตัวอย่างนี้ hashing function ที่ใช้คือ sha512 เพราะ Apache Tomcat foundation เลือกใช้ฟังก์ชันนี้เพื่อปกป้อง integrity ของ downloads
เว็บไซต์อื่นอาจใช้ hashing functions ต่างๆ เช่น sha256 และ sha384 ที่นิยม
หากเว็บไซต์ใช้ hashing functions อื่น ทั้งสิ่งที่ต้องทำคือแทนที่ชื่อคำสั่งด้วย hashing function
sha256sum filename-of-download
sha384sum filename-of-download
ยัง值得 noting (值得注意) ว่าไฟล์ที่ใช้เป็น TAR file (archive file) แต่ถ้าคุณดาวน์โหลด binary file แทน? ข่าวดีคือบน Linux คุณจะได้ hash result เดียวกันไม่ว่าจะเป็น file type อะไร
Default mode ของ hash functions บน Linux คือ text ดังนั้น เพื่อสลับเป็น binary mode ใช้ option -b ดังนี้:
sha256sum -b filename
2. ใช้ Safe Sites
การดาวน์โหลดจาก safe sites ลด risk ของ malware มาก กฎทั่วไปคือควรใช้ official download site ของซอฟต์แวร์ที่ต้องการเสมอ หากไม่หา official website เจอ ให้พิจารณา trusted site
Download sites เช่น FileHorse และ SourceForge เป็นตัวอย่าง trusted sites ที่คุณเยี่ยมชมได้ เว็บเหล่านี้มานานและสร้าง trust กับผู้ใช้
3. Compile Source Code เอง
หนึ่งในเหตุผลใหญ่ที่ open-source community มีอยู่คือ คุณไม่ต้องวาง trust ในบริษัทซอฟต์แวร์ใหญ่ๆ และหวังว่าพวกเขาไม่ทำอะไร unauthorized บน PC ของคุณ
เมื่อคุณดาวน์โหลด binary files คุณมอบอำนาจบางส่วนให้ผู้ที่ compile code แต่หากคุณเข้าถึง source code คุณสามารถยึดอำนาจกลับมาที่มือเอง
ด้วย open-source คุณ verify ได้ด้วยตนเองว่าซอฟต์แวร์ทำตามที่ author พูด ข้อเสียคือคุณต้องมี programming skills above-average และรู้จัก subject area ดี
คุณยังสามารถเป็น strategic และตรวจสอบแค่ key files ที่สนใจ
ตัวอย่าง สมมติคุณมี C source code cloned จาก GitHub repository ด้านล่างคือวิธี compile เอง
รันคำสั่งด้านล่างเพื่อติดตั้งแพ็กเกจ build-essential แพ็กเกจมี tools สำคัญที่จำเป็นขณะ build software บน Linux
sudo apt-get install build-essential
ตอนนี้ compile C code ด้วย gcc compiler
gcc program-name.c -o program-name
หลัง compile คุณรันโปรแกรมได้โดยพิมพ์:
./program-name
4. ใช้ Official Package Manager
วิธีง่ายที่สุดในการติดตั้ง อัปเดต และ uninstall software คือใช้ package manager มีหลายตัว เช่น pacman, dpkg, DNF และ APT Package managers ทำงานโดยตรงกับ official software repositories และ app stores
Package managers ทำ heavy lifting ให้คุณเยอะ จัดการ dependencies ที่ซอฟต์แวร์ต้องการ รับรอง integrity และ authenticity ของ download และจัดการ versioning
อีกจุดดีคือ distro ปกติ ship มาพร้อม package manager pre-installed เช่น Debian 10 มาพร้อม APT และ Arch-based systems มาพร้อม pacman
5. Personal Research (วิจัยด้วยตนเอง)
Software world เป็น ever-changing place และ keep up with security trends เป็น key aspect ในการปกป้องตัวเอง มี installation options หลายอย่างเลือกในสถานการณ์ต่างๆ เช่น ติดตั้ง software บน virtual machine หรือใช้ app containerization
App containerization เป็น trend ที่น่าตื่นเต้น เพราะมัน ensure ว่า apps รันเหมือนกันใน different execution environments
ความสามารถในการ isolate execution ของ software core และ dependencies จาก underlying infrastructure ให้ unprecedented security ตัวอย่าง คุณแค่ verify security ของ dependencies ครั้งเดียว แล้วคาดหวังให้ resonate ข้าม environments ต่างๆ
เป็น good practice ที่คุณควรดู software reviews และ follow discussions บน GitHub Software reviews ให้ภาพว่าควรคาดหวังอะไรหลังดาวน์โหลด unexpected behavior ที่ users สังเกต และ recommendations
GitHub discussions ยังทำให้คุณรู้ proactive measures ที่ควรทำหลัง/ระหว่างการติดตั้งซอฟต์แวร์ คุณยังได้ security considerations อื่นๆ ที่ไม่ได้อยู่ใน official documentation
คุณควรสังเกต forks ที่มี contributors มากบน GitHub อาจมี protocol changes และความไม่สามารถ keep abreast กับ updates จะ compromise ความปลอดภัยของคุณ
คำแนะนำและ Good Practice
เป็น good practice ที่ควร update system packages และ repository list ก่อนดาวน์โหลด major software ทุก package manager เช่น pacman ใน Arch Linux ให้คุณ option ติดตั้ง อัปเดต และลบ packages
หลังจาก ensure ว่า installed packages up to date แล้ว คุณจึงไปดาวน์โหลดซอฟต์แวร์ที่ต้องการ ได้เมื่อไหร่ก็ตาม หากคุณดาวน์โหลดแพ็กเกจผ่าน package manager ได้ ให้ทำเช่นนั้น นี่คือวิธีง่ายและปลอดภัยที่สุดในการติดตั้งและอัปเดตซอฟต์แวร์บน Linux