Back

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

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:

DistributionUse 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

  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 มากเกินไป คอมพิวเตอร์ host อาจค้าง

Number of CPUs:

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

Disk Size:

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

Hardware Settings

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

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

Ubuntu

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

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

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

Terminal

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

Prompt: จะเห็นข้อความคล้ายกับ u6090059@u6090059:~$

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

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

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

pwd
bash

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

/home/u6090059
bash

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


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

คำสั่ง: ls (List)

ls
bash

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

Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
bash

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

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

ls -l
bash

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

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 -a
bash

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

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

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


4.3 แบบฝึกหัดที่ 3: การเคลื่อนที่ระหว่างไดเร็กทอรี#

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

cd Documents
pwd
bash

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

/home/u6090059/Documents
bash

จากนั้นลอง:

cd ..
pwd
bash

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

/home/u6090059
bash

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

กลับสู่ home directory อย่างรวดเร็ว:

cd ~
pwd
bash

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

/home/u6090059
bash

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


5. การจัดการไฟล์และไดเร็กทอรี#

5.1 แบบฝึกหัดที่ 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

สร้าง 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 tools
bash

คำอธิบาย: แฟล็ก -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.sh
bash

5.3 แบบฝึกหัดที่ 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 เข้าไปในไฟล์แทนที่จะเขียนทับ


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

Nano เป็นตัวแก้ไขข้อความที่เป็นมิตรกับผู้เริ่มต้น ทำงานโดยตรงใน terminal ต่างจากตัวแก้ไขแบบกราฟิก โดย nano ทำงานทั้งหมดด้วย keyboard shortcut และมีอยู่บนระบบ Linux เกือบทั้งหมด

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

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

การเปิด Nano

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

nano practice.txt
bash

ผลลัพธ์ที่คาดหวัง: หน้าต่างใหม่ปรากฏขึ้นพร้อมอินเทอร์เฟซของ 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 Justify
bash

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

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

แถบด้านล่าง แสดง keyboard shortcut:

  • ^ หมายถึงปุ่ม 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

เคล็ดลับ

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

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

คัดลอกไฟล์:

cp notes.txt notes_backup.txt
ls -l
bash

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

mv notes_backup.txt old_notes.txt
ls -l
bash

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

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

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

touch test_file.txt
rm test_file.txt
ls 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#

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

ลำดับชั้นผู้ใช้ของ 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

6.2 แบบฝึกหัดที่ 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 จะจำการอนุญาตไว้เป็นเวลาสองสามนาที

6.3 ทำความเข้าใจ Prompt#

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

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

sudo -i
whoami
exit
bash

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

root
# (สังเกต prompt เปลี่ยนเป็น #)
bash

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


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

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

7.1 แบบฝึกหัดที่ 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 ยังไม่ได้ติดตั้งอะไร เพียงอัปเดต “แคตตาล็อก” เท่านั้น


7.2 แบบฝึกหัดที่ 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

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


7.3 แบบฝึกหัดที่ 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

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

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

sudo apt remove tree
bash

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

sudo apt purge tree
bash

ลบ dependency ที่ไม่ได้ใช้แล้ว:

sudo apt autoremove
bash

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

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

8.1 SSH คืออะไร?#

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

รูปแบบ 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-server
bash

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

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

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

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

sudo service ssh status
bash

ผลลัพธ์ที่คาดหวัง (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 start
bash

ตรวจสอบว่า SSH ทำงานแล้ว:

sudo service ssh status
bash

ผลลัพธ์ที่คาดหวัง (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 ago
bash

ตั้งค่าให้ SSH เริ่มต้นอัตโนมัติทุกครั้งที่บูต:

sudo systemctl enable ssh
bash

คำอธิบาย: service ssh start จะรัน SSH จนกว่าจะรีบูตครั้งถัดไปเท่านั้น ส่วน systemctl enable ssh ทำให้ SSH เริ่มต้นเมื่อบูต จึงไม่เจอ “Connection refused” หลังรีสตาร์ท VM


8.4 แบบฝึกหัดที่ 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#

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 poweroff
bash

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

  1. ใน VirtualBox เลือก VM Linux_Security_Lab
  2. คลิก Settings → Network
  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

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

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

ทำไมต้องพอร์ต 2222?

พอร์ต 22 อาจถูกใช้โดยบริการอื่นบน host การใช้ 2222 จึงช่วยหลีกเลี่ยงการชนกัน สามารถใช้พอร์ตใดก็ได้ตั้งแต่ 1024–65535


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

10.1 แบบฝึกหัดที่ 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 จากเครื่อง host ที่เป็น Windows ได้แล้ว


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

เปิด Terminal บน macOS:

ssh -p 2222 u6090059@localhost
bash

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


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

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

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

11. Quick Reference Card#

11.1 Navigation#

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

11.2 การจัดการไฟล์#

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

11.3 สิทธิ์และ 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

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

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

11.5 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

11.6 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 distribution ทั้งหมด)
  • ✅ ความเข้าใจเรื่องสิทธิ์และ sudo
  • ✅ การเข้าถึง SSH จากเครื่อง host
  • ✅ การจัดการแพ็กเกจด้วย APT

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

  1. เรียน Vim — ตัวแก้ไขข้อความอีกตัวที่จะเจอบนเซิร์ฟเวอร์ทุกเครื่อง
  2. Bash Scripting — ทำงานอัตโนมัติด้วยสคริปต์
  3. Process Management — ps, top, kill
  4. Log Management — ไดเร็กทอรี /var/log/
  5. 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 -h
bash

12.3 แหล่งข้อมูลเพิ่มเติม#


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

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

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