[การปฏิเสธความรับผิด]ฉันรู้ว่าฉันมาปาร์ตี้ช้า แต่ฉันอยากจะวางคำตอบที่ฉันให้กับคำถามอื่นเพราะฉันรู้สึกว่ามันสามารถนำเสนอข้อมูลเชิงลึกที่ดีให้กับผู้อ่านและคำถามนี้ดูเหมือนจะเป็นไปได้ สถานที่สำหรับข้อมูลพื้นฐาน SSH
มีปัญหาคล้ายกันที่ทำให้ฉันหลังจากอ่านคำถามนี้ที่ AskUbuntu และตรวจสอบ VPS ของฉันเท่านั้นที่เห็นความพยายามอันดุร้ายของพันล้าน นั่นคือเมื่อฉันตัดสินใจที่จะดำเนินการ
ตอนนี้ตามคำถามที่ฉันเชื่อมโยงหากคุณต้องการดูความพยายามในการเข้าสู่ระบบที่ล้มเหลวบนเครื่องของคุณผ่าน ssh (อาจเป็นความพยายามที่ดุร้ายหรืออะไรก็ตาม) ลองพิมพ์สิ่งนี้:
grep sshd.\*Failed /var/log/auth.log | less
หากเอาต์พุตประกอบด้วยหลายบรรทัดนั่นคือแรงเดรัจฉานหลายครั้งโดยเฉพาะอย่างยิ่งหากเกิดขึ้นระหว่างช่วงเวลาสั้น ๆ คุณอาจต้องการดำเนินการต่อไปนี้:
เปลี่ยนไฟล์คอนฟิกูเรชัน ssh
การทำเช่นนี้เปิดไฟล์ที่อยู่ใน/ etc / SSH / sshd_configvim /etc/ssh/sshd_config
ด้วยการแก้ไขที่คุณชื่นชอบเช่นนี้
1. ลองย้าย ssh จากพอร์ต 22 : ค้นหาบรรทัดที่อ่านแล้ว:
# What ports, IPs and protocols we listen for
Port 22
และคอมเม้นท์พอร์ต 22 และใช้ใครก็ได้ที่คุณอาจชอบ ตัวอย่าง:
# What ports, IPs and protocols we listen for
# Port 22
Port 28934
โปรดจำไว้ว่าพอร์ตต่ำกว่า 1024 ต้องได้รับอนุญาตพิเศษ (รูท) ฉันไม่รู้ว่าสิ่งนี้จะรบกวนการทำงานของมันได้อย่างไร แต่ฉันแค่พูด
2. ปิดใช้งานการเข้าสู่ระบบรูทผ่าน ssh : เนื่องจากชื่อผู้ใช้รูทสามารถคาดเดาได้และให้การเข้าถึงระบบของคุณอย่างสมบูรณ์การให้การเข้าถึงบัญชีนี้ผ่านทาง SSH นั้นไม่มีความหมายใด ๆ ค้นหาบรรทัดอ่านPermitRootLoginและตั้งค่าให้ไม่มี
PermitRootLogin no
3. ปิดการใช้งานการตรวจสอบรหัสผ่าน : สร้างและใช้คีย์ SSHเพื่อเข้าสู่ระบบของคุณ หากไม่มีการเปิดใช้รหัสผ่านผู้โจมตีจะต้องเดา (หรือขโมย) รหัสส่วนตัว SSH ของคุณเพื่อเข้าถึงเซิร์ฟเวอร์ของคุณ สิ่งที่ยากมาก ดำเนินการต่อเพื่อค้นหาบรรทัดที่อ่านPasswordAuthenticationและตั้งค่าเป็นไม่ใช่
PasswordAuthentication no
! คำเตือน! ก่อนที่จะดำเนินการโปรดอ่านคู่มือนี้ที่นี่เกี่ยวกับวิธีตั้งค่าการตรวจสอบสิทธิ์ใบรับรอง
หมายเหตุ:sudo /etc/init.d/ssh restart
หลังจากที่คุณได้ทำการเปลี่ยนแปลงใช้ เพื่อเชื่อมต่อกับพอร์ตอื่นผ่านการใช้งาน ssh username@hostname.com -p <port_number>
SSH:
ติดตั้งไฟร์วอลล์
กรุณาตรวจสอบคำแนะนำนี้เกี่ยวกับวิธีการตั้งค่าที่มีประสิทธิภาพมากและมีประสิทธิภาพไฟร์วอลล์ซึ่งรวมอยู่ในลินุกซ์IPTables
ตั้งค่าสคริปต์เพื่อช่วยคุณในเรื่องความปลอดภัย
หนึ่งที่ผมใช้เองได้อย่างรวดเร็วและมาคิดเป็นfail2ban Fail2ban จะตรวจสอบไฟล์บันทึกของคุณสำหรับการพยายามเข้าสู่ระบบล้มเหลว หลังจากที่อยู่ IP /var/log/fail2ban.log
ได้เกินจำนวนสูงสุดของความพยายามในการรับรองความถูกต้องก็จะถูกปิดกั้นในระดับเครือข่ายและเหตุการณ์จะถูกบันทึกไว้ใน วิธีติดตั้ง:sudo apt-get install fail2ban
ตรวจสอบประวัติคำสั่งผ่าน ssh
มีคำสั่ง linux ชื่อhistory
ซึ่งช่วยให้คุณเห็นคำสั่งที่ได้รับการป้อนข้อมูลจนถึงจุดนั้น ลองพิมพ์history
ในเทอร์มินัลเพื่อดูคำสั่งทั้งหมดจนถึงจุดนั้น มันจะช่วยได้ถ้าคุณรูต
หากต้องการค้นหาคำสั่งเฉพาะลอง:history | grep command-name
ในการแสดงรายการคำสั่งทั้งหมดหลังจาก ssh :fc -l ssh
นอกจากนี้คุณยังสามารถแก้ไขคำสั่งโดยใช้ vi (ยังไม่ได้ลองเป็นกลุ่มแม้ว่าฉันคิดว่ามันใช้งานได้ดี):fc -e vi
นอกจากนี้คุณยังสามารถลบประวัติ :history -c
หมายเหตุ:หากคุณไม่ได้เป็นแฟนของคำสั่งhistory
นอกจากนี้ยังมีไฟล์ในไดเรกทอรีบ้านของคุณ ( cd ~
) เรียกว่า. bash_history (ถ้าคุณใช้ bash) ที่คุณสามารถcat
ดูทั้งหมดที่พิมพ์ในเปลือก bash
unset HISTFILE
ใน bash และประวัติ bash ของพวกเขาจะไม่ถูกบันทึก