คู่มือฉบับสมบูรณ์สำหรับไฟล์ Sshd_Config สำหรับ Linux

Khumux Chbab Smburn Sahrab Fil Sshd Config Sahrab Linux



โปรโตคอล SSH หรือ Secure Shell ใช้สำหรับการเข้าสู่ระบบระยะไกลในเครื่องและเรียกใช้คำสั่งบนเครื่องระยะไกล ข้อมูลที่ถ่ายโอนโดยใช้โปรโตคอล SSH จะถูกเข้ารหัสด้วยอัลกอริทึมพิเศษซึ่งทำให้ SSH ปลอดภัยกว่า Telnet โดยทั่วไป OpenSSH เป็นเครื่องมือที่ใช้โปรโตคอลนี้

สิ่งที่เราจะครอบคลุม?

ในคู่มือนี้ เราจะสำรวจแง่มุมต่างๆ ของไฟล์คอนฟิกูเรชันเซิร์ฟเวอร์ OpenSSH เริ่มกันเลย







ไฟล์การกำหนดค่า OpenSSH

มีไฟล์หลักบางไฟล์สำหรับไคลเอนต์ OpenSSH และเซิร์ฟเวอร์ มีไฟล์การกำหนดค่าสองประเภท:



1. ไฟล์ที่เกี่ยวข้องกับฝั่งไคลเอนต์: ไฟล์หนึ่งคือ ssh_config เป็นไฟล์การกำหนดค่าทั้งระบบ ไฟล์นี้อยู่ที่ /etc/ssh/ssh_config.



อีกไฟล์หนึ่งคือ config ซึ่งเป็นไฟล์กำหนดค่าเฉพาะผู้ใช้ซึ่งอยู่ที่ $HOME/.ssh/config





โปรแกรม SSH บนโฮสต์ใช้การกำหนดค่าจากไฟล์เหล่านี้หรือผ่านอินเทอร์เฟซบรรทัดคำสั่ง ในกรณีของไฟล์ที่กล่าวถึงก่อนหน้านี้ ไฟล์การกำหนดค่าทั้งระบบ ซึ่งก็คือ ssh_config จะได้รับความสำคัญเหนือไฟล์ 'config' เฉพาะผู้ใช้

2. sshd_config: มันเกี่ยวข้องกับฝั่งเซิร์ฟเวอร์ เซิร์ฟเวอร์ OpenSSH อ่านไฟล์นี้เมื่อเริ่มต้น



สำรวจ sshd ไฟล์การกำหนดค่า

ไฟล์คอนฟิก sshd มีคำสั่งมากมายที่สามารถปรับแต่งได้ ลองดูเค้าโครงเริ่มต้นของไฟล์นี้:

$ แมว / เป็นต้น / จุ๊ๆ / sshd_config


# นี่คือไฟล์การกำหนดค่าทั้งระบบของเซิร์ฟเวอร์ sshd ดู

# sshd_config(5) สำหรับข้อมูลเพิ่มเติม

ท่าเรือ 222
ฟังแอดเดรส 0.0.0.0
ที่อยู่ผู้ฟัง ::
โฮสต์คีย์ / เป็นต้น / จุ๊ๆ / ssh_host_key
ServerKeyBits 768
ล็อกอินเกรซไทม์ 600

KeyRegenerationInterval 3600
สิทธิ์รูทเข้าสู่ระบบ ใช่
ละเว้น Rhosts ใช่
โหมดเข้มงวด ใช่
X11หมายเลขการส่งต่อ

อนุญาตให้ Tcp ส่งต่อหมายเลข
อนุญาต TTY เลขที่
X11DisplayOffset 10
พิมพ์มอด ใช่
ให้มีชีวิตอยู่ ใช่
SyslogFacility AUTH

ข้อมูล LogLevel
เลขที่ RhostsAuthentication
หมายเลข RhostsRSAAuthentication
การตรวจสอบ RSA ใช่
การตรวจสอบรหัสผ่าน ใช่
AllowEmptyPasswords เลขที่
เช็คเมล์ เลขที่


บรรทัดใดก็ตามที่ขึ้นต้นด้วย “#” จะถือว่าเป็นความคิดเห็น มาสำรวจพารามิเตอร์ที่กำหนด:

1. คำสั่ง Port ระบุหมายเลขพอร์ต นี่คือหมายเลขพอร์ตที่ sshd ฟังการเชื่อมต่อ ค่าเริ่มต้นสำหรับพอร์ตนี้คือ 22 ซึ่งเป็นค่ามาตรฐาน อย่างไรก็ตาม ในกรณีของเรา เราเปลี่ยนเป็น 222

นอกจากนี้ เราสามารถระบุคำสั่ง Port ได้มากกว่าหนึ่งคำสั่ง ด้วยวิธีนี้ เราสามารถใช้หลายพอร์ตเพื่อฟังการเชื่อมต่อ sshd

2. ListenAddress มีที่อยู่ IP สำหรับการฟัง การดำเนินการเริ่มต้นคือการฟังที่อยู่ IP ทั้งหมดที่เชื่อมโยงกับเซิร์ฟเวอร์ โปรดทราบด้วยว่าคำสั่ง Port ต้องต่อจากคำสั่ง ListenAddress

3. เส้นทางแบบเต็มของไฟล์คีย์โฮสต์ RSA ส่วนตัวได้รับการระบุโดยคำสั่ง HostKey ในกรณีก่อนหน้านี้เส้นทางคือ /etc/ssh/ssh_host_key .

4. คำสั่ง PermitRootLogin อนุญาตให้รูทล็อกอินสำหรับ sshd เมื่อตั้งค่าเป็นใช่ ควรตั้งค่าเป็น no เว้นแต่ไฟล์ host.allow และ hosts.deny จะถูกใช้เพื่อจำกัดการเข้าถึง sshd

5. คำสั่ง X11Forwarding อนุญาตให้ส่งต่อ X Window System เมื่อตั้งค่าเป็น ใช่

6. สิ่งอำนวยความสะดวก Syslog ใดที่ sshd ควรใช้ระบุโดยใช้คำสั่ง SyslogFacility รักษาค่าเริ่มต้นตามที่เป็นอยู่

7. ระดับการบันทึกสำหรับ Syslog ถูกระบุโดยใช้คำสั่ง LogLevel

การเปลี่ยน sshd ท่าเรือ

โดยค่าเริ่มต้น sshd หรือเซิร์ฟเวอร์ OpenSSH daemon ใช้พอร์ต 22 ของโปรโตคอล TCP ขอแนะนำให้เปลี่ยนหมายเลขพอร์ตนี้เป็นค่าอื่นในสภาพแวดล้อมการทดสอบ สิ่งนี้ทำให้เรามั่นใจได้ว่าสามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้ตลอดเวลา

นอกจากนี้ เป็นแนวปฏิบัติที่ดีในการตรวจสอบไวยากรณ์ของการกำหนดค่าไฟล์ sshd_config ใหม่ก่อนที่จะใช้งาน โดยไม่คำนึงว่าพอร์ตนั้นจะรันที่พอร์ตใด ในการตรวจสอบไวยากรณ์ เราสามารถใช้คำสั่งต่อไปนี้:

$ sshd -t


สิ่งสำคัญที่ควรทราบคือเฉพาะผู้ใช้รูทเท่านั้นที่สามารถอ่านและเขียนไฟล์นี้ได้ ซึ่งหมายความว่าหากไฟล์คอนฟิกูเรชัน sshd_config ได้รับการรักษาความปลอดภัยอย่างถูกต้อง การรันคำสั่งก่อนหน้านี้จำเป็นต้องมีสิทธิ์ root

หากไม่มีเอาต์พุตปรากฏขึ้นเมื่อเรียกใช้คำสั่งตรวจสอบไวยากรณ์ก่อนหน้านี้ แสดงว่าไฟล์นั้นใช้ได้

การแก้ไขไฟล์การกำหนดค่าเริ่มต้นและพอร์ต

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

มาสร้างไฟล์ sshd_config ใหม่เป็น sshd_config_new ไฟล์นี้อาจใช้สำหรับพารามิเตอร์เซิร์ฟเวอร์ที่แตกต่างกัน ตอนนี้ เรามาระบุไฟล์นี้เพื่อพิจารณาว่าเป็นไฟล์คอนฟิกูเรชันเซิร์ฟเวอร์ใหม่บนหมายเลขพอร์ต 100:

$ ซูโด / ยูเอสอาร์ / ถังขยะ / sshd -ฉ / เป็นต้น / จุ๊ๆ / sshd_config_new -หน้า 100


ตอนนี้ sshd daemon รับฟังพอร์ต 100 เราสามารถใช้ค่าพอร์ตใดก็ได้ แต่ไม่ใช่ค่าที่ใช้อยู่แล้ว

ตอนนี้มาตรวจสอบว่าพอร์ตใหม่ของเราใช้งานได้ตามที่ต้องการหรือไม่ สำหรับสิ่งนี้ เราต้องใช้โปรแกรมไคลเอนต์ ssh และรันคำสั่งต่อไปนี้:

$ / ยูเอสอาร์ / ถัง / จุ๊ๆ -หน้า 100 < ไอพี ของเซิร์ฟเวอร์ >



ตัวเลือก '-p' ระบุพอร์ต 100 ที่จะใช้บนเซิร์ฟเวอร์ระยะไกล ในกรณีที่เราทดสอบในเครื่อง เราสามารถใช้ IP ของเซิร์ฟเวอร์เป็น IP ของ localhost ได้:

$ / ยูเอสอาร์ / ถัง / จุ๊ๆ -หน้า 100 127.0.0.1

การแก้ไขปัญหาการกำหนดค่า OpenSSH

บางครั้งเซิร์ฟเวอร์ของเราไม่ทำงานตามที่ต้องการ ในกรณีเช่นนี้ เราสามารถใช้แฟล็ก '-d' เพื่อแก้ไขปัญหาการกำหนดค่าเซิร์ฟเวอร์ OpenSSH เมื่อใช้แฟล็ก '-d' เซิร์ฟเวอร์จะเข้าสู่โหมดดีบักและจัดการกับการเชื่อมต่อเดียวเท่านั้น

เอาต์พุตที่ผลิตในโหมดดีบักเป็นแบบละเอียด เราสามารถใช้แฟล็ก '-d' เพิ่มเติมเพื่อเพิ่มระดับการดีบัก เรียกใช้คำสั่ง debug บนเซิร์ฟเวอร์ของเราโดยใช้ไฟล์คอนฟิกูเรชันใหม่:

$ / ยูเอสอาร์ / ถังขยะ / sshd -d -หน้า 100 -ฉ / เป็นต้น / จุ๊ๆ / sshd_config_new


เอาต์พุตจากคำสั่งก่อนหน้าบันทึกไปยัง stderr แทนการใช้สิ่งอำนวยความสะดวก AUTH ของ syslogd

บทสรุป

OpenSSH daemon หรือ sshd เป็นส่วนสำคัญของโครงสร้างพื้นฐานการดูแลระบบจำนวนมาก ด้วยเหตุนี้จึงต้องมีความชำนาญในการจัดการเพื่อให้การทำงานมีประสิทธิภาพสูงสุด ในบทความนี้ เราได้เรียนรู้เกี่ยวกับไฟล์การกำหนดค่าเซิร์ฟเวอร์ OpenSSH เช่น sshd_config