เราจะอนุญาตให้ชุด IP ส่วนตัวบางอย่างสามารถป้อนผ่านการเข้าสู่ระบบ SSH (คู่คีย์ RSA) ใน Linux Server ได้อย่างไร
/etc/ssh/sshd_config
เราจะอนุญาตให้ชุด IP ส่วนตัวบางอย่างสามารถป้อนผ่านการเข้าสู่ระบบ SSH (คู่คีย์ RSA) ใน Linux Server ได้อย่างไร
/etc/ssh/sshd_config
คำตอบ:
คุณสามารถ จำกัด ซึ่งเป็นเจ้าภาพสามารถเชื่อมต่อโดยการกำหนดค่าห่อ TCP หรือกรองเครือข่ายการจราจร (ไฟร์วอลล์) โดยใช้iptables หากคุณต้องการใช้วิธีการรับรองความถูกต้องที่แตกต่างกันขึ้นอยู่กับที่อยู่ IP ของลูกค้าให้กำหนดค่า SSH daemon แทน (ตัวเลือก 3)
กฎ Iptables ได้รับการประเมินตามลำดับจนกระทั่งการแข่งขันนัดแรก
ตัวอย่างเช่นเพื่ออนุญาตการรับส่งข้อมูลจากเครือข่าย 192.168.0.0/24 และปล่อยการรับส่งข้อมูล (ไปยังพอร์ต 22) DROP
กฎไม่จำเป็นถ้านโยบายเริ่มต้นของคุณ iptables DROP
มีการกำหนดให้
iptables -A INPUT -p tcp --dport 22 --source 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
คุณสามารถเพิ่มกฎเพิ่มเติมก่อนกฎการปล่อยเพื่อจับคู่เครือข่าย / โฮสต์เพิ่มเติม หากคุณมีเครือข่ายหรือที่อยู่โฮสต์จำนวนมากคุณควรใช้โมดูลipset นอกจากนี้ยังมีโมดูลiprangeซึ่งอนุญาตให้ใช้ช่วงที่อยู่ IP ตามอำเภอใจ
Iptables ไม่คงอยู่ตลอดการบู๊ต คุณต้องกำหนดค่ากลไกบางอย่างเพื่อกู้คืน iptables เมื่อบู๊ต
iptables
ใช้กับการรับส่งข้อมูล IPv4 เท่านั้น ระบบที่มีฟัง SSH ไปยังที่อยู่ IPv6 ip6tables
การตั้งค่าที่จำเป็นสามารถทำได้ด้วย
คุณสามารถกำหนดค่าโฮสต์ที่สามารถเชื่อมต่อโดยใช้ TCP wrappers ด้วย TCP wrappers นอกเหนือจากที่อยู่ IP คุณยังสามารถใช้ชื่อโฮสต์ในกฎ
โดยค่าเริ่มต้นปฏิเสธโฮสต์ทั้งหมด
/etc/hosts.deny
:
sshd : ALL
จากนั้นแสดงรายการโฮสต์ที่อนุญาตใน hosts.allow ยกตัวอย่างเช่นการอนุญาตให้เครือข่าย192.168.0.0/24และlocalhost
/etc/hosts.allow
:
sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]
คุณสามารถกำหนดค่า ssh daemon ใน sshd_config เพื่อใช้วิธีการพิสูจน์ตัวตนที่แตกต่างกันขึ้นอยู่กับที่อยู่ / ชื่อโฮสต์ของไคลเอ็นต์ ถ้าคุณต้องการบล็อกโฮสต์อื่นจากการเชื่อมต่อคุณควรใช้ iptables หรือ TCP wrappers แทน
ก่อนอื่นให้ลบวิธีการตรวจสอบสิทธิ์เริ่มต้น:
PasswordAuthentication no
PubkeyAuthentication no
จากนั้นเพิ่มวิธีการตรวจสอบความถูกต้องที่ต้องการหลังจากMatch Address
ท้ายไฟล์ การวางMatch
ในตอนท้ายของไฟล์มีความสำคัญเนื่องจากบรรทัดการกำหนดค่าทั้งหมดหลังจากวางไว้ในบล็อกที่มีเงื่อนไขจนถึงMatch
บรรทัดถัดไป ตัวอย่างเช่น:
Match Address 127.0.0.*
PubkeyAuthentication yes
ไคลเอ็นต์อื่นยังคงสามารถเชื่อมต่อได้ แต่การเข้าสู่ระบบจะล้มเหลวเนื่องจากไม่มีวิธีการตรวจสอบสิทธิ์ที่ใช้ได้
ตรงกับข้อโต้แย้งและได้รับอนุญาตตัวเลือกการกำหนดเงื่อนไขการบันทึกไว้ใน หน้าคน sshd_config รูปแบบการแข่งขันจะได้รับการบันทึกไว้ในหน้าคน ssh_config
#ListenAddress ::
ในการ/etc/ssh/sshd_config
ที่จะบอกเซิร์ฟเวอร์ SSH จะยอมรับเข้ามาจากส่วนใดของเครือข่ายเหล่านั้น มิฉะนั้นทำListenAddress <ip address>
ที่<ip address>
พอร์ต NIC เหล่านั้นที่คุณต้องการได้รับอนุญาต ฉันeth0
เป็น192.168.3.4
ดังนั้นจึงListenAddress 192.168.3.4
ส่งผลให้ SSH เท่านั้นที่ทำงานบนเครือข่าย 192.168.3.4 ซึ่งอยู่บน eth0; และ eth1 eth2 eth3 ถูกปฏิเสธ
นี่คือการกำหนดค่าเพิ่มเติมบางอย่างสำหรับ SSH daemon เพื่อขยายคำตอบก่อนหน้า:
เพิ่มการกรองผู้ใช้พร้อมAllowUsers
ตัวเลือกในsshd_config
ไฟล์:
AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2
สิ่งนี้อนุญาตให้johndoeและadmin2เท่านั้นจาก192.168.1.*
ที่อยู่และotherid1 , otherid2จากที่ใดก็ได้
จำกัด คีย์ ssh หรือคีย์ที่ใช้ ca เป็นชุดของที่อยู่ใน.ssh/authorized_keys
ไฟล์ของโฮมไดเรกทอรีของผู้ใช้ที่กำหนด:
from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
ในตัวอย่างนี้รหัสสาธารณะสำหรับ useralias จะมีผลเฉพาะที่อยู่ที่ให้ไว้