Linux Security Lab - การติดตั้งและพื้นฐานการคำสั่ง Linux
เรียนรู้การติดตั้ง Linux ด้วย VirtualBox โดยใช้ Ubuntu และเรียนรู้คำสั่ง Linux พื้นฐานผ่านการฝึกปฏิบัติจริง
1. บทนำ#
ยินดีต้อนรับสู่การเรียนรู้ การบริหารจัดการระบบและความปลอดภัยของ Linux!
1.1 Linux คืออะไร?#
Linux เป็น kernel ระบบปฏิบัติการแบบโอเพนซอร์สฟรีที่ขับเคลื่อน:
- ซุปเปอร์คอมพิวเตอร์ทั่วโลก 100%
- เซิร์ฟเวอร์ชั้นนำ 1 ล้านเครื่องของโลก 96.3%
- Android (ระบบปฏิบัติการมือถือที่ได้รับความนิยมมากที่สุดในโลก)
- โครงสร้างพื้นฐานคลาวด์ส่วนใหญ่ (AWS, Google Cloud, Azure)
Linux ถูกสร้างขึ้นบนแนวคิดของ Unix คือ เครื่องมือง่าย ๆ ที่ทำสิ่งหนึ่งได้ดี และทำงานร่วมกันผ่านคำสั่งแบบข้อความ
1.2 Linux Distributions (Distros)#
เนื่องจาก Linux เป็นเพียง kernel จึงถูกบรรจุร่วมกับซอฟต์แวร์ต่าง ๆ เป็นระบบปฏิบัติการที่สมบูรณ์เรียกว่า Distribution:
| Distribution | Use Case |
|---|---|
| Ubuntu | ผู้เริ่มต้น, เซิร์ฟเวอร์, เดสก์ท็อป |
| Debian | เซิร์ฟเวอร์เสถียร |
| Fedora | ฟีเจอร์ล้ำสมัย |
| Arch Linux | ผู้เชี่ยวชาญการปรับแต่ง |
| Kali Linux | การทดสอบความปลอดภัย |
1.3 ทำไมถึงเลือกใช้ Ubuntu#
สำหรับบทความนี้เลือกใช้ Ubuntu 24.04.4 LTS เพราะ:
- ✅ เป็นมิตรกับผู้เริ่มต้น — ติดตั้งและใช้งานง่าย
- ✅ การสนับสนุนระยะยาว — เวอร์ชัน LTS ได้รับการสนับสนุนนานกว่า 5 ปี
- ✅ เครื่องมือความปลอดภัย — เข้าถึงเครื่องมือทดสอบความปลอดภัยและตรวจสอบได้ง่าย
- ✅ ชุมชนขนาดใหญ่ — เอกสารและความช่วยเหลือมีอย่างกว้างขวาง
- ✅ มาตรฐานอุตสาหกรรม — ใช้อย่างแพร่หลายในคลาวด์และองค์กร
สิ่งที่จะได้เรียนรู้:
- การติดตั้งสภาพแวดล้อมห้องปฏิบัติการ Linux ที่ปลอดภัยและแยกออกจากกัน
- การใช้งาน command-line พื้นฐาน (ใช้ได้กับ Linux distribution ทั้งหมด)
- สิทธิ์ไฟล์และการจัดการผู้ใช้
- SSH สำหรับการเข้าถึงจากระยะไกล
- การจัดการ package (APT ซึ่งปรับใช้กับ package manager อื่น ๆ ได้)
หมายเหตุ: คำสั่ง Linux ที่เรียนรู้ในบทความนี้ใช้ได้กับ Linux distribution ทั้งหมด — Ubuntu, Debian, Kali, Fedora, Arch และอื่น ๆ
2. การติดตั้ง VirtualBox#
2.1 ดาวน์โหลด VirtualBox#
เข้าไปที่ https://www.virtualbox.org/wiki/Downloads ↗ แล้วดาวน์โหลด Platform Package สำหรับระบบปฏิบัติการของเครื่อง host:
- Windows: VirtualBox x.x.x Windows hosts
- macOS: VirtualBox x.x.x macOS hosts (Intel หรือ Apple Silicon)
2.2 การติดตั้ง#
- Windows: เรียกใช้โปรแกรมติดตั้งแล้วทำตามคำแนะนำ
- macOS: เปิดไฟล์ DMG แล้วลาก VirtualBox ไปที่ Applications
3. การตั้งค่าสภาพแวดล้อมห้องปฏิบัติการ#
3.1 ดาวน์โหลด 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 ปี จึงเหมาะสำหรับห้องปฏิบัติการความปลอดภัย
3.2 สร้างเครื่องเสมือน#
ขั้นตอนที่ 1: เริ่มต้น New VM Wizard
- เปิด VirtualBox
- คลิกปุ่ม New (ไอคอนดาวสีน้ำเงิน)
ขั้นตอนที่ 2: ชื่อและระบบปฏิบัติการ
กรอกข้อมูลต่อไปนี้:
| การตั้งค่า | ค่า |
|---|---|
| Name | Linux_Security_Lab |
| VM Folder | เลือกตำแหน่งที่ต้องการ (เช่น D:\6090059-dit301\ubuntu) |
| ISO Image | ubuntu-24.04.4-desktop-amd64.iso |
| Unattended Installation | ✓ เลือกช่องนี้ |

ขั้นตอนที่ 3: การตั้งค่า Unattended Installation
กำหนดค่าบัญชีผู้ใช้:
| การตั้งค่า | ค่า |
|---|---|
| Username | ชื่อผู้ใช้ที่ต้องการ (เช่น u6090059) |
| Password | เลือกรหัสผ่านที่ปลอดภัย |
| Hostname | u6090059 |

ขั้นตอนที่ 4: กำหนดทรัพยากรฮาร์ดแวร์
Base Memory (RAM):
- แนะนำ: 4096 MB (4 GB)
- คำเตือน: ควรอยู่ในโซนสีเขียว หากให้ VM มี RAM มากเกินไป คอมพิวเตอร์ host อาจค้าง
Number of CPUs:
- แนะนำ: 4 cores (หรือครึ่งหนึ่งของ CPU ที่มี)
Disk Size:
- ขั้นต่ำ: 25 GB
- Linux มีขนาดเล็ก แต่ต้องเผื่อพื้นที่สำหรับเครื่องมือความปลอดภัยและ logs

ขั้นตอนที่ 5: บันทึกและเริ่มต้น
- ตรวจสอบการตั้งค่า VM
- คลิก Finish เพื่อสร้าง VM
- คลิก ลูกศรสีเขียว หรือดับเบิลคลิกที่ VM เพื่อเปิดเครื่อง

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

เมื่อติดตั้ง Ubuntu เสร็จแล้ว ให้เปิด terminal โดยกด Ctrl + Alt + T หรือค้นหา “Terminal” ในเมนู Applications
Prompt: จะเห็นข้อความคล้ายกับ
u6090059@u6090059:~$
u6090059คือชื่อผู้ใช้u6090059คือ hostname~หมายถึงกำลังอยู่ใน home directory$หมายถึงเป็นผู้ใช้ทั่วไป
4.1 แบบฝึกหัดที่ 1: ตอนนี้อยู่ที่ไหน?#
คำสั่ง: pwd (Print Working Directory)
pwdbashผลลัพธ์ที่คาดหวัง:
/home/u6090059bashคำอธิบาย: แสดงตำแหน่งปัจจุบันในระบบไฟล์ ซึ่งขณะนี้อยู่ใน home directory
4.2 แบบฝึกหัดที่ 2: มีอะไรอยู่ที่นี่?#
คำสั่ง: ls (List)
lsbashผลลัพธ์ที่คาดหวัง (อาจแตกต่างกัน):
Desktop Documents Downloads Music Pictures Public Templates Videosbashคำอธิบาย: แสดงไฟล์และโฟลเดอร์ที่มองเห็นได้ใน directory ปัจจุบัน
ลองใช้รูปแบบอื่น:
ls -lbashผลลัพธ์ที่คาดหวัง:
total 32
drwxr-xr-x 2 u6090059 u6090059 4096 Apr 9 10:30 Desktop
drwxr-xr-x 2 u6090059 u6090059 4096 Apr 9 10:30 Documents
drwxr-xr-x 2 u6090059 u6090059 4096 Apr 9 10:30 Downloads
...bashคำอธิบาย: แฟล็ก -l แสดง:
d= directory- สิทธิ์ (
rwxr-xr-x) - เจ้าของและกลุ่ม
- ขนาด
- วันที่/เวลาที่แก้ไขล่าสุด
ls -abashผลลัพธ์ที่คาดหวัง:
. .. .bashrc .config .local .ssh Desktop Documents Downloadsbashคำอธิบาย: แฟล็ก -a แสดง hidden files (ไฟล์ที่ขึ้นต้นด้วย .)
4.3 แบบฝึกหัดที่ 3: การเคลื่อนที่ระหว่างไดเร็กทอรี#
คำสั่ง: cd (Change Directory)
cd Documents
pwdbashผลลัพธ์ที่คาดหวัง:
/home/u6090059/Documentsbashจากนั้นลอง:
cd ..
pwdbashผลลัพธ์ที่คาดหวัง:
/home/u6090059bashคำอธิบาย: .. หมายถึง parent directory (ขึ้นไปหนึ่งระดับ)
กลับสู่ home directory อย่างรวดเร็ว:
cd ~
pwdbashผลลัพธ์ที่คาดหวัง:
/home/u6090059bashคำอธิบาย: ~ เป็นทางลัดสำหรับ home directory
5. การจัดการไฟล์และไดเร็กทอรี#
5.1 แบบฝึกหัดที่ 4: การสร้างไดเร็กทอรี#
คำสั่ง: mkdir (Make Directory)
cd ~
mkdir security_lab
ls -lbashผลลัพธ์ที่คาดหวัง:
...
drwxr-xr-x 2 u6090059 u6090059 4096 Apr 9 14:30 security_lab
...bashสร้าง directory ซ้อนกันหลายชั้น:
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 toolsbashคำอธิบาย: แฟล็ก -p จะสร้าง directory แม่ให้อัตโนมัติตามที่จำเป็น
5.2 แบบฝึกหัดที่ 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.shbash5.3 แบบฝึกหัดที่ 6: การดูเนื้อหาไฟล์#
คำสั่ง: cat (Concatenate and display)
echo "This is my security lab notes" > notes.txt
cat notes.txtbashผลลัพธ์ที่คาดหวัง:
This is my security lab notesbashคำอธิบาย: เครื่องหมาย > ใช้ redirect output ไปยังไฟล์
ลองใช้คำสั่งอื่น:
echo "Line 1" >> notes.txt
echo "Line 2" >> notes.txt
cat notes.txtbashผลลัพธ์ที่คาดหวัง:
This is my security lab notes
Line 1
Line 2bashคำอธิบาย: เครื่องหมาย >> จะ append เข้าไปในไฟล์แทนที่จะเขียนทับ
5.4 แบบฝึกหัดที่ 7: การใช้ตัวแก้ไขข้อความ Nano#
Nano เป็นตัวแก้ไขข้อความที่เป็นมิตรกับผู้เริ่มต้น ทำงานโดยตรงใน terminal ต่างจากตัวแก้ไขแบบกราฟิก โดย nano ทำงานทั้งหมดด้วย keyboard shortcut และมีอยู่บนระบบ Linux เกือบทั้งหมด
ทำไมต้องเรียน nano?
- ✅ มีให้ใช้งานบน Linux distribution ทั้งหมดโดยค่าเริ่มต้น
- ✅ ง่ายและใช้งานได้จริง ไม่มี mode เหมือน vim
- ✅ เหมาะสำหรับแก้ไข config file และสคริปต์
- ✅ ทำงานผ่าน SSH ได้
การเปิด Nano
สร้างหรือเปิดไฟล์:
nano practice.txtbashผลลัพธ์ที่คาดหวัง: หน้าต่างใหม่ปรากฏขึ้นพร้อมอินเทอร์เฟซของ nano
ทำความเข้าใจอินเทอร์เฟซของ Nano
GNU nano 7.2 practice.txt
[ New File ]
^G Help ^O Write Out ^W Where Is ^K Cut ^T Execute
^X Exit ^R Read File ^\ Replace ^U Paste ^J Justifybashแถบด้านบน แสดง:
- เวอร์ชัน nano
- ชื่อไฟล์ที่กำลังแก้ไข
แถบด้านล่าง แสดง keyboard shortcut:
^หมายถึงปุ่มCtrl^GหมายถึงCtrl + G(Get Help)^OหมายถึงCtrl + O(Write Out/Save)
คำสั่ง Nano ที่ใช้บ่อย
| ทางลัด | การกระทำ | คำอธิบาย |
|---|---|---|
^X | Exit | ปิด nano (แจ้งให้บันทึกหากมีการเปลี่ยนแปลง) |
^O | Write Out | บันทึกไฟล์ |
^G | Get Help | แสดงหน้าจอช่วยเหลือ |
^W | Where Is | ค้นหาข้อความ |
^K | Cut Text | ตัดบรรทัดปัจจุบัน |
^U | UnCut Text | วาง (uncut) ที่ตำแหน่งเคอร์เซอร์ |
^C | Cur Pos | แสดงตำแหน่งเคอร์เซอร์ |
^Y | Prev Page | เลื่อนขึ้น |
^V | Next Page | เลื่อนลง |
แบบฝึกหัดปฏิบัติ
ขั้นตอนที่ 1: สร้างและแก้ไขไฟล์
nano security_lab/todo.txtbashขั้นตอนที่ 2: พิมพ์เนื้อหา
พิมพ์ข้อความต่อไปนี้:
Learn SSH commands
Practice file permissions
Set up firewall rulesbashขั้นตอนที่ 3: บันทึกไฟล์
กด Ctrl + O (Write Out) จะเห็น:
File Name to Write: todo.txtbashกด Enter เพื่อยืนยัน
ขั้นตอนที่ 4: ออกจาก nano
กด Ctrl + X
ขั้นตอนที่ 5: ตรวจสอบไฟล์
cat security_lab/todo.txtbashผลลัพธ์ที่คาดหวัง:
Learn SSH commands
Practice file permissions
Set up firewall rulesbashการแก้ไขไฟล์ที่มีอยู่
เปิดไฟล์ที่สร้างไว้ก่อนหน้านี้:
nano security_lab/todo.txtbashนำทางและแก้ไข:
- ใช้ ปุ่มลูกศร เพื่อเลื่อนไปมา
- พิมพ์เพื่อเพิ่มข้อความ
- ใช้
Backspaceเพื่อลบอักขระ - ใช้
Ctrl + Kเพื่อตัดทั้งบรรทัด - ใช้
Ctrl + Uเพื่อวางบรรทัด
เพิ่มงานใหม่ที่ด้านล่าง:
Master the nano editorbashบันทึกและออก: กด Ctrl + O จากนั้น Ctrl + X
การค้นหาใน Nano
เปิดไฟล์แล้วค้นหา:
nano security_lab/todo.txtbashกด Ctrl + W (Where Is) พิมพ์ SSH แล้วกด Enter nano จะกระโดดไปยังตำแหน่งแรกที่พบคำว่า “SSH”
ค้นหาตำแหน่งถัดไป: กด Ctrl + W อีกครั้ง จากนั้นกด Enter
เคล็ดลับ
- จำไว้เสมอ:
Ctrl + Xเพื่อออก,Ctrl + Oเพื่อบันทึก - แสดงหมายเลขบรรทัด: เปิดด้วย
nano -l filenameเพื่อเปิดใช้งานหมายเลขบรรทัด - ไม่ต้องกังวล: หากมีอะไรผิดพลาด nano จะแจ้งเตือนก่อนทิ้งการเปลี่ยนแปลง
- ขอความช่วยเหลือได้ตลอดเวลา: กด
Ctrl + Gใน nano เพื่อดูเอกสารฉบับเต็ม
5.5 แบบฝึกหัดที่ 8: การคัดลอกและย้าย#
คัดลอกไฟล์:
cp notes.txt notes_backup.txt
ls -lbashย้าย (เปลี่ยนชื่อ) ไฟล์:
mv notes_backup.txt old_notes.txt
ls -lbash5.6 แบบฝึกหัดที่ 9: การลบไฟล์#
คำเตือน: ไฟล์ที่ลบแล้วไม่สามารถกู้คืนได้โดยง่าย!
ลบไฟล์เดียว:
touch test_file.txt
rm test_file.txt
ls test_file.txtbashผลลัพธ์ที่คาดหวัง:
ls: cannot access 'test_file.txt': No such file or directorybashลบไดเร็กทอรีพร้อมเนื้อหาทั้งหมด:
mkdir temp_folder
touch temp_folder/file1.txt
rm -r temp_folderbashคำอธิบาย: แฟล็ก -r หมายถึง recursive (ลบทุกอย่างที่อยู่ภายใน)
6. สิทธิ์และ Sudo#
6.1 ทำความเข้าใจผู้ใช้#
ลำดับชั้นผู้ใช้ของ Linux:
| ประเภทผู้ใช้ | UID | ความสามารถ |
|---|---|---|
| Root | 0 | ควบคุมระบบได้อย่างสมบูรณ์ |
| ผู้ใช้ระบบ | 1–999 | เรียกใช้บริการ (เช่น www-data, sshd) |
| ผู้ใช้ทั่วไป | 1000+ | สิทธิ์จำกัด (บัญชีผู้ใช้ทั่วไป) |
ตรวจสอบผู้ใช้ปัจจุบัน:
whoami
idbashผลลัพธ์ที่คาดหวัง:
u6090059
uid=1000(u6090059) gid=1000(u6090059) groups=1000(u6090059),27(sudo)bash6.2 แบบฝึกหัดที่ 10: การใช้ Sudo#
คำสั่ง: sudo (SuperUser DO)
ลองใช้คำสั่งที่ต้องการสิทธิ์ root:
cat /etc/shadowbashผลลัพธ์ที่คาดหวัง:
cat: /etc/shadow: Permission deniedbashจากนั้นใช้ sudo:
sudo cat /etc/shadowbashผลลัพธ์ที่คาดหวัง:
[sudo] password for u6090059:
root:$6$hash...:18989:0:99999:7:::
daemon:*:18989:0:99999:7:::
...bashคำอธิบาย:
- ระบบจะขอรหัสผ่าน (ของผู้ใช้เอง ไม่ใช่รหัสผ่าน root)
- รหัสผ่านจะไม่ปรากฏขณะพิมพ์ (เป็นฟีเจอร์ด้านความปลอดภัย)
- Linux จะจำการอนุญาตไว้เป็นเวลาสองสามนาที
6.3 ทำความเข้าใจ Prompt#
| Prompt | ความหมาย | ระดับอันตราย |
|---|---|---|
$ | ผู้ใช้ทั่วไป | ปลอดภัย |
# | ผู้ใช้ Root | ⚠️ ระวัง! |
สลับไปเป็น root (ไม่แนะนำสำหรับผู้เริ่มต้น):
sudo -i
whoami
exitbashผลลัพธ์ที่คาดหวัง:
root
# (สังเกต prompt เปลี่ยนเป็น #)bashคำอธิบาย: คำสั่ง exit จะพากลับสู่ผู้ใช้ทั่วไป
7. การจัดการแพ็กเกจด้วย APT#
APT (Advanced Package Tool) เป็นตัวจัดการแพ็กเกจของ Ubuntu เปรียบเสมือน “App Store” สำหรับบรรทัดคำสั่ง
7.1 แบบฝึกหัดที่ 11: อัปเดตรายการแพ็กเกจ#
คำสั่ง: sudo apt update
sudo apt updatebashผลลัพธ์ที่คาดหวัง:
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... Donebashคำอธิบาย: ดาวน์โหลดข้อมูลแพ็กเกจล่าสุดจากที่เก็บของ Ubuntu ยังไม่ได้ติดตั้งอะไร เพียงอัปเดต “แคตตาล็อก” เท่านั้น
7.2 แบบฝึกหัดที่ 12: อัปเกรดระบบ#
คำสั่ง: sudo apt upgrade
sudo apt upgradebashผลลัพธ์ที่คาดหวัง:
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] ybashคำอธิบาย: ติดตั้งการอัปเดตที่มีให้สำหรับแพ็กเกจที่ติดตั้งไว้แล้ว
7.3 แบบฝึกหัดที่ 13: ติดตั้งแพ็กเกจ#
คำสั่ง: sudo apt install [package-name]
sudo apt install treebashผลลัพธ์ที่คาดหวัง:
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
tree
...
Do you want to continue? [Y/n] ybashทดสอบคำสั่งใหม่:
cd ~
tree -L 1 security_labbashผลลัพธ์ที่คาดหวัง:
security_lab/
├── logs
├── notes.txt
├── old_notes.txt
├── scripts
└── toolsbash7.4 แบบฝึกหัดที่ 14: ถอนการติดตั้งแพ็กเกจ#
คำสั่ง: sudo apt remove [package-name]
sudo apt remove treebashถอนการติดตั้งพร้อมไฟล์ config:
sudo apt purge treebashลบ dependency ที่ไม่ได้ใช้แล้ว:
sudo apt autoremovebash8. การติดตั้งและกำหนดค่า SSH#
SSH (Secure Shell) ช่วยให้ควบคุม Ubuntu VM จากระยะไกลผ่านเครื่อง host ได้
8.1 SSH คืออะไร?#
| Feature | Telnet (Old) | SSH (Modern) |
|---|---|---|
| Encryption | ❌ No (plaintext) | ✅ Yes |
| Password Protection | ❌ Visible | ✅ Hidden |
| Port | 23 | 22 |
รูปแบบ Client-Server:
- SSH Server: ทำงานบนเครื่องที่ต้องการควบคุม (Ubuntu VM)
- SSH Client: ทำงานบนเครื่องที่ใช้งานอยู่ (Windows/Mac host)
8.2 แบบฝึกหัดที่ 15: ติดตั้ง SSH Server#
Ubuntu Desktop ไม่ได้รวม SSH server ไว้โดยค่าเริ่มต้น จึงต้องติดตั้งเพิ่ม:
sudo apt update
sudo apt install openssh-serverbashผลลัพธ์ที่คาดหวัง:
The following NEW packages will be installed:
openssh-server
...
Do you want to continue? [Y/n] ybash8.3 แบบฝึกหัดที่ 16: ตรวจสอบ SSH Service#
ตรวจสอบว่า SSH กำลังทำงานอยู่หรือไม่:
sudo service ssh statusbashผลลัพธ์ที่คาดหวัง (SSH ยังไม่ทำงาน):
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/usr/lib/systemd/system/ssh.service; disabled; preset: disabled)
Active: inactive (dead)bashสิ่งสำคัญที่ต้องสังเกต:
Active: inactive (dead)— SSH ไม่ได้ทำงานdisabled— SSH ไม่ได้ตั้งค่าให้เริ่มต้นเมื่อบูต
เริ่ม SSH service:
sudo service ssh startbashตรวจสอบว่า SSH ทำงานแล้ว:
sudo service ssh statusbashผลลัพธ์ที่คาดหวัง (SSH กำลังทำงาน):
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/usr/lib/systemd/system/ssh.service; disabled; preset: disabled)
Active: active (running) since Wed 2026-04-09 15:00:00 UTC; 5s agobashตั้งค่าให้ SSH เริ่มต้นอัตโนมัติทุกครั้งที่บูต:
sudo systemctl enable sshbashคำอธิบาย: service ssh start จะรัน SSH จนกว่าจะรีบูตครั้งถัดไปเท่านั้น ส่วน systemctl enable ssh ทำให้ SSH เริ่มต้นเมื่อบูต จึงไม่เจอ “Connection refused” หลังรีสตาร์ท VM
8.4 แบบฝึกหัดที่ 17: กำหนดค่า Firewall#
Firewall ของ Ubuntu (ufw) ปิดอยู่โดยค่าเริ่มต้น
ตรวจสอบสถานะ firewall:
sudo ufw statusbashผลลัพธ์ที่คาดหวัง:
Status: inactivebashขั้นตอน A: อนุญาต SSH
sudo ufw allow sshbashผลลัพธ์ที่คาดหวัง:
Rules updated
Rules updated (v6)bashขั้นตอน B: เปิดใช้งาน Firewall
sudo ufw enablebashผลลัพธ์ที่คาดหวัง:
Firewall is active and enabled at system startupbashขั้นตอน C: ตรวจสอบการกำหนดค่า
sudo ufw status verbosebashผลลัพธ์ที่คาดหวัง:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)bashคำอธิบาย: พอร์ต 22 (SSH) ได้รับอนุญาตให้ผ่าน firewall แล้ว
9. เครือข่าย — การตั้งค่า Port Forwarding#
9.1 Port Forwarding ทำงานอย่างไร#
NAT + Port Forwarding ของ VirtualBox ช่วยให้เชื่อมต่อจากเครื่อง host ไปยัง VM โดยการ forward พอร์ตบน host ไปยังพอร์ต SSH ของ VM
Host (Windows/macOS) VirtualBox NAT VM (Ubuntu)
localhost:2222 ───────────────────────► port 22 (SSH)bashทำไมต้องใช้วิธีนี้?
- ✅ ใช้ได้กับเครือข่ายทุกแบบ (WiFi, Ethernet, ออฟไลน์)
- ✅ ไม่ต้องกำหนดค่าเครือข่ายเพิ่ม
- ✅ เป็นวิธีเชื่อมต่อที่เชื่อถือได้มากที่สุด
- ✅ เป็นค่าเริ่มต้นของ VirtualBox (NAT ถูกกำหนดค่าไว้ให้แล้ว)
9.2 แบบฝึกหัดที่ 18: กำหนดค่า Port Forwarding#
ขั้นตอนที่ 1: ปิด VM
sudo poweroffbashขั้นตอนที่ 2: เปิด Network Settings ของ VirtualBox
- ใน VirtualBox เลือก VM Linux_Security_Lab
- คลิก Settings → Network
- ตรวจสอบให้แน่ใจว่า Adapter 1 ถูกเปิดใช้งาน และ Attached to: ถูกตั้งค่าเป็น NAT
ขั้นตอนที่ 3: เพิ่ม Port Forwarding Rule
- คลิกปุ่ม Port Forwarding
- คลิกไอคอน + (เครื่องหมายบวกสีเขียว) เพื่อเพิ่มกฎใหม่
กำหนดค่ากฎ:
| Setting | Value |
|---|---|
| Name | SSH |
| Protocol | TCP |
| Host IP | (ปล่อยว่างไว้) |
| Host Port | 2222 |
| Guest IP | (ปล่อยว่างไว้) |
| Guest Port | 22 |

ขั้นตอนที่ 4: บันทึกและเริ่ม VM
- คลิก OK เพื่อปิดหน้าต่าง Port Forwarding
- คลิก OK เพื่อปิดหน้าต่าง Settings
- คลิก ลูกศรสีเขียว เพื่อเริ่ม VM
9.3 ทำความเข้าใจพอร์ต#
| Component | Port | Description |
|---|---|---|
| Host Port | 2222 | พอร์ตบนคอมพิวเตอร์ที่ใช้เชื่อมต่อ |
| Guest Port | 22 | พอร์ต SSH ภายใน Ubuntu VM |
| Protocol | TCP | SSH ใช้ TCP protocol |
ทำไมต้องพอร์ต 2222?
พอร์ต 22 อาจถูกใช้โดยบริการอื่นบน host การใช้ 2222 จึงช่วยหลีกเลี่ยงการชนกัน สามารถใช้พอร์ตใดก็ได้ตั้งแต่ 1024–65535
10. การเชื่อมต่อจากเครื่อง Host#
10.1 แบบฝึกหัดที่ 19: SSH จาก Windows#
เปิด Command Prompt หรือ PowerShell บน Windows:
ssh -p 2222 u6090059@localhostcmdแทนที่ 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 จากเครื่อง host ที่เป็น Windows ได้แล้ว
10.2 แบบฝึกหัดที่ 20: SSH จาก macOS#
เปิด Terminal บน macOS:
ssh -p 2222 u6090059@localhostbashทำตามขั้นตอนเดียวกับ Windows (ยอมรับ fingerprint แล้วใส่รหัสผ่าน)
10.3 แบบฝึกหัดที่ 21: ออกจาก SSH Session#
พิมพ์ exit หรือกด Ctrl + D
u6090059@u6090059:~$ exit
logout
Connection to localhost closed.bash11. Quick Reference Card#
11.1 Navigation#
| Command | Description |
|---|---|
pwd | Print working directory (ตอนนี้อยู่ที่ไหน?) |
ls | List files and folders |
ls -l | List with details |
ls -a | List including hidden files |
cd [dir] | Change to directory |
cd .. | Go up one level |
cd ~ | Go to home directory |
11.2 การจัดการไฟล์#
| Command | Description |
|---|---|
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 |
11.3 สิทธิ์และ Sudo#
| Command | Description |
|---|---|
sudo [cmd] | Execute as root |
sudo -i | Switch to root shell |
whoami | Show current user |
id | Show user ID and groups |
chmod [perms] [file] | Change permissions |
chown [user] [file] | Change owner |
11.4 การจัดการแพ็กเกจ#
| Command | Description |
|---|---|
sudo apt update | Update package lists |
sudo apt upgrade | Upgrade installed packages |
sudo apt install [pkg] | Install package |
sudo apt remove [pkg] | Remove package |
sudo apt purge [pkg] | Remove + config files |
sudo apt autoremove | Remove unused packages |
11.5 SSH และเครือข่าย#
| Command | Description |
|---|---|
ip a | Show IP addresses |
ifconfig | Show network config (classic) |
ssh -p 2222 [user]@localhost | Connect to VM via Port Forwarding |
exit | Exit SSH session |
sudo ufw allow ssh | Allow SSH in firewall |
sudo ufw enable | Enable firewall |
sudo ufw status | Check firewall status |
11.6 VirtualBox Port Forwarding#
| Setting | Value |
|---|---|
| Name | SSH |
| Protocol | TCP |
| Host Port | 2222 |
| Guest Port | 22 |
| Host IP | (ปล่อยว่างไว้) |
| Guest IP | (ปล่อยว่างไว้) |
12. ขั้นตอนถัดไป#
ขอแสดงความยินดี! เมื่อทำบทความติดตั้ง Linux Security Lab จบแล้ว จะได้:
- ✅ Virtual machine Linux ที่ใช้งานได้ (Ubuntu)
- ✅ ทักษะ command-line พื้นฐาน (ใช้ได้กับ Linux distribution ทั้งหมด)
- ✅ ความเข้าใจเรื่องสิทธิ์และ sudo
- ✅ การเข้าถึง SSH จากเครื่อง host
- ✅ การจัดการแพ็กเกจด้วย APT
12.1 เส้นทางการเรียนรู้ที่แนะนำ#
- เรียน Vim — ตัวแก้ไขข้อความอีกตัวที่จะเจอบนเซิร์ฟเวอร์ทุกเครื่อง
- Bash Scripting — ทำงานอัตโนมัติด้วยสคริปต์
- Process Management —
ps,top,kill - Log Management — ไดเร็กทอรี
/var/log/ - Security Tools —
nmap,wireshark,metasploit
12.2 คำสั่งฝึกหัด#
ลองแบบฝึกหัดเหล่านี้เพื่อทบทวนความเข้าใจ:
# 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 -hbash12.3 แหล่งข้อมูลเพิ่มเติม#
- Ubuntu Documentation ↗
- Linux Journey ↗ — บทเรียน Linux แบบโต้ตอบ
- SSH Manual ↗ — พิมพ์
man sshใน terminal - Command Line Magic ↗