การติดตั้ง SFTP ( Secure File Transfer Protocol ) บน Ubuntu Server โดยใช้ Port 1234 แทน Port 22 มาตรฐาน จะช่วยเพิ่มความปลอดภัยจากการถูกสุ่มโจมตี ( Brute Force Attack ) ได้ดีขึ้นครับ นี่คือขั้นตอนการติดตั้งและตั้งค่าอย่างละเอียด
การสำรองข้อมูลและการเตรียมตัว
ก่อนแก้ไขไฟล์ระบบที่สำคัญ แนะนำให้ทำ Snapshot หรือ Backup ตัวเครื่องไว้ก่อน เพราะหากตั้งค่าผิดพลาดอาจทำให้คุณหลุดจากการเชื่อมต่อ SSH ได้
แก้ไข Port การทำงานของ SSH
เนื่องจาก SFTP ทำงานผ่านโปรโตคอล SSH เราจึงต้องเปลี่ยน Port ที่ไฟล์คอนฟิกหลัก
- ปิดไฟล์ SSH Config
sudo nano /etc/ssh/sshd_config - ค้นหาบรรทัด
#Port 22ให้ลบ#ออกแล้วเปลี่ยนเป็นPort 1234
จำกัดสิทธิ์ผู้ใช้ให้ใช้ได้เฉพาะ SFTP ( Chroot Jail )
เพื่อความปลอดภัย เราควรตั้งค่าให้ User เข้าถึงได้เฉพาะโฟลเดอร์ที่กำหนด และไม่สามารถใช้คำสั่ง Shell อื่น ๆ ได้
- เพิ่มคำสั่งต่อไปนี้ที่ ท้ายไฟล์
/etc/ssh/sshd_configMatch Group sftp_users ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no - บันทึกและออกจากโปรแกรม
สร้างกลุ่มและผู้ใช้งานสำหรับ SFTP
- สร้างกลุ่มสำหรับผู้ใช้ SFTP
sudo addgroup sftp_users - สร้างผู้ใช้ใหม่ ( สมมติชื่อ
sftpuser)sudo adduser sftpuser - เพิ่มผู้ใช้เข้ากลุ่ม
sudo usermod -G sftp_users sftpuser
จัดการสิทธิ์การเข้าถึงโฟลเดอร์ ( Permission )
เพื่อให้ระบบ Chroot ทำงานได้ โฟลเดอร์ Home ของ User ต้องมีเจ้าของเป็น root เท่านั้น
- ตั้งค่าเจ้าของโฟลเดอร์
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser - สร้างโฟลเดอร์สำหรับอัปโหลดไฟล์ ( เนื่องจากโฟลเดอร์หลัก root เป็นเจ้าของ ทำให้ User เขียนไฟล์ลงไปตรง ๆ ไม่ได้ )
sudo mkdir /home/sftpuser/uploads
sudo chown sftpuser:sftp_users /home/sftpuser/uploads
ตั้งค่า Firewall และ Restart บริการ
อย่าลืมเปิด Port 1234 ที่ Firewall ก่อนรีสตาร์ท มิฉะนั้นคุณจะเชื่อมต่อไม่ได้
- เปิด Port 1234
sudo ufw allow 1234/tcp - ตรวจสอบความถูกต้องของ Config
sudo sshd -t
( ถ้าไม่มีข้อความ Error ขึ้นมา แสดงว่าใช้ได้ ) - Restart บริการ SSH
sudo systemctl restart ssh
วิธีการเชื่อมต่อ
เมื่อติดตั้งเสร็จแล้ว คุณสามารถเชื่อมต่อผ่านโปรแกรมอย่าง FileZilla หรือ WinSCP โดยระบุรายละเอียดดังนี้
- Host:
sftp://your_server_ip - Username:
sftpuser - Port:
1234
ข้อควรระวัง: หลังจากเปลี่ยน Port แล้ว การรีโมทเข้าหน้าจอ Terminal ผ่าน SSH ครั้งต่อไป ต้องระบุ Port ใหม่ด้วยเสมอ เช่นssh -p 1234 user@ip_address
อ่านเพิ่มเติม
