ฉันรู้ว่าสิ่งที่มันไม่ แต่ผมไม่ทราบว่าทำไม มันป้องกันการโจมตีอะไร?
มันเกี่ยวข้องกับวิธีการรับรองความถูกต้องทุกประเภทหรือไม่ (โฮสต์, รหัสผ่าน, publickey, แป้นพิมพ์แบบโต้ตอบ ... )
ฉันรู้ว่าสิ่งที่มันไม่ แต่ผมไม่ทราบว่าทำไม มันป้องกันการโจมตีอะไร?
มันเกี่ยวข้องกับวิธีการรับรองความถูกต้องทุกประเภทหรือไม่ (โฮสต์, รหัสผ่าน, publickey, แป้นพิมพ์แบบโต้ตอบ ... )
คำตอบ:
UseDNS
ตัวเลือกส่วนใหญ่จะไร้ประโยชน์ หากเครื่องไคลเอนต์อยู่ที่นั่นบนอินเทอร์เน็ตมีโอกาสสูงที่พวกเขาไม่มี DNS ย้อนกลับใด ๆ DNS ย้อนกลับของพวกเขาไม่ได้แก้ปัญหาไปข้างหน้าหรือ DNS ของพวกเขาไม่ได้ให้ข้อมูลใด ๆ นอกเหนือจาก“ เป็นของสิ่งนี้ ISP” ซึ่งที่อยู่ IP แจ้งให้คุณทราบแล้ว
ในการกำหนดค่าทั่วไป DNS จะใช้สำหรับการบันทึกเท่านั้น มันสามารถใช้สำหรับการตรวจสอบ แต่ถ้าระบุไว้ในIgnoreRhosts no
sshd_config
นี่คือความเข้ากันได้กับการติดตั้งเก่าที่ใช้ rsh ที่คุณพูดว่า“ผู้ใช้ที่เรียกว่าbob
บนเครื่องที่เรียกว่าdarkstar
อาจจะเข้าสู่ระบบเป็นalice
โดยไม่ต้องแสดงข้อมูลประจำตัวใด ๆ” (โดยการเขียนdarkstar bob
ใน~alice/.rhosts
) จะปลอดภัยเฉพาะเมื่อคุณเชื่อถือเครื่องทั้งหมดที่อาจเชื่อมต่อกับเซิร์ฟเวอร์ ssh กล่าวอีกนัยหนึ่งนี้ไม่ค่อยมีประโยชน์ในทางที่ปลอดภัย
เนื่องจากการค้นหา DNS ไม่ได้ให้ข้อมูลที่เป็นประโยชน์ใด ๆ ยกเว้นในกรณีที่แปลกมากควรปิดใช้งาน เท่าที่ฉันสามารถบอกได้เหตุผลเดียวที่เป็นค่าเริ่มต้นคือความปลอดภัยทางเทคนิค (ถ้าคุณกังวลเกี่ยวกับการรับรองความถูกต้องไม่ใช่ความพร้อมใช้งาน) แม้ว่าจะใช้กับสถานการณ์เพียงเล็กน้อยเท่านั้น
อาร์กิวเมนต์สำหรับการปิดคุณลักษณะนี้ก็คือว่าทุกคุณลักษณะฟุ่มเฟือยที่ไม่จำเป็นเป็นความเสี่ยงด้านความปลอดภัย
UseDNS
ไม่ได้มีประโยชน์หากคุณใช้การตรวจสอบความถูกต้องของโฮสต์ที่ใช้คีย์เฉพาะในกรณีที่คุณใช้การตรวจสอบความถูกต้องของโฮสต์ที่ใช้ชื่อโฮสต์ (เช่นการตรวจสอบที่อ่อนแอมาก)
UseDNS
นั้นมีประโยชน์มากและสำคัญมาก คุณตรวจสอบผู้ใช้ตามคีย์และเซิร์ฟเวอร์ตามชื่อโฮสต์ที่กำหนดให้กับที่อยู่ MAC
ฉันเพิ่มลงในรายงานข้อผิดพลาด (เก่า แต่ยังคงเป็นปัจจุบัน) ใน Ubuntu เกี่ยวกับเรื่องนี้
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/424371
ฉันเสนอให้เปลี่ยนค่าเริ่มต้นเป็นไม่ใช่และเพิ่มเอกสารใหม่ใน:
# UseDNS - Determines whether IP Address to Hostname lookup and comparison is performed
# Default value is No which avoids login delays when the remote client's DNS cannot be resolved
# Value of No implies that the usage of "from=" in authorized_keys will not support DNS host names but only IP addresses.
# Value of Yes supports host names in "from=" for authorized_keys. Additionally if the remote client's IP address does not match the resolved DNS host name (or could not be reverse lookup resolved) then a warning is logged.
จาก manpage ของsshd_config(5)
:
UseDNS Specifies whether sshd(8) should look up the remote host name and
check that the resolved host name for the remote IP address maps
back to the very same IP address. The default is “yes”.
การเปิดใช้งานสิ่งนี้ทำให้การเข้าถึงจากตำแหน่งที่ไม่มี DNS (ไปข้างหน้าและย้อนกลับ) ที่เหมาะสมสร้างคำเตือนในบันทึก
ดังนั้นสิ่งนี้จะไม่ป้องกันการโจมตีใด ๆ ยกเว้นว่ามันจะต้องมีที่อยู่ระยะไกลที่ผ่านการรับรองของลูกค้าเพื่อไม่ให้บันทึกคำเตือนใด ๆ คำเตือนดังกล่าวอาจช่วยคุณในการติดตามผู้โจมตีเฉพาะในกรณีที่บันทึก PTR นั้นสมเหตุสมผล
แก้ไข: ปรับปรุงตามความคิดเห็นของอันเดรย์ Voitenkov
from=
ฟิลด์ก่อนที่คีย์ที่ได้รับอนุญาต (ถ้าใช้)
จำเป็นต้องใช้เมื่อคุณใช้ตัวเลือก FROM ในไฟล์ authorized_keys และคุณต้องการกรองตามชื่อไม่ใช่แค่ IP
ตัวเลือก FROM ในบรรทัดไฟล์ที่ได้รับอนุญาตอนุญาตให้คุณ จำกัด โฮสต์ที่สามารถใช้คีย์เฉพาะได้
สิ่งนี้จะเพิ่มความสามารถในการจัดการเซิร์ฟเวอร์หลายเครื่องที่มีการเข้าถึงซึ่งกันและกันโดยไม่อนุญาตให้มีการเลียนแบบของเครื่องเพื่อเลียนแบบที่มาซึ่งโดยทั่วไปจะไม่ได้ตั้งใจ (ที่เหลือ crontabs, ข้อผิดพลาดของมนุษย์)
ผมอยากจะเพิ่มว่าเมื่อวันที่ 7 CentOS (1503/07/01) และด้วยเหตุนี้ Red Hat Enterprise Linux 7 ผมก็ไม่สามารถเข้าสู่ระบบด้วยการตั้งค่าเริ่มต้นของสำหรับyes
UseDNS
หลังจากที่ไม่แสดงความคิดเห็นและตั้งค่าเป็นno
ฉันก็สามารถเข้าสู่ระบบดังนั้นจึงปรากฏว่าหนึ่งสามารถถูกปฏิเสธการบริการถ้า DNS ทำงานไม่ถูกต้อง! ใน CentOS 6 ดูเหมือนว่าจะเป็นค่าเริ่มต้นno
และด้วยเหตุนี้ฉันจึงไม่สามารถssh
ใช้งาน DNS ได้!
ฉันต้องการเพิ่มว่าการทดลองของฉันอยู่ในคอนเทนเนอร์ LXC ไม่ใช่เครื่องจักรจริงในกรณีที่สร้างความแตกต่าง!