Skip to main content

การใช้งาน Secure SSH Access ใน Linux

บทนำ

การเชื่อมต่อผ่าน SSH (Secure Shell) เป็นวิธีที่ปลอดภัยในการเข้าถึงและจัดการเซิร์ฟเวอร์ Linux หรือเครื่องคอมพิวเตอร์จากระยะไกล การตั้งค่าการเข้าถึง SSH อย่างปลอดภัยช่วยให้สามารถป้องกันการเข้าถึงที่ไม่ได้รับอนุญาตและเพิ่มความมั่นคงให้กับระบบของคุณ

ในบทนี้, เราจะเรียนรู้วิธีการตั้งค่า SSH สำหรับการเข้าถึงที่ปลอดภัย รวมถึงการใช้งานคีย์ SSH, การปิดการใช้งานการเข้าสู่ระบบด้วยรหัสผ่าน, และการตั้งค่าการป้องกันการโจมตีแบบ Brute Force

1. การตั้งค่า SSH Key-Based Authentication

การใช้งาน SSH Key-Based Authentication เป็นวิธีการที่ปลอดภัยกว่าการใช้รหัสผ่านในการเข้าถึงระบบ

1.1 การสร้าง SSH Key Pair

ในการใช้ SSH key สำหรับการเข้าสู่ระบบ, คุณต้องสร้าง SSH key pair (คีย์ส่วนตัวและคีย์สาธารณะ) โดยใช้คำสั่ง:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

คำสั่งนี้จะสร้างคีย์สาธารณะและคีย์ส่วนตัว และบันทึกไว้ในโฟลเดอร์ ~/.ssh/ โดยจะให้คุณตั้งชื่อไฟล์และรหัสผ่าน (หากต้องการ)

1.2 การคัดลอกคีย์สาธารณะไปยังเซิร์ฟเวอร์

คัดลอกคีย์สาธารณะไปยังเซิร์ฟเวอร์ที่คุณต้องการเชื่อมต่อ โดยใช้คำสั่ง ssh-copy-id:

ssh-copy-id user@your-server-ip

จากนั้นระบบจะขอให้คุณป้อนรหัสผ่านเพื่อยืนยันตัวตน และคีย์สาธารณะจะถูกเพิ่มไปยังไฟล์ ~/.ssh/authorized_keys บนเซิร์ฟเวอร์

1.3 การทดสอบการเชื่อมต่อด้วย SSH Key

หลังจากที่คีย์สาธารณะถูกคัดลอกไปยังเซิร์ฟเวอร์แล้ว, คุณสามารถเชื่อมต่อไปยังเซิร์ฟเวอร์ได้โดยไม่ต้องใช้รหัสผ่าน:

ssh user@your-server-ip

2. การปิดการใช้งานการเข้าสู่ระบบด้วยรหัสผ่าน

การปิดการใช้งานการเข้าสู่ระบบด้วยรหัสผ่านจะช่วยเพิ่มความปลอดภัยจากการโจมตีแบบ Brute Force ที่พยายามเดารหัสผ่าน

2.1 การเปิดไฟล์การตั้งค่า SSH

เปิดไฟล์การตั้งค่า SSH บนเซิร์ฟเวอร์:

sudo nano /etc/ssh/sshd_config

2.2 การปิดการใช้งานรหัสผ่าน

ค้นหาบรรทัด PasswordAuthentication และตั้งค่าให้เป็น no ดังนี้:

PasswordAuthentication no

จากนั้นบันทึกไฟล์และปิดโปรแกรมแก้ไข

2.3 การรีสตาร์ทบริการ SSH

รีสตาร์ทบริการ SSH เพื่อให้การตั้งค่ามีผล:

sudo systemctl restart ssh

ตอนนี้คุณจะสามารถเข้าสู่ระบบได้โดยใช้ SSH Key เท่านั้นและไม่สามารถใช้รหัสผ่านในการเข้าสู่ระบบได้

3. การตั้งค่าการป้องกันจากการโจมตี Brute Force

การโจมตีแบบ Brute Force คือการที่ผู้โจมตีพยายามเดารหัสผ่านจำนวนมากเพื่อเข้าสู่ระบบ ซึ่งอาจทำให้เกิดการเข้าถึงที่ไม่ได้รับอนุญาต

3.1 การติดตั้งและใช้งาน fail2ban

fail2ban เป็นเครื่องมือที่ช่วยป้องกันการโจมตีแบบ Brute Force โดยการบล็อก IP ที่พยายามเข้าสู่ระบบหลายครั้งในระยะเวลาสั้น ๆ

ติดตั้ง fail2ban:

sudo apt update
sudo apt install fail2ban

3.2 การตั้งค่า fail2ban

หลังจากติดตั้งเสร็จแล้ว, สร้างไฟล์การตั้งค่าจากไฟล์ตัวอย่าง:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

จากนั้นเปิดไฟล์การตั้งค่า:

sudo nano /etc/fail2ban/jail.local

3.3 การตั้งค่าการป้องกัน SSH

ค้นหาบรรทัด [sshd] และตั้งค่าดังนี้:

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
findtime = 600

การตั้งค่านี้จะบล็อก IP ที่พยายามเข้าสู่ระบบผิดพลาดมากกว่า 3 ครั้งใน 10 นาที (600 วินาที) โดยจะบล็อก IP นั้นเป็นเวลา 10 นาที

3.4 การรีสตาร์ท fail2ban

หลังจากทำการตั้งค่าเสร็จแล้ว, รีสตาร์ทบริการ fail2ban:

sudo systemctl restart fail2ban

ตอนนี้ระบบของคุณจะมีการป้องกันจากการโจมตี Brute Force โดยอัตโนมัติ

4. การตั้งค่าการล็อกอิน SSH ด้วย Port ที่ไม่เป็นที่นิยม

การใช้พอร์ตที่ไม่เป็นที่นิยมสำหรับการเชื่อมต่อ SSH สามารถช่วยลดความเสี่ยงจากการโจมตีแบบ automated ที่พยายามเชื่อมต่อผ่านพอร์ต SSH เริ่มต้น (พอร์ต 22)

4.1 การเปลี่ยนพอร์ต SSH

เปิดไฟล์การตั้งค่า SSH:

sudo nano /etc/ssh/sshd_config

ค้นหาบรรทัด Port 22 และเปลี่ยนหมายเลขพอร์ต:

Port 2222

4.2 การรีสตาร์ทบริการ SSH

รีสตาร์ทบริการ SSH:

sudo systemctl restart ssh

ตอนนี้การเชื่อมต่อ SSH จะใช้พอร์ต 2222 แทนพอร์ต 22

5. การตรวจสอบและการแก้ไขปัญหา

5.1 การตรวจสอบสถานะ SSH

ตรวจสอบสถานะการทำงานของ SSH:

sudo systemctl status ssh

5.2 การตรวจสอบไฟล์ล็อก SSH

ตรวจสอบไฟล์ล็อกเพื่อหาข้อผิดพลาดหรือพฤติกรรมที่ไม่ปกติ:

sudo tail -f /var/log/auth.log

6. สรุป

การตั้งค่า Secure SSH Access เป็นสิ่งสำคัญในการป้องกันเครื่องเซิร์ฟเวอร์ของคุณจากการโจมตีจากภายนอก โดยการใช้งาน SSH Key-Based Authentication, ปิดการใช้งานรหัสผ่าน, และการตั้งค่าการป้องกันการโจมตีแบบ Brute Force เช่นการใช้ fail2ban จะช่วยเพิ่มความปลอดภัยให้กับระบบของคุณ