Secure Shell นาย วรศิวัช จิวะกิดาการ นักศึกษาภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเชียงใหม่ u4606295@cm.edu
introduction Secure Shell คืออะไร History ทำไมถึงต้องใช้ secure shell SSH Protocol หลักการทำงาน Server Configuration TCP Wrapper การใช้งาน client (Linux,Windows)
Secure Shell Secure Shell คืออะไร เป็นโปรแกรมที่ใช้ remote access เครื่องคอมพิวเตอร์ที่ต้องการผ่านเครือข่าย โดยมีการ authentication และ encryption ข้อมูลทุกอย่างขณะเชื่อมต่อ
SSH History 1995 - ssh1ถูกคิดค้นขึ้นโดย Tatu Ylonen แห่งมหาวิทยาลัย เทคโนโลยีเฮลซิงกิ (HUT) ประเทศฟินแลนด์ 1996 - ssh2 ถูกออกแบบขึ้น และ กลายเป็น Internet Standard โดย IETF 1999 - OpenSSH เป็น open source Don't tell anyone that I'm free.
Secure Shell ทำไมจึงต้องใช้ Secure Shell เนื่องจากระบบ remote access แบบเก่า เช่น telnet, rlogin, rsh ไม่มีมาตรการในการรักษาความปลอดภัยของข้อมูล จึงสามารถถูกขโมยข้อมูลได้โดยง่าย
Secure Shell รูปภาพแสดงการ telnet ไปยังเครื่อง server สามารถถูกขโมยข้อมูลได้ง่าย
Secure Shell รูปภาพแสดงการใช้ ssh ไปยังเครื่อง server โดยสังเกตว่า passwordจะถูกเข้ารหัสไว้
หลักการทำงาน Authentication Encryption เมื่อทำการเชื่อมต่อโดย ssh แล้ว ระบบจะต้องผ่านการ authentication ก่อน เพื่อระบุตัวตนของ client ซึ่งเมื่อผ่านแล้ว ก็จะสามารถใช้งานโดยมีการ Encryption โดยที่ Authentication ใช้วิธีแบบ RSA และ DSA Encryption ใช้วิธีแบบ IDEA, DES และ Blowfish
Platform MsDOS Linux Windows Macintosh UNIX
SSH Protocol SSH1 SSH2 - ใช้ RSA algorithm - ฟรีทุกประการ - ถูกพัฒนาขึ้นมาใหม่ทั้งหมด - ความสามารถในการ secure สูงขึ้น - สนับสนุนการส่งข้อมูลแบบ SFTP - มี license ( เฉพาะสำหรับประกอบธุรกิจ )
Secure Shell เทียบข้อแตกต่างระหว่าง ssh1 กับ ssh2 รูปแบบการเข้ารหัสในการencryption รูปแบบการเข้ารหัสในการ authentication
Encryption DES (Data Encryption Standard) คิดค้นโดย IBM ปี 1975 ใช้ Key ขนาด 56 bit ในปัจจุบันถือว่า insecure เพราะสามารถสุ่ม key ถอดรหัสได้แล้ว http://en.wikipedia.org/wiki/Data_Encryption_Standard
Encryption Triple DES (3DES) คิดค้นโดย IBM ปี 1978 ใช้ key ขนาด 168 bit ถูกใช้อย่างแพร่หลายในสถาบันการเงิน http://en.wikipedia.org/wiki/3DES
RSA Algorithm ออกแบบโดย Ron Rivest, Adi Shamir และ Len Adleman แห่ง MIT Algorithm สำหรับ Public-Key encryption
DSA (Digital Signature Algorithm) เป็น standard สำหรับ digital signature พัฒนาโดย National Security Agency (NSA) เป็นมาตรฐานกลางที่ใช้ในประเทศสหรัฐอเมริกา
Latest Version Update เมื่อวันที่ 20 พฤษภาคม พ.ศ. 2549 SSH1 – 1.2.33
การ config server บน Linux สามารถแก้ไขได้ที่ /etc/ssh/sshd_config
มีรายละเอียดการ config เบื้องต้น ให้ลบเครื่องหมาย # หน้า option เหล่านี้ออก และแก้ไขรายละเอียดดังนี้ ข้อมูลจาก http://thaicert.nectec.or.th/paper/basic/Secure_Shell.php Port 22 ListenAddress 192.168.1.1 HostKey /etc/ssh/ssh_host_key ServerKeyBits 1024 LoginGraceTime 600 KeyRegenerationInterval 3600 PermitRootLogin no IgnoreRhosts yes StrictModes yes : ระบุหมายเลข port ที่ใช้ในการติดต่อ : ระบุ IP interface ของ server : path ที่ใช้เก็บ private key ของ host : ความยาวของ key : เวลาที่ให้ในการ login : ระยะเวลาที่จะสร้าง key ใหม่ : อนุญาตให้ใช้ username root หรือไม่ : ไม่อนุญาตให้ใช้ rhosts : ตรวจสอบ permission ของแต่ละ user
/etc/rc.d/init.d/sshd restart PrintMotd yes RhostsAuthentication no RhostsRSAAuthentication no RSAAuthentication yes PasswordAuthentication yes PermitEmptyPasswords no Subsystem sftp /usr/libexec/openssh/sftp-server : ให้ขึ้นข้อความ msg of the day หรือไม่ : เปิด Rhosts Authentication หรือไม่ : ใช้ RSA Authentication สำหรับ Rhost หรือไม่ : ใช้ RSA Authentication หรือไม่ : ใช้ Password ในการ Authentication หรือไม่ : อนุญาตให้ login โดยไม่ใส่ password หรือไม่ : เปิดใช้ SFTP (default) ---------------------------------------------------------------------------------------------------------- หลังการแก้ไขแล้วให้ restart serviceโดยใช้คำสั่ง /etc/rc.d/init.d/sshd restart
TCP Wrapper Monitor service ต่างๆใน server ทำงานร่วมกับไฟล์ /etc/inetd.conf หลักการทำงาน Run TCPD deamon เมื่อมีการร้องขอ service จะเข้าไปดูใน hosts.allow กับ hosts.deny
Hosts.allow อนุญาต host ให้เข้าถึง service ที่กำหนด อยู่ใน /etc/hosts.allow Form การเขียนคือ Service : IP telnet : 10.9.0.1 finger : 10.9.0.2 tftp : 10.9.0.3 เช่น all : 10.0.0.1 all : 10.0.0.2, 10.0.0.3 all : 10.0.1.0/255.255.255.0 all : 10.0.2.1, 10.0.3.0/255.255.255.0
Hosts.allow
Hosts.deny ไม่อนุญาต host/client ให้เข้าถึง service ที่กำหนด อยู่ใน /etc/hosts.deny Form การเขียนคือ Service : IP !!!! แนะนำให้ใส่เป็น all : all เพื่อความปลอดภัย และ ง่ายต่อการจัดการ
Hosts.deny
การเปิดและปิด service อื่นๆ สามารถเข้ามา เปิดหรือปิด service อื่นๆได้ที่ /etc/xinetd.d/ !!! แนะนำให้ปิด service ทุกตัวที่ไม่ได้ใช้ เพื่อความปลอดภัย
Telnet สามารถปิด service ได้ที่ /etc/xinetd.d/telnet โดยแก้ไขส่วน disable เป็น yes !!! หลังการแก้ไขแล้วให้ restart serviceโดยใช้คำสั่ง/etc/rc.d/init.d/xinet.d restart
Grep disable *
วิธีการใช้ client งานบน Linux ใช้คำสั่ง ssh username@hostname
โปรแกรม Client บน Window SSH Secure Shell Client เป็นซอฟต์แวร์ฟรี ที่มีทั้งฟังก์ชันของ Secure command-shell และ SFTP สามารถอ่านรายละเอียดเพิ่มเติมและดาวน์โหลดซอฟต์แวร์ดังกล่าวได้ที่ http://www.ssh.com
SSH Secure Shell Client Interface เมื่อเข้าโปรแกรม
SSH Secure Shell Client การ connection ไปยัง remote host
SSH Secure Shell Client Authentication โดยใส่ password
SSH Secure Shell Client เมื่อสามารถ login สำเร็จแล้ว
โปรแกรม Client บน Window PuTTY เป็นโปรแกรมฟรีสำหรับใช้ telnet และ ssh ได้ รวมถึงservice อื่นๆที่ใช้โปรโตคอล ssh เช่น PSFTP PSCP เป็นต้น ใช้ได้บน Win32 และ UNIX Platforms สามารถ download ได้ที่ http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
PuTTY Interface เมื่อเข้าโปรแกรม
PuTTY เมื่อทำการ login สำเร็จ
ความรู้เพิ่มเติม http://en.wikipedia.org/wiki/Secure_Shell http://cryp.to/publications/the-secure-shell/ http://www.rz.uni-karlsruhe.de/~ig25/ssh-faq/ http://biss.beckman.uiuc.edu/security/workshops/2000-02/sld001.htm http://www.ssh.com/support/documentation/online/ssh/winhelp/32/
Q u e s t i o n A n s w e r