การใช้ Secure Shell ในการเข้าถึงระบบจากระยะไกล


การใช้ Secure Shell ในการเข้าถึงระบบจากระยะไกล

การใช้ Secure Shell ในการเข้าถึงระบบจากระยะไกล

What are SSH, SFTP and SCP?

Secure Shell (SSH) เป็นโพรโตคอลในการสร้างการติดต่อเพื่อเข้าใช้งานระบบอย่างปลอดภัยมากกว่าการติดต่อแบบเดิมๆ ที่มีการส่งข้อมูลเป็นเพียงตัวอักษรเปล่าๆ (Plain text) โดยที่โพรโตคอลดังกล่าวจะทำการเข้ารหัสข้อมูลทุกอย่างไม่ว่าจะเป็น ชื่อผู้ใช้ รหัสผ่าน หรือข้อมูลอื่นๆ ก่อนที่จะทำการส่งไปยังเครื่องเซิร์ฟเวอร์ โดยปกตินิยมนำ SSH มาใช้งานแทน telnet เพราะมีความปลอดภัยมากกว่า

Secure File Transfer Protocol (SFTP) เป็นโพรโตคอลที่นำมาใช้แทน FTP โดยจะเป็นส่วนหนึ่งของ SSH ซึ่งจะมี sftpserv เป็นโปรแกรมที่รันอยู่ที่ฝั่งเซิร์ฟเวอร์ รอรับการติดต่อจากไคลเอ็นต์ผ่านทางคำสั่ง sftp บนระบบปฏิบัติการ linux และในระบบปฏิบัติการ Windows ก็มีโปรแกรมที่จะใช้สำหรับติดต่อและโอนถ่ายข้อมูลกับเซิร์ฟเวอร์ผ่าน SSH ด้วย เช่น SecureFX และ SSH Secure Shell Client เป็นต้น

Secure Copy (SCP) เป็นวิธีการหนึ่งในรับส่งข้อมูลข้ามระบบเครือข่าย โดยมีลักษณะเป็นการคัดลอกข้อมูลระหว่างเครื่อง 2 เครื่อง และอาศัยโพรโตคอล Secure Shell เช่นเดียวกับ SFTP ซึ่งจะแตกต่างกันที่ SFTP จะต้อง Login เข้าไปที่ระบบก่อนแล้วจึงสามารถที่จะรับส่งไฟล์ได้ แต่ SCP นั้นจะป้อนรหัสผ่านทุกครั้งที่ทำการรับส่งไฟล์

Why Use SSH?

วิธีการส่วนมากที่ผู้โจมตีใช้กันคือการดักขโมยข้อมูลระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ผ่านทางโพรโตคอล telnet ซึ่งข้อมูลที่ดักได้อาจจะเป็นชื่อที่ใช้ Login และรหัสผ่าน ที่ไม่ได้ถูกเข้ารหัสไว้ โดยใช้โปรแกรมประเภท Sniffer ทั่วๆไป ดังรูปที่ 1 และถ้าเกิดกรณีที่ผู้โจมตีดักขโมยชื่อผู้ใช้คือ root และรหัสผ่าน ความเสียหายที่ตามมาอาจจะมากจนเกินที่จะแก้ไขได้

ดังนั้นวิธีแก้ไขคือ ยกเลิกการใช้โพรโตคอล telnet โดยใช้โพรโตคอล SSH แทน และใช้ SFTP แทนโพรโตคอลของ FTP ทั้งนี้เพื่อความปลอดภัยจากการถูกดักข้อมูลขณะทำการส่ง ดังรูปที่ 2

รูปที่ 1 แสดงผลจากการใช้ telnet ในการทำ remote access ไปยังเซิร์ฟเวอร์และผู้โจมตีสามารถดักข้อมูลได้

รูปที่ 2 แสดงผลจากการใช้ ssh จะสังเกตว่ารหัสผ่านที่ส่งจากไคลเอ็นต์นั้นจะถูกเข้ารหัสไว้

การปรับแต่งค่า Secure Shell Daemon

ในระบบปฏิบัติการ linux Red Hat เวอร์ชัน 7.2 นั้นมีแพ็กเกจ OpenSSH (มีแพ็กเกจชื่อ openssh) ที่มีทั้ง openssh-serv (สำหรับเซิร์ฟเวอร์) และ openssh-client (สำหรับไคลเอ็นต์) แพ็กเกจดังกล่าวต้องการแพ็กเกจ OpenSSL (มีแพ็กเกจชื่อ openssl) ดังนั้นก่อนการติดตั้ง openssh นั้นต้องติดตั้ง openssl ก่อนเสมอ

การปรับแต่งจะมุ่งเน้นไปที่การปรับแต่งค่าของ SSHD เป็น daemon ของฝั่งเซิร์ฟเวอร์ที่รอรับการติดต่อจากไคลเอ็นต์ ให้มีความปลอดภัยมากที่สุด โดยจะทำการแก้ไขในไฟล์ที่ชื่อ /etc/ssh/sshd_config ซึ่งรายละเอียดในไฟล์ที่สำคัญมีดังนี้ และให้ลบ # ที่อยู่หน้า option ต่อไปนี้

# This is ssh server systemwide configuration file.

Port   22
ListenAddress   192.168.1.1
HostKey   /etc/ssh/ssh_host_key
ServerKeyBits   1024
LoginGraceTime   600
KeyRegenerationInterval   3600
PermitRootLogin   no
IgnoreRhosts   yes
IgnoreUserKnownHosts   yes
StrictModes   yes
X11Forwarding   no
PrintMotd   yes
SyslogFacility   AUTH
LogLevel   INFO
RhostsAuthentication   no
RhostsRSAAuthentication   no
RSAAuthentication   yes
PasswordAuthentication   yes
PermitEmptyPasswords   no
AllowUsers   admin

Subsystem   sftp   /usr/libexec/openssh/sftp-server

คำแนะนำในการปรับแต่งค่าต่างๆ ที่สำคัญในไฟล์ /etc/ssh/sshd_config ให้มีความปลอดภัย มีดังนี้

Port   22

ระบุหมายเลขพอร์ตที่ใช้ในการติดต่อ โดยค่า default แล้วจะอยู่ที่พอร์ตที่ 22 แต่ถ้าแก้ไขให้ใช้พอร์ตอื่นก็จะสามารถหลอกแฮ็กเกอร์ที่อ่อนประสบการณ์ที่ได้รหัสผ่านแต่ก็ยังไม่ทราบพอร์ตได้

ListenAddress   192.168.1.1

ระบุหมายเลข IP ให้กับฝั่งเซิร์ฟเวอร์ว่าให้รอรับการติดต่อทาง IP ใด จะเห็นผลชัดเจนยิ่งขึ้น ถ้าเครื่องเซิร์ฟเวอร์ดังกล่าวให้บริการไฟร์วอลล์ด้วย

HostKey   /etc/ssh/ssh_host_key

ระบุไดเรกทอรีที่ใช้เก็บคีย์ private ของโฮสต์

ServerKeyBits   1024

ระบุจำนวนบิตที่จะใช้ในคีย์ของเซิร์ฟเวอร์ ซึ่ง default คือ 768 ให้ทำการแก้ไขเป็น 1024

LoginGraceTime   600

ระบุเวลาในหน่วยวินาทีหลังจากมีการร้องขอการติดต่อจากไคลเอ็นต์จนกระทั่งสิ้นสุดการติดต่อโดยที่ยังไม่มีการ Login

KeyRegenerationInterval   3600

ระบุอายุของคีย์ หรือระยะเวลาเป็นวินาทีที่จะสร้างคีย์ใหม่ โดยค่า default อยู่ที่ 3600

PermitRootLogin   no

ระบุว่าอนุญาตให้ accout ของ root ทำการ login เข้าระบบได้โดยตรงหรือไม่ ให้เปลี่ยนเป็น no

IgnoreRhosts   yes

ระบุไม่อนุญาตให้ใช้ไฟล์ rhosts หรือ shosts สำหรับการ authenticate

StrictModes   yes

ก่อนที่จะมีการอนุญาตให้ Login เข้ามาในระบบได้ sshd จะตรวจสอบ permission ในไดเรกทอรี home ของผู้ใช้แต่ละคน และไฟล์ rhosts ก่อน ดังนั้นออปชันนี้ให้เลือก yes เพราะบางครั้งผู้ใช้บางคนอาจจะเปลี่ยนแปลง permission ให้ผู้อื่นสามารถเขียนได้โดยไม่เจตนา

PrintMotd   yes

ระบุให้ sshd แสดงข้อความที่อยู่ในไฟล์ /etc/motd เมื่อมีผู้ใช้งานระบบทำการ Login ซึ่งไฟล์ /etc/motd นั้นรู้จักกันในชื่อของ "message of the day"

RhostsAuthentication   no

ระบุให้ sshd สามารถที่จะใช้ rhosts ในการ authenticate ได้ แนะนำว่าไม่ควรที่จะใช้เพราะว่า rhosts นั้นไม่มีความปลอดภัย

RhostsRSAAuthentication   no

ระบุว่าจะให้สามารถใช้ rhosts ร่วมกับ RSA ในการ authenticate ได้หรือไม่

RSAAuthentication   yes

ระบุว่าให้ใช้ RSA ในการ Authenticate โดย RSA จะใช้คีย์คู่ทั้ง public และ private ที่ถูกสร้างโดย ssh-keygen1utility ในกระบวนการ Authenticate

PasswordAuthentication   yes

ระบุว่าให้ใช้รหัสผ่านในการทำ Authenticate

PermitEmptyPasswords   no

ระบุว่าจะอนุญาตให้ Login โดยไม่ต้องใช้รหัสผ่านหรือไม่ ให้เลือก no เพื่อบังคับให้ป้อนรหัสผ่านทุกครั้ง

AllowUsers   admin

ระบุว่าจะอนุญาตให้ใคร Login ได้บ้าง โดยค่า default แล้วจะอนุญาตให้ทุกคนสามารถ Login เข้าระบบได้ และสามารถเพิ่มชื่อผู้ใช้ที่อนุญาตได้หลายคน โดยแยกแต่ละชื่อด้วยเครื่องหมายช่องว่างหรือ space

Subsystem   sftp   /usr/libexec/openssh/sftp-server

ระบุให้ใช้ sftp โดยค่า default จะอนุญาตอยู่แล้ว

How to use SSH Client?

ถ้าใช้ระบบปฏิบัติการ Linux จะใช้คำสั่งต่อไปนี้

  • ssh -option username@hostname เพื่อที่ทำการ Remote Login ผ่าน Secure Shell และมีออปชันที่สำคัญดังนี้
    • -l เพื่อระบุชื่อที่ใช้ในการ Login
    • -p เพื่อระบุพอร์ตที่ใช้ในการ Login

      ตัวอย่าง

      [kitisak@Server kitisak]$ ssh -p 78 -l kitisak 192.168.1.1
      [email protected]'s password:
      Last login: Fri Jul 5 14:56:46 2002 from 192.168.1.32

      [[email protected] kitisak]$

  • sftp username@hostname เพื่อที่ทำการเรียกใช้ Secure FTP

    ตัวอย่าง

    [kitisak@Server kitisak]$ sftp [email protected]
    Connecting to 192.168.1.1...
    [email protected]'s password:
    sftp>
  • scp -option source_file username@hostname:target_file เพื่อเรียกใช้โปรแกรม Secure Copy มีออปชันที่สำคัญดังนี้
    • -r เพื่อให้ทำการคัดลอกไฟล์และไดเรกทอรีทั้งหมด ภายใต้ source_file

      ตัวอย่าง

      [kitisak@Server /]$ scp /etc/group [email protected]:/tmp/
      [email protected]'s password:
      group 100% |**********************************| 510 00:00

      [kitisak@Server /]$

ถ้าใช้ระบบปฏิบัติการ Windows จะมีโปรแกรมที่ใช้ในการทำ Remote Login หลายโปรแกรมยกตัวอย่างเช่น

  • PuTTY เป็นซอฟต์แวร์ฟรี ที่มีความสามารถในการทำ Remote Login และยังมีโปรแกรมที่อาศัยโปรโตคอล SSH ด้วยเช่น PSFTP (ใช้ในการรับส่งไฟล์ผ่าน Secure Shell) PSCP (ใช้ในการคัดลอกไฟล์ผ่าน Secure Shell) เป็นต้น ซึ่งสามารถดาวน์โหลดได้ที่ http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


    รูปที่ 3 แสดงหน้าแรกของโปรแกรม PuTTY


    รูปที่ 4 แสดงหน้าจอขณะทำการ Login เข้าใช้งานเซิร์ฟเวอร์สำเร็จ


    รูปที่ 5 แสดงอินเทอร์เฟซของโปรแกรม PSFTP ซึ่งมีลักษณะคล้ายกับ text-mode ftp


    รูปที่ 6 แสดงการใช้งานโปรแกรม PSCP

  • SSH Secure Shell Client เป็นซอฟต์แวร์ฟรี ที่มีทั้งฟังก์ชันของ Secure command-shell และ SFTP สามารถอ่านรายละเอียดเพิ่มเติมและดาวน์โหลดซอฟต์แวร์ดังกล่าวได้ที่ http://www.ssh.com ซึ่งมีลักษณะอินเทอร์เฟซของโปรแกรมจะเป็นดังรูปที่ 7 และ 8


    รูปที่ 7 แสดงโปรแกรมการใช้ Secure command Shell


    รูปที่ 8 แสดงส่วนของโปรแกรมที่ใช้ SFTP

  • WinSCP เป็นซอฟต์แวร์ฟรีสำหรับ Secure Copy สามารถดาวน์โหลดได้ที่ http://winscp.vse.cz/eng/download.php ซึ่งมีลักษณะอินเทอร์เฟซของโปรแกรมจะเป็นดังรูปที่ 9 และ 10


    รูปที่ 9 แสดงโปรแกรม WinSCP


    รูปที่ 10 แสดงลักกษณะของโปรแกรมหลังจากทำการ Login เข้าไปยังเซิร์ฟเวอร์เรียบร้อยแล้ว

 ขอบคุณข้อมูลดีๆจาก : กิติศักดิ์ จิรวรรณกูล itwizard

หมายเลขบันทึก: 110978เขียนเมื่อ 12 กรกฎาคม 2007 18:56 น. ()แก้ไขเมื่อ 15 มิถุนายน 2012 18:35 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (0)

ไม่มีความเห็น

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท