ครั้งแรกที่เปิดเซิร์ฟเวอร์ SSH ไปยังอินเทอร์เน็ตจะต้องตรวจสอบอะไรบ้าง


9

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

ตอนนี้ฉันรู้สึกอยากเปิดเซิร์ฟเวอร์ SSH บ้านเล็ก ๆ ของฉันกับอินเทอร์เน็ต

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

ฉันควรทำสิ่งใดเพื่อให้ปลอดภัย

ขอบคุณ!

คำตอบ:


22

PermitRootLogin noตรวจสอบให้แน่ใจเข้าสู่ระบบรากถูกปิดใช้งาน ฉันยังจะพิจารณาปิดการใช้งานรหัสผ่านโดยสิ้นเชิงและใช้กุญแจสาธารณะPasswordAuthentication noPubkeyAuthentication yes


1 ชนะฉันไป ...
gravyface

1
หากคุณกำลังจะใช้รหัสผ่านคุณอาจลองดูระบบการตรวจสอบสิทธิ์สองระดับ ถ้าไม่ฉันขอแนะนำให้คุณพิมพ์รหัสผ่านของคุณบนระบบอินเตอร์เน็ตคาเฟ่ / ห้องสมุดแบบสุ่ม
Mark Wagner

4
หากคุณอนุญาตให้ใช้รหัสผ่านให้พิจารณาติดตั้ง fail2ban เพื่อป้องกันการโจมตีแบบเดรัจฉานและใช้รหัสผ่านที่รัดกุมสำหรับบัญชีใด ๆ ที่ได้รับอนุญาตให้ลงชื่อเข้าใช้ผ่าน ssh
uSlackr

@embobo - ทำไมล่ะ รหัสผ่านที่ส่งข้ามสายจะถูกเข้ารหัสเป็น ssh ใช่คีย์รับรองความถูกต้องนั้นเหนือกว่าในหลาย ๆ ด้าน แต่ตราบใดที่รหัสผ่านมีความแข็งแรงเพียงพอและคุณได้ตรวจสอบแล้วว่าไม่มีใครท่องไหล่แล้วก็ไม่ใช่เรื่องใหญ่
EEAA

3
@Erika ฉันคิดว่า embobo ยิ่งทำให้เกิดความไม่ไว้วางใจในระบบต่างประเทศ แม้ว่า SSH จะถูกเข้ารหัส แต่เครื่องต่างประเทศยังสามารถพูดบันทึกการกดแป้นพิมพ์ของคุณ รหัสผ่านดังนั้นจึงถูกบุกรุก
rthomson

9

ตรวจสอบให้แน่ใจว่าอนุญาตเฉพาะ SSH-2 (เนื่องจาก SSH-1 ได้เพิ่มข้อกังวลด้านความปลอดภัยในอดีต):

Protocol 2

ระบุว่าผู้ใช้คนใดที่ได้รับอนุญาตให้ล็อกอินผ่าน SSH:

AllowUsers bob, john

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

PasswordAuthentication no
PubkeyAuthentication yes

หมายเหตุ: บทช่วยสอนนี้ประกอบด้วยคำแนะนำสำหรับการสร้างคีย์และการกำหนดค่าการพิสูจน์ตัวตนคีย์สาธารณะ


5

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

ตัวอย่าง: ฉันต้องแก้ไขหนึ่งเครือข่ายที่ผู้ดูแลระบบคนก่อนหน้านี้ติดตั้ง nagios บนระบบทั้งหมดของเขาจากแหล่งที่มาและสร้างผู้ใช้ nagios โดยไม่มีรหัสผ่านหรือรหัสผ่าน "nagios" จากนั้นดำเนินการรับเครื่องสามเครื่องที่แตกต่างกัน ที่ถูกบุกรุก


4

คุณอาจต้องการที่จะดูที่ชนิดของเครื่องมือขึ้นบัญชีดำ IP บางส่วนเช่นhttp://denyhosts.sourceforge.net/ มันบล็อก IP ใด ๆ ที่พยายามเข้าสู่ระบบไม่สำเร็จหลายครั้งและสามารถกำหนดค่าได้สูง


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

4
defintely ไม่เสียเวลา - แต่ดูที่ fail2ban
symcbean

+1 สำหรับ fail2ban
JamesBarnett

1
รูทไม่ได้เป็นเพียงบัญชีที่ชัดเจนที่บอตตรวจสอบดู nagios ดังกล่าวข้างต้น นอกจากนี้ยังมีบัญชีฐานข้อมูลเช่น mysql และ postgres รวมถึงบัญชีแอปพลิเคชันอื่น ๆ
JamesBarnett

ใช่ฉันมี 'เครือข่ายที่ต้องเผชิญกับเครื่อง SSH ของฉันที่ถูกยึดโดย bot คาดเดารหัสผ่านที่ไม่ใช่รูทดังนั้นแน่นอนไม่ต้องเสียเวลา นอกจากนี้เนื่องจากได้รับบัญชีดำเช่นนี้เมื่อดูที่บันทึกจำนวนเปอร์เซ็นต์ของความพยายามนั้นน้อยมากสำหรับรูท
Lynden Shields

3

ฉันขอแนะนำให้คุณติดตั้ง Fail2ban! http://www.fail2ban.org

มันห้าม IP หลังจาก x ล้มเหลวในการพยายามเป็นเวลา y นาทีช่วยให้สคริปต์ตรวจสอบ;)


0

ทบทวนบันทึกข้อมูลอีกครั้งในส่วน / ส่วนประกอบที่เกี่ยวข้องของระบบของคุณ (ขึ้นอยู่กับการกำหนดค่าจริง / เฉพาะ) ...

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