วิธีดำเนินการ rsync แบบปลอดภัยระหว่างเซิร์ฟเวอร์ในเครือข่ายที่ไม่ปลอดภัย


19

โดยทั่วไปสิ่งที่ฉันถามคือมีใครเจอวิธีที่จะห่อ rsync ภายใน ssh

ด้วย OpenSSH v4.9 + sftp มีตัวเลือกที่ดีที่อนุญาตให้คุณ chroot การเชื่อมต่อที่เข้ามาและนั่นคือทางออกที่ฉันจะดู แต่ฉันติดอยู่กับ RHEL และ RHEL4 หรือ RHEL5 ไม่เกินรุ่นนั้น SSH

โซลูชันปัจจุบันของฉันคือการเพิ่มสิ่งนี้ในฝั่งเซิร์ฟเวอร์โดยใช้รหัสผู้ใช้ของลูกค้า ...

เซิร์ฟเวอร์% cat ~ / .ssh / authorized_keys
คำสั่ง = "cd / srv / rsync / etl && tar --exclude './lost+found' -pcf - ./" ssh-rsa ...

... และดังนั้นลูกค้าจะถูก จำกัด เพียงสิ่งเดียวและสิ่งเดียวเท่านั้น ...

ลูกค้า% ssh -T -i $ {HOME} /. ssh / id_rsa oracle@database.com> sensative.tar

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

ฉันหลังจากทำสิ่งที่คล้ายกัน (หรือดีกว่า) โดยใช้ rsync

คำตอบ:


18

Rsync รองรับการใช้ ssh เป็นการขนส่ง

rsync -az /path/to/source username@host:/path/to/destination

rsync เวอร์ชันเก่าบางรุ่นคุณต้องระบุ ssh อย่างชัดเจน

rsync -aze ssh /path/to/source host:/path/to/destination

อีกทางเลือกหนึ่งในการใช้ rsync คือUnison ของ BC Pierceซึ่งมีหน้าที่คล้ายกับ rsync แต่เก็บดัชนีโลคัลไว้ที่ปลายทั้งสองเพื่อหลีกเลี่ยงการเดินระบบไฟล์เพื่อคำนวณเดลตา


ขอบคุณสำหรับการตอบสนองที่รวดเร็ว! ฉันควรได้กล่าวว่าฉันตรวจสอบด้วย - ปัญหา (ในกรณีของฉัน) ด้วยที่ไม่ จำกัด / chroot ผู้ใช้ ถ้ามันเป็นไปได้ที่จะพูดคุยกับบริการ rsync ผ่าน ssh (เช่นการใช้ไวยากรณ์ดับเบิลโคลอนของการกำหนดระยะไกล) - มันจะสมบูรณ์แบบ - แต่ข้างต้นใช้งานได้กับโคลอนเดี่ยว - เช่นผ่าน ssh และไม่มี chrooting
Xerxes

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

ข้อ จำกัด อีกข้อหนึ่งที่ฉันควรพูดถึงคือการเชื่อมต่อจำเป็นต้องเริ่มต้นจากไคลเอนต์ - ด้าน <i> การดึง </i> ไม่ใช่เซิร์ฟเวอร์ (การพุชฝั่งเซิร์ฟเวอร์นั้นง่ายต่อการรักษาความปลอดภัยให้กับเซิร์ฟเวอร์โดยที่ลูกค้าไม่ได้พูด แต่ไม่สามารถใช้ได้กับปัญหาปัจจุบันของฉัน)
Xerxes

1
เซิร์ฟเวอร์ rsync -az: / path / path / on / client?
เดฟเชนีย์

1
ทำไมต้อง chroot คุณรู้หรือไม่ว่า chroot นั้นไม่ได้ปรับปรุงความปลอดภัยมากนัก เพิ่มเติมหากคุณออกไปให้ ssh แล้ว rsync กว่า ssh ไม่ได้ลดความปลอดภัยของระบบ ลองคิดดูสิว่า rsync บน ssh ใดที่เรียกใช้ rsync binary บนเซิร์ฟเวอร์ คุณสามารถมั่นใจได้ว่าวิธีเดียวกับที่คุณรักษาความปลอดภัยคำสั่งคัดลอก
Paul de Vrieze

5

ในที่สุดฉันก็คิดออกว่านี้ แต่การแก้ปัญหาไม่ได้สง่างามอย่างที่ฉันหวังไว้

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

no-pty, command="exit"

บนไคลเอ็นต์คุณสามารถสร้างช่องสัญญาณได้ดังนี้ ...

ssh -l username -fNTL 8073:server:873

เมื่อช่องสัญญาณถูกสร้างขึ้นคุณสามารถ rsync ได้ตามปกติโดยใช้ซินแทกซ์แบบทวิภาคที่เป็นไปไม่ได้ - กับ localhost

หมายเลขพอร์ต localhost ที่คุณเลือก (8073) เป็นทางเลือกทั้งหมดอย่างชัดเจนเพียงจำไว้ว่านั่นคือสิ่งที่คุณต้องเชื่อมต่อกับ ...

rsync --port=8073 -a user@localhost::mySecureStore /srv/some/place/

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