ฉันจะติดตามความพยายามในการเข้าสู่ระบบ SSH ที่ล้มเหลวได้อย่างไร


134

ฉันต้องการดูว่ามีคนพยายามลงชื่อเข้าใช้ด้วยการเดรัจฉานบังคับเข้าสู่เซิร์ฟเวอร์ Ubuntu 12.04 ของฉันผ่าน SSH หรือไม่ ฉันจะดูได้อย่างไรว่ามีกิจกรรมดังกล่าวเกิดขึ้น?

คำตอบ:


150

/var/log/auth.logทุกความพยายามในการเข้าสู่ระบบเข้าสู่ระบบเพื่อ

1. ตัวกรองสำหรับการเข้าสู่ระบบ SSH แบบดุร้ายกำลังโต้ตอบ

เปิดเทอร์มินัลแล้วพิมพ์ด้านล่าง ถ้ามันยาวกว่า 1 หน้าคุณจะสามารถเลื่อนขึ้นและลง พิมพ์qถึงทางออก:

grep sshd.\*Failed /var/log/auth.log | less
  • นี่คือตัวอย่างจริงจากหนึ่งใน VPS ของฉัน:

    18 สิงหาคม 11:00:57 izxvps sshd [5657]: รหัสผ่านล้มเหลวสำหรับรูทจาก 95.58.255.62 พอร์ต 38980 ssh2
    18 สิงหาคม 23:08:26 izxvps sshd [5768]: รหัสผ่านล้มเหลวสำหรับรูตจาก 91.205.189.15 พอร์ต 38156 ssh2
    18 สิงหาคม 23:08:30 izxvps sshd [5770]: รหัสผ่านที่ล้มเหลวสำหรับใครจาก 91.205.189.15 พอร์ต 38556 ssh2
    18 สิงหาคม 23:08:34 izxvps sshd [5772]: รหัสผ่านล้มเหลวสำหรับผู้ใช้ที่ไม่ถูกต้องจันจาก 91.205.189.15 พอร์ต 38864 ssh2
    18 สิงหาคม 23:08:38 izxvps sshd [5774]: รหัสผ่านล้มเหลวสำหรับผู้ใช้ที่ไม่ถูกต้อง sjobeck จาก 91.205.189.15 พอร์ต 39157 ssh2
    18 สิงหาคม 23:08:42 izxvps sshd [5776]: รหัสผ่านล้มเหลวสำหรับรูตจาก 91.205.189.15 พอร์ต 39467 ssh2
    

2. ค้นหาการเชื่อมต่อที่ล้มเหลว(เช่นไม่มีการพยายามเข้าสู่ระบบอาจเป็นสแกนเนอร์พอร์ต ฯลฯ ):

ใช้คำสั่งนี้:

grep sshd.*Did /var/log/auth.log | less
  • ตัวอย่าง:

    5 สิงหาคม 22:19:10 izxvps sshd [7748]: ไม่ได้รับสายอักขระประจำตัวจาก 70.91.222.121
    10 ส.ค. 19:39:49 izxvps sshd [1919]: ไม่ได้รับสายระบุจาก 50.57.168.154
    13 สิงหาคม 23:08:04 izxvps sshd [3562]: ไม่ได้รับสายระบุจาก 87.216.241.19
    17 ส.ค. 15:49:07 izxvps sshd [5350]: ไม่ได้รับสายอักขระประจำตัวจาก 211.22.67.238
    19 ส.ค. 06:28:43 izxvps sshd [5838]: ไม่ได้รับสายระบุจาก 59.151.37.10
    

วิธีลดความพยายามในการเข้าสู่ระบบที่ล้มเหลว / brute-force

  • ลองเปลี่ยน SSH ของคุณเป็นพอร์ตที่ไม่ได้มาตรฐานจากค่าเริ่มต้น 22
  • หรือติดตั้งสคริปต์อัตโนมัติห้ามเช่นfail2banติดตั้ง fail2ban

4
ความปลอดภัยเท่าไหร่ที่คุณได้รับในการสลับพอร์ต SSH (พวกเขาไม่สามารถเพียงแค่สแกนคุณต่อไปตามที่คุณพูดถึง) และมันก็คุ้มค่าที่การใช้งานเล็กน้อยที่กระทบผู้ใช้ที่ถูกกฎหมาย?
Nick T

8
@NickT ดูเหมือนจะเพียงพอแล้วที่จะลดความพยายามในการเข้าสู่ระบบ ที่ฉันได้รับความพยายามหลายพันครั้งในสัปดาห์ / วันจนถึงตอนนี้ฉันยังไม่เคยมีในเดือนที่แล้วเพียงแค่เปลี่ยนพอร์ต
AntoineG

2
ฉันคิดว่าไม่อนุญาตให้ล็อกอินด้วยรหัสผ่านอาจช่วยได้เช่นกัน
Luc M

2
ฉันรู้ว่านี่คืออูบุนตูแค่อยากจะพูดถึงว่าในบางระบบเช่น CentOS เส้นทางของไฟล์คือ/var/log/secure
lfender6445

ระบบบางระบบเข้าถึงบันทึกด้วยsystemctl -eu sshd
alecdwm

72

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

หากคุณมีเซิร์ฟเวอร์ SSH สาธารณะคุณต้องมีโซลูชันที่  ใช้เวลานานก่อนที่จะถูกแฮ็ก

fail2banฉันจะขอแนะนำ วิกิของพวกเขาพูดว่าอะไรดีกว่าที่ฉันสามารถทำได้

Fail2ban สแกนไฟล์บันทึก (เช่น/var/log/apache/error_log) และแบนไอพีที่แสดงสัญญาณที่เป็นอันตราย - มีความล้มเหลวของรหัสผ่านมากเกินไปการหาช่องโหว่ ฯลฯ โดยทั่วไปแล้ว Fail2Ban ใช้ในการอัพเดทกฎไฟร์วอลล์เพื่อปฏิเสธที่อยู่ IP ตามระยะเวลาที่กำหนด การกระทำอื่นโดยพลการ (เช่นการส่งอีเมลหรือถาดใส่ซีดีรอมออก) สามารถกำหนดค่าได้ Fail2Ban มาพร้อมกับตัวกรองสำหรับบริการต่าง ๆ (apache, curier, ssh, etc)

sudo apt-get install fail2banได้รับการคุ้มครองจากมันเป็นง่ายๆเป็น

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


6
ทำไมจึงเรียกว่าล้มเหลวในการแบน?
Pacerier

9
@Pierier ด้วยความคล้ายคลึงการเข้าสู่ระบบล้มเหลวทำให้ (2) การแบน
Sebi

2
Bwahaha คุณทำวันของฉัน @Pacerier ฉันไม่เคยคิดว่ามันเป็น "ความล้มเหลวที่จะห้าม" ตามตัวอักษร
adelriosantiago

1
ฉันคิดว่าควรแก้ไขเพื่อลบ "โดยเฉพาะ" ออกจากประโยคแรก เป็นเพียงปัญหาถ้าคุณมีรหัสผ่านที่อ่อนแอ รหัสผ่านที่คาดเดายากไม่สามารถบังคับเดรัจฉานไม่ว่าในกรณีใด ๆ และเหตุผลเดียวที่ป้องกันไม่ให้ผู้คนพยายามคือลดภาระของเซิร์ฟเวอร์
Abhi Beckert

เห็นด้วยอย่างยิ่ง. อย่างไรก็ตามมันก็โอเคที่จะป้องกันไม่ให้เซิร์ฟเวอร์โหลดสูง ฉันเคยเห็นความพยายามในอัตรา miliseconds
Diego AndrésDíaz Espinoza
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.