Back

Linux Security Lab - การติดตั้งและพื้นฐานการคำสั่ง LinuxBlur image

1. บทนำ#

ยินดีต้อนรับสู่การเดินทางสู่ การบริหารจัดการระบบและความปลอดภัยของ Linux!

Linux คืออะไร?#

Linux เป็น kernel ระบบปฏิบัติการแบบโอเพนซอร์สฟรีที่ขับเคลื่อน:

  • ซุปเปอร์คอมพิวเตอร์ทั่วโลก 100%
  • เซิร์ฟเวอร์ที่แข็งแกร่งที่สุด 1 ล้านเครื่องของโลก 96.3%
  • Android (ระบบปฏิบัติการมือถือที่ได้รับความนิยมมากที่สุดในโลก)
  • โครงสร้างพื้นฐานคลาวด์ส่วนใหญ่ (AWS, Google Cloud, Azure)

Linux ถูกสร้างขึ้นบน Unix philosophy: เครื่องมือง่ายๆ ที่ทำสิ่งหนึ่งได้ดี ทำงานร่วมกันผ่านคำสั่งแบบข้อความ

Linux Distributions (Distros)#

เนื่องจาก Linux เป็นเพียง kernel จึงถูกบรรจุร่วมกับซอฟต์แวร์ต่างๆ เป็นระบบปฏิบัติการที่สมบูรณ์เรียกว่า Distributions:

DistributionUse Case
Ubuntuผู้เริ่มต้น, เซิร์ฟเวอร์, เดสก์ท็อป
Debianเซิร์ฟเวอร์เสถียร
Fedoraฟีเจอร์ล้ำสมัย
Arch Linuxผู้เชี่ยวชาญการปรับแต่ง
Kali Linuxการทดสอบความปลอดภัย

ทำไมถึงเลือกใช้ Ubuntu#

สำหรับบทความนี้เลือกใช้ Ubuntu 24.04.4 LTS เพราะ:

  • เป็นมิตรกับผู้เริ่มต้น - ติดตั้งและใช้งานง่าย
  • การสนับสนุนระยะยาว - เวอร์ชัน LTS ได้รับการสนับสนุนนานกว่า 5 ปี
  • เครื่องมือความปลอดภัย - เข้าถึงเครื่องมือทดสอบความปลอดภัยและตรวจสอบได้ง่าย
  • ชุมชนขนาดใหญ่ - เอกสารและความช่วยเหลือมีอย่างกว้างขวาง
  • มาตรฐานอุตสาหกรรม - ใช้อย่างแพร่หลายในคลาวด์และองค์กร

สิ่งที่จะได้เรียนรู้:

  • การติดตั้งสภาพแวดล้อมห้องปฏิบัติการ Linux ที่ปลอดภัยและแยกออกจากกัน
  • การดำเนินการ command-line พื้นฐาน (ใช้ได้กับ Linux distributions ทั้งหมด)
  • สิทธิ์ไฟล์และการจัดการผู้ใช้
  • SSH สำหรับการเข้าถึงจากระยะไกล
  • การจัดการ package (APT - ปรับใช้กับ package managers อื่นๆ ได้)

หมายเหตุ: คำสั่ง Linux ที่เรียนรู้ในบทแนะนำนี้ใช้ได้กับ Linux distributions ทั้งหมด - Ubuntu, Debian, Kali, Fedora, Arch และอื่นๆ!


2. การติดตั้ง VirtualBox#

ดาวน์โหลด VirtualBox#

เยี่ยมชม https://www.virtualbox.org/wiki/Downloads และดาวน์โหลด “Platform Package” สำหรับระบบปฏิบัติการโฮสต์:

  • Windows: VirtualBox x.x.x Windows hosts
  • macOS: VirtualBox x.x.x macOS hosts (Intel หรือ Apple Silicon)

การติดตั้ง#

  • Windows: เรียกใช้โปรแกรมติดตั้งและทำตามคำแนะนำ
  • macOS: เปิดไฟล์ DMG แล้วลาก VirtualBox ไปที่ Applications

3. การตั้งค่าสภาพแวดล้อมห้องปฏิบัติการ#

ดาวน์โหลด Ubuntu 24.04.4 LTS#

เลือกแหล่งข้อมูลหนึ่งจากต่อไปนี้:

Ubuntu อย่างเป็นทางการ: https://releases.ubuntu.com/24.04.4/ubuntu-24.04.4-desktop-amd64.iso

Google Drive Mirror: https://drive.google.com/drive/folders/1pINC05tup1lBqLuzIuzJ7hVSHyPi-G_O?usp=sharing

หมายเหตุ: เวอร์ชัน LTS (Long Term Support) ได้รับการสนับสนุนนานกว่า 5 ปี ทำให้เหมาะสำหรับห้องปฏิบัติการความปลอดภัย

สร้างเครื่องเสมือน#

ขั้นตอนที่ 1: เริ่มต้น New VM Wizard#

  1. เปิด VirtualBox
  2. คลิกปุ่ม New (ไอคอนดาวสีน้ำเงิน)

ขั้นตอนที่ 2: ชื่อและระบบปฏิบัติการ#

กรอกข้อมูลต่อไปนี้:

การตั้งค่าค่า
NameLinux_Security_Lab
VM Folderเลือกตำแหน่งที่ต้องการ (เช่น D:\6090059-dit301\ubuntu)
ISO Imageubuntu-24.04.4-desktop-amd64.iso
Unattended Installation✓ เลือกช่องนี้

VM Name and OS Settings

ขั้นตอนที่ 3: การตั้งค่า Unattended Installation#

กำหนดค่าบัญชีผู้ใช้:

การตั้งค่าค่า
Usernameชื่อผู้ใช้ที่ต้องการ (เช่น u6090059)
Passwordเลือกรหัสผ่านที่ปลอดภัย
Hostnameu6090059

Unattended Installation

ขั้นตอนที่ 4: กำหนดทรัพยากรฮาร์ดแวร์#

Base Memory (RAM):

  • แนะนำ: 4096 MB (4 GB)
  • คำเตือน: อยู่ในโซนสีเขียว! หากให้ VM มี RAM มากเกินไป คอมพิวเตอร์โฮสต์อาจค้าง

Number of CPUs:

  • แนะนำ: 4 cores (หรือครึ่งหนึ่งของ CPU ที่มี)

Disk Size:

  • ขั้นต่ำ: 25 GB
  • Linux มีขนาดเล็ก แต่ต้องการพื้นที่เพิ่มเติมสำหรับเครื่องมือความปลอดภัยและ logs

Hardware Settings

ขั้นตอนที่ 5: บันทึกและเริ่มต้น#

  1. ตรวจสอบการตั้งค่า VM
  2. คลิก Finish เพื่อสร้าง VM
  3. คลิก ลูกศรสีเขียว หรือดับเบิลคลิกที่ VM เพื่อเปิดเครื่อง

Ubuntu

การติดตั้ง Ubuntu#

  1. การเลือกภาษา: เลือกภาษาและคลิก “Install Ubuntu”
  2. ประเภทการติดตั้ง: เลือก “Erase disk and install Ubuntu”
  3. ตำแหน่ง: ตรวจจับตำแหน่งหรือพิมพ์ด้วยตนเอง
  4. บัญชีผู้ใช้: การตั้งค่า unattended installation จะถูกนำไปใช้
  5. ความคืบหน้าการติดตั้ง: รอให้การติดตั้งเสร็จสมบูรณ์
  6. รีสตาร์ท: คลิก “Restart Now” เมื่อได้รับแจ้ง

4. การนำทาง 101 - คำสั่งแรก#

Terminal

เมื่อติดตั้ง Ubuntu เสร็จแล้ว ให้เปิดเทอร์มินัลโดยกด Ctrl + Alt + T หรือค้นหา “Terminal” ในเมนู Applications

Prompt: ควรเห็นสิ่งที่คล้ายกับ u6090059@u6090059:~$

  • u6090059 คือชื่อผู้ใช้
  • u6090059 คือ hostname
  • ~ หมายถึงอยู่ใน home directory
  • $ หมายถึงเป็นผู้ใช้ทั่วไป

แบบฝึกหัดที่ 1: ฉันอยู่ที่ไหน?#

คำสั่ง: pwd (Print Working Directory)

pwd
bash

ผลลัพธ์ที่คาดหวัง:

/home/u6090059
bash

คำอธิบาย: นี่แสดงตำแหน่งปัจจุบันในระบบไฟล์ อยู่ใน home directory


แบบฝึกหัดที่ 2: มีอะไรอยู่ที่นี่?#

คำสั่ง: ls (List)

ls
bash

ผลลัพธ์ที่คาดหวัง (อาจแตกต่างกัน):

Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
bash

คำอธิบาย: นี่แสดงไฟล์และโฟลเดอร์ที่มองเห็นได้ในไดเร็กทอรีปัจจุบัน

ลองใช้รูปแบบอื่น:

ls -l
bash

ผลลัพธ์ที่คาดหวัง:

total 32
drwxr-xr-x 2 u6090059 u6090059 4096 Jan 15 10:30 Desktop
drwxr-xr-x 2 u6090059 u6090059 4096 Jan 15 10:30 Documents
drwxr-xr-x 2 u6090059 u6090059 4096 Jan 15 10:30 Downloads
...
bash

คำอธิบาย: แฟล็ก -l แสดง:

  • d = directory
  • สิทธิ์ (rwxr-xr-x)
  • เจ้าของและกลุ่ม
  • ขนาด
  • วันที่/เวลาที่แก้ไขล่าสุด
ls -a
bash

ผลลัพธ์ที่คาดหวัง:

.  ..  .bashrc  .config  .local  .ssh  Desktop  Documents  Downloads
bash

คำอธิบาย: แฟล็ก -a แสดง hidden files (ขึ้นต้นด้วย .)


แบบฝึกหัดที่ 3: การเคลื่อนที่#

คำสั่ง: cd (Change Directory)

cd Documents
pwd
bash

ผลลัพธ์ที่คาดหวัง:

/home/u6090059/Documents
bash

ตอนนี้ลอง:

cd ..
pwd
bash

ผลลัพธ์ที่คาดหวัง:

/home/u6090059
bash

คำอธิบาย: .. หมายถึง “parent directory” (ขึ้นไปหนึ่งระดับ)

กลับบ้านอย่างรวดเร็ว:

cd ~
pwd
bash

ผลลัพธ์ที่คาดหวัง:

/home/u6090059
bash

คำอธิบาย: ~ เป็นทางลัดสำหรับ home directory


5. การดำเนินการไฟล์และไดเร็กทอรี#

แบบฝึกหัดที่ 4: การสร้างไดเร็กทอรี#

คำสั่ง: mkdir (Make Directory)

cd ~
mkdir security_lab
ls -l
bash

ผลลัพธ์ที่คาดหวัง:

...
drwxr-xr-x 2 u6090059 u6090059 4096 Apr 9 14:30 security_lab
...
bash

สร้าง nested directories:

mkdir -p security_lab/tools security_lab/logs security_lab/scripts
ls -l security_lab/
bash

ผลลัพธ์ที่คาดหวัง:

total 12
drwxr-xr-x 2 u6090059 u6090059 4096 Apr 9 14:31 logs
drwxr-xr-x 2 u6090059 u6090059 4096 Apr 9 14:31 scripts
drwxr-xr-x 2 u6090059 u6090059 4096 Apr 9 14:31 tools
bash

คำอธิบาย: แฟล็ก -p สร้าง parent directories ตามที่จำเป็น


แบบฝึกหัดที่ 5: การสร้างไฟล์#

คำสั่ง: touch (สร้างไฟล์ว่างหรืออัปเดต timestamp)

cd security_lab
touch notes.txt
touch tools/scanner.sh
ls -l
ls -l tools/
bash

ผลลัพธ์ที่คาดหวัง:

-rw-r--r-- 1 u6090059 u6090059 0 Apr 9 14:32 notes.txt

tools/:
total 0
-rw-r--r-- 1 u6090059 u6090059 0 Apr 9 14:32 scanner.sh
bash

แบบฝึกหัดที่ 6: การดูเนื้อหาไฟล์#

คำสั่ง: cat (Concatenate and display)

echo "This is my security lab notes" > notes.txt
cat notes.txt
bash

ผลลัพธ์ที่คาดหวัง:

This is my security lab notes
bash

คำอธิบาย: > redirect output ไปยังไฟล์

ลองใช้คำสั่งดูอื่น:

echo "Line 1" >> notes.txt
echo "Line 2" >> notes.txt
cat notes.txt
bash

ผลลัพธ์ที่คาดหวัง:

This is my security lab notes
Line 1
Line 2
bash

คำอธิบาย: >> append เข้าไปในไฟล์แทนที่จะเขียนทับ


แบบฝึกหัดที่ 7: การใช้ตัวแก้ไขข้อความ Nano#

Nano เป็น text editor ที่เป็นมิตรกับผู้เริ่มต้นซึ่งทำงานโดยตรงในเทอร์มินัล ต่างจาก graphical editors, nano ทำงานทั้งหมดด้วย keyboard shortcuts และมีอยู่บนระบบ Linux เกือบทั้งหมด

ทำไมต้องเรียน nano?

  • ✅ มีให้ใช้งานบน Linux distributions ทั้งหมดโดยค่าเริ่มต้น
  • ✅ ง่ายและใช้งานได้จริง - ไม่มี modes เหมือน vim
  • ✅ เหมาะสำหรับแก้ไข config files และสคริปต์
  • ✅ ทำงานผ่าน SSH connection

การเปิด Nano#

สร้างหรือเปิดไฟล์:

nano practice.txt
bash

ผลลัพธ์ที่คาดหวัง: หน้าต่างใหม่ปรากฏขึ้นพร้อมอินเทอร์เฟซของ nano


การทำความเข้าใจอินเทอร์เฟซของ Nano#

GNU nano 7.2                             practice.txt

                                          ^
                                          |

Read [line 1/47] (100%)                   [ All ]

^G Get Help  ^O Write Out  ^R Read File ^Y Prev Page ^K Cut Text  ^C Cur Pos
^X Exit      ^J Justify  ^W Where Is  ^V Next Page ^U UnCut Tex^T To Spell
bash

แถบด้านบน แสดง:

  • เวอร์ชัน nano
  • ชื่อไฟล์ที่กำลังแก้ไข

แถบด้านล่าง แสดงทางลัดแป้นพิมพ์:

  • ^ หมายถึงปุ่ม Ctrl
  • ^G หมายถึง Ctrl + G (Get Help)
  • ^O หมายถึง Ctrl + O (Write Out/Save)

คำสั่ง Nano ทั่วไป#

ทางลัดการกระทำคำอธิบาย
^XExitปิด nano (แจ้งให้บันทึกหากมีการเปลี่ยนแปลง)
^OWrite Outบันทึกไฟล์
^GGet Helpแสดงหน้าจอช่วยเหลือ
^WWhere Isค้นหาข้อความ
^KCut Textตัดบรรทัดปัจจุบัน
^UUnCut Textวาง (uncut) ที่ตำแหน่งเคอร์เซอร์
^CCur Posแสดงตำแหน่งเคอร์เซอร์
^YPrev Pageเลื่อนขึ้น
^VNext Pageเลื่อนลง

แบบฝึกหัดปฏิบัติ#

ขั้นตอนที่ 1: สร้างและแก้ไขไฟล์

nano security_lab/todo.txt
bash

ขั้นตอนที่ 2: พิมพ์เนื้อหาบางส่วน

กดปุ่มเหล่านี้เพื่อพิมพ์:

Learn SSH commands
Practice file permissions
Set up firewall rules
bash

ขั้นตอนที่ 3: บันทึกไฟล์

กด Ctrl + O (Write Out)

จะเห็น:

File Name to Write: todo.txt
bash

กด Enter เพื่อยืนยัน

ขั้นตอนที่ 4: ออกจาก nano

กด Ctrl + X

ขั้นตอนที่ 5: ตรวจสอบไฟล์

cat security_lab/todo.txt
bash

ผลลัพธ์ที่คาดหวัง:

Learn SSH commands
Practice file permissions
Set up firewall rules
bash

การแก้ไขไฟล์ที่มีอยู่#

เปิดไฟล์ที่สร้างไว้ก่อนหน้านี้:

nano security_lab/todo.txt
bash

นำทางและแก้ไข:

  • ใช้ ปุ่มลูกศร เพื่อเคลื่อนที่ไปรอบๆ
  • พิมพ์เพื่อเพิ่มข้อความ
  • ใช้ Backspace เพื่อลบอักขระ
  • ใช้ Ctrl + K เพื่อตัดทั้งบรรทัด
  • ใช้ Ctrl + U เพื่อวางบรรทัด

เพิ่มงานใหม่ที่ด้านล่าง:

Master the nano editor
bash

บันทึกและออก: Ctrl + O จากนั้น Ctrl + X


การค้นหาใน Nano#

เปิดไฟล์และค้นหา:

nano security_lab/todo.txt
bash

กด Ctrl + W (Where Is)

พิมพ์: SSH และกด Enter

Nano จะกระโดดไปยังตำแหน่งแรกที่พบ “SSH”

ค้นหาตำแหน่งถัดไป: กด Ctrl + W อีกครั้ง จากนั้นกด Enter


เคล็ดลับ Pro#

  1. จำไว้เสมอ: Ctrl + X เพื่อออก, Ctrl + O เพื่อบันทึก
  2. แสดงหมายเลขบรรทัด: เริ่มต้นด้วย nano -l filename เพื่อเปิดใช้งานหมายเลขบรรทัด
  3. อย่าตื่นตระหนก: หากมีอะไรผิดพลาด nano จะแจ้งก่อนทิ้งการเปลี่ยนแปลง
  4. ขอความช่วยเหลือได้ตลอดเวลา: กด Ctrl + G ใน nano สำหรับเอกสารฉบับสมบูรณ์

แบบฝึกหัดที่ 8: การคัดลอกและย้าย#

คัดลอกไฟล์:

cp notes.txt notes_backup.txt
ls -l
bash

ย้าย (เปลี่ยนชื่อ) ไฟล์:

mv notes_backup.txt old_notes.txt
ls -l
bash

แบบฝึกหัดที่ 9: การลบไฟล์#

คำเตือน: ไฟล์ที่ลบแล้วไม่สามารถกู้คืนได้อย่างง่ายดาย!

ลบไฟล์เดียว:

touch test_file.txt
rm test_file.txt
ls -l test_file.txt
bash

ผลลัพธ์ที่คาดหวัง:

ls: cannot access 'test_file.txt': No such file or directory
bash

ลบไดเร็กทอรีและเนื้อหา:

mkdir temp_folder
touch temp_folder/file1.txt
rm -r temp_folder
bash

คำอธิบาย: แฟล็ก -r หมายถึง “recursive” (ลบทุกอย่างภายใน)


6. สิทธิ์และ Sudo#

การทำความเข้าใจผู้ใช้#

ลำดับชั้นผู้ใช้ Linux:

ประเภทผู้ใช้UIDความสามารถ
Root0ควบคุมระบบได้อย่างสมบูรณ์
ผู้ใช้ระบบ1-999เรียกใช้บริการ (เช่น www-data, sshd)
ผู้ใช้ทั่วไป1000+สิทธิ์จำกัด (บัญชีผู้ใช้)

ตรวจสอบผู้ใช้:

whoami
id
bash

ผลลัพธ์ที่คาดหวัง:

u6090059
uid=1000(u6090059) gid=1000(u6090059) groups=1000(u6090059),27(sudo)
bash

แบบฝึกหัดที่ 10: การใช้ Sudo#

คำสั่ง: sudo (SuperUser DO)

ลองใช้คำสั่งที่ต้องการ root:

cat /etc/shadow
bash

ผลลัพธ์ที่คาดหวัง:

cat: /etc/shadow: Permission denied
bash

ตอนนี้ใช้ sudo:

sudo cat /etc/shadow
bash

ผลลัพธ์ที่คาดหวัง:

[sudo] password for u6090059: 
root:$6$hash...:18989:0:99999:7:::
daemon:*:18989:0:99999:7:::
...
bash

คำอธิบาย:

  • จะถูกขอรหัสผ่าน (ไม่ใช่รหัสผ่าน root)
  • รหัสผ่านจะไม่ปรากฏขณะพิมพ์ (ฟีเจอร์ความปลอดภัย)
  • Linux จำการอนุญาตไว้เป็นเวลาสองสามนาที

การทำความเข้าใจ Prompts#

Promptความหมายระดับอันตราย
$ผู้ใช้ทั่วไปปลอดภัย
#ผู้ใช้ Root⚠️ ระวัง!

สลับไปเป็น root (ไม่แนะนำสำหรับผู้เริ่มต้น):

sudo -i
whoami
exit
bash

ผลลัพธ์ที่คาดหวัง:

root
# (สังเกต prompt #)
bash

คำอธิบาย: exit จะพากลับสู่ผู้ใช้ทั่วไป


7. การจัดการแพ็กเกจด้วย APT#

APT (Advanced Package Tool) เป็นตัวจัดการแพ็กเกจของ Ubuntu - เหมือน “App Store” สำหรับบรรทัดคำสั่ง

แบบฝึกหัดที่ 11: อัปเดตรายการแพ็กเกจ#

คำสั่ง: sudo apt update

sudo apt update
bash

ผลลัพธ์ที่คาดหวัง:

Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://archive.ubuntu.com/ubuntu noble-security InRelease
...
Reading package lists... Done
Building dependency tree... Done
bash

คำอธิบาย: นี่ดาวน์โหลดข้อมูลแพ็กเกจล่าสุดจากที่เก็บของ Ubuntu ยังไม่ได้ติดตั้งอะไร - เพียงอัปเดต “แคตตาล็อก”


แบบฝึกหัดที่ 12: อัปเกรดระบบ#

คำสั่ง: sudo apt upgrade

sudo apt upgrade
bash

ผลลัพธ์ที่คาดหวัง:

Reading package lists... Done
Building dependency tree... Done
Calculating upgrade... Done
The following packages will be upgraded:
  curl git wget...
Do you want to continue? [Y/n] y
bash

คำอธิบาย: นี่ติดตั้งการอัปเดตที่มีสำหรับแพ็กเกจที่ติดตั้งแล้ว


แบบฝึกหัดที่ 13: ติดตั้งแพ็กเกจ#

คำสั่ง: sudo apt install [package-name]

sudo apt install tree
bash

ผลลัพธ์ที่คาดหวัง:

Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
  tree
...
Do you want to continue? [Y/n] y
bash

ทดสอบคำสั่งใหม่:

cd ~
tree -L 1 security_lab
bash

ผลลัพธ์ที่คาดหวัง:

security_lab/
├── logs
├── notes.txt
├── old_notes.txt
├── scripts
└── tools
bash

แบบฝึกหัดที่ 14: ถอนการติดตั้งแพ็กเกจ#

คำสั่ง: sudo apt remove [package-name]

sudo apt remove tree
bash

ถอนการติดตั้งไฟล์ config ด้วย:

sudo apt purge tree
bash

ลบการพึ่งพาที่ไม่ได้ใช้:

sudo apt autoremove
bash

8. การติดตั้งและกำหนดค่า SSH#

SSH (Secure Shell) ช่วยให้ควบคุม Ubuntu VM จากระยะไกลจากเครื่อง host

SSH คืออะไร?#

FeatureTelnet (Old)SSH (Modern)
Encryption❌ No (plaintext)✅ Yes
Password Protection❌ Visible✅ Hidden
Port2322

Client-Server Model:

  • SSH Server: ทำงานบนเครื่องที่ต้องการควบคุม (Ubuntu VM)
  • SSH Client: ทำงานบนเครื่องที่นั่งอยู่ (Windows/Mac Host)

แบบฝึกหัดที่ 15: ติดตั้ง SSH Server#

Ubuntu Desktop ไม่ได้รวม SSH server ไว้โดยค่าเริ่มต้น

sudo apt update
sudo apt install openssh-server
bash

ผลลัพธ์ที่คาดหวัง:

The following NEW packages will be installed:
  openssh-server
...
Do you want to continue? [Y/n] y
bash

แบบฝึกหัดที่ 16: ตรวจสอบ SSH Service#

ตรวจสอบว่า SSH กำลังทำงานอยู่หรือไม่:

sudo service ssh status
bash

ผลลัพธ์ที่คาดหวัง (SSH ไม่ทำงาน):

 ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/usr/systemd/system/ssh.service; disabled; preset: disabled)
     Active: inactive (dead)
bash

สิ่งสำคัญที่ต้องดู:

  • Active: inactive (dead) - SSH ไม่ได้ทำงาน
  • disabled - SSH ไม่ได้ตั้งค่าให้เริ่มต้นเมื่อบูต

เริ่ม SSH service:

sudo service ssh start
bash

ตรวจสอบว่า SSH กำลังทำงานอยู่:

sudo service ssh status
bash

ผลลัพธ์ที่คาดหวัง (SSH กำลังทำงาน):

 ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/usr/systemd/system/ssh.service; disabled; preset: disabled)
     Active: active (running) since Wed 2025-04-09 15:00:00 UTC; 5s ago
bash

แบบฝึกหัดที่ 17: กำหนดค่า Firewall#

Firewall ของ Ubuntu (ufw) ปิดอยู่โดยค่าเริ่มต้น

ตรวจสอบสถานะ firewall:

sudo ufw status
bash

ผลลัพธ์ที่คาดหวัง:

Status: inactive
bash

ขั้นตอน A: อนุญาต SSH:

sudo ufw allow ssh
bash

ผลลัพธ์ที่คาดหวัง:

Rules updated
Rules updated (v6)
bash

ขั้นตอน B: เปิดใช้งาน Firewall:

sudo ufw enable
bash

ผลลัพธ์ที่คาดหวัง:

Firewall is active and enabled at system startup
bash

ขั้นตอน C: ตรวจสอบการกำหนดค่า:

sudo ufw status verbose
bash

ผลลัพธ์ที่คาดหวัง:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
bash

คำอธิบาย: พอร์ต 22 (SSH) ได้รับอนุญาตผ่าน firewall แล้ว


9. เครือข่าย - การตั้งค่า Port Forwarding#

วิธีการทำงานของ Port Forwarding#

NAT + Port Forwarding ของ VirtualBox ช่วยให้เชื่อมต่อจาก host ไปยัง VM โดย forwarding พอร์ตบน host ไปยังพอร์ต SSH ของ VM

Host (Windows/macOS)    VirtualBox NAT          VM (Ubuntu)
localhost:2222  ───────────────────────►  port 22 (SSH)
bash

ทำไมต้องใช้วิธีนี้?

  • ✅ ใช้ได้กับ networks ทั้งหมด (WiFi, Ethernet, ออฟไลน์)
  • ✅ ไม่ต้องกำหนดค่าเครือข่าย
  • ✅ วิธีการเชื่อมต่อที่เชื่อถือได้มากที่สุด
  • ✅ การตั้งค่า VirtualBox เริ่มต้น (NAT ได้รับการกำหนดค่าแล้ว)

แบบฝึกหัดที่ 18: กำหนดค่า Port Forwarding#

ขั้นตอนที่ 1: ปิด VM

sudo poweroff
bash

ขั้นตอนที่ 2: เปิด Network Settings ของ VirtualBox

  1. ใน VirtualBox เลือก VM Linux_Security_Lab
  2. คลิก SettingsNetwork
  3. ตรวจสอบให้แน่ใจว่า Adapter 1 ถูกเปิดใช้งานและ Attached to: ถูกตั้งค่าเป็น “NAT”

**ขั้นตอนที่ 3: เพิ่ม Port Forwarding Rule:

  1. คลิกปุ่ม Port Forwarding
  2. คลิกไอคอน + (เครื่องหมายบวกสีเขียว) เพื่อเพิ่มกฎใหม่

กำหนดค่ากฎ:

SettingValue
NameSSH
ProtocolTCP
Host IP(ปล่อยว่างไว้)
Host Port2222
Guest IP(ปล่อยว่างไว้)
Guest Port22

Port Forwarding

ขั้นตอนที่ 4: บันทึกและเริ่ม VM

  1. คลิก OK เพื่อปิดหน้าต่าง Port Forwarding
  2. คลิก OK เพื่อปิดหน้าต่าง Settings
  3. คลิก ลูกศรสีเขียว เพื่อเริ่ม VM

การทำความเข้าใจพอร์ต#

ComponentPortDescription
Host Port2222พอร์ตบนคอมพิวเตอร์ที่เชื่อมต่อ
Guest Port22พอร์ต SSH ภายใน Ubuntu VM
ProtocolTCPSSH ใช้ TCP protocol

ทำไมต้องพอร์ต 2222? พอร์ต 22 อาจถูกใช้โดย services อื่นบนโฮสต์ การใช้ 2222 หลีกเลี่ยง conflicts สามารถใช้พอร์ตใดก็ได้ตั้งแต่ 1024-65535


10. การเชื่อมต่อจากเครื่อง Host#

แบบฝึกหัดที่ 19: SSH จาก Windows#

เปิด Command Prompt หรือ PowerShell บน Windows:

ssh -p 2222 u6090059@localhost
cmd

แทนที่: u6090059 ด้วย username Ubuntu ของผู้ใช้

การเชื่อมต่อครั้งแรก - คำเตือน Fingerprint:

The authenticity of host '[localhost]:2222 ([127.0.0.1]:2222)' can't be established.
ED25519 key fingerprint is SHA256:abc123...
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
cmd

พิมพ์: yes แล้วกด Enter

ใส่รหัสผ่าน Ubuntu (จะไม่แสดงขณะพิมพ์):

u6090059@localhost's password:
cmd

ผลลัพธ์ที่คาดหวัง:

Welcome to Ubuntu 24.04.4 LTS...
u6090059@u6090059:~$
cmd

สำเร็จ! ตอนนี้ควบคุม VM จาก Windows host ได้แล้ว


แบบฝึกหัดที่ 20: SSH จาก macOS#

เปิด Terminal บน macOS:

ssh -p 2222 u6090059@localhost
bash

ทำตามขั้นตอนเดียวกับ Windows (ยอมรับ fingerprint, ใส่รหัสผ่าน)


แบบฝึกหัดที่ 21: ออกจาก SSH Session#

พิมพ์: exit หรือกด Ctrl + D

u6090059@u6090059:~$ exit
logout
Connection to localhost closed.
bash

11. Quick Reference Card#

CommandDescription
pwdPrint working directory (ฉันอยู่ที่ไหน?)
lsList files and folders
ls -lList with details
ls -aList including hidden files
cd [dir]Change to directory
cd ..Go up one level
cd ~Go to home directory

การดำเนินการไฟล์#

CommandDescription
mkdir [name]Create directory
touch [file]Create empty file
cp [src] [dest]Copy file/directory
mv [src] [dest]Move/rename file/directory
rm [file]Delete file
rm -r [dir]Delete directory
cat [file]Display file contents

สิทธิ์และ Sudo#

CommandDescription
sudo [cmd]Execute as root
sudo -iSwitch to root shell
whoamiShow current user
idShow user ID and groups
chmod [perms] [file]Change permissions
chown [user] [file]Change owner

การจัดการแพ็กเกจ#

CommandDescription
sudo apt updateUpdate package lists
sudo apt upgradeUpgrade installed packages
sudo apt install [pkg]Install package
sudo apt remove [pkg]Remove package
sudo apt purge [pkg]Remove + config files
sudo apt autoremoveRemove unused packages

SSH และเครือข่าย#

CommandDescription
ip aShow IP addresses
ifconfigShow network config (classic)
ssh -p 2222 [user]@localhostConnect to VM via Port Forwarding
exitExit SSH session
sudo ufw allow sshAllow SSH in firewall
sudo ufw enableEnable firewall
sudo ufw statusCheck firewall status

VirtualBox Port Forwarding#

SettingValue
NameSSH
ProtocolTCP
Host Port2222
Guest Port22
Host IP(ปล่อยว่างไว้)
Guest IP(ปล่อยว่างไว้)

12. ขั้นตอนถัดไป#

ยินดีด้วย! ได้เสร็จสิ้นบทแนะนำการติดตั้ง Linux Security Lab แล้ว มี:

  • Virtual machine Linux ที่ใช้งานได้ (Ubuntu)
  • ✅ ทักษะ command-line พื้นฐาน (ใช้ได้กับ Linux distributions ทั้งหมด)
  • ✅ ความเข้าใจเรื่องสิทธิ์และ sudo
  • ✅ การเข้าถึง SSH จากเครื่อง host
  • ✅ การจัดการ packages ด้วย APT

เส้นทางการเรียนรู้ที่แนะนำ#

  1. เรียน Vim หรือ Nano - Text editors สำหรับเทอร์มินัล
  2. Bash Scripting - ทำงานอัตโนมัติด้วยสคริปต์
  3. Process Management - ps, top, kill
  4. Log Management - ไดเร็กทอรี /var/log/
  5. Security Tools - nmap, wireshark, metasploit

คำสั่งฝึกหัด#

ลองแบบฝึกหัดเหล่านี้เพื่อเสริมสร้างการเรียนรู้:

# Create a project structure
mkdir -p ~/projects/my_app/{src,docs,tests}

# Create a script
cat > ~/projects/my_app/run.sh << 'EOF'
#!/bin/bash
echo "Running my application"
EOF

# Make it executable
chmod +x ~/projects/my_app/run.sh

# Run it
~/projects/my_app/run.sh

# Check system info
uname -a
df -h
free -h
bash

ทรัพยากร#


Linux Security Lab - การติดตั้งและพื้นฐานการคำสั่ง Linux
ผู้เขียน กานต์ ยงศิริวิทย์ / Karn Yongsiriwit
เผยแพร่เมื่อ April 9, 2026
ลิขสิทธิ์ CC BY-NC-SA 4.0

กำลังโหลดความคิดเห็น...

ความคิดเห็น 0