ค้นหาเว็บไซต์

วิธีการติดตั้ง Fail2Ban เพื่อปกป้อง SSH บน CentOS/RHEL 8


Fail2ban เป็นเครื่องมือป้องกันการบุกรุกแบบโอเพ่นซอร์สและใช้กันอย่างแพร่หลายฟรี ซึ่งจะสแกนไฟล์บันทึกเพื่อหาที่อยู่ IP ที่แสดงสัญญาณที่เป็นอันตราย เช่น รหัสผ่านล้มเหลวมากเกินไป และอื่นๆ อีกมากมาย และจะแบนมัน (อัปเดตไฟร์วอลล์ กฎในการปฏิเสธที่อยู่ IP) โดยค่าเริ่มต้น ตัวกรองจะมาพร้อมกับตัวกรองสำหรับบริการต่างๆ รวมถึง sshd

อ่านเพิ่มเติม: การตั้งค่าเซิร์ฟเวอร์เริ่มต้นด้วย CentOS/RHEL 8

ในบทความนี้ เราจะอธิบายวิธีการติดตั้งและกำหนดค่า fail2ban เพื่อปกป้อง SSH และปรับปรุงความปลอดภัยของเซิร์ฟเวอร์ SSH จากการโจมตีแบบ Brute Force บน CentOS/RHEL 8.

การติดตั้ง Fail2ban บน CentOS/RHEL 8

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

dnf install epel-release
OR
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

หลังจากนั้น ให้ติดตั้งแพ็คเกจ Fail2ban โดยเรียกใช้คำสั่งต่อไปนี้

dnf install fail2ban

การกำหนดค่า Fail2ban เพื่อปกป้อง SSH

ไฟล์การกำหนดค่า fail2ban อยู่ในไดเรกทอรี /etc/fail2ban/ และตัวกรองจะถูกจัดเก็บไว้ใน /etc/fail2ban/filter.d/ ไดเร็กทอรี (ไฟล์ตัวกรองสำหรับ sshd คือ /etc/fail2ban/filter.d/sshd.conf)

ไฟล์การกำหนดค่าส่วนกลางสำหรับเซิร์ฟเวอร์ failed2ban คือ /etc/fail2ban/jail.conf อย่างไรก็ตาม ไม่แนะนำให้แก้ไขไฟล์นี้โดยตรง เนื่องจากไฟล์อาจถูกเขียนทับหรือปรับปรุงในกรณีของแพ็คเกจ อัพเกรดในอนาคต

ขอแนะนำให้สร้างและเพิ่มการกำหนดค่าของคุณในไฟล์ jail.local หรือไฟล์ .conf แยกต่างหากภายใต้ /etc/fail2ban/jail d/ ไดเร็กทอรี โปรดทราบว่าพารามิเตอร์การกำหนดค่าที่ตั้งไว้ใน jail.local จะแทนที่สิ่งใดก็ตามที่กำหนดไว้ใน jail.conf

สำหรับบทความนี้ เราจะสร้างไฟล์แยกต่างหากชื่อ jail.local ในไดเร็กทอรี /etc/fail2ban/ ดังที่แสดง

vi /etc/fail2ban/jail.local

เมื่อเปิดไฟล์แล้ว ให้คัดลอกและวางการกำหนดค่าต่อไปนี้ลงไป ส่วน [DEFAULT] มีตัวเลือกส่วนกลางและ [sshd] มีพารามิเตอร์สำหรับคุก sshd


[DEFAULT] 
ignoreip = 192.168.56.2/24
bantime  = 21600
findtime  = 300
maxretry = 3
banaction = iptables-multiport
backend = systemd

[sshd] 
enabled = true

มาอธิบายตัวเลือกต่างๆ ในการกำหนดค่าข้างต้นโดยย่อ:

  • ละเว้น: ระบุรายการที่อยู่ IP หรือชื่อโฮสต์ที่จะไม่แบน
  • bantime: ระบุจำนวนวินาทีที่โฮสต์ถูกแบน (นั่นคือ ระยะเวลาการแบนที่มีผล)
  • maxretry: ระบุจำนวนความล้มเหลวก่อนที่โฮสต์จะถูกแบน
  • findtime: failed2ban จะแบนโฮสต์หากสร้าง “maxretry” ในช่วง “findtime” วินาทีสุดท้าย
  • การห้าม: การห้ามการกระทำ
  • แบ็กเอนด์: ระบุแบ็กเอนด์ที่ใช้ในการแก้ไขไฟล์บันทึก

ดังนั้นการกำหนดค่าข้างต้นหมายความว่าหาก IP ล้มเหลว 3 ครั้งในช่วง 5 นาทีที่ผ่านมา ให้แบนมันเป็นเวลา 6 ชั่วโมง และเพิกเฉยต่อ ที่อยู่ IP 192.168.56.2

จากนั้น ให้เริ่มและเปิดใช้งานบริการ fail2ban ในตอนนี้ และตรวจสอบว่าบริการดังกล่าวเปิดใช้งานและทำงานอยู่หรือไม่โดยใช้คำสั่ง systemctl ต่อไปนี้

systemctl start fail2ban
systemctl enable fail2ban
systemctl status fail2ban

การตรวจสอบที่อยู่ IP ที่ล้มเหลวและถูกแบนโดยใช้ Fail2ban-client

หลังจากกำหนดค่า fail2ban เพื่อรักษาความปลอดภัย sshd คุณสามารถตรวจสอบที่อยู่ IP ที่ล้มเหลวและถูกแบนได้โดยใช้ fail2ban-client หากต้องการดูสถานะปัจจุบันของเซิร์ฟเวอร์ failed2ban ให้รันคำสั่งต่อไปนี้

fail2ban-client status

หากต้องการตรวจสอบคุก sshd ให้เรียกใช้

fail2ban-client status sshd

หากต้องการยกเลิกการแบนที่อยู่ IP ใน Fail2ban (ในคุกและฐานข้อมูลทั้งหมด) ให้รันคำสั่งต่อไปนี้

fail2ban-client unban 192.168.56.1

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Fail2ban โปรดอ่านหน้าคู่มือต่อไปนี้

man jail.conf
man fail2ban-client

สรุปคู่มือนี้! หากคุณมีคำถามหรือความคิดใด ๆ ที่คุณต้องการแบ่งปันเกี่ยวกับหัวข้อนี้ อย่าลังเลที่จะติดต่อเราผ่านแบบฟอร์มคำติชมด้านล่าง