อนุญาตให้ผู้ใช้ที่ระบุเท่านั้นเข้าสู่ระบบผ่าน ssh ที่หนึ่งพอร์ตและอื่น ๆ เพื่อเข้าสู่ระบบผ่านทางพอร์ตอื่น


13

ฉันมีกรณีการใช้งานดังต่อไปนี้:

  • จำเป็นต้องอนุญาตให้ผู้ใช้เข้าสู่ระบบจากเครือข่ายที่ปลอดภัยและเชื่อถือได้
  • จากนั้นให้ผู้ใช้มือถือสองสาม (เพียงสองคน) เข้าสู่ระบบจากระยะไกลบนเครื่อง Linux Centos

ฉันสามารถทำให้ sshd ทำงานบนพอร์ตอื่นเช่น:

  • จากภายในก็โอเคที่จะให้มันทำงานในวันที่ 22 เพราะฉันไม่ต้องการให้พวกเขาเชื่อมต่อกับพอร์ตอื่น ๆ (ทำให้สคริปต์ยุ่งเหยิง)
  • สำหรับผู้ใช้มือถือภายนอกฉันจะใช้ sshd บนพอร์ตอื่นพูดพอร์ต X (เพิ่มความปลอดภัย - นี่คือการตั้งค่าสำนักงานขนาดเล็ก)

เพื่อความปลอดภัยที่เพิ่มขึ้นฉันหวังว่าจะกำหนดค่า sshd เพื่ออนุญาตการเข้าถึงเฉพาะผู้ใช้บนพอร์ต X (จากนั้นกำหนดค่าการแจ้งเตือนบางอย่างเพื่อให้เราสามารถทราบได้เมื่อผู้ใช้เข้าสู่ระบบผ่านพอร์ต X)

อย่างไรก็ตามฉันไม่พบการกำหนดค่าใด ๆ เช่นนี้ในเอกสาร sshd หากไม่มีวิธีแก้ปัญหาเช่นนี้เป็นไปได้หรือไม่ที่จะทริกเกอร์เชลล์สคริปต์ให้ทำงานทุกครั้งที่มีคนเข้าสู่ระบบ sshd ที่พอร์ต X เสร็จสมบูรณ์? ฉันกำลังดูเอกสาร iptables เพื่อดูว่ามันสามารถเปิดการแจ้งเตือนเมื่อเข้าสู่ระบบ sshd อยู่ที่นั่น แต่ไม่สามารถเกิดขึ้นกับอะไร

อินพุตชื่นชม

คำตอบ:


12

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

หากคุณต้องการสนับสนุนการรักษาความปลอดภัยบนระบบที่อนุญาตให้ใช้ SSH ขาเข้าบนอินเทอร์เน็ตระยะไกลให้ควบคุมผู้ใช้ของคุณsshd_configตามที่ @Athon ระบุและยังนำการรักษาความปลอดภัยมาใช้โดยตรงใน PAM

สร้างสองกลุ่มและlusers rusersเพิ่มผู้ใช้มือถือระยะไกลให้กับrusersกลุ่ม ใช้โมดูลpam_succeed_if.so PAM เพื่ออนุญาตการเข้าถึงผู้ใช้เหล่านั้น เพิ่มบรรทัดลงใน pam config ของคุณสำหรับ ssh:

account     sufficient  pam_succeed_if.so user ingroup lusers
account     sufficient  pam_succeed_if.so user ingroup rusers

บางโมดูล pam_succeed_if.so group = lusersอาจทำให้คุณต้องใช้ไวยากรณ์ที่แตกต่างกันเล็กน้อยเช่น

จากนั้นไม่เพียง แต่sshdจำกัด ผู้ใช้ที่สามารถเชื่อมต่อได้ แต่ในกรณีที่มีข้อบกพร่องsshdคุณยังคงได้รับการป้องกันตามข้อ จำกัด ของ PAM

อีกหนึ่งขั้นตอนสำหรับผู้ใช้ระยะไกลคือการบังคับให้ใช้ ssh_keys ด้วยข้อความรหัสผ่าน ดังนั้นผู้ใช้ภายในสามารถลงชื่อเข้าใช้ด้วยรหัสหรือรหัสผ่าน แต่ผู้ใช้ระยะไกลต้องมีรหัสและถ้าคุณสร้างรหัสสำหรับพวกเขาคุณสามารถตรวจสอบให้แน่ใจว่ากุญแจนั้นมีรหัสผ่านที่เกี่ยวข้อง ดังนั้นการ จำกัด การเข้าถึงสถานที่ที่มีคีย์ SSH และวลีรหัสผ่านอยู่จริง และ จำกัด การโจมตีเวกเตอร์ที่อาจเกิดขึ้นหากรหัสผ่านของผู้ใช้นั้นถูกคอมไพล์

ในsshd_config:

เปลี่ยนการตั้งค่า 2:

ChallengeResponseAuthentication yes

และ

PasswordAuthentication yes

ถึง:

ChallengeResponseAuthentication no

และ

PasswordAuthentication no

ดังนั้นค่าเริ่มต้นคือตอนนี้อนุญาตให้ใช้การตรวจสอบสิทธิ์คีย์เท่านั้น จากนั้นสำหรับผู้ใช้ท้องถิ่นคุณสามารถผู้ใช้การmatchตั้งค่าการตั้งค่าเพื่อเปลี่ยนค่าเริ่มต้นสำหรับผู้ใช้ท้องถิ่น สมมติว่าเครือข่ายส่วนตัวในพื้นที่ของคุณคือ 192.168.1.0/24 ให้เพิ่มไปที่sshd_config:

Match Address 192.168.1.0/24
PasswordAuthentication yes

ตอนนี้ผู้ใช้ภายในสามารถเชื่อมต่อกับรหัสผ่านหรือกุญแจและผู้ใช้ระยะไกลจะถูกบังคับให้ใช้กุญแจ มันขึ้นอยู่กับคุณที่จะสร้างกุญแจด้วยวลีรหัสผ่าน

ในฐานะที่เป็นประโยชน์เพิ่มเติมคุณจะต้องจัดการเพียงครั้งเดียวsshd_configและคุณจะต้องเรียกใช้ ssh บนพอร์ตเดียวซึ่งช่วยให้การจัดการของคุณง่ายขึ้น


แก้ไข 2017-01-21 - การ จำกัด การใช้authorized_keysไฟล์

หากคุณต้องการให้แน่ใจว่าผู้ใช้ไม่สามารถสร้างคีย์ ssh ด้วยตนเองและใช้กับauthorized_keysไฟล์เพื่อเข้าสู่ระบบคุณสามารถควบคุมได้โดยการตั้งค่าตำแหน่งเฉพาะสำหรับ sshd จะค้นหาคีย์ที่ได้รับอนุญาต

ใน/etc/ssh/sshd_configการเปลี่ยนแปลง:

AuthorizedKeysFile  %h/ssh/authorized_keys

เพื่อสิ่งที่ชอบ:

AuthorizedKeysFile  /etc/.ssh/authorized_keys/%u

การชี้ไปยังไดเรกทอรีที่ควบคุมซึ่งผู้ใช้ไม่มีสิทธิ์ในการเขียนหมายความว่าพวกเขาไม่สามารถสร้างรหัสของตนเองและใช้เพื่อแก้ไขกฎที่คุณวางไว้


2
ฉันไม่เห็นว่าคำตอบของคุณแยกผู้ใช้ระยะไกลออกจากผู้ใช้ท้องถิ่น หากใครบางคนในlusersกลุ่ม แต่ไม่ใช่ในrusersกลุ่มจะสร้าง keypair และอัปเดตพวก~/.ssh/authorized_keysเขาพวกเขาจะสามารถเข้าสู่ระบบจากระยะไกล
Richard Hansen

8

คุณสามารถเพิ่มสิ่งนี้ในของคุณ/etc/ssh/sshd_config:

AllowUsers mobileuser1 mobileuser2 *@10.0.0.0/8

ข้างต้นถือว่าผู้ใช้ระยะไกลที่ได้รับอนุญาตมีชื่อmobileuser1และmobileuser2เครือข่ายที่เชื่อถือได้ของคุณคือ 10.0.0.0 พร้อม subnet mask 255.0.0.0

สิ่งนี้ทำให้ผู้ใช้มือถือสองคนลงชื่อเข้าใช้จากทุกที่และทุกคนสามารถเข้าสู่ระบบจากเครือข่ายที่เชื่อถือได้ ผู้ใช้ที่ไม่ตรงกับรูปแบบเหล่านั้น (เช่นผู้ใช้ที่fooลงชื่อเข้าใช้จากระยะไกล) จะถูกปฏิเสธการเข้าถึง


นั่นคือสิ่งที่ฉันไม่ได้รับคำตอบ ฉันคิดว่าถ้าเรารวมคำตอบของคุณเข้ากับของฉันมันเป็นคำตอบที่ดีทีเดียว
ทิมเคนเนดี้

2

คุณสามารถทำได้โดยเริ่มสอง ssh daemons และสองsshd_configไฟล์ คัดลอกหนึ่งที่มีอยู่ของคุณ (เช่นจาก/etc/ssh/sshd_config /etc/ssh/sshd_alt_configและในการตั้งค่าทางเลือกอื่น (จากmanหน้าสำหรับsshd_config:

ท่าเรือ

Specifies the port number that sshd(8) listens on.  The default
is 22.  Multiple options of this type are permitted.  See also
ListenAddress

AllowUsers

This keyword can be followed by a list of user name patterns,
separated by spaces.  If specified, login is allowed only for
user names that match one of the patterns.  Only user names are
valid; a numerical user ID is not recognized.  By default, login
is allowed for all users.  If the pattern takes the form
USER@HOST then USER and HOST are separately checked, restricting
logins to particular users from particular hosts.  The
allow/deny directives are processed in the following order:
DenyUsers, AllowUsers, DenyGroups, and finally AllowGroups.

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.