การใช้งาน 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 จะช่วยเพิ่มความปลอดภัยให้กับระบบของคุณ