Linux Security Lab - การติดตั้งและพื้นฐานการคำสั่ง Linux
เรียนรู้การติดตั้ง Linux ด้วย VirtualBox โดยใช้ Ubuntu และเรียนรู้คำสั่ง Linux พื้นฐานผ่านการฝึกปฏิบัติจริง
1. บทนำ#
ยินดีต้อนรับสู่การเดินทางสู่ การบริหารจัดการระบบและความปลอดภัยของ Linux!
Linux คืออะไร?#
Linux เป็น kernel ระบบปฏิบัติการแบบโอเพนซอร์สฟรีที่ขับเคลื่อน:
- ซุปเปอร์คอมพิวเตอร์ทั่วโลก 100%
- เซิร์ฟเวอร์ที่แข็งแกร่งที่สุด 1 ล้านเครื่องของโลก 96.3%
- Android (ระบบปฏิบัติการมือถือที่ได้รับความนิยมมากที่สุดในโลก)
- โครงสร้างพื้นฐานคลาวด์ส่วนใหญ่ (AWS, Google Cloud, Azure)
Linux ถูกสร้างขึ้นบน Unix philosophy: เครื่องมือง่ายๆ ที่ทำสิ่งหนึ่งได้ดี ทำงานร่วมกันผ่านคำสั่งแบบข้อความ
Linux Distributions (Distros)#
เนื่องจาก Linux เป็นเพียง kernel จึงถูกบรรจุร่วมกับซอฟต์แวร์ต่างๆ เป็นระบบปฏิบัติการที่สมบูรณ์เรียกว่า Distributions:
| Distribution | Use 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#
- เปิด 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 มากเกินไป คอมพิวเตอร์โฮสต์อาจค้าง
Number of CPUs:
- แนะนำ: 4 cores (หรือครึ่งหนึ่งของ CPU ที่มี)
Disk Size:
- ขั้นต่ำ: 25 GB
- Linux มีขนาดเล็ก แต่ต้องการพื้นที่เพิ่มเติมสำหรับเครื่องมือความปลอดภัยและ logs

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

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

เมื่อติดตั้ง Ubuntu เสร็จแล้ว ให้เปิดเทอร์มินัลโดยกด Ctrl + Alt + T หรือค้นหา “Terminal” ในเมนู Applications
Prompt: ควรเห็นสิ่งที่คล้ายกับ
u6090059@u6090059:~$
u6090059คือชื่อผู้ใช้u6090059คือ hostname~หมายถึงอยู่ใน home directory$หมายถึงเป็นผู้ใช้ทั่วไป
แบบฝึกหัดที่ 1: ฉันอยู่ที่ไหน?#
คำสั่ง: pwd (Print Working Directory)
pwdbashผลลัพธ์ที่คาดหวัง:
/home/u6090059bashคำอธิบาย: นี่แสดงตำแหน่งปัจจุบันในระบบไฟล์ อยู่ใน home directory
แบบฝึกหัดที่ 2: มีอะไรอยู่ที่นี่?#
คำสั่ง: ls (List)
lsbashผลลัพธ์ที่คาดหวัง (อาจแตกต่างกัน):
Desktop Documents Downloads Music Pictures Public Templates Videosbashคำอธิบาย: นี่แสดงไฟล์และโฟลเดอร์ที่มองเห็นได้ในไดเร็กทอรีปัจจุบัน
ลองใช้รูปแบบอื่น:
ls -lbashผลลัพธ์ที่คาดหวัง:
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 -abashผลลัพธ์ที่คาดหวัง:
. .. .bashrc .config .local .ssh Desktop Documents Downloadsbashคำอธิบาย: แฟล็ก -a แสดง hidden files (ขึ้นต้นด้วย .)
แบบฝึกหัดที่ 3: การเคลื่อนที่#
คำสั่ง: cd (Change Directory)
cd Documents
pwdbashผลลัพธ์ที่คาดหวัง:
/home/u6090059/Documentsbashตอนนี้ลอง:
cd ..
pwdbashผลลัพธ์ที่คาดหวัง:
/home/u6090059bashคำอธิบาย: .. หมายถึง “parent directory” (ขึ้นไปหนึ่งระดับ)
กลับบ้านอย่างรวดเร็ว:
cd ~
pwdbashผลลัพธ์ที่คาดหวัง:
/home/u6090059bashคำอธิบาย: ~ เป็นทางลัดสำหรับ home directory
5. การดำเนินการไฟล์และไดเร็กทอรี#
แบบฝึกหัดที่ 4: การสร้างไดเร็กทอรี#
คำสั่ง: mkdir (Make Directory)
cd ~
mkdir security_lab
ls -lbashผลลัพธ์ที่คาดหวัง:
...
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 toolsbashคำอธิบาย: แฟล็ก -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.shbashแบบฝึกหัดที่ 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 เข้าไปในไฟล์แทนที่จะเขียนทับ
แบบฝึกหัดที่ 7: การใช้ตัวแก้ไขข้อความ Nano#
Nano เป็น text editor ที่เป็นมิตรกับผู้เริ่มต้นซึ่งทำงานโดยตรงในเทอร์มินัล ต่างจาก graphical editors, nano ทำงานทั้งหมดด้วย keyboard shortcuts และมีอยู่บนระบบ Linux เกือบทั้งหมด
ทำไมต้องเรียน nano?
- ✅ มีให้ใช้งานบน Linux distributions ทั้งหมดโดยค่าเริ่มต้น
- ✅ ง่ายและใช้งานได้จริง - ไม่มี modes เหมือน vim
- ✅ เหมาะสำหรับแก้ไข config files และสคริปต์
- ✅ ทำงานผ่าน SSH connection
การเปิด Nano#
สร้างหรือเปิดไฟล์:
nano practice.txtbashผลลัพธ์ที่คาดหวัง: หน้าต่างใหม่ปรากฏขึ้นพร้อมอินเทอร์เฟซของ 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 Spellbashแถบด้านบน แสดง:
- เวอร์ชัน nano
- ชื่อไฟล์ที่กำลังแก้ไข
แถบด้านล่าง แสดงทางลัดแป้นพิมพ์:
^หมายถึงปุ่ม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
เคล็ดลับ Pro#
- จำไว้เสมอ:
Ctrl + Xเพื่อออก,Ctrl + Oเพื่อบันทึก - แสดงหมายเลขบรรทัด: เริ่มต้นด้วย
nano -l filenameเพื่อเปิดใช้งานหมายเลขบรรทัด - อย่าตื่นตระหนก: หากมีอะไรผิดพลาด nano จะแจ้งก่อนทิ้งการเปลี่ยนแปลง
- ขอความช่วยเหลือได้ตลอดเวลา: กด
Ctrl + Gใน nano สำหรับเอกสารฉบับสมบูรณ์
แบบฝึกหัดที่ 8: การคัดลอกและย้าย#
คัดลอกไฟล์:
cp notes.txt notes_backup.txt
ls -lbashย้าย (เปลี่ยนชื่อ) ไฟล์:
mv notes_backup.txt old_notes.txt
ls -lbashแบบฝึกหัดที่ 9: การลบไฟล์#
คำเตือน: ไฟล์ที่ลบแล้วไม่สามารถกู้คืนได้อย่างง่ายดาย!
ลบไฟล์เดียว:
touch test_file.txt
rm test_file.txt
ls -l 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#
การทำความเข้าใจผู้ใช้#
ลำดับชั้นผู้ใช้ Linux:
| ประเภทผู้ใช้ | UID | ความสามารถ |
|---|---|---|
| Root | 0 | ควบคุมระบบได้อย่างสมบูรณ์ |
| ผู้ใช้ระบบ | 1-999 | เรียกใช้บริการ (เช่น www-data, sshd) |
| ผู้ใช้ทั่วไป | 1000+ | สิทธิ์จำกัด (บัญชีผู้ใช้) |
ตรวจสอบผู้ใช้:
whoami
idbashผลลัพธ์ที่คาดหวัง:
u6090059
uid=1000(u6090059) gid=1000(u6090059) groups=1000(u6090059),27(sudo)bashแบบฝึกหัดที่ 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 จำการอนุญาตไว้เป็นเวลาสองสามนาที
การทำความเข้าใจ Prompts#
| Prompt | ความหมาย | ระดับอันตราย |
|---|---|---|
$ | ผู้ใช้ทั่วไป | ปลอดภัย |
# | ผู้ใช้ Root | ⚠️ ระวัง! |
สลับไปเป็น root (ไม่แนะนำสำหรับผู้เริ่มต้น):
sudo -i
whoami
exitbashผลลัพธ์ที่คาดหวัง:
root
# (สังเกต prompt #)bashคำอธิบาย: exit จะพากลับสู่ผู้ใช้ทั่วไป
7. การจัดการแพ็กเกจด้วย APT#
APT (Advanced Package Tool) เป็นตัวจัดการแพ็กเกจของ Ubuntu - เหมือน “App Store” สำหรับบรรทัดคำสั่ง
แบบฝึกหัดที่ 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 ยังไม่ได้ติดตั้งอะไร - เพียงอัปเดต “แคตตาล็อก”
แบบฝึกหัดที่ 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คำอธิบาย: นี่ติดตั้งการอัปเดตที่มีสำหรับแพ็กเกจที่ติดตั้งแล้ว
แบบฝึกหัดที่ 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
└── toolsbashแบบฝึกหัดที่ 14: ถอนการติดตั้งแพ็กเกจ#
คำสั่ง: sudo apt remove [package-name]
sudo apt remove treebashถอนการติดตั้งไฟล์ config ด้วย:
sudo apt purge treebashลบการพึ่งพาที่ไม่ได้ใช้:
sudo apt autoremovebash8. การติดตั้งและกำหนดค่า SSH#
SSH (Secure Shell) ช่วยให้ควบคุม Ubuntu VM จากระยะไกลจากเครื่อง host
SSH คืออะไร?#
| Feature | Telnet (Old) | SSH (Modern) |
|---|---|---|
| Encryption | ❌ No (plaintext) | ✅ Yes |
| Password Protection | ❌ Visible | ✅ Hidden |
| Port | 23 | 22 |
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-serverbashผลลัพธ์ที่คาดหวัง:
The following NEW packages will be installed:
openssh-server
...
Do you want to continue? [Y/n] ybashแบบฝึกหัดที่ 16: ตรวจสอบ SSH Service#
ตรวจสอบว่า SSH กำลังทำงานอยู่หรือไม่:
sudo service ssh statusbashผลลัพธ์ที่คาดหวัง (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 startbashตรวจสอบว่า SSH กำลังทำงานอยู่:
sudo service ssh statusbashผลลัพธ์ที่คาดหวัง (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 agobashแบบฝึกหัดที่ 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#
วิธีการทำงานของ 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 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
การทำความเข้าใจพอร์ต#
| Component | Port | Description |
|---|---|---|
| Host Port | 2222 | พอร์ตบนคอมพิวเตอร์ที่เชื่อมต่อ |
| Guest Port | 22 | พอร์ต SSH ภายใน Ubuntu VM |
| Protocol | TCP | SSH ใช้ TCP protocol |
ทำไมต้องพอร์ต 2222? พอร์ต 22 อาจถูกใช้โดย services อื่นบนโฮสต์ การใช้ 2222 หลีกเลี่ยง conflicts สามารถใช้พอร์ตใดก็ได้ตั้งแต่ 1024-65535
10. การเชื่อมต่อจากเครื่อง Host#
แบบฝึกหัดที่ 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 จาก Windows host ได้แล้ว
แบบฝึกหัดที่ 20: SSH จาก macOS#
เปิด Terminal บน macOS:
ssh -p 2222 u6090059@localhostbashทำตามขั้นตอนเดียวกับ Windows (ยอมรับ fingerprint, ใส่รหัสผ่าน)
แบบฝึกหัดที่ 21: ออกจาก SSH Session#
พิมพ์: exit หรือกด Ctrl + D
u6090059@u6090059:~$ exit
logout
Connection to localhost closed.bash11. Quick Reference Card#
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 |
การดำเนินการไฟล์#
| 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 |
สิทธิ์และ 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 |
การจัดการแพ็กเกจ#
| 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 |
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 |
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 distributions ทั้งหมด)
- ✅ ความเข้าใจเรื่องสิทธิ์และ sudo
- ✅ การเข้าถึง SSH จากเครื่อง host
- ✅ การจัดการ packages ด้วย APT
เส้นทางการเรียนรู้ที่แนะนำ#
- เรียน Vim หรือ Nano - Text editors สำหรับเทอร์มินัล
- Bash Scripting - ทำงานอัตโนมัติด้วยสคริปต์
- Process Management -
ps,top,kill - Log Management - ไดเร็กทอรี
/var/log/ - 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 -hbashทรัพยากร#
- Ubuntu Documentation ↗
- Linux Journey ↗ - บทแนะนำ Linux แบบโต้ตอบ
- SSH Manual ↗ -
man sshในเทอร์มินัล - Command Line Magic ↗