เรียนรู้การเข้าและออกจาก OpenSSH บนพีซี Linux ของคุณ
เราได้เพิ่มพูนคุณธรรมของ SSH หลายครั้งเพื่อความปลอดภัยและการเข้าถึงระยะไกล ลองดูที่เซิร์ฟเวอร์ตัวเองแง่มุม“ การบำรุงรักษา” ที่สำคัญบางอย่างและนิสัยใจคอบางอย่างที่สามารถเพิ่มความปั่นป่วนให้กับการขับขี่ที่ราบรื่น.
ในขณะที่เราได้เขียนคำแนะนำนี้โดยคำนึงถึง Linux แต่สามารถใช้กับ OpenSSH ใน Mac OS X และ Windows 7 ผ่าน Cygwin.
ทำไมมันถึงปลอดภัย
เราได้กล่าวถึงหลายครั้งว่า SSH เป็นวิธีที่ยอดเยี่ยมในการเชื่อมต่อและขุดข้อมูลจากจุดหนึ่งไปอีกจุดหนึ่งได้อย่างไร ลองมาดูอย่างคร่าว ๆ ว่าสิ่งต่าง ๆ ทำงานอย่างไรเพื่อให้คุณมีความคิดที่ดีขึ้นว่าทำไมบางครั้งสิ่งต่าง ๆ จึงแปลกไป.
เมื่อเราตัดสินใจที่จะเริ่มต้นการเชื่อมต่อกับคอมพิวเตอร์เครื่องอื่นเรามักจะใช้โปรโตคอลที่ใช้งานได้ง่าย Telnet และ FTP ต่างคำนึงถึง เราส่งข้อมูลไปยังเซิร์ฟเวอร์ระยะไกลแล้วเราจะได้รับการยืนยันกลับเกี่ยวกับการเชื่อมต่อของเรา เพื่อสร้างความปลอดภัยบางประเภทโปรโตคอลเหล่านี้มักใช้ชื่อผู้ใช้และรหัสผ่านผสมกัน นั่นหมายความว่าพวกเขาปลอดภัยทั้งหมดใช่มั้ย ไม่ถูกต้อง!
หากเราคิดว่ากระบวนการเชื่อมต่อของเราเป็นเมลดังนั้นการใช้ FTP และ Telnet และสิ่งที่ไม่ชอบไม่เหมือนกับการใช้ซองจดหมายมาตรฐาน มันเหมือนกับการใช้โปสการ์ด หากมีบางคนเกิดขึ้นที่ขั้นตอนกลางพวกเขาสามารถดูข้อมูลทั้งหมดรวมถึงที่อยู่ของทั้งผู้ติดต่อและชื่อผู้ใช้และรหัสผ่านที่ส่งออก จากนั้นพวกเขาสามารถเปลี่ยนข้อความการเก็บข้อมูลเหมือนกันและปลอมตัวเป็นผู้สื่อข่าวคนหนึ่งหรือคนอื่น ๆ นี่เป็นที่รู้จักกันว่าเป็นการโจมตีแบบ "คนกลาง" และไม่เพียง แต่จะประนีประนอมบัญชีของคุณเท่านั้น แต่ยังมีปัญหาในการส่งข้อความและไฟล์ที่ได้รับ คุณไม่สามารถแน่ใจได้ว่าคุณกำลังพูดคุยกับผู้ส่งหรือไม่และแม้ว่าคุณจะไม่แน่ใจว่าไม่มีใครมองทุกอย่างจากในระหว่าง.
ตอนนี้มาดูการเข้ารหัส SSL ซึ่งเป็น HTTP ที่ปลอดภัยยิ่งขึ้น ที่นี่เรามีที่ทำการไปรษณีย์ที่จัดการการติดต่อซึ่งตรวจสอบเพื่อดูว่าผู้รับของคุณเป็นคนที่เขาหรือเธออ้างว่าเป็นและมีกฎหมายคุ้มครองอีเมลของคุณจากการถูกมอง มีความปลอดภัยมากขึ้นโดยรวมและหน่วยงานส่วนกลาง - Verisign เป็นหนึ่งในตัวอย่าง HTTPS ของเรา - ตรวจสอบให้แน่ใจว่าบุคคลที่คุณส่งจดหมายไปเช็คเอาต์ พวกเขาทำเช่นนี้โดยไม่อนุญาตให้ใช้ไปรษณียบัตร (ข้อมูลประจำตัวที่ไม่ได้เข้ารหัส); แทนพวกเขามอบอำนาจซองจดหมายจริง.
สุดท้ายเรามาดู SSH ที่นี่การตั้งค่าแตกต่างกันเล็กน้อย เราไม่มีผู้ให้สิทธิ์ส่วนกลางที่นี่ แต่สิ่งต่าง ๆ ยังคงปลอดภัย นั่นเป็นเพราะคุณกำลังส่งจดหมายถึงใครบางคนที่มีที่อยู่ที่คุณรู้จักอยู่แล้ว - พูดโดยการแชทกับพวกเขาทางโทรศัพท์ - และคุณกำลังใช้เลขทางคณิตศาสตร์แฟนซีเพื่อเซ็นซองจดหมายของคุณ คุณมอบมันให้กับน้องชายแฟนพ่อหรือลูกสาวของคุณเพื่อส่งไปยังที่อยู่และเฉพาะในกรณีที่การจับคู่คณิตศาสตร์แฟนซีของผู้รับถือว่าคุณคิดว่าที่อยู่นั้นเป็นสิ่งที่ควรจะเป็น จากนั้นคุณจะได้รับจดหมายกลับป้องกันจากการสอดรู้สอดเห็นด้วยคณิตศาสตร์ที่ยอดเยี่ยมนี้ ในที่สุดคุณจะส่งข้อมูลประจำตัวของคุณในซองจดหมายอื่นที่เป็นอัลกอริธึมที่ต้องมนต์เสน่ห์ไปยังปลายทาง หากคณิตศาสตร์ไม่ตรงกันเราสามารถสรุปได้ว่าผู้รับดั้งเดิมย้ายไปแล้วและเราต้องยืนยันที่อยู่ของพวกเขาอีกครั้ง.
ด้วยคำอธิบายตราบเท่าที่มันเป็นเราคิดว่าเราจะตัดมันที่นั่น หากคุณมีข้อมูลเชิงลึกมากขึ้นอย่าลังเลที่จะแชทในความคิดเห็นของหลักสูตร สำหรับตอนนี้เรามาดูคุณสมบัติที่เกี่ยวข้องมากที่สุดของ SSH การตรวจสอบความถูกต้องของโฮสต์.
คีย์โฮสต์
การรับรองความถูกต้องของโฮสต์นั้นเป็นส่วนที่คนที่คุณไว้วางใจจะใช้ซองจดหมาย (ปิดผนึกด้วยคณิตศาสตร์เวทมนต์) และยืนยันที่อยู่ของผู้รับของคุณ มันเป็นคำอธิบายโดยละเอียดเกี่ยวกับที่อยู่และมันขึ้นอยู่กับคณิตศาสตร์ที่ซับซ้อนที่เราจะข้ามไป มีบางสิ่งที่สำคัญที่จะนำออกไปจากสิ่งนี้แม้ว่า:
- เนื่องจากไม่มีผู้มีอำนาจส่วนกลางความปลอดภัยที่แท้จริงอยู่ในคีย์โฮสต์คีย์สาธารณะและคีย์ส่วนตัว (สองปุ่มหลังเหล่านี้ได้รับการกำหนดค่าเมื่อคุณได้รับสิทธิ์การเข้าถึงระบบ)
- โดยปกติแล้วเมื่อคุณเชื่อมต่อกับคอมพิวเตอร์เครื่องอื่นผ่าน SSH คีย์โฮสต์จะถูกเก็บไว้ สิ่งนี้ทำให้การกระทำในอนาคตเร็วขึ้น (หรือน้อยกว่า verbose).
- หากคีย์โฮสต์เปลี่ยนไปคุณจะได้รับการแจ้งเตือนมากที่สุดและคุณควรระวัง!
เนื่องจากใช้รหัสโฮสต์ก่อนการรับรองความถูกต้องเพื่อสร้างข้อมูลประจำตัวของเซิร์ฟเวอร์ SSH คุณควรตรวจสอบรหัสก่อนทำการเชื่อมต่อ คุณจะเห็นข้อความยืนยันดังด้านล่าง.
คุณไม่ควรกังวล! บ่อยครั้งที่ความกังวลเป็นเรื่องความปลอดภัยจะมีสถานที่พิเศษที่สามารถยืนยันรหัสโฮสต์ (ลายนิ้วมือ ECDSA ด้านบน) ได้ ในกิจการออนไลน์ทั้งหมดมักจะอยู่ในเว็บไซต์เข้าสู่ระบบที่ปลอดภัยเท่านั้น คุณอาจต้อง (หรือเลือก!) โทรศัพท์ให้แผนก IT ของคุณเพื่อยืนยันรหัสนี้ทางโทรศัพท์ ฉันเคยได้ยินบางสถานที่ที่สำคัญอยู่บนป้ายงานของคุณหรือในรายการ "หมายเลขฉุกเฉิน" พิเศษ และหากคุณมีการเข้าถึงเครื่องเป้าหมายคุณสามารถตรวจสอบด้วยตนเองได้!
ตรวจสอบรหัสโฮสต์ของระบบของคุณ
อัลกอริทึมการเข้ารหัสมี 4 ชนิดที่ใช้ในการสร้างคีย์ แต่ค่าเริ่มต้นสำหรับ OpenSSH ณ ต้นปีนี้คือ ECDSA (ด้วยเหตุผลที่ดีบางอย่าง) เราจะมุ่งเน้นไปที่หนึ่งในวันนี้ นี่คือคำสั่งที่คุณสามารถเรียกใช้บนเซิร์ฟเวอร์ SSH ที่คุณสามารถเข้าถึงได้:
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
ผลลัพธ์ของคุณควรกลับมาดังนี้:
256 ca: 62: ea: 7c: e4: 9e: 2e: a6: 94: 20: 11: db: 9c: 78: c3: 4c /etc/ssh/ssh_host_ecdsa_key.pub
หมายเลขแรกคือความยาวบิตของคีย์จากนั้นเป็นคีย์เองและในที่สุดคุณก็เก็บไฟล์ไว้เปรียบเทียบส่วนตรงกลางกับสิ่งที่คุณเห็นเมื่อคุณได้รับแจ้งให้ลงชื่อเข้าใช้จากระยะไกล ควรตรงกันและคุณพร้อมแล้ว หากไม่เป็นเช่นนั้นอาจมีสิ่งอื่นเกิดขึ้น.
คุณสามารถดูโฮสต์ทั้งหมดที่คุณเชื่อมต่อด้วยผ่าน SSH โดยดูที่ไฟล์ known_hosts ของคุณ มันมักจะอยู่ที่:
~ / .ssh / known_hosts
คุณสามารถเปิดได้ในโปรแกรมแก้ไขข้อความใด ๆ หากคุณลองให้ความสนใจกับวิธีการจัดเก็บคีย์ พวกเขาจะถูกเก็บไว้กับชื่อโฮสต์คอมพิวเตอร์ (หรือที่อยู่เว็บ) และที่อยู่ IP ของมัน.
การเปลี่ยนคีย์โฮสต์และปัญหา
มีเหตุผลบางประการที่ว่าทำไมคีย์โฮสต์เปลี่ยนหรือไม่ตรงกับสิ่งที่บันทึกไว้ในไฟล์ known_hosts ของคุณ.
- ระบบถูกติดตั้งใหม่ / กำหนดค่าใหม่.
- คีย์โฮสต์ถูกเปลี่ยนด้วยตนเองเนื่องจากโปรโตคอลความปลอดภัย.
- เซิร์ฟเวอร์ OpenSSH อัปเดตและใช้มาตรฐานที่แตกต่างกันเนื่องจากปัญหาด้านความปลอดภัย.
- สัญญาเช่า IP หรือ DNS มีการเปลี่ยนแปลง บ่อยครั้งหมายความว่าคุณกำลังพยายามเข้าถึงคอมพิวเตอร์เครื่องอื่น.
- ระบบถูกโจมตีด้วยวิธีการบางอย่างเช่นเปลี่ยนรหัสโฮสต์.
เป็นไปได้มากว่าปัญหานี้เป็นหนึ่งในสามข้อแรกและคุณสามารถเพิกเฉยต่อการเปลี่ยนแปลงนี้ได้ หากสัญญาเช่า IP / DNS เปลี่ยนไปแสดงว่าอาจมีปัญหากับเซิร์ฟเวอร์และคุณอาจถูกส่งไปที่เครื่องอื่น หากคุณไม่แน่ใจว่าสาเหตุของการเปลี่ยนแปลงคืออะไรคุณควรถือว่าเป็นคนสุดท้ายในรายการ.
OpenSSH จัดการกับโฮสต์ที่ไม่รู้จักได้อย่างไร
OpenSSH มีการตั้งค่าสำหรับวิธีจัดการกับโฮสต์ที่ไม่รู้จักซึ่งแสดงในตัวแปร“ StrictHostKeyChecking” (ไม่มีเครื่องหมายคำพูด).
การเชื่อมต่อ SSH กับโฮสต์ที่ไม่รู้จักขึ้นอยู่กับการกำหนดค่าของคุณขึ้นอยู่กับการกำหนดค่าของคุณ.
- StrictHostKeyChecking ถูกตั้งค่าเป็น no; OpenSSH จะเชื่อมต่อกับเซิร์ฟเวอร์ SSH โดยอัตโนมัติโดยไม่คำนึงถึงสถานะของคีย์โฮสต์ สิ่งนี้ไม่ปลอดภัยและไม่แนะนำยกเว้นถ้าคุณเพิ่มกลุ่มโฮสต์หลังจากติดตั้งระบบปฏิบัติการใหม่หลังจากนั้นคุณจะเปลี่ยนกลับ.
- StrictHostKeyChecking ถูกตั้งค่าให้ถาม OpenSSH จะแสดงคีย์โฮสต์ใหม่และขอการยืนยันก่อนที่จะเพิ่มพวกเขา มันจะป้องกันไม่ให้การเชื่อมต่อไปที่เปลี่ยนคีย์โฮสต์ นี่คือค่าเริ่มต้น.
- StrictHostKeyChecking ตั้งค่าเป็นใช่; ตรงกันข้ามกับ“ ไม่” สิ่งนี้จะป้องกันไม่ให้คุณเชื่อมต่อกับโฮสต์ใด ๆ ที่ไม่ได้มีอยู่ในไฟล์ known_hosts ของคุณ.
คุณสามารถเปลี่ยนตัวแปรนี้ได้อย่างง่ายดายบนบรรทัดคำสั่งโดยใช้กระบวนทัศน์ต่อไปนี้:
ssh -o 'StrictHostKeyChecking [ตัวเลือก]' user @ host
แทนที่ [ตัวเลือก] ด้วย“ ไม่”“ ถาม” หรือ“ ใช่” โปรดทราบว่ามีเครื่องหมายอัญประกาศเดี่ยวที่ล้อมรอบตัวแปรนี้และการตั้งค่า ยังแทนที่ user @ host ด้วยชื่อผู้ใช้และชื่อโฮสต์ของเซิร์ฟเวอร์ที่คุณกำลังเชื่อมต่อ ตัวอย่างเช่น:
ssh -o 'StrictHostKeyChecking Ask' [email protected]
โฮสต์ที่ถูกบล็อคเนื่องจากกุญแจที่ถูกเปลี่ยน
หากคุณมีเซิร์ฟเวอร์ที่คุณพยายามเข้าถึงซึ่งมีการเปลี่ยนแปลงรหัสของมันอยู่แล้วการกำหนดค่าเริ่มต้นของ OpenSSH จะป้องกันไม่ให้คุณเข้าถึง คุณสามารถเปลี่ยนค่า StrictHostKeyChecking สำหรับโฮสต์นั้น แต่นั่นจะไม่ปลอดภัยอย่างทั่วถึงและหวาดระแวงหวาดระแวงใช่หรือไม่ แต่เราสามารถลบค่าที่กระทำผิดออกจากไฟล์ known_hosts ของเราได้.
นั่นเป็นสิ่งที่น่าเกลียดอย่างแน่นอนที่จะมีบนหน้าจอของคุณ โชคดีที่เหตุผลของเราคือระบบปฏิบัติการที่ติดตั้งใหม่ ลองซูมเข้าบรรทัดที่เราต้องการ.
เราจะไปที่นั่น. มาดูกันว่ามันเป็นไฟล์ที่เราต้องการแก้ไขอย่างไร มันยังทำให้เรามีหมายเลขบรรทัด! ดังนั้นเรามาเปิดไฟล์นั้นใน Nano:
นี่คือกุญแจที่ละเมิดของเราในบรรทัดที่ 1 สิ่งที่เราต้องทำคือกด Ctrl + K เพื่อตัดทั้งบรรทัด.
มันดีกว่ามาก! ดังนั้นตอนนี้เรากด Ctrl + O เพื่อเขียน (บันทึก) ไฟล์จากนั้นกด Ctrl + X เพื่อออก.
ตอนนี้เราได้รับพรอมต์ที่ดีแทนซึ่งเราสามารถตอบกลับด้วย“ ใช่”
การสร้างคีย์โฮสต์ใหม่
สำหรับบันทึกไม่มีเหตุผลมากเกินไปสำหรับคุณที่จะเปลี่ยนรหัสโฮสต์ของคุณเลย แต่ถ้าคุณพบความต้องการคุณสามารถทำได้อย่างง่ายดาย.
ก่อนอื่นให้เปลี่ยนเป็นไดเรกทอรีระบบที่เหมาะสม:
cd / etc / ssh /
โดยทั่วไปจะเป็นที่ที่คีย์โฮสต์ทั่วโลกอยู่แม้ว่าจะมี distros บางตัววางไว้ที่อื่น หากมีข้อสงสัยให้ตรวจสอบเอกสารของคุณ!
ต่อไปเราจะลบกุญแจเก่าทั้งหมด.
sudo rm / etc / ssh / ssh_host_ *
หรือคุณอาจต้องการย้ายไปไว้ในไดเรกทอรีสำรองที่ปลอดภัย แค่ความคิด!
จากนั้นเราสามารถบอกเซิร์ฟเวอร์ OpenSSH ให้กำหนดค่าตัวเองใหม่:
sudo dpkg-reconfigure openssh-server
คุณจะเห็นพรอมต์ในขณะที่คอมพิวเตอร์ของคุณสร้างคีย์ใหม่ Ta-da!
ตอนนี้คุณรู้แล้วว่า SSH ทำงานได้ดีขึ้นได้อย่างไรคุณควรจะสามารถหลุดพ้นจากจุดแข็งได้ คำเตือน "การระบุโฮสต์ระยะไกลเปลี่ยน" เป็นสิ่งที่ทำให้ผู้ใช้จำนวนมากหลุดออกไปแม้กระทั่งผู้ที่คุ้นเคยกับบรรทัดคำสั่ง.
.