มีความเสี่ยงแค่ไหนที่จะมีเซิร์ฟเวอร์ส่วนบุคคลที่เปิด ssh บนอินเทอร์เน็ต


24

ความต่อเนื่องของชื่อจะเป็น“ ในขณะที่มีความรู้ จำกัด เกี่ยวกับความปลอดภัยของอินเทอร์เน็ต”

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

แต่ตอนนี้ฉันสงสัยว่าทั้งหมดนี้มีค่าความพยายาม ฉันตัดสินใจที่จะตั้งค่าเซิร์ฟเวอร์ของตัวเองเพื่อความสนุก: ฉันสามารถพึ่งพาโซลูชันของบุคคลที่สามเช่นที่เสนอโดย gitbucket.org, bettercodes.org ฯลฯ ในขณะที่ความสนุกส่วนหนึ่งเกี่ยวกับการเรียนรู้เกี่ยวกับความปลอดภัยของอินเทอร์เน็ตฉันมีเวลาไม่เพียงพอ อุทิศให้กับการเป็นผู้เชี่ยวชาญและมั่นใจว่าฉันใช้มาตรการป้องกันที่ถูกต้อง

เพื่อที่จะตัดสินใจว่าฉันจะเล่นกับโครงการของเล่นนี้ต่อไปหรือไม่ฉันอยากจะรู้ว่าฉันมีความเสี่ยงที่จะทำเช่นนั้น ตัวอย่างเช่นคอมพิวเตอร์เครื่องอื่นที่เชื่อมต่อกับเครือข่ายของฉันถูกคุกคามด้วยเช่นกันในระดับใด? คอมพิวเตอร์บางเครื่องใช้งานโดยผู้ที่มีความรู้น้อยกว่า Windows ที่ใช้งานจริง

ความเป็นไปได้ที่ฉันประสบปัญหาจริงคืออะไรถ้าฉันทำตามคำแนะนำพื้นฐานเช่นรหัสผ่านที่รัดกุมการเข้าถึงรูทสำหรับ ssh ที่ไม่ใช่พอร์ตมาตรฐานสำหรับ ssh และอาจปิดการใช้งานการล็อกอินรหัสผ่านและใช้กฎ fail2ban, denyhosts หรือ iptables

อีกวิธีหนึ่งมีหมาป่าร้ายขนาดใหญ่ที่ฉันควรกลัวหรือว่าทั้งหมดเกี่ยวกับการหลบหนี kiddies สคริปต์หรือไม่?


ฉันคิดว่าคุณโดนตะปูหัวเมื่อคุณพูดว่าคุณไม่มีเวลาหรือความชอบที่จะกลายเป็นผู้เชี่ยวชาญในการรักษาความปลอดภัย $ เทคโนโลยี นี่คือเหตุผลหลักที่ใช้โซลูชันโฮสต์ ข้อโต้แย้งทั่วไปอื่น ๆ เพียงอย่างเดียวในการประเมินราคากับโฮสติ้งคือราคา เนื่องจาก github และสิ่งที่คล้ายกันนั้นฟรีคุณจะต้องสละเวลาส่วนตัวเพื่อรับความรู้เกี่ยวกับวิธีใช้ repo git เราไม่สามารถบอกคุณได้ว่าคุณควรทำอะไรกับเวลาส่วนตัวของคุณ แต่ในสถานการณ์แบบมืออาชีพสิ่งนี้จะไม่สมเหตุสมผล (ตัวเตือน caveat: สถานการณ์ที่ซับซ้อนมีตัวแปรมากกว่า)
Chris S

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

สองคำ: กุญแจสาธารณะ ตามที่ @Stephane ใส่ไว้ ปิดการใช้งาน keyboard-interactive การตรวจสอบและใช้งานเท่านั้น pubkey การรับรอง
kostix

คำตอบ:


14

IMO SSH เป็นหนึ่งในสิ่งที่ปลอดภัยที่สุดที่จะฟังบนอินเทอร์เน็ตเปิด หากคุณเป็นห่วงให้ฟังพอร์ตที่ไม่ได้มาตรฐานระดับสูง ฉันยังคงมีไฟร์วอลล์ (ระดับอุปกรณ์) ระหว่างกล่องของคุณกับอินเทอร์เน็ตที่เกิดขึ้นจริงและเพียงแค่ใช้การส่งต่อพอร์ตสำหรับ SSH แต่นั่นเป็นการป้องกันการบริการอื่น ๆ SSH นั้นแข็งแกร่งมาก

ผม มี มีคนโจมตีเซิร์ฟเวอร์ SSH ที่บ้านของฉันเป็นครั้งคราว (เปิดให้ Time Warner Cable) ไม่เคยมีผลกระทบจริง

บางสิ่งเพิ่มเติมที่คุณสามารถทำได้เพื่อให้ SSH ปลอดภัยยิ่งขึ้นเพื่อป้องกันความพยายามซ้ำ ๆ จากที่อยู่ IP เดียวกันสำหรับเครื่องที่บ้าน

MaxStartups 2:30:10

ใน / etc / ssh / sshd_config ซึ่งจะ จำกัด จำนวนการเชื่อมต่อที่สามารถสร้างในแถวก่อนเข้าสู่ระบบได้สำเร็จ


ผู้ให้บริการอินเทอร์เน็ตของฉันมีไฟร์วอลล์ที่มีพารามิเตอร์ที่ฉันเห็นเมื่อเปิดพอร์ตสำหรับ ssh มันคือสิ่งที่คุณอ้างถึง?
Alfred M.

2
อาจเป็นไปได้ว่า ISP บางแห่งให้อุปกรณ์ใบ้แก่คุณบางเราเตอร์ที่มีไฟร์วอลล์ในตัว ฉันแค่บอกว่ามัน ไม่เคย เป็นความคิดที่ดีที่จะวางระบบปฏิบัติการทั่วไปลงบนอินเทอร์เน็ตโดยตรงไม่ว่าคุณจะใช้มาตรการป้องกันแบบใดก็ตาม คุณต้องการอุปกรณ์ฮาร์ดแวร์บางประเภท (หรือบางอย่างเช่น DD-WRT) ระหว่างคุณกับสิ่งที่น่ารังเกียจ
TheFiddlerWins

1
ตั้งค่าการรับรองความถูกต้องของคีย์สาธารณะตามที่กล่าวไว้ในคำตอบอื่นและเปิดปิด ChallengeResponseAuthentication และ PasswordAuthentication ใน / etc / ssh / sshd_config
Randy Orrison

ฉันรู้ว่านี่เป็นคำถามที่โง่ แต่ฉันจำเป็นต้องซื้อโดเมนเพื่อเข้าถึงเซิร์ฟเวอร์ของฉัน (ผ่าน ssh หรือเบราว์เซอร์) จากอินเทอร์เน็ตหรือไม่
TheRookierLearner

@TheRookierLearner - ไม่คุณสามารถใช้ที่อยู่ IP ที่ ISP ของคุณให้ไว้ อย่างไรก็ตามขึ้นอยู่กับการกำหนดค่าเครือข่ายในบ้านของคุณสามารถแชร์ผ่านอุปกรณ์ทั้งหมดของคุณด้วยสิ่งที่เรียกว่า PNAT (คนส่วนใหญ่เพียงแค่เรียกว่า NAT) หากคุณเป็นเหมือนคนส่วนใหญ่คุณจะต้องค้นหา "NATed" IP ของอุปกรณ์เฉพาะที่คุณต้องการเข้าถึงจากอินเทอร์เน็ต (เพียง ifconfig / ipconfig บนระบบมันจะเป็น 10.xxx, 172.16 ที่อยู่ xx หรือ 192.168.xx ดู RFC 1918 มากกว่าที่คุณสนใจเกี่ยวกับตัวเลขเหล่านี้) จากนั้นแจ้งให้เราเตอร์ของคุณทราบว่า "พอร์ตฟอร์เวิร์ด" หรือพอร์ต "DMZ" 22
TheFiddlerWins

10

การตั้งค่าระบบการพิสูจน์ตัวตนกุญแจสาธารณะด้วย SSH นั้นเป็นเรื่องจริง เล็กน้อยและใช้เวลาประมาณ 5 นาทีในการตั้งค่า .

หากคุณบังคับให้การเชื่อมต่อ SSH ทั้งหมดใช้งานมันจะทำให้ระบบของคุณมีความยืดหยุ่นอย่างที่คุณคาดหวังโดยไม่ต้องลงทุนมาก ๆ ในโครงสร้างพื้นฐานความปลอดภัย ตรงไปตรงมามันเรียบง่ายและมีประสิทธิภาพ (ตราบใดที่คุณไม่มี 200 บัญชี - แล้วมันยุ่งเหยิง) ที่ไม่ได้ใช้มันควรเป็นความผิดสาธารณะ


3
หากต้องการบังคับให้การเชื่อมต่อ SSH ใช้การรับรองความถูกต้องของคีย์สาธารณะหลังจากคุณตั้งค่าแล้วให้ตรวจสอบให้แน่ใจว่าคุณได้ปิด ChallengeResponseAuthentication และ PasswordAuthentication ใน / etc / ssh / sshd_config ฉันลืมสิ่งนี้ครั้งเดียวเสียใจเป็นอย่างมาก (เพียงครั้งเดียวและไม่มีอีกแล้ว)
Randy Orrison

8

ฉันยังใช้เซิร์ฟเวอร์ git ส่วนบุคคลที่เปิดให้โลกบน SSH และฉันยังมีปัญหากำลังดุร้ายเหมือนคุณดังนั้นฉันสามารถเห็นอกเห็นใจกับสถานการณ์ของคุณ

TheFiddlerWins ได้จัดการกับเรื่องความปลอดภัยหลักของการเปิด SSH บน IP ที่สาธารณชนสามารถเข้าถึงได้ แต่เครื่องมือ IMO ที่ดีที่สุดในการตอบสนองต่อความพยายามที่โหดร้ายคือ fail2ban - ซอฟต์แวร์ที่ตรวจสอบไฟล์บันทึกการตรวจสอบความถูกต้องของคุณตรวจจับการพยายามบุกรุกและเพิ่มกฎไฟร์วอลล์ให้กับเครื่องของคุณ iptables ไฟร์วอลล์ คุณสามารถกำหนดค่าได้ทั้งความพยายามก่อนที่จะแบนและความยาวของการแบน (ค่าเริ่มต้นของฉันคือ 10 วัน)


ตามที่ความคิดเห็นของฉันในโพสต์ก่อนหน้าระบุว่านั่นคือสิ่งที่ NAS ของฉันใช้ที่บ้านและหลังจากสองสามเดือนจำนวนของความพยายามลดลงอย่างมีนัยสำคัญ
mveroone

2

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

วิธีที่เหมาะที่สุดในการจัดการกับสิ่งนี้คือไฟร์วอลล์ที่รวม VPN Endpoint แต่คุณสามารถตั้งค่าคอมพิวเตอร์ Windows ให้ทำหน้าที่เป็นเซิร์ฟเวอร์ VPN ได้

นี่คือตัวอย่าง:

http://www.howtogeek.com/135996/

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

วิธีนี้หากเซิร์ฟเวอร์ของคุณถูกแฮ็กจะไม่สามารถใช้เป็นเวกเตอร์เพื่อโจมตีคอมพิวเตอร์เครื่องอื่นของคุณ

ดังนั้นการตั้งค่าจะเป็นดังนี้:

DMZ Configuration


ขออภัยเกี่ยวกับภาพขนาดเล็ก ... ฉันไม่สามารถหาวิธีแก้ไขโพสต์ของฉัน
TomXP411

2

คำตอบนั้นดีมากฉันขอแนะนำแค่สองสิ่ง:

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